27 import static org.graalvm.util.CollectionsUtil.anyMatch; |
27 import static org.graalvm.util.CollectionsUtil.anyMatch; |
28 |
28 |
29 import java.util.ArrayList; |
29 import java.util.ArrayList; |
30 import java.util.Iterator; |
30 import java.util.Iterator; |
31 import java.util.List; |
31 import java.util.List; |
32 |
|
33 import jdk.vm.ci.hotspot.HotSpotMetaspaceConstant; |
|
34 import jdk.vm.ci.meta.Constant; |
|
35 import jdk.vm.ci.meta.ResolvedJavaType; |
|
36 |
32 |
37 import jdk.internal.vm.compiler.collections.EconomicSet; |
33 import jdk.internal.vm.compiler.collections.EconomicSet; |
38 import org.graalvm.compiler.graph.Node; |
34 import org.graalvm.compiler.graph.Node; |
39 import org.graalvm.compiler.hotspot.nodes.aot.InitializeKlassNode; |
35 import org.graalvm.compiler.hotspot.nodes.aot.InitializeKlassNode; |
40 import org.graalvm.compiler.hotspot.nodes.aot.ResolveConstantNode; |
36 import org.graalvm.compiler.hotspot.nodes.aot.ResolveConstantNode; |
41 import org.graalvm.compiler.nodes.AbstractMergeNode; |
37 import org.graalvm.compiler.nodes.AbstractMergeNode; |
42 import org.graalvm.compiler.nodes.FixedNode; |
38 import org.graalvm.compiler.nodes.FixedNode; |
43 import org.graalvm.compiler.nodes.FixedWithNextNode; |
39 import org.graalvm.compiler.nodes.FixedWithNextNode; |
44 import org.graalvm.compiler.nodes.Invoke; |
40 import org.graalvm.compiler.nodes.Invoke; |
45 import org.graalvm.compiler.nodes.StructuredGraph; |
41 import org.graalvm.compiler.nodes.StructuredGraph; |
|
42 import org.graalvm.compiler.nodes.spi.CoreProviders; |
46 import org.graalvm.compiler.phases.BasePhase; |
43 import org.graalvm.compiler.phases.BasePhase; |
47 import org.graalvm.compiler.phases.graph.MergeableState; |
44 import org.graalvm.compiler.phases.graph.MergeableState; |
48 import org.graalvm.compiler.phases.graph.PostOrderNodeIterator; |
45 import org.graalvm.compiler.phases.graph.PostOrderNodeIterator; |
49 import org.graalvm.compiler.phases.tiers.PhaseContext; |
46 |
50 |
47 import jdk.vm.ci.hotspot.HotSpotMetaspaceConstant; |
51 public class EliminateRedundantInitializationPhase extends BasePhase<PhaseContext> { |
48 import jdk.vm.ci.meta.Constant; |
|
49 import jdk.vm.ci.meta.ResolvedJavaType; |
|
50 |
|
51 public class EliminateRedundantInitializationPhase extends BasePhase<CoreProviders> { |
52 /** |
52 /** |
53 * Find each {@link Invoke} that has a corresponding {@link InitializeKlassNode}. These |
53 * Find each {@link Invoke} that has a corresponding {@link InitializeKlassNode}. These |
54 * {@link InitializeKlassNode} are redundant and are removed. |
54 * {@link InitializeKlassNode} are redundant and are removed. |
55 */ |
55 */ |
56 private static void removeInitsAtStaticCalls(StructuredGraph graph) { |
56 private static void removeInitsAtStaticCalls(StructuredGraph graph) { |