diff --git a/content/xul/content/src/nsXULElement.h b/content/xul/content/src/nsXULElement.h index 50111f2f2fdf..8898b29322f0 100644 --- a/content/xul/content/src/nsXULElement.h +++ b/content/xul/content/src/nsXULElement.h @@ -243,13 +243,13 @@ public: // &mScriptObject pointer can't go stale. JS::Handle GetScriptObject() { - return JS::Handle::fromMarkedLocation(&mScriptObject); + return JS::Handle(mScriptObject); } void TraceScriptObject(JSTracer* aTrc) { if (mScriptObject) { - JS_CallScriptTracer(aTrc, &mScriptObject, "active window XUL prototype script"); + JS_CallHeapScriptTracer(aTrc, &mScriptObject, "active window XUL prototype script"); } } @@ -267,7 +267,7 @@ public: mozilla::dom::XULDocument* mSrcLoadWaiters; // [OWNER] but not COMPtr uint32_t mLangVersion; private: - JSScript* mScriptObject; + JS::Heap mScriptObject; }; class nsXULPrototypeText : public nsXULPrototypeNode diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.cpp index 5f565d78ebf5..6d76052ad5f6 100644 --- a/js/xpconnect/src/XPCJSRuntime.cpp +++ b/js/xpconnect/src/XPCJSRuntime.cpp @@ -515,8 +515,8 @@ struct JsGcTracer : public TraceCallbacks virtual void Trace(JSString **p, const char *name, void *closure) const MOZ_OVERRIDE { JS_CallStringTracer(static_cast(closure), p, name); } - virtual void Trace(JSScript **p, const char *name, void *closure) const MOZ_OVERRIDE { - JS_CallScriptTracer(static_cast(closure), p, name); + virtual void Trace(JS::Heap *p, const char *name, void *closure) const MOZ_OVERRIDE { + JS_CallHeapScriptTracer(static_cast(closure), p, name); } }; diff --git a/xpcom/glue/nsCycleCollectionParticipant.cpp b/xpcom/glue/nsCycleCollectionParticipant.cpp index 7577c101f740..03ab4c1a72f3 100644 --- a/xpcom/glue/nsCycleCollectionParticipant.cpp +++ b/xpcom/glue/nsCycleCollectionParticipant.cpp @@ -96,7 +96,7 @@ TraceCallbackFunc::Trace(JSString** p, const char* name, void* closure) const } void -TraceCallbackFunc::Trace(JSScript** p, const char* name, void* closure) const +TraceCallbackFunc::Trace(JS::Heap* p, const char* name, void* closure) const { - mCallback(*p, name, closure); + mCallback(p->get(), name, closure); } diff --git a/xpcom/glue/nsCycleCollectionParticipant.h b/xpcom/glue/nsCycleCollectionParticipant.h index f02f572da7cd..ee86521e10e8 100644 --- a/xpcom/glue/nsCycleCollectionParticipant.h +++ b/xpcom/glue/nsCycleCollectionParticipant.h @@ -51,6 +51,10 @@ class nsCycleCollectionParticipant; class nsScriptObjectTracer; class nsXPCOMCycleCollectionParticipant; +namespace JS { +template class Heap; +} /* namespace JS */ + /* * A struct defining pure virtual methods which are called when tracing cycle * collection paticipants. The appropriate method is called depending on the @@ -62,7 +66,7 @@ struct TraceCallbacks virtual void Trace(jsid* p, const char* name, void* closure) const = 0; virtual void Trace(JSObject** p, const char* name, void* closure) const = 0; virtual void Trace(JSString** p, const char* name, void* closure) const = 0; - virtual void Trace(JSScript** p, const char* name, void* closure) const = 0; + virtual void Trace(JS::Heap* p, const char* name, void* closure) const = 0; void Trace(JSFlatString** p, const char* name, void* closure) const { Trace(reinterpret_cast(p), name, closure); @@ -83,7 +87,7 @@ struct TraceCallbackFunc : public TraceCallbacks virtual void Trace(jsid* p, const char* name, void* closure) const MOZ_OVERRIDE; virtual void Trace(JSObject** p, const char* name, void* closure) const MOZ_OVERRIDE; virtual void Trace(JSString** p, const char* name, void* closure) const MOZ_OVERRIDE; - virtual void Trace(JSScript** p, const char* name, void* closure) const MOZ_OVERRIDE; + virtual void Trace(JS::Heap* p, const char* name, void* closure) const MOZ_OVERRIDE; private: Func mCallback;