Class: SyntaxTree::YARV::Legacy::OptSetInlineCache
- Inherits:
-
Instruction
- Object
- Instruction
- SyntaxTree::YARV::Legacy::OptSetInlineCache
- Defined in:
- lib/syntax_tree/yarv/legacy.rb
Overview
### Summary
‘opt_setinlinecache` sets an inline cache for a constant lookup. It pops the value it should set off the top of the stack. It uses this value to set the cache. It then pushes that value back onto the top of the stack.
This instruction is no longer used since in Ruby 3.2 it was replaced by the consolidated ‘opt_getconstant_path` instruction.
### Usage
~~~ruby Constant ~~~
Instance Attribute Summary collapse
-
#cache ⇒ Object
readonly
Returns the value of attribute cache.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #call(vm) ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
- #disasm(fmt) ⇒ Object
-
#initialize(cache) ⇒ OptSetInlineCache
constructor
A new instance of OptSetInlineCache.
- #length ⇒ Object
- #pops ⇒ Object
- #pushes ⇒ Object
- #to_a(_iseq) ⇒ Object
Methods inherited from Instruction
#branch_targets, #canonical, #falls_through?, #leaves?, #side_effects?
Constructor Details
#initialize(cache) ⇒ OptSetInlineCache
Returns a new instance of OptSetInlineCache.
249 250 251 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 249 def initialize(cache) @cache = cache end |
Instance Attribute Details
#cache ⇒ Object (readonly)
Returns the value of attribute cache.
247 248 249 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 247 def cache @cache end |
Instance Method Details
#==(other) ⇒ Object
265 266 267 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 265 def ==(other) other.is_a?(OptSetInlineCache) && other.cache == cache end |
#call(vm) ⇒ Object
281 282 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 281 def call(vm) end |
#deconstruct_keys(_keys) ⇒ Object
261 262 263 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 261 def deconstruct_keys(_keys) { cache: cache } end |
#disasm(fmt) ⇒ Object
253 254 255 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 253 def disasm(fmt) fmt.instruction("opt_setinlinecache", [fmt.inline_storage(cache)]) end |
#length ⇒ Object
269 270 271 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 269 def length 2 end |
#pops ⇒ Object
273 274 275 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 273 def pops 1 end |
#pushes ⇒ Object
277 278 279 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 277 def pushes 1 end |
#to_a(_iseq) ⇒ Object
257 258 259 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 257 def to_a(_iseq) [:opt_setinlinecache, cache] end |