Skip to content

Commit 0d8e52b

Browse files
committed
8339800: Prefer invokeBasic in BootstrapMethodInvokers
Reviewed-by: jvernee
1 parent 64de781 commit 0d8e52b

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/java.base/share/classes/java/lang/invoke/BootstrapMethodInvoker.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ else if (!info.getClass().isArray()) {
9999
// with empty constant arguments?
100100
if (isStringConcatFactoryBSM(bootstrapMethod.type())) {
101101
result = (CallSite)bootstrapMethod
102-
.invokeExact(caller, name, (MethodType)type,
102+
.invokeBasic(caller, name, (MethodType)type,
103103
(String)info, new Object[0]);
104104
} else {
105105
info = maybeReBox(info);
@@ -131,23 +131,23 @@ else if (info.getClass() == int[].class) {
131131
MethodType bsmType = bootstrapMethod.type();
132132
if (isLambdaMetafactoryIndyBSM(bsmType) && argv.length == 3) {
133133
result = (CallSite)bootstrapMethod
134-
.invokeExact(caller, name, (MethodType)type, (MethodType)argv[0],
134+
.invokeBasic(caller, name, (MethodType)type, (MethodType)argv[0],
135135
(MethodHandle)argv[1], (MethodType)argv[2]);
136136
} else if (isLambdaMetafactoryCondyBSM(bsmType) && argv.length == 3) {
137137
result = bootstrapMethod
138-
.invokeExact(caller, name, (Class<?>)type, (MethodType)argv[0],
138+
.invokeBasic(caller, name, (Class<?>)type, (MethodType)argv[0],
139139
(MethodHandle)argv[1], (MethodType)argv[2]);
140140
} else if (isStringConcatFactoryBSM(bsmType) && argv.length >= 1) {
141141
String recipe = (String)argv[0];
142142
Object[] shiftedArgs = Arrays.copyOfRange(argv, 1, argv.length);
143143
maybeReBoxElements(shiftedArgs);
144-
result = (CallSite)bootstrapMethod.invokeExact(caller, name, (MethodType)type, recipe, shiftedArgs);
144+
result = (CallSite)bootstrapMethod.invokeBasic(caller, name, (MethodType)type, recipe, shiftedArgs);
145145
} else if (isLambdaMetafactoryAltMetafactoryBSM(bsmType)) {
146146
maybeReBoxElements(argv);
147-
result = (CallSite)bootstrapMethod.invokeExact(caller, name, (MethodType)type, argv);
147+
result = (CallSite)bootstrapMethod.invokeBasic(caller, name, (MethodType)type, argv);
148148
} else if (isObjectMethodsBootstrapBSM(bsmType)) {
149149
MethodHandle[] mhs = Arrays.copyOfRange(argv, 2, argv.length, MethodHandle[].class);
150-
result = bootstrapMethod.invokeExact(caller, name, (TypeDescriptor)type, (Class<?>)argv[0], (String)argv[1], mhs);
150+
result = bootstrapMethod.invokeBasic(caller, name, (TypeDescriptor)type, (Class<?>)argv[0], (String)argv[1], mhs);
151151
} else {
152152
maybeReBoxElements(argv);
153153
if (type instanceof Class<?> c) {

0 commit comments

Comments
 (0)