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

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

Issue 1815733003: Remove recently introduced FunctionType vm class by merging it into class Type. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comment Created 4 years, 9 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 | « runtime/vm/parser.cc ('k') | runtime/vm/raw_object.h » ('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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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/precompiler.h" 5 #include "vm/precompiler.h"
6 6
7 #include "vm/aot_optimizer.h" 7 #include "vm/aot_optimizer.h"
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/ast_printer.h" 9 #include "vm/ast_printer.h"
10 #include "vm/branch_optimizer.h" 10 #include "vm/branch_optimizer.h"
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 614
615 if (types_to_retain_.Lookup(&abstype) != NULL) return; 615 if (types_to_retain_.Lookup(&abstype) != NULL) return;
616 types_to_retain_.Insert(&AbstractType::ZoneHandle(Z, abstype.raw())); 616 types_to_retain_.Insert(&AbstractType::ZoneHandle(Z, abstype.raw()));
617 617
618 if (abstype.IsType()) { 618 if (abstype.IsType()) {
619 const Type& type = Type::Cast(abstype); 619 const Type& type = Type::Cast(abstype);
620 const Class& cls = Class::Handle(Z, type.type_class()); 620 const Class& cls = Class::Handle(Z, type.type_class());
621 AddTypesOf(cls); 621 AddTypesOf(cls);
622 const TypeArguments& vector = TypeArguments::Handle(Z, abstype.arguments()); 622 const TypeArguments& vector = TypeArguments::Handle(Z, abstype.arguments());
623 AddTypeArguments(vector); 623 AddTypeArguments(vector);
624 } else if (abstype.IsFunctionType()) { 624 if (type.IsFunctionType()) {
625 const FunctionType& func_type = FunctionType::Cast(abstype); 625 const Function& func = Function::Handle(Z, type.signature());
626 const Class& cls = Class::Handle(Z, func_type.scope_class()); 626 AddTypesOf(func);
627 AddTypesOf(cls); 627 }
628 const Function& func = Function::Handle(Z, func_type.signature());
629 AddTypesOf(func);
630 const TypeArguments& vector = TypeArguments::Handle(Z, abstype.arguments());
631 AddTypeArguments(vector);
632 } else if (abstype.IsBoundedType()) { 628 } else if (abstype.IsBoundedType()) {
633 AbstractType& type = AbstractType::Handle(Z); 629 AbstractType& type = AbstractType::Handle(Z);
634 type = BoundedType::Cast(abstype).type(); 630 type = BoundedType::Cast(abstype).type();
635 AddType(type); 631 AddType(type);
636 type = BoundedType::Cast(abstype).bound(); 632 type = BoundedType::Cast(abstype).bound();
637 AddType(type); 633 AddType(type);
638 } else if (abstype.IsTypeRef()) { 634 } else if (abstype.IsTypeRef()) {
639 AbstractType& type = AbstractType::Handle(Z); 635 AbstractType& type = AbstractType::Handle(Z);
640 type = TypeRef::Cast(abstype).type(); 636 type = TypeRef::Cast(abstype).type();
641 AddType(type); 637 AddType(type);
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 // Function fits the bill. 836 // Function fits the bill.
841 const char* kEvalConst = "eval_const"; 837 const char* kEvalConst = "eval_const";
842 const Function& func = Function::ZoneHandle(Function::New( 838 const Function& func = Function::ZoneHandle(Function::New(
843 String::Handle(Symbols::New(kEvalConst)), 839 String::Handle(Symbols::New(kEvalConst)),
844 RawFunction::kRegularFunction, 840 RawFunction::kRegularFunction,
845 true, // static function 841 true, // static function
846 false, // not const function 842 false, // not const function
847 false, // not abstract 843 false, // not abstract
848 false, // not external 844 false, // not external
849 false, // not native 845 false, // not native
850 Class::Handle(Type::Handle(Type::Function()).type_class()), 846 Class::Handle(Type::Handle(Type::DartFunctionType()).type_class()),
851 fragment->token_pos())); 847 fragment->token_pos()));
852 848
853 func.set_result_type(Object::dynamic_type()); 849 func.set_result_type(Object::dynamic_type());
854 func.set_num_fixed_parameters(0); 850 func.set_num_fixed_parameters(0);
855 func.SetNumOptionalParameters(0, true); 851 func.SetNumOptionalParameters(0, true);
856 // Manually generated AST, do not recompile. 852 // Manually generated AST, do not recompile.
857 func.SetIsOptimizable(false); 853 func.SetIsOptimizable(false);
858 func.set_is_debuggable(false); 854 func.set_is_debuggable(false);
859 855
860 // We compile the function here, even though InvokeFunction() below 856 // We compile the function here, even though InvokeFunction() below
(...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 CompilationPipeline::New(thread->zone(), function); 2672 CompilationPipeline::New(thread->zone(), function);
2677 2673
2678 ASSERT(FLAG_precompiled_mode); 2674 ASSERT(FLAG_precompiled_mode);
2679 const bool optimized = function.IsOptimizable(); // False for natives. 2675 const bool optimized = function.IsOptimizable(); // False for natives.
2680 return PrecompileFunctionHelper(pipeline, function, optimized); 2676 return PrecompileFunctionHelper(pipeline, function, optimized);
2681 } 2677 }
2682 2678
2683 #endif // DART_PRECOMPILER 2679 #endif // DART_PRECOMPILER
2684 2680
2685 } // namespace dart 2681 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/parser.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698