1592 int size = overhead + 1593 ((callee_locals - callee_param_count)*Interpreter::stackElementWords) + 1594 (moncount*frame::interpreter_frame_monitor_size()) + 1595 tempcount*Interpreter::stackElementWords + popframe_extra_args; 1596 1597 if (interpreter_frame != NULL) { 1598 #ifdef ASSERT 1599 if (!EnableInvokeDynamic) 1600 // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences? 1601 // Probably, since deoptimization doesn't work yet. 1602 assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable"); 1603 assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)"); 1604 #endif 1605 1606 interpreter_frame->interpreter_frame_set_method(method); 1607 // NOTE the difference in using sender_sp and interpreter_frame_sender_sp 1608 // interpreter_frame_sender_sp is the original sp of the caller (the unextended_sp) 1609 // and sender_sp is fp+8 1610 intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1; 1611 1612 interpreter_frame->interpreter_frame_set_locals(locals); 1613 BasicObjectLock* montop = interpreter_frame->interpreter_frame_monitor_begin(); 1614 BasicObjectLock* monbot = montop - moncount; 1615 interpreter_frame->interpreter_frame_set_monitor_end(monbot); 1616 1617 // Set last_sp 1618 intptr_t* rsp = (intptr_t*) monbot - 1619 tempcount*Interpreter::stackElementWords - 1620 popframe_extra_args; 1621 interpreter_frame->interpreter_frame_set_last_sp(rsp); 1622 1623 // All frames but the initial (oldest) interpreter frame we fill in have a 1624 // value for sender_sp that allows walking the stack but isn't 1625 // truly correct. Correct the value here. 1626 1627 if (extra_locals != 0 && 1628 interpreter_frame->sender_sp() == interpreter_frame->interpreter_frame_sender_sp() ) { 1629 interpreter_frame->set_interpreter_frame_sender_sp(caller->sp() + extra_locals); 1630 } 1631 *interpreter_frame->interpreter_frame_cache_addr() = | 1592 int size = overhead + 1593 ((callee_locals - callee_param_count)*Interpreter::stackElementWords) + 1594 (moncount*frame::interpreter_frame_monitor_size()) + 1595 tempcount*Interpreter::stackElementWords + popframe_extra_args; 1596 1597 if (interpreter_frame != NULL) { 1598 #ifdef ASSERT 1599 if (!EnableInvokeDynamic) 1600 // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences? 1601 // Probably, since deoptimization doesn't work yet. 1602 assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable"); 1603 assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)"); 1604 #endif 1605 1606 interpreter_frame->interpreter_frame_set_method(method); 1607 // NOTE the difference in using sender_sp and interpreter_frame_sender_sp 1608 // interpreter_frame_sender_sp is the original sp of the caller (the unextended_sp) 1609 // and sender_sp is fp+8 1610 intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1; 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 1618 interpreter_frame->interpreter_frame_set_locals(locals); 1619 BasicObjectLock* montop = interpreter_frame->interpreter_frame_monitor_begin(); 1620 BasicObjectLock* monbot = montop - moncount; 1621 interpreter_frame->interpreter_frame_set_monitor_end(monbot); 1622 1623 // Set last_sp 1624 intptr_t* rsp = (intptr_t*) monbot - 1625 tempcount*Interpreter::stackElementWords - 1626 popframe_extra_args; 1627 interpreter_frame->interpreter_frame_set_last_sp(rsp); 1628 1629 // All frames but the initial (oldest) interpreter frame we fill in have a 1630 // value for sender_sp that allows walking the stack but isn't 1631 // truly correct. Correct the value here. 1632 1633 if (extra_locals != 0 && 1634 interpreter_frame->sender_sp() == interpreter_frame->interpreter_frame_sender_sp() ) { 1635 interpreter_frame->set_interpreter_frame_sender_sp(caller->sp() + extra_locals); 1636 } 1637 *interpreter_frame->interpreter_frame_cache_addr() = |