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

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

Issue 2411823003: VM support for running Kernel binaries. (Closed)
Patch Set: Address comments Created 4 years, 2 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.h ('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) 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/parser.h" 5 #include "vm/parser.h"
6 #include "vm/flags.h" 6 #include "vm/flags.h"
7 7
8 #ifndef DART_PRECOMPILED_RUNTIME 8 #ifndef DART_PRECOMPILED_RUNTIME
9 9
10 #include "lib/invocation_mirror.h" 10 #include "lib/invocation_mirror.h"
11 #include "platform/utils.h" 11 #include "platform/utils.h"
12 #include "vm/ast_transformer.h" 12 #include "vm/ast_transformer.h"
13 #include "vm/bootstrap.h" 13 #include "vm/bootstrap.h"
14 #include "vm/class_finalizer.h" 14 #include "vm/class_finalizer.h"
15 #include "vm/compiler.h" 15 #include "vm/compiler.h"
16 #include "vm/compiler_stats.h" 16 #include "vm/compiler_stats.h"
17 #include "vm/dart_api_impl.h" 17 #include "vm/dart_api_impl.h"
18 #include "vm/dart_entry.h" 18 #include "vm/dart_entry.h"
19 #include "vm/kernel_to_il.h"
19 #include "vm/growable_array.h" 20 #include "vm/growable_array.h"
20 #include "vm/handles.h" 21 #include "vm/handles.h"
21 #include "vm/hash_table.h" 22 #include "vm/hash_table.h"
22 #include "vm/heap.h" 23 #include "vm/heap.h"
23 #include "vm/isolate.h" 24 #include "vm/isolate.h"
24 #include "vm/longjump.h" 25 #include "vm/longjump.h"
25 #include "vm/native_arguments.h" 26 #include "vm/native_arguments.h"
26 #include "vm/native_entry.h" 27 #include "vm/native_entry.h"
27 #include "vm/object.h" 28 #include "vm/object.h"
28 #include "vm/object_store.h" 29 #include "vm/object_store.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 function_.token_pos(), 219 function_.token_pos(),
219 Report::AtLocation, 220 Report::AtLocation,
220 "%s Bailout in %s: %s", 221 "%s Bailout in %s: %s",
221 origin, 222 origin,
222 String::Handle(function_.name()).ToCString(), 223 String::Handle(function_.name()).ToCString(),
223 reason); 224 reason);
224 UNREACHABLE(); 225 UNREACHABLE();
225 } 226 }
226 227
227 228
229 kernel::ScopeBuildingResult* ParsedFunction::EnsureKernelScopes() {
230 if (kernel_scopes_ == NULL) {
231 kernel::TreeNode* node = NULL;
232 if (function().kernel_function() != NULL) {
233 node = static_cast<kernel::TreeNode*>(function().kernel_function());
234 }
235 kernel::ScopeBuilder builder(this, node);
236 kernel_scopes_ = builder.BuildScopes();
237 }
238 return kernel_scopes_;
239 }
240
241
228 LocalVariable* ParsedFunction::EnsureExpressionTemp() { 242 LocalVariable* ParsedFunction::EnsureExpressionTemp() {
229 if (!has_expression_temp_var()) { 243 if (!has_expression_temp_var()) {
230 LocalVariable* temp = 244 LocalVariable* temp =
231 new (Z) LocalVariable(function_.token_pos(), 245 new (Z) LocalVariable(function_.token_pos(),
232 Symbols::ExprTemp(), 246 Symbols::ExprTemp(),
233 Object::dynamic_type()); 247 Object::dynamic_type());
234 ASSERT(temp != NULL); 248 ASSERT(temp != NULL);
235 set_expression_temp_var(temp); 249 set_expression_temp_var(temp);
236 } 250 }
237 ASSERT(has_expression_temp_var()); 251 ASSERT(has_expression_temp_var());
(...skipping 1347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 1599
1586 const Function& parent = Function::Handle(func.parent_function()); 1600 const Function& parent = Function::Handle(func.parent_function());
1587 if (parent.IsImplicitSetterFunction()) { 1601 if (parent.IsImplicitSetterFunction()) {
1588 const TokenPosition ident_pos = func.token_pos(); 1602 const TokenPosition ident_pos = func.token_pos();
1589 ASSERT(IsIdentifier()); 1603 ASSERT(IsIdentifier());
1590 params.AddFinalParameter(ident_pos, 1604 params.AddFinalParameter(ident_pos,
1591 &Symbols::Value(), 1605 &Symbols::Value(),
1592 &Object::dynamic_type()); 1606 &Object::dynamic_type());
1593 ASSERT(func.num_fixed_parameters() == 2); // closure, value. 1607 ASSERT(func.num_fixed_parameters() == 2); // closure, value.
1594 } else if (!parent.IsGetterFunction() && !parent.IsImplicitGetterFunction()) { 1608 } else if (!parent.IsGetterFunction() && !parent.IsImplicitGetterFunction()) {
1595 const bool allow_explicit_default_values = true; 1609 // NOTE: For the `kernel -> flowgraph` we don't use the parser.
1596 SkipFunctionPreamble(); 1610 if (parent.kernel_function() == NULL) {
1597 ParseFormalParameterList(allow_explicit_default_values, false, &params); 1611 const bool allow_explicit_default_values = true;
1598 SetupDefaultsForOptionalParams(params); 1612 SkipFunctionPreamble();
1613 ParseFormalParameterList(allow_explicit_default_values, false, &params);
1614 SetupDefaultsForOptionalParams(params);
1615 }
1599 } 1616 }
1600 1617
1601 // Populate function scope with the formal parameters. 1618 // Populate function scope with the formal parameters.
1602 LocalScope* scope = current_block_->scope; 1619 LocalScope* scope = current_block_->scope;
1603 AddFormalParamsToScope(&params, scope); 1620 AddFormalParamsToScope(&params, scope);
1604 1621
1605 ArgumentListNode* func_args = new ArgumentListNode(token_pos); 1622 ArgumentListNode* func_args = new ArgumentListNode(token_pos);
1606 if (!func.is_static()) { 1623 if (!func.is_static()) {
1607 func_args->Add(LoadReceiver(token_pos)); 1624 func_args->Add(LoadReceiver(token_pos));
1608 } 1625 }
(...skipping 13399 matching lines...) Expand 10 before | Expand all | Expand 10 after
15008 #else // DART_PRECOMPILED_RUNTIME 15025 #else // DART_PRECOMPILED_RUNTIME
15009 15026
15010 15027
15011 namespace dart { 15028 namespace dart {
15012 15029
15013 void ParsedFunction::AddToGuardedFields(const Field* field) const { 15030 void ParsedFunction::AddToGuardedFields(const Field* field) const {
15014 UNREACHABLE(); 15031 UNREACHABLE();
15015 } 15032 }
15016 15033
15017 15034
15035 kernel::ScopeBuildingResult* ParsedFunction::EnsureKernelScopes() {
15036 UNREACHABLE();
15037 return NULL;
15038 }
15039
15040
15018 LocalVariable* ParsedFunction::EnsureExpressionTemp() { 15041 LocalVariable* ParsedFunction::EnsureExpressionTemp() {
15019 UNREACHABLE(); 15042 UNREACHABLE();
15020 return NULL; 15043 return NULL;
15021 } 15044 }
15022 15045
15023 15046
15024 void ParsedFunction::SetNodeSequence(SequenceNode* node_sequence) { 15047 void ParsedFunction::SetNodeSequence(SequenceNode* node_sequence) {
15025 UNREACHABLE(); 15048 UNREACHABLE();
15026 } 15049 }
15027 15050
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
15094 const ArgumentListNode& function_args, 15117 const ArgumentListNode& function_args,
15095 const LocalVariable* temp_for_last_arg, 15118 const LocalVariable* temp_for_last_arg,
15096 bool is_super_invocation) { 15119 bool is_super_invocation) {
15097 UNREACHABLE(); 15120 UNREACHABLE();
15098 return NULL; 15121 return NULL;
15099 } 15122 }
15100 15123
15101 } // namespace dart 15124 } // namespace dart
15102 15125
15103 #endif // DART_PRECOMPILED_RUNTIME 15126 #endif // DART_PRECOMPILED_RUNTIME
OLDNEW
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698