25 package org.graalvm.compiler.phases.util; |
25 package org.graalvm.compiler.phases.util; |
26 |
26 |
27 import org.graalvm.compiler.core.common.spi.CodeGenProviders; |
27 import org.graalvm.compiler.core.common.spi.CodeGenProviders; |
28 import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; |
28 import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; |
29 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider; |
29 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider; |
|
30 import org.graalvm.compiler.nodes.spi.CoreProvidersImpl; |
30 import org.graalvm.compiler.nodes.spi.LoweringProvider; |
31 import org.graalvm.compiler.nodes.spi.LoweringProvider; |
31 import org.graalvm.compiler.nodes.spi.Replacements; |
32 import org.graalvm.compiler.nodes.spi.Replacements; |
32 import org.graalvm.compiler.nodes.spi.StampProvider; |
33 import org.graalvm.compiler.nodes.spi.StampProvider; |
33 import org.graalvm.compiler.phases.tiers.PhaseContext; |
34 import org.graalvm.compiler.phases.tiers.PhaseContext; |
34 |
35 |
37 import jdk.vm.ci.meta.MetaAccessProvider; |
38 import jdk.vm.ci.meta.MetaAccessProvider; |
38 |
39 |
39 /** |
40 /** |
40 * A set of providers, some of which may not be present (i.e., null). |
41 * A set of providers, some of which may not be present (i.e., null). |
41 */ |
42 */ |
42 public class Providers implements CodeGenProviders { |
43 public class Providers extends CoreProvidersImpl implements CodeGenProviders { |
43 |
44 |
44 private final MetaAccessProvider metaAccess; |
|
45 private final CodeCacheProvider codeCache; |
45 private final CodeCacheProvider codeCache; |
46 private final LoweringProvider lowerer; |
|
47 private final ConstantReflectionProvider constantReflection; |
|
48 private final ConstantFieldProvider constantFieldProvider; |
|
49 private final ForeignCallsProvider foreignCalls; |
|
50 private final Replacements replacements; |
|
51 private final StampProvider stampProvider; |
|
52 |
46 |
53 public Providers(MetaAccessProvider metaAccess, CodeCacheProvider codeCache, ConstantReflectionProvider constantReflection, ConstantFieldProvider constantFieldProvider, |
47 public Providers(MetaAccessProvider metaAccess, CodeCacheProvider codeCache, ConstantReflectionProvider constantReflection, ConstantFieldProvider constantFieldProvider, |
54 ForeignCallsProvider foreignCalls, LoweringProvider lowerer, Replacements replacements, StampProvider stampProvider) { |
48 ForeignCallsProvider foreignCalls, LoweringProvider lowerer, Replacements replacements, StampProvider stampProvider) { |
55 this.metaAccess = metaAccess; |
49 super(metaAccess, constantReflection, constantFieldProvider, lowerer, replacements, stampProvider, foreignCalls); |
56 this.codeCache = codeCache; |
50 this.codeCache = codeCache; |
57 this.constantReflection = constantReflection; |
|
58 this.constantFieldProvider = constantFieldProvider; |
|
59 this.foreignCalls = foreignCalls; |
|
60 this.lowerer = lowerer; |
|
61 this.replacements = replacements; |
|
62 this.stampProvider = stampProvider; |
|
63 } |
51 } |
64 |
52 |
65 public Providers(Providers copyFrom) { |
53 public Providers(Providers copyFrom) { |
66 this(copyFrom.getMetaAccess(), copyFrom.getCodeCache(), copyFrom.getConstantReflection(), copyFrom.getConstantFieldProvider(), copyFrom.getForeignCalls(), copyFrom.getLowerer(), |
54 this(copyFrom.getMetaAccess(), copyFrom.getCodeCache(), copyFrom.getConstantReflection(), copyFrom.getConstantFieldProvider(), copyFrom.getForeignCalls(), copyFrom.getLowerer(), |
67 copyFrom.getReplacements(), copyFrom.getStampProvider()); |
55 copyFrom.getReplacements(), copyFrom.getStampProvider()); |
71 this(copyFrom.getMetaAccess(), null, copyFrom.getConstantReflection(), copyFrom.getConstantFieldProvider(), null, copyFrom.getLowerer(), copyFrom.getReplacements(), |
59 this(copyFrom.getMetaAccess(), null, copyFrom.getConstantReflection(), copyFrom.getConstantFieldProvider(), null, copyFrom.getLowerer(), copyFrom.getReplacements(), |
72 copyFrom.getStampProvider()); |
60 copyFrom.getStampProvider()); |
73 } |
61 } |
74 |
62 |
75 @Override |
63 @Override |
76 public MetaAccessProvider getMetaAccess() { |
|
77 return metaAccess; |
|
78 } |
|
79 |
|
80 @Override |
|
81 public CodeCacheProvider getCodeCache() { |
64 public CodeCacheProvider getCodeCache() { |
82 return codeCache; |
65 return codeCache; |
83 } |
|
84 |
|
85 @Override |
|
86 public ForeignCallsProvider getForeignCalls() { |
|
87 return foreignCalls; |
|
88 } |
|
89 |
|
90 public LoweringProvider getLowerer() { |
|
91 return lowerer; |
|
92 } |
|
93 |
|
94 @Override |
|
95 public ConstantReflectionProvider getConstantReflection() { |
|
96 return constantReflection; |
|
97 } |
|
98 |
|
99 public ConstantFieldProvider getConstantFieldProvider() { |
|
100 return constantFieldProvider; |
|
101 } |
|
102 |
|
103 public Replacements getReplacements() { |
|
104 return replacements; |
|
105 } |
|
106 |
|
107 public StampProvider getStampProvider() { |
|
108 return stampProvider; |
|
109 } |
66 } |
110 |
67 |
111 public Providers copyWith(MetaAccessProvider substitution) { |
68 public Providers copyWith(MetaAccessProvider substitution) { |
112 assert this.getClass() == Providers.class : "must override"; |
69 assert this.getClass() == Providers.class : "must override"; |
113 return new Providers(substitution, codeCache, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, stampProvider); |
70 return new Providers(substitution, codeCache, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, stampProvider); |