Title: [92092] trunk/Source/_javascript_Core
Revision
92092
Author
[email protected]
Date
2011-07-31 16:48:27 -0700 (Sun, 31 Jul 2011)

Log Message

JSC GC lays out size classes under wrong assumptions about expected
object size.
https://bugs.webkit.org/show_bug.cgi?id=65437

Reviewed by Oliver Hunt.

Changed the atom size - which is both the smallest allocation size and
the smallest possible stepping unit for size class spacing - from
8 bytes to 4 pointer-size words.  This is a 1% win on SunSpider.

* heap/MarkedBlock.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (92091 => 92092)


--- trunk/Source/_javascript_Core/ChangeLog	2011-07-31 23:17:24 UTC (rev 92091)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-07-31 23:48:27 UTC (rev 92092)
@@ -1,5 +1,19 @@
 2011-07-31  Filip Pizlo  <[email protected]>
 
+        JSC GC lays out size classes under wrong assumptions about expected
+        object size.
+        https://bugs.webkit.org/show_bug.cgi?id=65437
+
+        Reviewed by Oliver Hunt.
+        
+        Changed the atom size - which is both the smallest allocation size and
+        the smallest possible stepping unit for size class spacing - from
+        8 bytes to 4 pointer-size words.  This is a 1% win on SunSpider.
+
+        * heap/MarkedBlock.h:
+
+2011-07-31  Filip Pizlo  <[email protected]>
+
         DFG non-speculative JIT does not optimize PutByVal
         https://bugs.webkit.org/show_bug.cgi?id=65424
 

Modified: trunk/Source/_javascript_Core/heap/MarkedBlock.h (92091 => 92092)


--- trunk/Source/_javascript_Core/heap/MarkedBlock.h	2011-07-31 23:17:24 UTC (rev 92091)
+++ trunk/Source/_javascript_Core/heap/MarkedBlock.h	2011-07-31 23:48:27 UTC (rev 92092)
@@ -42,7 +42,9 @@
     class MarkedBlock : public DoublyLinkedListNode<MarkedBlock> {
         friend class WTF::DoublyLinkedListNode<MarkedBlock>;
     public:
-        static const size_t atomSize = sizeof(double); // Ensures natural alignment for all built-in types.
+        // Ensure natural alignment for native types whilst recognizing that the smallest
+        // object the heap will commonly allocate is four words.
+        static const size_t atomSize = 4 * sizeof(void*);
         static const size_t blockSize = 16 * KB;
 
         static const size_t atomsPerBlock = blockSize / atomSize; // ~1.5% overhead
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to