21214c0f16
The optimizer can now track side effects to array locations at a constant index when eliminating array loads. Stores to arrays with a constant index affect loads from arrays at the same constant index _and_ loads from an unknown (non-constant) index. Stores to an array with an unknown index affect all array loads. For instance code like var a = new List(2); a[0] = 123; a[1] = 456; print(a[0] + a[1]); we can now eliminate both loads from a[0] and a[1], where before only the loads from a[1] was eliminated. I changed the internal encoding of Alias to use BitField instead of plain integers. This makes it a little easire to extend. R=johnmccutchan@google.com Review URL: https://codereview.chromium.org//145133009 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32014 260f80e4-7a28-3924-810f-c04153c831b5