`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 primate 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. 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' ------------- Commit messages: - Remove unused obj_at - HotSpotJVMCI should use RefArrayOops internally, and expect exceptions externally - Fix ZERO - Fix jvmti_GetThreadGroupChildren - Fix ForeignGlobals - Fix java_lang_invoke_MethodType - Fix oop_verify_on - Fix BacktraceBuilder and java_lang_Throwable - oopFactory::new_objectArray always creates refArrayOop - DefineModule String[] as refArrayOop - ... and 3 more: https://git.openjdk.org/valhalla/compare/dba91f1b...138cca9e Changes: https://git.openjdk.org/valhalla/pull/2157/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2157&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8378531 Stats: 356 lines in 51 files changed: 86 ins; 27 del; 243 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
