Index: runtime/vm/ast_transformer.cc |
=================================================================== |
--- runtime/vm/ast_transformer.cc (revision 41096) |
+++ runtime/vm/ast_transformer.cc (working copy) |
@@ -142,8 +142,6 @@ |
AwaitMarkerNode* await_marker = new (I) AwaitMarkerNode( |
AwaitMarkerNode::kNewContinuationState); |
await_marker->set_scope(is_future_scope); |
- GetVariableInScope(is_future_scope, Symbols::AwaitJumpVar()); |
hausner
2014/10/14 16:29:55
I am not sure why the lookup of these variables is
Florian Schneider
2014/10/15 11:40:59
Here the side effect occurs twice (here and again
|
- GetVariableInScope(is_future_scope, Symbols::AwaitContextVar()); |
is_future_branch->Add(await_marker); |
ArgumentListNode* args = new(I) ArgumentListNode(Scanner::kNoSourcePos); |
args->Add(new(I) LoadLocalNode(Scanner::kNoSourcePos, async_op)); |
@@ -279,8 +277,7 @@ |
void AwaitTransformer::VisitBinaryOpNode(BinaryOpNode* node) { |
- node->left()->Visit(this); |
- AstNode* new_left = result_; |
+ AstNode* new_left = Transform(node->left()); |
AstNode* new_right = NULL; |
// Preserve lazy evaluaton. |
if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) { |
@@ -299,15 +296,9 @@ |
void AwaitTransformer::VisitBinaryOpWithMask32Node( |
BinaryOpWithMask32Node* node) { |
- node->left()->Visit(this); |
- AstNode* new_left = result_; |
- AstNode* new_right = NULL; |
- // Preserve lazy evaluaton. |
- if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) { |
- new_right = LazyTransform(node->kind(), new_left, node->right()); |
- } else { |
- new_right = Transform(node->right()); |
- } |
+ ASSERT((node->kind() != Token::kAND) && (node->kind() != Token::kOR)); |
+ AstNode* new_left = Transform(node->left()); |
+ AstNode* new_right = Transform(node->right()); |
LocalVariable* result = AddToPreambleNewTempVar( |
new(I) BinaryOpWithMask32Node(node->token_pos(), |
node->kind(), |