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

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

Issue 230863005: Initial UserTag and dart:profiler library (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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.cc ('k') | runtime/vm/isolate.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 #ifndef VM_ISOLATE_H_ 5 #ifndef VM_ISOLATE_H_
6 #define VM_ISOLATE_H_ 6 #define VM_ISOLATE_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/thread.h" 10 #include "platform/thread.h"
(...skipping 12 matching lines...) Expand all
23 class AbstractType; 23 class AbstractType;
24 class ApiState; 24 class ApiState;
25 class Array; 25 class Array;
26 class Class; 26 class Class;
27 class CodeIndexTable; 27 class CodeIndexTable;
28 class Debugger; 28 class Debugger;
29 class DeoptContext; 29 class DeoptContext;
30 class Error; 30 class Error;
31 class Field; 31 class Field;
32 class Function; 32 class Function;
33 class GrowableObjectArray;
33 class HandleScope; 34 class HandleScope;
34 class HandleVisitor; 35 class HandleVisitor;
35 class Heap; 36 class Heap;
36 class ICData; 37 class ICData;
37 class Instance; 38 class Instance;
38 class IsolateProfilerData; 39 class IsolateProfilerData;
39 class IsolateSpawnState; 40 class IsolateSpawnState;
40 class InterruptableThreadState; 41 class InterruptableThreadState;
41 class LongJumpScope; 42 class LongJumpScope;
42 class MessageHandler; 43 class MessageHandler;
43 class Mutex; 44 class Mutex;
44 class Object; 45 class Object;
46 class ObjectIdRing;
45 class ObjectPointerVisitor; 47 class ObjectPointerVisitor;
46 class ObjectStore; 48 class ObjectStore;
47 class RawInstance; 49 class RawInstance;
48 class RawArray; 50 class RawArray;
49 class RawContext; 51 class RawContext;
50 class RawDouble; 52 class RawDouble;
53 class RawGrowableObjectArray;
51 class RawMint; 54 class RawMint;
52 class RawObject; 55 class RawObject;
53 class RawInteger; 56 class RawInteger;
54 class RawError; 57 class RawError;
55 class RawFloat32x4; 58 class RawFloat32x4;
56 class RawInt32x4; 59 class RawInt32x4;
60 class RawUserTag;
57 class SampleBuffer; 61 class SampleBuffer;
58 class Simulator; 62 class Simulator;
59 class StackResource; 63 class StackResource;
60 class StackZone; 64 class StackZone;
61 class StubCode; 65 class StubCode;
62 class TypeArguments; 66 class TypeArguments;
63 class TypeParameter; 67 class TypeParameter;
64 class ObjectIdRing; 68 class UserTag;
65 69
66 70
67 class IsolateVisitor { 71 class IsolateVisitor {
68 public: 72 public:
69 IsolateVisitor() {} 73 IsolateVisitor() {}
70 virtual ~IsolateVisitor() {} 74 virtual ~IsolateVisitor() {}
71 75
72 virtual void VisitIsolate(Isolate* isolate) = 0; 76 virtual void VisitIsolate(Isolate* isolate) = 0;
73 77
74 private: 78 private:
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 InterruptableThreadState* thread_state() const { 467 InterruptableThreadState* thread_state() const {
464 return thread_state_; 468 return thread_state_;
465 } 469 }
466 470
467 void ProfileInterrupt(); 471 void ProfileInterrupt();
468 472
469 VMTagCounters* vm_tag_counters() { 473 VMTagCounters* vm_tag_counters() {
470 return &vm_tag_counters_; 474 return &vm_tag_counters_;
471 } 475 }
472 476
477 uword user_tag() const {
478 return user_tag_;
479 }
480
481 RawGrowableObjectArray* tag_table() const { return tag_table_; }
482 void set_tag_table(const GrowableObjectArray& value);
483
484 RawUserTag* current_tag() const { return current_tag_; }
485 void set_current_tag(const UserTag& tag);
486 void clear_current_tag();
487
473 #if defined(DEBUG) 488 #if defined(DEBUG)
474 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ 489 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \
475 void set_reusable_##object##_handle_scope_active(bool value) { \ 490 void set_reusable_##object##_handle_scope_active(bool value) { \
476 reusable_##object##_handle_scope_active_ = value; \ 491 reusable_##object##_handle_scope_active_ = value; \
477 } \ 492 } \
478 bool reusable_##object##_handle_scope_active() const { \ 493 bool reusable_##object##_handle_scope_active() const { \
479 return reusable_##object##_handle_scope_active_; \ 494 return reusable_##object##_handle_scope_active_; \
480 } 495 }
481 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_ACCESSORS) 496 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_ACCESSORS)
482 #undef REUSABLE_HANDLE_SCOPE_ACCESSORS 497 #undef REUSABLE_HANDLE_SCOPE_ACCESSORS
483 #endif // defined(DEBUG) 498 #endif // defined(DEBUG)
484 499
485 #define REUSABLE_HANDLE(object) \ 500 #define REUSABLE_HANDLE(object) \
486 object& object##Handle() const { \ 501 object& object##Handle() const { \
487 return *object##_handle_; \ 502 return *object##_handle_; \
488 } 503 }
489 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE) 504 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE)
490 #undef REUSABLE_HANDLE 505 #undef REUSABLE_HANDLE
491 506
492 static void VisitIsolates(IsolateVisitor* visitor); 507 static void VisitIsolates(IsolateVisitor* visitor);
493 508
494 private: 509 private:
495 Isolate(); 510 Isolate();
496 511
497 void BuildName(const char* name_prefix); 512 void BuildName(const char* name_prefix);
498 void PrintInvokedFunctions(); 513 void PrintInvokedFunctions();
499 514
500 void ProfileIdle(); 515 void ProfileIdle();
501 516
517 void set_user_tag(uword tag) {
518 user_tag_ = tag;
519 }
520
521
502 template<class T> T* AllocateReusableHandle(); 522 template<class T> T* AllocateReusableHandle();
503 523
504 static ThreadLocalKey isolate_key; 524 static ThreadLocalKey isolate_key;
505 525
506 StoreBuffer store_buffer_; 526 StoreBuffer store_buffer_;
507 ClassTable class_table_; 527 ClassTable class_table_;
508 MegamorphicCacheTable megamorphic_cache_table_; 528 MegamorphicCacheTable megamorphic_cache_table_;
509 Dart_MessageNotifyCallback message_notify_callback_; 529 Dart_MessageNotifyCallback message_notify_callback_;
510 char* name_; 530 char* name_;
511 int64_t start_time_; 531 int64_t start_time_;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 bool cha_used_; 566 bool cha_used_;
547 567
548 // Ring buffer of objects assigned an id. 568 // Ring buffer of objects assigned an id.
549 ObjectIdRing* object_id_ring_; 569 ObjectIdRing* object_id_ring_;
550 570
551 IsolateProfilerData* profiler_data_; 571 IsolateProfilerData* profiler_data_;
552 Mutex profiler_data_mutex_; 572 Mutex profiler_data_mutex_;
553 InterruptableThreadState* thread_state_; 573 InterruptableThreadState* thread_state_;
554 574
555 VMTagCounters vm_tag_counters_; 575 VMTagCounters vm_tag_counters_;
576 uword user_tag_;
577 RawGrowableObjectArray* tag_table_;
578 RawUserTag* current_tag_;
556 579
557 // Isolate list next pointer. 580 // Isolate list next pointer.
558 Isolate* next_; 581 Isolate* next_;
559 582
560 // Reusable handles support. 583 // Reusable handles support.
561 #define REUSABLE_HANDLE_FIELDS(object) \ 584 #define REUSABLE_HANDLE_FIELDS(object) \
562 object* object##_handle_; 585 object* object##_handle_;
563 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) 586 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS)
564 #undef REUSABLE_HANDLE_FIELDS 587 #undef REUSABLE_HANDLE_FIELDS
565 588
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 char* script_url_; 711 char* script_url_;
689 char* library_url_; 712 char* library_url_;
690 char* class_name_; 713 char* class_name_;
691 char* function_name_; 714 char* function_name_;
692 char* exception_callback_name_; 715 char* exception_callback_name_;
693 }; 716 };
694 717
695 } // namespace dart 718 } // namespace dart
696 719
697 #endif // VM_ISOLATE_H_ 720 #endif // VM_ISOLATE_H_
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698