Class: SyntaxTree::YARV::Legacy::SetClassVariable
- Inherits:
-
Object
- Object
- SyntaxTree::YARV::Legacy::SetClassVariable
- Defined in:
- lib/syntax_tree/yarv/legacy.rb
Overview
### Summary
setclassvariable looks for a class variable in the current class and sets its value to the value it pops off the top of the stack.
This version of the setclassvariable instruction is no longer used since in Ruby 3.0 it gained an inline cache.
### Usage
~~~ruby @@class_variable = 1 ~~~
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) ⇒ SetClassVariable
constructor
A new instance of SetClassVariable.
- #length ⇒ Object
- #pops ⇒ Object
- #pushes ⇒ Object
- #to_a(_iseq) ⇒ Object
Constructor Details
#initialize(name) ⇒ SetClassVariable
Returns a new instance of SetClassVariable.
206 207 208 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 206 def initialize(name) @name = name end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
204 205 206 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 204 def name @name end |
Instance Method Details
#==(other) ⇒ Object
222 223 224 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 222 def ==(other) other.is_a?(SetClassVariable) && other.name == name end |
#call(vm) ⇒ Object
242 243 244 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 242 def call(vm) canonical.call(vm) end |
#canonical ⇒ Object
238 239 240 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 238 def canonical YARV::SetClassVariable.new(name, nil) end |
#deconstruct_keys(_keys) ⇒ Object
218 219 220 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 218 def deconstruct_keys(_keys) { name: name } end |
#disasm(fmt) ⇒ Object
210 211 212 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 210 def disasm(fmt) fmt.instruction("setclassvariable", [fmt.object(name)]) end |
#length ⇒ Object
226 227 228 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 226 def length 2 end |
#pops ⇒ Object
230 231 232 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 230 def pops 1 end |
#pushes ⇒ Object
234 235 236 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 234 def pushes 0 end |
#to_a(_iseq) ⇒ Object
214 215 216 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 214 def to_a(_iseq) [:setclassvariable, name] end |