Print this page


Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
          +++ new/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
↓ open down ↓ 1601 lines elided ↑ open up ↑
1602 1602        assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable");
1603 1603      assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)");
1604 1604  #endif
1605 1605  
1606 1606      interpreter_frame->interpreter_frame_set_method(method);
1607 1607      // NOTE the difference in using sender_sp and interpreter_frame_sender_sp
1608 1608      // interpreter_frame_sender_sp is the original sp of the caller (the unextended_sp)
1609 1609      // and sender_sp is fp+8
1610 1610      intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1;
1611 1611  
     1612 +#ifdef ASSERT
     1613 +    if (caller->is_interpreted_frame()) {
     1614 +      assert(locals < caller->fp() + frame::interpreter_frame_initial_sp_offset, "bad placement");
     1615 +    }
     1616 +#endif
     1617 +
1612 1618      interpreter_frame->interpreter_frame_set_locals(locals);
1613 1619      BasicObjectLock* montop = interpreter_frame->interpreter_frame_monitor_begin();
1614 1620      BasicObjectLock* monbot = montop - moncount;
1615 1621      interpreter_frame->interpreter_frame_set_monitor_end(monbot);
1616 1622  
1617 1623      // Set last_sp
1618 1624      intptr_t*  rsp = (intptr_t*) monbot  -
1619 1625                       tempcount*Interpreter::stackElementWords -
1620 1626                       popframe_extra_args;
1621 1627      interpreter_frame->interpreter_frame_set_last_sp(rsp);
↓ open down ↓ 316 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX