|
|
Reland r38116: Improve receiver class check in polymorphic inlining.
Avoid reloading the class-id at the entry to last inlined variant at
inlined polymorphic call sites. For this I added a new check instruction
CheckClassIdInstr to deoptimize on integer-comparison.
In polymorphic CheckClass with small dense ranges of class-ids now generate
max. 2 branch instructions by doing a range check and computing a test mask
instead of a sequence of compare and branch instructions.
I fixed the crash bug which was due to illegal hoisting of CheckClassId and
two more assertion failures.
R=vegorov@google.com
Committed: https://code.google.com/p/dart/source/detail?r=38154
Total comments: 7
Total comments: 2
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+460 lines, -92 lines) |
Patch |
 |
M |
runtime/vm/assembler_ia32.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/assembler_ia32.cc
|
View
|
|
1 chunk |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/assembler_ia32_test.cc
|
View
|
|
1 chunk |
+20 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/assembler_x64.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/assembler_x64.cc
|
View
|
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/assembler_x64_test.cc
|
View
|
|
1 chunk |
+19 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/disassembler_ia32.cc
|
View
|
|
3 chunks |
+8 lines, -4 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_inliner.cc
|
View
|
1
|
2 chunks |
+14 lines, -33 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_optimizer.cc
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_type_propagator.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/flow_graph_type_propagator.cc
|
View
|
1
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language.h
|
View
|
1
|
5 chunks |
+42 lines, -0 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language.cc
|
View
|
1
|
7 chunks |
+63 lines, -3 lines |
2 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_arm.cc
|
View
|
1
|
3 chunks |
+51 lines, -9 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_arm64.cc
|
View
|
1
|
2 chunks |
+52 lines, -9 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_ia32.cc
|
View
|
1
|
3 chunks |
+53 lines, -12 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_mips.cc
|
View
|
1
|
3 chunks |
+52 lines, -10 lines |
0 comments
|
Download
|
 |
M |
runtime/vm/intermediate_language_x64.cc
|
View
|
1
|
3 chunks |
+53 lines, -12 lines |
0 comments
|
Download
|
Total messages: 8 (0 generated)
|