Index: runtime/vm/scavenger.cc |
=================================================================== |
--- runtime/vm/scavenger.cc (revision 41609) |
+++ runtime/vm/scavenger.cc (working copy) |
@@ -16,6 +16,7 @@ |
#include "vm/object_id_ring.h" |
#include "vm/stack_frame.h" |
#include "vm/store_buffer.h" |
+#include "vm/verified_memory.h" |
#include "vm/verifier.h" |
#include "vm/visitor.h" |
#include "vm/weak_table.h" |
@@ -227,6 +228,7 @@ |
memmove(reinterpret_cast<void*>(new_addr), |
reinterpret_cast<void*>(raw_addr), |
size); |
+ VerifiedMemory::Accept(new_addr, size); |
// Remember forwarding address. |
ForwardTo(raw_addr, new_addr); |
} |
@@ -235,6 +237,7 @@ |
*p = new_obj; |
// Update the store buffer as needed. |
if (visiting_old_object_ != NULL) { |
+ VerifiedMemory::Accept(reinterpret_cast<uword>(p), sizeof(*p)); |
UpdateStoreBuffer(p, new_obj); |
} |
} |
@@ -356,7 +359,7 @@ |
return new SemiSpace(NULL); |
} else { |
intptr_t size_in_bytes = size_in_words << kWordSizeLog2; |
- VirtualMemory* reserved = VirtualMemory::Reserve(size_in_bytes); |
+ VirtualMemory* reserved = VerifiedMemory::Reserve(size_in_bytes); |
if ((reserved == NULL) || !reserved->Commit(false)) { // Not executable. |
// TODO(koda): If cache_ is not empty, we could try to delete it. |
delete reserved; |
@@ -486,7 +489,7 @@ |
// objects candidates for promotion next time. |
survivor_end_ = end_; |
} |
- |
+ VerifiedMemory::Accept(to_->start(), to_->end() - to_->start()); |
#if defined(DEBUG) |
// We can only safely verify the store buffers from old space if there is no |
// concurrent old space task. At the same time we prevent new tasks from |