Quellcodebibliothek nsWrapperCacheInlines.h
Sprache: C
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
inline JSObject* nsWrapperCache::GetWrapperPreserveColor() const {
JSObject* obj = GetWrapperMaybeDead(); if (obj && js::gc::EdgeNeedsSweepUnbarriered(&obj)) { // The object has been found to be dead and is in the process of being // finalized, so don't let the caller see it. // Don't clear the cache though: this happens when a new wrapper is created // for this native or when the wrapper is finalized. return nullptr;
}
MOZ_ASSERT(obj == mWrapper); return obj;
}
inlinebool nsWrapperCache::HasKnownLiveWrapper() const { // If we have a wrapper and it's not gray in the GC-marking sense, that means // that we can't be cycle-collected. That's because the wrapper is being kept // alive by the JS engine (and not just due to being traced from some // cycle-collectable thing), and the wrapper holds us alive, so we know we're // not collectable.
JSObject* o = GetWrapperPreserveColor(); return o && !JS::ObjectIsMarkedGray(o);
}
inlinevoid nsWrapperCache::MarkWrapperLive() { // Just call GetWrapper and ignore the return value. It will do the // gray-unmarking for us.
GetWrapper();
}
template <typename T> inlinevoid nsWrapperCache::UpdateWrapperForNewGlobal(T* aScriptObjectHolder,
JSObject* aNewWrapper) { // If the new wrapper is in a different zone we must ensure the // DropJSObjects/HoldJSObjects are called to move the holder to the new zone.
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.0Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.