return construct(internalClass->engine->current, 0, 0);
}
-bool FunctionObject::hasInstance(Managed *that, ExecutionContext *ctx, const Value &value)
+bool FunctionObject::hasInstance(Managed *that, const Value &value)
{
FunctionObject *f = static_cast<FunctionObject *>(that);
if (!v)
return false;
+ ExecutionContext *ctx = f->engine()->current;
Object *o = f->get(ctx, ctx->engine->id_prototype).asObject();
if (!o)
ctx->throwTypeError();
return f->target->construct(context, newArgs, f->boundArgs.size() + argc);
}
-bool BoundFunction::hasInstance(Managed *that, ExecutionContext *ctx, const Value &value)
+bool BoundFunction::hasInstance(Managed *that, const Value &value)
{
BoundFunction *f = static_cast<BoundFunction *>(that);
- return FunctionObject::hasInstance(f->target, ctx, value);
+ return FunctionObject::hasInstance(f->target, value);
}
void BoundFunction::markObjects(Managed *that)
protected:
static const ManagedVTable static_vtbl;
static void markObjects(Managed *that);
- static bool hasInstance(Managed *that, ExecutionContext *ctx, const Value &value);
+ static bool hasInstance(Managed *that, const Value &value);
};
struct FunctionCtor: FunctionObject
static const ManagedVTable static_vtbl;
static void destroy(Managed *);
static void markObjects(Managed *that);
- static bool hasInstance(Managed *that, ExecutionContext *ctx, const Value &value);
+ static bool hasInstance(Managed *that, const Value &value);
};
}
return QString::fromLatin1(s);
}
-bool Managed::hasInstance(Managed *, ExecutionContext *ctx, const Value &)
+bool Managed::hasInstance(Managed *m, const Value &)
{
- ctx->throwTypeError();
+ m->engine()->current->throwTypeError();
}
Value Managed::construct(Managed *, ExecutionContext *context, Value *, int)
void (*markObjects)(Managed *);
void (*destroy)(Managed *);
void (*collectDeletables)(Managed *, GCDeletable **deletable);
- bool (*hasInstance)(Managed *, ExecutionContext *ctx, const Value &value);
+ bool (*hasInstance)(Managed *, const Value &value);
Value (*get)(Managed *, ExecutionContext *ctx, String *name, bool *hasProperty);
Value (*getIndexed)(Managed *, ExecutionContext *ctx, uint index, bool *hasProperty);
void (*put)(Managed *, ExecutionContext *ctx, String *name, const Value &value);
*reinterpret_cast<Managed **>(this) = m;
}
- inline bool hasInstance(ExecutionContext *ctx, const Value &v) {
- return vtbl->hasInstance(this, ctx, v);
+ inline bool hasInstance(const Value &v) {
+ return vtbl->hasInstance(this, v);
}
Value construct(ExecutionContext *context, Value *args, int argc);
Value call(ExecutionContext *context, const Value &thisObject, Value *args, int argc);
{ return vtbl->advanceIterator(this, it, name, index, attributes); }
static void destroy(Managed *that) { that->_data = 0; }
- static bool hasInstance(Managed *that, ExecutionContext *ctx, const Value &value);
+ static bool hasInstance(Managed *that, const Value &value);
static Value construct(Managed *, ExecutionContext *context, Value *, int);
static Value call(Managed *, ExecutionContext *, const Value &, Value *, int);
static void getLookup(Managed *, ExecutionContext *context, Lookup *, Value *);