Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Issue 868283002: Fix LoadOptimizer's handling of load/stores with constant indices for TypedData. (Closed)

Created:
5 years, 11 months ago by Vyacheslav Egorov (Google)
Modified:
5 years, 11 months ago
Reviewers:
Florian Schneider
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Target Ref:
refs/remotes/git-svn
Visibility:
Public.

Description

Fix 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 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+395 lines, -73 lines) Patch
M runtime/vm/bitfield.h View 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 18 chunks +281 lines, -56 lines 0 comments Download
M runtime/vm/locations.h View 3 chunks +44 lines, -17 lines 0 comments Download
M tests/language/language.status View 1 1 chunk +3 lines, -0 lines 0 comments Download
M tests/language/vm/load_to_load_forwarding_vm_test.dart View 1 2 chunks +41 lines, -0 lines 0 comments Download
A tests/language/vm/load_to_load_unaligned_forwarding_vm_test.dart View 1 1 chunk +24 lines, -0 lines 0 comments Download

Messages

Total messages: 5 (0 generated)
Vyacheslav Egorov (Google)
5 years, 11 months ago (2015-01-24 01:35:12 UTC) #1
Florian Schneider
LGTM with the added test coverage. https://codereview.chromium.org/868283002/diff/1/runtime/vm/flow_graph_optimizer.cc File runtime/vm/flow_graph_optimizer.cc (right): https://codereview.chromium.org/868283002/diff/1/runtime/vm/flow_graph_optimizer.cc#newcode5098 runtime/vm/flow_graph_optimizer.cc:5098: // offset is ...
5 years, 11 months ago (2015-01-26 13:30:40 UTC) #2
Vyacheslav Egorov (Google)
All done. Added separate test (marked as Crashing on ARM&MIPS) https://codereview.chromium.org/868283002/diff/1/runtime/vm/flow_graph_optimizer.cc File runtime/vm/flow_graph_optimizer.cc (right): https://codereview.chromium.org/868283002/diff/1/runtime/vm/flow_graph_optimizer.cc#newcode5098 ...
5 years, 11 months ago (2015-01-26 14:57:16 UTC) #3
Florian Schneider
LGTM. Thanks!
5 years, 11 months ago (2015-01-26 15:09:12 UTC) #4
Vyacheslav Egorov (Google)
5 years, 11 months ago (2015-01-26 15:14:44 UTC) #5
Message was sent while issue was closed.
Committed patchset #2 (id:20001) manually as 43137 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698