Integrated: 8309203: C2: remove copy-by-value of GrowableArray for InterfaceSet
Roland Westrelin
roland at openjdk.org
Tue Nov 14 09:10:45 UTC 2023
On Mon, 23 Oct 2023 12:41:23 GMT, Roland Westrelin <roland at openjdk.org> wrote:
> The `InterfaceSet` component of types is immutable (once it is fully
> constructed). In that way, it's similar to other type components. In
> this change I propose making `InterfaceSet` a subtype of `Type` (and
> renaming it `TypeInterfaces`). It's then feasible to `hashcons`
> `TypeInterfaces` instances the way it's done for other `Type`
> instance. A single copy of a `TypeInterfaces` for a particular set of
> interfaces is live during a compilation (and for the entire length of
> the compilation) and pointer equality can be used to check two sets of
> interfaces for equality. I think that change makes interface support
> fit better with the type system implementation and has the added
> benefits that there's no copy by value of the GrowableArray that holds
> the set of interfaces anymore.
>
> A couple of required virtual methods for `Type` are not implemented
> for `TypeInterfaces`: `xmeet` and `singleton` (their body now calls
> `ShouldNotReachHere`). They would need a way to tell whether
> `TypeInterfaces` instances are above the center line or not. I thought
> about (and tried) having a root class `Type` that would contain the
> bare minimum for type that can be `hashcons`'ed so this method
> wouldn't need to be implemented by `TypeInterfaces`. That proved to be
> quite complicated and I gave up.
This pull request has now been integrated.
Changeset: 21cda19d
Author: Roland Westrelin <roland at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/21cda19d05b688148f023f6d92778b5da210b709
Stats: 286 lines in 2 files changed: 66 ins; 44 del; 176 mod
8309203: C2: remove copy-by-value of GrowableArray for InterfaceSet
Reviewed-by: thartmann, kvn
-------------
PR: https://git.openjdk.org/jdk/pull/16309
More information about the hotspot-compiler-dev
mailing list