class SyntaxTree::YARV::OptMod
### Summary
‘opt_mod` is a specialization of the `opt_send_without_block` instruction that occurs when the `%` operator is used. There are fast paths for if both operands are integers or if both operands are floats. It pops both the receiver and the argument off the stack and pushes on the result.
### Usage
~~~ruby 4 % 2 ~~~
Attributes
calldata[R]
Public Class Methods
new(calldata)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3660 def initialize(calldata) @calldata = calldata end
Public Instance Methods
==(other)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3676 def ==(other) other.is_a?(OptMod) && other.calldata == calldata end
call(vm)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3696 def call(vm) canonical.call(vm) end
canonical()
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3692 def canonical Send.new(calldata, nil) end
deconstruct_keys(_keys)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3672 def deconstruct_keys(_keys) { calldata: calldata } end
disasm(fmt)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3664 def disasm(fmt) fmt.instruction("opt_mod", [fmt.calldata(calldata)]) end
length()
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3680 def length 2 end
pops()
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3684 def pops 2 end
pushes()
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3688 def pushes 1 end
to_a(_iseq)
click to toggle source
# File lib/syntax_tree/yarv/instructions.rb, line 3668 def to_a(_iseq) [:opt_mod, calldata.to_h] end