src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalOSRTest.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalOSRTest.java Mon Mar 20 17:38:21 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalOSRTest.java Mon Mar 20 17:38:21 2017
*** 20,52 ****
--- 20,102 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.graalvm.compiler.hotspot.test;
import org.junit.Test;
import org.graalvm.compiler.api.directives.GraalDirectives;
+ import org.junit.Assert;
+ import org.junit.Test;
/**
* Test on-stack-replacement with Graal. The test manually triggers a Graal OSR-compilation which is
* later invoked when hitting the backedge counter overflow.
*/
public class GraalOSRTest extends GraalOSRTestBase {
@Test
! public void testOSR01() {
! testOSR("test");
! try {
+ testOSR(getInitialOptions(), "testReduceLoop");
+ } catch (Throwable t) {
+ Assert.assertEquals("OSR compilation without OSR entry loop.", t.getMessage());
+ }
+ }
+
+ @Test
+ public void testOSR02() {
+ testOSR(getInitialOptions(), "testSequentialLoop");
+ }
+
+ @Test
+ public void testOSR03() {
+ testOSR(getInitialOptions(), "testNonReduceLoop");
}
static int limit = 10000;
! public static ReturnValue test() {
! public static int sideEffect;
+
+ public static ReturnValue testReduceLoop() {
for (int i = 0; i < limit * limit; i++) {
GraalDirectives.blackhole(i);
if (GraalDirectives.inCompiledCode()) {
return ReturnValue.SUCCESS;
}
}
return ReturnValue.FAILURE;
}
+ public static ReturnValue testSequentialLoop() {
+ ReturnValue ret = ReturnValue.FAILURE;
+ for (int i = 1; i < limit * limit; i++) {
+ GraalDirectives.blackhole(i);
+ if (i % 7 == 0) {
+ ret = ReturnValue.SUCCESS;
+ }
+ }
+ GraalDirectives.controlFlowAnchor();
+ if (sideEffect == 123) {
+ return ReturnValue.SIDE;
+ }
+ for (int i = 1; i < limit * limit; i++) {
+ GraalDirectives.blackhole(i);
+ if (i % 33 == 0) {
+ ret = ReturnValue.SUCCESS;
+ }
+ }
+ GraalDirectives.controlFlowAnchor();
+ return ret;
+ }
+
+ public static ReturnValue testNonReduceLoop() {
+ ReturnValue ret = ReturnValue.FAILURE;
+ for (int i = 0; i < limit * limit; i++) {
+ GraalDirectives.blackhole(i);
+ if (i % 33 == 0) {
+ ret = ReturnValue.SUCCESS;
+ }
+ }
+ GraalDirectives.controlFlowAnchor();
+ return ret;
+ }
+
}
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/GraalOSRTest.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File