RFR(XS): 8071821: Assert failed in UnexpectedDeoptimizationTest.java
roland.westrelin at oracle.com
Fri Feb 6 17:58:29 UTC 2015
Thanks for taking a look at this.
> Is it one direction change of the field? Should we change the assert to check then?
The field will change from -1 to something that is >=0 and it won’t ever go back to -1.
has_injected_fields() is the only place that calls compute_injected_fields() and the call is guarded by a _has_injected_fields == -1. That’s why I think the assert is unlikely to catch any bad behavior and can be removed.
> On 2/6/15 5:19 AM, Roland Westrelin wrote:
>> Some ciInstanceKlass objects are shared between compiler threads so has_injected_fields() can be called on the same ciInstanceKlass concurrently by multiple threads and cause a concurrent initialization of the _has_injected_fields. In itself it’s armless (all threads will get the same result, the _has_inkected_fields will be set correctly) but it causes an assert to fire. The assert is pretty useless so I removed it.
More information about the hotspot-compiler-dev