about summary refs log tree commit diff
path: root/pkg/lang/vm/exec.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-07-19 02:27:19 +0200
committerMel <einebeere@gmail.com>2022-07-19 02:27:19 +0200
commitb6fa4bc82398b09307f2e6b75e27422d1d1ecb33 (patch)
treee5b7aec7eb7f72f1c2f55e4b2a78d331bd81485e /pkg/lang/vm/exec.go
parente06aeb7fa2fcb9046b8861ed3c23417555e823f5 (diff)
downloadjinx-b6fa4bc82398b09307f2e6b75e27422d1d1ecb33.tar.zst
jinx-b6fa4bc82398b09307f2e6b75e27422d1d1ecb33.zip
Implement stack hygiene
Diffstat (limited to 'pkg/lang/vm/exec.go')
-rw-r--r--pkg/lang/vm/exec.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/pkg/lang/vm/exec.go b/pkg/lang/vm/exec.go
index f92e486..3a1ce36 100644
--- a/pkg/lang/vm/exec.go
+++ b/pkg/lang/vm/exec.go
@@ -97,6 +97,16 @@ func (vm *VM) execPushType(name string) error {
 	return nil
 }
 
+func (vm *VM) execDrop(dropAmount uint) error {
+	for i := 0; i < int(dropAmount); i++ {
+		if _, err := vm.popAndDrop(); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
 func (vm *VM) execGetMember(name string) error {
 	parent, err := vm.stack.Pop()
 	if err != nil {