Module: YTLJit::VM

Defined in:
lib/ytljit/vm.rb,
lib/ytljit/vm_trans.rb,
lib/ytljit/vm_codegen.rb,
lib/ytljit/vm_inspect.rb,
lib/ytljit/vm_typeinf.rb,
lib/ytljit/vm_sendnode.rb,
lib/ytljit/vm_type_gen.rb,
lib/ytljit/vm_cruby_obj.rb,
lib/ytljit/vm_inline_method.rb

Overview

Stack layout (on stack frame)

Hi | |Argn | |

    |  |   :                   |   |
    |  |Arg2(self)             |   |
    |  |Arg1(block pointer)    |   |
    |  |Arg0(parent frame)     |  -+
    |  |Return Address         |
    +- |old bp                 | <-+
       |old bp on stack        |  -+
 EBP-> |Local Vars1            |   
       |                       |   
       |                       |   
       |Local Varsn            |   
       |Pointer to Env         |   
SP ->  |                       |
       |                       |

LO

Stack layout (on heap frame)

                                    |

Hi | |Arg0(parent frame) | -+

    |  |Arg1(block pointer)    |  
    |  |Arg2(self)             |
    |  |   :                   |
    |  |Arg n                  |
    |  |Return Address         |
    +- |old bp                 |  <---+
       |Pointer to Env         |  -+  |
SP ->  |                       |   |  |

LO | | | |

                                    |  |
                                    |  |
     +- |                       |   |  |
     |  |free func              |   |  |
     |  |mark func              |   |  |
     |  |T_DATA                 | <-+  |                                      
     |                                 |
     |                                 |
     |  |Arg n                  |      |
     |  |   :                   |      |
     |  |Arg3(exception status) |      |
     |  |Arg2(block pointer)    |      |
     |  |Arg1(parent frame)     |      |
     |  |Arg0(self)             |      |   
     |  |Not used(reserved)     |      |
     |  |Not used(reserved)     |      |
     |  |old bp on stack        | -----+
  EBP-> |Local Vars1            |   
     |  |                       |   
     |  |                       |   
     +->|Local Varsn            |   

enter procedure
  push EBP
  SP -> EBP
  allocate frame (stack or heap)    
  Copy arguments if allocate frame on heap
  store EBP on the top of frame
  Address of top of frame -> EBP

leave procedure
  Dereference of EBP -> ESP
  pop EBP
  ret

Defined Under Namespace

Modules: ArithmeticOperationUtil, CompareOperationUtil, Node, SendNodeCodeGen, TypeCodeGen, YARVTranslatorCRubyObjectMixin, YARVTranslatorSimpleMixin, YARVTranslatorTypeInferenceMixin Classes: CollectInfoContext, CompileContext, TypeInferenceContext, YARVContext, YARVTranslatorBase, YARVTranslatorCRubyObject, YARVTranslatorSimple, YARVTranslatorTypeInference