[13] RFR: 8202414: Unsafe write after primitive array creation may result in array length change

Rahul Raghavan rahul.v.raghavan at oracle.com
Tue Apr 30 07:04:44 UTC 2019


Thank you Vladimir Ivanov for suggestions.

Please note following latest changes tried.
<webrev.04> - http://cr.openjdk.java.net/~rraghavan/8202414/webrev.04/

Hope did not miss any points.
Confirmed no failures with the reported test cases.
Also hs-tier1 to tier4, hs-precheckin-comp testing in progress.

Thanks,
Rahul

On 27/04/19 11:48 AM, Vladimir Ivanov wrote:
> On 26/04/2019 19:30, Vladimir Ivanov wrote:
> 
> After thinking more about it, I believe new offset alignment check 
> supersedes is_unaligned_access(). And is_mismatched_access() is too 
> conservative here: what is_mismatched_access() adds here (in addition to 
> existing alignment & size checks) is whether type match between location 
> and stored value, but what matters for IN are sizes and offsets only.
> 
> Type mismatches (e.g., byte vs boolean, char vs short) may cause 
> problems when consequent loads are replaced with values from 
> initializing stores, but it should be already handled in 
> MemNode::can_see_stored_value() and Load?Node::Ideal().
> 
> So, it seems both checks (is_unaligned_access() & 
> is_mismatched_access()) can be safely omitted.
> 
> 
> 
> You are right, I missed that IN::captured_store_insertion_point() 
> inspects already other stores which are already captured. Sorry for the 
> confusion.
> 
> I agree that IN::can_capture_store() is the right place to put the fix 
> in and I like (iii). (Just add a comment, "// mismatched access" is enough)
> 


More information about the hotspot-compiler-dev mailing list