| Index: src/global-handles.cc
|
| diff --git a/src/global-handles.cc b/src/global-handles.cc
|
| index 2c9fada1e82d97bc14bd9197549d08bf210835ea..940d53bb150be908a28176602151810e8d83dd44 100644
|
| --- a/src/global-handles.cc
|
| +++ b/src/global-handles.cc
|
| @@ -38,13 +38,13 @@ class GlobalHandles::Node {
|
|
|
| // Maps handle location (slot) to the containing node.
|
| static Node* FromLocation(Object** location) {
|
| - ASSERT(OFFSET_OF(Node, object_) == 0);
|
| + DCHECK(OFFSET_OF(Node, object_) == 0);
|
| return reinterpret_cast<Node*>(location);
|
| }
|
|
|
| Node() {
|
| - ASSERT(OFFSET_OF(Node, class_id_) == Internals::kNodeClassIdOffset);
|
| - ASSERT(OFFSET_OF(Node, flags_) == Internals::kNodeFlagsOffset);
|
| + DCHECK(OFFSET_OF(Node, class_id_) == Internals::kNodeClassIdOffset);
|
| + DCHECK(OFFSET_OF(Node, flags_) == Internals::kNodeFlagsOffset);
|
| STATIC_ASSERT(static_cast<int>(NodeState::kMask) ==
|
| Internals::kNodeStateMask);
|
| STATIC_ASSERT(WEAK == Internals::kNodeStateIsWeakValue);
|
| @@ -73,7 +73,7 @@ class GlobalHandles::Node {
|
|
|
| void Initialize(int index, Node** first_free) {
|
| index_ = static_cast<uint8_t>(index);
|
| - ASSERT(static_cast<int>(index_) == index);
|
| + DCHECK(static_cast<int>(index_) == index);
|
| set_state(FREE);
|
| set_in_new_space_list(false);
|
| parameter_or_next_free_.next_free = *first_free;
|
| @@ -81,7 +81,7 @@ class GlobalHandles::Node {
|
| }
|
|
|
| void Acquire(Object* object) {
|
| - ASSERT(state() == FREE);
|
| + DCHECK(state() == FREE);
|
| object_ = object;
|
| class_id_ = v8::HeapProfiler::kPersistentHandleNoClassId;
|
| set_independent(false);
|
| @@ -93,7 +93,7 @@ class GlobalHandles::Node {
|
| }
|
|
|
| void Release() {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| set_state(FREE);
|
| // Zap the values for eager trapping.
|
| object_ = reinterpret_cast<Object*>(kGlobalHandleZapValue);
|
| @@ -162,18 +162,18 @@ class GlobalHandles::Node {
|
| }
|
|
|
| void MarkPending() {
|
| - ASSERT(state() == WEAK);
|
| + DCHECK(state() == WEAK);
|
| set_state(PENDING);
|
| }
|
|
|
| // Independent flag accessors.
|
| void MarkIndependent() {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| set_independent(true);
|
| }
|
|
|
| void MarkPartiallyDependent() {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| if (GetGlobalHandles()->isolate()->heap()->InNewSpace(object_)) {
|
| set_partially_dependent(true);
|
| }
|
| @@ -186,27 +186,27 @@ class GlobalHandles::Node {
|
|
|
| // Callback parameter accessors.
|
| void set_parameter(void* parameter) {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| parameter_or_next_free_.parameter = parameter;
|
| }
|
| void* parameter() const {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| return parameter_or_next_free_.parameter;
|
| }
|
|
|
| // Accessors for next free node in the free list.
|
| Node* next_free() {
|
| - ASSERT(state() == FREE);
|
| + DCHECK(state() == FREE);
|
| return parameter_or_next_free_.next_free;
|
| }
|
| void set_next_free(Node* value) {
|
| - ASSERT(state() == FREE);
|
| + DCHECK(state() == FREE);
|
| parameter_or_next_free_.next_free = value;
|
| }
|
|
|
| void MakeWeak(void* parameter, WeakCallback weak_callback) {
|
| - ASSERT(weak_callback != NULL);
|
| - ASSERT(state() != FREE);
|
| + DCHECK(weak_callback != NULL);
|
| + DCHECK(state() != FREE);
|
| CHECK(object_ != NULL);
|
| set_state(WEAK);
|
| set_parameter(parameter);
|
| @@ -214,7 +214,7 @@ class GlobalHandles::Node {
|
| }
|
|
|
| void* ClearWeakness() {
|
| - ASSERT(state() != FREE);
|
| + DCHECK(state() != FREE);
|
| void* p = parameter();
|
| set_state(NORMAL);
|
| set_parameter(NULL);
|
| @@ -235,9 +235,9 @@ class GlobalHandles::Node {
|
| {
|
| // Check that we are not passing a finalized external string to
|
| // the callback.
|
| - ASSERT(!object_->IsExternalAsciiString() ||
|
| + DCHECK(!object_->IsExternalAsciiString() ||
|
| ExternalAsciiString::cast(object_)->resource() != NULL);
|
| - ASSERT(!object_->IsExternalTwoByteString() ||
|
| + DCHECK(!object_->IsExternalTwoByteString() ||
|
| ExternalTwoByteString::cast(object_)->resource() != NULL);
|
| // Leaving V8.
|
| VMState<EXTERNAL> state(isolate);
|
| @@ -316,12 +316,12 @@ class GlobalHandles::NodeBlock {
|
| }
|
|
|
| Node* node_at(int index) {
|
| - ASSERT(0 <= index && index < kSize);
|
| + DCHECK(0 <= index && index < kSize);
|
| return &nodes_[index];
|
| }
|
|
|
| void IncreaseUses() {
|
| - ASSERT(used_nodes_ < kSize);
|
| + DCHECK(used_nodes_ < kSize);
|
| if (used_nodes_++ == 0) {
|
| NodeBlock* old_first = global_handles_->first_used_block_;
|
| global_handles_->first_used_block_ = this;
|
| @@ -333,7 +333,7 @@ class GlobalHandles::NodeBlock {
|
| }
|
|
|
| void DecreaseUses() {
|
| - ASSERT(used_nodes_ > 0);
|
| + DCHECK(used_nodes_ > 0);
|
| if (--used_nodes_ == 0) {
|
| if (next_used_ != NULL) next_used_->prev_used_ = prev_used_;
|
| if (prev_used_ != NULL) prev_used_->next_used_ = next_used_;
|
| @@ -371,7 +371,7 @@ GlobalHandles::NodeBlock* GlobalHandles::Node::FindBlock() {
|
| intptr_t ptr = reinterpret_cast<intptr_t>(this);
|
| ptr = ptr - index_ * sizeof(Node);
|
| NodeBlock* block = reinterpret_cast<NodeBlock*>(ptr);
|
| - ASSERT(block->node_at(index_) == this);
|
| + DCHECK(block->node_at(index_) == this);
|
| return block;
|
| }
|
|
|
| @@ -405,12 +405,12 @@ class GlobalHandles::NodeIterator {
|
| bool done() const { return block_ == NULL; }
|
|
|
| Node* node() const {
|
| - ASSERT(!done());
|
| + DCHECK(!done());
|
| return block_->node_at(index_);
|
| }
|
|
|
| void Advance() {
|
| - ASSERT(!done());
|
| + DCHECK(!done());
|
| if (++index_ < NodeBlock::kSize) return;
|
| index_ = 0;
|
| block_ = block_->next_used();
|
| @@ -450,7 +450,7 @@ Handle<Object> GlobalHandles::Create(Object* value) {
|
| first_block_ = new NodeBlock(this, first_block_);
|
| first_block_->PutNodesOnFreeList(&first_free_);
|
| }
|
| - ASSERT(first_free_ != NULL);
|
| + DCHECK(first_free_ != NULL);
|
| // Take the first node in the free list.
|
| Node* result = first_free_;
|
| first_free_ = result->next_free();
|
| @@ -465,7 +465,7 @@ Handle<Object> GlobalHandles::Create(Object* value) {
|
|
|
|
|
| Handle<Object> GlobalHandles::CopyGlobal(Object** location) {
|
| - ASSERT(location != NULL);
|
| + DCHECK(location != NULL);
|
| return Node::FromLocation(location)->GetGlobalHandles()->Create(*location);
|
| }
|
|
|
| @@ -544,7 +544,7 @@ void GlobalHandles::IdentifyNewSpaceWeakIndependentHandles(
|
| WeakSlotCallbackWithHeap f) {
|
| for (int i = 0; i < new_space_nodes_.length(); ++i) {
|
| Node* node = new_space_nodes_[i];
|
| - ASSERT(node->is_in_new_space_list());
|
| + DCHECK(node->is_in_new_space_list());
|
| if ((node->is_independent() || node->is_partially_dependent()) &&
|
| node->IsWeak() && f(isolate_->heap(), node->location())) {
|
| node->MarkPending();
|
| @@ -556,7 +556,7 @@ void GlobalHandles::IdentifyNewSpaceWeakIndependentHandles(
|
| void GlobalHandles::IterateNewSpaceWeakIndependentRoots(ObjectVisitor* v) {
|
| for (int i = 0; i < new_space_nodes_.length(); ++i) {
|
| Node* node = new_space_nodes_[i];
|
| - ASSERT(node->is_in_new_space_list());
|
| + DCHECK(node->is_in_new_space_list());
|
| if ((node->is_independent() || node->is_partially_dependent()) &&
|
| node->IsWeakRetainer()) {
|
| v->VisitPointer(node->location());
|
| @@ -572,7 +572,7 @@ bool GlobalHandles::IterateObjectGroups(ObjectVisitor* v,
|
| bool any_group_was_visited = false;
|
| for (int i = 0; i < object_groups_.length(); i++) {
|
| ObjectGroup* entry = object_groups_.at(i);
|
| - ASSERT(entry != NULL);
|
| + DCHECK(entry != NULL);
|
|
|
| Object*** objects = entry->objects;
|
| bool group_should_be_visited = false;
|
| @@ -616,13 +616,13 @@ int GlobalHandles::PostGarbageCollectionProcessing(
|
| // Process weak global handle callbacks. This must be done after the
|
| // GC is completely done, because the callbacks may invoke arbitrary
|
| // API functions.
|
| - ASSERT(isolate_->heap()->gc_state() == Heap::NOT_IN_GC);
|
| + DCHECK(isolate_->heap()->gc_state() == Heap::NOT_IN_GC);
|
| const int initial_post_gc_processing_count = ++post_gc_processing_count_;
|
| int freed_nodes = 0;
|
| if (collector == SCAVENGER) {
|
| for (int i = 0; i < new_space_nodes_.length(); ++i) {
|
| Node* node = new_space_nodes_[i];
|
| - ASSERT(node->is_in_new_space_list());
|
| + DCHECK(node->is_in_new_space_list());
|
| if (!node->IsRetainer()) {
|
| // Free nodes do not have weak callbacks. Do not use them to compute
|
| // the freed_nodes.
|
| @@ -671,7 +671,7 @@ int GlobalHandles::PostGarbageCollectionProcessing(
|
| int last = 0;
|
| for (int i = 0; i < new_space_nodes_.length(); ++i) {
|
| Node* node = new_space_nodes_[i];
|
| - ASSERT(node->is_in_new_space_list());
|
| + DCHECK(node->is_in_new_space_list());
|
| if (node->IsRetainer()) {
|
| if (isolate_->heap()->InNewSpace(node->object())) {
|
| new_space_nodes_[last++] = node;
|
| @@ -818,7 +818,7 @@ void GlobalHandles::AddObjectGroup(Object*** handles,
|
| v8::RetainedObjectInfo* info) {
|
| #ifdef DEBUG
|
| for (size_t i = 0; i < length; ++i) {
|
| - ASSERT(!Node::FromLocation(handles[i])->is_independent());
|
| + DCHECK(!Node::FromLocation(handles[i])->is_independent());
|
| }
|
| #endif
|
| if (length == 0) {
|
| @@ -849,9 +849,9 @@ void GlobalHandles::AddImplicitReferences(HeapObject** parent,
|
| Object*** children,
|
| size_t length) {
|
| #ifdef DEBUG
|
| - ASSERT(!Node::FromLocation(BitCast<Object**>(parent))->is_independent());
|
| + DCHECK(!Node::FromLocation(BitCast<Object**>(parent))->is_independent());
|
| for (size_t i = 0; i < length; ++i) {
|
| - ASSERT(!Node::FromLocation(children[i])->is_independent());
|
| + DCHECK(!Node::FromLocation(children[i])->is_independent());
|
| }
|
| #endif
|
| if (length == 0) return;
|
| @@ -863,13 +863,13 @@ void GlobalHandles::AddImplicitReferences(HeapObject** parent,
|
|
|
|
|
| void GlobalHandles::SetReferenceFromGroup(UniqueId id, Object** child) {
|
| - ASSERT(!Node::FromLocation(child)->is_independent());
|
| + DCHECK(!Node::FromLocation(child)->is_independent());
|
| implicit_ref_connections_.Add(ObjectGroupConnection(id, child));
|
| }
|
|
|
|
|
| void GlobalHandles::SetReference(HeapObject** parent, Object** child) {
|
| - ASSERT(!Node::FromLocation(child)->is_independent());
|
| + DCHECK(!Node::FromLocation(child)->is_independent());
|
| ImplicitRefGroup* group = new ImplicitRefGroup(parent, 1);
|
| group->children[0] = child;
|
| implicit_ref_groups_.Add(group);
|
| @@ -1021,7 +1021,7 @@ EternalHandles::~EternalHandles() {
|
| void EternalHandles::IterateAllRoots(ObjectVisitor* visitor) {
|
| int limit = size_;
|
| for (int i = 0; i < blocks_.length(); i++) {
|
| - ASSERT(limit > 0);
|
| + DCHECK(limit > 0);
|
| Object** block = blocks_[i];
|
| visitor->VisitPointers(block, block + Min(limit, kSize));
|
| limit -= kSize;
|
| @@ -1049,9 +1049,9 @@ void EternalHandles::PostGarbageCollectionProcessing(Heap* heap) {
|
|
|
|
|
| void EternalHandles::Create(Isolate* isolate, Object* object, int* index) {
|
| - ASSERT_EQ(kInvalidIndex, *index);
|
| + DCHECK_EQ(kInvalidIndex, *index);
|
| if (object == NULL) return;
|
| - ASSERT_NE(isolate->heap()->the_hole_value(), object);
|
| + DCHECK_NE(isolate->heap()->the_hole_value(), object);
|
| int block = size_ >> kShift;
|
| int offset = size_ & kMask;
|
| // need to resize
|
| @@ -1061,7 +1061,7 @@ void EternalHandles::Create(Isolate* isolate, Object* object, int* index) {
|
| MemsetPointer(next_block, the_hole, kSize);
|
| blocks_.Add(next_block);
|
| }
|
| - ASSERT_EQ(isolate->heap()->the_hole_value(), blocks_[block][offset]);
|
| + DCHECK_EQ(isolate->heap()->the_hole_value(), blocks_[block][offset]);
|
| blocks_[block][offset] = object;
|
| if (isolate->heap()->InNewSpace(object)) {
|
| new_space_indices_.Add(size_);
|
|
|