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

Inherits:
Instruction
  • 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

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

#cacheObject (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

#lengthObject



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

def length
  2
end

#popsObject



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

def pops
  1
end

#pushesObject



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