RFR: 8310299: C2: 8275201 broke constant folding of array store check in some cases

Roland Westrelin roland at openjdk.org
Mon Jun 19 09:05:20 UTC 2023


Before 8275201, loading the element klass of an array returned:


TypeKlassPtr::make(tkls->ptr(), elem, 0/*offset*/);


that is exact if the array type is exact. I changed it to:


tkls->is_aryklassptr()->elem();


When the array type is exact (newly allocated array for instance) but
the element class has subclasses, this doesn't return an exact class
(so the logic is different from the one that was there before). That
affects array store checks that no longer constant fold.

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

Commit messages:
 - fix & test

Changes: https://git.openjdk.org/jdk/pull/14536/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14536&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8310299
  Stats: 64 lines in 3 files changed: 63 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/14536.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14536/head:pull/14536

PR: https://git.openjdk.org/jdk/pull/14536


More information about the hotspot-compiler-dev mailing list