Skip to content

Commit 01cb552

Browse files
committed
cache PointstoOptions.TrackAccessChain and PointstoOptions.ParsingContextMaxDepth in AnalysisPolicy
1 parent e324a6a commit 01cb552

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/AnalysisPolicy.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public abstract class AnalysisPolicy {
7070
protected final int maxObjectSetSize;
7171
protected final boolean hybridStaticContext;
7272
protected final boolean useConservativeUnsafeAccess;
73+
private final int parsingContextMaxDepth;
74+
private final boolean trackAccessChain;
7375

7476
public AnalysisPolicy(OptionValues options) {
7577
this.options = options;
@@ -84,6 +86,8 @@ public AnalysisPolicy(OptionValues options) {
8486
maxObjectSetSize = PointstoOptions.MaxObjectSetSize.getValue(options);
8587
hybridStaticContext = PointstoOptions.HybridStaticContext.getValue(options);
8688
useConservativeUnsafeAccess = PointstoOptions.UseConservativeUnsafeAccess.getValue(options);
89+
trackAccessChain = PointstoOptions.TrackAccessChain.getValue(options);
90+
parsingContextMaxDepth = PointstoOptions.ParsingContextMaxDepth.getValue(options);
8791
}
8892

8993
public abstract boolean isContextSensitiveAnalysis();
@@ -124,6 +128,14 @@ public boolean useConservativeUnsafeAccess() {
124128
return useConservativeUnsafeAccess;
125129
}
126130

131+
public boolean trackAccessChain() {
132+
return trackAccessChain;
133+
}
134+
135+
public int parsingContextMaxDepth() {
136+
return parsingContextMaxDepth;
137+
}
138+
127139
public abstract MethodTypeFlow createMethodTypeFlow(PointsToAnalysisMethod method);
128140

129141
/**

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisField.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
3333

3434
import com.oracle.graal.pointsto.BigBang;
35-
import com.oracle.graal.pointsto.api.PointstoOptions;
3635
import com.oracle.graal.pointsto.flow.ContextInsensitiveFieldTypeFlow;
3736
import com.oracle.graal.pointsto.flow.FieldTypeFlow;
3837
import com.oracle.graal.pointsto.infrastructure.OriginalClassProvider;
@@ -123,7 +122,7 @@ public AnalysisField(AnalysisUniverse universe, ResolvedJavaField wrappedField)
123122

124123
this.wrapped = wrappedField;
125124

126-
boolean trackAccessChain = PointstoOptions.TrackAccessChain.getValue(universe.hostVM().options());
125+
boolean trackAccessChain = universe.analysisPolicy().trackAccessChain();
127126
readBy = trackAccessChain ? new ConcurrentHashMap<>() : null;
128127
writtenBy = trackAccessChain ? new ConcurrentHashMap<>() : null;
129128

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/meta/AnalysisMethod.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
import com.oracle.graal.pointsto.PointsToAnalysis;
5454
import com.oracle.graal.pointsto.api.ImageLayerLoader;
5555
import com.oracle.graal.pointsto.api.ImageLayerWriter;
56-
import com.oracle.graal.pointsto.api.PointstoOptions;
5756
import com.oracle.graal.pointsto.constraints.UnsupportedFeatureException;
5857
import com.oracle.graal.pointsto.flow.AnalysisParsedGraph;
5958
import com.oracle.graal.pointsto.flow.AnalysisParsedGraph.Stage;
@@ -269,10 +268,10 @@ protected AnalysisMethod(AnalysisUniverse universe, ResolvedJavaMethod wrapped,
269268
this.multiMethodKey = multiMethodKey;
270269
this.multiMethodMap = multiMethodMap;
271270

272-
if (PointstoOptions.TrackAccessChain.getValue(declaringClass.universe.hostVM().options())) {
271+
if (universe.analysisPolicy().trackAccessChain()) {
273272
startTrackInvocations();
274273
}
275-
parsingContextMaxDepth = PointstoOptions.ParsingContextMaxDepth.getValue(declaringClass.universe.hostVM.options());
274+
parsingContextMaxDepth = universe.analysisPolicy().parsingContextMaxDepth();
276275

277276
this.enableReachableInCurrentLayer = universe.hostVM.enableReachableInCurrentLayer();
278277
}
@@ -300,7 +299,7 @@ protected AnalysisMethod(AnalysisMethod original, MultiMethodKey multiMethodKey)
300299
multiMethodMap = original.multiMethodMap;
301300
hasOpaqueReturn = original.hasOpaqueReturn;
302301

303-
if (PointstoOptions.TrackAccessChain.getValue(declaringClass.universe.hostVM().options())) {
302+
if (original.getUniverse().analysisPolicy().trackAccessChain()) {
304303
startTrackInvocations();
305304
}
306305

0 commit comments

Comments
 (0)