changeset 8444:2a7495690d3d

8080627: JavaThread::satb_mark_queue_offset() is too big for an ARM ldrsb instruction Reviewed-by: roland, kbarrett
author brutisso
date Fri, 22 May 2015 10:56:37 +0200
parents 3e9cfe1b6af3
children 14932754dcd5
files src/share/vm/c1/c1_LIRGenerator.cpp
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Thu May 21 09:35:59 2015 +0200
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Fri May 22 10:56:37 2015 +0200
@@ -1469,7 +1469,9 @@
   } else {
     guarantee(in_bytes(PtrQueue::byte_width_of_active()) == 1,
               "Assumption");
-    flag_type = T_BYTE;
+    // Use unsigned type T_BOOLEAN here rather than signed T_BYTE since some platforms, eg. ARM,
+    // need to use unsigned instructions to use the large offset to load the satb_mark_queue.
+    flag_type = T_BOOLEAN;
   }
   LIR_Opr thrd = getThreadPointer();
   LIR_Address* mark_active_flag_addr =