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

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

Issue 928833003: Add Function based profile tree (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
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 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 last_allocationprofile_accumulator_reset_timestamp_(0), 486 last_allocationprofile_accumulator_reset_timestamp_(0),
487 last_allocationprofile_gc_timestamp_(0), 487 last_allocationprofile_gc_timestamp_(0),
488 cha_(NULL), 488 cha_(NULL),
489 object_id_ring_(NULL), 489 object_id_ring_(NULL),
490 trace_buffer_(NULL), 490 trace_buffer_(NULL),
491 profiler_data_(NULL), 491 profiler_data_(NULL),
492 thread_state_(NULL), 492 thread_state_(NULL),
493 tag_table_(GrowableObjectArray::null()), 493 tag_table_(GrowableObjectArray::null()),
494 current_tag_(UserTag::null()), 494 current_tag_(UserTag::null()),
495 default_tag_(UserTag::null()), 495 default_tag_(UserTag::null()),
496 deoptimized_code_array_(GrowableObjectArray::null()),
496 metrics_list_head_(NULL), 497 metrics_list_head_(NULL),
497 next_(NULL), 498 next_(NULL),
498 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) 499 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
499 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) 500 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT)
500 reusable_handles_() { 501 reusable_handles_() {
501 set_vm_tag(VMTag::kIdleTagId); 502 set_vm_tag(VMTag::kIdleTagId);
502 set_user_tag(UserTags::kDefaultUserTag); 503 set_user_tag(UserTags::kDefaultUserTag);
503 } 504 }
504 505
505 Isolate::Isolate(Isolate* original) 506 Isolate::Isolate(Isolate* original)
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 1245
1245 // Visit the current tag which is stored in the isolate. 1246 // Visit the current tag which is stored in the isolate.
1246 visitor->VisitPointer(reinterpret_cast<RawObject**>(&current_tag_)); 1247 visitor->VisitPointer(reinterpret_cast<RawObject**>(&current_tag_));
1247 1248
1248 // Visit the default tag which is stored in the isolate. 1249 // Visit the default tag which is stored in the isolate.
1249 visitor->VisitPointer(reinterpret_cast<RawObject**>(&default_tag_)); 1250 visitor->VisitPointer(reinterpret_cast<RawObject**>(&default_tag_));
1250 1251
1251 // Visit the tag table which is stored in the isolate. 1252 // Visit the tag table which is stored in the isolate.
1252 visitor->VisitPointer(reinterpret_cast<RawObject**>(&tag_table_)); 1253 visitor->VisitPointer(reinterpret_cast<RawObject**>(&tag_table_));
1253 1254
1255 // Visit the deoptimized code array which is stored in the isolate.
1256 visitor->VisitPointer(
1257 reinterpret_cast<RawObject**>(&deoptimized_code_array_));
1258
1254 // Visit objects in the debugger. 1259 // Visit objects in the debugger.
1255 debugger()->VisitObjectPointers(visitor); 1260 debugger()->VisitObjectPointers(visitor);
1256 1261
1257 // Visit objects that are being used for deoptimization. 1262 // Visit objects that are being used for deoptimization.
1258 if (deopt_context() != NULL) { 1263 if (deopt_context() != NULL) {
1259 deopt_context()->VisitObjectPointers(visitor); 1264 deopt_context()->VisitObjectPointers(visitor);
1260 } 1265 }
1261 } 1266 }
1262 1267
1263 1268
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1441 set_user_tag(user_tag); 1446 set_user_tag(user_tag);
1442 current_tag_ = tag.raw(); 1447 current_tag_ = tag.raw();
1443 } 1448 }
1444 1449
1445 1450
1446 void Isolate::set_default_tag(const UserTag& tag) { 1451 void Isolate::set_default_tag(const UserTag& tag) {
1447 default_tag_ = tag.raw(); 1452 default_tag_ = tag.raw();
1448 } 1453 }
1449 1454
1450 1455
1456 void Isolate::set_deoptimized_code_array(const GrowableObjectArray& value) {
1457 deoptimized_code_array_ = value.raw();
siva 2015/02/25 22:58:39 StorePointer(...); I think we are missing this wi
Cutch 2015/02/26 18:44:40 Acknowledged.
1458 }
1459
1460
1461 void Isolate::TrackDeoptimizedCode(const Code& code) {
1462 ASSERT(!code.IsNull());
1463 const GrowableObjectArray& deoptimized_code =
1464 GrowableObjectArray::Handle(deoptimized_code_array());
1465 if (deoptimized_code.IsNull()) {
1466 // Not tracking deoptimized code.
1467 return;
1468 }
1469 deoptimized_code.Add(code);
siva 2015/02/25 22:58:39 Can you add a TODO here that we will make this and
Cutch 2015/02/26 18:44:40 Done.
1470 }
1471
1472
1451 void Isolate::VisitIsolates(IsolateVisitor* visitor) { 1473 void Isolate::VisitIsolates(IsolateVisitor* visitor) {
1452 if (visitor == NULL) { 1474 if (visitor == NULL) {
1453 return; 1475 return;
1454 } 1476 }
1455 MonitorLocker ml(isolates_list_monitor_); 1477 MonitorLocker ml(isolates_list_monitor_);
1456 Isolate* current = isolates_list_head_; 1478 Isolate* current = isolates_list_head_;
1457 while (current) { 1479 while (current) {
1458 visitor->VisitIsolate(current); 1480 visitor->VisitIsolate(current);
1459 current = current->next_; 1481 current = current->next_;
1460 } 1482 }
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
1700 serialized_message_, serialized_message_len_); 1722 serialized_message_, serialized_message_len_);
1701 } 1723 }
1702 1724
1703 1725
1704 void IsolateSpawnState::Cleanup() { 1726 void IsolateSpawnState::Cleanup() {
1705 SwitchIsolateScope switch_scope(I); 1727 SwitchIsolateScope switch_scope(I);
1706 Dart::ShutdownIsolate(); 1728 Dart::ShutdownIsolate();
1707 } 1729 }
1708 1730
1709 } // namespace dart 1731 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698