1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Rename mjit_exec to jit_exec (#6262)

* Rename mjit_exec to jit_exec

* Rename mjit_exec_slowpath to mjit_check_iseq

* Remove mjit_exec references from comments
This commit is contained in:
Takashi Kokubun 2022-08-19 23:57:17 -07:00 committed by GitHub
parent fc5382d465
commit 485019c2bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2022-08-20 15:57:46 +09:00
Merged-By: k0kubun <takashikkbn@gmail.com>
11 changed files with 31 additions and 32 deletions

View file

@ -2,7 +2,7 @@ require 'benchmark_driver/struct'
require 'benchmark_driver/metric'
require 'erb'
# A special runner dedicated for measuring mjit_exec overhead.
# A special runner dedicated for measuring jit_exec overhead.
class BenchmarkDriver::Runner::MjitExec
METRIC = BenchmarkDriver::Metric.new(name: 'Iteration per second', unit: 'i/s')
@ -12,8 +12,8 @@ class BenchmarkDriver::Runner::MjitExec
:metrics, # @param [Array<BenchmarkDriver::Metric>]
:num_methods, # @param [Integer] num_methods - The number of methods to be defined
:loop_count, # @param [Integer] loop_count
:from_jit, # @param [TrueClass,FalseClass] from_jit - Whether the mjit_exec() is from JIT or not
:to_jit, # @param [TrueClass,FalseClass] to_jit - Whether the mjit_exec() is to JIT or not
:from_jit, # @param [TrueClass,FalseClass] from_jit - Whether the jit_exec() is from JIT or not
:to_jit, # @param [TrueClass,FalseClass] to_jit - Whether the jit_exec() is to JIT or not
)
# Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
class << JobParser = Module.new

View file

@ -347,8 +347,8 @@ RB_DEBUG_COUNTER(vm_sync_lock_enter_nb)
RB_DEBUG_COUNTER(vm_sync_lock_enter_cr)
RB_DEBUG_COUNTER(vm_sync_barrier)
/* mjit_exec() counts */
RB_DEBUG_COUNTER(mjit_exec)
/* jit_exec() counts */
RB_DEBUG_COUNTER(jit_exec)
RB_DEBUG_COUNTER(mjit_exec_not_added)
RB_DEBUG_COUNTER(mjit_exec_not_ready)
RB_DEBUG_COUNTER(mjit_exec_not_compiled)

2
mjit.h
View file

@ -120,7 +120,7 @@ static inline struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec){return
static inline void mjit_cont_free(struct mjit_cont *cont){}
static inline void mjit_free_iseq(const rb_iseq_t *iseq){}
static inline void mjit_mark(void){}
static inline VALUE mjit_exec(rb_execution_context_t *ec) { return Qundef; /* unreachable */ }
static inline VALUE jit_exec(rb_execution_context_t *ec) { return Qundef; /* unreachable */ }
static inline void mjit_child_after_fork(void){}
#define mjit_enabled false

View file

@ -370,7 +370,7 @@ mjit_compile_body(FILE *f, const rb_iseq_t *iseq, struct compile_status *status)
}
// Simulate `opt_pc` in setup_parameters_complex. Other PCs which may be passed by catch tables
// are not considered since vm_exec doesn't call mjit_exec for catch tables.
// are not considered since vm_exec doesn't call jit_exec for catch tables.
if (body->param.flags.has_opt) {
int i;
fprintf(f, "\n");

View file

@ -749,7 +749,7 @@ class TestMJIT < Test::Unit::TestCase
end
def a
# Calling #b should be vm_exec, not direct mjit_exec.
# Calling #b should be vm_exec, not direct jit_exec.
# Otherwise `1` on local variable would be purged.
1 + b
end

View file

@ -90,7 +90,7 @@
fprintf(f, " val = vm_exec(ec, true);\n");
}
else {
fprintf(f, " if ((val = mjit_exec(ec)) == Qundef) {\n");
fprintf(f, " if ((val = jit_exec(ec)) == Qundef) {\n");
fprintf(f, " VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH);\n"); // This is vm_call0_body's code after vm_call_iseq_setup
fprintf(f, " val = vm_exec(ec, false);\n");
fprintf(f, " }\n");

28
vm.c
View file

@ -379,12 +379,12 @@ static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE s
#if USE_MJIT
# ifdef MJIT_HEADER
NOINLINE(static COLDFUNC VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body));
NOINLINE(static COLDFUNC VALUE mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body));
# else
static inline VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
static inline VALUE mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
# endif
static VALUE
mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
{
uintptr_t func_i = (uintptr_t)(body->jit_func);
ASSUME(func_i <= LAST_JIT_ISEQ_FUNC);
@ -414,7 +414,7 @@ mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_
// If it is not, add ISEQ to the compilation queue and return Qundef for MJIT.
// YJIT compiles on the thread running the iseq.
static inline VALUE
mjit_exec(rb_execution_context_t *ec)
jit_exec(rb_execution_context_t *ec)
{
const rb_iseq_t *iseq = ec->cfp->iseq;
struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
@ -442,7 +442,7 @@ mjit_exec(rb_execution_context_t *ec)
if (!(mjit_call_p || yjit_enabled))
return Qundef;
RB_DEBUG_COUNTER_INC(mjit_exec);
RB_DEBUG_COUNTER_INC(jit_exec);
mjit_func_t func = body->jit_func;
@ -458,7 +458,7 @@ mjit_exec(rb_execution_context_t *ec)
# else
RB_DEBUG_COUNTER_INC(mjit_frame_VM2VM);
# endif
return mjit_exec_slowpath(ec, iseq, body);
return mjit_check_iseq(ec, iseq, body);
}
# ifdef MJIT_HEADER
@ -2286,8 +2286,8 @@ hook_before_rewind(rb_execution_context_t *ec, const rb_control_frame_t *cfp,
void *code; //
};
If mjit_exec is already called before calling vm_exec, `mjit_enable_p` should
be FALSE to avoid calling `mjit_exec` twice.
If jit_exec is already called before calling vm_exec, `jit_enable_p` should
be FALSE to avoid calling `jit_exec` twice.
*/
static inline VALUE
@ -2303,7 +2303,7 @@ struct rb_vm_exec_context {
VALUE initial;
VALUE result;
enum ruby_tag_type state;
bool mjit_enable_p;
bool jit_enable_p;
};
static void
@ -2332,7 +2332,7 @@ vm_exec_bottom_main(void *context)
struct rb_vm_exec_context *ctx = (struct rb_vm_exec_context *)context;
ctx->state = TAG_NONE;
if (!ctx->mjit_enable_p || (ctx->result = mjit_exec(ctx->ec)) == Qundef) {
if (!ctx->jit_enable_p || (ctx->result = jit_exec(ctx->ec)) == Qundef) {
ctx->result = vm_exec_core(ctx->ec, ctx->initial);
}
vm_exec_enter_vm_loop(ctx->ec, ctx, ctx->tag, true);
@ -2347,12 +2347,12 @@ vm_exec_bottom_rescue(void *context)
}
VALUE
vm_exec(rb_execution_context_t *ec, bool mjit_enable_p)
vm_exec(rb_execution_context_t *ec, bool jit_enable_p)
{
struct rb_vm_exec_context ctx = {
.ec = ec,
.initial = 0, .result = Qundef,
.mjit_enable_p = mjit_enable_p,
.jit_enable_p = jit_enable_p,
};
struct rb_wasm_try_catch try_catch;
@ -2374,7 +2374,7 @@ vm_exec(rb_execution_context_t *ec, bool mjit_enable_p)
#else
VALUE
vm_exec(rb_execution_context_t *ec, bool mjit_enable_p)
vm_exec(rb_execution_context_t *ec, bool jit_enable_p)
{
enum ruby_tag_type state;
VALUE result = Qundef;
@ -2384,7 +2384,7 @@ vm_exec(rb_execution_context_t *ec, bool mjit_enable_p)
_tag.retval = Qnil;
if ((state = EC_EXEC_TAG()) == TAG_NONE) {
if (!mjit_enable_p || (result = mjit_exec(ec)) == Qundef) {
if (!jit_enable_p || (result = jit_exec(ec)) == Qundef) {
result = vm_exec_core(ec, initial);
}
goto vm_loop_start; /* fallback to the VM */

View file

@ -489,7 +489,7 @@ struct rb_iseq_constant_body {
/* The following fields are MJIT related info. */
VALUE (*jit_func)(struct rb_execution_context_struct *,
struct rb_control_frame_struct *); /* function pointer for loaded native code */
long unsigned total_calls; /* number of total calls with `mjit_exec()` */
long unsigned total_calls; /* number of total calls with `jit_exec()` */
struct rb_mjit_unit *jit_unit;
#endif

View file

@ -20,7 +20,7 @@ static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, con
static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
VALUE vm_exec(rb_execution_context_t *ec, bool mjit_enable_p);
VALUE vm_exec(rb_execution_context_t *ec, bool jit_enable_p);
static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);

View file

@ -4783,16 +4783,16 @@ vm_sendish(
#ifdef MJIT_HEADER
/* When calling ISeq which may catch an exception from JIT-ed
code, we should not call mjit_exec directly to prevent the
code, we should not call jit_exec directly to prevent the
caller frame from being canceled. That's because the caller
frame may have stack values in the local variables and the
cancelling the caller frame will purge them. But directly
calling mjit_exec is faster... */
calling jit_exec is faster... */
if (ISEQ_BODY(GET_ISEQ())->catch_except_p) {
VM_ENV_FLAGS_SET(GET_EP(), VM_FRAME_FLAG_FINISH);
return vm_exec(ec, true);
}
else if ((val = mjit_exec(ec)) == Qundef) {
else if ((val = jit_exec(ec)) == Qundef) {
VM_ENV_FLAGS_SET(GET_EP(), VM_FRAME_FLAG_FINISH);
return vm_exec(ec, false);
}
@ -4801,9 +4801,8 @@ vm_sendish(
}
#else
/* When calling from VM, longjmp in the callee won't purge any
JIT-ed caller frames. So it's safe to directly call
mjit_exec. */
return mjit_exec(ec);
JIT-ed caller frames. So it's safe to directly call jit_exec. */
return jit_exec(ec);
#endif
}

View file

@ -22,7 +22,7 @@ pub extern "C" fn rb_yjit_parse_option(str_ptr: *const raw::c_char) -> bool {
}
/// Is YJIT on? The interpreter uses this function to decide whether to increment
/// ISEQ call counters. See mjit_exec().
/// ISEQ call counters. See jit_exec().
/// This is used frequently since it's used on every method call in the interpreter.
#[no_mangle]
pub extern "C" fn rb_yjit_enabled_p() -> raw::c_int {