| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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/kernel_binary_flowgraph.h" | 5 #include "vm/kernel_binary_flowgraph.h" |
| 6 | 6 |
| 7 #include "vm/compiler.h" | 7 #include "vm/compiler.h" |
| 8 #include "vm/longjump.h" | 8 #include "vm/longjump.h" |
| 9 #include "vm/object_store.h" | 9 #include "vm/object_store.h" |
| 10 | 10 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 parsed_function->SetNodeSequence( | 124 parsed_function->SetNodeSequence( |
| 125 new SequenceNode(TokenPosition::kNoSource, scope_)); | 125 new SequenceNode(TokenPosition::kNoSource, scope_)); |
| 126 | 126 |
| 127 intptr_t parent_offset = -1; | 127 intptr_t parent_offset = -1; |
| 128 builder_->SetOffset(kernel_offset_); | 128 builder_->SetOffset(kernel_offset_); |
| 129 | 129 |
| 130 FunctionNodeHelper function_node_helper(builder_); | 130 FunctionNodeHelper function_node_helper(builder_); |
| 131 | 131 |
| 132 switch (function.kind()) { | 132 switch (function.kind()) { |
| 133 case RawFunction::kClosureFunction: | 133 case RawFunction::kClosureFunction: |
| 134 case RawFunction::kImplicitClosureFunction: |
| 134 case RawFunction::kConvertedClosureFunction: | 135 case RawFunction::kConvertedClosureFunction: |
| 135 case RawFunction::kRegularFunction: | 136 case RawFunction::kRegularFunction: |
| 136 case RawFunction::kGetterFunction: | 137 case RawFunction::kGetterFunction: |
| 137 case RawFunction::kSetterFunction: | 138 case RawFunction::kSetterFunction: |
| 138 case RawFunction::kConstructor: { | 139 case RawFunction::kConstructor: { |
| 139 const Tag tag = builder_->PeekTag(); | 140 const Tag tag = builder_->PeekTag(); |
| 140 parent_offset = builder_->ReadUntilFunctionNode(); | 141 parent_offset = builder_->ReadUntilFunctionNode(); |
| 141 function_node_helper.ReadUntilExcluding( | 142 function_node_helper.ReadUntilExcluding( |
| 142 FunctionNodeHelper::kPositionalParameters); | 143 FunctionNodeHelper::kPositionalParameters); |
| 143 current_function_async_marker_ = function_node_helper.async_marker_; | 144 current_function_async_marker_ = function_node_helper.async_marker_; |
| (...skipping 3271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3415 // will not need an AST. The code generator will assume that there is a | 3416 // will not need an AST. The code generator will assume that there is a |
| 3416 // local variable stack slot allocated for the current context and (I | 3417 // local variable stack slot allocated for the current context and (I |
| 3417 // think) that the runtime will expect it to be at a fixed offset which | 3418 // think) that the runtime will expect it to be at a fixed offset which |
| 3418 // requires allocating an unused expression temporary variable. | 3419 // requires allocating an unused expression temporary variable. |
| 3419 set_scopes(parsed_function()->EnsureKernelScopes()); | 3420 set_scopes(parsed_function()->EnsureKernelScopes()); |
| 3420 | 3421 |
| 3421 SetOffset(kernel_offset); | 3422 SetOffset(kernel_offset); |
| 3422 | 3423 |
| 3423 switch (function.kind()) { | 3424 switch (function.kind()) { |
| 3424 case RawFunction::kClosureFunction: | 3425 case RawFunction::kClosureFunction: |
| 3426 case RawFunction::kImplicitClosureFunction: |
| 3425 case RawFunction::kConvertedClosureFunction: | 3427 case RawFunction::kConvertedClosureFunction: |
| 3426 case RawFunction::kRegularFunction: | 3428 case RawFunction::kRegularFunction: |
| 3427 case RawFunction::kGetterFunction: | 3429 case RawFunction::kGetterFunction: |
| 3428 case RawFunction::kSetterFunction: { | 3430 case RawFunction::kSetterFunction: { |
| 3429 ReadUntilFunctionNode(); // read until function node. | 3431 ReadUntilFunctionNode(); // read until function node. |
| 3430 if (function.IsImplicitClosureFunction()) { | 3432 if (function.IsImplicitClosureFunction()) { |
| 3431 return BuildGraphOfImplicitClosureFunction(function); | 3433 return BuildGraphOfImplicitClosureFunction(function); |
| 3432 } else if (function.IsConvertedClosureFunction()) { | 3434 } else if (function.IsConvertedClosureFunction()) { |
| 3433 return BuildGraphOfConvertedClosureFunction(function); | 3435 return BuildGraphOfConvertedClosureFunction(function); |
| 3434 } | 3436 } |
| (...skipping 3832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7267 } | 7269 } |
| 7268 } | 7270 } |
| 7269 | 7271 |
| 7270 return Array::Handle(Array::null()); | 7272 return Array::Handle(Array::null()); |
| 7271 } | 7273 } |
| 7272 | 7274 |
| 7273 } // namespace kernel | 7275 } // namespace kernel |
| 7274 } // namespace dart | 7276 } // namespace dart |
| 7275 | 7277 |
| 7276 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 7278 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| OLD | NEW |