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

src/cpu/x86/vm/cppInterpreter_x86.cpp

Print this page




 350       break;
 351     case T_DOUBLE  :
 352       __ movptr(rdx, STATE(_stack));                                    // get top of stack
 353       if ( UseSSE > 1) {
 354         __ movdbl(xmm0, Address(rdx, wordSize));
 355       } else {
 356         __ fld_d(Address(rdx, wordSize));                               // push double result
 357       }
 358       break;
 359     case T_OBJECT :
 360       __ movptr(rdx, STATE(_stack));                                    // get top of stack
 361       __ movptr(rax, Address(rdx, wordSize));                           // get result word 1
 362       __ verify_oop(rax);                                               // verify it
 363       break;
 364     default       : ShouldNotReachHere();
 365   }
 366   __ ret(0);
 367   return entry;
 368 }
 369 
 370 address CppInterpreter::return_entry(TosState state, int length) {
 371   // make it look good in the debugger
 372   return CAST_FROM_FN_PTR(address, RecursiveInterpreterActivation);
 373 }
 374 
 375 address CppInterpreter::deopt_entry(TosState state, int length) {
 376   address ret = NULL;
 377   if (length != 0) {
 378     switch (state) {
 379       case atos: ret = deopt_frame_manager_return_atos; break;
 380       case btos: ret = deopt_frame_manager_return_btos; break;
 381       case ctos:
 382       case stos:
 383       case itos: ret = deopt_frame_manager_return_itos; break;
 384       case ltos: ret = deopt_frame_manager_return_ltos; break;
 385       case ftos: ret = deopt_frame_manager_return_ftos; break;
 386       case dtos: ret = deopt_frame_manager_return_dtos; break;
 387       case vtos: ret = deopt_frame_manager_return_vtos; break;
 388     }
 389   } else {
 390     ret = unctrap_frame_manager_entry;  // re-execute the bytecode ( e.g. uncommon trap)




 350       break;
 351     case T_DOUBLE  :
 352       __ movptr(rdx, STATE(_stack));                                    // get top of stack
 353       if ( UseSSE > 1) {
 354         __ movdbl(xmm0, Address(rdx, wordSize));
 355       } else {
 356         __ fld_d(Address(rdx, wordSize));                               // push double result
 357       }
 358       break;
 359     case T_OBJECT :
 360       __ movptr(rdx, STATE(_stack));                                    // get top of stack
 361       __ movptr(rax, Address(rdx, wordSize));                           // get result word 1
 362       __ verify_oop(rax);                                               // verify it
 363       break;
 364     default       : ShouldNotReachHere();
 365   }
 366   __ ret(0);
 367   return entry;
 368 }
 369 
 370 address CppInterpreter::return_entry(TosState state, int length, Bytecodes::Code code) {
 371   // make it look good in the debugger
 372   return CAST_FROM_FN_PTR(address, RecursiveInterpreterActivation);
 373 }
 374 
 375 address CppInterpreter::deopt_entry(TosState state, int length) {
 376   address ret = NULL;
 377   if (length != 0) {
 378     switch (state) {
 379       case atos: ret = deopt_frame_manager_return_atos; break;
 380       case btos: ret = deopt_frame_manager_return_btos; break;
 381       case ctos:
 382       case stos:
 383       case itos: ret = deopt_frame_manager_return_itos; break;
 384       case ltos: ret = deopt_frame_manager_return_ltos; break;
 385       case ftos: ret = deopt_frame_manager_return_ftos; break;
 386       case dtos: ret = deopt_frame_manager_return_dtos; break;
 387       case vtos: ret = deopt_frame_manager_return_vtos; break;
 388     }
 389   } else {
 390     ret = unctrap_frame_manager_entry;  // re-execute the bytecode ( e.g. uncommon trap)


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