[jdk16] RFR: 8260339: JVM crashes when executing PhaseIdealLoop::match_fill_loop [v2]

Wang Huang whuang at openjdk.java.net
Tue Jan 26 07:14:57 UTC 2021


> The reason is :
> 
>   BasicType t = store->as_Mem()->memory_type();
>   const char* fill_name;
>   if (msg == NULL &&
>       StubRoutines::select_fill_function(t, false, fill_name) == NULL) {
>     msg = "unsupported store";
>     msg_node = store;
>   }
> 
> If the `store` is a `StoreVectorNode` ,the `BasicType` is `T_VOID`. We should get the basic type from `vect_type()->element_basic_type()` .
> 
> - BasicType t = store->as_Mem()->memory_type();
> + BasicType t;
> + if (store->is_StoreVector()) {
> + t = store->as_StoreVector()->vect_type()->element_basic_type();
> + } else {
> + t = store->as_Mem()->memory_type();
> + }
> 
> I fix this bug by adding new virtual method `elem_memory_type()` in memnode, for `StoreVectorNode` , it returns the basic type of elements; It will return memory_type() in other types of memnode.

Wang Huang has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision:

  8260339: JVM crashes when executing PhaseIdealLoop::match_fill_loop

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

Changes:
  - all: https://git.openjdk.java.net/jdk16/pull/132/files
  - new: https://git.openjdk.java.net/jdk16/pull/132/files/c1a93016..4a503063

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk16&pr=132&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk16&pr=132&range=00-01

  Stats: 12 lines in 3 files changed: 4 ins; 5 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk16/pull/132.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk16 pull/132/head:pull/132

PR: https://git.openjdk.java.net/jdk16/pull/132


More information about the hotspot-compiler-dev mailing list