Decode trace insns properly
This commit is contained in:
parent
b30392f8ab
commit
14acf9b0a3
@ -268,9 +268,10 @@ module RubyVM::MJIT # :nodoc: all
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
# Convert encoded VM pointers to insn BINs.
|
# Convert an encoded VM pointer to an insn BIN.
|
||||||
def rb_vm_insn_decode(encoded)
|
def rb_vm_insn_decode(encoded)
|
||||||
Primitive.cexpr! 'INT2NUM(rb_vm_insn_decode(NUM2PTR(encoded)))'
|
# Using rb_vm_insn_addr2opcode to return trace_ insns
|
||||||
|
Primitive.cexpr! 'INT2NUM(rb_vm_insn_addr2opcode((void *)NUM2PTR(encoded)))'
|
||||||
end
|
end
|
||||||
|
|
||||||
# Convert insn BINs to encoded VM pointers. This one is not used by the compiler, but useful for debugging.
|
# Convert insn BINs to encoded VM pointers. This one is not used by the compiler, but useful for debugging.
|
||||||
|
@ -16,11 +16,11 @@ module RubyVM::MJIT # :nodoc: all
|
|||||||
|
|
||||||
INSNS = {
|
INSNS = {
|
||||||
% RubyVM::Instructions.each_with_index do |insn, i|
|
% RubyVM::Instructions.each_with_index do |insn, i|
|
||||||
% next if insn.name.start_with?('trace_')
|
|
||||||
<%= i %> => Instruction.new(
|
<%= i %> => Instruction.new(
|
||||||
name: :<%= insn.name %>,
|
name: :<%= insn.name %>,
|
||||||
bin: <%= i %>, # BIN(<%= insn.name %>)
|
bin: <%= i %>, # BIN(<%= insn.name %>)
|
||||||
len: <%= insn.width %>, # insn_len
|
len: <%= insn.width %>, # insn_len
|
||||||
|
% unless insn.name.start_with?('trace_')
|
||||||
expr: <<-EXPR,
|
expr: <<-EXPR,
|
||||||
<%= insn.expr.expr.dump.sub(/\A"/, '').sub(/"\z/, '').gsub(/\\n/, "\n").gsub(/\\t/, ' ' * 8) %>
|
<%= insn.expr.expr.dump.sub(/\A"/, '').sub(/"\z/, '').gsub(/\\n/, "\n").gsub(/\\t/, ' ' * 8) %>
|
||||||
EXPR
|
EXPR
|
||||||
@ -32,6 +32,7 @@ module RubyVM::MJIT # :nodoc: all
|
|||||||
always_leaf?: <%= insn.always_leaf? %>,
|
always_leaf?: <%= insn.always_leaf? %>,
|
||||||
leaf_without_check_ints?: <%= insn.leaf_without_check_ints? %>,
|
leaf_without_check_ints?: <%= insn.leaf_without_check_ints? %>,
|
||||||
handles_sp?: <%= insn.handles_sp? %>,
|
handles_sp?: <%= insn.handles_sp? %>,
|
||||||
|
% end
|
||||||
),
|
),
|
||||||
% end
|
% end
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user