summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-12-10 23:39:21 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2023-03-05 22:11:20 -0800
commit3c093fe391914dcfc10c69971164a66cb71c6bd3 (patch)
tree28dfc477129955c1819d3ee7fad4e7804cd8a626
parentc263ce9c80a2acdd64270cf5d246c19c58947d18 (diff)
downloadruby-3c093fe391914dcfc10c69971164a66cb71c6bd3.tar.gz
Move important functions
-rw-r--r--mjit.c66
1 files changed, 32 insertions, 34 deletions
diff --git a/mjit.c b/mjit.c
index 06ace7555f..6e8bbd8852 100644
--- a/mjit.c
+++ b/mjit.c
@@ -325,34 +325,6 @@ const struct ruby_opt_message mjit_option_messages[] = {
};
#undef M
-// Initialize MJIT. Start a thread creating the precompiled header and
-// processing ISeqs. The function should be called first for using MJIT.
-// If everything is successful, MJIT_INIT_P will be TRUE.
-void
-mjit_init(const struct mjit_options *opts)
-{
- VM_ASSERT(mjit_enabled);
- mjit_opts = *opts;
-
- // MJIT doesn't support miniruby, but it might reach here by MJIT_FORCE_ENABLE.
- rb_mMJIT = rb_const_get(rb_cRubyVM, rb_intern("MJIT"));
- if (!rb_const_defined(rb_mMJIT, rb_intern("Compiler"))) {
- verbose(1, "Disabling MJIT because RubyVM::MJIT::Compiler is not defined");
- mjit_enabled = false;
- return;
- }
- rb_mMJITC = rb_const_get(rb_mMJIT, rb_intern("C"));
- rb_cMJITCompiler = rb_funcall(rb_const_get(rb_mMJIT, rb_intern("Compiler")), rb_intern("new"), 0);
- rb_cMJITIseqPtr = rb_funcall(rb_mMJITC, rb_intern("rb_iseq_t"), 0);
- rb_cMJITICPtr = rb_funcall(rb_mMJITC, rb_intern("IC"), 0);
- rb_funcall(rb_cMJITICPtr, rb_intern("new"), 1, SIZET2NUM(0)); // Trigger no-op constant events before enabling hooks
- rb_mMJITHooks = rb_const_get(rb_mMJIT, rb_intern("Hooks"));
-
- mjit_call_p = true;
-
- // TODO: implement
-}
-
VALUE
mjit_pause(bool wait_p)
{
@@ -373,12 +345,6 @@ mjit_child_after_fork(void)
// TODO: remove this
}
-void
-mjit_finish(bool close_handle_p)
-{
- // TODO: implement
-}
-
// Called by rb_vm_mark()
void
mjit_mark(void)
@@ -400,6 +366,38 @@ mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id)
return false;
}
+//
+// New stuff from here
+//
+
+void
+mjit_init(const struct mjit_options *opts)
+{
+ VM_ASSERT(mjit_enabled);
+ mjit_opts = *opts;
+
+ // MJIT doesn't support miniruby, but it might reach here by MJIT_FORCE_ENABLE.
+ rb_mMJIT = rb_const_get(rb_cRubyVM, rb_intern("MJIT"));
+ if (!rb_const_defined(rb_mMJIT, rb_intern("Compiler"))) {
+ verbose(1, "Disabling MJIT because RubyVM::MJIT::Compiler is not defined");
+ mjit_enabled = false;
+ return;
+ }
+ rb_mMJITC = rb_const_get(rb_mMJIT, rb_intern("C"));
+ rb_cMJITCompiler = rb_funcall(rb_const_get(rb_mMJIT, rb_intern("Compiler")), rb_intern("new"), 0);
+ rb_cMJITIseqPtr = rb_funcall(rb_mMJITC, rb_intern("rb_iseq_t"), 0);
+
+ mjit_call_p = true;
+
+ // TODO: implement
+}
+
+void
+mjit_finish(bool close_handle_p)
+{
+ // TODO: implement
+}
+
#include "mjit.rbinc"
#endif // USE_MJIT