summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/652-deopt-intrinsic/src/Main.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/test/652-deopt-intrinsic/src/Main.java b/test/652-deopt-intrinsic/src/Main.java
index a82580c8a1..8c583c0262 100644
--- a/test/652-deopt-intrinsic/src/Main.java
+++ b/test/652-deopt-intrinsic/src/Main.java
@@ -27,16 +27,22 @@ public class Main {
for (int i = 0; i < 5000; i++) {
$noinline$doCall("foo");
$noinline$doCall(m);
- if (numberOfDeoptimizations() != 0) {
- throw new Error("Unexpected deoptimizations");
- }
}
}
public static boolean $noinline$doCall(Object foo) {
- return foo.equals(Main.class);
+ boolean isCompiledAtEntry = !isInterpreted();
+ boolean result = foo.equals(Main.class);
+
+ // Test that the 'equals' above did not lead to a deoptimization.
+ if (isCompiledAtEntry) {
+ if (isInterpreted()) {
+ throw new Error("Unexpected deoptimization");
+ }
+ }
+ return result;
}
- public static native int numberOfDeoptimizations();
+ public static native boolean isInterpreted();
public static native void ensureJitCompiled(Class<?> cls, String methodName);
}