Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(772)

Side by Side Diff: runtime/vm/isolate.cc

Issue 1123813002: Move symbol table from per isolate snapshot to vm isolate snapshot, this reduces the per isolate in… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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.h" 5 #include "vm/isolate.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "platform/json.h" 9 #include "platform/json.h"
10 #include "vm/code_observers.h" 10 #include "vm/code_observers.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 DEFINE_FLAG(bool, break_at_isolate_spawn, false, 50 DEFINE_FLAG(bool, break_at_isolate_spawn, false,
51 "Insert a one-time breakpoint at the entrypoint for all spawned " 51 "Insert a one-time breakpoint at the entrypoint for all spawned "
52 "isolates"); 52 "isolates");
53 DEFINE_FLAG(charp, isolate_log_filter, NULL, 53 DEFINE_FLAG(charp, isolate_log_filter, NULL,
54 "Log isolates whose name include the filter. " 54 "Log isolates whose name include the filter. "
55 "Default: service isolate log messages are suppressed."); 55 "Default: service isolate log messages are suppressed.");
56 56
57 // Quick access to the locally defined isolate() method. 57 // Quick access to the locally defined isolate() method.
58 #define I (isolate()) 58 #define I (isolate())
59 59
60
61 #if defined(DEBUG) 60 #if defined(DEBUG)
62 // Helper class to ensure that a live origin_id is never reused 61 // Helper class to ensure that a live origin_id is never reused
63 // and assigned to an isolate. 62 // and assigned to an isolate.
64 class VerifyOriginId : public IsolateVisitor { 63 class VerifyOriginId : public IsolateVisitor {
65 public: 64 public:
66 explicit VerifyOriginId(Dart_Port id) : id_(id) {} 65 explicit VerifyOriginId(Dart_Port id) : id_(id) {}
67 66
68 void VisitIsolate(Isolate* isolate) { 67 void VisitIsolate(Isolate* isolate) {
69 ASSERT(isolate->origin_id() != id_); 68 ASSERT(isolate->origin_id() != id_);
70 } 69 }
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 if (message->RedirectToDeliveryFailurePort()) { 363 if (message->RedirectToDeliveryFailurePort()) {
365 PortMap::PostMessage(message); 364 PortMap::PostMessage(message);
366 } else { 365 } else {
367 delete message; 366 delete message;
368 } 367 }
369 return true; 368 return true;
370 } 369 }
371 } 370 }
372 371
373 // Parse the message. 372 // Parse the message.
374 SnapshotReader reader(message->data(), message->len(), Snapshot::kMessage, 373 MessageSnapshotReader reader(message->data(),
375 I, zone.GetZone()); 374 message->len(),
375 I, zone.GetZone());
376 const Object& msg_obj = Object::Handle(I, reader.ReadObject()); 376 const Object& msg_obj = Object::Handle(I, reader.ReadObject());
377 if (msg_obj.IsError()) { 377 if (msg_obj.IsError()) {
378 // An error occurred while reading the message. 378 // An error occurred while reading the message.
379 delete message; 379 delete message;
380 return ProcessUnhandledException(Error::Cast(msg_obj)); 380 return ProcessUnhandledException(Error::Cast(msg_obj));
381 } 381 }
382 if (!msg_obj.IsNull() && !msg_obj.IsInstance()) { 382 if (!msg_obj.IsNull() && !msg_obj.IsInstance()) {
383 // TODO(turnidge): We need to decide what an isolate does with 383 // TODO(turnidge): We need to decide what an isolate does with
384 // malformed messages. If they (eventually) come from a remote 384 // malformed messages. If they (eventually) come from a remote
385 // machine, then it might make sense to drop the message entirely. 385 // machine, then it might make sense to drop the message entirely.
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 stack_frame_index_(-1), 669 stack_frame_index_(-1),
670 last_allocationprofile_accumulator_reset_timestamp_(0), 670 last_allocationprofile_accumulator_reset_timestamp_(0),
671 last_allocationprofile_gc_timestamp_(0), 671 last_allocationprofile_gc_timestamp_(0),
672 object_id_ring_(NULL), 672 object_id_ring_(NULL),
673 trace_buffer_(NULL), 673 trace_buffer_(NULL),
674 profiler_data_(NULL), 674 profiler_data_(NULL),
675 thread_state_(NULL), 675 thread_state_(NULL),
676 tag_table_(GrowableObjectArray::null()), 676 tag_table_(GrowableObjectArray::null()),
677 current_tag_(UserTag::null()), 677 current_tag_(UserTag::null()),
678 default_tag_(UserTag::null()), 678 default_tag_(UserTag::null()),
679 deoptimized_code_array_(GrowableObjectArray::null()),
679 metrics_list_head_(NULL), 680 metrics_list_head_(NULL),
680 cha_(NULL), 681 cha_(NULL),
681 next_(NULL), 682 next_(NULL),
682 pause_loop_monitor_(NULL), 683 pause_loop_monitor_(NULL),
683 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) 684 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
684 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) 685 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT)
685 reusable_handles_() { 686 reusable_handles_() {
686 } 687 }
687 #undef REUSABLE_HANDLE_SCOPE_INIT 688 #undef REUSABLE_HANDLE_SCOPE_INIT
688 #undef REUSABLE_HANDLE_INITIALIZERS 689 #undef REUSABLE_HANDLE_INITIALIZERS
(...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 } 1858 }
1858 1859
1859 1860
1860 static RawInstance* DeserializeObject(Isolate* isolate, 1861 static RawInstance* DeserializeObject(Isolate* isolate,
1861 Zone* zone, 1862 Zone* zone,
1862 uint8_t* obj_data, 1863 uint8_t* obj_data,
1863 intptr_t obj_len) { 1864 intptr_t obj_len) {
1864 if (obj_data == NULL) { 1865 if (obj_data == NULL) {
1865 return Instance::null(); 1866 return Instance::null();
1866 } 1867 }
1867 SnapshotReader reader(obj_data, obj_len, Snapshot::kMessage, isolate, zone); 1868 MessageSnapshotReader reader(obj_data,
1869 obj_len,
1870 isolate,
1871 zone);
1868 const Object& obj = Object::Handle(isolate, reader.ReadObject()); 1872 const Object& obj = Object::Handle(isolate, reader.ReadObject());
1869 ASSERT(!obj.IsError()); 1873 ASSERT(!obj.IsError());
1870 Instance& instance = Instance::Handle(isolate); 1874 Instance& instance = Instance::Handle(isolate);
1871 instance ^= obj.raw(); // Can't use Instance::Cast because may be null. 1875 instance ^= obj.raw(); // Can't use Instance::Cast because may be null.
1872 return instance.raw(); 1876 return instance.raw();
1873 } 1877 }
1874 1878
1875 1879
1876 IsolateSpawnState::IsolateSpawnState(Dart_Port parent_port, 1880 IsolateSpawnState::IsolateSpawnState(Dart_Port parent_port,
1877 const Function& func, 1881 const Function& func,
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
2034 serialized_message_, serialized_message_len_); 2038 serialized_message_, serialized_message_len_);
2035 } 2039 }
2036 2040
2037 2041
2038 void IsolateSpawnState::Cleanup() { 2042 void IsolateSpawnState::Cleanup() {
2039 SwitchIsolateScope switch_scope(I); 2043 SwitchIsolateScope switch_scope(I);
2040 Dart::ShutdownIsolate(); 2044 Dart::ShutdownIsolate();
2041 } 2045 }
2042 2046
2043 } // namespace dart 2047 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698