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

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

Issue 583583007: 1. Add user tag to the pointers traversed in the object store (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 3 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/isolate.h ('k') | runtime/vm/object.cc » ('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 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 stack_frame_index_(-1), 433 stack_frame_index_(-1),
434 last_allocationprofile_accumulator_reset_timestamp_(0), 434 last_allocationprofile_accumulator_reset_timestamp_(0),
435 last_allocationprofile_gc_timestamp_(0), 435 last_allocationprofile_gc_timestamp_(0),
436 cha_(NULL), 436 cha_(NULL),
437 object_id_ring_(NULL), 437 object_id_ring_(NULL),
438 trace_buffer_(NULL), 438 trace_buffer_(NULL),
439 profiler_data_(NULL), 439 profiler_data_(NULL),
440 thread_state_(NULL), 440 thread_state_(NULL),
441 tag_table_(GrowableObjectArray::null()), 441 tag_table_(GrowableObjectArray::null()),
442 current_tag_(UserTag::null()), 442 current_tag_(UserTag::null()),
443 default_tag_(UserTag::null()),
443 metrics_list_head_(NULL), 444 metrics_list_head_(NULL),
444 next_(NULL), 445 next_(NULL),
445 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) 446 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
446 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) 447 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT)
447 reusable_handles_() { 448 reusable_handles_() {
448 set_vm_tag(VMTag::kIdleTagId); 449 set_vm_tag(VMTag::kIdleTagId);
449 set_user_tag(UserTags::kDefaultUserTag); 450 set_user_tag(UserTags::kDefaultUserTag);
450 } 451 }
451 452
452 Isolate::Isolate(Isolate* original) 453 Isolate::Isolate(Isolate* original)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 stack_frame_index_(-1), 492 stack_frame_index_(-1),
492 last_allocationprofile_accumulator_reset_timestamp_(0), 493 last_allocationprofile_accumulator_reset_timestamp_(0),
493 last_allocationprofile_gc_timestamp_(0), 494 last_allocationprofile_gc_timestamp_(0),
494 cha_(NULL), 495 cha_(NULL),
495 object_id_ring_(NULL), 496 object_id_ring_(NULL),
496 trace_buffer_(NULL), 497 trace_buffer_(NULL),
497 profiler_data_(NULL), 498 profiler_data_(NULL),
498 thread_state_(NULL), 499 thread_state_(NULL),
499 tag_table_(GrowableObjectArray::null()), 500 tag_table_(GrowableObjectArray::null()),
500 current_tag_(UserTag::null()), 501 current_tag_(UserTag::null()),
502 default_tag_(UserTag::null()),
501 metrics_list_head_(NULL), 503 metrics_list_head_(NULL),
502 next_(NULL), 504 next_(NULL),
503 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) 505 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
504 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) 506 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT)
505 reusable_handles_() { 507 reusable_handles_() {
506 } 508 }
507 #undef REUSABLE_HANDLE_SCOPE_INIT 509 #undef REUSABLE_HANDLE_SCOPE_INIT
508 #undef REUSABLE_HANDLE_INITIALIZERS 510 #undef REUSABLE_HANDLE_INITIALIZERS
509 511
510 Isolate::~Isolate() { 512 Isolate::~Isolate() {
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 if (api_state() != NULL) { 1119 if (api_state() != NULL) {
1118 api_state()->VisitObjectPointers(visitor, visit_prologue_weak_handles); 1120 api_state()->VisitObjectPointers(visitor, visit_prologue_weak_handles);
1119 } 1121 }
1120 1122
1121 // Visit the top context which is stored in the isolate. 1123 // Visit the top context which is stored in the isolate.
1122 visitor->VisitPointer(reinterpret_cast<RawObject**>(&top_context_)); 1124 visitor->VisitPointer(reinterpret_cast<RawObject**>(&top_context_));
1123 1125
1124 // Visit the current tag which is stored in the isolate. 1126 // Visit the current tag which is stored in the isolate.
1125 visitor->VisitPointer(reinterpret_cast<RawObject**>(&current_tag_)); 1127 visitor->VisitPointer(reinterpret_cast<RawObject**>(&current_tag_));
1126 1128
1129 // Visit the default tag which is stored in the isolate.
1130 visitor->VisitPointer(reinterpret_cast<RawObject**>(&default_tag_));
1131
1127 // Visit the tag table which is stored in the isolate. 1132 // Visit the tag table which is stored in the isolate.
1128 visitor->VisitPointer(reinterpret_cast<RawObject**>(&tag_table_)); 1133 visitor->VisitPointer(reinterpret_cast<RawObject**>(&tag_table_));
1129 1134
1130 // Visit objects in the debugger. 1135 // Visit objects in the debugger.
1131 debugger()->VisitObjectPointers(visitor); 1136 debugger()->VisitObjectPointers(visitor);
1132 1137
1133 // Visit objects that are being used for deoptimization. 1138 // Visit objects that are being used for deoptimization.
1134 if (deopt_context() != NULL) { 1139 if (deopt_context() != NULL) {
1135 deopt_context()->VisitObjectPointers(visitor); 1140 deopt_context()->VisitObjectPointers(visitor);
1136 } 1141 }
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 vm_tag_counters_.Increment(vm_tag()); 1310 vm_tag_counters_.Increment(vm_tag());
1306 } 1311 }
1307 1312
1308 1313
1309 void Isolate::set_tag_table(const GrowableObjectArray& value) { 1314 void Isolate::set_tag_table(const GrowableObjectArray& value) {
1310 tag_table_ = value.raw(); 1315 tag_table_ = value.raw();
1311 } 1316 }
1312 1317
1313 1318
1314 void Isolate::set_current_tag(const UserTag& tag) { 1319 void Isolate::set_current_tag(const UserTag& tag) {
1315 intptr_t user_tag = tag.tag(); 1320 uword user_tag = tag.tag();
1316 set_user_tag(static_cast<uword>(user_tag)); 1321 ASSERT(user_tag < kUwordMax);
1322 set_user_tag(user_tag);
1317 current_tag_ = tag.raw(); 1323 current_tag_ = tag.raw();
1318 } 1324 }
1319 1325
1320 1326
1327 void Isolate::set_default_tag(const UserTag& tag) {
1328 default_tag_ = tag.raw();
1329 }
1330
1331
1321 void Isolate::VisitIsolates(IsolateVisitor* visitor) { 1332 void Isolate::VisitIsolates(IsolateVisitor* visitor) {
1322 if (visitor == NULL) { 1333 if (visitor == NULL) {
1323 return; 1334 return;
1324 } 1335 }
1325 MonitorLocker ml(isolates_list_monitor_); 1336 MonitorLocker ml(isolates_list_monitor_);
1326 Isolate* current = isolates_list_head_; 1337 Isolate* current = isolates_list_head_;
1327 while (current) { 1338 while (current) {
1328 visitor->VisitIsolate(current); 1339 visitor->VisitIsolate(current);
1329 current = current->next_; 1340 current = current->next_;
1330 } 1341 }
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 serialized_message_, serialized_message_len_); 1564 serialized_message_, serialized_message_len_);
1554 } 1565 }
1555 1566
1556 1567
1557 void IsolateSpawnState::Cleanup() { 1568 void IsolateSpawnState::Cleanup() {
1558 SwitchIsolateScope switch_scope(I); 1569 SwitchIsolateScope switch_scope(I);
1559 Dart::ShutdownIsolate(); 1570 Dart::ShutdownIsolate();
1560 } 1571 }
1561 1572
1562 } // namespace dart 1573 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698