aboutsummaryrefslogtreecommitdiff
path: root/vm.d
diff options
context:
space:
mode:
Diffstat (limited to 'vm.d')
-rw-r--r--vm.d12
1 files changed, 11 insertions, 1 deletions
diff --git a/vm.d b/vm.d
index 45f3742..cc2b9ae 100644
--- a/vm.d
+++ b/vm.d
@@ -261,13 +261,23 @@ class VM {
case OpCode.OP_JUMP_IF_FALSE:
uint offset = readShort();
if (!isBoolean(peekA(0))) {
- writeln("if expects a boolean condition");
+ writeln("expecting a boolean condition");
return InterpretResult.RUNTIME_ERROR; // TODO error
}
if (!asBoolean(peekA(0))) {
ip += offset;
}
break;
+ case OpCode.OP_JUMP_IF_TRUE:
+ uint offset = readShort();
+ if (!isBoolean(peekA(0))) {
+ writeln("expecting a boolean condition");
+ return InterpretResult.RUNTIME_ERROR; // TODO error
+ }
+ if (asBoolean(peekA(0))) {
+ ip += offset;
+ }
+ break;
default:
writeln("unknown opcode to run");
break;