Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ public abstract class AbstractAnalysisEngine implements BigBang {
protected final AnalysisUniverse universe;
protected final AnalysisMetaAccess metaAccess;
protected final AnalysisPolicy analysisPolicy;
private final HeapScanningPolicy heapScanningPolicy;

protected final Boolean extendedAsserts;
protected final int maxConstantObjectsPerType;
Expand Down Expand Up @@ -124,11 +123,6 @@ public AbstractAnalysisEngine(OptionValues options, AnalysisUniverse universe, H
maxConstantObjectsPerType = PointstoOptions.MaxConstantObjectsPerType.getValue(options);
profileConstantObjects = PointstoOptions.ProfileConstantObjects.getValue(options);
optimizeReturnedParameter = PointstoOptions.OptimizeReturnedParameter.getValue(options);

this.heapScanningPolicy = PointstoOptions.ExhaustiveHeapScan.getValue(options)
? HeapScanningPolicy.scanAll()
: HeapScanningPolicy.skipTypes(skippedHeapTypes());

this.snippetReflectionProvider = snippetReflectionProvider;
this.constantReflectionProvider = constantReflectionProvider;
this.wordTypes = wordTypes;
Expand Down Expand Up @@ -246,11 +240,6 @@ public void printTimerStatistics(PrintWriter out) {
StatisticsPrinter.printLast(out, "total_memory_bytes", analysisTimer.getTotalMemory());
}

@Override
public AnalysisType[] skippedHeapTypes() {
return new AnalysisType[]{metaAccess.lookupJavaType(String.class)};
}

@Override
public boolean extendedAsserts() {
return extendedAsserts;
Expand Down Expand Up @@ -331,11 +320,6 @@ public WordTypes getWordTypes() {
return wordTypes;
}

@Override
public HeapScanningPolicy scanningPolicy() {
return heapScanningPolicy;
}

@Override
public HostVM getHostVM() {
return hostVM;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
*
* @see PointsToAnalysis
*/
public interface BigBang extends ReachabilityAnalysis, HeapScanning {
public interface BigBang extends ReachabilityAnalysis {
HostVM getHostVM();

UnsupportedFeatures getUnsupportedFeatures();
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,6 @@ public void scanConstant(JavaConstant value, ScanReason reason) {
if (value.isNull() || bb.getMetaAccess().isInstanceOf(value, WordBase.class)) {
return;
}
if (!bb.scanningPolicy().scanConstant(bb, value)) {
bb.registerTypeAsInHeap(bb.getMetaAccess().lookupJavaType(value), reason);
return;
}
JavaConstant unwrappedValue = maybeUnwrap(value);
Object valueObj = unwrappedValue instanceof ImageHeapConstant ? unwrappedValue : constantAsObject(bb, unwrappedValue);
if (scannedObjects.putAndAcquire(valueObj) == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,6 @@ protected void onValueUpdate(EconomicMap<OptionKey<?>, Object> values, Boolean o
@Option(help = "Object scanning in parallel")//
public static final OptionKey<Boolean> ScanObjectsParallel = new OptionKey<>(true);

@Option(help = "Scan all objects reachable from roots for analysis. By default false.")//
public static final OptionKey<Boolean> ExhaustiveHeapScan = new OptionKey<>(false);

@Option(help = "Run partial escape analysis on compiler graphs before static analysis.", type = Expert)//
public static final OptionKey<Boolean> EscapeAnalysisBeforeAnalysis = new OptionKey<>(true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -406,10 +406,7 @@ protected static boolean ignoreInstanceOfType(PointsToAnalysis bb, AnalysisType
}

private static void registerEmbeddedRoot(PointsToAnalysis bb, ConstantNode cn) {
JavaConstant root = cn.asJavaConstant();
if (bb.scanningPolicy().trackConstant(bb, root)) {
bb.getUniverse().registerEmbeddedRoot(root, AbstractAnalysisEngine.sourcePosition(cn));
}
bb.getUniverse().registerEmbeddedRoot(cn.asJavaConstant(), AbstractAnalysisEngine.sourcePosition(cn));
}

private static void registerForeignCall(PointsToAnalysis bb, ForeignCallsProvider foreignCallsProvider, ForeignCallDescriptor foreignCallDescriptor, ResolvedJavaMethod from) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,12 @@
import static com.oracle.graal.pointsto.reports.ReportUtils.positionComparator;

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

import com.oracle.graal.pointsto.BigBang;
import com.oracle.graal.pointsto.ObjectScanner;
import com.oracle.graal.pointsto.ObjectScanningObserver;
import com.oracle.graal.pointsto.api.PointstoOptions;
import com.oracle.graal.pointsto.meta.AnalysisField;
import com.oracle.graal.pointsto.meta.AnalysisType;

Expand All @@ -50,11 +47,6 @@ public static void print(BigBang bb, String reportsPath, String reportName) {
}

private static void doPrint(PrintWriter out, BigBang bb) {
if (!PointstoOptions.ExhaustiveHeapScan.getValue(bb.getOptions())) {
String types = Arrays.stream(bb.skippedHeapTypes()).map(t -> t.toJavaName()).collect(Collectors.joining(", "));
System.out.println("Exhaustive heap scanning is disabled. The analysis heap histogram will not contain all instances of types: " + types);
System.out.println("Exhaustive heap scanning can be turned on using -H:+ExhaustiveHeapScan.");
}
Map<AnalysisType, Integer> histogram = new HashMap<>();
AnalysisHeapHistogramPrinter printer = new AnalysisHeapHistogramPrinter(bb, histogram);
printer.scanBootImageHeapRoots(fieldComparator, positionComparator);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,19 @@

import java.io.PrintWriter;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Collection;
import java.util.Deque;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import org.graalvm.compiler.options.OptionValues;

import com.oracle.graal.pointsto.BigBang;
import com.oracle.graal.pointsto.ObjectScanner;
import com.oracle.graal.pointsto.ObjectScanningObserver;
import com.oracle.graal.pointsto.api.PointstoOptions;
import com.oracle.graal.pointsto.meta.AnalysisField;
import com.oracle.graal.pointsto.meta.AnalysisType;

Expand All @@ -66,11 +63,6 @@ public static void print(BigBang bb, String reportsPath, String reportName) {
}

private static void doPrint(PrintWriter out, BigBang bb) {
if (!PointstoOptions.ExhaustiveHeapScan.getValue(bb.getOptions())) {
String types = Arrays.stream(bb.skippedHeapTypes()).map(t -> t.toJavaName()).collect(Collectors.joining(", "));
System.out.println("Exhaustive heap scanning is disabled. The object tree will not contain all instances of types: " + types);
System.out.println("Exhaustive heap scanning can be turned on using -H:+ExhaustiveHeapScan.");
}
/* Use linked hash map for predictable iteration order. */
Map<JavaConstant, ObjectNodeBase> constantToNode = new LinkedHashMap<>();
ObjectTreePrinter printer = new ObjectTreePrinter(bb, constantToNode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ public final class DynamicHub implements AnnotatedElement, java.lang.reflect.Typ

private final DynamicHubCompanion companion;

private String signature;
private final String signature;

@Substitute //
@InjectAccessors(ClassLoaderAccessors.class) //
Expand Down Expand Up @@ -385,7 +385,7 @@ public final class DynamicHub implements AnnotatedElement, java.lang.reflect.Typ
@Platforms(Platform.HOSTED_ONLY.class)
public DynamicHub(Class<?> hostedJavaClass, String name, int hubType, ReferenceType referenceType, DynamicHub superType, DynamicHub componentHub, String sourceFileName, int modifiers,
ClassLoader classLoader, boolean isHidden, boolean isRecord, Class<?> nestHost, boolean assertionStatus, boolean hasDefaultMethods, boolean declaresDefaultMethods,
boolean isSealed, boolean isVMInternal, boolean isLambdaFormHidden, String simpleBinaryName, Object declaringClass) {
boolean isSealed, boolean isVMInternal, boolean isLambdaFormHidden, String simpleBinaryName, Object declaringClass, String signature) {
this.hostedJavaClass = hostedJavaClass;
this.module = hostedJavaClass.getModule();
this.name = name;
Expand All @@ -398,6 +398,7 @@ public DynamicHub(Class<?> hostedJavaClass, String name, int hubType, ReferenceT
this.nestHost = nestHost;
this.simpleBinaryName = simpleBinaryName;
this.declaringClass = declaringClass;
this.signature = signature;

this.flags = NumUtil.safeToUShort(makeFlag(IS_PRIMITIVE_FLAG_BIT, hostedJavaClass.isPrimitive()) |
makeFlag(IS_INTERFACE_FLAG_BIT, hostedJavaClass.isInterface()) |
Expand Down Expand Up @@ -519,11 +520,6 @@ public void initEnumConstantsAtRuntime(Class<?> enumClass) {
}
}

@Platforms(Platform.HOSTED_ONLY.class)
public void setSignature(String signature) {
this.signature = signature;
}

@Platforms(Platform.HOSTED_ONLY.class)
public String getSignature() {
return signature;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.debug.MethodFilter;
import org.graalvm.compiler.graph.Node;
import org.graalvm.compiler.java.GraphBuilderPhase.Instance;
Expand Down Expand Up @@ -421,7 +422,17 @@ private DynamicHub createHub(AnalysisType type) {

return new DynamicHub(javaClass, className, computeHubType(type), computeReferenceType(type), superHub, componentHub, sourceFileName, modifiers, hubClassLoader,
isHidden, isRecord, nestHost, assertionStatus, type.hasDefaultMethods(), type.declaresDefaultMethods(), isSealed, isVMInternal, isLambdaFormHidden, simpleBinaryName,
getDeclaringClass(javaClass));
getDeclaringClass(javaClass), getSignature(javaClass));
}

private static final Method getSignature = ReflectionUtil.lookupMethod(Class.class, "getGenericSignature0");

private String getSignature(Class<?> javaClass) {
try {
return (String) getSignature.invoke(javaClass);
} catch (IllegalAccessException | InvocationTargetException e) {
throw GraalError.shouldNotReachHere(e); // ExcludeFromJacocoGeneratedReport
}
}

private final Method getDeclaringClass0 = ReflectionUtil.lookupMethod(Class.class, "getDeclaringClass0");
Expand Down
Loading