summaryrefslogtreecommitdiff
path: root/rjit.rb
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-03-06 22:35:38 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2023-03-06 23:44:01 -0800
commiteaccdc1941304d6273397b21c25213174d892185 (patch)
tree93a2ab9455ccf56c55cd01370007703d75b80627 /rjit.rb
parent854546fcc468fc6a49588bdbf6df77aa185493a1 (diff)
downloadruby-eaccdc1941304d6273397b21c25213174d892185.tar.gz
Rename MJIT filenames to RJIT
Diffstat (limited to 'rjit.rb')
-rw-r--r--rjit.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/rjit.rb b/rjit.rb
new file mode 100644
index 0000000000..f9679e9164
--- /dev/null
+++ b/rjit.rb
@@ -0,0 +1,37 @@
+module RubyVM::MJIT
+ # Return true if MJIT is enabled.
+ def self.enabled?
+ Primitive.cexpr! 'RBOOL(mjit_enabled)'
+ end
+
+ # Stop generating JITed code.
+ def self.pause(wait: true)
+ Primitive.cexpr! 'mjit_pause(RTEST(wait))'
+ end
+
+ # Start generating JITed code again after pause.
+ def self.resume
+ Primitive.cexpr! 'mjit_resume()'
+ end
+
+ if Primitive.mjit_stats_enabled_p
+ at_exit do
+ Primitive.mjit_stop_stats
+ print_stats
+ end
+ end
+end
+
+if RubyVM::MJIT.enabled?
+ begin
+ require 'fiddle'
+ require 'fiddle/import'
+ rescue LoadError
+ return # miniruby doesn't support MJIT
+ end
+
+ require 'ruby_vm/mjit/c_type'
+ require 'ruby_vm/mjit/compiler'
+ require 'ruby_vm/mjit/hooks'
+ require 'ruby_vm/mjit/stats'
+end