PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`// Copyright 2021 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_HEAP_STATE_H_ #define INCLUDE_CPPGC_HEAP_STATE_H_ #include "v8config.h" // NOLINT(build/include_directory) namespace cppgc { class HeapHandle; namespace subtle { /** * Helpers to peek into heap-internal state. */ class V8_EXPORT HeapState final { public: /** * Returns whether the garbage collector is marking. This API is experimental * and is expected to be removed in future. * * \param heap_handle The corresponding heap. * \returns true if the garbage collector is currently marking, and false * otherwise. */ static bool IsMarking(const HeapHandle& heap_handle); /* * Returns whether the garbage collector is sweeping. This API is experimental * and is expected to be removed in future. * * \param heap_handle The corresponding heap. * \returns true if the garbage collector is currently sweeping, and false * otherwise. */ static bool IsSweeping(const HeapHandle& heap_handle); /* * Returns whether the garbage collector is currently sweeping on the thread * owning this heap. This API allows the caller to determine whether it has * been called from a destructor of a managed object. This API is experimental * and may be removed in future. * * \param heap_handle The corresponding heap. * \returns true if the garbage collector is currently sweeping on this * thread, and false otherwise. */ static bool IsSweepingOnOwningThread(const HeapHandle& heap_handle); /** * Returns whether the garbage collector is in the atomic pause, i.e., the * mutator is stopped from running. This API is experimental and is expected * to be removed in future. * * \param heap_handle The corresponding heap. * \returns true if the garbage collector is currently in the atomic pause, * and false otherwise. */ static bool IsInAtomicPause(const HeapHandle& heap_handle); /** * Returns whether the last garbage collection was finalized conservatively * (i.e., with a non-empty stack). This API is experimental and is expected to * be removed in future. * * \param heap_handle The corresponding heap. * \returns true if the last garbage collection was finalized conservatively, * and false otherwise. */ static bool PreviousGCWasConservative(const HeapHandle& heap_handle); private: HeapState() = delete; }; } // namespace subtle } // namespace cppgc #endif // INCLUDE_CPPGC_HEAP_STATE_H_