diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index 8e943fa..108b8b4 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -175,12 +175,7 @@ void FunctionObject::markObjects(Managed *that, ExecutionEngine *e) FunctionObject *FunctionObject::createScriptFunction(ExecutionContext *scope, Function *function, bool createProto) { - if (function->needsActivation() || - function->compiledFunction->flags & CompiledData::Function::HasCatchOrWith || - function->compiledFunction->nFormals > QV4::Global::ReservedArgumentCount || - function->isNamedExpression()) - return new (scope->engine->memoryManager) ScriptFunction(scope, function); - return new (scope->engine->memoryManager) SimpleScriptFunction(scope, function, createProto); + return new (scope->engine->memoryManager) ScriptFunction(scope, function, createProto); } DEFINE_OBJECT_VTABLE(FunctionCtor); @@ -350,8 +345,8 @@ ReturnedValue FunctionPrototype::method_bind(CallContext *ctx) DEFINE_OBJECT_VTABLE(ScriptFunction); -ScriptFunction::ScriptFunction(ExecutionContext *scope, Function *function) - : SimpleScriptFunction(scope, function, true) +ScriptFunction::ScriptFunction(ExecutionContext *scope, Function *function, bool createProto) + : SimpleScriptFunction(scope, function, createProto) { setVTable(staticVTable()); diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 5b832d0..61b6837 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -220,7 +220,7 @@ struct SimpleScriptFunction: FunctionObject { struct ScriptFunction: SimpleScriptFunction { V4_OBJECT - ScriptFunction(ExecutionContext *scope, Function *function); + ScriptFunction(ExecutionContext *scope, Function *function, bool createProto = true); static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData);