mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8307468: CDS Lambda Proxy classes are regenerated in dynamic dump
Reviewed-by: iklam
This commit is contained in:
parent
024133b089
commit
25e85db61c
7 changed files with 220 additions and 23 deletions
|
@ -255,6 +255,20 @@ import static jdk.internal.org.objectweb.asm.Opcodes.*;
|
|||
private Class<?> spinInnerClass() throws LambdaConversionException {
|
||||
// CDS does not handle disableEagerInitialization or useImplMethodHandle
|
||||
if (!disableEagerInitialization && !useImplMethodHandle) {
|
||||
if (CDS.isSharingEnabled()) {
|
||||
// load from CDS archive if present
|
||||
Class<?> innerClass = LambdaProxyClassArchive.find(targetClass,
|
||||
interfaceMethodName,
|
||||
factoryType,
|
||||
interfaceMethodType,
|
||||
implementation,
|
||||
dynamicMethodType,
|
||||
isSerializable,
|
||||
altInterfaces,
|
||||
altMethods);
|
||||
if (innerClass != null) return innerClass;
|
||||
}
|
||||
|
||||
// include lambda proxy class in CDS archive at dump time
|
||||
if (CDS.isDumpingArchive()) {
|
||||
Class<?> innerClass = generateInnerClass();
|
||||
|
@ -271,17 +285,6 @@ import static jdk.internal.org.objectweb.asm.Opcodes.*;
|
|||
return innerClass;
|
||||
}
|
||||
|
||||
// load from CDS archive if present
|
||||
Class<?> innerClass = LambdaProxyClassArchive.find(targetClass,
|
||||
interfaceMethodName,
|
||||
factoryType,
|
||||
interfaceMethodType,
|
||||
implementation,
|
||||
dynamicMethodType,
|
||||
isSerializable,
|
||||
altInterfaces,
|
||||
altMethods);
|
||||
if (innerClass != null) return innerClass;
|
||||
}
|
||||
return generateInnerClass();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue