Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jan 2010 00:02:40 +0000 (00:02 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jan 2010 00:02:40 +0000 (00:02 +0000)
rdar://problem/7553780

Patch by Evan Cheng <evan.cheng@apple.com> on 2010-01-18
Reviewed by Darin Adler.

* runtime/JSObject.h:
(JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
* runtime/JSString.h:
(JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
* runtime/UString.h:
(JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.

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

JavaScriptCore/ChangeLog
JavaScriptCore/runtime/JSObject.h
JavaScriptCore/runtime/JSString.h
JavaScriptCore/runtime/UString.h

index d273eb8..189f8cc 100644 (file)
@@ -1,3 +1,17 @@
+2010-01-18  Evan Cheng  <evan.cheng@apple.com>
+
+        Reviewed by Darin Adler.
+
+        Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
+        rdar://problem/7553780
+
+        * runtime/JSObject.h:
+        (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
+        * runtime/JSString.h:
+        (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
+        * runtime/UString.h:
+        (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.
+
 2010-01-18  Csaba Osztrogon├íc  <ossy@webkit.org>
 
         Reviewed by Darin Adler.
index d931a4a..d05b377 100644 (file)
@@ -381,7 +381,7 @@ ALWAYS_INLINE bool JSCell::fastGetOwnPropertySlot(ExecState* exec, const Identif
 
 // It may seem crazy to inline a function this large but it makes a big difference
 // since this is function very hot in variable lookup
-inline bool JSObject::getPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
+ALWAYS_INLINE bool JSObject::getPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
 {
     JSObject* object = this;
     while (true) {
@@ -394,7 +394,7 @@ inline bool JSObject::getPropertySlot(ExecState* exec, const Identifier& propert
     }
 }
 
-inline bool JSObject::getPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot)
+ALWAYS_INLINE bool JSObject::getPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot)
 {
     JSObject* object = this;
     while (true) {
index 3fd43a8..1ebabe8 100644 (file)
@@ -165,7 +165,7 @@ namespace JSC {
             Fiber m_fibers[1];
         };
 
-        JSString(JSGlobalData* globalData, const UString& value)
+        ALWAYS_INLINE JSString(JSGlobalData* globalData, const UString& value)
             : JSCell(globalData->stringStructure.get())
             , m_stringLength(value.size())
             , m_value(value)
index 59e296f..0c13689 100644 (file)
@@ -206,7 +206,7 @@ namespace JSC {
         friend bool operator==(const UString&, const UString&);
     };
 
-    inline bool operator==(const UString& s1, const UString& s2)
+    ALWAYS_INLINE bool operator==(const UString& s1, const UString& s2)
     {
         int size = s1.size();
         switch (size) {