summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2012-07-09 14:27:57 -0400
committerAdrian Thurston <thurston@complang.org>2012-07-09 14:27:57 -0400
commitc74ad7c5cd5e5e6830c2d5bc26d6250e59c5d258 (patch)
tree54ac292c45632111969375be9149b7b4844069ce
parent54753ce9bdf79a22892d1f19659154c8028ebcdc (diff)
downloadcolm-c74ad7c5cd5e5e6830c2d5bc26d6250e59c5d258.tar.gz
fix for EXIT op: need to save the frame id for comparison
-rw-r--r--src/bytecode.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 2cfa598c..dafadbdd 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -3522,7 +3522,10 @@ again:
while ( true ) {
FrameInfo *fi = &prg->rtd->frameInfo[exec->frameId];
+ int frameId = exec->frameId;
+
downrefLocalTrees( prg, sp, exec->framePtr, fi->trees, fi->treesLen );
+
vm_popn( fi->frameSize );
/* Call layout. */
@@ -3536,7 +3539,7 @@ again:
/* We stop on the root, which doesn't have the full function
* stack layout. */
- if ( exec->frameId == prg->rtd->rootFrameId )
+ if ( frameId == prg->rtd->rootFrameId )
break;
}