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