Thu, 30 Jan 2014 14:09:56 -0800
Merge
.hgtags | file | annotate | diff | comparison | revisions | |
make/hotspot_version | file | annotate | diff | comparison | revisions |
1.1 --- a/.hgtags Tue Jan 28 14:56:01 2014 -0800 1.2 +++ b/.hgtags Thu Jan 30 14:09:56 2014 -0800 1.3 @@ -413,6 +413,9 @@ 1.4 3585183c191aa6b4d0375ea659515335e1804417 hs25-b67 1.5 df333ee12bba67e2e928f8ce1da37afd9bf95b48 jdk8-b125 1.6 c8218f1072a0370f3ce4714469ced0613ee543ab jdk8-b126 1.7 +d45454002494d147c0761e6b37d8a73064f3cf92 hs25-b68 1.8 +32f017489ba5dd1bedabb9fa1d26bcc74d0a72b6 hs25-b69 1.9 +35038da7bb9ddd367a0a6bf926dfb281aee1d554 jdk8-b127 1.10 4a35ef38e2a7bc64df20c7700ba69b37e3ddb8b5 jdk8u5-b01 1.11 e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02 1.12 2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03
2.1 --- a/THIRD_PARTY_README Tue Jan 28 14:56:01 2014 -0800 2.2 +++ b/THIRD_PARTY_README Thu Jan 30 14:09:56 2014 -0800 2.3 @@ -1400,7 +1400,7 @@ 2.4 ------------------------------------------------------------------------------- 2.5 2.6 %% This notice is provided with respect to Little CMS 2.4, which may be 2.7 -included with OpenJDK 8. 2.8 +included with JRE 8, JDK 8, and OpenJDK 8. 2.9 2.10 --- begin of LICENSE --- 2.11
3.1 --- a/src/cpu/sparc/vm/sparc.ad Tue Jan 28 14:56:01 2014 -0800 3.2 +++ b/src/cpu/sparc/vm/sparc.ad Thu Jan 30 14:09:56 2014 -0800 3.3 @@ -3355,8 +3355,8 @@ 3.4 interface(CONST_INTER); 3.5 %} 3.6 3.7 -// Unsigned (positive) Integer Immediate: 13-bit 3.8 -operand immU13() %{ 3.9 +// Unsigned Integer Immediate: 12-bit (non-negative that fits in simm13) 3.10 +operand immU12() %{ 3.11 predicate((0 <= n->get_int()) && Assembler::is_simm13(n->get_int())); 3.12 match(ConI); 3.13 op_cost(0); 3.14 @@ -3392,6 +3392,17 @@ 3.15 interface(CONST_INTER); 3.16 %} 3.17 3.18 +// Int Immediate non-negative 3.19 +operand immU31() 3.20 +%{ 3.21 + predicate(n->get_int() >= 0); 3.22 + match(ConI); 3.23 + 3.24 + op_cost(0); 3.25 + format %{ %} 3.26 + interface(CONST_INTER); 3.27 +%} 3.28 + 3.29 // Integer Immediate: 0-bit 3.30 operand immI0() %{ 3.31 predicate(n->get_int() == 0); 3.32 @@ -5720,7 +5731,6 @@ 3.33 effect(TEMP dst, TEMP tmp); 3.34 ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST); 3.35 3.36 - size((3+1)*4); // set may use two instructions. 3.37 format %{ "LDUH $mem,$dst\t! ushort/char & 16-bit mask -> long\n\t" 3.38 "SET $mask,$tmp\n\t" 3.39 "AND $dst,$tmp,$dst" %} 3.40 @@ -5842,13 +5852,13 @@ 3.41 ins_pipe(iload_mem); 3.42 %} 3.43 3.44 -// Load Integer with a 13-bit mask into a Long Register 3.45 -instruct loadI2L_immI13(iRegL dst, memory mem, immI13 mask) %{ 3.46 +// Load Integer with a 12-bit mask into a Long Register 3.47 +instruct loadI2L_immU12(iRegL dst, memory mem, immU12 mask) %{ 3.48 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 3.49 ins_cost(MEMORY_REF_COST + DEFAULT_COST); 3.50 3.51 size(2*4); 3.52 - format %{ "LDUW $mem,$dst\t! int & 13-bit mask -> long\n\t" 3.53 + format %{ "LDUW $mem,$dst\t! int & 12-bit mask -> long\n\t" 3.54 "AND $dst,$mask,$dst" %} 3.55 ins_encode %{ 3.56 Register Rdst = $dst$$Register; 3.57 @@ -5858,14 +5868,13 @@ 3.58 ins_pipe(iload_mem); 3.59 %} 3.60 3.61 -// Load Integer with a 32-bit mask into a Long Register 3.62 -instruct loadI2L_immI(iRegL dst, memory mem, immI mask, iRegL tmp) %{ 3.63 +// Load Integer with a 31-bit mask into a Long Register 3.64 +instruct loadI2L_immU31(iRegL dst, memory mem, immU31 mask, iRegL tmp) %{ 3.65 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 3.66 effect(TEMP dst, TEMP tmp); 3.67 ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST); 3.68 3.69 - size((3+1)*4); // set may use two instructions. 3.70 - format %{ "LDUW $mem,$dst\t! int & 32-bit mask -> long\n\t" 3.71 + format %{ "LDUW $mem,$dst\t! int & 31-bit mask -> long\n\t" 3.72 "SET $mask,$tmp\n\t" 3.73 "AND $dst,$tmp,$dst" %} 3.74 ins_encode %{ 3.75 @@ -8960,7 +8969,7 @@ 3.76 ins_pipe(ialu_cconly_reg_reg); 3.77 %} 3.78 3.79 -instruct compU_iReg_imm13(flagsRegU icc, iRegI op1, immU13 op2 ) %{ 3.80 +instruct compU_iReg_imm13(flagsRegU icc, iRegI op1, immU12 op2 ) %{ 3.81 match(Set icc (CmpU op1 op2)); 3.82 3.83 size(4);
4.1 --- a/src/cpu/x86/vm/x86_32.ad Tue Jan 28 14:56:01 2014 -0800 4.2 +++ b/src/cpu/x86/vm/x86_32.ad Thu Jan 30 14:09:56 2014 -0800 4.3 @@ -3889,6 +3889,17 @@ 4.4 interface(CONST_INTER); 4.5 %} 4.6 4.7 +// Int Immediate non-negative 4.8 +operand immU31() 4.9 +%{ 4.10 + predicate(n->get_int() >= 0); 4.11 + match(ConI); 4.12 + 4.13 + op_cost(0); 4.14 + format %{ %} 4.15 + interface(CONST_INTER); 4.16 +%} 4.17 + 4.18 // Constant for long shifts 4.19 operand immI_32() %{ 4.20 predicate( n->get_int() == 32 ); 4.21 @@ -6119,12 +6130,12 @@ 4.22 ins_pipe(ialu_reg_mem); 4.23 %} 4.24 4.25 -// Load Integer with 32-bit mask into Long Register 4.26 -instruct loadI2L_immI(eRegL dst, memory mem, immI mask, eFlagsReg cr) %{ 4.27 +// Load Integer with 31-bit mask into Long Register 4.28 +instruct loadI2L_immU31(eRegL dst, memory mem, immU31 mask, eFlagsReg cr) %{ 4.29 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 4.30 effect(KILL cr); 4.31 4.32 - format %{ "MOV $dst.lo,$mem\t# int & 32-bit mask -> long\n\t" 4.33 + format %{ "MOV $dst.lo,$mem\t# int & 31-bit mask -> long\n\t" 4.34 "XOR $dst.hi,$dst.hi\n\t" 4.35 "AND $dst.lo,$mask" %} 4.36 ins_encode %{
5.1 --- a/src/cpu/x86/vm/x86_64.ad Tue Jan 28 14:56:01 2014 -0800 5.2 +++ b/src/cpu/x86/vm/x86_64.ad Thu Jan 30 14:09:56 2014 -0800 5.3 @@ -3086,6 +3086,17 @@ 5.4 interface(CONST_INTER); 5.5 %} 5.6 5.7 +// Int Immediate non-negative 5.8 +operand immU31() 5.9 +%{ 5.10 + predicate(n->get_int() >= 0); 5.11 + match(ConI); 5.12 + 5.13 + op_cost(0); 5.14 + format %{ %} 5.15 + interface(CONST_INTER); 5.16 +%} 5.17 + 5.18 // Constant for long shifts 5.19 operand immI_32() 5.20 %{ 5.21 @@ -5042,12 +5053,12 @@ 5.22 ins_pipe(ialu_reg_mem); 5.23 %} 5.24 5.25 -// Load Integer with a 32-bit mask into Long Register 5.26 -instruct loadI2L_immI(rRegL dst, memory mem, immI mask, rFlagsReg cr) %{ 5.27 +// Load Integer with a 31-bit mask into Long Register 5.28 +instruct loadI2L_immU31(rRegL dst, memory mem, immU31 mask, rFlagsReg cr) %{ 5.29 match(Set dst (ConvI2L (AndI (LoadI mem) mask))); 5.30 effect(KILL cr); 5.31 5.32 - format %{ "movl $dst, $mem\t# int & 32-bit mask -> long\n\t" 5.33 + format %{ "movl $dst, $mem\t# int & 31-bit mask -> long\n\t" 5.34 "andl $dst, $mask" %} 5.35 ins_encode %{ 5.36 Register Rdst = $dst$$Register;
6.1 --- a/src/share/vm/code/dependencies.cpp Tue Jan 28 14:56:01 2014 -0800 6.2 +++ b/src/share/vm/code/dependencies.cpp Thu Jan 30 14:09:56 2014 -0800 6.3 @@ -1161,11 +1161,9 @@ 6.4 6.5 // We could also return false if m does not yet appear to be 6.6 // executed, if the VM version supports this distinction also. 6.7 + // Default methods are considered "concrete" as well. 6.8 return !m->is_abstract() && 6.9 - !InstanceKlass::cast(m->method_holder())->is_interface(); 6.10 - // TODO: investigate whether default methods should be 6.11 - // considered as "concrete" in this situation. For now they 6.12 - // are not. 6.13 + !m->is_overpass(); // error functions aren't concrete 6.14 } 6.15 6.16
7.1 --- a/src/share/vm/opto/c2_globals.hpp Tue Jan 28 14:56:01 2014 -0800 7.2 +++ b/src/share/vm/opto/c2_globals.hpp Thu Jan 30 14:09:56 2014 -0800 7.3 @@ -445,7 +445,7 @@ 7.4 notproduct(bool, PrintEliminateLocks, false, \ 7.5 "Print out when locks are eliminated") \ 7.6 \ 7.7 - product(bool, EliminateAutoBox, true, \ 7.8 + product(bool, EliminateAutoBox, false, \ 7.9 "Control optimizations for autobox elimination") \ 7.10 \ 7.11 experimental(bool, UseImplicitStableValues, false, \
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 8.2 +++ b/test/compiler/codegen/LoadWithMask.java Thu Jan 30 14:09:56 2014 -0800 8.3 @@ -0,0 +1,44 @@ 8.4 +/* 8.5 + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 8.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 8.7 + * 8.8 + * This code is free software; you can redistribute it and/or modify it 8.9 + * under the terms of the GNU General Public License version 2 only, as 8.10 + * published by the Free Software Foundation. 8.11 + * 8.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 8.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 8.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 8.15 + * version 2 for more details (a copy is included in the LICENSE file that 8.16 + * accompanied this code). 8.17 + * 8.18 + * You should have received a copy of the GNU General Public License version 8.19 + * 2 along with this work; if not, write to the Free Software Foundation, 8.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 8.21 + * 8.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 8.23 + * or visit www.oracle.com if you need additional information or have any 8.24 + * questions. 8.25 + */ 8.26 + 8.27 +/* 8.28 + * @test 8.29 + * @bug 8032207 8.30 + * @summary Invalid node sizing for loadUS2L_immI16 and loadI2L_immI 8.31 + * @run main/othervm -server -Xbatch -XX:-TieredCompilation -XX:CompileCommand=compileonly,LoadWithMask.foo LoadWithMask 8.32 + * 8.33 + */ 8.34 +public class LoadWithMask { 8.35 + static int x[] = new int[1]; 8.36 + static long foo() { 8.37 + return x[0] & 0xfff0ffff; 8.38 + } 8.39 + 8.40 + public static void main(String[] args) { 8.41 + x[0] = -1; 8.42 + long l = 0; 8.43 + for (int i = 0; i < 100000; ++i) { 8.44 + l = foo(); 8.45 + } 8.46 + } 8.47 +}
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/test/compiler/codegen/LoadWithMask2.java Thu Jan 30 14:09:56 2014 -0800 9.3 @@ -0,0 +1,55 @@ 9.4 +/* 9.5 + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 9.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 9.7 + * 9.8 + * This code is free software; you can redistribute it and/or modify it 9.9 + * under the terms of the GNU General Public License version 2 only, as 9.10 + * published by the Free Software Foundation. 9.11 + * 9.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 9.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 9.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 9.15 + * version 2 for more details (a copy is included in the LICENSE file that 9.16 + * accompanied this code). 9.17 + * 9.18 + * You should have received a copy of the GNU General Public License version 9.19 + * 2 along with this work; if not, write to the Free Software Foundation, 9.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 9.21 + * 9.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 9.23 + * or visit www.oracle.com if you need additional information or have any 9.24 + * questions. 9.25 + */ 9.26 + 9.27 +/* 9.28 + * @test 9.29 + * @bug 8031743 9.30 + * @summary loadI2L_immI broken for negative memory values 9.31 + * @run main/othervm -server -Xbatch -XX:-TieredCompilation -XX:CompileCommand=compileonly,*.foo* LoadWithMask2 9.32 + * 9.33 + */ 9.34 +public class LoadWithMask2 { 9.35 + static int x; 9.36 + static long foo1() { 9.37 + return x & 0xfffffffe; 9.38 + } 9.39 + static long foo2() { 9.40 + return x & 0xff000000; 9.41 + } 9.42 + static long foo3() { 9.43 + return x & 0x8abcdef1; 9.44 + } 9.45 + 9.46 + public static void main(String[] args) { 9.47 + x = -1; 9.48 + long l = 0; 9.49 + for (int i = 0; i < 100000; ++i) { 9.50 + l = foo1() & foo2() & foo3(); 9.51 + } 9.52 + if (l > 0) { 9.53 + System.out.println("FAILED"); 9.54 + System.exit(97); 9.55 + } 9.56 + System.out.println("PASSED"); 9.57 + } 9.58 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/test/compiler/inlining/DefaultAndConcreteMethodsCHA.java Thu Jan 30 14:09:56 2014 -0800 10.3 @@ -0,0 +1,58 @@ 10.4 +/* 10.5 + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 10.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 10.7 + * 10.8 + * This code is free software; you can redistribute it and/or modify it 10.9 + * under the terms of the GNU General Public License version 2 only, as 10.10 + * published by the Free Software Foundation. 10.11 + * 10.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 10.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 10.15 + * version 2 for more details (a copy is included in the LICENSE file that 10.16 + * accompanied this code). 10.17 + * 10.18 + * You should have received a copy of the GNU General Public License version 10.19 + * 2 along with this work; if not, write to the Free Software Foundation, 10.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 10.21 + * 10.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 10.23 + * or visit www.oracle.com if you need additional information or have any 10.24 + * questions. 10.25 + */ 10.26 + 10.27 +/** 10.28 + * @test 10.29 + * @bug 8031695 10.30 + * @summary CHA ignores default methods during analysis leading to incorrect code generation 10.31 + * 10.32 + * @run main/othervm -Xbatch DefaultAndConcreteMethodsCHA 10.33 + */ 10.34 +interface I { 10.35 + default int m() { return 0; } 10.36 +} 10.37 + 10.38 +class A implements I {} 10.39 + 10.40 +class C extends A { } 10.41 +class D extends A { public int m() { return 1; } } 10.42 + 10.43 +public class DefaultAndConcreteMethodsCHA { 10.44 + public static int test(A obj) { 10.45 + return obj.m(); 10.46 + } 10.47 + public static void main(String[] args) { 10.48 + for (int i = 0; i < 10000; i++) { 10.49 + int idC = test(new C()); 10.50 + if (idC != 0) { 10.51 + throw new Error("C.m didn't invoke I.m: id "+idC); 10.52 + } 10.53 + 10.54 + int idD = test(new D()); 10.55 + if (idD != 1) { 10.56 + throw new Error("D.m didn't invoke D.m: id "+idD); 10.57 + } 10.58 + } 10.59 + 10.60 + } 10.61 +}