diff options
author | Mike Pall <mike> | 2013-09-08 02:53:23 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2013-09-08 02:53:23 +0200 |
commit | d1194a82eb24afa1c749a0a8080b67d168f9f201 (patch) | |
tree | fb3bebc2cbf5032a49653dd6a0bd31c420dd8083 /src/lj_trace.c | |
parent | d3d30d389b504495d054d71bdee0fe2677d4b44c (diff) | |
download | luajit-d1194a82eb24afa1c749a0a8080b67d168f9f201.tar.gz luajit-d1194a82eb24afa1c749a0a8080b67d168f9f201.tar.bz2 luajit-d1194a82eb24afa1c749a0a8080b67d168f9f201.zip |
Low-overhead profiler, part 4: JIT compiler support.
Diffstat (limited to '')
-rw-r--r-- | src/lj_trace.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c index c70fc247..2b8d931f 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c | |||
@@ -766,17 +766,20 @@ int LJ_FASTCALL lj_trace_exit(jit_State *J, void *exptr) | |||
766 | if (errcode) | 766 | if (errcode) |
767 | return -errcode; /* Return negated error code. */ | 767 | return -errcode; /* Return negated error code. */ |
768 | 768 | ||
769 | lj_vmevent_send(L, TEXIT, | 769 | if (!(LJ_HASPROFILE && (G(L)->hookmask & HOOK_PROFILE))) |
770 | lj_state_checkstack(L, 4+RID_NUM_GPR+RID_NUM_FPR+LUA_MINSTACK); | 770 | lj_vmevent_send(L, TEXIT, |
771 | setintV(L->top++, J->parent); | 771 | lj_state_checkstack(L, 4+RID_NUM_GPR+RID_NUM_FPR+LUA_MINSTACK); |
772 | setintV(L->top++, J->exitno); | 772 | setintV(L->top++, J->parent); |
773 | trace_exit_regs(L, ex); | 773 | setintV(L->top++, J->exitno); |
774 | ); | 774 | trace_exit_regs(L, ex); |
775 | ); | ||
775 | 776 | ||
776 | pc = exd.pc; | 777 | pc = exd.pc; |
777 | cf = cframe_raw(L->cframe); | 778 | cf = cframe_raw(L->cframe); |
778 | setcframe_pc(cf, pc); | 779 | setcframe_pc(cf, pc); |
779 | if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { | 780 | if (LJ_HASPROFILE && (G(L)->hookmask & HOOK_PROFILE)) { |
781 | /* Just exit to interpreter. */ | ||
782 | } else if (G(L)->gc.state == GCSatomic || G(L)->gc.state == GCSfinalize) { | ||
780 | if (!(G(L)->hookmask & HOOK_GC)) | 783 | if (!(G(L)->hookmask & HOOK_GC)) |
781 | lj_gc_step(L); /* Exited because of GC: drive GC forward. */ | 784 | lj_gc_step(L); /* Exited because of GC: drive GC forward. */ |
782 | } else { | 785 | } else { |