Class: SorobanRustBackend::Instruction::Jump
- Defined in:
- lib/instruction/jump.rb
Overview
This class handles the jump instruction.
Instance Method Summary collapse
Methods inherited from Handler
#format_assign, handle, #initialize
Constructor Details
This class inherits a constructor from SorobanRustBackend::Instruction::Handler
Instance Method Details
#handle ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/instruction/jump.rb', line 5 def handle last_instruction_is_else_if = @instruction.inputs[@instruction.inputs.size - 1] == 'ELSE_IF_BRANCH' last_instruction_is_while_loop = @instruction.inputs[@instruction.inputs.size - 1] == 'WHILE_LOOP' if @instruction.inputs.size == 1 handle_unconditional_jump elsif @instruction.inputs.size == 2 last_instruction_is_else_if ? handle_unconditional_jump : handle_conditional_jump elsif @instruction.inputs.size == 3 && last_instruction_is_else_if handle_conditional_else_if_jump elsif @instruction.inputs.size == 4 && last_instruction_is_while_loop handle_while_loop else raise "Invalid jump instruction. Received too many inputs: #{@instruction.inputs.size}" end end |