On Tue, 17 May 2022 05:38:01 GMT, David Holmes <[email protected]> wrote:
>> Jaroslav Bachorik has updated the pull request incrementally with one
>> additional commit since the last revision:
>>
>> Restore the original find_blob behavior regarding dead blobs
>
> src/hotspot/share/prims/forte.hpp line 53:
>
>> 51: ASGCTMark() : ASGCTMark(JavaThread::current()) {}
>> 52: ~ASGCTMark() {
>> 53: JavaThread::current()->set_in_asgct(false);
>
> You can't call `JavaThread::current()` in any of this code as it is not safe
> from a signal handling context. (There is an existing use in ASGCT that is
> also unsafe.) I suggest not having the no-arg constructor and require the
> current JavaThread, or null, to be passed in (having already been safely
> obtained by the caller). You can then assert using
> `Thread::current_or_null_safe()`.
>
> Personally I find the ASGCTMark complete overkill for this situation as there
> is only ever going to be a single use - sorry @tstuefe - it is just
> complicating things IMO.
Ok, I fixed the `ASGCTMark` to be safe to use from a signal handler.
I have no strong opinion about whether we should keep it or not - it makes the
code in `forte.cpp` slightly more resilient in case of further modifications
for the price of more complexity introduced by the mark class 🤷
-------------
PR: https://git.openjdk.java.net/jdk/pull/8549