Remove another virtual and de-inline a call method
authorLars Knoll <lars.knoll@digia.com>
Thu, 14 Feb 2013 10:53:23 +0000 (11:53 +0100)
committerSimon Hausmann <simon.hausmann@digia.com>
Thu, 14 Feb 2013 13:51:15 +0000 (14:51 +0100)
Change-Id: Ia7cc0bf9f4024a65020fef75666ae13d3691bc54
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/v4/debugging.cpp
src/v4/qv4functionobject.cpp
src/v4/qv4functionobject.h

index 61ae0e6..80afe01 100644 (file)
@@ -114,8 +114,8 @@ FunctionDebugInfo *Debugger::debugInfo(VM::FunctionObject *function) const
     if (!function)
         return 0;
 
-    if (VM::ScriptFunction *sf = function->asScriptFunction())
-        return _functionInfo[irFunction(sf->function)];
+    if (function->function)
+        return _functionInfo[irFunction(function->function)];
     else
         return 0;
 }
index 2476d5c..991695c 100644 (file)
@@ -462,6 +462,11 @@ BuiltinFunction::BuiltinFunction(ExecutionContext *scope, String *name, Value (*
     isBuiltinFunction = true;
 }
 
+Value BuiltinFunction::call(ExecutionContext *context, Value thisObject, Value *args, int argc)
+{
+    return code(context, thisObject, args, argc);
+}
+
 Value BuiltinFunction::construct(ExecutionContext *ctx, Value *, int)
 {
     ctx->throwTypeError();
index ae8bd53..9d55944 100644 (file)
@@ -159,8 +159,6 @@ struct Q_V4_EXPORT FunctionObject: Object {
     virtual Value construct(ExecutionContext *context, Value *args, int argc);
     virtual Value call(ExecutionContext *, Value, Value *, int);
 
-    virtual struct ScriptFunction *asScriptFunction() { return 0; }
-
 protected:
     static const ManagedVTable static_vtbl;
     static void markObjects(Managed *that);
@@ -198,9 +196,7 @@ struct BuiltinFunction: FunctionObject {
     Value (*code)(ExecutionContext *parentContext, Value thisObject, Value *args, int argc);
 
     BuiltinFunction(ExecutionContext *scope, String *name, Value (*code)(ExecutionContext *, Value, Value *, int));
-    virtual Value call(ExecutionContext *context, Value thisObject, Value *args, int argc) {
-        return code(context, thisObject, args, argc);
-    }
+    virtual Value call(ExecutionContext *context, Value thisObject, Value *args, int argc);
     virtual Value construct(ExecutionContext *ctx, Value *, int);
 };
 
@@ -210,8 +206,6 @@ struct ScriptFunction: FunctionObject {
 
     virtual Value call(ExecutionContext *context, Value thisObject, Value *args, int argc);
     virtual Value construct(ExecutionContext *context, Value *args, int argc);
-
-    virtual ScriptFunction *asScriptFunction() { return this; }
 };
 
 struct BoundFunction: FunctionObject {