summaryrefslogtreecommitdiff
path: root/mjit_compiler.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-11-29 00:33:49 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2022-11-29 00:47:25 -0800
commitf19deef323609e46a732edaa983e7bfed16582c0 (patch)
tree601cc2fbbefc244c59da3a5ec0e047ef612e2505 /mjit_compiler.c
parent27f34eeb5a95263f8669e6998247d83606c3763f (diff)
downloadruby-f19deef323609e46a732edaa983e7bfed16582c0.tar.gz
MJIT: Move Primitive helpers to mjit_c.rb
Diffstat (limited to 'mjit_compiler.c')
-rw-r--r--mjit_compiler.c43
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)