diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-29 00:33:49 -0800 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-29 00:47:25 -0800 |
commit | f19deef323609e46a732edaa983e7bfed16582c0 (patch) | |
tree | 601cc2fbbefc244c59da3a5ec0e047ef612e2505 /mjit_compiler.c | |
parent | 27f34eeb5a95263f8669e6998247d83606c3763f (diff) | |
download | ruby-f19deef323609e46a732edaa983e7bfed16582c0.tar.gz |
MJIT: Move Primitive helpers to mjit_c.rb
Diffstat (limited to 'mjit_compiler.c')
-rw-r--r-- | mjit_compiler.c | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/mjit_compiler.c b/mjit_compiler.c index 655c0ecc23..a13b1c6f64 100644 --- a/mjit_compiler.c +++ b/mjit_compiler.c @@ -27,25 +27,6 @@ #include "insns.inc" #include "insns_info.inc" -// Returns true if call cache is still not obsoleted and vm_cc_cme(cc)->def->type is available. -static bool -has_valid_method_type(CALL_CACHE cc) -{ - return vm_cc_cme(cc) != NULL; -} - -// Returns true if iseq can use fastpath for setup, otherwise NULL. This becomes true in the same condition -// as CC_SET_FASTPATH (in vm_callee_setup_arg) is called from vm_call_iseq_setup. -static bool -fastpath_applied_iseq_p(const CALL_INFO ci, const CALL_CACHE cc, const rb_iseq_t *iseq) -{ - extern bool rb_simple_iseq_p(const rb_iseq_t *iseq); - return iseq != NULL - && !(vm_ci_flag(ci) & VM_CALL_KW_SPLAT) && rb_simple_iseq_p(iseq) // Top of vm_callee_setup_arg. In this case, opt_pc is 0. - && vm_ci_argc(ci) == (unsigned int)ISEQ_BODY(iseq)->param.lead_num // exclude argument_arity_error (assumption: `calling->argc == ci->orig_argc` in send insns) - && vm_call_iseq_optimizable_p(ci, cc); // CC_SET_FASTPATH condition -} - #include "mjit_compile_attr.inc" #if SIZEOF_LONG == SIZEOF_VOIDP @@ -76,30 +57,6 @@ mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id) return !NIL_P(src); } -// -// Primitive.methods -// - -static VALUE -builtin_compile(rb_execution_context_t *ec, VALUE self, VALUE buf, VALUE bf_addr, VALUE index, VALUE stack_size, VALUE builtin_inline_p) -{ - // Call "mjit_compile_invokebuiltin_for_#{func}" in mk_builtin_loader.rb - RB_BUILTIN bf = (RB_BUILTIN)NUM2PTR(bf_addr); - bf->compiler(buf, NIL_P(index) ? -1 : NUM2LONG(index), NUM2UINT(stack_size), RTEST(builtin_inline_p)); - return Qnil; -} - -// Returns true if MJIT thinks this cc's opt_* insn may fallback to opt_send_without_block. -static VALUE -has_cache_for_send(rb_execution_context_t *ec, VALUE self, VALUE cc_addr, VALUE insn) -{ - extern bool rb_vm_opt_cfunc_p(CALL_CACHE cc, int insn); - CALL_CACHE cc = (CALL_CACHE)NUM2PTR(cc_addr); - bool has_cache = has_valid_method_type(cc) && - !(vm_cc_cme(cc)->def->type == VM_METHOD_TYPE_CFUNC && rb_vm_opt_cfunc_p(cc, NUM2INT(insn))); - return RBOOL(has_cache); -} - // An offsetof implementation that works for unnamed struct and union. // Multiplying 8 for compatibility with libclang's offsetof. #define OFFSETOF(ptr, member) RB_SIZE2NUM(((char *)&ptr.member - (char*)&ptr) * 8) |