aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/vm.c
diff options
context:
space:
mode:
authorGravatar Tom Willemse2021-10-11 00:13:15 -0700
committerGravatar Tom Willemse2021-10-11 00:13:15 -0700
commit7bd9934a4be7c22b8f464ab7a1cc243801b5957c (patch)
tree220c128d448c1f82fdae86560e6016b42bb7a403 /clox/src/vm.c
parentfcbea5f617edb6e3dfa68eb31efa402b4916c032 (diff)
downloadcrafting-interpreters-7bd9934a4be7c22b8f464ab7a1cc243801b5957c.tar.gz
crafting-interpreters-7bd9934a4be7c22b8f464ab7a1cc243801b5957c.zip
Chapter 21.3
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r--clox/src/vm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c
index 709f3d1..5e35abd 100644
--- a/clox/src/vm.c
+++ b/clox/src/vm.c
@@ -115,6 +115,16 @@ static InterpretResult run() {
case OP_POP:
pop();
break;
+ case OP_GET_GLOBAL: {
+ ObjString *name = READ_STRING();
+ Value value;
+ if (!tableGet(&vm.globals, name, &value)) {
+ runtimeError("Undefined variable '%s'.", name->chars);
+ return INTERPRET_RUNTIME_ERROR;
+ }
+ push(value);
+ break;
+ }
case OP_DEFINE_GLOBAL: {
ObjString *name = READ_STRING();
tableSet(&vm.globals, name, peek(0));