< prev index next >

src/hotspot/cpu/x86/templateInterpreterGenerator_x86_64.cpp

Print this page

432     }
433   } else if (kind == Interpreter::java_lang_math_abs) {
434     assert(StubRoutines::x86::double_sign_mask() != NULL, "not initialized");
435     __ movdbl(xmm0, Address(rsp, wordSize));
436     __ andpd(xmm0, ExternalAddress(StubRoutines::x86::double_sign_mask()));
437   } else {
438     ShouldNotReachHere();
439   }
440 
441   __ pop(rax);
442   __ mov(rsp, r13);
443   __ jmp(rax);
444 
445   return entry_point;
446 }
447 
448 address TemplateInterpreterGenerator::generate_currentThread() {
449 
450   address entry_point = __ pc();
451 
452   __ movptr(rax, Address(r15_thread, JavaThread::threadObj_offset()));
453 
454   __ resolve_oop_handle(rax, rscratch1);
455 
456   __ pop(rcx);
457   __ mov(rsp, r13);
458   __ jmp(rcx);
459 
460   return entry_point;
461 }
462 

432     }
433   } else if (kind == Interpreter::java_lang_math_abs) {
434     assert(StubRoutines::x86::double_sign_mask() != NULL, "not initialized");
435     __ movdbl(xmm0, Address(rsp, wordSize));
436     __ andpd(xmm0, ExternalAddress(StubRoutines::x86::double_sign_mask()));
437   } else {
438     ShouldNotReachHere();
439   }
440 
441   __ pop(rax);
442   __ mov(rsp, r13);
443   __ jmp(rax);
444 
445   return entry_point;
446 }
447 
448 address TemplateInterpreterGenerator::generate_currentThread() {
449 
450   address entry_point = __ pc();
451 
452   __ movptr(rax, Address(r15_thread, JavaThread::vthread_offset()));
453 
454   __ resolve_oop_handle(rax, rscratch1);
455 
456   __ pop(rcx);
457   __ mov(rsp, r13);
458   __ jmp(rcx);
459 
460   return entry_point;
461 }
462 
< prev index next >