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

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

Issue 18259014: Object ID Ring with tests (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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/heap.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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 class RawError; 48 class RawError;
49 class RawFloat32x4; 49 class RawFloat32x4;
50 class RawUint32x4; 50 class RawUint32x4;
51 class Simulator; 51 class Simulator;
52 class StackResource; 52 class StackResource;
53 class StackZone; 53 class StackZone;
54 class StubCode; 54 class StubCode;
55 class TypeArguments; 55 class TypeArguments;
56 class TypeParameter; 56 class TypeParameter;
57 class ObjectHistogram; 57 class ObjectHistogram;
58 class ObjectIdRing;
58 59
59 60
60 // Used by the deoptimization infrastructure to defer allocation of unboxed 61 // Used by the deoptimization infrastructure to defer allocation of unboxed
61 // objects until frame is fully rewritten and GC is safe. 62 // objects until frame is fully rewritten and GC is safe.
62 // Describes a stack slot that should be populated with a reference to the 63 // Describes a stack slot that should be populated with a reference to the
63 // materialized object. 64 // materialized object.
64 class DeferredSlot { 65 class DeferredSlot {
65 public: 66 public:
66 DeferredSlot(RawInstance** slot, DeferredSlot* next) 67 DeferredSlot(RawInstance** slot, DeferredSlot* next)
67 : slot_(slot), next_(next) { } 68 : slot_(slot), next_(next) { }
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 } 527 }
527 intptr_t* deopt_frame_copy() const { return deopt_frame_copy_; } 528 intptr_t* deopt_frame_copy() const { return deopt_frame_copy_; }
528 void SetDeoptFrameCopy(intptr_t* value, intptr_t size) { 529 void SetDeoptFrameCopy(intptr_t* value, intptr_t size) {
529 ASSERT((value == NULL) || (size > 0)); 530 ASSERT((value == NULL) || (size > 0));
530 ASSERT((value == NULL) || (deopt_frame_copy_ == NULL)); 531 ASSERT((value == NULL) || (deopt_frame_copy_ == NULL));
531 deopt_frame_copy_ = value; 532 deopt_frame_copy_ = value;
532 deopt_frame_copy_size_ = size; 533 deopt_frame_copy_size_ = size;
533 } 534 }
534 intptr_t deopt_frame_copy_size() const { return deopt_frame_copy_size_; } 535 intptr_t deopt_frame_copy_size() const { return deopt_frame_copy_size_; }
535 536
537 void set_object_id_ring(ObjectIdRing* ring) {
538 object_id_ring_ = ring;
539 }
540 ObjectIdRing* object_id_ring() {
541 return object_id_ring_;
542 }
543
536 void PrepareForDeferredMaterialization(intptr_t count) { 544 void PrepareForDeferredMaterialization(intptr_t count) {
537 if (count > 0) { 545 if (count > 0) {
538 deferred_objects_ = new DeferredObject*[count]; 546 deferred_objects_ = new DeferredObject*[count];
539 deferred_objects_count_ = count; 547 deferred_objects_count_ = count;
540 } 548 }
541 } 549 }
542 550
543 void DeleteDeferredObjects() { 551 void DeleteDeferredObjects() {
544 for (intptr_t i = 0; i < deferred_objects_count_; i++) { 552 for (intptr_t i = 0; i < deferred_objects_count_; i++) {
545 delete deferred_objects_[i]; 553 delete deferred_objects_[i];
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 DeferredSlot* deferred_object_refs_; 687 DeferredSlot* deferred_object_refs_;
680 688
681 intptr_t deferred_objects_count_; 689 intptr_t deferred_objects_count_;
682 DeferredObject** deferred_objects_; 690 DeferredObject** deferred_objects_;
683 691
684 // Status support. 692 // Status support.
685 char* stacktrace_; 693 char* stacktrace_;
686 intptr_t stack_frame_index_; 694 intptr_t stack_frame_index_;
687 ObjectHistogram* object_histogram_; 695 ObjectHistogram* object_histogram_;
688 696
697 // Ring buffer of objects assigned an id.
698 ObjectIdRing* object_id_ring_;
699
689 // Reusable handles support. 700 // Reusable handles support.
690 #define REUSABLE_HANDLE_FIELDS(object) \ 701 #define REUSABLE_HANDLE_FIELDS(object) \
691 object* object##_handle_; \ 702 object* object##_handle_; \
692 703
693 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) 704 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS)
694 #undef REUSABLE_HANDLE_FIELDS 705 #undef REUSABLE_HANDLE_FIELDS
695 VMHandles reusable_handles_; 706 VMHandles reusable_handles_;
696 707
697 static Dart_IsolateCreateCallback create_callback_; 708 static Dart_IsolateCreateCallback create_callback_;
698 static Dart_IsolateInterruptCallback interrupt_callback_; 709 static Dart_IsolateInterruptCallback interrupt_callback_;
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 902
892 private: 903 private:
893 Isolate::IsolateRunState saved_state_; 904 Isolate::IsolateRunState saved_state_;
894 905
895 DISALLOW_COPY_AND_ASSIGN(IsolateRunStateManager); 906 DISALLOW_COPY_AND_ASSIGN(IsolateRunStateManager);
896 }; 907 };
897 908
898 } // namespace dart 909 } // namespace dart
899 910
900 #endif // VM_ISOLATE_H_ 911 #endif // VM_ISOLATE_H_
OLDNEW
« no previous file with comments | « runtime/vm/heap.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698