RFR: 8353345: C2 asserts because maskShiftAmount modifies node without deleting the hash

Marc Chevalier mchevalier at openjdk.org
Wed Apr 2 08:31:19 UTC 2025


First delete the hash, then `set_req`. This way, we avoid changing the node (a non-`this` node) without deleting the hash. This wrong ordering is not new from [JDK-8347459](https://bugs.openjdk.org/browse/JDK-8347459), but before that, only `this` was going through this function, so it was ok. But since, it is used with other nodes, hence the need to remove the hash.

Also, not do any of that outside IGVN, but requires to register nested shifts for IGVN in parsing not to miss them later.

Thanks,
Marc

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

Commit messages:
 - No collapse double shift left in IGVN + remove from hashtable before set_req

Changes: https://git.openjdk.org/jdk/pull/24355/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24355&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8353345
  Stats: 62 lines in 2 files changed: 60 ins; 2 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/24355.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24355/head:pull/24355

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


More information about the hotspot-compiler-dev mailing list