summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2021-06-04 16:49:50 -0700
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:35 -0400
commitd77c989ac73274a0908746c0f861fb8936f64dfc (patch)
tree2808d2cf76404798822b4e49240ef0743fecbe85
parent9a55fd37c926f7297e2039a0436aae755a06ce78 (diff)
Fix check for leaf invokebuiltin
Also added a comment when inlining a leaf builtin
-rw-r--r--yjit_codegen.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/yjit_codegen.c b/yjit_codegen.c
index 847bb57e0d..26a718ef32 100644
--- a/yjit_codegen.c
+++ b/yjit_codegen.c
@@ -2460,8 +2460,7 @@ rb_leaf_invokebuiltin_iseq_p(const rb_iseq_t *iseq)
unsigned int invokebuiltin_len = insn_len(BIN(opt_invokebuiltin_delegate_leave));
unsigned int leave_len = insn_len(BIN(leave));
- return iseq->body->iseq_size == (
- (invokebuiltin_len + leave_len) &&
+ return (iseq->body->iseq_size == (invokebuiltin_len + leave_len) &&
rb_vm_insn_addr2opcode((void *)iseq->body->iseq_encoded[0]) == BIN(opt_invokebuiltin_delegate_leave) &&
rb_vm_insn_addr2opcode((void *)iseq->body->iseq_encoded[invokebuiltin_len]) == BIN(leave) &&
iseq->body->builtin_inline_p
@@ -2546,6 +2545,8 @@ gen_send_iseq(jitstate_t *jit, ctx_t *ctx, const struct rb_callinfo *ci, const r
const struct rb_builtin_function *leaf_builtin = rb_leaf_builtin_function(iseq);
if (leaf_builtin && !block && leaf_builtin->argc + 1 <= NUM_C_ARG_REGS) {
+ ADD_COMMENT(cb, "inlined leaf builtin");
+
// TODO: figure out if this is necessary
// If the calls don't allocate, do they need up to date PC, SP?
// Save YJIT registers