Sha256: 13c713ae39d989ef22a08e14f380085e7bba06e9ad24dfe63d0010fded516d24

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# -*- coding: utf-8 -*-
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
require_relative '../../base/subsubcmd'
require_relative 'helper'

class Trepan::Subcommand::InfoRegistersLfp < Trepan::SubSubcommand
  unless defined?(HELP)
    Trepanning::SubSubcommand.set_name_prefix(__FILE__, self)
    HELP = <<EOH
#{CMD} NUMBER

Show the value of the VM local frame pointer (LFP).
When a local variable is defined for the first time, this stack
is pushed and the value for local variable is assigned to this stack entry.

See also "info register sp".'
EOH

    MIN_ABBREV   = 'lf'.size
    MIN_ARGS     = 1
    MAX_ARGS     = 1
    NEED_STACK   = true
    SHORT_HELP   = "Show the value of the VM local frame pointer (LFP)."
  end

  include Registers
  def run(args)
    frame = @proc.frame
    if 'CFUNC' == frame.type
      msg "local_name not available for C function"
    else
      iseq = frame.iseq
      index = register_array_index(PREFIX[-1], args[0], iseq.local_size-1)
      msg("local_name(%d)=%s" % [index, iseq.local_name(index)]) if index
    end
  end
end

if __FILE__ == $0
  # Demo it.
  require_relative '../../../mock'
  require_relative '../registers'
  cmd = MockDebugger::subsub_setup(Trepan::SubSubcommand::InfoRegisters,
                                   Trepan::SubSubcommand::InfoRegistersLfp,
                                   false)
  cmd.run([])
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
trepanning-0.1.6 processor/command/info_subcmd/registers_subcmd/lfp.rb
trepanning-0.1.4 processor/command/info_subcmd/registers_subcmd/lfp.rb
trepanning-0.1.3 processor/command/info_subcmd/registers_subcmd/lfp.rb