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

Side by Side Diff: src/global-handles.cc

Issue 11958015: Remove GlobalHandles::number_of_weak_handles_ and number_of_global_object_weak_handles_ (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Created 7 years, 11 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
« no previous file with comments | « src/global-handles.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 set_independent(false); 99 set_independent(false);
100 set_partially_dependent(false); 100 set_partially_dependent(false);
101 set_state(NORMAL); 101 set_state(NORMAL);
102 parameter_or_next_free_.parameter = NULL; 102 parameter_or_next_free_.parameter = NULL;
103 callback_ = NULL; 103 callback_ = NULL;
104 IncreaseBlockUses(global_handles); 104 IncreaseBlockUses(global_handles);
105 } 105 }
106 106
107 void Release(GlobalHandles* global_handles) { 107 void Release(GlobalHandles* global_handles) {
108 ASSERT(state() != FREE); 108 ASSERT(state() != FREE);
109 if (IsWeakRetainer()) {
110 global_handles->number_of_weak_handles_--;
111 if (object_->IsJSGlobalObject()) {
112 global_handles->number_of_global_object_weak_handles_--;
113 }
114 }
115 set_state(FREE); 109 set_state(FREE);
116 parameter_or_next_free_.next_free = global_handles->first_free_; 110 parameter_or_next_free_.next_free = global_handles->first_free_;
117 global_handles->first_free_ = this; 111 global_handles->first_free_ = this;
118 DecreaseBlockUses(global_handles); 112 DecreaseBlockUses(global_handles);
119 } 113 }
120 114
121 // Object slot accessors. 115 // Object slot accessors.
122 Object* object() const { return object_; } 116 Object* object() const { return object_; }
123 Object** location() { return &object_; } 117 Object** location() { return &object_; }
124 Handle<Object> handle() { return Handle<Object>(location()); } 118 Handle<Object> handle() { return Handle<Object>(location()); }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 209 }
216 void set_next_free(Node* value) { 210 void set_next_free(Node* value) {
217 ASSERT(state() == FREE); 211 ASSERT(state() == FREE);
218 parameter_or_next_free_.next_free = value; 212 parameter_or_next_free_.next_free = value;
219 } 213 }
220 214
221 void MakeWeak(GlobalHandles* global_handles, 215 void MakeWeak(GlobalHandles* global_handles,
222 void* parameter, 216 void* parameter,
223 WeakReferenceCallback callback) { 217 WeakReferenceCallback callback) {
224 ASSERT(state() != FREE); 218 ASSERT(state() != FREE);
225 if (!IsWeakRetainer()) {
226 global_handles->number_of_weak_handles_++;
227 if (object_->IsJSGlobalObject()) {
228 global_handles->number_of_global_object_weak_handles_++;
229 }
230 }
231 set_state(WEAK); 219 set_state(WEAK);
232 set_parameter(parameter); 220 set_parameter(parameter);
233 callback_ = callback; 221 callback_ = callback;
234 } 222 }
235 223
236 void ClearWeakness(GlobalHandles* global_handles) { 224 void ClearWeakness(GlobalHandles* global_handles) {
237 ASSERT(state() != FREE); 225 ASSERT(state() != FREE);
238 if (IsWeakRetainer()) {
239 global_handles->number_of_weak_handles_--;
240 if (object_->IsJSGlobalObject()) {
241 global_handles->number_of_global_object_weak_handles_--;
242 }
243 }
244 set_state(NORMAL); 226 set_state(NORMAL);
245 set_parameter(NULL); 227 set_parameter(NULL);
246 } 228 }
247 229
248 bool PostGarbageCollectionProcessing(Isolate* isolate, 230 bool PostGarbageCollectionProcessing(Isolate* isolate,
249 GlobalHandles* global_handles) { 231 GlobalHandles* global_handles) {
250 if (state() != Node::PENDING) return false; 232 if (state() != Node::PENDING) return false;
251 WeakReferenceCallback func = callback(); 233 WeakReferenceCallback func = callback();
252 if (func == NULL) { 234 if (func == NULL) {
253 Release(global_handles); 235 Release(global_handles);
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 private: 397 private:
416 NodeBlock* block_; 398 NodeBlock* block_;
417 int index_; 399 int index_;
418 400
419 DISALLOW_COPY_AND_ASSIGN(NodeIterator); 401 DISALLOW_COPY_AND_ASSIGN(NodeIterator);
420 }; 402 };
421 403
422 404
423 GlobalHandles::GlobalHandles(Isolate* isolate) 405 GlobalHandles::GlobalHandles(Isolate* isolate)
424 : isolate_(isolate), 406 : isolate_(isolate),
425 number_of_weak_handles_(0),
426 number_of_global_object_weak_handles_(0),
427 number_of_global_handles_(0), 407 number_of_global_handles_(0),
428 first_block_(NULL), 408 first_block_(NULL),
429 first_used_block_(NULL), 409 first_used_block_(NULL),
430 first_free_(NULL), 410 first_free_(NULL),
431 post_gc_processing_count_(0) {} 411 post_gc_processing_count_(0) {}
432 412
433 413
434 GlobalHandles::~GlobalHandles() { 414 GlobalHandles::~GlobalHandles() {
435 NodeBlock* block = first_block_; 415 NodeBlock* block = first_block_;
436 while (block != NULL) { 416 while (block != NULL) {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 void GlobalHandles::IterateAllRootsWithClassIds(ObjectVisitor* v) { 694 void GlobalHandles::IterateAllRootsWithClassIds(ObjectVisitor* v) {
715 for (NodeIterator it(this); !it.done(); it.Advance()) { 695 for (NodeIterator it(this); !it.done(); it.Advance()) {
716 if (it.node()->IsRetainer() && it.node()->has_wrapper_class_id()) { 696 if (it.node()->IsRetainer() && it.node()->has_wrapper_class_id()) {
717 v->VisitEmbedderReference(it.node()->location(), 697 v->VisitEmbedderReference(it.node()->location(),
718 it.node()->wrapper_class_id()); 698 it.node()->wrapper_class_id());
719 } 699 }
720 } 700 }
721 } 701 }
722 702
723 703
704 int GlobalHandles::NumberOfWeakHandles() {
705 int count = 0;
706 for (NodeIterator it(this); !it.done(); it.Advance()) {
707 if (it.node()->IsWeakRetainer()) {
708 count++;
709 }
710 }
711 return count;
712 }
713
714
715 int GlobalHandles::NumberOfGlobalObjectWeakHandles() {
716 int count = 0;
717 for (NodeIterator it(this); !it.done(); it.Advance()) {
718 if (it.node()->IsWeakRetainer() &&
719 it.node()->object()->IsJSGlobalObject()) {
720 count++;
721 }
722 }
723 return count;
724 }
725
726
724 void GlobalHandles::RecordStats(HeapStats* stats) { 727 void GlobalHandles::RecordStats(HeapStats* stats) {
725 *stats->global_handle_count = 0; 728 *stats->global_handle_count = 0;
726 *stats->weak_global_handle_count = 0; 729 *stats->weak_global_handle_count = 0;
727 *stats->pending_global_handle_count = 0; 730 *stats->pending_global_handle_count = 0;
728 *stats->near_death_global_handle_count = 0; 731 *stats->near_death_global_handle_count = 0;
729 *stats->free_global_handle_count = 0; 732 *stats->free_global_handle_count = 0;
730 for (NodeIterator it(this); !it.done(); it.Advance()) { 733 for (NodeIterator it(this); !it.done(); it.Advance()) {
731 *stats->global_handle_count += 1; 734 *stats->global_handle_count += 1;
732 if (it.node()->state() == Node::WEAK) { 735 if (it.node()->state() == Node::WEAK) {
733 *stats->weak_global_handle_count += 1; 736 *stats->weak_global_handle_count += 1;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 implicit_ref_groups_.Clear(); 829 implicit_ref_groups_.Clear();
827 } 830 }
828 831
829 832
830 void GlobalHandles::TearDown() { 833 void GlobalHandles::TearDown() {
831 // TODO(1428): invoke weak callbacks. 834 // TODO(1428): invoke weak callbacks.
832 } 835 }
833 836
834 837
835 } } // namespace v8::internal 838 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/global-handles.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698