diff options
author | Adrian Thurston <thurston@complang.org> | 2012-07-09 14:27:57 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2012-07-09 14:27:57 -0400 |
commit | c74ad7c5cd5e5e6830c2d5bc26d6250e59c5d258 (patch) | |
tree | 54ac292c45632111969375be9149b7b4844069ce | |
parent | 54753ce9bdf79a22892d1f19659154c8028ebcdc (diff) | |
download | colm-c74ad7c5cd5e5e6830c2d5bc26d6250e59c5d258.tar.gz |
fix for EXIT op: need to save the frame id for comparison
-rw-r--r-- | src/bytecode.c | 5 |
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; } |