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 <map> | 5 #include <map> |
6 #include <set> | 6 #include <set> |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "vm/kernel_to_il.h" | 9 #include "vm/kernel_to_il.h" |
10 | 10 |
(...skipping 2896 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2907 | 2907 |
2908 | 2908 |
2909 dart::LocalVariable* FlowGraphBuilder::LookupVariable( | 2909 dart::LocalVariable* FlowGraphBuilder::LookupVariable( |
2910 VariableDeclaration* var) { | 2910 VariableDeclaration* var) { |
2911 LocalVariable* local = scopes_->locals.Lookup(var->kernel_offset()); | 2911 LocalVariable* local = scopes_->locals.Lookup(var->kernel_offset()); |
2912 ASSERT(local != NULL); | 2912 ASSERT(local != NULL); |
2913 return local; | 2913 return local; |
2914 } | 2914 } |
2915 | 2915 |
2916 | 2916 |
| 2917 dart::LocalVariable* FlowGraphBuilder::LookupVariable(intptr_t kernel_offset) { |
| 2918 LocalVariable* local = scopes_->locals.Lookup(kernel_offset); |
| 2919 ASSERT(local != NULL); |
| 2920 return local; |
| 2921 } |
| 2922 |
| 2923 |
2917 void FlowGraphBuilder::SetTempIndex(Definition* definition) { | 2924 void FlowGraphBuilder::SetTempIndex(Definition* definition) { |
2918 definition->set_temp_index( | 2925 definition->set_temp_index( |
2919 stack_ == NULL ? 0 : stack_->definition()->temp_index() + 1); | 2926 stack_ == NULL ? 0 : stack_->definition()->temp_index() + 1); |
2920 } | 2927 } |
2921 | 2928 |
2922 | 2929 |
2923 void FlowGraphBuilder::Push(Definition* definition) { | 2930 void FlowGraphBuilder::Push(Definition* definition) { |
2924 SetTempIndex(definition); | 2931 SetTempIndex(definition); |
2925 Value::AddToList(new (Z) Value(definition), &stack_); | 2932 Value::AddToList(new (Z) Value(definition), &stack_); |
2926 } | 2933 } |
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4632 instructions += Constant(type); | 4639 instructions += Constant(type); |
4633 } else { | 4640 } else { |
4634 instructions += LoadInstantiatorTypeArguments(); | 4641 instructions += LoadInstantiatorTypeArguments(); |
4635 instructions += InstantiateType(type); | 4642 instructions += InstantiateType(type); |
4636 } | 4643 } |
4637 fragment_ = instructions; | 4644 fragment_ = instructions; |
4638 } | 4645 } |
4639 | 4646 |
4640 | 4647 |
4641 void FlowGraphBuilder::VisitVariableGet(VariableGet* node) { | 4648 void FlowGraphBuilder::VisitVariableGet(VariableGet* node) { |
4642 fragment_ = LoadLocal(LookupVariable(node->variable())); | 4649 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset()); |
4643 } | 4650 } |
4644 | 4651 |
4645 | 4652 |
4646 void FlowGraphBuilder::VisitVariableSet(VariableSet* node) { | 4653 void FlowGraphBuilder::VisitVariableSet(VariableSet* node) { |
4647 Fragment instructions = TranslateExpression(node->expression()); | 4654 Fragment instructions = TranslateExpression(node->expression()); |
4648 if (NeedsDebugStepCheck(stack_, node->position())) { | 4655 if (NeedsDebugStepCheck(stack_, node->position())) { |
4649 instructions = DebugStepCheck(node->position()) + instructions; | 4656 instructions = DebugStepCheck(node->position()) + instructions; |
4650 } | 4657 } |
4651 instructions += CheckVariableTypeInCheckedMode(node->variable()); | 4658 instructions += CheckVariableTypeInCheckedMode(node->variable()); |
4652 instructions += | 4659 instructions += |
(...skipping 1811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6464 thread->clear_sticky_error(); | 6471 thread->clear_sticky_error(); |
6465 return error.raw(); | 6472 return error.raw(); |
6466 } | 6473 } |
6467 } | 6474 } |
6468 | 6475 |
6469 | 6476 |
6470 } // namespace kernel | 6477 } // namespace kernel |
6471 } // namespace dart | 6478 } // namespace dart |
6472 | 6479 |
6473 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 6480 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |