about summary refs log tree commit diff
path: root/pkg/lang/vm/vm.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-05-31 01:01:32 +0000
committerGitHub <noreply@github.com>2022-05-31 01:02:20 +0000
commit338744d066704e48e22d8ec56a43acb4b20da7f1 (patch)
treeb508eb6764efc64ac611b6ea063ab44d9e6b0a9c /pkg/lang/vm/vm.go
parent78a29c41098db5e5f8291e0345a3cd443c52b329 (diff)
downloadjinx-338744d066704e48e22d8ec56a43acb4b20da7f1.tar.zst
jinx-338744d066704e48e22d8ec56a43acb4b20da7f1.zip
Add untyped Objects (for now)
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)