278 279 // Setup the interpreter frame 280 281 assert(method() != NULL, "method must exist"); 282 int temps = expressions()->size(); 283 284 int locks = monitors() == NULL ? 0 : monitors()->number_of_monitors(); 285 286 Interpreter::layout_activation(method(), 287 temps + callee_parameters, 288 popframe_preserved_args_size_in_words, 289 locks, 290 caller_actual_parameters, 291 callee_parameters, 292 callee_locals, 293 caller, 294 iframe(), 295 is_top_frame, 296 is_bottom_frame); 297 298 // Update the pc in the frame object and overwrite the temporary pc 299 // we placed in the skeletal frame now that we finally know the 300 // exact interpreter address we should use. 301 302 _frame.patch_pc(thread, pc); 303 304 assert (!method()->is_synchronized() || locks > 0 || _removed_monitors || raw_bci() == SynchronizationEntryBCI, "synchronized methods must have monitors"); 305 306 BasicObjectLock* top = iframe()->interpreter_frame_monitor_begin(); 307 for (int index = 0; index < locks; index++) { 308 top = iframe()->previous_monitor_in_interpreter_frame(top); 309 BasicObjectLock* src = _monitors->at(index); 310 top->set_obj(src->obj()); 311 src->lock()->move_to(src->obj(), top->lock()); 312 } 313 if (ProfileInterpreter) { 314 iframe()->interpreter_frame_set_mdp(0); // clear out the mdp. 315 } 316 iframe()->interpreter_frame_set_bcp(bcp); 317 if (ProfileInterpreter) { | 278 279 // Setup the interpreter frame 280 281 assert(method() != NULL, "method must exist"); 282 int temps = expressions()->size(); 283 284 int locks = monitors() == NULL ? 0 : monitors()->number_of_monitors(); 285 286 Interpreter::layout_activation(method(), 287 temps + callee_parameters, 288 popframe_preserved_args_size_in_words, 289 locks, 290 caller_actual_parameters, 291 callee_parameters, 292 callee_locals, 293 caller, 294 iframe(), 295 is_top_frame, 296 is_bottom_frame); 297 298 iframe()->interpreter_frame_set_vt_alloc_ptr((intptr_t*)thread->vt_alloc_ptr()); 299 300 // Update the pc in the frame object and overwrite the temporary pc 301 // we placed in the skeletal frame now that we finally know the 302 // exact interpreter address we should use. 303 304 _frame.patch_pc(thread, pc); 305 306 assert (!method()->is_synchronized() || locks > 0 || _removed_monitors || raw_bci() == SynchronizationEntryBCI, "synchronized methods must have monitors"); 307 308 BasicObjectLock* top = iframe()->interpreter_frame_monitor_begin(); 309 for (int index = 0; index < locks; index++) { 310 top = iframe()->previous_monitor_in_interpreter_frame(top); 311 BasicObjectLock* src = _monitors->at(index); 312 top->set_obj(src->obj()); 313 src->lock()->move_to(src->obj(), top->lock()); 314 } 315 if (ProfileInterpreter) { 316 iframe()->interpreter_frame_set_mdp(0); // clear out the mdp. 317 } 318 iframe()->interpreter_frame_set_bcp(bcp); 319 if (ProfileInterpreter) { |