Shaka Player Embedded
Public Member Functions | Static Public Attributes | List of all members
shaka::memory::Traceable Class Referenceabstract

#include <heap_tracer.h>

Inheritance diagram for shaka::memory::Traceable:
shaka::Member< dom::DOMException > shaka::Member< dom::DOMStringList > shaka::Member< eme::MediaKeys > shaka::Member< shaka::js::dom::Document > shaka::Member< shaka::js::dom::Element > shaka::Member< shaka::js::dom::Node > shaka::Member< shaka::js::events::EventTarget > shaka::Member< shaka::js::idb::IDBCursor > shaka::Member< shaka::js::idb::IDBDatabase > shaka::Member< shaka::js::idb::IDBIterateCursorRequest > shaka::Member< shaka::js::idb::IDBObjectStore > shaka::Member< shaka::js::idb::IDBTransaction > shaka::Member< shaka::js::mse::AudioTrackList > shaka::Member< shaka::js::mse::HTMLMediaElement > shaka::Member< shaka::js::mse::MediaError > shaka::Member< shaka::js::mse::MediaSource > shaka::Member< shaka::js::mse::SourceBuffer > shaka::Member< shaka::js::mse::TextTrackList > shaka::Member< shaka::js::mse::VideoTrackList > shaka::Any shaka::BackingObject shaka::ByteBuffer shaka::ByteString shaka::Callback shaka::Member< T > shaka::Promise shaka::Struct shaka::WeakJsPtr< T > shaka::WeakJsPtr< JsFunction > shaka::WeakJsPtr< JsObject > shaka::WeakJsPtr< JsPromise > shaka::WeakJsPtr< JsPromiseResolver > shaka::WeakJsPtr< JsValue >

Public Member Functions

virtual ~Traceable ()
 
virtual void Trace (HeapTracer *tracer) const =0
 
virtual bool IsRootedAlive () const
 
virtual bool IsShortLived () const
 

Static Public Attributes

static constexpr const uint64_t kShortLiveDurationMs = 5000
 

Detailed Description

Defines an object that can be traced by the HeapTracer. Any object that stores other Traceable objects (e.g. BackingObjects or GenericConverters) MUST be Traceable so we can trace the heap.

Definition at line 43 of file heap_tracer.h.

Constructor & Destructor Documentation

§ ~Traceable()

virtual shaka::memory::Traceable::~Traceable ( )
inlinevirtual

Definition at line 52 of file heap_tracer.h.

Member Function Documentation

§ IsRootedAlive()

bool shaka::memory::Traceable::IsRootedAlive ( ) const
virtual

Gets whether this object is defined to be alive because of a JavaScript root reference.

Reimplemented in shaka::BackingObject.

Definition at line 27 of file heap_tracer.cc.

§ IsShortLived()

bool shaka::memory::Traceable::IsShortLived ( ) const
virtual

Gets whether the object is considered short-lived. This means that once the C++ ref-count is zero, the object won't remain alive for long. It is important to only set this if the JavaScript object won't be used for long.

This exists for JSC which doesn't offer a way for us to track whether a JavaScript object is still alive. If the JavaScript object is used after the backing object is destroyed, then a JavaScript exception will be thrown.

Reimplemented in shaka::js::dom::Node, shaka::js::XMLHttpRequest, shaka::js::events::Event, and shaka::js::mse::TimeRanges.

Definition at line 30 of file heap_tracer.cc.

§ Trace()

virtual void shaka::memory::Traceable::Trace ( HeapTracer tracer) const
pure virtual

Called during a GC run. This should call HeapTracer::Trace on all Traceable members. Be sure to call the base method when overriding.

Implemented in shaka::Struct, shaka::Member< T >, shaka::Member< shaka::js::dom::Node >, shaka::Member< shaka::js::mse::SourceBuffer >, shaka::Member< dom::DOMStringList >, shaka::Member< shaka::js::mse::MediaSource >, shaka::Member< eme::MediaKeys >, shaka::Member< shaka::js::idb::IDBDatabase >, shaka::Member< shaka::js::mse::AudioTrackList >, shaka::Member< shaka::js::mse::MediaError >, shaka::Member< dom::DOMException >, shaka::Member< shaka::js::idb::IDBCursor >, shaka::Member< shaka::js::idb::IDBTransaction >, shaka::Member< shaka::js::mse::TextTrackList >, shaka::Member< shaka::js::mse::VideoTrackList >, shaka::Member< shaka::js::mse::HTMLMediaElement >, shaka::Member< shaka::js::idb::IDBObjectStore >, shaka::Member< shaka::js::idb::IDBIterateCursorRequest >, shaka::Member< shaka::js::dom::Document >, shaka::Member< shaka::js::events::EventTarget >, shaka::Member< shaka::js::dom::Element >, shaka::WeakJsPtr< T >, shaka::WeakJsPtr< JsFunction >, shaka::WeakJsPtr< JsPromiseResolver >, shaka::WeakJsPtr< JsPromise >, shaka::WeakJsPtr< JsObject >, shaka::WeakJsPtr< JsValue >, shaka::js::dom::Node, shaka::Promise, shaka::Callback, shaka::js::idb::IDBIterateCursorRequest, shaka::js::TestType, shaka::ByteBuffer, shaka::Any, shaka::js::XMLHttpRequest, shaka::BackingObject, shaka::js::mse::TrackList< JsTrack, PubTrack >, shaka::js::mse::TrackList< AudioTrack, media::MediaTrack >, shaka::js::mse::TrackList< VideoTrack, media::MediaTrack >, shaka::js::mse::TrackList< TextTrack, media::TextTrack >, shaka::js::events::MediaEncryptedEvent, shaka::js::events::MediaKeyMessageEvent, shaka::js::mse::HTMLMediaElement, shaka::js::mse::MediaSource, shaka::js::idb::IDBTransaction, shaka::js::idb::IDBDatabase, shaka::js::idb::IDBRequest, shaka::js::eme::MediaKeys, shaka::js::dom::Attr, shaka::js::events::Event, shaka::js::mse::SourceBuffer, shaka::ByteString, shaka::js::eme::MediaKeySession, shaka::js::events::EventTarget, shaka::js::idb::IDBCursor, shaka::js::mse::TextTrack, shaka::js::idb::IDBObjectStore, and shaka::js::dom::Element.

Member Data Documentation

§ kShortLiveDurationMs

constexpr const uint64_t shaka::memory::Traceable::kShortLiveDurationMs = 5000
static

The duration, in milliseconds, that an object is expected to remain alive once its C++ ref-count hits zero.

Definition at line 49 of file heap_tracer.h.


The documentation for this class was generated from the following files: