diff options
-rw-r--r-- | src/lj_jit.h | 2 | ||||
-rw-r--r-- | src/lj_record.c | 6 | ||||
-rw-r--r-- | src/lj_traceerr.h | 1 |
3 files changed, 5 insertions, 4 deletions
diff --git a/src/lj_jit.h b/src/lj_jit.h index 41a3fe9a..69a066ce 100644 --- a/src/lj_jit.h +++ b/src/lj_jit.h | |||
@@ -76,7 +76,7 @@ | |||
76 | _(\012, instunroll, 4) /* Max. unroll for instable loops. */ \ | 76 | _(\012, instunroll, 4) /* Max. unroll for instable loops. */ \ |
77 | _(\012, loopunroll, 7) /* Max. unroll for loop ops in side traces. */ \ | 77 | _(\012, loopunroll, 7) /* Max. unroll for loop ops in side traces. */ \ |
78 | _(\012, callunroll, 3) /* Max. unroll for recursive calls. */ \ | 78 | _(\012, callunroll, 3) /* Max. unroll for recursive calls. */ \ |
79 | _(\011, recunroll, 0) /* Max. unroll for true recursion. */ \ | 79 | _(\011, recunroll, 2) /* Max. unroll for true recursion. */ \ |
80 | \ | 80 | \ |
81 | /* Size of each machine code area (in KBytes). */ \ | 81 | /* Size of each machine code area (in KBytes). */ \ |
82 | _(\011, sizemcode, JIT_P_sizemcode_DEFAULT) \ | 82 | _(\011, sizemcode, JIT_P_sizemcode_DEFAULT) \ |
diff --git a/src/lj_record.c b/src/lj_record.c index 42f9a8ae..45a8ef5f 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1726,8 +1726,10 @@ static void check_call_unroll(jit_State *J) | |||
1726 | if ((J->slot[s] & TREF_FRAME) && tref_ref(J->slot[s]) == fref) | 1726 | if ((J->slot[s] & TREF_FRAME) && tref_ref(J->slot[s]) == fref) |
1727 | count++; | 1727 | count++; |
1728 | if (J->pc == J->startpc) { | 1728 | if (J->pc == J->startpc) { |
1729 | if (count + (int32_t)(J->tailcalled & 0xff) > J->param[JIT_P_recunroll]) | 1729 | if (count + (int32_t)(J->tailcalled & 0xff) > J->param[JIT_P_recunroll]) { |
1730 | lj_trace_err(J, LJ_TRERR_NYIRECU); | 1730 | J->pc++; |
1731 | rec_stop(J, J->curtrace); /* Up-recursion or tail-recursion. */ | ||
1732 | } | ||
1731 | } else { | 1733 | } else { |
1732 | if (count > J->param[JIT_P_callunroll]) | 1734 | if (count > J->param[JIT_P_callunroll]) |
1733 | lj_trace_err(J, LJ_TRERR_CUNROLL); | 1735 | lj_trace_err(J, LJ_TRERR_CUNROLL); |
diff --git a/src/lj_traceerr.h b/src/lj_traceerr.h index 89ab04d1..abc53024 100644 --- a/src/lj_traceerr.h +++ b/src/lj_traceerr.h | |||
@@ -22,7 +22,6 @@ TREDEF(LBLACKL, "blacklisted loop") | |||
22 | TREDEF(BADTYPE, "bad argument type") | 22 | TREDEF(BADTYPE, "bad argument type") |
23 | TREDEF(CJITOFF, "call to JIT-disabled function") | 23 | TREDEF(CJITOFF, "call to JIT-disabled function") |
24 | TREDEF(CUNROLL, "call unroll limit reached") | 24 | TREDEF(CUNROLL, "call unroll limit reached") |
25 | TREDEF(NYIRECU, "NYI: recursive calls") | ||
26 | TREDEF(NYIVF, "NYI: vararg function") | 25 | TREDEF(NYIVF, "NYI: vararg function") |
27 | TREDEF(NYICF, "NYI: C function %p") | 26 | TREDEF(NYICF, "NYI: C function %p") |
28 | TREDEF(NYIFF, "NYI: FastFunc %s") | 27 | TREDEF(NYIFF, "NYI: FastFunc %s") |