> `obj_at(int)` on `flatArrayOopDesc` should never be called as it may fail 
> with an out of memory error and crash. Similarly `objArrayOopDesc` should not 
> provide a shared interface to this member function which is only valid to 
> call on a `refArrayOopDesc`. 
> 
> This RFE cleans up the last potentially invalid uses by using and asserting 
> stricter types at the call sites.
> 
> Most cleanup are straight forward, however there are a few parts where some 
> extra feedback is appreciated. 
> 
> First the primitive caches (ac32b67e811945ed474ac62d07275e8a464e72b9). 
> [JDK-8369921](https://bugs.openjdk.org/browse/JDK-8369921)/#1685 conditioned 
> the use of the caches behind the `!PreviewFeatures.isEnabled()` such that 
> they are not used when running with Valhalla. However it did not do this for 
> Character, even though both the issue and the PR mentions this Class as well, 
> and could not find any discussion in the PR. 
> 
> Update: @jsikstro pointed me to 
> [JDK-8372619](https://bugs.openjdk.org/browse/JDK-8372619), I am curious to 
> where and how we access these caches (except for `valueOf`), as this change 
> which removes the caches in Valhalla seems to run through our testing. 
> 
> Second the caches were still created even if they were not used. In this PR I 
> chose to not create these caches at all if we are in preview mode. Also I am 
> not sure if it is the case that we always trust the internal final values and 
> do fold them, but I changed it to use `@stable` checks vs a sentinel, which I 
> know are trusted as final. However maybe this is unnecessary, and some core 
> library / compiler person has some input. 
> 
> Second is all the JVMCI changes (fe98ae0dc03c99c770dad1364fb1f010ea1ee7bf). 
> This patch changes it so that the internal JVMCI Classes that that hotspot 
> knows about are required to be RefArrays (this was already the assumption, 
> but this hardens this by changing their types). And for external arrays they 
> either throw an exception if it is an unexpected type (the case for 
> `executeHotSpotNmethod`) or use `obj_at(int, TRAP)` and returns with an out 
> of memory error. 
> 
> Testing:
>  * Running tier 1-7 with `--enable-preview'

Axel Boldt-Christmas has updated the pull request incrementally with one 
additional commit since the last revision:

  Apply suggestion from @stefank
  
  Co-authored-by: Stefan Karlsson <[email protected]>

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

Changes:
  - all: https://git.openjdk.org/valhalla/pull/2157/files
  - new: https://git.openjdk.org/valhalla/pull/2157/files/e417b2a5..209f6254

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2157&range=03
 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2157&range=02-03

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/valhalla/pull/2157.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2157/head:pull/2157

PR: https://git.openjdk.org/valhalla/pull/2157

Reply via email to