Fix MicroJIT logic in MJIT exec
This commit is contained in:
parent
6f4d17d622
commit
595e3a94fd
20
mjit.h
20
mjit.h
|
@ -143,21 +143,25 @@ mjit_exec(rb_execution_context_t *ec)
|
|||
const rb_iseq_t *iseq;
|
||||
struct rb_iseq_constant_body *body;
|
||||
|
||||
if (!mjit_call_p && !rb_ujit_enabled_p())
|
||||
return Qundef;
|
||||
RB_DEBUG_COUNTER_INC(mjit_exec);
|
||||
|
||||
iseq = ec->cfp->iseq;
|
||||
body = iseq->body;
|
||||
body->total_calls++;
|
||||
if (mjit_call_p || rb_ujit_enabled_p()) {
|
||||
iseq = ec->cfp->iseq;
|
||||
body = iseq->body;
|
||||
body->total_calls++;
|
||||
}
|
||||
|
||||
#ifndef MJIT_HEADER
|
||||
const int ujit_call_threashold = 10;
|
||||
if (body->total_calls == ujit_call_threashold && !mjit_call_p) {
|
||||
if (rb_ujit_enabled_p() && !mjit_call_p && body->total_calls == ujit_call_threashold) {
|
||||
rb_ujit_compile_iseq(iseq);
|
||||
return Qundef;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!mjit_call_p)
|
||||
return Qundef;
|
||||
|
||||
RB_DEBUG_COUNTER_INC(mjit_exec);
|
||||
|
||||
mjit_func_t func = body->jit_func;
|
||||
if (UNLIKELY((uintptr_t)func <= LAST_JIT_ISEQ_FUNC)) {
|
||||
# ifdef MJIT_HEADER
|
||||
|
|
Loading…
Reference in New Issue