diff options
author | Maxime Chevalier-Boisvert <[email protected]> | 2021-09-24 11:08:23 -0400 |
---|---|---|
committer | Alan Wu <[email protected]> | 2021-10-20 18:19:41 -0400 |
commit | 79015926eb81ac93700146d42c343f568d3ddfbb (patch) | |
tree | 8ecd804737fb293afd4958a0f70500ff4e00e7b9 /yjit_codegen.c | |
parent | 8edb29e5a013da5a74fba9c2484bd6d3913bfb4b (diff) |
Try to get getblockparamproxy to support level > 0
Diffstat (limited to 'yjit_codegen.c')
-rw-r--r-- | yjit_codegen.c | 9 |
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)); |