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

src/cpu/x86/vm/interpreter_x86_64.cpp

Print this page
rev 6068 : 8036146: make CPP interpreter build again
Summary: fix build of CPP interpreter on x86 and sparc
Reviewed-by:


 293 
 294 
 295   __ pop(rax);
 296   __ mov(rsp, r13);
 297   __ jmp(rax);
 298 
 299   return entry_point;
 300 }
 301 
 302 
 303 // Abstract method entry
 304 // Attempt to execute abstract method. Throw exception
 305 address InterpreterGenerator::generate_abstract_entry(void) {
 306   // rbx: Method*
 307   // r13: sender SP
 308 
 309   address entry_point = __ pc();
 310 
 311   // abstract method entry
 312 

 313   //  pop return address, reset last_sp to NULL
 314   __ empty_expression_stack();
 315   __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
 316   __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)

 317 
 318   // throw exception
 319   __ call_VM(noreg, CAST_FROM_FN_PTR(address,
 320                              InterpreterRuntime::throw_AbstractMethodError));
 321   // the call_VM checks for exception, so we should never return here.
 322   __ should_not_reach_here();
 323 
 324   return entry_point;
 325 }
 326 
 327 
 328 // Empty method, generate a very fast return.
 329 
 330 address InterpreterGenerator::generate_empty_entry(void) {
 331   // rbx: Method*
 332   // r13: sender sp must set sp to this value on return
 333 
 334   if (!UseFastEmptyMethods) {
 335     return NULL;
 336   }




 293 
 294 
 295   __ pop(rax);
 296   __ mov(rsp, r13);
 297   __ jmp(rax);
 298 
 299   return entry_point;
 300 }
 301 
 302 
 303 // Abstract method entry
 304 // Attempt to execute abstract method. Throw exception
 305 address InterpreterGenerator::generate_abstract_entry(void) {
 306   // rbx: Method*
 307   // r13: sender SP
 308 
 309   address entry_point = __ pc();
 310 
 311   // abstract method entry
 312 
 313 #ifndef CC_INTERP
 314   //  pop return address, reset last_sp to NULL
 315   __ empty_expression_stack();
 316   __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
 317   __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
 318 #endif
 319 
 320   // throw exception
 321   __ call_VM(noreg, CAST_FROM_FN_PTR(address,
 322                              InterpreterRuntime::throw_AbstractMethodError));
 323   // the call_VM checks for exception, so we should never return here.
 324   __ should_not_reach_here();
 325 
 326   return entry_point;
 327 }
 328 
 329 
 330 // Empty method, generate a very fast return.
 331 
 332 address InterpreterGenerator::generate_empty_entry(void) {
 333   // rbx: Method*
 334   // r13: sender sp must set sp to this value on return
 335 
 336   if (!UseFastEmptyMethods) {
 337     return NULL;
 338   }


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