Skip to content

Commit 88d0d9f

Browse files
committed
[GR-48258] Add missing null receiver checks to Base64 intrinsics.
PullRequest: graal/15367
2 parents 28a4718 + d48e2c4 commit 88d0d9f

File tree

18 files changed

+733
-33
lines changed

18 files changed

+733
-33
lines changed

compiler/src/jdk.internal.vm.compiler.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import java.util.List;
5353
import java.util.ListIterator;
5454
import java.util.Map;
55+
import java.util.Random;
5556
import java.util.Set;
5657
import java.util.concurrent.ConcurrentHashMap;
5758
import java.util.function.Supplier;
@@ -1075,10 +1076,13 @@ protected final InstalledCode getCode(final ResolvedJavaMethod installedCodeOwne
10751076
protected InstalledCode getCode(final ResolvedJavaMethod installedCodeOwner, StructuredGraph graph, boolean forceCompile, boolean installAsDefault, OptionValues options) {
10761077
boolean useCache = !forceCompile && getArgumentToBind() == null;
10771078
if (useCache && graph == null) {
1078-
InstalledCode cached = cache.get().get(installedCodeOwner);
1079+
HashMap<ResolvedJavaMethod, InstalledCode> tlCache = cache.get();
1080+
InstalledCode cached = tlCache.get(installedCodeOwner);
10791081
if (cached != null) {
10801082
if (cached.isValid()) {
10811083
return cached;
1084+
} else {
1085+
tlCache.remove(installedCodeOwner);
10821086
}
10831087
}
10841088
}
@@ -1671,4 +1675,35 @@ protected boolean isArchitecture(String name) {
16711675
protected CanonicalizerPhase createCanonicalizerPhase() {
16721676
return CanonicalizerPhase.create();
16731677
}
1678+
1679+
/**
1680+
* Defines property name for seed value.
1681+
*/
1682+
public static final String SEED_PROPERTY_NAME = "test.graal.random.seed";
1683+
1684+
/**
1685+
* Globally shared, lazily initialized random generator.
1686+
*/
1687+
private static volatile Random randomGenerator;
1688+
1689+
/**
1690+
* Returns a global {@link java.util.Random} generator. The generator is seeded with the value
1691+
* specified by {@link #SEED_PROPERTY_NAME} if it exists.
1692+
*
1693+
* The used seed printed to stdout for reproducing test failures.
1694+
*/
1695+
public static Random getRandomInstance() {
1696+
if (randomGenerator == null) {
1697+
synchronized (GraalCompilerTest.class) {
1698+
if (randomGenerator == null) {
1699+
var seedLong = Long.getLong(SEED_PROPERTY_NAME);
1700+
var seed = seedLong != null ? seedLong : new Random().nextLong();
1701+
System.out.printf("Random generator seed: %d%n", seed);
1702+
System.out.printf("To re-run test with same seed, set \"-D%s=%d\" on command line.%n", SEED_PROPERTY_NAME, seed);
1703+
randomGenerator = new Random(seed);
1704+
}
1705+
}
1706+
}
1707+
return randomGenerator;
1708+
}
16741709
}

0 commit comments

Comments
 (0)