On Tue, 24 Nov 2020 13:35:17 GMT, Jorn Vernee <jver...@openjdk.org> wrote:

>> JDK-8254231 breaks the Linux and Windows x86 (32-bit) builds. This contains 
>> the needed changes to get it working again.
>> 
>> Perhaps the most interesting change is adding the `JNI_ENTRY_CPP_NOENV` 
>> macro. Using just JNI_ENTRY was causing a linkage failure, due to the 
>> declaration of the function in the class not having the same linkage 
>> specifiers. It looks like we can't just specify C linkage for class member 
>> functions.
>> 
>> However, in this case C linkage is not required, so I've added the new macro 
>> which doesn't have `extern "C"`. I've also dropped the `JNIEnv*` parameter, 
>> since it was not being used, but causing extra work for the caller.
>> 
>> Other than that, it's just about adding default definitions for missing 
>> functions, and moving around some code in MacroAssembler to be in the 
>> correct `#ifdef` blocks.
>> 
>> Testing: `make images` on Linux and Windows x86_32 platforms.
>
> Jorn Vernee has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 10 additional 
> commits since the last revision:
> 
>  - Merge branch 'master' into Linker_32bit-fixes_Simpler
>  - Remove JNI_ENTRY_CPP_NOENV
>  - - Move reset_last_Java_frame
>  - Use the Unimplemented() macro instead of hlt()
>  - Merge branch 'master' into Linker_32bit-fixes_Simpler
>  - Remove UnsupportedPlatform test
>  - Remove unneeded cast
>  - Remove Stuff that makes the jdk_foreign tests pass
>  - fix test warnings
>  - - Fix 32-bit build errors and tests
>    - Add negative test for 32-bit platform.
>    - Change CABI to fail more lazily when running on an unsupported platform.
>    - Change CLinker layouts to be null on unsupported platforms, instead of 
> failing when initializing the class
>    - Added note to CLinker about failure to initialize on unsupported 
> platforms

The VM "entry" changes seem better now. Thanks.

The use of CATCH as a safety-net is also good.

src/hotspot/share/prims/universalUpcallHandler.cpp line 37:

> 35: 
> 36: void ProgrammableUpcallHandler::upcall_helper(jobject rec, address buff) {
> 37:   JavaThread* THREAD = JavaThread::current();

You could pass the current thread in rather than re-manifesting it.

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

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

Reply via email to