Scope scope(o->engine());
- if (visitedObjects.contains(o)) {
+ if (visitedObjects.contains(o->d())) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty object (and no error is thrown).
return result;
}
- visitedObjects.insert(o);
+ visitedObjects.insert(o->d());
ObjectIterator it(scope, o, ObjectIterator::EnumerableOnly);
ScopedValue name(scope);
result.insert(key, toJsonValue(val, visitedObjects));
}
- visitedObjects.remove(o);
+ visitedObjects.remove(o->d());
return result;
}
Scope scope(a->engine());
- if (visitedObjects.contains(a)) {
+ if (visitedObjects.contains(a->d())) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty array (and no error is thrown).
return result;
}
- visitedObjects.insert(a);
+ visitedObjects.insert(a->d());
ScopedValue v(scope);
quint32 length = a->getLength();
result.append(toJsonValue(v, visitedObjects));
}
- visitedObjects.remove(a);
+ visitedObjects.remove(a->d());
return result;
}
Q_MANAGED_TYPE(JsonObject)
V4_OBJECT2(JsonObject, Object)
private:
- typedef QSet<QV4::Object *> V4ObjectSet;
+ // ### GC
+ typedef QSet<QV4::Heap::Base *> V4ObjectSet;
public:
static ReturnedValue method_parse(CallContext *ctx);
V8ObjectSet recursionGuardSet;
if (!visitedObjects) {
visitedObjects = &recursionGuardSet;
- } else if (visitedObjects->contains(o)) {
+ } else if (visitedObjects->contains(o->d())) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty object (and no error is thrown).
return QVariantList();
return QVariantMap();
}
- visitedObjects->insert(o);
+ visitedObjects->insert(o->d());
QVariant result;
result = map;
}
- visitedObjects->remove(o);
+ visitedObjects->remove(o->d());
return result;
}
class Q_QML_PRIVATE_EXPORT QV8Engine
{
friend class QJSEngine;
- typedef QSet<QV4::Object *> V8ObjectSet;
+ // ### GC
+ typedef QSet<QV4::Heap::Object *> V8ObjectSet;
public:
static QV8Engine* get(QJSEngine* q) { Q_ASSERT(q); return q->handle(); }
// static QJSEngine* get(QV8Engine* d) { Q_ASSERT(d); return d->q; }