26
26
* @summary test tracking of strict static fields
27
27
* @run main/othervm strictStatic.StrictStaticTests
28
28
*
29
- * [@] test id=C1only
30
- * [@] run main/othervm -XX:TieredStopAtLevel=2 -Xcomp -Xbatch strictStatic.StrictStaticTests
29
+ * @ test id=C1only
30
+ * @ run main/othervm -XX:TieredStopAtLevel=2 -Xcomp -Xbatch strictStatic.StrictStaticTests
31
31
*
32
- * [@] test id=C2only
33
- * [@] run main/othervm -XX:-TieredCompilation -Xcomp -Xbatch strictStatic.StrictStaticTests
32
+ * @ test id=C2only
33
+ * @ run main/othervm -XX:-TieredCompilation -Xcomp -Xbatch strictStatic.StrictStaticTests
34
34
*
35
35
* @test id=EnforceStrictStatics-2
36
36
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:EnforceStrictStatics=2 -DXX_EnforceStrictStatics=2 strictStatic.StrictStaticTests
@@ -177,13 +177,17 @@ static void testPositives(boolean finals) {
177
177
for (var staticType : STATIC_TYPES ) {
178
178
for (int writeCount = 1 ; writeCount <= 3 ; writeCount ++) {
179
179
for (byte readFlag = 0 ; readFlag <= 1 ; readFlag ++) {
180
+ if (writeCount > readFlag && XX_EnforceStrictStatics >= 2 )
181
+ continue ;
180
182
for (int extraCount = 0 ; extraCount <= 3 ; extraCount ++) {
181
- var cn = String .format ("Positive%s%sW%d%sE%d" ,
183
+ if (extraCount > 0 && staticType != String .class ) continue ;
184
+ var cn = String .format ("Positive_T%s%s_W%d%s%s" ,
182
185
staticType .getSimpleName (),
183
- (finals ? "SSF " : "" ),
186
+ (finals ? "_SSFinal " : "" ),
184
187
writeCount ,
185
- readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "" ,
186
- extraCount );
188
+ (readFlag > 0 ? "_Rafter" :
189
+ readFlag < 0 ? "_Rbefore" : "" ),
190
+ (extraCount > 0 ? "_E" +extraCount : "" ));
187
191
var cls = buildClass (cn , staticType , writeCount , readFlag , extraCount , finals );
188
192
try {
189
193
LOOKUP .ensureInitialized (cls );
@@ -203,15 +207,23 @@ static void testFailedWrites() {
203
207
}
204
208
static void testFailedWrites (boolean finals ) {
205
209
for (var staticType : STATIC_TYPES ) {
206
- for (int writeCount = 0 ; writeCount <= 0 ; writeCount ++) {
207
- for (byte readFlag = 0 ; readFlag <= 0 ; readFlag ++) {
210
+ for (int writeCount = 0 ; writeCount <= 2 ; writeCount ++) {
211
+ for (byte readFlag = 0 ; readFlag <= 1 ; readFlag ++) {
212
+ if (readFlag > 0 || writeCount > 0 ) {
213
+ if (XX_EnforceStrictStatics <= 1 || !finals || writeCount < 2 )
214
+ continue ;
215
+ if (XX_EnforceStrictStatics == 2 && readFlag <= 0 )
216
+ continue ; // Mode 2 fails only with R between 2W: W-R-W
217
+ }
208
218
for (int extraCount = 0 ; extraCount <= 3 ; extraCount ++) {
209
- var cn = String .format ("BadWrite%s%sW%d%sE%d" ,
219
+ if (extraCount > 0 && staticType != String .class ) continue ;
220
+ var cn = String .format ("BadWrite_T%s%s_W%d%s%s" ,
210
221
staticType .getSimpleName (),
211
- (finals ? "SSF " : "" ),
222
+ (finals ? "_SSFinal " : "" ),
212
223
writeCount ,
213
- readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "" ,
214
- extraCount );
224
+ (readFlag > 0 ? "_Rafter" :
225
+ readFlag < 0 ? "_Rbefore" : "" ),
226
+ (extraCount > 0 ? "_E" +extraCount : "" ));
215
227
var cls = buildClass (cn , staticType , writeCount , readFlag , extraCount , finals );
216
228
try {
217
229
LOOKUP .ensureInitialized (cls );
@@ -233,12 +245,14 @@ static void testFailedReads(boolean finals) {
233
245
for (int writeCount = 0 ; writeCount <= 1 ; writeCount ++) {
234
246
for (byte readFlag = -1 ; readFlag <= -1 ; readFlag ++) {
235
247
for (int extraCount = 0 ; extraCount <= 3 ; extraCount ++) {
236
- var cn = String .format ("BadRead%s%sW%d%sE%d" ,
248
+ if (extraCount > 0 && staticType != String .class ) continue ;
249
+ var cn = String .format ("BadRead_T%s%s_W%d_%s%s" ,
237
250
staticType .getSimpleName (),
238
- (finals ? "SSF " : "" ),
251
+ (finals ? "_SSFinal " : "" ),
239
252
writeCount ,
240
- readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "" ,
241
- extraCount );
253
+ (readFlag > 0 ? "_Rafter" :
254
+ readFlag < 0 ? "_Rbefore" : "" ),
255
+ (extraCount > 0 ? "_E" +extraCount : "" ));
242
256
var cls = buildClass (cn , staticType , writeCount , readFlag , extraCount , finals );
243
257
try {
244
258
LOOKUP .ensureInitialized (cls );
@@ -266,11 +280,8 @@ private static void reportThrow(boolean ok, Throwable ex, String cn) {
266
280
}
267
281
}
268
282
269
- static final int XX_EnforceStrictStatics ;
270
- static {
271
- var p = System .getProperty ("XX_EnforceStrictStatics" );
272
- XX_EnforceStrictStatics = (p == null ) ? 1 : Integer .parseInt (p );
273
- }
283
+ static final int XX_EnforceStrictStatics
284
+ = Integer .getInteger ("XX_EnforceStrictStatics" , 1 );
274
285
275
286
public static void main (String ... av ) {
276
287
System .out .printf ("-XX:EnforceStrictStatics=%d\n " , XX_EnforceStrictStatics );
0 commit comments