summaryrefslogtreecommitdiff
path: root/yjit_codegen.c
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <[email protected]>2021-09-24 11:08:23 -0400
committerAlan Wu <[email protected]>2021-10-20 18:19:41 -0400
commit79015926eb81ac93700146d42c343f568d3ddfbb (patch)
tree8ecd804737fb293afd4958a0f70500ff4e00e7b9 /yjit_codegen.c
parent8edb29e5a013da5a74fba9c2484bd6d3913bfb4b (diff)
Try to get getblockparamproxy to support level > 0
Diffstat (limited to 'yjit_codegen.c')
-rw-r--r--yjit_codegen.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/yjit_codegen.c b/yjit_codegen.c
index c0c27029ca..c05ec53a38 100644
--- a/yjit_codegen.c
+++ b/yjit_codegen.c
@@ -4133,15 +4133,10 @@ gen_getblockparamproxy(jitstate_t* jit, ctx_t* ctx, codeblock_t* cb)
uint8_t *side_exit = yjit_side_exit(jit, ctx);
// EP level
- VALUE level = jit_get_arg(jit, 1);
-
- if (level != 0) {
- // Bail on non zero level to make getting the ep simple
- return YJIT_CANT_COMPILE;
- }
+ uint32_t level = (uint32_t)jit_get_arg(jit, 1);
// Load environment pointer EP from CFP
- mov(cb, REG0, member_opnd(REG_CFP, rb_control_frame_t, ep));
+ gen_get_ep(cb, REG0, level);
// Bail when VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM) is non zero
test(cb, mem_opnd(64, REG0, SIZEOF_VALUE * VM_ENV_DATA_INDEX_FLAGS), imm_opnd(VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM));