src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/ConditionalEliminationBenchmark.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.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/ConditionalEliminationBenchmark.java	Mon Mar 20 17:40:14 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/ConditionalEliminationBenchmark.java	Mon Mar 20 17:40:14 2017

*** 21,83 **** --- 21,124 ---- * questions. */ package org.graalvm.compiler.microbenchmarks.graal; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Warmup; import org.graalvm.compiler.microbenchmarks.graal.util.GraalState; import org.graalvm.compiler.microbenchmarks.graal.util.GraphState; import org.graalvm.compiler.microbenchmarks.graal.util.MethodSpec; import org.graalvm.compiler.phases.common.DominatorConditionalEliminationPhase; + import org.graalvm.compiler.phases.common.NewConditionalEliminationPhase; import org.graalvm.compiler.phases.tiers.PhaseContext; public class ConditionalEliminationBenchmark extends GraalBenchmark { @MethodSpec(declaringClass = ConditionalEliminationBenchmark.class, name = "nullnessSnippet") public static class Nullness extends GraphState { } @SuppressWarnings("unused") ! public static int nullnessSnippet(Object a, Object b, int n, int m) { + int result = 0; if (a == null) { if (a == b) { if (b == null) { + for (int i = 0; i < n; ++i) { + if (i % 3 == 0) { + break; + } + result <<= 1; + if (i % 7 == 0) { + break; + } + } return 1; } else { return -2; } } else { if (b == null) { return -3; + for (int i = 0; i < n; ++i) { + if (i % 4 == 0) { + break; + } + result <<= 1; + if (i % 7 == 0) { + break; + } + } + return result; } else { return 4; } } } else { if (a == b) { if (b == null) { return -5; + for (int i = 0; i < n; ++i) { + if (i % 5 == 0) { + break; + } + result <<= 1; + if (i % 7 == 0) { + break; + } + } + return result; } else { return 6; } } else { if (b == null) { return 7; + for (int i = 0; i < n; ++i) { + if (i % 6 == 0) { + break; + } + result <<= 1; + if (i % 7 == 0) { + break; + } + } + return result; } else { return 8; } } } } @Benchmark @Warmup(iterations = 20) public void nullness(Nullness s, GraalState g) { new DominatorConditionalEliminationPhase(false).apply(s.graph, new PhaseContext(g.providers)); } + @Benchmark + public void newDominatorConditionalElimination(Nullness s, GraalState g) { + new NewConditionalEliminationPhase(false).apply(s.graph, new PhaseContext(g.providers)); + } + @MethodSpec(declaringClass = ConditionalEliminationBenchmark.class, name = "searchSnippet") public static class Search extends GraphState { } static class Entry {

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/ConditionalEliminationBenchmark.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File