summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2020-09-10 17:20:46 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:23 -0400
commit1c8fb90f6bde0c630f5dc532dfe198218bc9f910 (patch)
treeb6e0cbb41043040d397b7eca230c7a100fb9cd88 /compile.c
parent566d4abee5e8e59ce6e080f28a25b7c3431c5b3b (diff)
Add new files, ujit_compile.c, ujit_compile.h
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/compile.c b/compile.c
index a1983eaecb..dd19fe2736 100644
--- a/compile.c
+++ b/compile.c
@@ -43,6 +43,7 @@
#include "builtin.h"
#include "insns.inc"
#include "insns_info.inc"
+#include "ujit_compile.h"
#undef RUBY_UNTYPED_DATA_WARNING
#define RUBY_UNTYPED_DATA_WARNING 0
@@ -856,8 +857,6 @@ rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
return iseq_setup(iseq, ret);
}
-extern uint8_t *native_pop_code; // TODO global hack
-
static int
rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
{
@@ -870,17 +869,17 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
{
int insn = (int)iseq->body->iseq_encoded[i];
int len = insn_len(insn);
- encoded[i] = (VALUE)table[insn];
-
- if (insn == BIN(pop))
- encoded[i] = (VALUE)native_pop_code;
- const char* name = insn_name(insn);
- printf("%s\n", name);
+ uint8_t* native_code_ptr = ujit_compile_insn(iseq, i);
+ if (native_code_ptr)
+ encoded[i] = (VALUE)native_code_ptr;
+ else
+ encoded[i] = (VALUE)table[insn];
i += len;
}
+
FL_SET((VALUE)iseq, ISEQ_TRANSLATED);
#endif
return COMPILE_OK;