Shrink-wrap UnlinkedCodeBlock members.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 10 Feb 2013 06:41:34 +0000 (06:41 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 10 Feb 2013 06:41:34 +0000 (06:41 +0000)
<http://webkit.org/b/109368>

Reviewed by Oliver Hunt.

Rearrange the members of UnlinkedCodeBlock to avoid unnecessary padding on 64-bit.
Knocks ~600 KB off of the Membuster3 peak.

* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
* bytecode/UnlinkedCodeBlock.h:
(UnlinkedCodeBlock):

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp
Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h

index ea4c31829d454f84e2e55dd320560462637d2769..8228fb88fe421ad6e33669a03d1a479211f49fc4 100644 (file)
@@ -1,3 +1,18 @@
+2013-02-09  Andreas Kling  <akling@apple.com>
+
+        Shrink-wrap UnlinkedCodeBlock members.
+        <http://webkit.org/b/109368>
+
+        Reviewed by Oliver Hunt.
+
+        Rearrange the members of UnlinkedCodeBlock to avoid unnecessary padding on 64-bit.
+        Knocks ~600 KB off of the Membuster3 peak.
+
+        * bytecode/UnlinkedCodeBlock.cpp:
+        (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
+        * bytecode/UnlinkedCodeBlock.h:
+        (UnlinkedCodeBlock):
+
 2013-02-08  Filip Pizlo  <fpizlo@apple.com>
 
         DFG should allow phases to break Phi's and then have one phase to rebuild them
index 8462b9a30da84ae40d609f6de68600bd9ec5fa43..a3a4dd32e2d80583395fadc4f3c7845b68886bcb 100644 (file)
@@ -160,7 +160,6 @@ UnlinkedCodeBlock::UnlinkedCodeBlock(JSGlobalData* globalData, Structure* struct
     , m_numVars(0)
     , m_numCalleeRegisters(0)
     , m_numParameters(0)
-    , m_globalData(globalData)
     , m_argumentsRegister(-1)
     , m_needsFullScopeChain(info.m_needsActivation)
     , m_usesEval(info.m_usesEval)
@@ -168,10 +167,10 @@ UnlinkedCodeBlock::UnlinkedCodeBlock(JSGlobalData* globalData, Structure* struct
     , m_isStrictMode(info.m_isStrictMode)
     , m_isConstructor(info.m_isConstructor)
     , m_hasCapturedVariables(false)
+    , m_codeType(codeType)
+    , m_features(0)
     , m_firstLine(0)
     , m_lineCount(0)
-    , m_features(0)
-    , m_codeType(codeType)
     , m_resolveOperationCount(0)
     , m_putToBaseOperationCount(1)
     , m_arrayProfileCount(0)
@@ -179,6 +178,7 @@ UnlinkedCodeBlock::UnlinkedCodeBlock(JSGlobalData* globalData, Structure* struct
     , m_objectAllocationProfileCount(0)
     , m_valueProfileCount(0)
     , m_llintCallLinkInfoCount(0)
+    , m_globalData(globalData)
 #if ENABLE(BYTECODE_COMMENTS)
     , m_bytecodeCommentIterator(0)
 #endif
index 3ca27ae9a700eb946002c9b0db496ec81770af3a..dad9fd5bd602b48bffffd5b886d28468d3ad9a75 100644 (file)
@@ -486,8 +486,6 @@ private:
     RefCountedArray<UnlinkedInstruction> m_unlinkedInstructions;
 
     int m_numParameters;
-    JSGlobalData* m_globalData;
-
     int m_thisRegister;
     int m_argumentsRegister;
     int m_activationRegister;
@@ -498,11 +496,21 @@ private:
     bool m_isStrictMode : 1;
     bool m_isConstructor : 1;
     bool m_hasCapturedVariables : 1;
+    CodeType m_codeType : 2;
+    CodeFeatures m_features : 16;
+
     unsigned m_firstLine;
     unsigned m_lineCount;
 
-    CodeFeatures m_features;
-    CodeType m_codeType;
+    unsigned m_resolveOperationCount;
+    unsigned m_putToBaseOperationCount;
+    unsigned m_arrayProfileCount;
+    unsigned m_arrayAllocationProfileCount;
+    unsigned m_objectAllocationProfileCount;
+    unsigned m_valueProfileCount;
+    unsigned m_llintCallLinkInfoCount;
+
+    JSGlobalData* m_globalData;
 
     Vector<unsigned> m_jumpTargets;
 
@@ -524,14 +532,6 @@ private:
     size_t m_bytecodeCommentIterator;
 #endif
 
-    unsigned m_resolveOperationCount;
-    unsigned m_putToBaseOperationCount;
-    unsigned m_arrayProfileCount;
-    unsigned m_arrayAllocationProfileCount;
-    unsigned m_objectAllocationProfileCount;
-    unsigned m_valueProfileCount;
-    unsigned m_llintCallLinkInfoCount;
-
 public:
     struct RareData {
         WTF_MAKE_FAST_ALLOCATED;