From 76c92ac73eeda2582caee39dd427ca035caf172b Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Thu, 17 Sep 2015 15:39:16 +0100 Subject: Optimizing: Allow storing value objects in containers. Change-Id: Ic9c6b62e36706e571fd71c18d24d8e76ae2d5c7b --- runtime/base/macros.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'runtime') diff --git a/runtime/base/macros.h b/runtime/base/macros.h index 1d5dee23f8..dc692d2b75 100644 --- a/runtime/base/macros.h +++ b/runtime/base/macros.h @@ -68,9 +68,12 @@ template ART_FRIEND_TEST(test_set_name, individual_test) DISALLOW_COPY_AND_ASSIGN(TypeName) // A macro to disallow new and delete operators for a class. It goes in the private: declarations. +// NOTE: Providing placement new (and matching delete) for constructing container elements. #define DISALLOW_ALLOCATION() \ public: \ NO_RETURN ALWAYS_INLINE void operator delete(void*, size_t) { UNREACHABLE(); } \ + ALWAYS_INLINE void* operator new(size_t, void* ptr) noexcept { return ptr; } \ + ALWAYS_INLINE void operator delete(void*, void*) noexcept { } \ private: \ void* operator new(size_t) = delete -- cgit v1.2.3-59-g8ed1b