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