< prev index next >
src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/CompiledMethodInfo.java
Print this page
rev 47466 : 8132547: [AOT] support invokedynamic instructions
Reviewed-by: iveresov, kvn
@@ -23,11 +23,11 @@
package jdk.tools.jaotc;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.HashMap;
-import java.util.Map;
+import java.util.HashSet;
import jdk.tools.jaotc.binformat.BinaryContainer;
import jdk.tools.jaotc.binformat.ReadOnlyDataContainer;
import jdk.tools.jaotc.AOTCompiledClass.AOTKlassData;
import org.graalvm.compiler.code.CompilationResult;
@@ -180,16 +180,16 @@
private AOTMethodOffsets methodOffsets;
/**
* List of stubs (PLT trampoline).
*/
- private Map<String, StubInformation> stubs = new HashMap<>();
+ private HashMap<String, StubInformation> stubs = new HashMap<>();
/**
* List of referenced classes.
*/
- private Map<String, AOTKlassData> dependentKlasses = new HashMap<>();
+ private HashSet<AOTKlassData> dependentKlasses = new HashSet<>();
/**
* Methods count used to generate unique global method id.
*/
private static final AtomicInteger methodsCount = new AtomicInteger();
@@ -207,11 +207,11 @@
}
void addMethodOffsets(BinaryContainer binaryContainer, ReadOnlyDataContainer container) {
this.methodOffsets.setNameOffset(binaryContainer.addMetaspaceName(name));
this.methodOffsets.addMethodOffsets(container, name);
- for (AOTKlassData data : dependentKlasses.values()) {
+ for (AOTKlassData data : dependentKlasses) {
data.addDependentMethod(this);
}
}
CompilationResult getCompilationResult() {
@@ -289,21 +289,19 @@
return stub;
}
void addDependentKlassData(BinaryContainer binaryContainer, HotSpotResolvedObjectType type) {
AOTKlassData klassData = AOTCompiledClass.addFingerprintKlassData(binaryContainer, type);
- String klassName = type.getName();
-
- if (dependentKlasses.containsKey(klassName)) {
- assert dependentKlasses.get(klassName) == klassData : "duplicated data for klass: " + klassName;
- } else {
- dependentKlasses.put(klassName, klassData);
- }
+ dependentKlasses.add(klassData);
}
- AOTKlassData getDependentKlassData(String klassName) {
- return dependentKlasses.get(klassName);
+ AOTKlassData getDependentKlassData(HotSpotResolvedObjectType type) {
+ AOTKlassData klassData = AOTCompiledClass.getAOTKlassData(type);
+ if (dependentKlasses.contains(klassData)) {
+ return klassData;
+ }
+ return null;
}
boolean hasMark(Site call, MarkId id) {
for (Mark m : compilationResult.getMarks()) {
// TODO: X64-specific code.
< prev index next >