| 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/isolate_reload.h" | 5 #include "vm/isolate_reload.h" |
| 6 | 6 |
| 7 #include "vm/become.h" | 7 #include "vm/become.h" |
| 8 #include "vm/bit_vector.h" | 8 #include "vm/bit_vector.h" |
| 9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
| 10 #include "vm/dart_api_impl.h" | 10 #include "vm/dart_api_impl.h" |
| 11 #include "vm/hash_table.h" | 11 #include "vm/hash_table.h" |
| 12 #include "vm/isolate.h" | 12 #include "vm/isolate.h" |
| 13 #include "vm/kernel_reader.h" | 13 #include "vm/kernel_loader.h" |
| 14 #include "vm/log.h" | 14 #include "vm/log.h" |
| 15 #include "vm/object.h" | 15 #include "vm/object.h" |
| 16 #include "vm/object_store.h" | 16 #include "vm/object_store.h" |
| 17 #include "vm/parser.h" | 17 #include "vm/parser.h" |
| 18 #include "vm/runtime_entry.h" | 18 #include "vm/runtime_entry.h" |
| 19 #include "vm/safepoint.h" | 19 #include "vm/safepoint.h" |
| 20 #include "vm/service_event.h" | 20 #include "vm/service_event.h" |
| 21 #include "vm/stack_frame.h" | 21 #include "vm/stack_frame.h" |
| 22 #include "vm/thread.h" | 22 #include "vm/thread.h" |
| 23 #include "vm/timeline.h" | 23 #include "vm/timeline.h" |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 intptr_t data_len = 0; | 563 intptr_t data_len = 0; |
| 564 Dart_TypedData_Type data_type; | 564 Dart_TypedData_Type data_type; |
| 565 ASSERT(Dart_IsTypedData(retval)); | 565 ASSERT(Dart_IsTypedData(retval)); |
| 566 Dart_Handle val = Dart_TypedDataAcquireData( | 566 Dart_Handle val = Dart_TypedDataAcquireData( |
| 567 retval, &data_type, reinterpret_cast<void**>(&data), &data_len); | 567 retval, &data_type, reinterpret_cast<void**>(&data), &data_len); |
| 568 ASSERT(!Dart_IsError(val)); | 568 ASSERT(!Dart_IsError(val)); |
| 569 ASSERT(data_type == Dart_TypedData_kUint64); | 569 ASSERT(data_type == Dart_TypedData_kUint64); |
| 570 ASSERT(data_len == 1); | 570 ASSERT(data_len == 1); |
| 571 kernel_program = reinterpret_cast<kernel::Program*>(data); | 571 kernel_program = reinterpret_cast<kernel::Program*>(data); |
| 572 Dart_TypedDataReleaseData(retval); | 572 Dart_TypedDataReleaseData(retval); |
| 573 kernel::KernelReader reader(kernel_program); | 573 kernel::KernelLoader loader(kernel_program); |
| 574 reader.FindModifiedLibraries(I, modified_libs_, force_reload); | 574 loader.FindModifiedLibraries(I, modified_libs_, force_reload); |
| 575 } | 575 } |
| 576 } | 576 } |
| 577 if (result.IsError()) { | 577 if (result.IsError()) { |
| 578 TIR_Print("---- LOAD FAILED, ABORTING RELOAD\n"); | 578 TIR_Print("---- LOAD FAILED, ABORTING RELOAD\n"); |
| 579 AddReasonForCancelling(new Aborted(zone_, ApiError::Cast(result))); | 579 AddReasonForCancelling(new Aborted(zone_, ApiError::Cast(result))); |
| 580 ReportReasonsForCancelling(); | 580 ReportReasonsForCancelling(); |
| 581 CommonFinalizeTail(); | 581 CommonFinalizeTail(); |
| 582 return; | 582 return; |
| 583 } | 583 } |
| 584 TIR_Print("---- EXITED TAG HANDLER\n"); | 584 TIR_Print("---- EXITED TAG HANDLER\n"); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 // 5) Dart_FinalizeLoading invokes Dart code related to deferred libraries. | 635 // 5) Dart_FinalizeLoading invokes Dart code related to deferred libraries. |
| 636 // 6) The tag handler returns and we move on. | 636 // 6) The tag handler returns and we move on. |
| 637 // | 637 // |
| 638 // Even after a successful reload the Dart code invoked in (5) can result | 638 // Even after a successful reload the Dart code invoked in (5) can result |
| 639 // in an Unwind error or an UnhandledException error. This error will be | 639 // in an Unwind error or an UnhandledException error. This error will be |
| 640 // returned by the tag handler. The tag handler can return other errors, | 640 // returned by the tag handler. The tag handler can return other errors, |
| 641 // for example, top level parse errors. We want to capture these errors while | 641 // for example, top level parse errors. We want to capture these errors while |
| 642 // propagating the UnwindError or an UnhandledException error. | 642 // propagating the UnwindError or an UnhandledException error. |
| 643 | 643 |
| 644 if (isolate()->use_dart_frontend()) { | 644 if (isolate()->use_dart_frontend()) { |
| 645 // Read the kernel program. | 645 // Load the kernel program. |
| 646 kernel::KernelReader reader(kernel_program); | 646 kernel::KernelLoader loader(kernel_program); |
| 647 const Object& tmp = reader.ReadProgram(); | 647 const Object& tmp = loader.LoadProgram(); |
| 648 if (!tmp.IsError()) { | 648 if (!tmp.IsError()) { |
| 649 Library& lib = Library::Handle(thread->zone()); | 649 Library& lib = Library::Handle(thread->zone()); |
| 650 lib ^= tmp.raw(); | 650 lib ^= tmp.raw(); |
| 651 isolate()->object_store()->set_root_library(lib); | 651 isolate()->object_store()->set_root_library(lib); |
| 652 FinalizeLoading(); | 652 FinalizeLoading(); |
| 653 result = Object::null(); | 653 result = Object::null(); |
| 654 } else { | 654 } else { |
| 655 result = tmp.raw(); | 655 result = tmp.raw(); |
| 656 } | 656 } |
| 657 } else { | 657 } else { |
| (...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1882 ASSERT(!super_cls.IsNull()); | 1882 ASSERT(!super_cls.IsNull()); |
| 1883 super_cls.AddDirectSubclass(cls); | 1883 super_cls.AddDirectSubclass(cls); |
| 1884 } | 1884 } |
| 1885 } | 1885 } |
| 1886 } | 1886 } |
| 1887 } | 1887 } |
| 1888 | 1888 |
| 1889 #endif // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME) | 1889 #endif // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME) |
| 1890 | 1890 |
| 1891 } // namespace dart | 1891 } // namespace dart |
| OLD | NEW |