53 return GraalDirectives.inCompiledCode(); // should always return false
54 }
55
56 public static boolean deoptimizeAndInvalidateSnippet() {
57 GraalDirectives.deoptimizeAndInvalidate();
58 return GraalDirectives.inCompiledCode(); // should always return false
59 }
60
61 @Test
62 public void testDeoptimize() {
63 test("deoptimizeSnippet");
64 }
65
66 private boolean testDeoptimizeCheckValid(ResolvedJavaMethod method) {
67 Result expected = executeExpected(method, null);
68
69 InstalledCode code = getCode(method);
70 Result actual;
71 try {
72 actual = new Result(code.executeVarargs(), null);
73 } catch (Throwable e) {
74 actual = new Result(null, e);
75 }
76
77 assertEquals(expected, actual);
78 return code.isValid();
79 }
80
81 @Test
82 public void testDeoptimizeAndInvalidate() {
83 ResolvedJavaMethod method = getResolvedJavaMethod("deoptimizeAndInvalidateSnippet");
84 boolean valid = testDeoptimizeCheckValid(method);
85 Assert.assertFalse("code should be invalidated", valid);
86 }
87
88 @Test
89 public void testDeoptimizeDontInvalidate() {
90 ResolvedJavaMethod method = getResolvedJavaMethod("deoptimizeSnippet");
91 boolean valid = testDeoptimizeCheckValid(method);
92 Assert.assertTrue("code should still be valid", valid);
93 }
|
53 return GraalDirectives.inCompiledCode(); // should always return false
54 }
55
56 public static boolean deoptimizeAndInvalidateSnippet() {
57 GraalDirectives.deoptimizeAndInvalidate();
58 return GraalDirectives.inCompiledCode(); // should always return false
59 }
60
61 @Test
62 public void testDeoptimize() {
63 test("deoptimizeSnippet");
64 }
65
66 private boolean testDeoptimizeCheckValid(ResolvedJavaMethod method) {
67 Result expected = executeExpected(method, null);
68
69 InstalledCode code = getCode(method);
70 Result actual;
71 try {
72 actual = new Result(code.executeVarargs(), null);
73 } catch (Exception e) {
74 actual = new Result(null, e);
75 }
76
77 assertEquals(expected, actual);
78 return code.isValid();
79 }
80
81 @Test
82 public void testDeoptimizeAndInvalidate() {
83 ResolvedJavaMethod method = getResolvedJavaMethod("deoptimizeAndInvalidateSnippet");
84 boolean valid = testDeoptimizeCheckValid(method);
85 Assert.assertFalse("code should be invalidated", valid);
86 }
87
88 @Test
89 public void testDeoptimizeDontInvalidate() {
90 ResolvedJavaMethod method = getResolvedJavaMethod("deoptimizeSnippet");
91 boolean valid = testDeoptimizeCheckValid(method);
92 Assert.assertTrue("code should still be valid", valid);
93 }
|