RFR: 8310829: guarantee(!HAS_PENDING_EXCEPTION) failed in ExceptionTranslation::doit [v4]
Tom Rodriguez
never at openjdk.org
Tue Jun 27 23:11:05 UTC 2023
On Tue, 27 Jun 2023 21:29:53 GMT, Doug Simon <dnsimon at openjdk.org> wrote:
>> The VMSupport class is required for translating an exception between the HotSpot and libgraal heaps.
>> Loading it lazily can result in a loading exception, obscuring the exception being translated.
>> To avoid this, VMSupport is loaded eagerly along with the other vmClasses.
>
> Doug Simon has updated the pull request incrementally with one additional commit since the last revision:
>
> revert to lazy loading of VMSupport
I don't think pushing it down that far improves things. encode always precedes decode so why not resolve it before the encode call.
// Resolve VMSupport class explicitly as HotSpotJVMCI::compute_offsets
// may not have been called.
Klass* vmSupport = SystemDictionary::resolve_or_fail(vmSymbols::jdk_internal_vm_VMSupport(), true, THREAD);
int res = 0;
if (!HAS_PENDING_EXCEPTION) {
res = encode(THREAD, vmSupport, buffer, buffer_size);
}
src/hotspot/share/jvmci/jvmciEnv.cpp line 402:
> 400: }
> 401: int res = encode(THREAD, buffer, buffer_size);
> 402: if (_from_env != nullptr && !_from_env->is_hotspot() && _from_env->has_pending_exception()) {
Why is this check before the `HAS_PENDING_EXCEPTION` check? Couldn't you end up returning with a pending exception in this path?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14641#issuecomment-1610335668
PR Review Comment: https://git.openjdk.org/jdk/pull/14641#discussion_r1244461845
More information about the hotspot-dev
mailing list