diff options
Diffstat (limited to 'lib/ruby_vm/mjit/assembler.rb')
-rw-r--r-- | lib/ruby_vm/mjit/assembler.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/ruby_vm/mjit/assembler.rb b/lib/ruby_vm/mjit/assembler.rb index f8543c4a66..e50cbdf600 100644 --- a/lib/ruby_vm/mjit/assembler.rb +++ b/lib/ruby_vm/mjit/assembler.rb @@ -36,6 +36,7 @@ module RubyVM::MJIT @blocks = Hash.new { |h, k| h[k] = [] } @stub_starts = Hash.new { |h, k| h[k] = [] } @stub_ends = Hash.new { |h, k| h[k] = [] } + @pos_markers = Hash.new { |h, k| h[k] = [] } end def assemble(addr) @@ -45,6 +46,9 @@ module RubyVM::MJIT write_bytes(addr) + @pos_markers.each do |write_pos, markers| + markers.each { |marker| marker.call(addr + write_pos) } + end @bytes.size ensure @bytes.clear @@ -617,6 +621,10 @@ module RubyVM::MJIT @stub_ends[@bytes.size] << stub end + def pos_marker(&block) + @pos_markers[@bytes.size] << block + end + def new_label(name) Label.new(id: @label_id += 1, name:) end |