class SystemNavigation::InstructionStream
Attributes
method[R]
Public Class Methods
new(method: nil, iseq: nil)
click to toggle source
# File lib/system_navigation/instruction_stream.rb, line 9 def initialize(method: nil, iseq: nil) @method = method @iseq = iseq end
on(method)
click to toggle source
# File lib/system_navigation/instruction_stream.rb, line 3 def self.on(method) self.new(method: method) end
Public Instance Methods
decode()
click to toggle source
# File lib/system_navigation/instruction_stream.rb, line 14 def decode @iseq ||= RubyVM::InstructionSequence.disasm(@method) || '' end
iseqs(sym)
click to toggle source
# File lib/system_navigation/instruction_stream.rb, line 22 def iseqs(sym) iseqs = @iseq.split("\n") if iseqs.any? instructions = iseqs.map { |instruction| Instruction.parse(instruction) } instructions.compact.select(&:vm_operative?) else Instruction::AttrInstruction.parse(@method, sym) || [] end end
scan_for(selected_instructs)
click to toggle source
# File lib/system_navigation/instruction_stream.rb, line 18 def scan_for(selected_instructs) selected_instructs.any? end