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