Class: SyntaxTree::YARV::Legacy::OptGetInlineCache
- Inherits:
-
Object
- Object
- SyntaxTree::YARV::Legacy::OptGetInlineCache
- Defined in:
- lib/syntax_tree/yarv/legacy.rb
Overview
### 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 ~~~
Instance Attribute Summary collapse
-
#cache ⇒ Object
readonly
Returns the value of attribute cache.
-
#label ⇒ Object
readonly
Returns the value of attribute label.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #call(vm) ⇒ Object
- #canonical ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
- #disasm(fmt) ⇒ Object
-
#initialize(label, cache) ⇒ OptGetInlineCache
constructor
A new instance of OptGetInlineCache.
- #length ⇒ Object
- #pops ⇒ Object
- #pushes ⇒ Object
- #to_a(_iseq) ⇒ Object
Constructor Details
#initialize(label, cache) ⇒ OptGetInlineCache
85 86 87 88 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 85 def initialize(label, cache) @label = label @cache = cache end |
Instance Attribute Details
#cache ⇒ Object (readonly)
Returns the value of attribute cache.
83 84 85 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 83 def cache @cache end |
#label ⇒ Object (readonly)
Returns the value of attribute label.
83 84 85 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 83 def label @label end |
Instance Method Details
#==(other) ⇒ Object
105 106 107 108 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 105 def ==(other) other.is_a?(OptGetInlineCache) && other.label == label && other.cache == cache end |
#call(vm) ⇒ Object
126 127 128 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 126 def call(vm) vm.push(nil) end |
#canonical ⇒ Object
122 123 124 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 122 def canonical self end |
#deconstruct_keys(_keys) ⇒ Object
101 102 103 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 101 def deconstruct_keys(_keys) { label: label, cache: cache } end |
#disasm(fmt) ⇒ Object
90 91 92 93 94 95 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 90 def disasm(fmt) fmt.instruction( "opt_getinlinecache", [fmt.label(label), fmt.inline_storage(cache)] ) end |
#length ⇒ Object
110 111 112 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 110 def length 3 end |
#pops ⇒ Object
114 115 116 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 114 def pops 0 end |
#pushes ⇒ Object
118 119 120 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 118 def pushes 1 end |
#to_a(_iseq) ⇒ Object
97 98 99 |
# File 'lib/syntax_tree/yarv/legacy.rb', line 97 def to_a(_iseq) [:opt_getinlinecache, label.name, cache] end |