class SyntaxTree::YARV::Legacy::OptGetInlineCache
### Summary
‘opt_getinlinecache` is a wrapper around a series of `putobject` and `getconstant` instructions that allows skipping past them if the inline cache is currently set. It pushes the value of the cache onto the stack if it is set, otherwise it pushes `nil`.
This instruction is no longer used since in Ruby 3.2 it was replaced by the consolidated ‘opt_getconstant_path` instruction.
### Usage
~~~ruby Constant ~~~
Attributes
cache[R]
label[R]
Public Class Methods
new(label, cache)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 81 def initialize(label, cache) @label = label @cache = cache end
Public Instance Methods
==(other)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 101 def ==(other) other.is_a?(OptGetInlineCache) && other.label == label && other.cache == cache end
branch_targets()
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 118 def branch_targets [label] end
call(vm)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 114 def call(vm) vm.push(nil) end
deconstruct_keys(_keys)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 97 def deconstruct_keys(_keys) { label: label, cache: cache } end
disasm(fmt)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 86 def disasm(fmt) fmt.instruction( "opt_getinlinecache", [fmt.label(label), fmt.inline_storage(cache)] ) end
falls_through?()
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 122 def falls_through? true end
length()
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 106 def length 3 end
pushes()
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 110 def pushes 1 end
to_a(_iseq)
click to toggle source
# File lib/syntax_tree/yarv/legacy.rb, line 93 def to_a(_iseq) [:opt_getinlinecache, label.name, cache] end