summaryrefslogtreecommitdiff
path: root/ujit_asm.h
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2020-09-28 15:50:41 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:24 -0400
commite0c5d4ecd9e864fa531ecceb29ed0e195bf08644 (patch)
tree3a4b5d791a58ed235729cc9a9ea7d2dd00a5ab74 /ujit_asm.h
parent4d72b9a2f7890a36f221f256b62250df4baebc1a (diff)
Implemented side-exits to interpreter. setlocal_WC_0
Diffstat (limited to 'ujit_asm.h')
-rw-r--r--ujit_asm.h36
1 files changed, 34 insertions, 2 deletions
diff --git a/ujit_asm.h b/ujit_asm.h
index d594897fa0..707c56cb2a 100644
--- a/ujit_asm.h
+++ b/ujit_asm.h
@@ -219,7 +219,8 @@ x86opnd_t imm_opnd(int64_t val);
x86opnd_t const_ptr_opnd(void* ptr);
// Code block methods
-void cb_init(codeblock_t* cb, size_t mem_size);
+uint8_t* alloc_exec_mem(size_t mem_size);
+void cb_init(codeblock_t* cb, uint8_t* mem_block, size_t mem_size);
void cb_align_pos(codeblock_t* cb, size_t multiple);
void cb_set_pos(codeblock_t* cb, size_t pos);
uint8_t* cb_get_ptr(codeblock_t* cb, size_t index);
@@ -289,7 +290,7 @@ void jnc(codeblock_t* cb, size_t label_idx);
void jne(codeblock_t* cb, size_t label_idx);
void jng(codeblock_t* cb, size_t label_idx);
void jnge(codeblock_t* cb, size_t label_idx);
-//void jnl(codeblock_t* cb, size_t label_idx);
+void jnl(codeblock_t* cb, size_t label_idx);
void jnle(codeblock_t* cb, size_t label_idx);
void jno(codeblock_t* cb, size_t label_idx);
void jnp(codeblock_t* cb, size_t label_idx);
@@ -301,6 +302,36 @@ void jpe(codeblock_t* cb, size_t label_idx);
void jpo(codeblock_t* cb, size_t label_idx);
void js(codeblock_t* cb, size_t label_idx);
void jz(codeblock_t* cb, size_t label_idx);
+void ja_ptr(codeblock_t* cb, uint8_t* ptr);
+void jae_ptr(codeblock_t* cb, uint8_t* ptr);
+void jb_ptr(codeblock_t* cb, uint8_t* ptr);
+void jbe_ptr(codeblock_t* cb, uint8_t* ptr);
+void jc_ptr(codeblock_t* cb, uint8_t* ptr);
+void je_ptr(codeblock_t* cb, uint8_t* ptr);
+void jg_ptr(codeblock_t* cb, uint8_t* ptr);
+void jge_ptr(codeblock_t* cb, uint8_t* ptr);
+void jl_ptr(codeblock_t* cb, uint8_t* ptr);
+void jle_ptr(codeblock_t* cb, uint8_t* ptr);
+void jna_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnae_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnb_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnbe_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnc_ptr(codeblock_t* cb, uint8_t* ptr);
+void jne_ptr(codeblock_t* cb, uint8_t* ptr);
+void jng_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnge_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnl_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnle_ptr(codeblock_t* cb, uint8_t* ptr);
+void jno_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnp_ptr(codeblock_t* cb, uint8_t* ptr);
+void jns_ptr(codeblock_t* cb, uint8_t* ptr);
+void jnz_ptr(codeblock_t* cb, uint8_t* ptr);
+void jo_ptr(codeblock_t* cb, uint8_t* ptr);
+void jp_ptr(codeblock_t* cb, uint8_t* ptr);
+void jpe_ptr(codeblock_t* cb, uint8_t* ptr);
+void jpo_ptr(codeblock_t* cb, uint8_t* ptr);
+void js_ptr(codeblock_t* cb, uint8_t* ptr);
+void jz_ptr(codeblock_t* cb, uint8_t* ptr);
void jmp(codeblock_t* cb, size_t label_idx);
void jmp_rm(codeblock_t* cb, x86opnd_t opnd);
void jmp32(codeblock_t* cb, int32_t offset);
@@ -321,6 +352,7 @@ void sar(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1);
void shl(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1);
void shr(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1);
void sub(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1);
+void test(codeblock_t* cb, x86opnd_t rm_opnd, x86opnd_t imm_opnd);
void ud2(codeblock_t* cb);
void xor(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1);