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.
145 146 147 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 145 def initialize(cache) @cache = cache end |
Instance Attribute Details
#cache ⇒ Object (readonly)
Returns the value of attribute cache.
143 144 145 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 143 def cache @cache end |
Instance Method Details
#==(other) ⇒ Object
161 162 163 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 161 def ==(other) other.is_a?(OptSetInlineCache) && other.cache == cache end |
#call(vm) ⇒ Object
177 178 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 177 def call(vm) end |
#deconstruct_keys(_keys) ⇒ Object
157 158 159 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 157 def deconstruct_keys(_keys) { cache: cache } end |
#disasm(fmt) ⇒ Object
149 150 151 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 149 def disasm(fmt) fmt.instruction("opt_setinlinecache", [fmt.inline_storage(cache)]) end |
#length ⇒ Object
165 166 167 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 165 def length 2 end |
#pops ⇒ Object
169 170 171 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 169 def pops 1 end |
#pushes ⇒ Object
173 174 175 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 173 def pushes 1 end |
#to_a(_iseq) ⇒ Object
153 154 155 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 153 def to_a(_iseq) [:opt_setinlinecache, cache] end |