Halt to halt the VM
This commit is contained in:
@@ -686,7 +686,7 @@ func (vm *VM) LastPoppedStackElem() object.Object {
|
||||
return vm.stack[vm.sp]
|
||||
}
|
||||
|
||||
func (vm *VM) Run() error {
|
||||
func (vm *VM) Run() (err error) {
|
||||
var n int
|
||||
var ip int
|
||||
var ins code.Instructions
|
||||
@@ -699,9 +699,7 @@ func (vm *VM) Run() error {
|
||||
}()
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
for vm.frame.ip < len(vm.frame.Instructions())-1 && err == nil {
|
||||
for err == nil {
|
||||
vm.frame.ip++
|
||||
|
||||
ip = vm.frame.ip
|
||||
@@ -894,6 +892,9 @@ func (vm *VM) Run() error {
|
||||
case code.OpMinus:
|
||||
err = vm.executeMinus()
|
||||
|
||||
case code.OpHalt:
|
||||
return
|
||||
|
||||
default:
|
||||
err = fmt.Errorf("unhandled opcode: %s", op)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user