changeset in /hg/icedtea6: Add hotspot eclipse crasher patch fix...

Mark Wielaard mark at klomp.org
Sun Jun 8 15:02:45 PDT 2008


changeset e4b644655e78 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e4b644655e78
description:
	Add hotspot eclipse crasher patch fix for sun bu #6614100.

	2008-06-08  Mark Wielaard  <mark at klomp.org>

	       * Makefile.am (ZERO_PATCHES): Add
	       patches/icedtea-eclipse-hotspot-6614100-7b24.patch.
	       (NON_ZERO_PATCHES): New patch list.
	       (ZERO_PATCHES_COND): Use new NON_ZERO_PATCHES list when necessary.
	       * Makefile.in: Regenerate.
	       * patches/icedtea-eclipse-hotspot-6614100-7b24.patch: New patch.
	       * patches/icedtea-eclipse-hotspot-6614100-6b06.patch: New patch.

diffstat:

5 files changed, 159 insertions(+), 5 deletions(-)
ChangeLog                                          |   10 ++
Makefile.am                                        |    9 +-
Makefile.in                                        |   12 ++-
patches/icedtea-eclipse-hotspot-6614100-6b06.patch |   56 ++++++++++++++
patches/icedtea-eclipse-hotspot-6614100-7b24.patch |   77 ++++++++++++++++++++

diffs (203 lines):

diff -r 37c853f39fe3 -r e4b644655e78 ChangeLog
--- a/ChangeLog	Mon Jun 02 00:35:24 2008 +0200
+++ b/ChangeLog	Sun Jun 08 18:51:47 2008 +0200
@@ -1,3 +1,13 @@ 2008-06-01  Mark Wielaard  <mark at klomp.o
+2008-06-08  Mark Wielaard  <mark at klomp.org>
+
+	* Makefile.am (ZERO_PATCHES): Add
+	patches/icedtea-eclipse-hotspot-6614100-7b24.patch.
+	(NON_ZERO_PATCHES): New patch list.
+	(ZERO_PATCHES_COND): Use new NON_ZERO_PATCHES list when necessary.
+	* Makefile.in: Regenerate.
+	* patches/icedtea-eclipse-hotspot-6614100-7b24.patch: New patch.
+	* patches/icedtea-eclipse-hotspot-6614100-6b06.patch: New patch.
+
 2008-06-01  Mark Wielaard  <mark at klomp.org>
 
 	* Makefile.am (OPENJDK_DATE): Updated to 30_may_2008.
diff -r 37c853f39fe3 -r e4b644655e78 Makefile.am
--- a/Makefile.am	Mon Jun 02 00:35:24 2008 +0200
+++ b/Makefile.am	Sun Jun 08 18:51:47 2008 +0200
@@ -259,12 +259,17 @@ ZERO_PATCHES = \
 	patches/icedtea-signed-types.patch \
 	patches/icedtea-test-atomic-operations.patch \
 	patches/icedtea-zero.patch \
-	patches/icedtea-ia64-bugfix.patch
+	patches/icedtea-ia64-bugfix.patch \
+	patches/icedtea-eclipse-hotspot-6614100-7b24.patch
+
+# Patches needed when not using the newer OpenJDK 7 HotSpot for zero.
+NON_ZERO_PATCHES = \
+	patches/icedtea-eclipse-hotspot-6614100-6b06.patch
 
 if ZERO_BUILD
   ZERO_PATCHES_COND = $(ZERO_PATCHES)
 else
-  ZERO_PATCHES_COND = 
+  ZERO_PATCHES_COND = $(NON_ZERO_PATCHES)
 endif
 
 ICEDTEA_PATCHES = \
diff -r 37c853f39fe3 -r e4b644655e78 Makefile.in
--- a/Makefile.in	Mon Jun 02 00:35:24 2008 +0200
+++ b/Makefile.in	Sun Jun 08 18:51:47 2008 +0200
@@ -378,9 +378,15 @@ ZERO_PATCHES = \
 	patches/icedtea-signed-types.patch \
 	patches/icedtea-test-atomic-operations.patch \
 	patches/icedtea-zero.patch \
-	patches/icedtea-ia64-bugfix.patch
-
- at ZERO_BUILD_FALSE@ZERO_PATCHES_COND = 
+	patches/icedtea-ia64-bugfix.patch \
+	patches/icedtea-eclipse-hotspot-6614100-7b24.patch
+
+
+# Patches needed when not using the newer OpenJDK 7 HotSpot for zero.
+NON_ZERO_PATCHES = \
+	patches/icedtea-eclipse-hotspot-6614100-6b06.patch
+
+ at ZERO_BUILD_FALSE@ZERO_PATCHES_COND = $(NON_ZERO_PATCHES)
 @ZERO_BUILD_TRUE at ZERO_PATCHES_COND = $(ZERO_PATCHES)
 ICEDTEA_PATCHES = $(ZERO_PATCHES_COND) \
 	patches/icedtea-copy-plugs.patch patches/icedtea-version.patch \
diff -r 37c853f39fe3 -r e4b644655e78 patches/icedtea-eclipse-hotspot-6614100-6b06.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-eclipse-hotspot-6614100-6b06.patch	Sun Jun 08 18:51:47 2008 +0200
@@ -0,0 +1,56 @@
+# HG changeset patch
+# User never
+# Date 1212727493 25200
+# Node ID 65fe2bd8883932456557957163bf5c4e4af79469
+# Parent d4dbd9f91680840f6c719b0d23942b4d4eb00837
+6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse with 1.6.0_05-ea
+Reviewed-by: kvn, jrose, rasbold
+
+--- openjdk/hotspot/src/share/vm/opto/cfgnode.cpp.orig	2008-06-08 15:15:19.000000000 +0200
++++ openjdk/hotspot/src/share/vm/opto/cfgnode.cpp	2008-06-08 15:16:06.000000000 +0200
+@@ -1551,45 +1551,6 @@
+     if (opt != NULL)  return opt;
+   }
+ 
+-  if (in(1) != NULL && in(1)->Opcode() == Op_AddP && can_reshape) {
+-    // Try to undo Phi of AddP:
+-    //   (Phi (AddP base base y) (AddP base2 base2 y))
+-    // becomes:
+-    //   newbase := (Phi base base2)
+-    //   (AddP newbase newbase y)
+-    //
+-    // This occurs as a result of unsuccessful split_thru_phi and
+-    // interferes with taking advantage of addressing modes.  See the
+-    // clone_shift_expressions code in matcher.cpp
+-    Node* addp = in(1);
+-    const Type* type = addp->in(AddPNode::Base)->bottom_type();
+-    Node* y = addp->in(AddPNode::Offset);
+-    if (y != NULL && addp->in(AddPNode::Base) == addp->in(AddPNode::Address)) {
+-      // make sure that all the inputs are similar to the first one,
+-      // i.e. AddP with base == address and same offset as first AddP
+-      bool doit = true;
+-      for (uint i = 2; i < req(); i++) {
+-        if (in(i) == NULL ||
+-            in(i)->Opcode() != Op_AddP ||
+-            in(i)->in(AddPNode::Base) != in(i)->in(AddPNode::Address) ||
+-            in(i)->in(AddPNode::Offset) != y) {
+-          doit = false;
+-          break;
+-        }
+-        // Accumulate type for resulting Phi
+-        type = type->meet(in(i)->in(AddPNode::Base)->bottom_type());
+-      }
+-      if (doit) {
+-        Node* base = new (phase->C, in(0)->req()) PhiNode(in(0), type, NULL);
+-        for (uint i = 1; i < req(); i++) {
+-          base->init_req(i, in(i)->in(AddPNode::Base));
+-        }
+-        phase->is_IterGVN()->register_new_node_with_optimizer(base);
+-        return new (phase->C, 4) AddPNode(base, base, y);
+-      }
+-    }
+-  }
+-
+   // Split phis through memory merges, so that the memory merges will go away.
+   // Piggy-back this transformation on the search for a unique input....
+   // It will be as if the merged memory is the unique value of the phi.
diff -r 37c853f39fe3 -r e4b644655e78 patches/icedtea-eclipse-hotspot-6614100-7b24.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-eclipse-hotspot-6614100-7b24.patch	Sun Jun 08 18:51:47 2008 +0200
@@ -0,0 +1,77 @@
+
+# HG changeset patch
+# User never
+# Date 1212727493 25200
+# Node ID 65fe2bd8883932456557957163bf5c4e4af79469
+# Parent d4dbd9f91680840f6c719b0d23942b4d4eb00837
+6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse with 1.6.0_05-ea
+Reviewed-by: kvn, jrose, rasbold
+
+--- openjdk/hotspot/src/share/vm/opto/cfgnode.cpp	Thu Jun 05 15:43:18 2008 -0700
++++ openjdk/hotspot/src/share/vm/opto/cfgnode.cpp	Thu Jun 05 21:44:53 2008 -0700
+@@ -1621,64 +1621,6 @@ Node *PhiNode::Ideal(PhaseGVN *phase, bo
+     if (opt != NULL)  return opt;
+   }
+ 
+-  if (in(1) != NULL && in(1)->Opcode() == Op_AddP && can_reshape) {
+-    // Try to undo Phi of AddP:
+-    //   (Phi (AddP base base y) (AddP base2 base2 y))
+-    // becomes:
+-    //   newbase := (Phi base base2)
+-    //   (AddP newbase newbase y)
+-    //
+-    // This occurs as a result of unsuccessful split_thru_phi and
+-    // interferes with taking advantage of addressing modes.  See the
+-    // clone_shift_expressions code in matcher.cpp
+-    Node* addp = in(1);
+-    const Type* type = addp->in(AddPNode::Base)->bottom_type();
+-    Node* y = addp->in(AddPNode::Offset);
+-    if (y != NULL && addp->in(AddPNode::Base) == addp->in(AddPNode::Address)) {
+-      // make sure that all the inputs are similar to the first one,
+-      // i.e. AddP with base == address and same offset as first AddP
+-      bool doit = true;
+-      for (uint i = 2; i < req(); i++) {
+-        if (in(i) == NULL ||
+-            in(i)->Opcode() != Op_AddP ||
+-            in(i)->in(AddPNode::Base) != in(i)->in(AddPNode::Address) ||
+-            in(i)->in(AddPNode::Offset) != y) {
+-          doit = false;
+-          break;
+-        }
+-        // Accumulate type for resulting Phi
+-        type = type->meet(in(i)->in(AddPNode::Base)->bottom_type());
+-      }
+-      Node* base = NULL;
+-      if (doit) {
+-        // Check for neighboring AddP nodes in a tree.
+-        // If they have a base, use that it.
+-        for (DUIterator_Fast kmax, k = this->fast_outs(kmax); k < kmax; k++) {
+-          Node* u = this->fast_out(k);
+-          if (u->is_AddP()) {
+-            Node* base2 = u->in(AddPNode::Base);
+-            if (base2 != NULL && !base2->is_top()) {
+-              if (base == NULL)
+-                base = base2;
+-              else if (base != base2)
+-                { doit = false; break; }
+-            }
+-          }
+-        }
+-      }
+-      if (doit) {
+-        if (base == NULL) {
+-          base = new (phase->C, in(0)->req()) PhiNode(in(0), type, NULL);
+-          for (uint i = 1; i < req(); i++) {
+-            base->init_req(i, in(i)->in(AddPNode::Base));
+-          }
+-          phase->is_IterGVN()->register_new_node_with_optimizer(base);
+-        }
+-        return new (phase->C, 4) AddPNode(base, base, y);
+-      }
+-    }
+-  }
+-
+   // Split phis through memory merges, so that the memory merges will go away.
+   // Piggy-back this transformation on the search for a unique input....
+   // It will be as if the merged memory is the unique value of the phi.
+



More information about the distro-pkg-dev mailing list