RFR: 8263164: assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector while calling StoreVectorNode::memory_size()

Jie Fu jiefu at openjdk.java.net
Tue Mar 9 23:31:06 UTC 2021


On Mon, 8 Mar 2021 17:34:52 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> I don't think it is correct place to fix it. Why checks in StoreNode(and LoadNode)::Value() does not work for vectors?:
> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/memnode.cpp#L2702
> 
> Did we forgot to put this nodes on IGVN worklist somewhere?

Hi @vnkozlov ,

Thanks for your review.

After more investigation, I found the same issue for non-vector store nodes.
For example, StoreN was also observed with in(MemNode::ValueIn)->bottom_type() == Type::TOP during PhaseIterGVN::optimize().

The nodes should have been pushed on the IGVN worklist since it happened when StoreN was popped from the IGVN worklist.
So I think StoreVectorNode::memory_size() should also work when in(MemNode::ValueIn)->bottom_type() == Type::TOP during PhaseIterGVN::optimize().

By the way, I'm not clear why you say the checks in StoreNode(and LoadNode)::Value() does not work for vectors?
Could you make it more clearer?
Thanks.

Best regards,
Jie

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

PR: https://git.openjdk.java.net/jdk/pull/2867


More information about the hotspot-compiler-dev mailing list