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 | } |
