From 986f2bbf2c22bbbab0d522b03ed7c4b7733591b9 Mon Sep 17 00:00:00 2001 From: Coleen Phillimore Date: Fri, 11 Oct 2019 08:49:42 -0400 Subject: [PATCH] 8231769: Test tools/javac/tree/MakeTypeTest.java fails with -Xcheck:jni Delete local jni handles in create_from_platform_dependent_str() after upcall to Java. Reviewed-by: dholmes, hseigel --- src/hotspot/share/classfile/javaClasses.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp index 56a33028364..6becdff50a5 100644 --- a/src/hotspot/share/classfile/javaClasses.cpp +++ b/src/hotspot/share/classfile/javaClasses.cpp @@ -384,13 +384,17 @@ Handle java_lang_String::create_from_platform_dependent_str(const char* str, TRA } jstring js = NULL; - { JavaThread* thread = (JavaThread*)THREAD; - assert(thread->is_Java_thread(), "must be java thread"); + { + assert(THREAD->is_Java_thread(), "must be java thread"); + JavaThread* thread = (JavaThread*)THREAD; HandleMark hm(thread); ThreadToNativeFromVM ttn(thread); js = (_to_java_string_fn)(thread->jni_environment(), str); } - return Handle(THREAD, JNIHandles::resolve(js)); + + Handle native_platform_string(THREAD, JNIHandles::resolve(js)); + JNIHandles::destroy_local(js); // destroy local JNIHandle. + return native_platform_string; } // Converts a Java String to a native C string that can be used for