Index: runtime/vm/verified_memory.h |
diff --git a/runtime/vm/verified_memory.h b/runtime/vm/verified_memory.h |
deleted file mode 100644 |
index db292cc4635ed9d37d6bd69e62f26b730dd37e20..0000000000000000000000000000000000000000 |
--- a/runtime/vm/verified_memory.h |
+++ /dev/null |
@@ -1,90 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-#ifndef VM_VERIFIED_MEMORY_H_ |
-#define VM_VERIFIED_MEMORY_H_ |
- |
-#include "vm/allocation.h" |
-#include "vm/flags.h" |
-#include "vm/virtual_memory.h" |
- |
-namespace dart { |
- |
-#if defined(DEBUG) |
-DECLARE_FLAG(bool, verified_mem); |
-DECLARE_FLAG(int, verified_mem_max_reserve_mb); |
-#endif |
- |
- |
-// A wrapper around VirtualMemory for verifying that a particular class of |
-// memory writes are only performed through a particular interface. |
-// |
-// The main use case is verifying that storing pointers into objects is only |
-// performed by code aware of the GC write barrier. |
-// |
-// NOTE: Verification is enabled only if 'verified_mem' is true, and this flag |
-// only exists in DEBUG builds. |
-class VerifiedMemory : public AllStatic { |
- public: |
- // Reserves a block of memory for which all methods in this class may |
- // be called. Returns NULL if out of memory. |
- static VirtualMemory* Reserve(intptr_t size) { |
- return enabled() ? ReserveInternal(size) : VirtualMemory::Reserve(size); |
- } |
- |
- // Verifies that [start, start + size) has only been mutated through |
- // methods in this class (or explicitly accepted by calling Accept). |
- static void Verify(uword start, intptr_t size) { |
- if (!enabled()) return; |
- ASSERT(size <= offset()); |
- ASSERT(memcmp(reinterpret_cast<void*>(start + offset()), |
- reinterpret_cast<void*>(start), |
- size) == 0); |
- } |
- |
- // Assigns value to *ptr after verifying previous content at that location. |
- template<typename T> |
- static void Write(T* ptr, const T& value) { |
- if (enabled()) { |
- uword addr = reinterpret_cast<uword>(ptr); |
- Verify(addr, sizeof(T)); |
- T* offset_ptr = reinterpret_cast<T*>(addr + offset()); |
- *offset_ptr = value; |
- } |
- *ptr = value; |
- } |
- |
- // Accepts the current state of [start, start + size), even if it has been |
- // mutated by other means. |
- static void Accept(uword start, intptr_t size) { |
- if (!enabled()) return; |
- ASSERT(size <= offset()); |
- memmove(reinterpret_cast<void*>(start + offset()), |
- reinterpret_cast<void*>(start), |
- size); |
- } |
- |
- private: |
-#if defined(DEBUG) |
- static bool enabled() { return FLAG_verified_mem; } |
- static intptr_t offset() { return FLAG_verified_mem_max_reserve_mb * MB; } |
- static VirtualMemory* ReserveInternal(intptr_t size); |
-#else |
- // In release mode, most code in this class is optimized away. |
- static bool enabled() { return false; } |
- static intptr_t offset() { UNREACHABLE(); return -1; } |
- static VirtualMemory* ReserveInternal(intptr_t size) { |
- UNREACHABLE(); |
- return NULL; |
- } |
-#endif |
- |
- friend class Assembler; // To use enabled/offset when generating code. |
- friend class FlowGraphCompiler; // To compute edge counter code size. |
- friend class Intrinsifier; // To know whether a jump is near or far. |
-}; |
- |
-} // namespace dart |
- |
-#endif // VM_VERIFIED_MEMORY_H_ |