diff options
author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2020-12-10 00:06:10 -0500 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:26 -0400 |
commit | f7717b1d463548414e607498e84815ac641ce3dc (patch) | |
tree | 85b99dc0bbad7fc61f9b5beeabb450b167e76923 /ujit_iface.c | |
parent | f761e9ee641cb4bf9250fa97d119a444d239e7b7 (diff) |
Start refactoring JIT engine
Diffstat (limited to 'ujit_iface.c')
-rw-r--r-- | ujit_iface.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/ujit_iface.c b/ujit_iface.c index 404c75dbee..ac541b7cdc 100644 --- a/ujit_iface.c +++ b/ujit_iface.c @@ -232,25 +232,13 @@ rb_ujit_compile_iseq(const rb_iseq_t *iseq) RB_VM_LOCK_ENTER(); VALUE *encoded = (VALUE *)iseq->body->iseq_encoded; - unsigned int insn_idx; - unsigned int next_ujit_idx = 0; + // Compile a block version starting at the first instruction + uint8_t* native_code_ptr = ujit_compile_block(iseq, 0); - for (insn_idx = 0; insn_idx < iseq->body->iseq_size; /* */) { - int insn = opcode_at_pc(iseq, &encoded[insn_idx]); - int len = insn_len(insn); - - uint8_t *native_code_ptr = NULL; - - // If ujit hasn't already compiled this instruction - if (insn_idx >= next_ujit_idx) { - native_code_ptr = ujit_compile_insn(iseq, insn_idx, &next_ujit_idx); - } - - if (native_code_ptr) { - encoded[insn_idx] = (VALUE)native_code_ptr; - } - insn_idx += len; + if (native_code_ptr) { + encoded[0] = (VALUE)native_code_ptr; } + RB_VM_LOCK_LEAVE(); #endif } |