RFR(S) 7171824: assert(_offset >= 1) failed: illegal call to offset()

Roland Westrelin roland.westrelin at oracle.com
Mon Aug 6 18:29:54 PDT 2012


http://cr.openjdk.java.net/~roland/7171824/webrev.00/

Global/local value numbering, when it processes a StoreField, must kill
every matching LoadField that are stored in the value numbering's hash
table. A matching LoadField loads a field that has the same holder and
offset (a LoadField is in the hash table only if it has a known offset).

In this failure, the StoreField is at an unknown offset (-1) but it has
the same holder as a LoadField. The LoadField and the StoreField are not
accessed from a class with the same class loader/protection domain. So
for the LoadField both holder and offset are known while for the
StoreField the holder is known but the offset is set to -1 because the
field access is not known to be ok under the protection domain.

Given the offset of the StoreField is unknown during value numbering,
all LoadFields with the same holder as the StoreField should be killed.

Roland.


More information about the hotspot-compiler-dev mailing list