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

Unified Diff: src/spaces.cc

Issue 558016: Strengthen a few assertions and add zapping of allocated... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/spaces.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/spaces.cc
===================================================================
--- src/spaces.cc (revision 3725)
+++ src/spaces.cc (working copy)
@@ -357,12 +357,19 @@
}
int alloced = static_cast<int>(*allocated);
size_ += alloced;
+#ifdef DEBUG
+ // Is this the problematic one?
Kevin Millikin (Chromium) 2010/01/28 08:38:02 I'm not sure this comment adds anything.
+ ZapBlock(reinterpret_cast<Address>(mem), alloced);
+#endif
Counters::memory_allocated.Increment(alloced);
return mem;
}
void MemoryAllocator::FreeRawMemory(void* mem, size_t length) {
+#ifdef DEBUG
+ ZapBlock(reinterpret_cast<Address>(mem), length);
+#endif
if (CodeRange::contains(static_cast<Address>(mem))) {
CodeRange::FreeRawMemory(mem, length);
} else {
@@ -446,6 +453,9 @@
if (!initial_chunk_->Commit(start, size, owner->executable() == EXECUTABLE)) {
return Page::FromAddress(NULL);
}
+#ifdef DEBUG
+ ZapBlock(start, size);
+#endif
Counters::memory_allocated.Increment(static_cast<int>(size));
// So long as we correctly overestimated the number of chunks we should not
@@ -467,10 +477,14 @@
ASSERT(InInitialChunk(start + size - 1));
if (!initial_chunk_->Commit(start, size, executable)) return false;
+#ifdef DEBUG
+ ZapBlock(start, size);
+#endif
Counters::memory_allocated.Increment(static_cast<int>(size));
return true;
}
+
bool MemoryAllocator::UncommitBlock(Address start, size_t size) {
ASSERT(start != NULL);
ASSERT(size > 0);
@@ -483,6 +497,14 @@
return true;
}
+
+void MemoryAllocator::ZapBlock(Address start, size_t size) {
+ for (size_t s = 0; s + kPointerSize <= size; s += kPointerSize) {
+ Memory::Address_at(start + s) = kZapValue;
+ }
+}
+
+
Page* MemoryAllocator::InitializePagesInChunk(int chunk_id, int pages_in_chunk,
PagedSpace* owner) {
ASSERT(IsValidChunk(chunk_id));
@@ -1599,9 +1621,7 @@
int OldSpaceFreeList::Free(Address start, int size_in_bytes) {
#ifdef DEBUG
- for (int i = 0; i < size_in_bytes; i += kPointerSize) {
- Memory::Address_at(start + i) = kZapValue;
- }
+ MemoryAllocator::ZapBlock(start, size_in_bytes);
#endif
FreeListNode* node = FreeListNode::FromAddress(start);
node->set_size(size_in_bytes);
@@ -1733,9 +1753,7 @@
void FixedSizeFreeList::Free(Address start) {
#ifdef DEBUG
- for (int i = 0; i < object_size_; i += kPointerSize) {
- Memory::Address_at(start + i) = kZapValue;
- }
+ MemoryAllocator::ZapBlock(start, object_size_);
#endif
// We only use the freelists with mark-sweep.
ASSERT(!MarkCompactCollector::IsCompacting());
« no previous file with comments | « src/spaces.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698