2007-10-28 Eric Seidel <eric@webkit.org>
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Oct 2007 04:53:26 +0000 (04:53 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Oct 2007 04:53:26 +0000 (04:53 +0000)
        Reviewed by darin.

        Inline UString::Rep::deref() for a 0.8% improvement in SunSpider
        Add virtual keyword to a few virtual functions previously unmarked.

        * kjs/internal.h:
        (KJS::StringImp::type):
        (KJS::NumberImp::type):
        * kjs/ustring.h:
        (KJS::UString::Rep::deref):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27209 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/internal.h
JavaScriptCore/kjs/ustring.h

index f44e545..986f6fc 100644 (file)
@@ -1,3 +1,16 @@
+2007-10-28  Eric Seidel  <eric@webkit.org>
+
+        Reviewed by darin.
+        
+        Inline UString::Rep::deref() for a 0.8% improvement in SunSpider
+        Add virtual keyword to a few virtual functions previously unmarked.
+
+        * kjs/internal.h:
+        (KJS::StringImp::type):
+        (KJS::NumberImp::type):
+        * kjs/ustring.h:
+        (KJS::UString::Rep::deref):
+
 2007-10-28  Darin Adler  <darin@apple.com>
 
         - fix "broken everything" from the storage leak fix
index 6408924..7a01085 100644 (file)
@@ -51,14 +51,14 @@ namespace KJS {
     StringImp(const UString& value, HasOtherOwnerType) : val(value) { }
     UString value() const { return val; }
 
-    JSType type() const { return StringType; }
+    virtual JSType type() const { return StringType; }
 
-    JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
-    bool getPrimitiveNumber(ExecState*, double& number) const;
-    bool toBoolean(ExecState *exec) const;
-    double toNumber(ExecState *exec) const;
-    UString toString(ExecState *exec) const;
-    JSObject *toObject(ExecState *exec) const;
+    virtual JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
+    virtual bool getPrimitiveNumber(ExecState*, double& number) const;
+    virtual bool toBoolean(ExecState *exec) const;
+    virtual double toNumber(ExecState *exec) const;
+    virtual UString toString(ExecState *exec) const;
+    virtual JSObject *toObject(ExecState *exec) const;
 
   private:
     UString val;
@@ -70,14 +70,14 @@ namespace KJS {
   public:
     double value() const { return val; }
 
-    JSType type() const { return NumberType; }
+    virtual JSType type() const { return NumberType; }
 
-    JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
-    bool getPrimitiveNumber(ExecState*, double& number) const;
-    bool toBoolean(ExecState *exec) const;
-    double toNumber(ExecState *exec) const;
-    UString toString(ExecState *exec) const;
-    JSObject *toObject(ExecState *exec) const;
+    virtual JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
+    virtual bool getPrimitiveNumber(ExecState*, double& number) const;
+    virtual bool toBoolean(ExecState *exec) const;
+    virtual double toNumber(ExecState *exec) const;
+    virtual UString toString(ExecState *exec) const;
+    virtual JSObject *toObject(ExecState *exec) const;
     
     void* operator new(size_t size)
     {
index 82b5c65..3ac5fb7 100644 (file)
@@ -155,7 +155,7 @@ namespace KJS {
       static unsigned computeHash(const char *);
 
       Rep* ref() { ASSERT(JSLock::lockCount() > 0); ++rc; return this; }
-      void deref() { ASSERT(JSLock::lockCount() > 0); if (--rc == 0) destroy(); }
+      ALWAYS_INLINE void deref() { ASSERT(JSLock::lockCount() > 0); if (--rc == 0) destroy(); }
 
       // unshared data
       int offset;