class CodeTools::AST::Super

Attributes

block[RW]
name[RW]

Public Class Methods

new(line, arguments) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 994
def initialize(line, arguments)
  @line = line
  @block = nil
  @name = nil
  @arguments = Arguments.new line, arguments
end

Public Instance Methods

block_bytecode(g) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 1001
def block_bytecode(g)
  if @block
    @block.bytecode(g)
  else
    g.push_block
  end
end
bytecode(g) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 1009
def bytecode(g)
  pos(g)

  @name = g.state.super.name if g.state.super?

  @arguments.bytecode(g)

  block_bytecode(g)

  if @arguments.splat?
    g.send_super @name, @arguments.size, true
  else
    g.send_super @name, @arguments.size
  end
end
defined(g) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 1025
def defined(g)
  nope = g.new_label
  done = g.new_label

  g.invoke_primitive :vm_check_super_callable, 0

  g.goto_if_false nope

  g.push_literal "super"
  g.string_dup
  g.goto done

  nope.set!
  g.push_tagged_nil 0

  done.set!
end
to_sexp() click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 1043
def to_sexp
  arguments_sexp :super
end