| 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 "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 | 6 |
| 7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
| 8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/dart.h" | 10 #include "vm/dart.h" |
| (...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 Isolate::SetCurrent(NULL); | 752 Isolate::SetCurrent(NULL); |
| 753 | 753 |
| 754 // TODO(turnidge): Check that the port is native before trying to close. | 754 // TODO(turnidge): Check that the port is native before trying to close. |
| 755 return PortMap::ClosePort(native_port_id); | 755 return PortMap::ClosePort(native_port_id); |
| 756 } | 756 } |
| 757 | 757 |
| 758 | 758 |
| 759 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { | 759 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { |
| 760 Isolate* isolate = Isolate::Current(); | 760 Isolate* isolate = Isolate::Current(); |
| 761 DARTSCOPE(isolate); | 761 DARTSCOPE(isolate); |
| 762 const String& class_name = String::Handle(String::NewSymbol("SendPortImpl")); | 762 Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); |
| 763 ASSERT(!isolate_lib.IsNull()); |
| 764 const String& class_name = |
| 765 String::Handle(isolate_lib.PrivateName("_SendPortImpl")); |
| 763 const String& function_name = String::Handle(String::NewSymbol("_create")); | 766 const String& function_name = String::Handle(String::NewSymbol("_create")); |
| 764 const int kNumArguments = 1; | 767 const int kNumArguments = 1; |
| 765 const Array& kNoArgumentNames = Array::Handle(); | 768 const Array& kNoArgumentNames = Array::Handle(); |
| 766 // TODO(turnidge): Consider adding a helper function to make | 769 // TODO(turnidge): Consider adding a helper function to make |
| 767 // function resolution by class name and function name more concise. | 770 // function resolution by class name and function name more concise. |
| 768 const Function& function = Function::Handle( | 771 const Function& function = Function::Handle( |
| 769 Resolver::ResolveStatic(Library::Handle(Library::CoreLibrary()), | 772 Resolver::ResolveStatic(isolate_lib, |
| 770 class_name, | 773 class_name, |
| 771 function_name, | 774 function_name, |
| 772 kNumArguments, | 775 kNumArguments, |
| 773 kNoArgumentNames, | 776 kNoArgumentNames, |
| 774 Resolver::kIsQualified)); | 777 Resolver::kIsQualified)); |
| 775 GrowableArray<const Object*> arguments(kNumArguments); | 778 GrowableArray<const Object*> arguments(kNumArguments); |
| 776 arguments.Add(&Integer::Handle(Integer::New(port_id))); | 779 arguments.Add(&Integer::Handle(Integer::New(port_id))); |
| 777 const Object& result = Object::Handle( | 780 const Object& result = Object::Handle( |
| 778 DartEntry::InvokeStatic(function, arguments, kNoArgumentNames)); | 781 DartEntry::InvokeStatic(function, arguments, kNoArgumentNames)); |
| 779 return Api::NewLocalHandle(result); | 782 return Api::NewLocalHandle(result); |
| 780 } | 783 } |
| 781 | 784 |
| 782 | 785 |
| 783 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id) { | 786 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id) { |
| 784 Isolate* isolate = Isolate::Current(); | 787 Isolate* isolate = Isolate::Current(); |
| 785 DARTSCOPE(isolate); | 788 DARTSCOPE(isolate); |
| 789 Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); |
| 790 ASSERT(!isolate_lib.IsNull()); |
| 786 const String& class_name = | 791 const String& class_name = |
| 787 String::Handle(String::NewSymbol("ReceivePortImpl")); | 792 String::Handle(isolate_lib.PrivateName("_ReceivePortImpl")); |
| 788 const String& function_name = | 793 const String& function_name = |
| 789 String::Handle(String::NewSymbol("_get_or_create")); | 794 String::Handle(String::NewSymbol("_get_or_create")); |
| 790 const int kNumArguments = 1; | 795 const int kNumArguments = 1; |
| 791 const Array& kNoArgumentNames = Array::Handle(); | 796 const Array& kNoArgumentNames = Array::Handle(); |
| 792 const Function& function = Function::Handle( | 797 const Function& function = Function::Handle( |
| 793 Resolver::ResolveStatic(Library::Handle(Library::CoreLibrary()), | 798 Resolver::ResolveStatic(isolate_lib, |
| 794 class_name, | 799 class_name, |
| 795 function_name, | 800 function_name, |
| 796 kNumArguments, | 801 kNumArguments, |
| 797 kNoArgumentNames, | 802 kNoArgumentNames, |
| 798 Resolver::kIsQualified)); | 803 Resolver::kIsQualified)); |
| 799 GrowableArray<const Object*> arguments(kNumArguments); | 804 GrowableArray<const Object*> arguments(kNumArguments); |
| 800 arguments.Add(&Integer::Handle(Integer::New(port_id))); | 805 arguments.Add(&Integer::Handle(Integer::New(port_id))); |
| 801 const Object& result = Object::Handle( | 806 const Object& result = Object::Handle( |
| 802 DartEntry::InvokeStatic(function, arguments, kNoArgumentNames)); | 807 DartEntry::InvokeStatic(function, arguments, kNoArgumentNames)); |
| 803 return Api::NewLocalHandle(result); | 808 return Api::NewLocalHandle(result); |
| (...skipping 1901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2705 *buffer = NULL; | 2710 *buffer = NULL; |
| 2706 } | 2711 } |
| 2707 delete debug_region; | 2712 delete debug_region; |
| 2708 } else { | 2713 } else { |
| 2709 *buffer = NULL; | 2714 *buffer = NULL; |
| 2710 *buffer_size = 0; | 2715 *buffer_size = 0; |
| 2711 } | 2716 } |
| 2712 } | 2717 } |
| 2713 | 2718 |
| 2714 } // namespace dart | 2719 } // namespace dart |
| OLD | NEW |