Class: SyntaxTree::YARV::Legacy::GetClassVariable
Overview
### Summary
getclassvariable looks for a class variable in the current class and pushes its value onto the stack.
This version of the getclassvariable instruction is no longer used since in Ruby 3.0 it gained an inline cache.‘
### Usage
~~~ruby @@class_variable ~~~
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Instruction
#branch_targets, #falls_through?, #leaves?, #pops, #side_effects?
Constructor Details
25
26
27
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 25
def initialize(name)
@name = name
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
23
24
25
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 23
def name
@name
end
|
Instance Method Details
#==(other) ⇒ Object
41
42
43
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 41
def ==(other)
other.is_a?(GetClassVariable) && other.name == name
end
|
#call(vm) ⇒ Object
57
58
59
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 57
def call(vm)
canonical.call(vm)
end
|
#deconstruct_keys(_keys) ⇒ Object
37
38
39
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 37
def deconstruct_keys(_keys)
{ name: name }
end
|
#disasm(fmt) ⇒ Object
29
30
31
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 29
def disasm(fmt)
fmt.instruction("getclassvariable", [fmt.object(name)])
end
|
#length ⇒ Object
45
46
47
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 45
def length
2
end
|
#pushes ⇒ Object
49
50
51
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 49
def pushes
1
end
|
#to_a(_iseq) ⇒ Object
33
34
35
|
# File 'lib/syntax_tree/yarv/legacy.rb', line 33
def to_a(_iseq)
[:getclassvariable, name]
end
|