1607 // NOTE the difference in using sender_sp and interpreter_frame_sender_sp |
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) |
1608 // interpreter_frame_sender_sp is the original sp of the caller (the unextended_sp) |
1609 // and sender_sp is fp+8 |
1609 // and sender_sp is fp+8 |
1610 intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1; |
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 interpreter_frame->interpreter_frame_set_locals(locals); |
1618 interpreter_frame->interpreter_frame_set_locals(locals); |
1613 BasicObjectLock* montop = interpreter_frame->interpreter_frame_monitor_begin(); |
1619 BasicObjectLock* montop = interpreter_frame->interpreter_frame_monitor_begin(); |
1614 BasicObjectLock* monbot = montop - moncount; |
1620 BasicObjectLock* monbot = montop - moncount; |
1615 interpreter_frame->interpreter_frame_set_monitor_end(monbot); |
1621 interpreter_frame->interpreter_frame_set_monitor_end(monbot); |
1616 |
1622 |