Mercurial > hg > release > icedtea6-1.3
changeset 1054:b5b66d8e6014
* patches/icedtea-lucene-crash.patch: New patch.
* Makefile.am (NON_ZERO_PATCHES): Add icedtea-lucene-crash.patch.
* HACKING: Document icedtea-lucene-crash.patch.
author | Mark Wielaard <mark@klomp.org> |
---|---|
date | Thu, 25 Sep 2008 23:35:32 +0200 |
parents | 09fccdb9f333 |
children | f2f33bede67b |
files | ChangeLog HACKING Makefile.am patches/icedtea-lucene-crash.patch |
diffstat | 4 files changed, 75 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Sep 25 20:42:43 2008 +0200 +++ b/ChangeLog Thu Sep 25 23:35:32 2008 +0200 @@ -1,4 +1,10 @@ -2008-08-28 Mark Wielaard <mjw@redhat.com> +2008-09-25 Mark Wielaard <mark@klomp.org> + + * patches/icedtea-lucene-crash.patch: New patch. + * Makefile.am (NON_ZERO_PATCHES): Add icedtea-lucene-crash.patch. + * HACKING: Document icedtea-lucene-crash.patch. + +2008-09-25 Mark Wielaard <mjw@redhat.com> * patches/icedtea-clean-crypto.patch: Cleaned up. Remove unneeded classes JarVerifier and JceSecurityManager
--- a/HACKING Thu Sep 25 20:42:43 2008 +0200 +++ b/HACKING Thu Sep 25 23:35:32 2008 +0200 @@ -64,6 +64,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. The following patches are only applied to OpenJDK in IcedTea:
--- a/Makefile.am Thu Sep 25 20:42:43 2008 +0200 +++ b/Makefile.am Thu Sep 25 23:35:32 2008 +0200 @@ -427,7 +427,9 @@ patches/icedtea-ia64-bugfix.patch # Patches needed when not using the newer OpenJDK 7 HotSpot for zero. -NON_ZERO_PATCHES = patches/icedtea-signed-types-hot6.patch +NON_ZERO_PATCHES = \ + patches/icedtea-signed-types-hot6.patch \ + patches/icedtea-lucene-crash.patch if ZERO_BUILD ZERO_PATCHES_COND = $(ZERO_PATCHES)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-lucene-crash.patch Thu Sep 25 23:35:32 2008 +0200 @@ -0,0 +1,64 @@ +diff -r 4aebfff4f8a2 hotspot/src/share/vm/opto/parse2.cpp +--- openjdk.orig/hotspot/src/share/vm/opto/parse2.cpp Mon Sep 15 11:38:34 2008 +0200 ++++ openjdk/hotspot/src/share/vm/opto/parse2.cpp Thu Sep 25 21:54:26 2008 +0200 +@@ -868,6 +868,8 @@ + return prob < PROB_MIN; + } + ++//-------------------------------repush_if_args-------------------------------- ++// Push arguments of an "if" bytecode back onto the stack by adjusting _sp. + inline void Parse::repush_if_args() { + #ifndef PRODUCT + if (PrintOpto && WizardMode) { +@@ -896,7 +898,6 @@ + if (PrintOpto && Verbose) + tty->print_cr("Never-taken backedge stops compilation at bci %d",bci()); + #endif +- repush_if_args(); // to gather stats on loop + uncommon_trap(Deoptimization::Reason_unreached, + Deoptimization::Action_reinterpret, + NULL, "cold"); +diff -r 51798f0e554f test/compiler/6707044/LuceneCrash.java +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/hotspot/test/compiler/6707044/LuceneCrash.java Thu Sep 25 21:55:28 2008 +0200 +@@ -0,0 +1,40 @@ ++/* ++ * @test ++ * @bug 6707044 ++ * @summary uncommon_trap of ifnull bytecode leaves garbage on expression stack ++ * @run main/othervm -Xbatch LuceneCrash ++ */ ++public class LuceneCrash { ++ ++ public static void main(String[] args) throws Throwable { ++ new LuceneCrash().crash(); ++ } ++ ++ private Object alwaysNull; ++ ++ final void crash() throws Throwable { ++ for (int r = 0; r < 3; r++) { ++ for (int docNum = 0; docNum < 10000;) { ++ if (r < 2) { ++ for(int j=0;j<3000;j++) ++ docNum++; ++ } else { ++ docNum++; ++ doNothing(getNothing()); ++ if (alwaysNull != null) { ++ throw new RuntimeException("BUG: checkAbort is always null: r=" + r + " of 3; docNum=" + docNum); ++ } ++ } ++ } ++ } ++ } ++ ++ Object getNothing() { ++ return this; ++ } ++ ++ int x; ++ void doNothing(Object o) { ++ x++; ++ } ++}