diff options
| author | 2017-06-22 13:51:52 +0000 | |
|---|---|---|
| committer | 2017-06-22 13:51:54 +0000 | |
| commit | 5154e2a89ab0a6e3a34ffcb315d65c3e12ed15e3 (patch) | |
| tree | 2babb95a524cff21a395bafcfc7d48474f186fec | |
| parent | 8979f71079ec18fa8d3c0915549ec03ee1fbadf5 (diff) | |
| parent | f48029f18bd0b5f574148d6f89da78ac8f67ff3b (diff) | |
Merge "More robust 652-deopt-intrinsic."
| -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); } |