|
Fix stack height assertion code and free up a bit in the Function tag bits.
The bit has_finally was only used to skip the checking of the stack height
at return statements: There was an unused value floating on top of the
expression stack in unoptimized code if the finally block preceded a normal
return statement. Normallyi, that does not cause harm. Optimized code is not
affected since it has a fixed stack size for expression evaluation.
This CL fixes the stack height for functions with try-finally by introducing
a temporary local where the return value is saved before an inlined
finally-block.
R=srdjan@google.com
Committed: https://code.google.com/p/dart/source/detail?r=32157
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+86 lines, -108 lines) |
Patch |
|
M |
runtime/vm/ast.h
|
View
|
|
4 chunks |
+15 lines, -2 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_builder.cc
|
View
|
|
3 chunks |
+14 lines, -10 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_compiler.h
|
View
|
|
1 chunk |
+0 lines, -3 lines |
0 comments
|
Download
|
|
M |
runtime/vm/flow_graph_compiler.cc
|
View
|
|
1 chunk |
+0 lines, -5 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_arm.cc
|
View
|
|
1 chunk |
+10 lines, -16 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_ia32.cc
|
View
|
|
1 chunk |
+11 lines, -17 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_mips.cc
|
View
|
|
1 chunk |
+10 lines, -16 lines |
0 comments
|
Download
|
|
M |
runtime/vm/intermediate_language_x64.cc
|
View
|
|
1 chunk |
+11 lines, -17 lines |
0 comments
|
Download
|
|
M |
runtime/vm/object.h
|
View
|
|
3 chunks |
+3 lines, -10 lines |
0 comments
|
Download
|
|
M |
runtime/vm/object.cc
|
View
|
|
2 chunks |
+0 lines, -6 lines |
0 comments
|
Download
|
|
M |
runtime/vm/parser.cc
|
View
|
|
2 chunks |
+12 lines, -6 lines |
0 comments
|
Download
|
Total messages: 3 (0 generated)
|