зеркало из https://github.com/mozilla/gecko-dev.git
Bug 729367 - Add write barrier flag to shell worker class (r=jorendorff)
This commit is contained in:
Родитель
915a11f219
Коммит
a91e7f4570
|
@ -734,6 +734,12 @@ IsIncrementalGCEnabled(JSRuntime *rt)
|
||||||
return rt->gcIncrementalEnabled;
|
return rt->gcIncrementalEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern JS_FRIEND_API(void)
|
||||||
|
DisableIncrementalGC(JSRuntime *rt)
|
||||||
|
{
|
||||||
|
rt->gcIncrementalEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
JS_FRIEND_API(bool)
|
JS_FRIEND_API(bool)
|
||||||
IsIncrementalBarrierNeeded(JSRuntime *rt)
|
IsIncrementalBarrierNeeded(JSRuntime *rt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -751,6 +751,9 @@ NotifyDidPaint(JSContext *cx);
|
||||||
extern JS_FRIEND_API(bool)
|
extern JS_FRIEND_API(bool)
|
||||||
IsIncrementalGCEnabled(JSRuntime *rt);
|
IsIncrementalGCEnabled(JSRuntime *rt);
|
||||||
|
|
||||||
|
extern JS_FRIEND_API(void)
|
||||||
|
DisableIncrementalGC(JSRuntime *rt);
|
||||||
|
|
||||||
extern JS_FRIEND_API(bool)
|
extern JS_FRIEND_API(bool)
|
||||||
IsIncrementalBarrierNeeded(JSRuntime *rt);
|
IsIncrementalBarrierNeeded(JSRuntime *rt);
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "jsapi.h"
|
#include "jsapi.h"
|
||||||
#include "jscntxt.h"
|
#include "jscntxt.h"
|
||||||
#include "jsdbgapi.h"
|
#include "jsdbgapi.h"
|
||||||
|
#include "jsfriendapi.h"
|
||||||
#include "jslock.h"
|
#include "jslock.h"
|
||||||
#include "jsworkers.h"
|
#include "jsworkers.h"
|
||||||
|
|
||||||
|
@ -863,6 +864,13 @@ class Worker MOZ_FINAL : public WorkerParent
|
||||||
}
|
}
|
||||||
|
|
||||||
static JSBool jsConstruct(JSContext *cx, uintN argc, jsval *vp) {
|
static JSBool jsConstruct(JSContext *cx, uintN argc, jsval *vp) {
|
||||||
|
/*
|
||||||
|
* We pretend to implement write barriers on shell workers (by setting
|
||||||
|
* the JSCLASS_IMPLEMENTS_BARRIERS), but we don't. So we immediately
|
||||||
|
* disable incremental GC if shell workers are ever used.
|
||||||
|
*/
|
||||||
|
js::DisableIncrementalGC(JS_GetRuntime(cx));
|
||||||
|
|
||||||
WorkerParent *parent;
|
WorkerParent *parent;
|
||||||
if (!getWorkerParentFromConstructor(cx, JSVAL_TO_OBJECT(JS_CALLEE(cx, vp)), &parent))
|
if (!getWorkerParentFromConstructor(cx, JSVAL_TO_OBJECT(JS_CALLEE(cx, vp)), &parent))
|
||||||
return false;
|
return false;
|
||||||
|
@ -1267,14 +1275,14 @@ Event::trace(JSTracer *trc)
|
||||||
}
|
}
|
||||||
|
|
||||||
JSClass ThreadPool::jsClass = {
|
JSClass ThreadPool::jsClass = {
|
||||||
"ThreadPool", JSCLASS_HAS_PRIVATE,
|
"ThreadPool", JSCLASS_HAS_PRIVATE | JSCLASS_IMPLEMENTS_BARRIERS,
|
||||||
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
|
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
|
||||||
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, jsFinalize,
|
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, jsFinalize,
|
||||||
NULL, NULL, NULL, NULL, jsTraceThreadPool
|
NULL, NULL, NULL, NULL, jsTraceThreadPool
|
||||||
};
|
};
|
||||||
|
|
||||||
JSClass Worker::jsWorkerClass = {
|
JSClass Worker::jsWorkerClass = {
|
||||||
"Worker", JSCLASS_HAS_PRIVATE,
|
"Worker", JSCLASS_HAS_PRIVATE | JSCLASS_IMPLEMENTS_BARRIERS,
|
||||||
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
|
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
|
||||||
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, jsFinalize,
|
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, jsFinalize,
|
||||||
NULL, NULL, NULL, NULL, jsTraceWorker
|
NULL, NULL, NULL, NULL, jsTraceWorker
|
||||||
|
|
Загрузка…
Ссылка в новой задаче