Merge

Thu, 30 Jan 2014 14:09:56 -0800

author
asaha
date
Thu, 30 Jan 2014 14:09:56 -0800
changeset 6579
a9e1716111a7
parent 6578
2fdc8a2268d2
parent 6297
874c0b4a946c
child 6580
4536a5ffd9b1

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 +}

mercurial