PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` // Copyright 2020 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef INCLUDE_CPPGC_MACROS_H_ #define INCLUDE_CPPGC_MACROS_H_ #include #include "cppgc/internal/compiler-specific.h" namespace cppgc { // Use CPPGC_STACK_ALLOCATED if the object is only stack allocated. // Add the CPPGC_STACK_ALLOCATED_IGNORE annotation on a case-by-case basis when // enforcement of CPPGC_STACK_ALLOCATED should be suppressed. #if defined(__clang__) #define CPPGC_STACK_ALLOCATED() \ public: \ using IsStackAllocatedTypeMarker CPPGC_UNUSED = int; \ \ private: \ void* operator new(size_t) = delete; \ void* operator new(size_t, void*) = delete; \ static_assert(true, "Force semicolon.") #define CPPGC_STACK_ALLOCATED_IGNORE(bug_or_reason) \ __attribute__((annotate("stack_allocated_ignore"))) #else // !defined(__clang__) #define CPPGC_STACK_ALLOCATED() static_assert(true, "Force semicolon.") #define CPPGC_STACK_ALLOCATED_IGNORE(bug_or_reason) #endif // !defined(__clang__) } // namespace cppgc #endif // INCLUDE_CPPGC_MACROS_H_