Mercurial > hg > release > icedtea6-1.3
changeset 1056:a5883d41d7ec
* patches/icedtea-6700047-loopopts.patch: New patch.
* Makefile.am (NON_ZERO_PATCHES): Add icedtea-6700047-loopopts.patch.
* HACKING: Document patches/icedtea-6700047-loopopts.patch.
author | Mark Wielaard <mark@klomp.org> |
---|---|
date | Fri, 26 Sep 2008 11:58:58 +0200 |
parents | f2f33bede67b |
children | 210cf639f45c |
files | ChangeLog HACKING Makefile.am patches/icedtea-6700047-loopopts.patch |
diffstat | 4 files changed, 44 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Sep 26 11:37:46 2008 +0200 +++ b/ChangeLog Fri Sep 26 11:58:58 2008 +0200 @@ -1,4 +1,10 @@ -2008-09-25 Mark Wielaard <mark@klomp.org> +2008-09-26 Mark Wielaard <mark@klomp.org> + + * patches/icedtea-6700047-loopopts.patch: New patch. + * Makefile.am (NON_ZERO_PATCHES): Add icedtea-6700047-loopopts.patch. + * HACKING: Document patches/icedtea-6700047-loopopts.patch. + +2008-09-26 Mark Wielaard <mark@klomp.org> * patches/icedtea-hotspot7-tests.patch: New patch. * Makefile.am (ICEDTEA_PATCHES): Add icedtea-hotspot7-tests.patch.
--- a/HACKING Fri Sep 26 11:37:46 2008 +0200 +++ b/HACKING Fri Sep 26 11:58:58 2008 +0200 @@ -66,6 +66,7 @@ * icedtea-sparc.patch: Add support for GNU/Linux on SPARC. * icedtea-jdk-docs-target.patch: Always set DOCS_TARGET. * icedtea-lucene-crash.patch: Fix lucene bad code generation bug #6707044. +* icedtea-6700047-loopopts.patch: Fix partial peeling issue, bug #6700047. The following patches are only applied to OpenJDK in IcedTea:
--- a/Makefile.am Fri Sep 26 11:37:46 2008 +0200 +++ b/Makefile.am Fri Sep 26 11:58:58 2008 +0200 @@ -429,7 +429,8 @@ # Patches needed when not using the newer OpenJDK 7 HotSpot for zero. NON_ZERO_PATCHES = \ patches/icedtea-signed-types-hot6.patch \ - patches/icedtea-lucene-crash.patch + patches/icedtea-lucene-crash.patch \ + patches/icedtea-6700047-loopopts.patch if ZERO_BUILD ZERO_PATCHES_COND = $(ZERO_PATCHES)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-6700047-loopopts.patch Fri Sep 26 11:58:58 2008 +0200 @@ -0,0 +1,34 @@ +6700047: C2 failed in idom_no_update +Summary: partial peeling shouldn't place clones into loop + +diff -r 4aebfff4f8a2 hotspot/src/share/vm/opto/loopopts.cpp +--- openjdk.orig/hotspot/src/share/vm/opto/loopopts.cpp Mon Sep 15 11:38:34 2008 +0200 ++++ openjdk/hotspot/src/share/vm/opto/loopopts.cpp Fri Sep 26 11:29:06 2008 +0200 +@@ -1865,18 +1865,19 @@ + _igvn.hash_delete(use); + use->set_req(j, n_clone); + _igvn._worklist.push(use); ++ Node* use_c; + if (!use->is_Phi()) { +- Node* use_c = has_ctrl(use) ? get_ctrl(use) : use->in(0); +- set_ctrl(n_clone, use_c); +- assert(!loop->is_member(get_loop(use_c)), "should be outside loop"); +- get_loop(use_c)->_body.push(n_clone); ++ use_c = has_ctrl(use) ? get_ctrl(use) : use->in(0); + } else { + // Use in a phi is considered a use in the associated predecessor block +- Node *prevbb = use->in(0)->in(j); +- set_ctrl(n_clone, prevbb); +- assert(!loop->is_member(get_loop(prevbb)), "should be outside loop"); +- get_loop(prevbb)->_body.push(n_clone); ++ use_c = use->in(0)->in(j); + } ++ if (use_c->is_CountedLoop()) { ++ use_c = use_c->in(LoopNode::EntryControl); ++ } ++ set_ctrl(n_clone, use_c); ++ assert(!loop->is_member(get_loop(use_c)), "should be outside loop"); ++ get_loop(use_c)->_body.push(n_clone); + _igvn.register_new_node_with_optimizer(n_clone); + #if !defined(PRODUCT) + if (TracePartialPeeling) {