RFR: 8264711: More runtime TRAPS cleanups [v2]

Harold Seigel hseigel at openjdk.java.net
Wed Apr 7 14:24:23 UTC 2021


On Mon, 5 Apr 2021 23:28:38 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> Harold Seigel has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Undo change to ObjectSynchronizer::jni_exit()
>
> Hi Harold,
> 
> Lots of good cleanup here but also a couple of things that I think are incorrect. Platform string creation can throw exceptions; and I also believe the ClassFileLoadHook can too.
> 
> Thanks,
> David

Please review this latest version of this change containing reviewer suggested changes.

Thanks, Harold

> src/hotspot/share/classfile/javaClasses.cpp line 396:
> 
>> 394: 
>> 395: // Converts a C string to a Java String based on current encoding
>> 396: Handle java_lang_String::create_from_platform_dependent_str(JavaThread* current, const char* str) {
> 
> This change is incorrect. JNU_NewStringPlatform can raise an exception so TRAPS here is correct.

Thanks for finding this.  I reverted this change and the change to as_platform_dependent_str() because it calls GetStringPlatformChars() which calls JNU_GetStringPlatformChars() which can throw an exception.

> src/hotspot/share/prims/jvmtiEnv.cpp line 709:
> 
>> 707: 
>> 708:     // need the path as java.lang.String
>> 709:     Handle path = java_lang_String::create_from_platform_dependent_str(THREAD, segment);
> 
> This change will need reverting as an exception is possible as previously noted.
> 
> But note that if there was no possibility of exception here then the following check of HAS_PENDING_EXCEPTION should also have been removed.

Reverted.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3345


More information about the serviceability-dev mailing list