| 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 <set> | 5 #include <set> |
| 6 | 6 |
| 7 #include "vm/kernel_to_il.h" | 7 #include "vm/kernel_to_il.h" |
| 8 | 8 |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/intermediate_language.h" | 10 #include "vm/intermediate_language.h" |
| (...skipping 6760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6771 } else { | 6771 } else { |
| 6772 Thread* thread = Thread::Current(); | 6772 Thread* thread = Thread::Current(); |
| 6773 Error& error = Error::Handle(); | 6773 Error& error = Error::Handle(); |
| 6774 error = thread->sticky_error(); | 6774 error = thread->sticky_error(); |
| 6775 thread->clear_sticky_error(); | 6775 thread->clear_sticky_error(); |
| 6776 return error.raw(); | 6776 return error.raw(); |
| 6777 } | 6777 } |
| 6778 } | 6778 } |
| 6779 | 6779 |
| 6780 | 6780 |
| 6781 RawObject* BuildParameterDescriptor(TreeNode* const kernel_node) { | 6781 RawObject* BuildParameterDescriptor(const Function& function) { |
| 6782 LongJumpScope jump; | 6782 LongJumpScope jump; |
| 6783 if (setjmp(*jump.Set()) == 0) { | 6783 if (setjmp(*jump.Set()) == 0) { |
| 6784 TreeNode* kernel_node = |
| 6785 reinterpret_cast<TreeNode*>(function.kernel_function()); |
| 6784 FunctionNode* function_node = NULL; | 6786 FunctionNode* function_node = NULL; |
| 6785 | |
| 6786 if (kernel_node->IsProcedure()) { | 6787 if (kernel_node->IsProcedure()) { |
| 6787 function_node = Procedure::Cast(kernel_node)->function(); | 6788 function_node = Procedure::Cast(kernel_node)->function(); |
| 6788 } else if (kernel_node->IsConstructor()) { | 6789 } else if (kernel_node->IsConstructor()) { |
| 6789 function_node = Constructor::Cast(kernel_node)->function(); | 6790 function_node = Constructor::Cast(kernel_node)->function(); |
| 6790 } else if (kernel_node->IsFunctionNode()) { | 6791 } else if (kernel_node->IsFunctionNode()) { |
| 6791 function_node = FunctionNode::Cast(kernel_node); | 6792 function_node = FunctionNode::Cast(kernel_node); |
| 6792 } else { | 6793 } else { |
| 6793 UNIMPLEMENTED(); | 6794 UNIMPLEMENTED(); |
| 6794 return NULL; | 6795 return NULL; |
| 6795 } | 6796 } |
| 6796 | 6797 |
| 6797 Thread* thread = Thread::Current(); | 6798 Thread* thread = Thread::Current(); |
| 6798 Zone* zone_ = thread->zone(); | 6799 Zone* zone_ = thread->zone(); |
| 6799 TranslationHelper translation_helper(thread); | 6800 TranslationHelper helper(thread); |
| 6800 DartTypeTranslator type_translator(&translation_helper, NULL, true); | 6801 Script& script = Script::Handle(Z, function.script()); |
| 6802 helper.SetStringOffsets( |
| 6803 TypedData::Handle(Z, script.kernel_string_offsets())); |
| 6804 helper.SetStringData(TypedData::Handle(Z, script.kernel_string_data())); |
| 6805 DartTypeTranslator type_translator(&helper, NULL, true); |
| 6801 ConstantEvaluator constant_evaluator(/* flow_graph_builder = */ NULL, Z, | 6806 ConstantEvaluator constant_evaluator(/* flow_graph_builder = */ NULL, Z, |
| 6802 &translation_helper, &type_translator); | 6807 &helper, &type_translator); |
| 6803 | 6808 |
| 6804 const intptr_t positional_count = | 6809 const intptr_t positional_count = |
| 6805 function_node->positional_parameters().length(); | 6810 function_node->positional_parameters().length(); |
| 6806 const intptr_t param_count = | 6811 const intptr_t param_count = |
| 6807 positional_count + function_node->named_parameters().length(); | 6812 positional_count + function_node->named_parameters().length(); |
| 6808 const Array& param_descriptor = Array::Handle( | 6813 const Array& param_descriptor = Array::Handle( |
| 6809 Array::New(param_count * Parser::kParameterEntrySize, Heap::kOld)); | 6814 Array::New(param_count * Parser::kParameterEntrySize, Heap::kOld)); |
| 6810 for (intptr_t i = 0; i < param_count; ++i) { | 6815 for (intptr_t i = 0; i < param_count; ++i) { |
| 6811 const intptr_t entry_start = i * Parser::kParameterEntrySize; | 6816 const intptr_t entry_start = i * Parser::kParameterEntrySize; |
| 6812 | 6817 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 6843 thread->clear_sticky_error(); | 6848 thread->clear_sticky_error(); |
| 6844 return error.raw(); | 6849 return error.raw(); |
| 6845 } | 6850 } |
| 6846 } | 6851 } |
| 6847 | 6852 |
| 6848 | 6853 |
| 6849 } // namespace kernel | 6854 } // namespace kernel |
| 6850 } // namespace dart | 6855 } // namespace dart |
| 6851 | 6856 |
| 6852 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 6857 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| OLD | NEW |