Mercurial > hg > release > icedtea7-forest-2.2 > hotspot
changeset 3414:c7bc239126d3
Merge
author | asaha |
---|---|
date | Fri, 18 Nov 2011 12:57:49 -0800 |
parents | 3e986ec5c123 (current diff) 0744602f85c6 (diff) |
children | b23c8435518c |
files | make/hotspot_version |
diffstat | 7 files changed, 261 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Mon Oct 31 22:04:51 2011 -0700 +++ b/.hgtags Fri Nov 18 12:57:49 2011 -0800 @@ -203,3 +203,7 @@ b93bc193d73bd4d07150a3e8f85a8ca4bb18157c jdk7u2-b09 623aec2a90f721fd0de9877bf7be8624874fd557 hs22-b08 482e282037d780ca48a0eaaa4015b8ae20f0e0a9 jdk7u2-b11 +c8abdaa56b471195aefbac6ee385d7d35b8aec74 hs22-b09 +4061b13e3e6be63b6f157ef773f374f2355fdb48 jdk7u2-b12 +3ba0bb2e7c8ddac172f5b995aae57329cdd2dafa hs22-b10 +f17fe2f4b6aacc19cbb8ee39476f2f13a1c4d3cd jdk7u2-b13
--- a/THIRD_PARTY_README Mon Oct 31 22:04:51 2011 -0700 +++ b/THIRD_PARTY_README Fri Nov 18 12:57:49 2011 -0800 @@ -216,15 +216,16 @@ is included with JRE 7, JDK 7, and OpenJDK 7. You are receiving a copy of the Elliptic Curve Cryptography library in source -form with the JDK 7 source distribution and object code in the JRE 7 & JDK 7 -runtime. - -The terms of the Oracle license do NOT apply to the Elliptic Curve -Cryptography library program; it is licensed under the following license, -separately from the Oracle programs you receive. If you do not wish to install -this program, you may delete the library named libsunec.so (on Solaris and -Linux systems) or sunec.dll (on Windows systems) from the JRE bin directory -reserved for native libraries. +form with the JDK 7 and OpenJDK7 source distributions, and as object code in +the JRE 7 & JDK 7 runtimes. + +In the case of the JRE 7 & JDK 7 runtimes, the terms of the Oracle license do +NOT apply to the Elliptic Curve Cryptography library; it is licensed under the +following license, separately from Oracle's JDK & JRE. If you do not wish to +install the Elliptic Curve Cryptography library, you may delete the library +named libsunec.so (on Solaris and Linux systems) or sunec.dll (on Windows +systems) from the JRE bin directory reserved for native libraries. + --- begin of LICENSE --- @@ -1000,7 +1001,7 @@ ------------------------------------------------------------------------------- -%% This notice is provided with respect to libpng 1.2.18, which is +%% This notice is provided with respect to libpng 1.5.4, which is included with JRE 7, JDK 7, and OpenJDK 7. --- begin of LICENSE --- @@ -1014,8 +1015,10 @@ If you modify libpng you may insert additional notices immediately following this sentence. -libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are -Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are +This code is released under the libpng license. + +libpng versions 1.2.6, August 15, 2004, through 1.5.4, July 7, 2011, are +Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -1112,7 +1115,7 @@ Glenn Randers-Pehrson glennrp at users.sourceforge.net -May 15, 2007 +July 7, 2011 --- end of LICENSE ---
--- a/src/cpu/sparc/vm/sparc.ad Mon Oct 31 22:04:51 2011 -0700 +++ b/src/cpu/sparc/vm/sparc.ad Fri Nov 18 12:57:49 2011 -0800 @@ -10476,7 +10476,7 @@ ins_pipe(ialu_reg); %} -instruct countTrailingZerosL(iRegI dst, iRegL src, flagsReg cr) %{ +instruct countTrailingZerosL(iRegIsafe dst, iRegL src, flagsReg cr) %{ predicate(UsePopCountInstruction); // See Matcher::match_rule_supported match(Set dst (CountTrailingZerosL src)); effect(TEMP dst, KILL cr);
--- a/src/share/vm/opto/loopnode.cpp Mon Oct 31 22:04:51 2011 -0700 +++ b/src/share/vm/opto/loopnode.cpp Fri Nov 18 12:57:49 2011 -0800 @@ -715,7 +715,6 @@ long limit_con = cl->limit()->get_int(); julong trip_cnt = cl->trip_count(); long final_con = init_con + trip_cnt*stride_con; - final_con -= stride_con; int final_int = (int)final_con; // The final value should be in integer range since the loop // is counted and the limit was checked for overflow.
--- a/src/share/vm/services/heapDumper.cpp Mon Oct 31 22:04:51 2011 -0700 +++ b/src/share/vm/services/heapDumper.cpp Fri Nov 18 12:57:49 2011 -0800 @@ -27,6 +27,7 @@ #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" #include "gc_implementation/shared/vmGCOperations.hpp" +#include "memory/gcLocker.inline.hpp" #include "memory/genCollectedHeap.hpp" #include "memory/universe.hpp" #include "oops/objArrayKlass.hpp" @@ -1709,11 +1710,16 @@ HandleMark hm; CollectedHeap* ch = Universe::heap(); + + ch->ensure_parsability(false); // must happen, even if collection does + // not happen (e.g. due to GC_locker) + if (_gc_before_heap_dump) { - ch->collect_as_vm_thread(GCCause::_heap_dump); - } else { - // make the heap parsable (no need to retire TLABs) - ch->ensure_parsability(false); + if (GC_locker::is_active()) { + warning("GC locker is held; pre-heapdump GC was skipped"); + } else { + ch->collect_as_vm_thread(GCCause::_heap_dump); + } } // At this point we should be the only dumper active, so
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/compiler/7100757/Test7100757.java Fri Nov 18 12:57:49 2011 -0800 @@ -0,0 +1,98 @@ +/* + * 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 7100757 + * @summary The BitSet.nextSetBit() produces incorrect result in 32bit VM on Sparc + * + * @run main/timeout=300 Test7100757 + */ + +import java.util.*; + +public class Test7100757 { + + public static final int NBITS = 256; + + public static void main(String[] args) { + + BitSet bs = new BitSet(NBITS); + Random rnd = new Random(); + long[] ra = new long[(NBITS+63)/64]; + + for(int l=0; l < 5000000; l++) { + + for(int r = 0; r < ra.length; r++) { + ra[r] = rnd.nextLong(); + } + test(ra, bs); + } + } + + static void test(long[] ra, BitSet bs) { + bs.clear(); + int bits_set = 0; + for(int i = 0, t = 0, b = 0; i < NBITS; i++) { + long bit = 1L << b++; + if((ra[t]&bit) != 0) { + bs.set(i); + bits_set++; + } + if(b == 64) { + t++; + b = 0; + } + } + // Test Long.bitCount() + int check_bits = bs.cardinality(); + if (check_bits != bits_set) { + String bs_str = bs.toString(); + System.err.printf("cardinality bits: %d != %d bs: %s\n", check_bits, bits_set, bs_str); + System.exit(97); + } + // Test Long.numberOfTrailingZeros() + check_bits = 0; + for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) { + check_bits++; + } + if (check_bits != bits_set) { + String bs_str = bs.toString(); + System.err.printf("nextSetBit bits: %d != %d bs: %s\n", check_bits, bits_set, bs_str); + System.exit(97); + } + // Test Long.numberOfLeadingZeros() + for(int i = bs.length(); i > 0; i = bs.length()) { + bs.clear(i-1); + } + // Test Long.bitCount() + check_bits = bs.cardinality(); + if (check_bits != 0) { + String bs_str = bs.toString(); + System.err.printf("after clear bits: %d != 0 bs: %s\n", check_bits, bs_str); + System.exit(97); + } + } + +};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/compiler/7110586/Test7110586.java Fri Nov 18 12:57:49 2011 -0800 @@ -0,0 +1,132 @@ +/* + * 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 7110586 + * @summary C2 generates icorrect results + * + * @run main/othervm -Xbatch Test7110586 + */ + +public class Test7110586 { + static int test1() { + int i = 0; + for ( ; i < 11; i+=1) {} + return i; + } + static int test2() { + int i = 0; + for ( ; i < 11; i+=2) {} + return i; + } + static int test3() { + int i = 0; + for ( ; i < 11; i+=3) {} + return i; + } + static int test11() { + int i = 0; + for ( ; i < 11; i+=11) {} + return i; + } + + static int testm1() { + int i = 0; + for ( ; i > -11; i-=1) {} + return i; + } + static int testm2() { + int i = 0; + for ( ; i > -11; i-=2) {} + return i; + } + static int testm3() { + int i = 0; + for ( ; i > -11; i-=3) {} + return i; + } + static int testm11() { + int i = 0; + for ( ; i > -11; i-=11) {} + return i; + } + + public static void main(String args[]) { + int x1 = 0; + int x2 = 0; + int x3 = 0; + int x11 = 0; + int m1 = 0; + int m2 = 0; + int m3 = 0; + int m11 = 0; + for (int i=0; i<10000; i++) { + x1 = test1(); + x2 = test2(); + x3 = test3(); + x11 = test11(); + m1 = testm1(); + m2 = testm2(); + m3 = testm3(); + m11 = testm11(); + } + boolean failed = false; + if (x1 != 11) { + System.out.println("ERROR (incr = +1): " + x1 + " != 11"); + failed = true; + } + if (x2 != 12) { + System.out.println("ERROR (incr = +2): " + x2 + " != 12"); + failed = true; + } + if (x3 != 12) { + System.out.println("ERROR (incr = +3): " + x3 + " != 12"); + failed = true; + } + if (x11 != 11) { + System.out.println("ERROR (incr = +11): " + x11 + " != 11"); + failed = true; + } + if (m1 != -11) { + System.out.println("ERROR (incr = -1): " + m1 + " != -11"); + failed = true; + } + if (m2 != -12) { + System.out.println("ERROR (incr = -2): " + m2 + " != -12"); + failed = true; + } + if (m3 != -12) { + System.out.println("ERROR (incr = -3): " + m3 + " != -12"); + failed = true; + } + if (m11 != -11) { + System.out.println("ERROR (incr = -11): " + m11 + " != -11"); + failed = true; + } + if (failed) { + System.exit(97); + } + } +}