diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2023-03-10 11:55:48 -0800 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2023-03-10 13:04:45 -0800 |
commit | c364e0745dae0371c542bff770038b210832700e (patch) | |
tree | 26b6427f924520ba1debc8a81d53e36421582efa /lib | |
parent | 9bb43978759ca86ba09d9ca6cf24506621f5bcbe (diff) |
RJIT: Introduce --rjit-exec-mem-size
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ruby_vm/rjit/code_block.rb | 4 | ||||
-rw-r--r-- | lib/ruby_vm/rjit/compiler.rb | 7 |
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 |