Chromium Code Reviews
DescriptionFix LoadOptimizer's handling of load/stores with constant indices for TypedData.
LoadOptimizer computes KILL sets in assumption that place X[C] can alias place X[K] if and only if K == C. This however does not hold for TypedData where X[0] can alias X[1] if we are reading 32bit value at X[0] and 8bit value at X[1]. The only thing that TypedData guarantees is that all accesses are done with byte offsets aligned by the size of the data type.
This change incorporates TypeData elements aliasing rules into LoadOptimizer:
- Place hierarchy was extended with constant index places for TypedData X[C|S]:
- C is a byte offset to the element being read instead of an unscaled index that was used before;
- S size of the element being read.
- KILL set computation ensures the following aliasing rule:
X[C|S] aliases X[RoundDown(C, S')|S'] for all sizes S' > S
R=fschneider@google.com
BUG=http://dartbug.com/22120
Committed: https://code.google.com/p/dart/source/detail?r=43137
Patch Set 1 #
Total comments: 10
Patch Set 2 : #
Messages
Total messages: 5 (0 generated)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||