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

Christian Thalinger christian.thalinger at oracle.com
Fri Aug 10 09:09:00 PDT 2012


Looks good.  Could you move the all_offsets after the compare:
+ && (all_offsets || lf->field()->offset() == field->offset());
It would be easier to read.
-- Chris

On Aug 6, 2012, at 6:29 PM, Roland Westrelin <roland.westrelin at oracle.com> wrote:

> 
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20120810/21f84095/attachment-0001.html 


More information about the hotspot-compiler-dev mailing list