Method: Voodoo::ARMGasGenerator#end_block
- Defined in:
- lib/voodoo/generators/arm_gas_generator.rb
#end_block ⇒ Object
Ends the current block.
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 |
# File 'lib/voodoo/generators/arm_gas_generator.rb', line 439 def end_block # If we are returning to top level, restore stack pointer # and saved registers. if @environment.parent == @top_level offset = @frame_size - @saved_size if offset > 0 emit "add sp, sp, \##{offset}\n" end emit "ldmfd sp!, {#{@saved_registers.join ', '}}\n" @frame_size = 0 @frame_offset = 0 @saved_registers = [] @saved_size = 0 # If we need to emit constants, do so now unless @constants.empty? emit_constants_with_goto end end # Restore old value of @environment @environment = @environment.parent end |