Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: runtime/vm/ast_transformer.cc

Issue 1180903002: null-aware operators in the VM (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add test for opt compiler Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/ast_transformer.h" 5 #include "vm/ast_transformer.h"
6 6
7 #include "vm/object_store.h" 7 #include "vm/object_store.h"
8 #include "vm/parser.h" 8 #include "vm/parser.h"
9 #include "vm/thread.h" 9 #include "vm/thread.h"
10 10
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 429
430 430
431 void AwaitTransformer::VisitInstanceCallNode(InstanceCallNode* node) { 431 void AwaitTransformer::VisitInstanceCallNode(InstanceCallNode* node) {
432 AstNode* new_receiver = Transform(node->receiver()); 432 AstNode* new_receiver = Transform(node->receiver());
433 ArgumentListNode* new_args = 433 ArgumentListNode* new_args =
434 Transform(node->arguments())->AsArgumentListNode(); 434 Transform(node->arguments())->AsArgumentListNode();
435 LocalVariable* result = AddToPreambleNewTempVar( 435 LocalVariable* result = AddToPreambleNewTempVar(
436 new(Z) InstanceCallNode(node->token_pos(), 436 new(Z) InstanceCallNode(node->token_pos(),
437 new_receiver, 437 new_receiver,
438 node->function_name(), 438 node->function_name(),
439 new_args)); 439 new_args,
440 node->is_conditional()));
440 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result); 441 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result);
441 } 442 }
442 443
443 444
444 void AwaitTransformer::VisitStaticCallNode(StaticCallNode* node) { 445 void AwaitTransformer::VisitStaticCallNode(StaticCallNode* node) {
445 ArgumentListNode* new_args = 446 ArgumentListNode* new_args =
446 Transform(node->arguments())->AsArgumentListNode(); 447 Transform(node->arguments())->AsArgumentListNode();
447 LocalVariable* result = AddToPreambleNewTempVar( 448 LocalVariable* result = AddToPreambleNewTempVar(
448 new(Z) StaticCallNode(node->token_pos(), 449 new(Z) StaticCallNode(node->token_pos(),
449 node->function(), 450 node->function(),
(...skipping 12 matching lines...) Expand all
462 new_args)); 463 new_args));
463 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result); 464 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result);
464 } 465 }
465 466
466 467
467 void AwaitTransformer::VisitInstanceGetterNode(InstanceGetterNode* node) { 468 void AwaitTransformer::VisitInstanceGetterNode(InstanceGetterNode* node) {
468 AstNode* new_receiver = Transform(node->receiver()); 469 AstNode* new_receiver = Transform(node->receiver());
469 LocalVariable* result = AddToPreambleNewTempVar( 470 LocalVariable* result = AddToPreambleNewTempVar(
470 new(Z) InstanceGetterNode(node->token_pos(), 471 new(Z) InstanceGetterNode(node->token_pos(),
471 new_receiver, 472 new_receiver,
472 node->field_name())); 473 node->field_name(),
474 node->is_conditional()));
473 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result); 475 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result);
474 } 476 }
475 477
476 478
477 void AwaitTransformer::VisitInstanceSetterNode(InstanceSetterNode* node) { 479 void AwaitTransformer::VisitInstanceSetterNode(InstanceSetterNode* node) {
478 AstNode* new_receiver = node->receiver(); 480 AstNode* new_receiver = node->receiver();
479 if (new_receiver != NULL) { 481 if (new_receiver != NULL) {
480 new_receiver = Transform(new_receiver); 482 new_receiver = Transform(new_receiver);
481 } 483 }
482 AstNode* new_value = Transform(node->value()); 484 AstNode* new_value = Transform(node->value());
483 LocalVariable* result = AddToPreambleNewTempVar( 485 LocalVariable* result = AddToPreambleNewTempVar(
484 new(Z) InstanceSetterNode(node->token_pos(), 486 new(Z) InstanceSetterNode(node->token_pos(),
485 new_receiver, 487 new_receiver,
486 node->field_name(), 488 node->field_name(),
487 new_value)); 489 new_value,
490 node->is_conditional()));
488 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result); 491 result_ = new(Z) LoadLocalNode(Scanner::kNoSourcePos, result);
489 } 492 }
490 493
491 494
492 void AwaitTransformer::VisitStaticGetterNode(StaticGetterNode* node) { 495 void AwaitTransformer::VisitStaticGetterNode(StaticGetterNode* node) {
493 AstNode* new_receiver = node->receiver(); 496 AstNode* new_receiver = node->receiver();
494 if (new_receiver != NULL) { 497 if (new_receiver != NULL) {
495 new_receiver = Transform(new_receiver); 498 new_receiver = Transform(new_receiver);
496 } 499 }
497 StaticGetterNode* new_getter = 500 StaticGetterNode* new_getter =
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 616
614 617
615 void AwaitTransformer::VisitThrowNode(ThrowNode* node) { 618 void AwaitTransformer::VisitThrowNode(ThrowNode* node) {
616 AstNode* new_exception = Transform(node->exception()); 619 AstNode* new_exception = Transform(node->exception());
617 result_ = new(Z) ThrowNode(node->token_pos(), 620 result_ = new(Z) ThrowNode(node->token_pos(),
618 new_exception, 621 new_exception,
619 node->stacktrace()); 622 node->stacktrace());
620 } 623 }
621 624
622 } // namespace dart 625 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698