|
If bounds check 0 <= index < length is not redundant we attempt to
replace it with a sequence of checks that guarantee
0 <= LowerBound(index) < UpperBound(index) < length
and hoist all of those checks out of the enclosing loop.
Upper/Lower bounds are symbolic arithmetic expressions with +, -, *
operations and are computed based on discovered simple induction variables.
Simple induction variable is a variable that follows the pattern v1 <- phi(v0, v1 + 1)
BUG=
R=fschneider@google.com
Committed: https://code.google.com/p/dart/source/detail?r=40969
Total comments: 36
Total comments: 13
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+1342 lines, -374 lines) |
Patch |
 |
M |
runtime/vm/code_generator.cc
|
View
|
1
2
3
4
|
1 chunk |
+3 lines, -2 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/compiler.cc
|
View
|
|
1 chunk |
+6 lines, -5 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/deopt_instructions.h
|
View
|
|
4 chunks |
+15 lines, -2 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/deopt_instructions.cc
|
View
|
|
4 chunks |
+16 lines, -13 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph.h
|
View
|
|
2 chunks |
+47 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph.cc
|
View
|
1
2
3
4
5
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_compiler.h
|
View
|
|
5 chunks |
+9 lines, -2 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_compiler.cc
|
View
|
|
4 chunks |
+9 lines, -4 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_inliner.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_optimizer.cc
|
View
|
1
2
3
4
5
|
5 chunks |
+3 lines, -50 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_range_analysis.h
|
View
|
1
|
5 chunks |
+16 lines, -2 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_range_analysis.cc
|
View
|
1
2
3
4
5
|
19 chunks |
+915 lines, -63 lines |
10 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language.h
|
View
|
1
2
3
4
5
|
16 chunks |
+50 lines, -17 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language.cc
|
View
|
1
2
3
4
5
|
2 chunks |
+37 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_arm.cc
|
View
|
1
2
3
4
|
4 chunks |
+14 lines, -8 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_arm64.cc
|
View
|
1
2
3
4
|
4 chunks |
+14 lines, -8 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_ia32.cc
|
View
|
1
2
3
4
|
4 chunks |
+14 lines, -8 lines |
1 comment
|
Download
|
 |
M |
runtime/vm/intermediate_language_mips.cc
|
View
|
1
2
3
4
|
4 chunks |
+13 lines, -8 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_x64.cc
|
View
|
1
2
3
4
|
4 chunks |
+15 lines, -9 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/object.h
|
View
|
1
2
3
4
|
10 chunks |
+48 lines, -92 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/object.cc
|
View
|
1
2
3
4
|
9 chunks |
+17 lines, -77 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/object_test.cc
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/stack_frame.cc
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
A |
tests/standalone/array_bounds_check_generalization_test.dart
|
View
|
1
2
3
4
5
|
1 chunk |
+75 lines, -0 lines |
2 comments
|
Download
|
Total messages: 9 (2 generated)
|