1.1 --- a/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java Thu May 28 16:46:23 2015 -0700 1.2 +++ b/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java Mon Jun 01 11:07:29 2015 -0700 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -25,9 +25,9 @@ 1.11 1.12 /* 1.13 * @test 1.14 - * @bug 7153958 1.15 + * @bug 7153958 8073372 1.16 * @summary add constant pool reference to class containing inlined constants 1.17 - * @compile pkg/ClassToBeStaticallyImported.java CPoolRefClassContainingInlinedCts.java 1.18 + * @compile pkg/ClassToBeStaticallyImportedA.java pkg/ClassToBeStaticallyImportedB.java CPoolRefClassContainingInlinedCts.java 1.19 * @run main CPoolRefClassContainingInlinedCts 1.20 */ 1.21 1.22 @@ -38,7 +38,8 @@ 1.23 import java.io.File; 1.24 import java.io.IOException; 1.25 1.26 -import static pkg.ClassToBeStaticallyImported.staticField; 1.27 +import static pkg.ClassToBeStaticallyImportedA.staticFieldA; 1.28 +import static pkg.ClassToBeStaticallyImportedB.staticFieldB; 1.29 1.30 public class CPoolRefClassContainingInlinedCts { 1.31 1.32 @@ -54,10 +55,14 @@ 1.33 1.34 void checkClassName(String className) { 1.35 switch (className) { 1.36 - case "SimpleAssignClass" : case "BinaryExpClass": 1.37 - case "UnaryExpClass" : case "CastClass": 1.38 - case "ParensClass" : case "CondClass": 1.39 - case "IfClass" : case "pkg/ClassToBeStaticallyImported": 1.40 + case "SimpleAssignClassA" : case "BinaryExpClassA": 1.41 + case "UnaryExpClassA" : case "CastClassA": 1.42 + case "ParensClassA" : case "CondClassA": 1.43 + case "IfClassA" : case "pkg/ClassToBeStaticallyImportedA": 1.44 + case "SimpleAssignClassB" : case "BinaryExpClassB": 1.45 + case "UnaryExpClassB" : case "CastClassB": 1.46 + case "ParensClassB" : case "CondClassB": 1.47 + case "IfClassB" : case "pkg/ClassToBeStaticallyImportedB": 1.48 numberOfReferencedClassesToBeChecked++; 1.49 } 1.50 } 1.51 @@ -76,59 +81,111 @@ 1.52 } 1.53 i += cpInfo.size(); 1.54 } 1.55 - if (numberOfReferencedClassesToBeChecked != 8) { 1.56 + if (numberOfReferencedClassesToBeChecked != 16) { 1.57 throw new AssertionError("Class reference missing in the constant pool"); 1.58 } 1.59 } 1.60 1.61 - private int assign = SimpleAssignClass.x; 1.62 - private int binary = BinaryExpClass.x + 1; 1.63 - private int unary = -UnaryExpClass.x; 1.64 - private int cast = (int)CastClass.x; 1.65 - private int parens = (ParensClass.x); 1.66 - private int cond = (CondClass.x == 1) ? 1 : 2; 1.67 - private static int ifConstant; 1.68 - private static int importStatic; 1.69 + private int assignA = SimpleAssignClassA.x; 1.70 + private int binaryA = BinaryExpClassA.x + 1; 1.71 + private int unaryA = -UnaryExpClassA.x; 1.72 + private int castA = (int)CastClassA.x; 1.73 + private int parensA = (ParensClassA.x); 1.74 + private int condA = (CondClassA.x == 1) ? 1 : 2; 1.75 + private static int ifConstantA; 1.76 + private static int importStaticA; 1.77 static { 1.78 - if (IfClass.x == 1) { 1.79 - ifConstant = 1; 1.80 + if (IfClassA.x == 1) { 1.81 + ifConstantA = 1; 1.82 } else { 1.83 - ifConstant = 2; 1.84 + ifConstantA = 2; 1.85 } 1.86 } 1.87 static { 1.88 - if (staticField == 1) { 1.89 - importStatic = 1; 1.90 + if (staticFieldA == 1) { 1.91 + importStaticA = 1; 1.92 } else { 1.93 - importStatic = 2; 1.94 + importStaticA = 2; 1.95 + } 1.96 + } 1.97 + 1.98 + // now as final constants 1.99 + private static final int assignB = SimpleAssignClassB.x; 1.100 + private static final int binaryB = BinaryExpClassB.x + 1; 1.101 + private static final int unaryB = -UnaryExpClassB.x; 1.102 + private static final int castB = (int)CastClassB.x; 1.103 + private static final int parensB = (ParensClassB.x); 1.104 + private static final int condB = (CondClassB.x == 1) ? 1 : 2; 1.105 + private static final int ifConstantB; 1.106 + private static final int importStaticB; 1.107 + static { 1.108 + if (IfClassB.x == 1) { 1.109 + ifConstantB = 1; 1.110 + } else { 1.111 + ifConstantB = 2; 1.112 + } 1.113 + } 1.114 + static { 1.115 + if (staticFieldB == 1) { 1.116 + importStaticB = 1; 1.117 + } else { 1.118 + importStaticB = 2; 1.119 } 1.120 } 1.121 } 1.122 1.123 -class SimpleAssignClass { 1.124 +class SimpleAssignClassA { 1.125 public static final int x = 1; 1.126 } 1.127 1.128 -class BinaryExpClass { 1.129 +class SimpleAssignClassB { 1.130 public static final int x = 1; 1.131 } 1.132 1.133 -class UnaryExpClass { 1.134 +class BinaryExpClassA { 1.135 public static final int x = 1; 1.136 } 1.137 1.138 -class CastClass { 1.139 +class BinaryExpClassB { 1.140 public static final int x = 1; 1.141 } 1.142 1.143 -class ParensClass { 1.144 +class UnaryExpClassA { 1.145 public static final int x = 1; 1.146 } 1.147 1.148 -class CondClass { 1.149 +class UnaryExpClassB { 1.150 public static final int x = 1; 1.151 } 1.152 1.153 -class IfClass { 1.154 +class CastClassA { 1.155 public static final int x = 1; 1.156 } 1.157 + 1.158 +class CastClassB { 1.159 + public static final int x = 1; 1.160 +} 1.161 + 1.162 +class ParensClassA { 1.163 + public static final int x = 1; 1.164 +} 1.165 + 1.166 +class ParensClassB { 1.167 + public static final int x = 1; 1.168 +} 1.169 + 1.170 +class CondClassA { 1.171 + public static final int x = 1; 1.172 +} 1.173 + 1.174 +class CondClassB { 1.175 + public static final int x = 1; 1.176 +} 1.177 + 1.178 +class IfClassA { 1.179 + public static final int x = 1; 1.180 +} 1.181 + 1.182 +class IfClassB { 1.183 + public static final int x = 1; 1.184 +}