< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierVerificationTest.java

Print this page




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.hotspot.test;
  24 
  25 import java.util.List;
  26 
  27 import org.graalvm.compiler.debug.DebugCloseable;
  28 import org.graalvm.compiler.debug.DebugContext;
  29 import org.graalvm.compiler.debug.DebugContext.Scope;
  30 import org.graalvm.compiler.debug.DebugDumpScope;
  31 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  32 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePostWriteBarrier;
  33 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePreWriteBarrier;
  34 import org.graalvm.compiler.hotspot.nodes.G1PostWriteBarrier;
  35 import org.graalvm.compiler.hotspot.nodes.G1PreWriteBarrier;
  36 import org.graalvm.compiler.hotspot.nodes.SerialArrayRangeWriteBarrier;
  37 import org.graalvm.compiler.hotspot.nodes.SerialWriteBarrier;
  38 import org.graalvm.compiler.hotspot.phases.WriteBarrierAdditionPhase;
  39 import org.graalvm.compiler.hotspot.phases.WriteBarrierVerificationPhase;
  40 import org.graalvm.compiler.hotspot.replacements.arraycopy.UnsafeArrayCopyNode;
  41 import org.graalvm.compiler.nodes.AbstractBeginNode;
  42 import org.graalvm.compiler.nodes.AbstractMergeNode;
  43 import org.graalvm.compiler.nodes.FieldLocationIdentity;
  44 import org.graalvm.compiler.nodes.FixedNode;
  45 import org.graalvm.compiler.nodes.FixedWithNextNode;
  46 import org.graalvm.compiler.nodes.LoopBeginNode;
  47 import org.graalvm.compiler.nodes.LoopExitNode;
  48 import org.graalvm.compiler.nodes.StructuredGraph;
  49 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
  50 import org.graalvm.compiler.nodes.memory.WriteNode;
  51 import org.graalvm.compiler.nodes.spi.LoweringTool;
  52 import org.graalvm.compiler.phases.OptimisticOptimizations;
  53 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
  54 import org.graalvm.compiler.phases.common.GuardLoweringPhase;
  55 import org.graalvm.compiler.phases.common.LoopSafepointInsertionPhase;
  56 import org.graalvm.compiler.phases.common.LoweringPhase;
  57 import org.graalvm.compiler.phases.common.inlining.InliningPhase;
  58 import org.graalvm.compiler.phases.graph.ReentrantNodeIterator;
  59 import org.graalvm.compiler.phases.graph.ReentrantNodeIterator.NodeIteratorClosure;
  60 import org.graalvm.compiler.phases.tiers.HighTierContext;


 610         test("test12Snippet", 8, new int[]{5});
 611     }
 612 
 613     @Test
 614     public void test58() {
 615         test("test12Snippet", 8, new int[]{6});
 616     }
 617 
 618     @Test(expected = AssertionError.class)
 619     public void test59() {
 620         test("test12Snippet", 8, new int[]{7});
 621     }
 622 
 623     @Test(expected = AssertionError.class)
 624     public void test60() {
 625         test("test12Snippet", 8, new int[]{8});
 626     }
 627 
 628     public static void test13Snippet(Object[] a, Object[] b) {
 629         System.arraycopy(a, 0, b, 0, a.length);
 630     }
 631 
 632     @Test
 633     public void test61() {
 634         GraphPredicate checkForUnsafeArrayCopy = graph -> graph.getNodes().filter(UnsafeArrayCopyNode.class).count() > 0 ? 1 : 0;
 635         testPredicate("test13Snippet", checkForUnsafeArrayCopy, new int[]{});
 636     }
 637 
 638     private interface GraphPredicate {
 639         int apply(StructuredGraph graph);
 640     }
 641 
 642     private void test(final String snippet, final int expectedBarriers, final int... removedBarrierIndices) {
 643         GraphPredicate noCheck = noArg -> expectedBarriers;
 644         testPredicate(snippet, noCheck, removedBarrierIndices);
 645     }
 646 
 647     @SuppressWarnings("try")
 648     private void testPredicate(final String snippet, final GraphPredicate expectedBarriers, final int... removedBarrierIndices) {
 649         DebugContext debug = getDebugContext();
 650         try (DebugCloseable d = debug.disableIntercept(); DebugContext.Scope s = debug.scope("WriteBarrierVerificationTest", new DebugDumpScope(snippet))) {
 651             final StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES, debug);
 652             HighTierContext highTierContext = getDefaultHighTierContext();
 653             new InliningPhase(new CanonicalizerPhase()).apply(graph, highTierContext);
 654 
 655             MidTierContext midTierContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo());




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.hotspot.test;
  24 
  25 import java.util.List;
  26 
  27 import org.graalvm.compiler.debug.DebugCloseable;
  28 import org.graalvm.compiler.debug.DebugContext;
  29 import org.graalvm.compiler.debug.DebugContext.Scope;
  30 import org.graalvm.compiler.debug.DebugDumpScope;
  31 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  32 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePostWriteBarrier;
  33 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePreWriteBarrier;
  34 import org.graalvm.compiler.hotspot.nodes.G1PostWriteBarrier;
  35 import org.graalvm.compiler.hotspot.nodes.G1PreWriteBarrier;
  36 import org.graalvm.compiler.hotspot.nodes.SerialArrayRangeWriteBarrier;
  37 import org.graalvm.compiler.hotspot.nodes.SerialWriteBarrier;
  38 import org.graalvm.compiler.hotspot.phases.WriteBarrierAdditionPhase;
  39 import org.graalvm.compiler.hotspot.phases.WriteBarrierVerificationPhase;

  40 import org.graalvm.compiler.nodes.AbstractBeginNode;
  41 import org.graalvm.compiler.nodes.AbstractMergeNode;
  42 import org.graalvm.compiler.nodes.FieldLocationIdentity;
  43 import org.graalvm.compiler.nodes.FixedNode;
  44 import org.graalvm.compiler.nodes.FixedWithNextNode;
  45 import org.graalvm.compiler.nodes.LoopBeginNode;
  46 import org.graalvm.compiler.nodes.LoopExitNode;
  47 import org.graalvm.compiler.nodes.StructuredGraph;
  48 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
  49 import org.graalvm.compiler.nodes.memory.WriteNode;
  50 import org.graalvm.compiler.nodes.spi.LoweringTool;
  51 import org.graalvm.compiler.phases.OptimisticOptimizations;
  52 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
  53 import org.graalvm.compiler.phases.common.GuardLoweringPhase;
  54 import org.graalvm.compiler.phases.common.LoopSafepointInsertionPhase;
  55 import org.graalvm.compiler.phases.common.LoweringPhase;
  56 import org.graalvm.compiler.phases.common.inlining.InliningPhase;
  57 import org.graalvm.compiler.phases.graph.ReentrantNodeIterator;
  58 import org.graalvm.compiler.phases.graph.ReentrantNodeIterator.NodeIteratorClosure;
  59 import org.graalvm.compiler.phases.tiers.HighTierContext;


 609         test("test12Snippet", 8, new int[]{5});
 610     }
 611 
 612     @Test
 613     public void test58() {
 614         test("test12Snippet", 8, new int[]{6});
 615     }
 616 
 617     @Test(expected = AssertionError.class)
 618     public void test59() {
 619         test("test12Snippet", 8, new int[]{7});
 620     }
 621 
 622     @Test(expected = AssertionError.class)
 623     public void test60() {
 624         test("test12Snippet", 8, new int[]{8});
 625     }
 626 
 627     public static void test13Snippet(Object[] a, Object[] b) {
 628         System.arraycopy(a, 0, b, 0, a.length);






 629     }
 630 
 631     private interface GraphPredicate {
 632         int apply(StructuredGraph graph);
 633     }
 634 
 635     private void test(final String snippet, final int expectedBarriers, final int... removedBarrierIndices) {
 636         GraphPredicate noCheck = noArg -> expectedBarriers;
 637         testPredicate(snippet, noCheck, removedBarrierIndices);
 638     }
 639 
 640     @SuppressWarnings("try")
 641     private void testPredicate(final String snippet, final GraphPredicate expectedBarriers, final int... removedBarrierIndices) {
 642         DebugContext debug = getDebugContext();
 643         try (DebugCloseable d = debug.disableIntercept(); DebugContext.Scope s = debug.scope("WriteBarrierVerificationTest", new DebugDumpScope(snippet))) {
 644             final StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES, debug);
 645             HighTierContext highTierContext = getDefaultHighTierContext();
 646             new InliningPhase(new CanonicalizerPhase()).apply(graph, highTierContext);
 647 
 648             MidTierContext midTierContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo());


< prev index next >