src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8026328 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/cppInterpreter_sparc.cpp

Print this page




 348       // or compiled so just be safe use G1 and O0/O1
 349 
 350       // Shift bits into high (msb) of G1
 351       __ sllx(Otos_l1->after_save(), 32, G1);
 352       // Zero extend low bits
 353       __ srl (Otos_l2->after_save(), 0, Otos_l2->after_save());
 354       __ or3 (Otos_l2->after_save(), G1, G1);
 355 #endif /* COMPILER2 */
 356       break;
 357     case T_OBJECT :
 358       __ ld_ptr(O0, 0, O0->after_save());
 359       __ verify_oop(O0->after_save());                                               // verify it
 360       break;
 361     default       : ShouldNotReachHere();
 362   }
 363   __ retl();
 364   __ delayed()->nop();
 365   return entry;
 366 }
 367 
 368 address CppInterpreter::return_entry(TosState state, int length) {
 369   // make it look good in the debugger
 370   return CAST_FROM_FN_PTR(address, RecursiveInterpreterActivation) + frame::pc_return_offset;
 371 }
 372 
 373 address CppInterpreter::deopt_entry(TosState state, int length) {
 374   address ret = NULL;
 375   if (length != 0) {
 376     switch (state) {
 377       case atos: ret = deopt_frame_manager_return_atos; break;
 378       case btos: ret = deopt_frame_manager_return_btos; break;
 379       case ctos:
 380       case stos:
 381       case itos: ret = deopt_frame_manager_return_itos; break;
 382       case ltos: ret = deopt_frame_manager_return_ltos; break;
 383       case ftos: ret = deopt_frame_manager_return_ftos; break;
 384       case dtos: ret = deopt_frame_manager_return_dtos; break;
 385       case vtos: ret = deopt_frame_manager_return_vtos; break;
 386     }
 387   } else {
 388     ret = unctrap_frame_manager_entry;  // re-execute the bytecode ( e.g. uncommon trap)




 348       // or compiled so just be safe use G1 and O0/O1
 349 
 350       // Shift bits into high (msb) of G1
 351       __ sllx(Otos_l1->after_save(), 32, G1);
 352       // Zero extend low bits
 353       __ srl (Otos_l2->after_save(), 0, Otos_l2->after_save());
 354       __ or3 (Otos_l2->after_save(), G1, G1);
 355 #endif /* COMPILER2 */
 356       break;
 357     case T_OBJECT :
 358       __ ld_ptr(O0, 0, O0->after_save());
 359       __ verify_oop(O0->after_save());                                               // verify it
 360       break;
 361     default       : ShouldNotReachHere();
 362   }
 363   __ retl();
 364   __ delayed()->nop();
 365   return entry;
 366 }
 367 
 368 address CppInterpreter::return_entry(TosState state, int length, Bytecodes::Code code) {
 369   // make it look good in the debugger
 370   return CAST_FROM_FN_PTR(address, RecursiveInterpreterActivation) + frame::pc_return_offset;
 371 }
 372 
 373 address CppInterpreter::deopt_entry(TosState state, int length) {
 374   address ret = NULL;
 375   if (length != 0) {
 376     switch (state) {
 377       case atos: ret = deopt_frame_manager_return_atos; break;
 378       case btos: ret = deopt_frame_manager_return_btos; break;
 379       case ctos:
 380       case stos:
 381       case itos: ret = deopt_frame_manager_return_itos; break;
 382       case ltos: ret = deopt_frame_manager_return_ltos; break;
 383       case ftos: ret = deopt_frame_manager_return_ftos; break;
 384       case dtos: ret = deopt_frame_manager_return_dtos; break;
 385       case vtos: ret = deopt_frame_manager_return_vtos; break;
 386     }
 387   } else {
 388     ret = unctrap_frame_manager_entry;  // re-execute the bytecode ( e.g. uncommon trap)


src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File