Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6824463
Votes 0
Synopsis deopt blob is testing wrong register on 64-bit x86
Category hotspot:compiler2
Reported Against
Release Fixed hs15(b05), 7(b54) (Bug ID:2175679)
State 10-Fix Delivered, bug
Priority: 3-Medium
Related Bugs 6459804 , 5108146
Submit Date 31-MAR-2009
Description
The change for 5108146 added a new test in the deopt blob for x86_64 for use the by 64-bit version of C1.  During the time that it was being developed and it's final push register usage in the deopt blob was changed so that now the deopt blob is testing the wrong register.

diff --git a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp                                       
--- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp                                                                                        
+++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp                                                                                        
@@ -2691,7 +2691,7 @@ void SharedRuntime::generate_deopt_blob(
   __ mov(rdi, rax);                                                                                                                 
                                                                                                                                     
    Label noException;                                                                                                               
-  __ cmpl(r12, Deoptimization::Unpack_exception);   // Was exception pending?                                                       
+  __ cmpl(r14, Deoptimization::Unpack_exception);   // Was exception pending?                                                       
   __ jcc(Assembler::notEqual, noException);                                                                                         
   __ movptr(rax, Address(r15_thread, JavaThread::exception_oop_offset()));                                                          
   // QQQ this is useless it was NULL above

So far for whatever reason r12 never contains the same value as Deoptimization::Unpack_exception when using C2 but it's a bug waiting to happen.
Posted Date : 2009-03-31 19:49:39.0
Work Around
N/A
Evaluation
It should be testing r14.
Posted Date : 2009-03-31 19:50:00.0

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/69aefafe69c1
Posted Date : 2009-04-01 04:50:31.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang