< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/inlining/PolymorphicInliningTest.java

Print this page
rev 52509 : [mq]: graal2


  31 import jdk.vm.ci.meta.ResolvedJavaMethod;
  32 import org.graalvm.compiler.core.test.GraalCompilerTest;
  33 import org.graalvm.compiler.debug.DebugContext;
  34 import org.graalvm.compiler.debug.DebugDumpScope;
  35 import org.graalvm.compiler.graph.Node;
  36 import org.graalvm.compiler.nodes.DeoptimizeNode;
  37 import org.graalvm.compiler.nodes.InvokeNode;
  38 import org.graalvm.compiler.nodes.StructuredGraph;
  39 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
  40 import org.graalvm.compiler.nodes.StructuredGraph.Builder;
  41 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
  42 import org.graalvm.compiler.nodes.java.TypeSwitchNode;
  43 import org.graalvm.compiler.phases.OptimisticOptimizations;
  44 import org.graalvm.compiler.phases.PhaseSuite;
  45 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
  46 import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase;
  47 import org.graalvm.compiler.phases.common.inlining.InliningPhase;
  48 import org.graalvm.compiler.phases.tiers.HighTierContext;
  49 import org.graalvm.compiler.test.SubprocessUtil;
  50 import org.junit.Assert;


  51 import org.junit.Test;
  52 
  53 import java.io.IOException;
  54 import java.util.List;
  55 
  56 public class PolymorphicInliningTest extends GraalCompilerTest {





  57 
  58     @Test
  59     public void testInSubprocess() throws InterruptedException, IOException {
  60         String recursionPropName = getClass().getName() + ".recursion";
  61         if (Boolean.getBoolean(recursionPropName)) {
  62             testPolymorphicInlining();
  63             testPolymorphicNotInlining();
  64             testMegamorphicInlining();
  65             testMegamorphicNotInlining();
  66         } else {
  67             List<String> vmArgs = withoutDebuggerArguments(getVMCommandLine());
  68             NotInlinableSubClass.class.getCanonicalName();
  69             vmArgs.add("-XX:CompileCommand=dontinline,org/graalvm/compiler/core/test/inlining/PolymorphicInliningTest$NotInlinableSubClass.publicOverriddenMethod");
  70             vmArgs.add("-D" + recursionPropName + "=true");
  71             SubprocessUtil.Subprocess proc = java(vmArgs, "com.oracle.mxtool.junit.MxJUnitWrapper", getClass().getName());
  72             if (proc.exitCode != 0) {
  73                 Assert.fail(String.format("non-zero exit code %d for command:%n%s", proc.exitCode, proc));
  74             }
  75         }
  76     }




  31 import jdk.vm.ci.meta.ResolvedJavaMethod;
  32 import org.graalvm.compiler.core.test.GraalCompilerTest;
  33 import org.graalvm.compiler.debug.DebugContext;
  34 import org.graalvm.compiler.debug.DebugDumpScope;
  35 import org.graalvm.compiler.graph.Node;
  36 import org.graalvm.compiler.nodes.DeoptimizeNode;
  37 import org.graalvm.compiler.nodes.InvokeNode;
  38 import org.graalvm.compiler.nodes.StructuredGraph;
  39 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
  40 import org.graalvm.compiler.nodes.StructuredGraph.Builder;
  41 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
  42 import org.graalvm.compiler.nodes.java.TypeSwitchNode;
  43 import org.graalvm.compiler.phases.OptimisticOptimizations;
  44 import org.graalvm.compiler.phases.PhaseSuite;
  45 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
  46 import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase;
  47 import org.graalvm.compiler.phases.common.inlining.InliningPhase;
  48 import org.graalvm.compiler.phases.tiers.HighTierContext;
  49 import org.graalvm.compiler.test.SubprocessUtil;
  50 import org.junit.Assert;
  51 import org.junit.Assume;
  52 import org.junit.Before;
  53 import org.junit.Test;
  54 
  55 import java.io.IOException;
  56 import java.util.List;
  57 
  58 public class PolymorphicInliningTest extends GraalCompilerTest {
  59 
  60     @Before
  61     public void checkJavaAgent() {
  62         Assume.assumeFalse("Java Agent found -> skipping", SubprocessUtil.isJavaAgentAttached());
  63     }
  64 
  65     @Test
  66     public void testInSubprocess() throws InterruptedException, IOException {
  67         String recursionPropName = getClass().getName() + ".recursion";
  68         if (Boolean.getBoolean(recursionPropName)) {
  69             testPolymorphicInlining();
  70             testPolymorphicNotInlining();
  71             testMegamorphicInlining();
  72             testMegamorphicNotInlining();
  73         } else {
  74             List<String> vmArgs = withoutDebuggerArguments(getVMCommandLine());
  75             NotInlinableSubClass.class.getCanonicalName();
  76             vmArgs.add("-XX:CompileCommand=dontinline,org/graalvm/compiler/core/test/inlining/PolymorphicInliningTest$NotInlinableSubClass.publicOverriddenMethod");
  77             vmArgs.add("-D" + recursionPropName + "=true");
  78             SubprocessUtil.Subprocess proc = java(vmArgs, "com.oracle.mxtool.junit.MxJUnitWrapper", getClass().getName());
  79             if (proc.exitCode != 0) {
  80                 Assert.fail(String.format("non-zero exit code %d for command:%n%s", proc.exitCode, proc));
  81             }
  82         }
  83     }


< prev index next >