about summary refs log tree commit diff
path: root/pkg/lang/vm/vm.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-06-01 19:51:40 +0000
committerGitHub <noreply@github.com>2022-06-01 19:51:40 +0000
commitedca72c160967f1918b65c91a40de89ecd8badda (patch)
treeb79feabc0889a3f6cfddf09906a486d09e5c60a1 /pkg/lang/vm/vm.go
parent33671436680e7922001df9921ee582c486c7c3f4 (diff)
downloadjinx-edca72c160967f1918b65c91a40de89ecd8badda.tar.zst
jinx-edca72c160967f1918b65c91a40de89ecd8badda.zip
Implement proper object types
Diffstat (limited to 'pkg/lang/vm/vm.go')
-rw-r--r--pkg/lang/vm/vm.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/pkg/lang/vm/vm.go b/pkg/lang/vm/vm.go
index 966ec9f..41334a6 100644
--- a/pkg/lang/vm/vm.go
+++ b/pkg/lang/vm/vm.go
@@ -109,6 +109,11 @@ func (vm *VM) step(op code.Op) (stepDecision, error) {
 		vm.execPushFunction(int(x))
 	case code.OpPushObject:
 		err = vm.execPushObject()
+	case code.OpPushType:
+		name, advance := vm.code.GetString(vm.pc)
+		vm.pc += advance
+
+		err = vm.execPushType(name)
 
 	case code.OpDrop:
 		_, err = vm.stack.Pop()
@@ -147,6 +152,9 @@ func (vm *VM) step(op code.Op) (stepDecision, error) {
 
 		err = vm.execAddToEnv(int(local))
 
+	case code.OpAnchorType:
+		err = vm.execAnchorType()
+
 	case code.OpAdd:
 		err = vm.execAdd()
 	case code.OpSub: