diff options
| -rw-r--r-- | test/652-deopt-intrinsic/src/Main.java | 16 |
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); } |