зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1896973 - Part 1: Tidy some JS::Heap methods r=sfink
This renames address() and unsafeGet() methods to be const and non-const versions of unsafeAddress. The unnecessary operator bool() overload is removed. Differential Revision: https://phabricator.services.mozilla.com/D212260
This commit is contained in:
Родитель
cd67cc3619
Коммит
5e6632a42b
|
@ -4239,7 +4239,7 @@ JS::Handle<JSObject*> GetPerInterfaceObjectHandle(
|
||||||
const JS::Heap<JSObject*>& entrySlot =
|
const JS::Heap<JSObject*>& entrySlot =
|
||||||
protoAndIfaceCache.EntrySlotMustExist(aSlotId);
|
protoAndIfaceCache.EntrySlotMustExist(aSlotId);
|
||||||
JS::AssertObjectIsNotGray(entrySlot);
|
JS::AssertObjectIsNotGray(entrySlot);
|
||||||
return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
|
return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.unsafeAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace binding_detail {
|
namespace binding_detail {
|
||||||
|
|
|
@ -3883,7 +3883,7 @@ class CGCreateInterfaceObjectsMethod(CGAbstractMethod):
|
||||||
fill(
|
fill(
|
||||||
"""
|
"""
|
||||||
JS::AssertObjectIsNotGray(*protoCache);
|
JS::AssertObjectIsNotGray(*protoCache);
|
||||||
JS::Handle<JSObject*> proto = JS::Handle<JSObject*>::fromMarkedLocation(protoCache->address());
|
JS::Handle<JSObject*> proto = JS::Handle<JSObject*>::fromMarkedLocation(protoCache->unsafeAddress());
|
||||||
if (!proto) {
|
if (!proto) {
|
||||||
$*{failureCode}
|
$*{failureCode}
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,7 @@ class NativeThenHandler<ResolveCallback, RejectCallback, std::tuple<Args...>,
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static JS::Handle<T> GetJSArgHandleForCall(JS::Heap<T>& aArg) {
|
static JS::Handle<T> GetJSArgHandleForCall(JS::Heap<T>& aArg) {
|
||||||
aArg.exposeToActiveJS();
|
aArg.exposeToActiveJS();
|
||||||
return JS::Handle<T>::fromMarkedLocation(aArg.address());
|
return JS::Handle<T>::fromMarkedLocation(aArg.unsafeAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TCallback, size_t... Indices, size_t... JSIndices>
|
template <typename TCallback, size_t... Indices, size_t... JSIndices>
|
||||||
|
|
|
@ -343,8 +343,6 @@ class MOZ_NON_MEMMOVABLE Heap : public js::HeapOperations<T, Heap<T>> {
|
||||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||||
DECLARE_POINTER_ASSIGN_OPS(Heap, T);
|
DECLARE_POINTER_ASSIGN_OPS(Heap, T);
|
||||||
|
|
||||||
const T* address() const { return &ptr; }
|
|
||||||
|
|
||||||
void exposeToActiveJS() const { js::BarrierMethods<T>::exposeToJS(ptr); }
|
void exposeToActiveJS() const { js::BarrierMethods<T>::exposeToJS(ptr); }
|
||||||
|
|
||||||
const T& get() const {
|
const T& get() const {
|
||||||
|
@ -362,17 +360,14 @@ class MOZ_NON_MEMMOVABLE Heap : public js::HeapOperations<T, Heap<T>> {
|
||||||
ptr = newPtr;
|
ptr = newPtr;
|
||||||
postWriteBarrier(tmp, ptr);
|
postWriteBarrier(tmp, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
T* unsafeGet() { return &ptr; }
|
|
||||||
|
|
||||||
void unbarrieredSet(const T& newPtr) { ptr = newPtr; }
|
void unbarrieredSet(const T& newPtr) { ptr = newPtr; }
|
||||||
|
|
||||||
|
T* unsafeAddress() { return &ptr; }
|
||||||
|
const T* unsafeAddress() const { return &ptr; }
|
||||||
|
|
||||||
explicit operator bool() const {
|
explicit operator bool() const {
|
||||||
return bool(js::BarrierMethods<T>::asGCThingOrNull(ptr));
|
return bool(js::BarrierMethods<T>::asGCThingOrNull(ptr));
|
||||||
}
|
}
|
||||||
explicit operator bool() {
|
|
||||||
return bool(js::BarrierMethods<T>::asGCThingOrNull(ptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void postWriteBarrier(const T& prev, const T& next) {
|
void postWriteBarrier(const T& prev, const T& next) {
|
||||||
|
@ -526,9 +521,6 @@ class TenuredHeap : public js::HeapOperations<T, TenuredHeap<T>> {
|
||||||
explicit operator bool() const {
|
explicit operator bool() const {
|
||||||
return bool(js::BarrierMethods<T>::asGCThingOrNull(unbarrieredGetPtr()));
|
return bool(js::BarrierMethods<T>::asGCThingOrNull(unbarrieredGetPtr()));
|
||||||
}
|
}
|
||||||
explicit operator bool() {
|
|
||||||
return bool(js::BarrierMethods<T>::asGCThingOrNull(unbarrieredGetPtr()));
|
|
||||||
}
|
|
||||||
|
|
||||||
TenuredHeap<T>& operator=(T p) {
|
TenuredHeap<T>& operator=(T p) {
|
||||||
setPtr(p);
|
setPtr(p);
|
||||||
|
|
|
@ -348,7 +348,7 @@ template <typename T>
|
||||||
inline void TraceEdge(JSTracer* trc, JS::Heap<T>* thingp, const char* name) {
|
inline void TraceEdge(JSTracer* trc, JS::Heap<T>* thingp, const char* name) {
|
||||||
MOZ_ASSERT(thingp);
|
MOZ_ASSERT(thingp);
|
||||||
if (*thingp) {
|
if (*thingp) {
|
||||||
js::gc::TraceExternalEdge(trc, thingp->unsafeGet(), name);
|
js::gc::TraceExternalEdge(trc, thingp->unsafeAddress(), name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2607,7 +2607,7 @@ namespace js::gc {
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
JS_PUBLIC_API bool TraceWeakEdge(JSTracer* trc, JS::Heap<T>* thingp) {
|
JS_PUBLIC_API bool TraceWeakEdge(JSTracer* trc, JS::Heap<T>* thingp) {
|
||||||
return TraceEdgeInternal(trc, gc::ConvertToBase(thingp->unsafeGet()),
|
return TraceEdgeInternal(trc, gc::ConvertToBase(thingp->unsafeAddress()),
|
||||||
"JS::Heap edge");
|
"JS::Heap edge");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -615,7 +615,7 @@ void nsXPCWrappedJS::SystemIsBeingShutDown() {
|
||||||
// containing mJSObj, which may have been freed at this point. This is safe
|
// containing mJSObj, which may have been freed at this point. This is safe
|
||||||
// if we are not currently running an incremental GC.
|
// if we are not currently running an incremental GC.
|
||||||
MOZ_ASSERT(!JS::IsIncrementalGCInProgress(xpc_GetSafeJSContext()));
|
MOZ_ASSERT(!JS::IsIncrementalGCInProgress(xpc_GetSafeJSContext()));
|
||||||
*mJSObj.unsafeGet() = nullptr;
|
mJSObj.unbarrieredSet(nullptr);
|
||||||
if (isInList()) {
|
if (isInList()) {
|
||||||
remove();
|
remove();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче