Mercurial > hg > release > icedtea6-1.11
changeset 2616:58c56aeb3e79
Backport of 6956668 fix.
author | ptisnovs |
---|---|
date | Fri, 24 Jun 2011 09:07:40 +0200 |
parents | 24a5884be0de |
children | de842a17c6d5 |
files | ChangeLog Makefile.am NEWS patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int.patch |
diffstat | 4 files changed, 103 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Jun 23 11:08:51 2011 +0200 +++ b/ChangeLog Fri Jun 24 09:07:40 2011 +0200 @@ -1,3 +1,10 @@ +2011-06-24 Pavel Tisnovsky <ptisnovs@redhat.com> + + * Makefile.am: added new patch + * NEWS: updated with backport + * patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int: + Backport of 6956668 fix. + 2011-06-23 Pavel Tisnovsky <ptisnovs@redhat.com> * Makefile.am: added new patch
--- a/Makefile.am Thu Jun 23 11:08:51 2011 +0200 +++ b/Makefile.am Fri Jun 24 09:07:40 2011 +0200 @@ -363,7 +363,8 @@ patches/jtreg-ReadWriteProfileTest.patch \ patches/openjdk/6818312-com.sun.awt.SecurityWarning.getSize.patch \ patches/jtreg-MappedByteBuffer-Basic.patch \ - patches/openjdk/7008106-WindowOpacity.patch + patches/openjdk/7008106-WindowOpacity.patch \ + patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \
--- a/NEWS Thu Jun 23 11:08:51 2011 +0200 +++ b/NEWS Fri Jun 24 09:07:40 2011 +0200 @@ -35,6 +35,7 @@ - S6610244: modal dialog closes with fatal error if -Xcheck:jni is set - S7037283, RH712211: Null Pointer Exception in SwingUtilities2. - S7008106: com/sun/awt/Translucency/WindowOpacity.java test fails. + - S6956668: misbehavior of XOR operator (^) with int * Bug fixes - PR637: make check should exit with an error code if any regression test failed. - G356743: Support libpng 1.5.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6956668-misbehavior_of_XOR_operator_with_int.patch Fri Jun 24 09:07:40 2011 +0200 @@ -0,0 +1,93 @@ +# HG changeset patch +# User kvn +# Date 1306861536 25200 +# Node ID f88fb2fa90cf92088890d601c13046546df61cb0 +# Parent 7c907a50c1bb7c5722924bdcf44952909dd8b55b +6956668: misbehavior of XOR operator (^) with int +Summary: optimize cmp_ne(xor(X,1),0) to cmp_eq(X,0) only for boolean values X. +Reviewed-by: never + +diff -r 7c907a50c1bb -r f88fb2fa90cf src/share/vm/opto/subnode.cpp +--- openjdk.orig/hotspot/src/share/vm/opto/subnode.cpp Wed Jun 01 14:46:14 2011 -0700 ++++ openjdk/hotspot/src/share/vm/opto/subnode.cpp Tue May 31 10:05:36 2011 -0700 +@@ -1101,6 +1101,7 @@ + if( cmp2_type == TypeInt::ZERO && + cmp1_op == Op_XorI && + j_xor->in(1) != j_xor && // An xor of itself is dead ++ phase->type( j_xor->in(1) ) == TypeInt::BOOL && + phase->type( j_xor->in(2) ) == TypeInt::ONE && + (_test._test == BoolTest::eq || + _test._test == BoolTest::ne) ) { +diff -r 7c907a50c1bb -r f88fb2fa90cf test/compiler/6956668/Test6956668.java +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/hotspot/test/compiler/6956668/Test6956668.java Tue May 31 10:05:36 2011 -0700 +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ * ++ */ ++ ++/** ++ * @test ++ * @bug 6956668 ++ * @summary misbehavior of XOR operator (^) with int ++ * ++ * @run main/othervm -Xbatch Test6956668 ++ */ ++ ++ ++public class Test6956668 { ++ ++ public static int bitTest() { ++ int result = 0; ++ ++ int testValue = 73; ++ int bitCount = Integer.bitCount(testValue); ++ ++ if (testValue != 0) { ++ int gap = Long.numberOfTrailingZeros(testValue); ++ testValue >>>= gap; ++ ++ while (testValue != 0) { ++ result++; ++ ++ if ((testValue ^= 0x1) != 0) { ++ gap = Long.numberOfTrailingZeros(testValue); ++ testValue >>>= gap; ++ } ++ } ++ } ++ ++ if (bitCount != result) { ++ System.out.println("ERROR: " + bitCount + " != " + result); ++ System.exit(97); ++ } ++ ++ return (result); ++ } ++ ++ public static void main(String[] args) { ++ for (int i = 0; i < 100000; i++) { ++ int ct = bitTest(); ++ } ++ } ++}