mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backout 9dfd86b06459c257390c2514380a09456b008e33 (Bug 1235923) for build bustage on a CLOSED TREE.
This commit is contained in:
parent
de707c4051
commit
1d65791490
@ -304,18 +304,33 @@ template <typename T>
|
||||
extern JS_PUBLIC_API(void)
|
||||
TraceNullableEdge(JSTracer* trc, JS::Heap<T>* edgep, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
TraceNullableEdge(JSTracer* trc, JS::TenuredHeap<JSObject*>* edgep, const char* name);
|
||||
|
||||
// Edges that are always traced as part of root marking do not require
|
||||
// incremental barriers. This function allows for marking non-barriered
|
||||
// pointers, but asserts that this happens during root marking.
|
||||
template <typename T>
|
||||
extern JS_PUBLIC_API(void)
|
||||
UnsafeTraceRoot(JSTracer* trc, T* edgep, const char* name);
|
||||
|
||||
} // namespace JS
|
||||
|
||||
// The following JS_CallUnbarriered*Tracer functions should only be called where
|
||||
// you know for sure that a heap post barrier is not required. Use with extreme
|
||||
// caution!
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredValueTracer(JSTracer* trc, JS::Value* valuep, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredIdTracer(JSTracer* trc, jsid* idp, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredObjectTracer(JSTracer* trc, JSObject** objp, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredStringTracer(JSTracer* trc, JSString** strp, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredScriptTracer(JSTracer* trc, JSScript** scriptp, const char* name);
|
||||
|
||||
/**
|
||||
* Trace an object that is known to always be tenured. No post barriers are
|
||||
* required in this case.
|
||||
*/
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_CallTenuredObjectTracer(JSTracer* trc, JS::TenuredHeap<JSObject*>* objp, const char* name);
|
||||
|
||||
extern JS_PUBLIC_API(void)
|
||||
JS_TraceRuntime(JSTracer* trc);
|
||||
|
||||
@ -338,10 +353,6 @@ JS_GetTraceThingInfo(char* buf, size_t bufsize, JSTracer* trc,
|
||||
void* thing, JS::TraceKind kind, bool includeDetails);
|
||||
|
||||
namespace js {
|
||||
template <typename T>
|
||||
extern JS_PUBLIC_API(void)
|
||||
UnsafeTraceManuallyBarrieredEdge(JSTracer* trc, T* edgep, const char* name);
|
||||
|
||||
namespace gc {
|
||||
template <typename T>
|
||||
extern JS_PUBLIC_API(bool)
|
||||
@ -385,8 +396,8 @@ struct DefaultGCPolicy : public StructGCPolicy<T> {};
|
||||
template <>
|
||||
struct DefaultGCPolicy<jsid>
|
||||
{
|
||||
static void trace(JSTracer* trc, jsid* idp, const char* name) {
|
||||
js::UnsafeTraceManuallyBarrieredEdge(trc, idp, name);
|
||||
static void trace(JSTracer* trc, jsid* id, const char* name) {
|
||||
JS_CallUnbarrieredIdTracer(trc, id, name);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -5508,7 +5508,7 @@ PostBarrierCallback(JSTracer* trc, JSString* key, void* data)
|
||||
|
||||
UnbarrieredFieldInfoHash* table = reinterpret_cast<UnbarrieredFieldInfoHash*>(data);
|
||||
JSString* prior = key;
|
||||
js::UnsafeTraceManuallyBarrieredEdge(trc, &key, "CType fieldName");
|
||||
JS_CallUnbarrieredStringTracer(trc, &key, "CType fieldName");
|
||||
table->rekeyIfMoved(JS_ASSERT_STRING_IS_FLAT(prior), JS_ASSERT_STRING_IS_FLAT(key));
|
||||
}
|
||||
|
||||
|
@ -414,16 +414,6 @@ JS::TraceNullableEdge(JSTracer* trc, JS::Heap<T>* thingp, const char* name)
|
||||
DispatchToTracer(trc, ConvertToBase(thingp->unsafeGet()), name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS::TraceNullableEdge(JSTracer* trc, JS::TenuredHeap<JSObject*>* thingp, const char* name)
|
||||
{
|
||||
MOZ_ASSERT(thingp);
|
||||
if (JSObject* ptr = thingp->getPtr()) {
|
||||
DispatchToTracer(trc, &ptr, name);
|
||||
thingp->setPtr(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
js::TraceManuallyBarrieredEdge(JSTracer* trc, T* thingp, const char* name)
|
||||
@ -431,13 +421,6 @@ js::TraceManuallyBarrieredEdge(JSTracer* trc, T* thingp, const char* name)
|
||||
DispatchToTracer(trc, ConvertToBase(thingp), name);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
JS_PUBLIC_API(void)
|
||||
js::UnsafeTraceManuallyBarrieredEdge(JSTracer* trc, T* thingp, const char* name)
|
||||
{
|
||||
DispatchToTracer(trc, ConvertToBase(thingp), name);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
js::TraceWeakEdge(JSTracer* trc, WeakRef<T>* thingp, const char* name)
|
||||
@ -458,13 +441,6 @@ js::TraceRoot(JSTracer* trc, T* thingp, const char* name)
|
||||
DispatchToTracer(trc, ConvertToBase(thingp), name);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
JS_PUBLIC_API(void)
|
||||
JS::UnsafeTraceRoot(JSTracer* trc, T* thingp, const char* name)
|
||||
{
|
||||
js::TraceRoot(trc, thingp, name);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
js::TraceRoot(JSTracer* trc, ReadBarriered<T>* thingp, const char* name)
|
||||
@ -530,10 +506,7 @@ FOR_EACH_GC_POINTER_TYPE(INSTANTIATE_ALL_VALID_TRACE_FUNCTIONS)
|
||||
#define INSTANTIATE_PUBLIC_TRACE_FUNCTIONS(type) \
|
||||
template JS_PUBLIC_API(void) JS::TraceEdge<type>(JSTracer*, JS::Heap<type>*, const char*); \
|
||||
template JS_PUBLIC_API(void) JS::TraceNullableEdge<type>(JSTracer*, JS::Heap<type>*, \
|
||||
const char*); \
|
||||
template JS_PUBLIC_API(void) JS::UnsafeTraceRoot<type>(JSTracer*, type*, const char*); \
|
||||
template JS_PUBLIC_API(void) js::UnsafeTraceManuallyBarrieredEdge<type>(JSTracer*, type*, \
|
||||
const char*);
|
||||
const char*);
|
||||
FOR_EACH_PUBLIC_GC_POINTER_TYPE(INSTANTIATE_PUBLIC_TRACE_FUNCTIONS)
|
||||
#undef INSTANTIATE_PUBLIC_TRACE_FUNCTIONS
|
||||
|
||||
|
@ -105,6 +105,48 @@ JS::CallbackTracer::getTracingEdgeName(char* buffer, size_t bufferSize)
|
||||
|
||||
/*** Public Tracing API **************************************************************************/
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredValueTracer(JSTracer* trc, Value* valuep, const char* name)
|
||||
{
|
||||
TraceManuallyBarrieredEdge(trc, valuep, name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredIdTracer(JSTracer* trc, jsid* idp, const char* name)
|
||||
{
|
||||
TraceManuallyBarrieredEdge(trc, idp, name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredObjectTracer(JSTracer* trc, JSObject** objp, const char* name)
|
||||
{
|
||||
TraceManuallyBarrieredEdge(trc, objp, name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredStringTracer(JSTracer* trc, JSString** strp, const char* name)
|
||||
{
|
||||
TraceManuallyBarrieredEdge(trc, strp, name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallUnbarrieredScriptTracer(JSTracer* trc, JSScript** scriptp, const char* name)
|
||||
{
|
||||
TraceManuallyBarrieredEdge(trc, scriptp, name);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS_CallTenuredObjectTracer(JSTracer* trc, JS::TenuredHeap<JSObject*>* objp, const char* name)
|
||||
{
|
||||
JSObject* obj = objp->getPtr();
|
||||
if (!obj)
|
||||
return;
|
||||
|
||||
TraceManuallyBarrieredEdge(trc, &obj, name);
|
||||
|
||||
objp->setPtr(obj);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(void)
|
||||
JS::TraceChildren(JSTracer* trc, GCCellPtr thing)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user