about summary refs log tree commit diff
path: root/pkg/lang/vm/vm.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/vm/vm.go')
-rw-r--r--pkg/lang/vm/vm.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/pkg/lang/vm/vm.go b/pkg/lang/vm/vm.go
index 2377d89..8422299 100644
--- a/pkg/lang/vm/vm.go
+++ b/pkg/lang/vm/vm.go
@@ -89,7 +89,7 @@ func (vm *VM) step(op code.Op) (stepDecision, error) {
 		str, advance := vm.code.GetString(vm.pc)
 		vm.pc += advance
 
-		vm.execPushString(str)
+		err = vm.execPushString(str)
 	case code.OpPushNull:
 		vm.execPushNull()
 	case code.OpPushTrue:
@@ -104,7 +104,7 @@ func (vm *VM) step(op code.Op) (stepDecision, error) {
 
 		vm.execPushFunction(int(x))
 	case code.OpPushObject:
-		panic("not implemented")
+		err = vm.execPushObject()
 
 	case code.OpDrop:
 		_, err = vm.stack.Pop()
@@ -121,6 +121,11 @@ func (vm *VM) step(op code.Op) (stepDecision, error) {
 		vm.pc += advance
 
 		err = vm.execGetMember(name)
+	case code.OpSetMember:
+		name, advance := vm.code.GetString(vm.pc)
+		vm.pc += advance
+
+		err = vm.execSetMember(name)
 
 	case code.OpGetEnv:
 		envIndex, advance := vm.code.GetUint(vm.pc)