Class: SyntaxTree::YARV::ObjToString
Overview
Summary
objtostring pops a value from the stack, calls to_s on that value and
then pushes the result back to the stack.
It has various fast paths for classes like String, Symbol, Module, Class,
etc. For everything else it calls to_s.
Usage
"#{5}"
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Instruction
#branch_targets, #canonical, #falls_through?, #leaves?, #side_effects?
Constructor Details
#initialize(calldata) ⇒ ObjToString
Returns a new instance of ObjToString.
2565
2566
2567
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2565
def initialize(calldata)
@calldata = calldata
end
|
Instance Attribute Details
#calldata ⇒ Object
Returns the value of attribute calldata.
2563
2564
2565
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2563
def calldata
@calldata
end
|
Instance Method Details
#==(other) ⇒ Object
2581
2582
2583
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2581
def ==(other)
other.is_a?(ObjToString) && other.calldata == calldata
end
|
#call(vm) ⇒ Object
2597
2598
2599
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2597
def call(vm)
vm.push(vm.pop.to_s)
end
|
#deconstruct_keys(_keys) ⇒ Object
2577
2578
2579
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2577
def deconstruct_keys(_keys)
{ calldata: calldata }
end
|
#disasm(fmt) ⇒ Object
2569
2570
2571
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2569
def disasm(fmt)
fmt.instruction("objtostring", [fmt.calldata(calldata)])
end
|
#length ⇒ Object
2585
2586
2587
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2585
def length
2
end
|
#pops ⇒ Object
2589
2590
2591
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2589
def pops
1
end
|
#pushes ⇒ Object
2593
2594
2595
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2593
def pushes
1
end
|
#to_a(_iseq) ⇒ Object
2573
2574
2575
|
# File 'lib/syntax_tree/yarv/instructions.rb', line 2573
def to_a(_iseq)
[:objtostring, calldata.to_h]
end
|