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