|
Change == into an instance call to allow polymorphic inlining of ==.
In unoptimized code equality is now just another instance call.
The optimizer replaces it with a specialized implementation based on static
type information and type feedback.
Many of the manual optimizations of == in the optimizer are now just handled
by the generic inliner, plus polymorphic inlining of == calls is now possible.
This also eliminates the need for a lot of duplicated code in the backend.
I adapted the inlining heuristics to compensate for the slightly larger
inital flow graph size.
Committed: https://code.google.com/p/dart/source/detail?r=29800
Total comments: 6
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+287 lines, -1538 lines) |
Patch |
|
M |
runtime/lib/object.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/lib/object_patch.dart
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/bootstrap_natives.h
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_builder.h
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_builder.cc
|
View
|
1
2
3
4
5
6
7
|
6 chunks |
+82 lines, -38 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_compiler.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+0 lines, -3 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_inliner.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+15 lines, -3 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_optimizer.h
|
View
|
1
2
3
4
5
6
7
|
3 chunks |
+1 line, -19 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_optimizer.cc
|
View
|
1
2
3
4
5
6
7
|
11 chunks |
+124 lines, -240 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_type_propagator.cc
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+3 lines, -2 lines |
0 comments
|
Download
|
|
M |
runtime/vm/il_printer.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+0 lines, -3 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language.h
|
View
|
1
2
3
4
5
6
7
|
6 chunks |
+17 lines, -41 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language.cc
|
View
|
1
2
3
4
5
6
7
|
7 chunks |
+9 lines, -23 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_arm.cc
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+4 lines, -275 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_ia32.cc
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+4 lines, -288 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_mips.cc
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+4 lines, -314 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_x64.cc
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+4 lines, -288 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intrinsifier.h
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
runtime/vm/locations.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/symbols.h
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
Total messages: 5 (0 generated)
|