316 return !compiledMethods.isEmpty();
317 }
318
319 /**
320 * Add a klass data.
321 */
322 static synchronized AOTKlassData addAOTKlassData(BinaryContainer binaryContainer, HotSpotResolvedObjectType type) {
323 AOTKlassData data = getAOTKlassData(type);
324 if (data == null) {
325 data = new AOTKlassData(binaryContainer, type, classesCount++);
326 klassData.put(type.getName(), data);
327 }
328 return data;
329 }
330
331 static synchronized AOTKlassData getAOTKlassData(HotSpotResolvedObjectType type) {
332 String name = type.getName();
333 AOTKlassData data = klassData.get(name);
334 if (data != null) {
335 HotSpotResolvedObjectType oldType = data.getType();
336 assert oldType == type : "duplicate classes for name " + type.getName() + ", fingerprints old: " + oldType.getFingerprint() + ", new: " + type.getFingerprint() +
337 ", klass pointers old: " + oldType.klass() + ", new: " + type.klass();
338 }
339 return data;
340 }
341
342 void addAOTKlassData(BinaryContainer binaryContainer) {
343 for (CompiledMethodInfo methodInfo : compiledMethods) {
344 // Record methods holder
345 methodInfo.addDependentKlassData(binaryContainer, resolvedJavaType);
346 // Record inlinee classes
347 ResolvedJavaMethod[] inlinees = methodInfo.getCompilationResult().getMethods();
348 if (inlinees != null) {
349 for (ResolvedJavaMethod m : inlinees) {
350 methodInfo.addDependentKlassData(binaryContainer, (HotSpotResolvedObjectType) m.getDeclaringClass());
351 }
352 }
353 // Record classes of fields that were accessed
354 ResolvedJavaField[] fields = methodInfo.getCompilationResult().getFields();
355 if (fields != null) {
356 for (ResolvedJavaField f : fields) {
357 methodInfo.addDependentKlassData(binaryContainer, (HotSpotResolvedObjectType) f.getDeclaringClass());
|
316 return !compiledMethods.isEmpty();
317 }
318
319 /**
320 * Add a klass data.
321 */
322 static synchronized AOTKlassData addAOTKlassData(BinaryContainer binaryContainer, HotSpotResolvedObjectType type) {
323 AOTKlassData data = getAOTKlassData(type);
324 if (data == null) {
325 data = new AOTKlassData(binaryContainer, type, classesCount++);
326 klassData.put(type.getName(), data);
327 }
328 return data;
329 }
330
331 static synchronized AOTKlassData getAOTKlassData(HotSpotResolvedObjectType type) {
332 String name = type.getName();
333 AOTKlassData data = klassData.get(name);
334 if (data != null) {
335 HotSpotResolvedObjectType oldType = data.getType();
336 assert oldType.equals(type) : "duplicate classes for name " + type.getName();
337 }
338 return data;
339 }
340
341 void addAOTKlassData(BinaryContainer binaryContainer) {
342 for (CompiledMethodInfo methodInfo : compiledMethods) {
343 // Record methods holder
344 methodInfo.addDependentKlassData(binaryContainer, resolvedJavaType);
345 // Record inlinee classes
346 ResolvedJavaMethod[] inlinees = methodInfo.getCompilationResult().getMethods();
347 if (inlinees != null) {
348 for (ResolvedJavaMethod m : inlinees) {
349 methodInfo.addDependentKlassData(binaryContainer, (HotSpotResolvedObjectType) m.getDeclaringClass());
350 }
351 }
352 // Record classes of fields that were accessed
353 ResolvedJavaField[] fields = methodInfo.getCompilationResult().getFields();
354 if (fields != null) {
355 for (ResolvedJavaField f : fields) {
356 methodInfo.addDependentKlassData(binaryContainer, (HotSpotResolvedObjectType) f.getDeclaringClass());
|