Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2175679 | 7 | Tom Rodriguez | P3 | Closed | Fixed | b54 |
JDK-2180572 | 6u18 | Tom Rodriguez | P3 | Resolved | Fixed | b01 |
JDK-2175624 | 6u14 | Tom Rodriguez | P3 | Resolved | Fixed | b06 |
JDK-2176447 | hs14 | Tom Rodriguez | P3 | Resolved | Fixed | b15 |
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.
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.
- backported by
-
JDK-2175624 deopt blob is testing wrong register on 64-bit x86
-
- Resolved
-
-
JDK-2176447 deopt blob is testing wrong register on 64-bit x86
-
- Resolved
-
-
JDK-2180572 deopt blob is testing wrong register on 64-bit x86
-
- Resolved
-
-
JDK-2175679 deopt blob is testing wrong register on 64-bit x86
-
- Closed
-
- relates to
-
JDK-6459804 Want client (c1) compiler for x86_64 (amd64) for faster start-up
-
- Closed
-