summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <[email protected]>2020-09-30 16:57:54 -0400
committerAlan Wu <[email protected]>2021-10-20 18:19:24 -0400
commit851ea463512529390133e656540bb3e287ca6fdd ()
treec7d26b38389bc47a8ee31e3e0e8f4dc996283586
parentd7f012666d4931c64fbb6175eab3837088e4f0ea (diff)
Added member_opnd() convenience macro
-rw-r--r--ujit_asm.h7
-rw-r--r--ujit_compile.c26
2 files changed, 18 insertions, 15 deletions
@@ -218,6 +218,13 @@ x86opnd_t imm_opnd(int64_t val);
// Constant pointer operand
x86opnd_t const_ptr_opnd(void* ptr);
// Code block methods
uint8_t* alloc_exec_mem(size_t mem_size);
void cb_init(codeblock_t* cb, uint8_t* mem_block, size_t mem_size);
@@ -335,7 +335,7 @@ void gen_putself(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx)
void gen_getlocal_wc0(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx)
{
// Load environment pointer EP from CFP
- mov(cb, RDX, mem_opnd(64, RDI, 32));
// Compute the offset from BP to the local
int32_t local_idx = (int32_t)ctx_get_arg(ctx, 0);
@@ -365,7 +365,7 @@ void gen_setlocal_wc0(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx)
*/
// Load environment pointer EP from CFP
- mov(cb, RDX, mem_opnd(64, RDI, 32));
// flags & VM_ENV_FLAG_WB_REQUIRED
x86opnd_t flags_opnd = mem_opnd(64, RDX, 8 * VM_ENV_DATA_INDEX_FLAGS);
@@ -397,32 +397,28 @@ void gen_opt_send_without_block(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx)
const struct rb_callcache *cc = cd->cc;
ID mid = vm_ci_mid(cd->ci);
- fprintf(stderr, "jitting method name %s argc: %lu\n", rb_id2name(mid), argc);
- if (vm_ci_flag(cd->ci) & VM_CALL_ARGS_SIMPLE) {
- fprintf(stderr, "its simple!\n");
}
mov(cb, RAX, const_ptr_opnd(cd));
- x86opnd_t ptr_to_cc = mem_opnd(64, RAX, offsetof(struct rb_call_data, cc));
mov(cb, RAX, ptr_to_cc);
x86opnd_t ptr_to_klass = mem_opnd(64, RAX, offsetof(struct rb_callcache, klass));
x86opnd_t ptr_to_cme_ = mem_opnd(64, RAX, offsetof(struct rb_callcache, cme_));
mov(cb, RBX, ptr_to_klass);
mov(cb, RCX, ptr_to_cme_);
-
-
- //print_str(cb, rb_id2name(mid));
- //print_int(cb, RAX);
-
-
-
-
// Points to the receiver operand on the stack
x86opnd_t recv = ctx_stack_opnd(ctx, argc);
mov(cb, RDX, recv);
@@ -442,7 +438,7 @@ void gen_opt_send_without_block(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx)
jnz_ptr(cb, side_exit);
print_str(cb, "method entry not invalidated!!!1");
-