diff options
author | Mike Pall <mike> | 2013-09-13 00:33:58 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2013-09-13 00:33:58 +0200 |
commit | f1e7a4477ca4a5a8ef8c64135d9093d02451bb22 (patch) | |
tree | 04ee05ae53e6552f1ba7ef851639c6d365ff3221 | |
parent | 1f7b32621700a7c104435a64d6cad5374cb8b9b7 (diff) | |
download | luajit-f1e7a4477ca4a5a8ef8c64135d9093d02451bb22.tar.gz luajit-f1e7a4477ca4a5a8ef8c64135d9093d02451bb22.tar.bz2 luajit-f1e7a4477ca4a5a8ef8c64135d9093d02451bb22.zip |
Fix snapshot restore for exit to function header.
-rw-r--r-- | src/lj_snap.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c index 30ff9152..a25e4601 100644 --- a/src/lj_snap.c +++ b/src/lj_snap.c | |||
@@ -845,12 +845,15 @@ const BCIns *lj_snap_restore(jit_State *J, void *exptr) | |||
845 | 845 | ||
846 | /* Compute current stack top. */ | 846 | /* Compute current stack top. */ |
847 | switch (bc_op(*pc)) { | 847 | switch (bc_op(*pc)) { |
848 | default: | ||
849 | if (bc_op(*pc) < BC_FUNCF) { | ||
850 | L->top = curr_topL(L); | ||
851 | break; | ||
852 | } | ||
853 | /* fallthrough */ | ||
848 | case BC_CALLM: case BC_CALLMT: case BC_RETM: case BC_TSETM: | 854 | case BC_CALLM: case BC_CALLMT: case BC_RETM: case BC_TSETM: |
849 | L->top = frame + snap->nslots; | 855 | L->top = frame + snap->nslots; |
850 | break; | 856 | break; |
851 | default: | ||
852 | L->top = curr_topL(L); | ||
853 | break; | ||
854 | } | 857 | } |
855 | return pc; | 858 | return pc; |
856 | } | 859 | } |