OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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/flow_graph_builder.h" | 5 #include "vm/flow_graph_builder.h" |
6 | 6 |
7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
8 #include "vm/ast_printer.h" | 8 #include "vm/ast_printer.h" |
9 #include "vm/bit_vector.h" | 9 #include "vm/bit_vector.h" |
10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
(...skipping 3740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3751 LocalVariable* temp = NULL; | 3751 LocalVariable* temp = NULL; |
3752 if (save_last_arg) { | 3752 if (save_last_arg) { |
3753 temp = owner()->parsed_function()->EnsureExpressionTemp(); | 3753 temp = owner()->parsed_function()->EnsureExpressionTemp(); |
3754 } | 3754 } |
3755 ArgumentListNode* args = | 3755 ArgumentListNode* args = |
3756 Parser::BuildNoSuchMethodArguments(args_pos, | 3756 Parser::BuildNoSuchMethodArguments(args_pos, |
3757 method_name, | 3757 method_name, |
3758 *method_arguments, | 3758 *method_arguments, |
3759 temp, | 3759 temp, |
3760 is_super_invocation); | 3760 is_super_invocation); |
3761 const Function& no_such_method_func = Function::ZoneHandle( | 3761 const Function& no_such_method_func = Function::ZoneHandle(I, |
3762 I, | |
3763 Resolver::ResolveDynamicAnyArgs(target_class, Symbols::NoSuchMethod())); | 3762 Resolver::ResolveDynamicAnyArgs(target_class, Symbols::NoSuchMethod())); |
3764 // We are guaranteed to find noSuchMethod of class Object. | 3763 // We are guaranteed to find noSuchMethod of class Object. |
3765 ASSERT(!no_such_method_func.IsNull()); | 3764 ASSERT(!no_such_method_func.IsNull()); |
3766 ZoneGrowableArray<PushArgumentInstr*>* push_arguments = | 3765 ZoneGrowableArray<PushArgumentInstr*>* push_arguments = |
3767 new(I) ZoneGrowableArray<PushArgumentInstr*>(2); | 3766 new(I) ZoneGrowableArray<PushArgumentInstr*>(2); |
3768 BuildPushArguments(*args, push_arguments); | 3767 BuildPushArguments(*args, push_arguments); |
3769 return new(I) StaticCallInstr(args_pos, | 3768 return new(I) StaticCallInstr(args_pos, |
3770 no_such_method_func, | 3769 no_such_method_func, |
3771 Object::null_array(), | 3770 Object::null_array(), |
3772 push_arguments, | 3771 push_arguments, |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3961 Report::MessageF(Report::kBailout, | 3960 Report::MessageF(Report::kBailout, |
3962 Script::Handle(function.script()), | 3961 Script::Handle(function.script()), |
3963 function.token_pos(), | 3962 function.token_pos(), |
3964 "FlowGraphBuilder Bailout: %s %s", | 3963 "FlowGraphBuilder Bailout: %s %s", |
3965 String::Handle(function.name()).ToCString(), | 3964 String::Handle(function.name()).ToCString(), |
3966 reason); | 3965 reason); |
3967 UNREACHABLE(); | 3966 UNREACHABLE(); |
3968 } | 3967 } |
3969 | 3968 |
3970 } // namespace dart | 3969 } // namespace dart |
OLD | NEW |