optimizations
This commit is contained in:
15
repl.go
15
repl.go
@@ -7,6 +7,7 @@ import (
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/term"
|
||||
@@ -32,10 +33,11 @@ func REPL(opts *Options) error {
|
||||
return fmt.Errorf("error opening terminal: %w", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Printf("recovered from panic: %s", err)
|
||||
}
|
||||
term.Restore(0, initState)
|
||||
if err := recover(); err != nil {
|
||||
log.Printf("recovered from panic: %s\n", err)
|
||||
log.Printf("stack trace:\n%s", debug.Stack())
|
||||
}
|
||||
}()
|
||||
atexit.Register(func() {
|
||||
term.Restore(0, initState)
|
||||
@@ -83,7 +85,7 @@ func REPL(opts *Options) error {
|
||||
log.Printf("Bytecode:\n%s\n", c.Bytecode())
|
||||
}
|
||||
|
||||
mvm := vm.New("<stdin>", c.Bytecode(), opts.ToVMOptions()...)
|
||||
mvm := vm.New("<stdin>", c.Bytecode(), append(opts.ToVMOptions(), vm.WithState(state))...)
|
||||
|
||||
if err := mvm.Run(); err != nil {
|
||||
fmt.Fprintf(t, "runtime error: %v\n", err)
|
||||
@@ -151,7 +153,8 @@ func SimpleREPL(opts *Options) {
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Printf("recovered from panic: %s", err)
|
||||
log.Printf("recovered from panic: %s\n", err)
|
||||
log.Printf("stack trace: %s\n", debug.Stack())
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -196,7 +199,7 @@ func SimpleREPL(opts *Options) {
|
||||
log.Printf("Bytecode:\n%s\n", c.Bytecode())
|
||||
}
|
||||
|
||||
mvm := vm.New("<stdin>", c.Bytecode(), opts.ToVMOptions()...)
|
||||
mvm := vm.New("<stdin>", c.Bytecode(), append(opts.ToVMOptions(), vm.WithState(state))...)
|
||||
|
||||
if err := mvm.Run(); err != nil {
|
||||
fmt.Printf("runtime error: %v\n", err)
|
||||
|
||||
Reference in New Issue
Block a user