[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

barraclough at apple.com barraclough at apple.com
Wed Dec 22 13:49:57 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 5be406f581ec4976be1b2f9b84728b49ce8b69c8
Author: barraclough at apple.com <barraclough at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Sep 28 00:25:06 2010 +0000

    Bug 46680 - Inlining string concatenation can regress interpreter performance
    <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
    Do not inline calls to string concatenation in the interpret loop.
    
    Reviewed by Darin Adler.
    
    * interpreter/Interpreter.cpp:
    (JSC::concatenateStrings):
    (JSC::Interpreter::privateExecute):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68455 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 3382388..4c2e226 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,15 @@
+2010-09-27  Gavin Barraclough  <barraclough at apple.com>
+
+        Reviewed by Darin Adler.
+
+        Bug 46680 - Inlining string concatenation can regress interpreter performance
+        <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
+        Do not inline calls to string concatenation in the interpret loop.
+
+        * interpreter/Interpreter.cpp:
+        (JSC::concatenateStrings):
+        (JSC::Interpreter::privateExecute):
+
 2010-09-27  Anders Carlsson  <andersca at apple.com>
 
         Fix thinko.
diff --git a/JavaScriptCore/interpreter/Interpreter.cpp b/JavaScriptCore/interpreter/Interpreter.cpp
index f03fea2..5943ece 100644
--- a/JavaScriptCore/interpreter/Interpreter.cpp
+++ b/JavaScriptCore/interpreter/Interpreter.cpp
@@ -82,6 +82,11 @@ static int depth(CodeBlock* codeBlock, ScopeChain& sc)
 }
 
 #if ENABLE(INTERPRETER) 
+static NEVER_INLINE JSValue concatenateStrings(ExecState* exec, Register* strings, unsigned count)
+{
+    return jsString(exec, strings, count);
+}
+
 NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
 {
     int dst = vPC[1].u.operand;
@@ -4301,7 +4306,7 @@ skip_id_custom_self:
         int src = vPC[2].u.operand;
         int count = vPC[3].u.operand;
 
-        callFrame->r(dst) = jsString(callFrame, &callFrame->registers()[src], count);
+        callFrame->r(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count);
         CHECK_FOR_EXCEPTION();
         vPC += OPCODE_LENGTH(op_strcat);
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list