RFR: 8265035: Remove unneeded exception check from refill_ic_stubs()
David Holmes
david.holmes at oracle.com
Tue Apr 13 02:06:28 UTC 2021
On 13/04/2021 11:55 am, Patricio Chilano Mateo wrote:
> On Mon, 12 Apr 2021 14:46:02 GMT, Patricio Chilano Mateo <pchilanomate at openjdk.org> wrote:
>
>> Hi,
>>
>> Please review this small fix. The HAS_PENDING_EXCEPTION check will always return false since EXCEPTION_MARK will check that there are no pending exceptions upon entering and VMThread::execute() doesn't throw exceptions.
>> The comment says that we could get a potential async exception, which is true, since the JT will be blocked waiting on VMOperation_lock. However delivering an async exception doesn't set the _pending_exception field, only additional fields (see JavaThread::send_thread_stop() -> set_pending_async_exception()) that will be later check in check_and_handle_async_exceptions() and only then _pending_exception will be set.
You also need to manifest THREAD to use HAS_PENDING_EXCEPTION. I suspect
the EM was introduced purely to make THREAD available for the code
you've removed.
I have no concerns with removing the EM if you want to.
Thanks,
David
>>
>> Thanks,
>> Patricio
>
> Hi David,
>
> Thanks for looking at this.
>
>> Changes look good.
>>
>> Though I wonder whether we even need the EXCEPTION_MARK?
>
> I think it can be removed actually. The alternative could be to change it for assert(!HAS_PENDING_EXCEPTION, "there should be no pending exceptions") to only verify that there are no pending exceptions when entering refill_ic_stubs(). But I think that only makes sense if the following code can throw exceptions and you want to avoid overriding a possibly already pending one. So if you are okay too I can remove it.
>
> Thanks,
> Patricio
>> Thanks,
>> David
>
> -------------
>
> PR: https://git.openjdk.java.net/jdk/pull/3436
>
More information about the hotspot-runtime-dev
mailing list