Class: SyntaxTree::YARV::Legacy::OptSetInlineCache

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(cache) ⇒ OptSetInlineCache



149
150
151
# File 'lib/syntax_tree/yarv/legacy.rb', line 149

def initialize(cache)
  @cache = cache
end

Instance Attribute Details

#cacheObject (readonly)

Returns the value of attribute cache.



147
148
149
# File 'lib/syntax_tree/yarv/legacy.rb', line 147

def cache
  @cache
end

Instance Method Details

#==(other) ⇒ Object



165
166
167
# File 'lib/syntax_tree/yarv/legacy.rb', line 165

def ==(other)
  other.is_a?(OptSetInlineCache) && other.cache == cache
end

#call(vm) ⇒ Object



185
186
# File 'lib/syntax_tree/yarv/legacy.rb', line 185

def call(vm)
end

#canonicalObject



181
182
183
# File 'lib/syntax_tree/yarv/legacy.rb', line 181

def canonical
  self
end

#deconstruct_keys(_keys) ⇒ Object



161
162
163
# File 'lib/syntax_tree/yarv/legacy.rb', line 161

def deconstruct_keys(_keys)
  { cache: cache }
end

#disasm(fmt) ⇒ Object



153
154
155
# File 'lib/syntax_tree/yarv/legacy.rb', line 153

def disasm(fmt)
  fmt.instruction("opt_setinlinecache", [fmt.inline_storage(cache)])
end

#lengthObject



169
170
171
# File 'lib/syntax_tree/yarv/legacy.rb', line 169

def length
  2
end

#popsObject



173
174
175
# File 'lib/syntax_tree/yarv/legacy.rb', line 173

def pops
  1
end

#pushesObject



177
178
179
# File 'lib/syntax_tree/yarv/legacy.rb', line 177

def pushes
  1
end

#to_a(_iseq) ⇒ Object



157
158
159
# File 'lib/syntax_tree/yarv/legacy.rb', line 157

def to_a(_iseq)
  [:opt_setinlinecache, cache]
end