RFR: 8266017: Refactor the *klass::array_klass_impl code to separate the non-exception-throwing API
Ioi Lam
iklam at openjdk.java.net
Tue Apr 27 20:50:05 UTC 2021
On Tue, 27 Apr 2021 12:46:56 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> We currently have array_klass() and array_klass_or_null(), where the former can throw exceptions and the latter can not. But they both delegate to:
>>
>> array_klass_impl(bool or_null, TRAPS)
>>
>> which combines both the exception-throwing and non-exception-throwing code into one method declared with TRAPS. To make progress with the change of TRAPS to JavaThread (JDK-8252685) we need to separate these code paths into distinct methods.
>>
>> Testing: tiers 1-3 (in progress)
>>
>> Thanks,
>> David
>
> src/hotspot/share/oops/klass.hpp line 525:
>
>> 523: virtual Klass* array_klass_impl(TRAPS);
>> 524: virtual Klass* array_klass_or_null_impl(int rank);
>> 525: virtual Klass* array_klass_or_null_impl();
>
> I think you should make these pure virtual functions (=0) and remove the bodies in klass.cpp.
I think now we can get rid of the `array_klass_or_null_impl()` function altogether. Instead, `array_klass_or_null` should be declared as `virtual ... = 0` in `Klass` and implemented by the concrete subclasses.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3711
More information about the hotspot-runtime-dev
mailing list