RFR: 8266017: Refactor the *klass::array_klass_impl code to separate the non-exception-throwing API

Coleen Phillimore coleenp at openjdk.java.net
Tue Apr 27 13:18:35 UTC 2021


On Tue, 27 Apr 2021 04:47:32 GMT, David Holmes <dholmes 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

This is a nice cleanup. I wish we'd done this years ago!

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.

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

Marked as reviewed by coleenp (Reviewer).

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


More information about the hotspot-runtime-dev mailing list