Skip to content

Commit 0ef70c8

Browse files
author
John Rose
committed
improve test coverage
1 parent 6e0f1d2 commit 0ef70c8

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed

src/hotspot/share/interpreter/interpreterRuntime.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,7 @@ void InterpreterRuntime::resolve_get_put(Bytecodes::Code bytecode, int field_ind
733733
// the "unset" flag, perhaps by making a second downcall.
734734
}
735735
#endif //end sample code
736-
736+
737737
if (do_notify) {
738738
klass->notify_strict_static_access(info.index(), is_put, CHECK);
739739
}

test/hotspot/jtreg/runtime/strictStatic/StrictStaticTests.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
* @summary test tracking of strict static fields
2727
* @run main/othervm strictStatic.StrictStaticTests
2828
*
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
3131
*
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
3434
*
3535
* @test id=EnforceStrictStatics-2
3636
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:EnforceStrictStatics=2 -DXX_EnforceStrictStatics=2 strictStatic.StrictStaticTests
@@ -177,13 +177,17 @@ static void testPositives(boolean finals) {
177177
for (var staticType : STATIC_TYPES) {
178178
for (int writeCount = 1; writeCount <= 3; writeCount++) {
179179
for (byte readFlag = 0; readFlag <= 1; readFlag++) {
180+
if (writeCount > readFlag && XX_EnforceStrictStatics >= 2)
181+
continue;
180182
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",
182185
staticType.getSimpleName(),
183-
(finals ? "SSF" : ""),
186+
(finals ? "_SSFinal" : ""),
184187
writeCount,
185-
readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "",
186-
extraCount);
188+
(readFlag > 0 ? "_Rafter" :
189+
readFlag < 0 ? "_Rbefore" : ""),
190+
(extraCount > 0 ? "_E"+extraCount : ""));
187191
var cls = buildClass(cn, staticType, writeCount, readFlag, extraCount, finals);
188192
try {
189193
LOOKUP.ensureInitialized(cls);
@@ -203,15 +207,23 @@ static void testFailedWrites() {
203207
}
204208
static void testFailedWrites(boolean finals) {
205209
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+
}
208218
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",
210221
staticType.getSimpleName(),
211-
(finals ? "SSF" : ""),
222+
(finals ? "_SSFinal" : ""),
212223
writeCount,
213-
readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "",
214-
extraCount);
224+
(readFlag > 0 ? "_Rafter" :
225+
readFlag < 0 ? "_Rbefore" : ""),
226+
(extraCount > 0 ? "_E"+extraCount : ""));
215227
var cls = buildClass(cn, staticType, writeCount, readFlag, extraCount, finals);
216228
try {
217229
LOOKUP.ensureInitialized(cls);
@@ -233,12 +245,14 @@ static void testFailedReads(boolean finals) {
233245
for (int writeCount = 0; writeCount <= 1; writeCount++) {
234246
for (byte readFlag = -1; readFlag <= -1; readFlag++) {
235247
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",
237250
staticType.getSimpleName(),
238-
(finals ? "SSF" : ""),
251+
(finals ? "_SSFinal" : ""),
239252
writeCount,
240-
readFlag > 0 ? "Rafter" : readFlag < 0 ? "Rbefore" : "",
241-
extraCount);
253+
(readFlag > 0 ? "_Rafter" :
254+
readFlag < 0 ? "_Rbefore" : ""),
255+
(extraCount > 0 ? "_E"+extraCount : ""));
242256
var cls = buildClass(cn, staticType, writeCount, readFlag, extraCount, finals);
243257
try {
244258
LOOKUP.ensureInitialized(cls);
@@ -266,11 +280,8 @@ private static void reportThrow(boolean ok, Throwable ex, String cn) {
266280
}
267281
}
268282

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);
274285

275286
public static void main(String... av) {
276287
System.out.printf("-XX:EnforceStrictStatics=%d\n", XX_EnforceStrictStatics);

0 commit comments

Comments
 (0)