8004967: Default method cause VerifyError: Illegal use of nonvirtual
Recognize VM generated method in old verifier Reviewed-by: acorn, coleenp
This commit is contained in:
parent
3f92d0764c
commit
cb255a0269
@ -188,6 +188,7 @@ SUNWprivate_1.1 {
|
|||||||
JVM_IsSilentCompiler;
|
JVM_IsSilentCompiler;
|
||||||
JVM_IsSupportedJNIVersion;
|
JVM_IsSupportedJNIVersion;
|
||||||
JVM_IsThreadAlive;
|
JVM_IsThreadAlive;
|
||||||
|
JVM_IsVMGeneratedMethodIx;
|
||||||
JVM_LatestUserDefinedLoader;
|
JVM_LatestUserDefinedLoader;
|
||||||
JVM_Listen;
|
JVM_Listen;
|
||||||
JVM_LoadClass0;
|
JVM_LoadClass0;
|
||||||
|
@ -188,6 +188,7 @@ SUNWprivate_1.1 {
|
|||||||
JVM_IsSilentCompiler;
|
JVM_IsSilentCompiler;
|
||||||
JVM_IsSupportedJNIVersion;
|
JVM_IsSupportedJNIVersion;
|
||||||
JVM_IsThreadAlive;
|
JVM_IsThreadAlive;
|
||||||
|
JVM_IsVMGeneratedMethodIx;
|
||||||
JVM_LatestUserDefinedLoader;
|
JVM_LatestUserDefinedLoader;
|
||||||
JVM_Listen;
|
JVM_Listen;
|
||||||
JVM_LoadClass0;
|
JVM_LoadClass0;
|
||||||
|
@ -184,6 +184,7 @@ SUNWprivate_1.1 {
|
|||||||
JVM_IsSilentCompiler;
|
JVM_IsSilentCompiler;
|
||||||
JVM_IsSupportedJNIVersion;
|
JVM_IsSupportedJNIVersion;
|
||||||
JVM_IsThreadAlive;
|
JVM_IsThreadAlive;
|
||||||
|
JVM_IsVMGeneratedMethodIx;
|
||||||
JVM_LatestUserDefinedLoader;
|
JVM_LatestUserDefinedLoader;
|
||||||
JVM_Listen;
|
JVM_Listen;
|
||||||
JVM_LoadClass0;
|
JVM_LoadClass0;
|
||||||
|
@ -184,6 +184,7 @@ SUNWprivate_1.1 {
|
|||||||
JVM_IsSilentCompiler;
|
JVM_IsSilentCompiler;
|
||||||
JVM_IsSupportedJNIVersion;
|
JVM_IsSupportedJNIVersion;
|
||||||
JVM_IsThreadAlive;
|
JVM_IsThreadAlive;
|
||||||
|
JVM_IsVMGeneratedMethodIx;
|
||||||
JVM_LatestUserDefinedLoader;
|
JVM_LatestUserDefinedLoader;
|
||||||
JVM_Listen;
|
JVM_Listen;
|
||||||
JVM_LoadClass0;
|
JVM_LoadClass0;
|
||||||
|
@ -184,6 +184,7 @@ SUNWprivate_1.1 {
|
|||||||
JVM_IsSilentCompiler;
|
JVM_IsSilentCompiler;
|
||||||
JVM_IsSupportedJNIVersion;
|
JVM_IsSupportedJNIVersion;
|
||||||
JVM_IsThreadAlive;
|
JVM_IsThreadAlive;
|
||||||
|
JVM_IsVMGeneratedMethodIx;
|
||||||
JVM_LatestUserDefinedLoader;
|
JVM_LatestUserDefinedLoader;
|
||||||
JVM_Listen;
|
JVM_Listen;
|
||||||
JVM_LoadClass0;
|
JVM_LoadClass0;
|
||||||
|
@ -2302,6 +2302,15 @@ JVM_QUICK_ENTRY(jboolean, JVM_IsConstructorIx(JNIEnv *env, jclass cls, int metho
|
|||||||
JVM_END
|
JVM_END
|
||||||
|
|
||||||
|
|
||||||
|
JVM_QUICK_ENTRY(jboolean, JVM_IsVMGeneratedMethodIx(JNIEnv *env, jclass cls, int method_index))
|
||||||
|
JVMWrapper("JVM_IsVMGeneratedMethodIx");
|
||||||
|
ResourceMark rm(THREAD);
|
||||||
|
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
|
||||||
|
k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
|
||||||
|
Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
|
||||||
|
return method->is_overpass();
|
||||||
|
JVM_END
|
||||||
|
|
||||||
JVM_ENTRY(const char*, JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cls, jint method_index))
|
JVM_ENTRY(const char*, JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cls, jint method_index))
|
||||||
JVMWrapper("JVM_GetMethodIxIxUTF");
|
JVMWrapper("JVM_GetMethodIxIxUTF");
|
||||||
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
|
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
|
||||||
|
@ -859,6 +859,13 @@ JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cb, int index);
|
|||||||
JNIEXPORT jboolean JNICALL
|
JNIEXPORT jboolean JNICALL
|
||||||
JVM_IsConstructorIx(JNIEnv *env, jclass cb, int index);
|
JVM_IsConstructorIx(JNIEnv *env, jclass cb, int index);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Is the given method generated by the VM.
|
||||||
|
* The method is identified by method_index.
|
||||||
|
*/
|
||||||
|
JNIEXPORT jboolean JNICALL
|
||||||
|
JVM_IsVMGeneratedMethodIx(JNIEnv *env, jclass cb, int index);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the name of a given method in UTF format.
|
* Returns the name of a given method in UTF format.
|
||||||
* The result remains valid until JVM_ReleaseUTF is called.
|
* The result remains valid until JVM_ReleaseUTF is called.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user