Class: SyntaxTree::YARV::Legacy::GetClassVariable
- Inherits:
-
Instruction
- Object
- Instruction
- SyntaxTree::YARV::Legacy::GetClassVariable
- Defined in:
- lib/syntax_tree/yarv/legacy.rb
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
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #call(vm) ⇒ Object
- #canonical ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
- #disasm(fmt) ⇒ Object
-
#initialize(name) ⇒ GetClassVariable
constructor
A new instance of GetClassVariable.
- #length ⇒ Object
- #pushes ⇒ Object
- #to_a(_iseq) ⇒ Object
Methods inherited from Instruction
#branch_targets, #falls_through?, #leaves?, #pops, #side_effects?
Constructor Details
#initialize(name) ⇒ GetClassVariable
Returns a new instance of GetClassVariable.
25 26 27 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 25 def initialize(name) @name = name end |
Instance Attribute Details
#name ⇒ Object (readonly)
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 |
#canonical ⇒ Object
53 54 55 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 53 def canonical YARV::GetClassVariable.new(name, nil) 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 |