bug 687966 - eliminating held/unheld scripts in the debugger. r=jorendorff

This commit is contained in:
Igor Bukanov
2011-09-20 21:49:12 +02:00
parent e71a0ce0b0
commit bc9db0f9c5
13 changed files with 117 additions and 329 deletions

View File

@@ -291,14 +291,14 @@ class DefaultMarkPolicy<JSObject *, Value> {
};
template <>
class DefaultMarkPolicy<JSObject *, JSObject *> {
class DefaultMarkPolicy<gc::Cell *, JSObject *> {
protected:
JSTracer *tracer;
public:
DefaultMarkPolicy(JSTracer *t) : tracer(t) { }
bool keyMarked(JSObject *k) { return !IsAboutToBeFinalized(tracer->context, k); }
bool keyMarked(gc::Cell *k) { return !IsAboutToBeFinalized(tracer->context, k); }
bool valueMarked(JSObject *v) { return !IsAboutToBeFinalized(tracer->context, v); }
bool markEntryIfLive(JSObject *k, JSObject *v) {
bool markEntryIfLive(gc::Cell *k, JSObject *v) {
if (keyMarked(k) && !valueMarked(v)) {
js::gc::MarkObject(tracer, *v, "WeakMap entry value");
return true;
@@ -317,7 +317,7 @@ class DefaultMarkPolicy<JSObject *, JSObject *> {
// default mark policy. We give it a distinct name anyway, in case this ever
// changes.
//
typedef DefaultMarkPolicy<JSObject *, JSObject *> CrossCompartmentMarkPolicy;
typedef DefaultMarkPolicy<gc::Cell *, JSObject *> CrossCompartmentMarkPolicy;
}