Skip to content

Commit 410fd54

Browse files
committed
Revert "Copy local signature from MethodHandleNatives.resolve"
This reverts commit d3e9c72. Change-Id: Ibd65220093827d1b80ab89434927407c6ff3cf7e
1 parent d3e9c72 commit 410fd54

9 files changed

+21
-59
lines changed

runtime/bcverify/clconstraints.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include "omrlinkedlist.h"
3333

3434
static J9ClassLoadingConstraint* findClassLoadingConstraint (J9VMThread* vmThread, J9ClassLoader* loader, U_8* name, UDATA length);
35-
static J9ClassLoadingConstraint* registerClassLoadingConstraint (J9VMThread* vmThread, J9ClassLoader* loader, U_8* name, UDATA length, BOOLEAN copyName);
35+
static J9ClassLoadingConstraint* registerClassLoadingConstraint (J9VMThread* vmThread, J9ClassLoader* loader, U_8* name, UDATA length, UDATA copyName);
3636
static void validateArgs (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loader2, U_8* name1, U_8* name2, UDATA length);
3737
static void constrainList (J9ClassLoadingConstraint* constraint, J9Class* clazz);
3838
static UDATA constraintHashFn(void *key, void *userData);
@@ -71,7 +71,7 @@ validateArgs (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loade
7171
* return 0 if no class loading constraints have been violated, or non-zero if they have been.
7272
*/
7373
UDATA
74-
j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread *vmThread, J9ClassLoader *loader1, J9ClassLoader *loader2, J9UTF8 *sig1, J9UTF8 *sig2, BOOLEAN copySig1)
74+
j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loader2, J9UTF8* sig1, J9UTF8* sig2)
7575
{
7676
U_32 index = 0, endIndex;
7777
U_32 length = J9UTF8_LENGTH(sig1);
@@ -101,7 +101,8 @@ j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread *vmThread, J9ClassLoa
101101
while (J9UTF8_DATA(sig1)[endIndex] != ';') {
102102
endIndex++;
103103
}
104-
rc = j9bcv_checkClassLoadingConstraintForName (vmThread, loader1, loader2, &J9UTF8_DATA(sig1)[index], &J9UTF8_DATA(sig2)[index], endIndex - index, copySig1, FALSE);
104+
105+
rc = j9bcv_checkClassLoadingConstraintForName (vmThread, loader1, loader2, &J9UTF8_DATA(sig1)[index], &J9UTF8_DATA(sig2)[index], endIndex - index, FALSE);
105106
if (rc) {
106107
break;
107108
}
@@ -119,7 +120,7 @@ j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread *vmThread, J9ClassLoa
119120
/* NOTE: the current thread must own the class table mutex */
120121

121122
UDATA
122-
j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *loader1, J9ClassLoader *loader2, U_8 *name1, U_8 *name2, UDATA length, BOOLEAN copyName1, BOOLEAN copyName2)
123+
j9bcv_checkClassLoadingConstraintForName (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loader2, U_8* name1, U_8* name2, UDATA length, UDATA copyUTFs)
123124
{
124125
J9Class *class1;
125126
J9Class *class2;
@@ -139,7 +140,7 @@ j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *l
139140
return 1;
140141
}
141142
} else if (class1 == NULL && class2 != NULL) {
142-
const1 = registerClassLoadingConstraint (vmThread, loader1, name1, length, copyName1);
143+
const1 = registerClassLoadingConstraint (vmThread, loader1, name1, length, copyUTFs);
143144
if (const1 == NULL) return 1;
144145
if (const1->clazz != NULL) {
145146
if (const1->clazz != class2) {
@@ -150,7 +151,7 @@ j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *l
150151
const1->clazz = class2;
151152
}
152153
} else if (class2 == NULL && class1 != NULL) {
153-
const2 = registerClassLoadingConstraint (vmThread, loader2, name2, length, copyName2);
154+
const2 = registerClassLoadingConstraint (vmThread, loader2, name2, length, copyUTFs);
154155
if (const2->clazz != NULL) {
155156
if (const2->clazz != class1) {
156157
return 1;
@@ -163,11 +164,11 @@ j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *l
163164
J9ClassLoadingConstraint *tempNext;
164165
J9ClassLoadingConstraint *tempPrevious;
165166

166-
const1 = registerClassLoadingConstraint (vmThread, loader1, name1, length, copyName1);
167+
const1 = registerClassLoadingConstraint (vmThread, loader1, name1, length, copyUTFs);
167168
if (const1 == NULL) {
168169
return 1;
169170
}
170-
const2 = registerClassLoadingConstraint (vmThread, loader2, name2, length, copyName2);
171+
const2 = registerClassLoadingConstraint (vmThread, loader2, name2, length, copyUTFs);
171172
if (const2 == NULL) {
172173
return 1;
173174
}
@@ -202,7 +203,7 @@ j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *l
202203
/* NOTE: the current thread must own the class table mutex */
203204

204205
static J9ClassLoadingConstraint*
205-
registerClassLoadingConstraint (J9VMThread* vmThread, J9ClassLoader* loader, U_8* name, UDATA length, BOOLEAN copyName)
206+
registerClassLoadingConstraint (J9VMThread* vmThread, J9ClassLoader* loader, U_8* name, UDATA length, UDATA copyName)
206207
{
207208
PORT_ACCESS_FROM_VMC (vmThread);
208209
J9JavaVM* vm = vmThread->javaVM;

runtime/jcl/common/java_dyn_methodhandle.c

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -375,16 +375,7 @@ accessCheckFieldSignature(J9VMThread *currentThread, J9Class* lookupClass, UDATA
375375
U_32 sigLength = J9UTF8_LENGTH(lookupSig) - sigOffset - 1;
376376

377377
omrthread_monitor_enter(vm->classTableMutex);
378-
if (0 != verifyData->checkClassLoadingConstraintForNameFunction(
379-
currentThread,
380-
targetClassloader,
381-
ramClass->classLoader,
382-
&lookupSigData[sigOffset],
383-
&lookupSigData[sigOffset],
384-
sigLength,
385-
TRUE,
386-
TRUE)
387-
) {
378+
if(verifyData->checkClassLoadingConstraintForNameFunction(currentThread, targetClassloader, ramClass->classLoader, &lookupSigData[sigOffset], &lookupSigData[sigOffset], sigLength, TRUE) != 0) {
388379
result = FALSE;
389380
}
390381
omrthread_monitor_exit(vm->classTableMutex);
@@ -454,16 +445,7 @@ accessCheckMethodSignature(J9VMThread *currentThread, J9Method *method, j9object
454445

455446
/* Check if we really need to check this classloader constraint */
456447
if (argumentRamClass->classLoader != targetClassloader) {
457-
if(0 != verifyData->checkClassLoadingConstraintForNameFunction(
458-
currentThread,
459-
targetClassloader,
460-
argumentRamClass->classLoader,
461-
&J9UTF8_DATA(targetSig)[index],
462-
&lookupSigData[index],
463-
endIndex - index,
464-
TRUE,
465-
TRUE)
466-
) {
448+
if(verifyData->checkClassLoadingConstraintForNameFunction(currentThread, targetClassloader, argumentRamClass->classLoader, &J9UTF8_DATA(targetSig)[index], &lookupSigData[index], endIndex - index, TRUE) != 0) {
467449
result = FALSE;
468450
goto releaseMutexAndReturn;
469451
}
@@ -495,16 +477,7 @@ accessCheckMethodSignature(J9VMThread *currentThread, J9Method *method, j9object
495477
endIndex++;
496478
}
497479

498-
if(0 != verifyData->checkClassLoadingConstraintForNameFunction(
499-
currentThread,
500-
targetClassloader,
501-
returnRamClass->classLoader,
502-
&J9UTF8_DATA(targetSig)[index],
503-
&lookupSigData[index],
504-
endIndex - index,
505-
TRUE,
506-
TRUE)
507-
) {
480+
if(verifyData->checkClassLoadingConstraintForNameFunction(currentThread, targetClassloader, returnRamClass->classLoader, &J9UTF8_DATA(targetSig)[index], &lookupSigData[index], endIndex - index, TRUE) != 0) {
508481
result = FALSE;
509482
goto releaseMutexAndReturn;
510483
}

runtime/jcl/common/java_lang_invoke_MethodHandleNatives.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,6 @@ Java_java_lang_invoke_MethodHandleNatives_resolve(
13231323
J9UTF8_DATA(signature) + sigOffset,
13241324
J9UTF8_DATA(signature) + sigOffset,
13251325
J9UTF8_LENGTH(signature) - sigOffset - 1, /* -1 to remove the trailing ;*/
1326-
true,
13271326
true);
13281327
omrthread_monitor_exit(vm->classTableMutex);
13291328
if (0 != clConstraintResult) {

runtime/jcl/common/java_lang_invoke_VarHandle.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ accessCheckFieldType(J9VMThread *currentThread, J9Class* lookupClass, J9Class* t
6464
&lookupSigData[1],
6565
&lookupSigData[1],
6666
J9UTF8_LENGTH(lookupSig) - 2,
67-
TRUE,
6867
TRUE) != 0) {
6968
result = FALSE;
7069
}

runtime/oti/bcverify_api.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,10 @@ bcvIsInitOrClinit (J9CfrConstantPoolInfo * info);
160160
* @param loader2
161161
* @param sig1
162162
* @param sig2
163-
* @param copySig1
164163
* @return UDATA
165164
*/
166165
UDATA
167-
j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread *vmThread, J9ClassLoader *loader1, J9ClassLoader *loader2, J9UTF8 *sig1, J9UTF8 *sig2, BOOLEAN copySig1);
166+
j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loader2, J9UTF8* sig1, J9UTF8* sig2);
168167

169168
/**
170169
* @brief
@@ -174,12 +173,10 @@ j9bcv_checkClassLoadingConstraintsForSignature (J9VMThread *vmThread, J9ClassLoa
174173
* @param name1
175174
* @param name2
176175
* @param length
177-
* @param copyName1
178-
* @param copyName2
179176
* @return UDATA
180177
*/
181178
UDATA
182-
j9bcv_checkClassLoadingConstraintForName (J9VMThread *vmThread, J9ClassLoader *loader1, J9ClassLoader *loader2, U_8 *name1, U_8 *name2, UDATA length, BOOLEAN copyName1, BOOLEAN copyName2);
179+
j9bcv_checkClassLoadingConstraintForName (J9VMThread* vmThread, J9ClassLoader* loader1, J9ClassLoader* loader2, U_8* name1, U_8* name2, UDATA length, UDATA copyUTFs);
183180

184181
/**
185182
* @brief

runtime/oti/j9nonbuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2026,7 +2026,7 @@ typedef struct J9TranslationBufferSet {
20262026

20272027
typedef struct J9BytecodeVerificationData {
20282028
IDATA ( *verifyBytecodesFunction)(struct J9PortLibrary *portLib, struct J9Class *ramClass, struct J9ROMClass *romClass, struct J9BytecodeVerificationData *verifyData) ;
2029-
UDATA ( *checkClassLoadingConstraintForNameFunction)(struct J9VMThread *vmThread, struct J9ClassLoader *loader1, struct J9ClassLoader *loader2, U_8 *name1, U_8 *name2, UDATA length, BOOLEAN copyName1, BOOLEAN copyName2) ;
2029+
UDATA ( *checkClassLoadingConstraintForNameFunction)(struct J9VMThread* vmThread, struct J9ClassLoader* loader1, struct J9ClassLoader* loader2, U_8* name1, U_8* name2, UDATA length, UDATA copyUTFs) ;
20302030
struct J9UTF8** classNameList;
20312031
struct J9UTF8** classNameListEnd;
20322032
U_8* classNameSegment;

runtime/vm/createramclass.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ addInterfaceMethods(J9VMThread *vmStruct, J9ClassLoader *classLoader, J9Class *i
634634
vTableMethodLoader = methodClass->classLoader;
635635
}
636636
if (interfaceLoader != vTableMethodLoader) {
637-
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, vTableMethodLoader, interfaceLoader, vTableMethodSigUTF, interfaceMethodSigUTF, FALSE)) {
637+
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, vTableMethodLoader, interfaceLoader, vTableMethodSigUTF, interfaceMethodSigUTF)) {
638638
J9UTF8 *vTableMethodClassNameUTF = J9ROMCLASS_CLASSNAME(romClass);
639639
if (NULL != methodClass) {
640640
vTableMethodClassNameUTF = J9ROMCLASS_CLASSNAME(methodClass->romClass);
@@ -1282,7 +1282,7 @@ processVTableMethod(J9VMThread *vmThread, J9ClassLoader *classLoader, UDATA *vTa
12821282
J9ClassLoader *superclassVTableMethodLoader = superclassVTableMethodClass->classLoader;
12831283
if (superclassVTableMethodLoader != classLoader) {
12841284
J9UTF8 *superclassVTableMethodSigUTF = J9ROMMETHOD_SIGNATURE(superclassVTableROMMethod);
1285-
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmThread, classLoader, superclassVTableMethodLoader, sigUTF, superclassVTableMethodSigUTF, FALSE)) {
1285+
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmThread, classLoader, superclassVTableMethodLoader, sigUTF, superclassVTableMethodSigUTF)) {
12861286
J9UTF8 *superclassVTableMethodClassNameUTF = J9ROMCLASS_CLASSNAME(superclassVTableMethodClass->romClass);
12871287
J9UTF8 *newClassNameUTF = J9ROMCLASS_CLASSNAME(romClass);
12881288
J9UTF8 *superclassVTableMethodNameUTF = J9ROMMETHOD_NAME(superclassVTableROMMethod);

runtime/vm/lookupmethod.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,7 @@ processMethod(J9VMThread * currentThread, UDATA lookupOptions, J9Method * method
242242
lookupSig = J9ROMNAMEANDSIGNATURE_SIGNATURE(nameAndSig);
243243
}
244244

245-
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(
246-
currentThread,
247-
cl1,
248-
cl2,
249-
lookupSig,
250-
methodSig,
251-
J9_ARE_ALL_BITS_SET(lookupOptions, J9_LOOK_DIRECT_NAS))
252-
) {
245+
if (j9bcv_checkClassLoadingConstraintsForSignature(currentThread, cl1, cl2, lookupSig, methodSig) != 0) {
253246
*exception = J9VMCONSTANTPOOL_JAVALANGLINKAGEERROR; /* was VerifyError; but Sun throws Linkage */
254247
*exceptionClass = methodClass;
255248
*errorType = J9_VISIBILITY_NON_MODULE_ACCESS_ERROR;

runtime/vm/resolvesupport.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ resolveStaticFieldRefInto(J9VMThread *vmStruct, J9Method *method, J9ConstantPool
810810
}
811811
if (cl1 != cl2) {
812812
J9UTF8 *fieldSignature = J9ROMFIELDSHAPE_SIGNATURE(field);
813-
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, cl1, cl2, signature, fieldSignature, FALSE)) {
813+
if (j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, cl1, cl2, signature, fieldSignature) != 0) {
814814
if (throwException) {
815815
setCurrentException(vmStruct, J9VMCONSTANTPOOL_JAVALANGVERIFYERROR, NULL);
816816
}
@@ -1060,7 +1060,7 @@ resolveInstanceFieldRefInto(J9VMThread *vmStruct, J9Method *method, J9ConstantPo
10601060
}
10611061
if (cl1 != cl2) {
10621062
J9UTF8 *fieldSignature = J9ROMFIELDSHAPE_SIGNATURE(field);
1063-
if (0 != j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, cl1, cl2, signature, fieldSignature, FALSE)) {
1063+
if (j9bcv_checkClassLoadingConstraintsForSignature(vmStruct, cl1, cl2, signature, fieldSignature) != 0) {
10641064
if (throwException) {
10651065
setCurrentException(vmStruct, J9VMCONSTANTPOOL_JAVALANGVERIFYERROR, NULL);
10661066
}

0 commit comments

Comments
 (0)