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 "bin/dartutils.h" | 5 #include "bin/dartutils.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
9 | 9 |
10 #include "platform/assert.h" | 10 #include "platform/assert.h" |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 } | 590 } |
591 | 591 |
592 | 592 |
593 Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root, | 593 Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root, |
594 Dart_Handle builtin_lib) { | 594 Dart_Handle builtin_lib) { |
595 // First ensure all required libraries are available. | 595 // First ensure all required libraries are available. |
596 Dart_Handle url = NewString(kAsyncLibURL); | 596 Dart_Handle url = NewString(kAsyncLibURL); |
597 DART_CHECK_VALID(url); | 597 DART_CHECK_VALID(url); |
598 Dart_Handle async_lib = Dart_LookupLibrary(url); | 598 Dart_Handle async_lib = Dart_LookupLibrary(url); |
599 DART_CHECK_VALID(async_lib); | 599 DART_CHECK_VALID(async_lib); |
| 600 url = NewString(kIsolateLibURL); |
| 601 DART_CHECK_VALID(url); |
| 602 Dart_Handle isolate_lib = Dart_LookupLibrary(url); |
| 603 DART_CHECK_VALID(isolate_lib); |
| 604 url = NewString(kInternalLibURL); |
| 605 DART_CHECK_VALID(url); |
| 606 Dart_Handle internal_lib = Dart_LookupLibrary(url); |
| 607 DART_CHECK_VALID(internal_lib); |
| 608 |
600 Dart_Handle io_lib = Builtin::LoadAndCheckLibrary(Builtin::kIOLibrary); | 609 Dart_Handle io_lib = Builtin::LoadAndCheckLibrary(Builtin::kIOLibrary); |
| 610 DART_CHECK_VALID(io_lib); |
601 | 611 |
602 // We need to ensure that all the scripts loaded so far are finalized | 612 // We need to ensure that all the scripts loaded so far are finalized |
603 // as we are about to invoke some Dart code below to setup closures. | 613 // as we are about to invoke some Dart code below to setup closures. |
604 Dart_Handle result = Dart_FinalizeLoading(false); | 614 Dart_Handle result = Dart_FinalizeLoading(false); |
605 DART_CHECK_VALID(result); | 615 DART_CHECK_VALID(result); |
606 | 616 |
607 // Setup the internal library's 'internalPrint' function. | 617 // Setup the internal library's 'internalPrint' function. |
608 Dart_Handle print = Dart_Invoke( | 618 Dart_Handle print = Dart_Invoke( |
609 builtin_lib, NewString("_getPrintClosure"), 0, NULL); | 619 builtin_lib, NewString("_getPrintClosure"), 0, NULL); |
610 url = NewString(kInternalLibURL); | |
611 DART_CHECK_VALID(url); | |
612 Dart_Handle internal_lib = Dart_LookupLibrary(url); | |
613 DART_CHECK_VALID(internal_lib); | |
614 result = Dart_SetField(internal_lib, | 620 result = Dart_SetField(internal_lib, |
615 NewString("_printClosure"), | 621 NewString("_printClosure"), |
616 print); | 622 print); |
617 DART_CHECK_VALID(result); | 623 DART_CHECK_VALID(result); |
618 | 624 |
619 // Setup the 'timer' factory. | 625 DART_CHECK_VALID(Dart_Invoke(isolate_lib, NewString("_setupHooks"), 0, NULL)); |
620 Dart_Handle timer_closure = | 626 DART_CHECK_VALID(Dart_Invoke(io_lib, NewString("_setupHooks"), 0, NULL)); |
621 Dart_Invoke(io_lib, NewString("_getTimerFactoryClosure"), 0, NULL); | 627 |
622 Dart_Handle args[1]; | |
623 args[0] = timer_closure; | |
624 DART_CHECK_VALID(Dart_Invoke( | |
625 async_lib, NewString("_setTimerFactoryClosure"), 1, args)); | |
626 | 628 |
627 // Setup the 'scheduleImmediate' closure. | 629 // Setup the 'scheduleImmediate' closure. |
628 url = NewString(kIsolateLibURL); | |
629 DART_CHECK_VALID(url); | |
630 Dart_Handle isolate_lib = Dart_LookupLibrary(url); | |
631 DART_CHECK_VALID(isolate_lib); | |
632 Dart_Handle schedule_immediate_closure = | 630 Dart_Handle schedule_immediate_closure = |
633 Dart_Invoke(isolate_lib, NewString("_getIsolateScheduleImmediateClosure"), | 631 Dart_Invoke(isolate_lib, NewString("_getIsolateScheduleImmediateClosure"), |
634 0, NULL); | 632 0, NULL); |
| 633 Dart_Handle args[1]; |
635 args[0] = schedule_immediate_closure; | 634 args[0] = schedule_immediate_closure; |
636 DART_CHECK_VALID(Dart_Invoke( | 635 DART_CHECK_VALID(Dart_Invoke( |
637 async_lib, NewString("_setScheduleImmediateClosure"), 1, args)); | 636 async_lib, NewString("_setScheduleImmediateClosure"), 1, args)); |
638 | 637 |
639 // Setup the corelib 'Uri.base' getter. | 638 // Setup the corelib 'Uri.base' getter. |
640 url = NewString(kCoreLibURL); | 639 url = NewString(kCoreLibURL); |
641 DART_CHECK_VALID(url); | 640 DART_CHECK_VALID(url); |
642 Dart_Handle corelib = Dart_LookupLibrary(url); | 641 Dart_Handle corelib = Dart_LookupLibrary(url); |
643 DART_CHECK_VALID(corelib); | 642 DART_CHECK_VALID(corelib); |
644 Dart_Handle uri_base = Dart_Invoke( | 643 Dart_Handle uri_base = Dart_Invoke( |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 new CObjectString(CObject::NewString(os_error->message())); | 1110 new CObjectString(CObject::NewString(os_error->message())); |
1112 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); | 1111 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); |
1113 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); | 1112 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); |
1114 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); | 1113 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); |
1115 result->SetAt(2, error_message); | 1114 result->SetAt(2, error_message); |
1116 return result; | 1115 return result; |
1117 } | 1116 } |
1118 | 1117 |
1119 } // namespace bin | 1118 } // namespace bin |
1120 } // namespace dart | 1119 } // namespace dart |
OLD | NEW |