summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-03-10 11:55:48 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2023-03-10 13:04:45 -0800
commitc364e0745dae0371c542bff770038b210832700e (patch)
tree26b6427f924520ba1debc8a81d53e36421582efa /lib
parent9bb43978759ca86ba09d9ca6cf24506621f5bcbe (diff)
RJIT: Introduce --rjit-exec-mem-size
Diffstat (limited to 'lib')
-rw-r--r--lib/ruby_vm/rjit/code_block.rb4
-rw-r--r--lib/ruby_vm/rjit/compiler.rb7
2 files changed, 6 insertions, 5 deletions
diff --git a/lib/ruby_vm/rjit/code_block.rb b/lib/ruby_vm/rjit/code_block.rb
index 20f16fefd1..33b96334b6 100644
--- a/lib/ruby_vm/rjit/code_block.rb
+++ b/lib/ruby_vm/rjit/code_block.rb
@@ -18,9 +18,9 @@ module RubyVM::RJIT
start_addr = write_addr
# Write machine code
- C.rjit_mark_writable
+ C.mprotect_write(@mem_block, @mem_size)
@write_pos += asm.assemble(start_addr)
- C.rjit_mark_executable
+ C.mprotect_exec(@mem_block, @mem_size)
end_addr = write_addr
diff --git a/lib/ruby_vm/rjit/compiler.rb b/lib/ruby_vm/rjit/compiler.rb
index 697e7f62d6..3f4b192a3e 100644
--- a/lib/ruby_vm/rjit/compiler.rb
+++ b/lib/ruby_vm/rjit/compiler.rb
@@ -39,9 +39,10 @@ module RubyVM::RJIT
INSNS.fetch(C.rb_vm_insn_decode(encoded))
end
- # @param mem_block [Integer] JIT buffer address
- # @param mem_size [Integer] JIT buffer size
- def initialize(mem_block, mem_size)
+ # @param mem_size [Integer] JIT buffer size
+ def initialize
+ mem_size = C.rjit_opts.exec_mem_size * 1024 * 1024
+ mem_block = C.mmap(mem_size)
@cb = CodeBlock.new(mem_block: mem_block, mem_size: mem_size / 2)
@ocb = CodeBlock.new(mem_block: mem_block + mem_size / 2, mem_size: mem_size / 2, outlined: true)
@exit_compiler = ExitCompiler.new