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

Side by Side Diff: src/heap/mark-compact.cc

Issue 1178703008: Revert of Add CHECKs to verify that we never finalize stale copies of external strings (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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 | « no previous file | 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/base/atomicops.h" 7 #include "src/base/atomicops.h"
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/compilation-cache.h" 10 #include "src/compilation-cache.h"
(...skipping 1661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 public: 1672 public:
1673 explicit StringTableCleaner(Heap* heap) : heap_(heap), pointers_removed_(0) {} 1673 explicit StringTableCleaner(Heap* heap) : heap_(heap), pointers_removed_(0) {}
1674 1674
1675 virtual void VisitPointers(Object** start, Object** end) { 1675 virtual void VisitPointers(Object** start, Object** end) {
1676 // Visit all HeapObject pointers in [start, end). 1676 // Visit all HeapObject pointers in [start, end).
1677 for (Object** p = start; p < end; p++) { 1677 for (Object** p = start; p < end; p++) {
1678 Object* o = *p; 1678 Object* o = *p;
1679 if (o->IsHeapObject() && 1679 if (o->IsHeapObject() &&
1680 Marking::IsWhite(Marking::MarkBitFrom(HeapObject::cast(o)))) { 1680 Marking::IsWhite(Marking::MarkBitFrom(HeapObject::cast(o)))) {
1681 if (finalize_external_strings) { 1681 if (finalize_external_strings) {
1682 // We must never finalize a string that was copied (has a forwarding 1682 DCHECK(o->IsExternalString());
1683 // map).
1684 CHECK(o->IsExternalString());
1685 heap_->FinalizeExternalString(String::cast(*p)); 1683 heap_->FinalizeExternalString(String::cast(*p));
1686 } else { 1684 } else {
1687 pointers_removed_++; 1685 pointers_removed_++;
1688 } 1686 }
1689 // Set the entry to the_hole_value (as deleted). 1687 // Set the entry to the_hole_value (as deleted).
1690 *p = heap_->the_hole_value(); 1688 *p = heap_->the_hole_value();
1691 } else {
1692 // Anything in the external string table has to be either a string or
1693 // the hole.
1694 CHECK(!finalize_external_strings || o->IsExternalString() ||
1695 o->IsTheHole());
1696 } 1689 }
1697 } 1690 }
1698 } 1691 }
1699 1692
1700 int PointersRemoved() { 1693 int PointersRemoved() {
1701 DCHECK(!finalize_external_strings); 1694 DCHECK(!finalize_external_strings);
1702 return pointers_removed_; 1695 return pointers_removed_;
1703 } 1696 }
1704 1697
1705 private: 1698 private:
(...skipping 2975 matching lines...) Expand 10 before | Expand all | Expand 10 after
4681 SlotsBuffer* buffer = *buffer_address; 4674 SlotsBuffer* buffer = *buffer_address;
4682 while (buffer != NULL) { 4675 while (buffer != NULL) {
4683 SlotsBuffer* next_buffer = buffer->next(); 4676 SlotsBuffer* next_buffer = buffer->next();
4684 DeallocateBuffer(buffer); 4677 DeallocateBuffer(buffer);
4685 buffer = next_buffer; 4678 buffer = next_buffer;
4686 } 4679 }
4687 *buffer_address = NULL; 4680 *buffer_address = NULL;
4688 } 4681 }
4689 } // namespace internal 4682 } // namespace internal
4690 } // namespace v8 4683 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698