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

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

Issue 1307943008: Make default_parameter_values a ZoneGrowableArray instead of an array in new space (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: r Created 5 years, 3 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
« no previous file with comments | « no previous file | runtime/vm/code_descriptors_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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_printer.h" 5 #include "vm/ast_printer.h"
6 6
7 #include "vm/handles.h" 7 #include "vm/handles.h"
8 #include "vm/log.h" 8 #include "vm/log.h"
9 #include "vm/object.h" 9 #include "vm/object.h"
10 #include "vm/os.h" 10 #include "vm/os.h"
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 IndentN(indent); 501 IndentN(indent);
502 ISL_Print("}\n"); 502 ISL_Print("}\n");
503 child = child->sibling(); 503 child = child->sibling();
504 } 504 }
505 } 505 }
506 506
507 507
508 void AstPrinter::PrintFunctionScope(const ParsedFunction& parsed_function) { 508 void AstPrinter::PrintFunctionScope(const ParsedFunction& parsed_function) {
509 HANDLESCOPE(Isolate::Current()); 509 HANDLESCOPE(Isolate::Current());
510 const Function& function = parsed_function.function(); 510 const Function& function = parsed_function.function();
511 const Array& default_parameter_values =
512 parsed_function.default_parameter_values();
513 SequenceNode* node_sequence = parsed_function.node_sequence(); 511 SequenceNode* node_sequence = parsed_function.node_sequence();
514 ASSERT(node_sequence != NULL); 512 ASSERT(node_sequence != NULL);
515 const LocalScope* scope = node_sequence->scope(); 513 const LocalScope* scope = node_sequence->scope();
516 ASSERT(scope != NULL); 514 ASSERT(scope != NULL);
517 const char* function_name = function.ToFullyQualifiedCString(); 515 const char* function_name = function.ToFullyQualifiedCString();
518 ISL_Print("Scope for function '%s'\n{scope %p ", function_name, scope); 516 ISL_Print("Scope for function '%s'\n{scope %p ", function_name, scope);
519 if (scope->HasContextLevel()) { 517 if (scope->HasContextLevel()) {
520 ISL_Print("ctx %d numctxvar %d ", 518 ISL_Print("ctx %d numctxvar %d ",
521 scope->context_level(), 519 scope->context_level(),
522 scope->num_context_variables()); 520 scope->num_context_variables());
523 } 521 }
524 ISL_Print("llev %d\n", scope->loop_level()); 522 ISL_Print("llev %d\n", scope->loop_level());
525 const int num_fixed_params = function.num_fixed_parameters(); 523 const int num_fixed_params = function.num_fixed_parameters();
526 const int num_params = num_fixed_params + function.NumOptionalParameters(); 524 const int num_params = num_fixed_params + function.NumOptionalParameters();
527 // Parameters must be listed first and must all appear in the top scope. 525 // Parameters must be listed first and must all appear in the top scope.
528 ASSERT(num_params <= scope->num_variables()); 526 ASSERT(num_params <= scope->num_variables());
529 int pos = 0; // Current position of variable in scope. 527 int pos = 0; // Current position of variable in scope.
530 int indent = kScopeIndent; 528 int indent = kScopeIndent;
531 while (pos < num_params) { 529 while (pos < num_params) {
532 LocalVariable* param = scope->VariableAt(pos); 530 LocalVariable* param = scope->VariableAt(pos);
533 ASSERT(param->owner() == scope); // No aliases should precede parameters. 531 ASSERT(param->owner() == scope); // No aliases should precede parameters.
534 IndentN(indent); 532 IndentN(indent);
535 ISL_Print("(param %s%s '%s'", 533 ISL_Print("(param %s%s '%s'",
536 param->is_final() ? "final " : "", 534 param->is_final() ? "final " : "",
537 String::Handle(param->type().Name()).ToCString(), 535 String::Handle(param->type().Name()).ToCString(),
538 param->name().ToCString()); 536 param->name().ToCString());
539 // Print the default value if the parameter is optional. 537 // Print the default value if the parameter is optional.
540 if (pos >= num_fixed_params && pos < num_params) { 538 if (pos >= num_fixed_params && pos < num_params) {
541 const Object& default_parameter_value = Object::Handle( 539 const Instance& default_parameter_value =
542 default_parameter_values.At(pos - num_fixed_params)); 540 parsed_function.DefaultParameterValueAt(pos - num_fixed_params);
543 ISL_Print(" =%s", default_parameter_value.ToCString()); 541 ISL_Print(" =%s", default_parameter_value.ToCString());
544 } 542 }
545 if (param->HasIndex()) { 543 if (param->HasIndex()) {
546 ISL_Print(" @%d", param->index()); 544 ISL_Print(" @%d", param->index());
547 if (param->is_captured()) { 545 if (param->is_captured()) {
548 ISL_Print(" ctx %d", param->owner()->context_level()); 546 ISL_Print(" ctx %d", param->owner()->context_level());
549 } 547 }
550 } 548 }
551 ISL_Print(" valid %" Pd "-%" Pd ")\n", 549 ISL_Print(" valid %" Pd "-%" Pd ")\n",
552 param->token_pos(), 550 param->token_pos(),
(...skipping 12 matching lines...) Expand all
565 ASSERT(node_sequence != NULL); 563 ASSERT(node_sequence != NULL);
566 AstPrinter ast_printer; 564 AstPrinter ast_printer;
567 const char* function_name = 565 const char* function_name =
568 parsed_function.function().ToFullyQualifiedCString(); 566 parsed_function.function().ToFullyQualifiedCString();
569 ISL_Print("Ast for function '%s' {\n", function_name); 567 ISL_Print("Ast for function '%s' {\n", function_name);
570 node_sequence->Visit(&ast_printer); 568 node_sequence->Visit(&ast_printer);
571 ISL_Print("}\n"); 569 ISL_Print("}\n");
572 } 570 }
573 571
574 } // namespace dart 572 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/code_descriptors_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698