changeset 2507:aafbc0658df1

S7031385, PR680: Incorrect register allocation in orderAccess_linux_x86.inline.hpp
author Deepak Bhole <dbhole@redhat.com>
date Fri, 01 Apr 2011 11:37:40 -0400
parents e63694eb18ec
children e92db53adff0
files ChangeLog Makefile.am NEWS patches/openjdk/7031385-gcc-register-allocation-fix.patch
diffstat 4 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Apr 01 00:30:31 2011 +0100
+++ b/ChangeLog	Fri Apr 01 11:37:40 2011 -0400
@@ -1,3 +1,13 @@
+2011-04-01  Deepak Bhole <dbhole@redhat.com>
+
+	S7031385, PR680: Incorrect register allocation in
+	orderAccess_linux_x86.inline.hpp 
+	* Makefile.am: Apply patch.
+	* NEWS: Updated
+	* patches/openjdk/7031385-gcc-register-allocation-fix.patch: New patch. 
+	Fixes register allocation by constraining output to one of a/b/c/d 
+	registers.
+
 2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
 
 	S7032388, PR682: Make HotSpot work on machines without
--- a/Makefile.am	Fri Apr 01 00:30:31 2011 +0100
+++ b/Makefile.am	Fri Apr 01 11:37:40 2011 -0400
@@ -328,7 +328,8 @@
 	patches/openjdk/7027667-AAShapePipeRegTest.patch \
 	patches/g356743-libpng-1.5.patch \
 	patches/mark_sun_toolkit_privileged_code.patch \
-	patches/hotspot/$(HSBUILD)/7032388-work_without_cmov_instruction.patch
+	patches/hotspot/$(HSBUILD)/7032388-work_without_cmov_instruction.patch \
+	patches/openjdk/7031385-gcc-register-allocation-fix.patch
 
 if WITH_ALT_HSBUILD
 ICEDTEA_PATCHES += \
--- a/NEWS	Fri Apr 01 00:30:31 2011 +0100
+++ b/NEWS	Fri Apr 01 11:37:40 2011 -0400
@@ -18,6 +18,7 @@
   - S7032388, PR682: Make HotSpot work on machines without cmov instruction again
 * Fixes
   - G356743: Support libpng 1.5.
+  - S7031385, PR680: Incorrect register allocation in orderAccess_linux_x86.inline.hpp
 * CACAO
   - Ignore all unknown options, but report them.
   - Fixes build for newer gcc (at least 4.4) on PPC64, breaks older gcc.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7031385-gcc-register-allocation-fix.patch	Fri Apr 01 11:37:40 2011 -0400
@@ -0,0 +1,21 @@
+diff -ur openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	2011-03-31 13:05:19.924400634 -0400
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	2011-03-31 13:06:00.617400605 -0400
+@@ -86,7 +86,7 @@
+ 
+ inline void     OrderAccess::store_fence(jbyte*  p, jbyte  v) {
+   __asm__ volatile (  "xchgb (%2),%0"
+-                    : "=r" (v)
++                    : "=q" (v)
+                     : "0" (v), "r" (p)
+                     : "memory");
+ }
+@@ -148,7 +148,7 @@
+ // Must duplicate definitions instead of calling store_fence because we don't want to cast away volatile.
+ inline void     OrderAccess::release_store_fence(volatile jbyte*  p, jbyte  v) {
+   __asm__ volatile (  "xchgb (%2),%0"
+-                    : "=r" (v)
++                    : "=q" (v)
+                     : "0" (v), "r" (p)
+                     : "memory");
+ }