< 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,33 **** package jdk.tools.jaotc; import java.util.concurrent.atomic.AtomicInteger; import java.util.HashMap; ! import java.util.Map; import jdk.tools.jaotc.binformat.BinaryContainer; import jdk.tools.jaotc.binformat.ReadOnlyDataContainer; import jdk.tools.jaotc.AOTCompiledClass.AOTKlassData; import org.graalvm.compiler.code.CompilationResult; --- 23,33 ---- package jdk.tools.jaotc; import java.util.concurrent.atomic.AtomicInteger; import java.util.HashMap; ! 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,195 **** private AOTMethodOffsets methodOffsets; /** * List of stubs (PLT trampoline). */ ! private Map<String, StubInformation> stubs = new HashMap<>(); /** * List of referenced classes. */ ! private Map<String, AOTKlassData> dependentKlasses = new HashMap<>(); /** * Methods count used to generate unique global method id. */ private static final AtomicInteger methodsCount = new AtomicInteger(); --- 180,195 ---- private AOTMethodOffsets methodOffsets; /** * List of stubs (PLT trampoline). */ ! private HashMap<String, StubInformation> stubs = new HashMap<>(); /** * List of referenced classes. */ ! private HashSet<AOTKlassData> dependentKlasses = new HashSet<>(); /** * Methods count used to generate unique global method id. */ private static final AtomicInteger methodsCount = new AtomicInteger();
*** 207,217 **** } void addMethodOffsets(BinaryContainer binaryContainer, ReadOnlyDataContainer container) { this.methodOffsets.setNameOffset(binaryContainer.addMetaspaceName(name)); this.methodOffsets.addMethodOffsets(container, name); ! for (AOTKlassData data : dependentKlasses.values()) { data.addDependentMethod(this); } } CompilationResult getCompilationResult() { --- 207,217 ---- } void addMethodOffsets(BinaryContainer binaryContainer, ReadOnlyDataContainer container) { this.methodOffsets.setNameOffset(binaryContainer.addMetaspaceName(name)); this.methodOffsets.addMethodOffsets(container, name); ! for (AOTKlassData data : dependentKlasses) { data.addDependentMethod(this); } } CompilationResult getCompilationResult() {
*** 289,309 **** 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); ! } } ! AOTKlassData getDependentKlassData(String klassName) { ! return dependentKlasses.get(klassName); } boolean hasMark(Site call, MarkId id) { for (Mark m : compilationResult.getMarks()) { // TODO: X64-specific code. --- 289,307 ---- return stub; } void addDependentKlassData(BinaryContainer binaryContainer, HotSpotResolvedObjectType type) { AOTKlassData klassData = AOTCompiledClass.addFingerprintKlassData(binaryContainer, type); ! dependentKlasses.add(klassData); } ! 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 >