Bug 120567 - CodeBlock::jettison() should be implicit
Summary: CodeBlock::jettison() should be implicit
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 120568
Blocks: 120608 112838 120615
  Show dependency treegraph
 
Reported: 2013-08-31 17:45 PDT by Filip Pizlo
Modified: 2013-09-03 09:38 PDT (History)
13 users (show)

See Also:


Attachments
the patch (55.50 KB, patch)
2013-09-01 20:48 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (55.52 KB, patch)
2013-09-01 20:49 PDT, Filip Pizlo
eflews.bot: commit-queue-
Details | Formatted Diff | Diff
the patch (56.28 KB, patch)
2013-09-01 21:35 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (58.86 KB, patch)
2013-09-02 11:44 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (56.56 KB, patch)
2013-09-02 21:52 PDT, Filip Pizlo
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2013-08-31 17:45:09 PDT
Right now if we remove all references to a CodeBlock but that CodeBlock might still be used for execution, we have to explicitly hand the CodeBlock over to the GC.  The whole mechanism is oddly similar to DeferredRefCounted except it requires more work.  This implies that we should just use DeferredRefCounted for CodeBlocks and make all CodeBlocks be part of the GC's CodeBlock sweep.  This also implies making DeferedRefCounted be thread-safe.
Comment 1 Filip Pizlo 2013-09-01 20:48:50 PDT
Created attachment 210258 [details]
the patch
Comment 2 Filip Pizlo 2013-09-01 20:49:33 PDT
Created attachment 210259 [details]
the patch

Fix build.
Comment 3 WebKit Commit Bot 2013-09-01 20:51:40 PDT
Attachment 210259 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1
Source/JavaScriptCore/interpreter/JSStack.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 EFL EWS Bot 2013-09-01 20:56:08 PDT
Comment on attachment 210259 [details]
the patch

Attachment 210259 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1641887
Comment 5 EFL EWS Bot 2013-09-01 21:06:52 PDT
Comment on attachment 210259 [details]
the patch

Attachment 210259 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1658851
Comment 6 Filip Pizlo 2013-09-01 21:35:25 PDT
Created attachment 210260 [details]
the patch

Fix EFL build.
Comment 7 WebKit Commit Bot 2013-09-01 21:37:43 PDT
Attachment 210260 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1
Source/JavaScriptCore/interpreter/JSStack.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 8 Filip Pizlo 2013-09-01 21:53:36 PDT
Results in jsc:


Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r154943)
"ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (r154943)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                                                       TipOfTree              ImplicitJettison                                 
SunSpider:
   3d-cube                                                           6.7310+-0.0986            6.6723+-0.0609        
   3d-morph                                                          8.3512+-0.1268     ?      8.3860+-0.1708        ?
   3d-raytrace                                                       8.7827+-0.2134     ?      8.8293+-0.1767        ?
   access-binary-trees                                               1.8848+-0.0197            1.8752+-0.0093        
   access-fannkuch                                                   7.8991+-0.3265     ?      8.0363+-0.3866        ? might be 1.0174x slower
   access-nbody                                                      4.1599+-0.0144            4.1446+-0.0084        
   access-nsieve                                                     4.9290+-0.0539            4.8982+-0.0756        
   bitops-3bit-bits-in-byte                                          1.8296+-0.0088            1.8221+-0.0076        
   bitops-bits-in-byte                                               6.8539+-0.1442            6.8351+-0.1301        
   bitops-bitwise-and                                                2.8457+-0.0510     ?      2.8775+-0.0356        ? might be 1.0112x slower
   bitops-nsieve-bits                                                4.6632+-0.0395     ?      4.6639+-0.0103        ?
   controlflow-recursive                                             3.0170+-0.0080            3.0155+-0.0061        
   crypto-aes                                                        5.3215+-0.0477            5.2861+-0.0299        
   crypto-md5                                                        3.0448+-0.0206            3.0303+-0.0184        
   crypto-sha1                                                       2.8527+-0.0205     ?      2.8690+-0.0220        ?
   date-format-tofte                                                10.8797+-0.1054     !     11.2786+-0.1268        ! definitely 1.0367x slower
   date-format-xparb                                                 7.7909+-0.1254            7.7095+-0.1000          might be 1.0106x faster
   math-cordic                                                       3.9899+-0.0127     ?      3.9983+-0.0134        ?
   math-partial-sums                                                10.5781+-0.0905           10.5621+-0.1003        
   math-spectral-norm                                                2.8068+-0.0101     ?      2.8101+-0.0166        ?
   regexp-dna                                                       12.6640+-0.1864     ?     12.8699+-0.1285        ? might be 1.0163x slower
   string-base64                                                     5.3085+-0.0999     ?      5.3469+-0.0675        ?
   string-fasta                                                     10.9478+-0.1364     ?     11.1298+-0.1813        ? might be 1.0166x slower
   string-tagcloud                                                  14.3454+-0.1577     ?     14.4694+-0.2088        ?
   string-unpack-code                                               29.0113+-0.1417     ?     29.1129+-0.1415        ?
   string-validate-input                                             6.4946+-0.0691     ?      6.5582+-0.1419        ?

   <arithmetic> *                                                    7.2301+-0.0384     ?      7.2726+-0.0349        ? might be 1.0059x slower
   <geometric>                                                       5.7963+-0.0272     ?      5.8162+-0.0203        ? might be 1.0034x slower
   <harmonic>                                                        4.7449+-0.0183     ?      4.7504+-0.0093        ? might be 1.0012x slower

                                                                       TipOfTree              ImplicitJettison                                 
V8Spider:
   crypto                                                           80.6117+-0.2111     ?     80.9390+-0.7061        ?
   deltablue                                                       103.6331+-1.8900          101.6928+-0.5743          might be 1.0191x faster
   earley-boyer                                                     69.8948+-0.4027           69.8701+-0.3126        
   raytrace                                                         40.2879+-0.2596           39.9462+-0.1811        
   regexp                                                          101.2585+-0.5719     ?    101.7424+-0.5902        ?
   richards                                                        115.4621+-1.0821          113.8552+-1.2683          might be 1.0141x faster
   splay                                                            46.9685+-0.4845           46.7887+-0.4084        

   <arithmetic>                                                     79.7310+-0.3569           79.2621+-0.2851          might be 1.0059x faster
   <geometric> *                                                    74.6434+-0.3109           74.2545+-0.2353          might be 1.0052x faster
   <harmonic>                                                       69.2898+-0.2870           68.9463+-0.2148          might be 1.0050x faster

                                                                       TipOfTree              ImplicitJettison                                 
Octane and V8v7:
   encrypt                                                          0.46836+-0.00069          0.46832+-0.00097       
   decrypt                                                          8.62853+-0.01952          8.62709+-0.01220       
   deltablue                                               x2       0.58524+-0.00292          0.58435+-0.00254       
   earley                                                           0.87246+-0.00748    ?     0.87249+-0.00666       ?
   boyer                                                           12.44541+-0.07217         12.37393+-0.01378       
   raytrace                                                x2       4.37338+-0.02968    ^     4.29304+-0.03128       ^ definitely 1.0187x faster
   regexp                                                  x2      32.60061+-0.30234    ?    33.16659+-0.99629       ? might be 1.0174x slower
   richards                                                x2       0.31569+-0.00252          0.31496+-0.00129       
   splay                                                   x2       0.63522+-0.01816          0.63052+-0.01972       
   navier-stokes                                           x2      10.84605+-0.00634         10.82979+-0.01647       
   closure                                                          0.43911+-0.04874    ?     0.44005+-0.04764       ?
   jquery                                                           5.35372+-0.71731    ?     5.41851+-0.71117       ? might be 1.0121x slower
   gbemu                                                   x2      82.90794+-0.99159         82.03408+-1.15077         might be 1.0107x faster
   box2d                                                   x2      32.11462+-0.11916    ?    32.36345+-0.31430       ?

V8v7:
   <arithmetic>                                                     7.57045+-0.03930    ?     7.62377+-0.12420       ? might be 1.0070x slower
   <geometric> *                                                    2.42628+-0.01133          2.42083+-0.01324         might be 1.0023x faster
   <harmonic>                                                       0.93635+-0.00513          0.93350+-0.00493         might be 1.0031x faster

Octane including V8v7:
   <arithmetic>                                                    16.22569+-0.09973         16.21063+-0.12430         might be 1.0009x faster
   <geometric> *                                                    4.05140+-0.04127          4.04646+-0.03842         might be 1.0012x faster
   <harmonic>                                                       1.11688+-0.01455          1.11447+-0.01338         might be 1.0022x faster

                                                                       TipOfTree              ImplicitJettison                                 
Kraken:
   ai-astar                                                         492.472+-0.529      ?     495.053+-4.550         ?
   audio-beat-detection                                             241.612+-1.172            241.559+-0.240         
   audio-dft                                                        306.775+-1.087      ?     308.436+-1.934         ?
   audio-fft                                                        146.032+-2.199            144.419+-0.184           might be 1.0112x faster
   audio-oscillator                                                 252.219+-4.068            252.204+-4.258         
   imaging-darkroom                                                 279.713+-1.992            279.285+-2.042         
   imaging-desaturate                                               158.572+-0.110      ^     158.273+-0.102         ^ definitely 1.0019x faster
   imaging-gaussian-blur                                            403.085+-0.161            403.054+-0.414         
   json-parse-financial                                              81.039+-0.529      !      81.811+-0.131         ! definitely 1.0095x slower
   json-stringify-tinderbox                                         111.230+-2.844      ^     104.804+-0.297         ^ definitely 1.0613x faster
   stanford-crypto-aes                                               93.672+-0.812             93.233+-0.522         
   stanford-crypto-ccm                                              101.273+-2.224             99.245+-2.086           might be 1.0204x faster
   stanford-crypto-pbkdf2                                           265.375+-1.927            262.319+-1.289           might be 1.0116x faster
   stanford-crypto-sha256-iterative                                 116.426+-0.863            115.124+-0.488           might be 1.0113x faster

   <arithmetic> *                                                   217.821+-0.275      ^     217.059+-0.466         ^ definitely 1.0035x faster
   <geometric>                                                      186.880+-0.347      ^     185.537+-0.302         ^ definitely 1.0072x faster
   <harmonic>                                                       161.150+-0.439      ^     159.543+-0.323         ^ definitely 1.0101x faster

                                                                       TipOfTree              ImplicitJettison                                 
JSRegress:
   adapt-to-double-divide                                           22.7295+-0.1144           22.7216+-0.1307        
   aliased-arguments-getbyval                                        0.9144+-0.0076     ?      0.9206+-0.0169        ?
   allocate-big-object                                               2.5630+-0.0312     ?      2.5655+-0.0487        ?
   arity-mismatch-inlining                                           0.8774+-0.0132     ^      0.8555+-0.0066        ^ definitely 1.0256x faster
   array-access-polymorphic-structure                                6.7848+-0.0597     ?      6.8949+-0.1193        ? might be 1.0162x slower
   array-nonarray-polymorhpic-access                               108.2388+-43.6761          82.0222+-31.8818         might be 1.3196x faster
   array-with-double-add                                             5.9435+-0.0451            5.8962+-0.0711        
   array-with-double-increment                                       4.3179+-0.0184     ?      4.3724+-0.0758        ? might be 1.0126x slower
   array-with-double-mul-add                                         6.8353+-0.0789            6.7859+-0.0822        
   array-with-double-sum                                             8.0209+-0.0767     ?      8.0355+-0.0732        ?
   array-with-int32-add-sub                                         10.5224+-0.1037     ?     10.6276+-0.1284        ?
   array-with-int32-or-double-sum                                    8.1203+-0.1114     ?      8.1361+-0.0587        ?
   ArrayBuffer-DataView-alloc-large-long-lived                     121.7792+-0.6162          120.4315+-0.8221          might be 1.0112x faster
   ArrayBuffer-DataView-alloc-long-lived                            32.2195+-0.1942           31.9228+-0.2172        
   ArrayBuffer-Int32Array-byteOffset                                 8.9260+-0.1029            8.9071+-0.0796        
   ArrayBuffer-Int8Array-alloc-huge-long-lived                     210.9330+-1.7926          210.6550+-1.8838        
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented         164.3867+-0.7260     ?    164.4619+-0.5459        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived                    120.7121+-0.8960     ?    121.4890+-1.4696        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer                    53.0750+-0.4424     ^     51.9969+-0.2407        ^ definitely 1.0207x faster
   ArrayBuffer-Int8Array-alloc-long-lived                           31.3507+-0.1446     ^     31.0107+-0.1745        ^ definitely 1.0110x faster
   ArrayBuffer-Int8Array-alloc                                      28.4317+-0.2091     ^     27.4061+-0.1507        ^ definitely 1.0374x faster
   basic-set                                                        20.0050+-0.2572           19.8899+-0.2844        
   big-int-mul                                                       4.9024+-0.0281     ?      4.9193+-0.0200        ?
   boolean-test                                                      4.4708+-0.0067     ?      4.4737+-0.0058        ?
   branch-fold                                                       4.8575+-0.0233            4.8489+-0.0417        
   cast-int-to-double                                               14.2367+-0.1032           14.1815+-0.0680        
   cell-argument                                                    14.6795+-0.1874     ?     14.9426+-0.3126        ? might be 1.0179x slower
   cfg-simplify                                                      3.9220+-0.0072     ?      3.9419+-0.0314        ?
   cmpeq-obj-to-obj-other                                           12.5765+-0.1214     !     13.1689+-0.2017        ! definitely 1.0471x slower
   constant-test                                                     8.8235+-0.1013            8.7484+-0.1054        
   DataView-custom-properties                                      128.2912+-1.1055          126.7725+-0.9743          might be 1.0120x faster
   delay-tear-off-arguments-strictmode                               3.4649+-0.0090            3.4493+-0.0086        
   direct-arguments-getbyval                                         0.8129+-0.0265            0.8002+-0.0065          might be 1.0159x faster
   double-pollution-getbyval                                        10.8762+-0.0658     ?     10.8899+-0.0772        ?
   double-pollution-putbyoffset                                      5.9747+-0.0846            5.8784+-0.1092          might be 1.0164x faster
   empty-string-plus-int                                            10.2134+-0.1546           10.1978+-0.1818        
   emscripten-cube2hash                                             51.0388+-2.9512           50.2244+-2.5065          might be 1.0162x faster
   emscripten-memops                                              9884.0700+-59.1976    ?   9912.6740+-46.2755       ?
   external-arguments-getbyval                                       1.9385+-0.0305            1.8971+-0.0146          might be 1.0218x faster
   external-arguments-putbyval                                       3.1179+-0.0116     ?      3.1769+-0.0509        ? might be 1.0189x slower
   Float32Array-matrix-mult                                          6.3141+-0.0618            6.2356+-0.0589          might be 1.0126x faster
   Float32Array-to-Float64Array-set                                 96.5028+-0.9013           95.6935+-1.2597        
   Float64Array-alloc-long-lived                                   106.3104+-0.3603     ?    106.6113+-0.6145        ?
   Float64Array-to-Int16Array-set                                  112.1501+-0.6829     ?    112.6286+-0.6905        ?
   fold-double-to-int                                               25.6385+-0.4444           25.5603+-0.3270        
   function-dot-apply                                                3.1068+-0.0142            3.1008+-0.0193        
   function-test                                                     4.9027+-0.0550     ?      4.9558+-0.0642        ? might be 1.0108x slower
   get-by-id-chain-from-try-block                                    6.7250+-0.0747            6.7197+-0.0786        
   get-by-id-proto-or-self                                          23.0021+-0.3954           22.8692+-0.3295        
   get-by-id-self-or-proto                                          23.7293+-0.2129           23.3302+-0.3824          might be 1.0171x faster
   HashMap-put-get-iterate-keys                                     42.2551+-0.1948     ?     42.6890+-0.4497        ? might be 1.0103x slower
   HashMap-put-get-iterate                                          52.3392+-0.3545     ?     52.6565+-0.3515        ?
   HashMap-string-put-get-iterate                                   49.7579+-0.2184     ?     49.8367+-0.3297        ?
   imul-double-only                                                 18.6374+-1.1599           17.6718+-0.1016          might be 1.0546x faster
   imul-int-only                                                    15.7481+-0.1629     ?     15.9239+-0.2059        ? might be 1.0112x slower
   imul-mixed                                                       22.1905+-0.1239           22.0642+-0.0812        
   in-four-cases                                                    26.2361+-0.1239     ?     26.3006+-0.1480        ?
   in-one-case-false                                                12.4449+-0.0593     ^     12.2651+-0.0825        ^ definitely 1.0147x faster
   in-one-case-true                                                 12.3972+-0.1128     ?     12.5593+-0.2455        ? might be 1.0131x slower
   in-two-cases                                                     12.7638+-0.1058           12.7635+-0.0916        
   indexed-properties-in-objects                                     4.2048+-0.0073            4.2008+-0.0154        
   inline-arguments-access                                           1.4202+-0.0059            1.4146+-0.0071        
   inline-arguments-local-escape                                    22.0736+-0.2177           21.7726+-0.1900          might be 1.0138x faster
   inline-get-scoped-var                                             6.8958+-0.1152     ?      6.9988+-0.0603        ? might be 1.0149x slower
   inlined-put-by-id-transition                                     14.7770+-0.1412     ?     14.9059+-0.1174        ?
   int-or-other-abs-then-get-by-val                                  9.2213+-0.2030     ?      9.2351+-0.1760        ?
   int-or-other-abs-zero-then-get-by-val                            36.4715+-0.1098     ?     36.4817+-0.1459        ?
   int-or-other-add-then-get-by-val                                 10.3921+-0.1162           10.3350+-0.1322        
   int-or-other-add                                                 10.5497+-0.1071           10.5198+-0.0743        
   int-or-other-div-then-get-by-val                                  6.2610+-0.0829     ?      6.3139+-0.0576        ?
   int-or-other-max-then-get-by-val                                  7.3031+-0.0840            7.2565+-0.0721        
   int-or-other-min-then-get-by-val                                  7.2094+-0.0901     ?      7.3420+-0.0764        ? might be 1.0184x slower
   int-or-other-mod-then-get-by-val                                  6.2171+-0.0626            6.1890+-0.0691        
   int-or-other-mul-then-get-by-val                                  6.6667+-0.0638            6.5637+-0.1038          might be 1.0157x faster
   int-or-other-neg-then-get-by-val                                  8.1562+-0.0696            8.1433+-0.0811        
   int-or-other-neg-zero-then-get-by-val                            36.3405+-0.1655           36.2395+-0.0947        
   int-or-other-sub-then-get-by-val                                 10.7206+-0.1071     ?     10.7883+-0.1314        ?
   int-or-other-sub                                                  8.3289+-0.0897     ?      8.4120+-0.0634        ?
   int-overflow-local                                               12.0084+-0.0933           11.9173+-0.1287        
   Int16Array-alloc-long-lived                                      69.8984+-0.8735           69.2144+-0.3685        
   Int16Array-bubble-sort-with-byteLength                           48.1597+-0.1334     ?     48.2454+-0.1057        ?
   Int16Array-bubble-sort                                           47.7109+-0.2068           47.6504+-0.1260        
   Int16Array-load-int-mul                                           2.0004+-0.0044     ?      2.0015+-0.0044        ?
   Int16Array-to-Int32Array-set                                     89.7092+-0.8492     !     94.3316+-0.5961        ! definitely 1.0515x slower
   Int32Array-alloc-huge-long-lived                                709.4386+-1.9188          709.2009+-2.0252        
   Int32Array-alloc-huge                                           810.1301+-8.1386          805.3877+-7.5012        
   Int32Array-alloc-large-long-lived                               967.4275+-6.7488     ?    969.7288+-7.1310        ?
   Int32Array-alloc-large                                           44.1471+-0.8885     ?     45.0645+-0.8774        ? might be 1.0208x slower
   Int32Array-alloc-long-lived                                      82.1567+-0.4270     ?     83.3613+-1.3752        ? might be 1.0147x slower
   Int32Array-alloc                                                  4.2937+-0.0588     ?      4.3393+-0.0286        ? might be 1.0106x slower
   Int32Array-Int8Array-view-alloc                                  15.5652+-0.1833     ^     14.9563+-0.1645        ^ definitely 1.0407x faster
   Int8Array-alloc-long-lived                                       69.4382+-0.4368           69.3611+-0.4904        
   Int8Array-load-with-byteLength                                    5.0148+-0.0466     ?      5.0238+-0.0260        ?
   Int8Array-load                                                    5.0058+-0.0594     ?      5.0219+-0.0471        ?
   integer-divide                                                   15.4819+-0.1207     ?     15.6345+-0.2415        ?
   integer-modulo                                                    1.9564+-0.0121            1.9522+-0.0196        
   lots-of-fields                                                   13.1471+-0.0819     ?     13.5041+-0.3680        ? might be 1.0272x slower
   make-indexed-storage                                              4.0718+-0.1059     ?      4.0950+-0.0550        ?
   make-rope-cse                                                     5.8955+-0.0812     ?      5.9140+-0.0753        ?
   marsaglia                                                       521.4882+-0.4368     ?    521.5699+-0.2258        ?
   method-on-number                                                 27.4703+-0.3146           27.3305+-0.5945        
   negative-zero-divide                                              0.3916+-0.0153            0.3811+-0.0107          might be 1.0276x faster
   negative-zero-modulo                                              0.3732+-0.0128            0.3707+-0.0117        
   negative-zero-negate                                              0.3594+-0.0122            0.3563+-0.0122        
   nested-function-parsing-random                                  400.8530+-13.0858         395.9552+-13.0540         might be 1.0124x faster
   nested-function-parsing                                          47.6260+-1.1822           47.4915+-1.1015        
   new-array-buffer-dead                                             3.7454+-0.0658            3.7259+-0.0310        
   new-array-buffer-push                                            10.4325+-0.1131     ?     10.4499+-0.1080        ?
   new-array-dead                                                   28.4987+-0.0857           28.4953+-0.0959        
   new-array-push                                                    7.2493+-0.1067     ^      7.0741+-0.0557        ^ definitely 1.0248x faster
   number-test                                                       4.4086+-0.0133     ?      4.4121+-0.0086        ?
   object-closure-call                                              12.8126+-1.7711           11.8959+-1.9905          might be 1.0771x faster
   object-test                                                       5.0146+-0.0428            4.9913+-0.0690        
   poly-stricteq                                                    92.9468+-0.4358           92.9266+-0.4656        
   polymorphic-structure                                            21.0209+-0.1029     ?     21.0411+-0.1085        ?
   polyvariant-monomorphic-get-by-id                                12.6814+-0.1064     ?     12.7088+-0.0910        ?
   put-by-val-large-index-blank-indexing-type                       10.4111+-0.2690     ?     10.6913+-0.2910        ? might be 1.0269x slower
   rare-osr-exit-on-local                                           20.2622+-0.1100           20.1896+-0.0693        
   register-pressure-from-osr                                       31.4579+-0.1184     ?     31.5753+-0.1543        ?
   simple-activation-demo                                           34.4386+-0.1243     ?     34.4558+-0.1172        ?
   slow-array-profile-convergence                                    4.4111+-0.1395            4.2627+-0.1093          might be 1.0348x faster
   slow-convergence                                                  3.5581+-0.0169     ?      3.5801+-0.0430        ?
   sparse-conditional                                                1.3267+-0.0292            1.3171+-0.0251        
   splice-to-remove                                                 48.2070+-0.1763     ^     47.4627+-0.1009        ^ definitely 1.0157x faster
   string-concat-object                                              2.9469+-0.0358     ?      2.9480+-0.0391        ?
   string-concat-pair-object                                         2.8484+-0.0213     ?      2.8633+-0.0227        ?
   string-concat-pair-simple                                        17.0550+-0.3590     ?     17.2311+-0.3648        ? might be 1.0103x slower
   string-concat-simple                                             17.1365+-0.4622           17.0983+-0.2976        
   string-cons-repeat                                               10.3207+-0.0313           10.3100+-0.0276        
   string-cons-tower                                                10.8125+-0.0435           10.8070+-0.0334        
   string-equality                                                  43.7153+-0.4832     !     45.0271+-0.6985        ! definitely 1.0300x slower
   string-get-by-val-big-char                                       13.6099+-0.2729           13.3129+-0.1237          might be 1.0223x faster
   string-get-by-val-out-of-bounds-insane                            5.5597+-0.0753            5.4770+-0.1011          might be 1.0151x faster
   string-get-by-val-out-of-bounds                                   5.7403+-0.7662            5.7097+-0.7667        
   string-get-by-val                                                 4.2967+-0.0440     ^      4.1655+-0.0116        ^ definitely 1.0315x faster
   string-hash                                                       2.6558+-0.0061            2.6510+-0.0035        
   string-long-ident-equality                                       38.4391+-0.0568     !     39.8944+-0.9982        ! definitely 1.0379x slower
   string-repeat-arith                                              51.7699+-0.3028           51.3869+-0.2336        
   string-sub                                                       98.5184+-1.3923     ?    100.7799+-3.2801        ? might be 1.0230x slower
   string-test                                                       4.3500+-0.0083     ?      4.3620+-0.0080        ?
   string-var-equality                                              71.5788+-0.5270     ^     70.9129+-0.0971        ^ definitely 1.0094x faster
   structure-hoist-over-transitions                                  3.2624+-0.0270            3.2467+-0.0269        
   switch-char-constant                                              3.4789+-0.0392            3.4472+-0.0081        
   switch-char                                                       8.5098+-0.2694            8.4012+-0.2804          might be 1.0129x faster
   switch-constant                                                   9.0285+-0.1235            8.9810+-0.1041        
   switch-string-basic-big-var                                      21.5043+-0.1050     ?     21.5370+-0.1134        ?
   switch-string-basic-big                                          23.5704+-1.5759           23.0696+-1.3060          might be 1.0217x faster
   switch-string-basic-var                                          21.3478+-0.1014     ?     21.3644+-0.1120        ?
   switch-string-basic                                              22.8084+-0.2827     ?     22.9000+-0.3830        ?
   switch-string-big-length-tower-var                               29.6765+-0.1455     ?     29.8417+-0.1831        ?
   switch-string-length-tower-var                                   23.3623+-0.1148           23.3395+-0.1500        
   switch-string-length-tower                                       17.8453+-0.0937           17.7534+-0.1127        
   switch-string-short                                              17.8131+-0.1124           17.8016+-0.0633        
   switch                                                           18.2348+-1.1422     ?     18.3017+-1.1724        ?
   tear-off-arguments-simple                                         2.1135+-0.0081     ?      2.1445+-0.0488        ? might be 1.0147x slower
   tear-off-arguments                                                3.4570+-0.0085            3.4524+-0.0075        
   temporal-structure                                               21.1971+-0.1227     ?     21.3150+-0.3985        ?
   to-int32-boolean                                                 21.6224+-0.0754     ?     21.7396+-0.1103        ?
   undefined-test                                                    4.5797+-0.0181            4.5705+-0.0037        

   <arithmetic>                                                    107.4288+-0.6148          107.4057+-0.4978          might be 1.0002x faster
   <geometric> *                                                    14.1928+-0.0418           14.1499+-0.0432          might be 1.0030x faster
   <harmonic>                                                        5.2943+-0.0481            5.2623+-0.0455          might be 1.0061x faster

                                                                       TipOfTree              ImplicitJettison                                 
All benchmarks:
   <arithmetic>                                                     93.1305+-0.4391           93.0565+-0.3574          might be 1.0008x faster
   <geometric>                                                      13.9976+-0.0441           13.9635+-0.0449          might be 1.0024x faster
   <harmonic>                                                        4.1150+-0.0205            4.0987+-0.0161          might be 1.0040x faster

                                                                       TipOfTree              ImplicitJettison                                 
Geomean of preferred means:
   <scaled-result>                                                  23.2259+-0.0855           23.1930+-0.0835          might be 1.0014x faster
Comment 9 Filip Pizlo 2013-09-01 23:27:14 PDT
Results from DumpRenderTree.


Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)
"ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                                                       TipOfTree              ImplicitJettison                                 
SunSpider:
   3d-cube                                                           7.5951+-0.2460     ?      7.6366+-0.2587        ?
   3d-morph                                                          8.3423+-0.0494     ?      8.4626+-0.1080        ? might be 1.0144x slower
   3d-raytrace                                                       9.8186+-0.3936            9.6901+-0.3315          might be 1.0133x faster
   access-binary-trees                                               2.7398+-0.3132            2.4572+-0.3222          might be 1.1150x faster
   access-fannkuch                                                   7.6667+-0.0630     ?      7.6677+-0.0690        ?
   access-nbody                                                      4.1237+-0.0492            4.1056+-0.0514        
   access-nsieve                                                     4.8725+-0.0474     ?      4.9010+-0.0851        ?
   bitops-3bit-bits-in-byte                                          1.7689+-0.0166     ?      1.7943+-0.0186        ? might be 1.0144x slower
   bitops-bits-in-byte                                               6.6869+-0.0845     ?      6.6911+-0.0582        ?
   bitops-bitwise-and                                                2.7445+-0.0670     ?      2.8062+-0.0324        ? might be 1.0225x slower
   bitops-nsieve-bits                                                4.6971+-0.0302            4.6661+-0.0242        
   controlflow-recursive                                             2.9351+-0.0218            2.9151+-0.0167        
   crypto-aes                                                        6.1022+-0.3090            6.0884+-0.3261        
   crypto-md5                                                        3.2113+-0.0497            3.2050+-0.0570        
   crypto-sha1                                                       2.9440+-0.0495     ?      2.9454+-0.0727        ?
   date-format-tofte                                                12.7026+-0.9556     ?     13.0082+-0.9520        ? might be 1.0241x slower
   date-format-xparb                                                 9.0055+-0.6427            8.9564+-0.6398        
   math-cordic                                                       3.9034+-0.0321            3.8934+-0.0291        
   math-partial-sums                                                10.4761+-0.0464           10.4171+-0.0421        
   math-spectral-norm                                                2.8239+-0.0239            2.8176+-0.0161        
   regexp-dna                                                       12.8361+-0.5433     ?     12.9119+-0.5470        ?
   string-base64                                                     6.4690+-0.5480            6.3447+-0.4979          might be 1.0196x faster
   string-fasta                                                     12.1426+-0.1263           12.1219+-0.1332        
   string-tagcloud                                                  14.8565+-0.1583     ?     14.9036+-0.1904        ?
   string-unpack-code                                               31.7255+-0.2169     ?     31.9854+-0.3188        ?
   string-validate-input                                             8.9788+-0.1868            8.8824+-0.2160          might be 1.0109x faster

   <arithmetic> *                                                    7.7757+-0.1266     ?      7.7798+-0.1256        ? might be 1.0005x slower
   <geometric>                                                       6.1796+-0.0970            6.1586+-0.1018          might be 1.0034x faster
   <harmonic>                                                        5.0163+-0.0744            4.9826+-0.0838          might be 1.0068x faster

                                                                       TipOfTree              ImplicitJettison                                 
V8Spider:
   crypto                                                           81.5186+-0.3332           81.3143+-0.3364        
   deltablue                                                       102.8431+-1.4178          101.7515+-0.7921          might be 1.0107x faster
   earley-boyer                                                     72.3626+-0.7797           71.8593+-1.0147        
   raytrace                                                         45.9410+-4.9555           45.7096+-5.0562        
   regexp                                                          102.6660+-0.5261     ?    105.4219+-3.7478        ? might be 1.0268x slower
   richards                                                        116.3553+-1.9925          115.3456+-1.3269        
   splay                                                            59.6188+-2.9905     ?     60.1999+-3.0062        ?

   <arithmetic>                                                     83.0436+-0.8189     ?     83.0860+-1.0330        ? might be 1.0005x slower
   <geometric> *                                                    79.2095+-1.0514     ?     79.2237+-1.2917        ? might be 1.0002x slower
   <harmonic>                                                       75.0776+-1.4827           75.0586+-1.7134          might be 1.0003x faster

                                                                       TipOfTree              ImplicitJettison                                 
Octane and V8v7:
   encrypt                                                          0.47458+-0.00104          0.47369+-0.00065       
   decrypt                                                          8.64653+-0.01488    ?     8.64752+-0.00981       ?
   deltablue                                               x2       0.67905+-0.04621          0.64023+-0.04173         might be 1.0606x faster
   earley                                                           0.90597+-0.01615    ?     0.90828+-0.02166       ?
   boyer                                                           12.66932+-0.05330    ?    12.78165+-0.12093       ?
   raytrace                                                x2       4.40929+-0.05819          4.37098+-0.06797       
   regexp                                                  x2      32.65303+-0.19452    ?    32.90756+-0.22195       ?
   richards                                                x2       0.32022+-0.00365    ?     0.32207+-0.00477       ?
   splay                                                   x2       0.65106+-0.02985    ?     0.66342+-0.02567       ? might be 1.0190x slower
   navier-stokes                                           x2      10.93336+-0.01197         10.92689+-0.01076       
   closure                                                          0.43451+-0.04764    ?     0.43689+-0.04759       ?
   jquery                                                           5.31199+-0.70502    ?     5.36225+-0.68408       ?
   gbemu                                                   x2     100.58560+-7.04461         93.19069+-4.98935         might be 1.0794x faster
   mandreel                                                x2     194.41351+-0.57595    ?   195.15138+-1.19760       ?
   pdfjs                                                   x2     100.53115+-0.41920        100.12273+-0.28906       
   box2d                                                   x2      35.70191+-0.44207    ^    34.78569+-0.27819       ^ definitely 1.0263x faster

V8v7:
   <arithmetic>                                                     7.62428+-0.02800    ?     7.65459+-0.03433       ? might be 1.0040x slower
   <geometric> *                                                    2.49846+-0.02402          2.48904+-0.02240         might be 1.0038x faster
   <harmonic>                                                       0.97518+-0.01268          0.97021+-0.01321         might be 1.0051x faster

Octane including V8v7:
   <arithmetic>                                                    38.08459+-0.53482         37.49129+-0.39158         might be 1.0158x faster
   <geometric> *                                                    7.27068+-0.10129          7.20250+-0.08350         might be 1.0095x faster
   <harmonic>                                                       1.36425+-0.02686          1.35905+-0.02547         might be 1.0038x faster

                                                                       TipOfTree              ImplicitJettison                                 
Kraken:
   ai-astar                                                         491.114+-0.805      ?     491.817+-1.155         ?
   audio-beat-detection                                             253.646+-3.661      ?     254.415+-3.868         ?
   audio-dft                                                        312.244+-2.254      ?     312.434+-2.061         ?
   audio-fft                                                        147.648+-0.275      !     149.735+-0.427         ! definitely 1.0141x slower
   audio-oscillator                                                 247.396+-1.276      ?     249.854+-2.797         ?
   imaging-darkroom                                                 297.749+-1.231            296.989+-1.679         
   imaging-desaturate                                               160.146+-0.346            159.919+-0.381         
   imaging-gaussian-blur                                            404.286+-0.314      ?     404.411+-0.601         ?
   json-parse-financial                                              80.890+-0.197      !      82.411+-0.156         ! definitely 1.0188x slower
   json-stringify-tinderbox                                         108.888+-3.178      ^     104.737+-0.398         ^ definitely 1.0396x faster
   stanford-crypto-aes                                              109.811+-0.965      ?     110.304+-1.600         ?
   stanford-crypto-ccm                                              124.033+-4.774      ?     126.153+-2.647         ? might be 1.0171x slower
   stanford-crypto-pbkdf2                                           270.727+-1.550      ^     267.233+-0.922         ^ definitely 1.0131x faster
   stanford-crypto-sha256-iterative                                 129.409+-0.977      ^     127.324+-0.459         ^ definitely 1.0164x faster

   <arithmetic> *                                                   224.142+-0.705            224.124+-0.455           might be 1.0001x faster
   <geometric>                                                      194.980+-1.029            194.966+-0.434           might be 1.0001x faster
   <harmonic>                                                       170.203+-1.264      ?     170.265+-0.416         ? might be 1.0004x slower

                                                                       TipOfTree              ImplicitJettison                                 
JSBench:
   amazon                                                           10.2500+-0.2874           10.1667+-0.2473        
   facebook                                                         38.8333+-0.4560     ?     39.0833+-0.3272        ?
   google                                                           67.5833+-1.1320     ?     73.9167+-6.9096        ? might be 1.0937x slower
   twitter                                                          10.0000+-0.2709           10.0000+-0.3831        
   yahoo                                                             3.9167+-0.4248     ?      4.0000+-0.0000        ? might be 1.0213x slower

   <arithmetic> *                                                   26.1167+-0.2390     ?     27.4333+-1.4324        ? might be 1.0504x slower
   <geometric>                                                      15.9719+-0.3189     ?     16.3378+-0.3531        ? might be 1.0229x slower
   <harmonic>                                                       10.0480+-0.5397     ?     10.2435+-0.0858        ? might be 1.0195x slower

                                                                       TipOfTree              ImplicitJettison                                 
JSRegress:
   adapt-to-double-divide                                           22.5226+-0.0326     ?     22.5402+-0.0275        ?
   aliased-arguments-getbyval                                        0.9740+-0.0293            0.9611+-0.0288          might be 1.0134x faster
   allocate-big-object                                               4.5158+-1.4020            4.4659+-1.3977          might be 1.0112x faster
   arity-mismatch-inlining                                           0.8842+-0.0224     ?      0.8962+-0.0144        ? might be 1.0136x slower
   array-access-polymorphic-structure                                9.1883+-2.0403            9.0790+-2.0382          might be 1.0120x faster
   array-nonarray-polymorhpic-access                                72.0378+-25.0587          72.0252+-25.2256       
   array-with-double-add                                             5.3734+-0.0267            5.3672+-0.0277        
   array-with-double-increment                                       4.1932+-0.0896            4.1407+-0.0383          might be 1.0127x faster
   array-with-double-mul-add                                         7.5316+-0.2637            7.3138+-0.2932          might be 1.0298x faster
   array-with-double-sum                                             7.9121+-0.0585            7.8987+-0.0576        
   array-with-int32-add-sub                                          9.3335+-0.0229            9.3201+-0.0280        
   array-with-int32-or-double-sum                                    7.9636+-0.0103            7.9515+-0.0146        
   ArrayBuffer-DataView-alloc-large-long-lived                     128.3597+-1.0644          128.2792+-0.7614        
   ArrayBuffer-DataView-alloc-long-lived                            42.5926+-3.9298           42.0928+-3.9301          might be 1.0119x faster
   ArrayBuffer-Int32Array-byteOffset                                 8.7477+-0.0345     ?      8.7510+-0.0321        ?
   ArrayBuffer-Int8Array-alloc-huge-long-lived                     215.6943+-2.6555     ?    216.1692+-2.7050        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented         172.4124+-2.7736     ?    172.9145+-3.4948        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived                    129.3531+-0.7187     !    131.1205+-0.8901        ! definitely 1.0137x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer                    82.2377+-11.0199    ?     82.5188+-10.9438       ?
   ArrayBuffer-Int8Array-alloc-long-lived                           41.3304+-3.7990           40.9854+-3.9636        
   ArrayBuffer-Int8Array-alloc                                      36.7696+-4.0365           36.2233+-4.0579          might be 1.0151x faster
   basic-set                                                        21.5403+-0.2659           21.4645+-0.3575        
   big-int-mul                                                       4.7773+-0.0295     ?      4.8273+-0.0715        ? might be 1.0105x slower
   boolean-test                                                      4.3347+-0.0226     ?      4.3833+-0.0433        ? might be 1.0112x slower
   branch-fold                                                       4.7587+-0.0273            4.7280+-0.0259        
   cast-int-to-double                                               14.0774+-0.0352     ?     14.1351+-0.0694        ?
   cell-argument                                                    14.6883+-0.2602           14.4904+-0.2065          might be 1.0137x faster
   cfg-simplify                                                      3.7809+-0.0437     ?      3.8118+-0.0532        ?
   cmpeq-obj-to-obj-other                                           12.3112+-0.2551     ?     12.8173+-0.4062        ? might be 1.0411x slower
   constant-test                                                     8.5999+-0.0813     ?      8.6657+-0.0926        ?
   DataView-custom-properties                                      137.3200+-0.5732          136.8535+-0.3435        
   delay-tear-off-arguments-strictmode                               3.4080+-0.0357            3.4008+-0.0330        
   direct-arguments-getbyval                                         0.7766+-0.0125     ?      0.8011+-0.0248        ? might be 1.0316x slower
   double-pollution-getbyval                                        10.8673+-0.0916           10.7947+-0.0348        
   double-pollution-putbyoffset                                      7.0240+-0.5379     ?      7.1600+-0.5363        ? might be 1.0194x slower
   empty-string-plus-int                                            14.0569+-0.1565           13.7742+-0.2760          might be 1.0205x faster
   emscripten-cube2hash                                             50.0387+-2.8182           49.3852+-2.7279          might be 1.0132x faster
   emscripten-memops                                             10473.8541+-527.7147       9971.5525+-16.0172         might be 1.0504x faster
   external-arguments-getbyval                                       2.4440+-0.1534            2.4255+-0.1559        
   external-arguments-putbyval                                       4.1157+-0.2179            4.0130+-0.2781          might be 1.0256x faster
   Float32Array-matrix-mult                                          6.7376+-0.2213            6.6934+-0.1986        
   Float32Array-to-Float64Array-set                                 96.3377+-0.4383           96.1248+-0.2235        
   Float64Array-alloc-long-lived                                   108.6737+-0.3271     ?    108.7195+-0.5212        ?
   Float64Array-to-Int16Array-set                                  113.8095+-1.1725     ^    110.4962+-0.6149        ^ definitely 1.0300x faster
   fold-double-to-int                                               25.4607+-0.3178     ?     25.6097+-0.4606        ?
   function-dot-apply                                                3.0623+-0.0311            3.0556+-0.0231        
   function-test                                                     4.8850+-0.1008     ?      4.9626+-0.0708        ? might be 1.0159x slower
   get-by-id-chain-from-try-block                                    6.5871+-0.0378     ?      6.6087+-0.0715        ?
   get-by-id-proto-or-self                                          22.9574+-0.3339           22.9313+-0.3528        
   get-by-id-self-or-proto                                          23.2488+-0.3801           23.1340+-0.3473        
   HashMap-put-get-iterate-keys                                     44.0658+-0.6565     ?     44.4095+-0.7349        ?
   HashMap-put-get-iterate                                          53.5758+-0.8227     ?     53.9581+-0.7337        ?
   HashMap-string-put-get-iterate                                   64.7815+-0.6651     ?     65.2264+-0.2025        ?
   imul-double-only                                                 17.7917+-0.7160           17.4531+-0.0218          might be 1.0194x faster
   imul-int-only                                                    15.6453+-0.1332           15.5404+-0.0249        
   imul-mixed                                                       22.5634+-0.7266           22.0130+-0.0693          might be 1.0250x faster
   in-four-cases                                                    26.0649+-0.0283     ?     26.1115+-0.0496        ?
   in-one-case-false                                                12.2151+-0.0467           12.1967+-0.0264        
   in-one-case-true                                                 12.2353+-0.0312           12.2234+-0.0265        
   in-two-cases                                                     12.6854+-0.0473           12.6199+-0.0417        
   indexed-properties-in-objects                                     4.0213+-0.0184     ?      4.0830+-0.0503        ? might be 1.0154x slower
   inline-arguments-access                                           1.4298+-0.0300            1.4288+-0.0268        
   inline-arguments-local-escape                                    27.6906+-1.6241     ?     29.2193+-3.0046        ? might be 1.0552x slower
   inline-get-scoped-var                                             6.7943+-0.0707            6.7755+-0.0706        
   inlined-put-by-id-transition                                     14.7850+-0.2691     ?     14.8822+-0.1833        ?
   int-or-other-abs-then-get-by-val                                  9.0760+-0.1866            8.9408+-0.1909          might be 1.0151x faster
   int-or-other-abs-zero-then-get-by-val                            36.6385+-0.2885           36.5436+-0.1522        
   int-or-other-add-then-get-by-val                                 10.1831+-0.0224     ?     10.1893+-0.0236        ?
   int-or-other-add                                                 10.5068+-0.0802           10.4716+-0.0285        
   int-or-other-div-then-get-by-val                                  6.0727+-0.0185     ?      6.1063+-0.0551        ?
   int-or-other-max-then-get-by-val                                  7.0612+-0.0357     ?      7.0858+-0.0345        ?
   int-or-other-min-then-get-by-val                                  7.1163+-0.0304     ?      7.1425+-0.0291        ?
   int-or-other-mod-then-get-by-val                                  5.9551+-0.0185     ?      5.9696+-0.0313        ?
   int-or-other-mul-then-get-by-val                                  6.4977+-0.0270     ^      6.4314+-0.0162        ^ definitely 1.0103x faster
   int-or-other-neg-then-get-by-val                                  7.9766+-0.0565     ?      8.0298+-0.0453        ?
   int-or-other-neg-zero-then-get-by-val                            36.3046+-0.1116           36.2521+-0.0405        
   int-or-other-sub-then-get-by-val                                 10.6540+-0.1455           10.5935+-0.0805        
   int-or-other-sub                                                  8.1351+-0.0250     ?      8.1855+-0.1210        ?
   int-overflow-local                                               11.8368+-0.0457           11.7985+-0.0313        
   Int16Array-alloc-long-lived                                      73.8782+-3.9323           72.1762+-0.4786          might be 1.0236x faster
   Int16Array-bubble-sort-with-byteLength                           48.3020+-0.1431           48.2202+-0.0865        
   Int16Array-bubble-sort                                           47.7373+-0.1611           47.6802+-0.1497        
   Int16Array-load-int-mul                                           2.0045+-0.0214            1.9862+-0.0235        
   Int16Array-to-Int32Array-set                                     88.3237+-0.5409     !     94.7397+-0.4268        ! definitely 1.0726x slower
   Int32Array-alloc-huge-long-lived                                721.0853+-16.8061         719.5396+-16.1431       
   Int32Array-alloc-huge                                           814.6523+-7.4074     ?    821.2698+-5.5331        ?
   Int32Array-alloc-large-long-lived                               997.0221+-21.2716         976.9168+-4.8704          might be 1.0206x faster
   Int32Array-alloc-large                                           45.7577+-0.6850     ?     46.3812+-0.9874        ? might be 1.0136x slower
   Int32Array-alloc-long-lived                                      85.2814+-1.1880     ?     87.4004+-4.3374        ? might be 1.0248x slower
   Int32Array-alloc                                                  7.4654+-3.0013     ?      7.4658+-2.9932        ?
   Int32Array-Int8Array-view-alloc                                  23.5858+-2.1231           22.4122+-1.9312          might be 1.0524x faster
   Int8Array-alloc-long-lived                                       71.5198+-2.0273     ?     71.5946+-1.6632        ?
   Int8Array-load-with-byteLength                                    4.8269+-0.0353     ?      4.8483+-0.0644        ?
   Int8Array-load                                                    4.8125+-0.0204     ?      4.8155+-0.0188        ?
   integer-divide                                                   15.3475+-0.0238     ?     15.3698+-0.1037        ?
   integer-modulo                                                    1.9474+-0.0439            1.9288+-0.0306        
   lots-of-fields                                                   16.1719+-2.6171     ?     16.3209+-2.3011        ?
   make-indexed-storage                                              5.3562+-0.6940            5.3405+-0.6582        
   make-rope-cse                                                    16.8043+-2.9843           16.7422+-3.0500        
   marsaglia                                                       521.1511+-0.1622     ?    521.5169+-0.3360        ?
   method-on-number                                                 28.9251+-4.1357           26.7226+-0.0995          might be 1.0824x faster
   negative-zero-divide                                              0.3177+-0.0134            0.3126+-0.0070          might be 1.0162x faster
   negative-zero-modulo                                              0.2977+-0.0085     ?      0.2997+-0.0089        ?
   negative-zero-negate                                              0.2892+-0.0102            0.2863+-0.0098          might be 1.0101x faster
   nested-function-parsing-random                                  408.6868+-12.5641         404.3013+-12.3672         might be 1.0108x faster
   nested-function-parsing                                          57.1633+-3.9474           56.8753+-3.3288        
   new-array-buffer-dead                                             3.9565+-0.1052     ?      3.9808+-0.1156        ?
   new-array-buffer-push                                            14.8124+-2.3661     ?     14.8563+-2.3444        ?
   new-array-dead                                                   28.3887+-0.0495     ?     28.3950+-0.0350        ?
   new-array-push                                                   12.5934+-2.0541     ?     12.6260+-2.0511        ?
   number-test                                                       4.2914+-0.0235     ?      4.2989+-0.0432        ?
   object-closure-call                                               8.7912+-0.1844            8.7629+-0.1605        
   object-test                                                       4.7967+-0.0749            4.7582+-0.0806        
   poly-stricteq                                                    94.2469+-1.4947     ?     94.2988+-1.2063        ?
   polymorphic-structure                                            21.1510+-0.0563     ^     21.0148+-0.0625        ^ definitely 1.0065x faster
   polyvariant-monomorphic-get-by-id                                12.5111+-0.0371           12.4924+-0.0224        
   put-by-val-large-index-blank-indexing-type                       16.3551+-3.1554     ?     16.4591+-3.1825        ?
   rare-osr-exit-on-local                                           20.1927+-0.1205           20.0806+-0.0394        
   register-pressure-from-osr                                       31.4718+-0.1618           31.3778+-0.0530        
   simple-activation-demo                                           34.7961+-0.2085           34.7390+-0.2230        
   slow-array-profile-convergence                                    4.8832+-0.2195     ?      4.8943+-0.2486        ?
   slow-convergence                                                  3.5593+-0.0418     ?      3.6036+-0.0673        ? might be 1.0125x slower
   sparse-conditional                                                1.3260+-0.0220            1.3249+-0.0208        
   splice-to-remove                                                 48.0334+-0.1434     ^     47.4716+-0.1199        ^ definitely 1.0118x faster
   string-concat-object                                              5.0944+-1.4456            5.0806+-1.4277        
   string-concat-pair-object                                         4.9943+-1.4074     ?      5.0147+-1.4209        ?
   string-concat-pair-simple                                        19.3892+-0.6262     ?     19.7908+-0.7088        ? might be 1.0207x slower
   string-concat-simple                                             19.4889+-0.6099           19.3228+-0.8514        
   string-cons-repeat                                               15.0765+-1.1016           14.9790+-1.0306        
   string-cons-tower                                                15.5112+-0.8975     ?     15.7347+-1.0560        ? might be 1.0144x slower
   string-equality                                                  43.1771+-0.0342           43.1415+-0.0319        
   string-get-by-val-big-char                                       17.4077+-0.1756     ?     17.4952+-0.1820        ?
   string-get-by-val-out-of-bounds-insane                            5.1687+-0.1134            5.1034+-0.0780          might be 1.0128x faster
   string-get-by-val-out-of-bounds                                   4.7914+-0.0457            4.7478+-0.0238        
   string-get-by-val                                                 4.0000+-0.0292     ?      4.0395+-0.0492        ?
   string-hash                                                       2.6087+-0.0498            2.5772+-0.0175          might be 1.0122x faster
   string-long-ident-equality                                       39.0984+-0.7547           38.8856+-0.6335        
   string-repeat-arith                                              51.5123+-0.4364     ?     51.7334+-0.3194        ?
   string-sub                                                       99.1273+-1.0387     ?    105.0453+-8.2549        ? might be 1.0597x slower
   string-test                                                       4.2719+-0.0213     ?      4.3040+-0.0668        ?
   string-var-equality                                              71.1151+-0.2075     ?     71.4160+-0.5158        ?
   structure-hoist-over-transitions                                  4.0563+-0.6060     ?      4.7221+-0.6055        ? might be 1.1641x slower
   switch-char-constant                                              3.3203+-0.0167     ?      3.3231+-0.0214        ?
   switch-char                                                       7.9512+-0.0244     ?      7.9594+-0.0251        ?
   switch-constant                                                  12.9296+-2.8182           12.5393+-2.9026          might be 1.0311x faster
   switch-string-basic-big-var                                      21.3698+-0.0386     ?     21.4817+-0.2042        ?
   switch-string-basic-big                                          24.9259+-1.6754     ?     25.8716+-1.5127        ? might be 1.0379x slower
   switch-string-basic-var                                          21.2466+-0.0422     ?     21.4128+-0.2072        ?
   switch-string-basic                                              19.8098+-0.0398     ?     19.8561+-0.0715        ?
   switch-string-big-length-tower-var                               29.5251+-0.0569     ?     29.7221+-0.4141        ?
   switch-string-length-tower-var                                   23.2785+-0.0384     ?     23.2837+-0.0270        ?
   switch-string-length-tower                                       17.6213+-0.0413     ?     17.6310+-0.0515        ?
   switch-string-short                                              17.6026+-0.0416     ?     17.6260+-0.0387        ?
   switch                                                           16.5227+-2.4066     ?     19.0886+-2.7866        ? might be 1.1553x slower
   tear-off-arguments-simple                                         2.2398+-0.0281     !      2.3175+-0.0390        ! definitely 1.0347x slower
   tear-off-arguments                                                3.5263+-0.0606            3.4810+-0.0466          might be 1.0130x faster
   temporal-structure                                               21.1038+-0.0532     ?     21.1809+-0.0257        ?
   to-int32-boolean                                                 21.5557+-0.1219     ?     21.5861+-0.0372        ?
   undefined-test                                                    4.4033+-0.0245     ?      4.4759+-0.0612        ? might be 1.0165x slower

   <arithmetic>                                                     90.6843+-20.7318    ?    109.3433+-0.1556        ? might be 1.2058x slower
   <geometric> *                                                    14.6957+-0.2876     ?     14.9178+-0.1828        ? might be 1.0151x slower
   <harmonic>                                                        5.1139+-0.0730     ?      5.1267+-0.0439        ? might be 1.0025x slower

                                                                       TipOfTree              ImplicitJettison                                 
DSP:
   filtrr-posterize-tint                                            43.9508+-1.3214           43.9267+-1.2619        
   filtrr-tint-contrast-sat-bright                                  71.5490+-0.6528     ?     71.6434+-0.9266        ?
   filtrr-tint-sat-adj-contr-mult                                   84.0754+-3.0583     ?     85.4399+-3.8969        ? might be 1.0162x slower
   filtrr-blur-overlay-sat-contr                                   217.9256+-5.5972     ?    218.6326+-5.7842        ?
   filtrr-sat-blur-mult-sharpen-contr                              259.5659+-1.9255          259.4555+-3.0487        
   filtrr-sepia-bias                                                33.7107+-3.4453     ?     34.0226+-3.7959        ?
   route9-vp8                                              x5     1089.1167+-6.5145         1086.6357+-5.4747        
   starfield                                               x5     1188.0352+-4.7514     ?   1189.8242+-4.8399        ?
   bellard-jslinux                                         x5     2876.9167+-11.0961    ?   2879.5833+-12.9689       ?
   zynaps-quake3                                           x5     1402.8430+-24.6813        1395.7394+-26.8810       
   zynaps-mandelbrot                                       x5     1104.4173+-4.5716     ?   1108.0282+-5.1562        ?
   ammojs-asm-js                                           x5      263.4845+-14.9334         260.3958+-15.5206         might be 1.0119x faster
   ammojs-regular-js                                       x5      249.6488+-10.7496         249.4342+-11.6734       

   <arithmetic>                                                   1014.2217+-2.5813         1013.6908+-3.4395          might be 1.0005x faster
   <geometric> *                                                   623.2525+-8.1087          622.5162+-8.7120          might be 1.0012x faster
   <harmonic>                                                      283.0167+-10.8120    ?    283.3185+-11.7130       ? might be 1.0011x slower

                                                                       TipOfTree              ImplicitJettison                                 
All benchmarks:
   <arithmetic>                                                    219.7613+-11.5731    ?    230.1455+-0.4676        ? might be 1.0473x slower
   <geometric>                                                      26.2591+-0.2800     ?     26.4436+-0.2286        ? might be 1.0070x slower
   <harmonic>                                                        4.9485+-0.0461            4.9478+-0.0430          might be 1.0001x faster

                                                                       TipOfTree              ImplicitJettison                                 
Geomean of preferred means:
   <scaled-result>                                                  42.2361+-0.1244     ?     42.5510+-0.3536        ? might be 1.0075x slower
Comment 10 Filip Pizlo 2013-09-01 23:29:09 PDT
The JSBench/google slow-down looks real, I'll investigate more.  Here's a rerun:

Benchmark report for JSBench on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)
"ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.

                        TipOfTree              ImplicitJettison                                 

amazon               10.0833+-0.1834           10.0833+-0.1834        
facebook             38.7500+-0.5502     ?     38.9167+-0.7399        ?
google               67.0833+-1.0991     ?     73.7500+-7.2348        ? might be 1.0994x slower
twitter              10.1667+-0.2473            9.9167+-0.3272          might be 1.0252x faster
yahoo                 3.8333+-0.3668     ?      3.9167+-0.3272        ? might be 1.0217x slower

<arithmetic> *       25.9833+-0.1913     ?     27.3167+-1.5166        ? might be 1.0513x slower
<geometric>          15.8834+-0.2865     ?     16.1718+-0.4609        ? might be 1.0182x slower
<harmonic>            9.9554+-0.4904     ?     10.0539+-0.4415        ? might be 1.0099x slower
Comment 11 Filip Pizlo 2013-09-02 11:01:39 PDT
(In reply to comment #10)
> The JSBench/google slow-down looks real, I'll investigate more.  Here's a rerun:
> 
> Benchmark report for JSBench on oldmac (MacPro4,1).
> 
> VMs tested:
> "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)
> "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)
> 
> Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to
> gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
> the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
> execution times with 95% confidence intervals in milliseconds.
> 
>                         TipOfTree              ImplicitJettison                                 
> 
> amazon               10.0833+-0.1834           10.0833+-0.1834        
> facebook             38.7500+-0.5502     ?     38.9167+-0.7399        ?
> google               67.0833+-1.0991     ?     73.7500+-7.2348        ? might be 1.0994x slower

This is entirely because of this change:

+    m_heap->reportExtraMemoryCost(sizeof(CodeBlock) + m_instructions.size() * sizeof(Instruction));

Removing it makes the regression go away.  Previously we didn't count the size of the instruction stream towards the memory usage incurred by CodeBlocks.  This patch does count them.  The way this affects the google benchmark is that it GC's somewhat more frequently.  That's partly why you see "might be 10% slower" - GCs incur a ton of variance because they don't happen on every run, but they do happen on some runs - so you get a bimodal distribution of run-times.

I think it's wise to eat this regression.  I don't like the idea of us getting better performance by sometimes pretending that we didn't allocate memory. ;-)

> twitter              10.1667+-0.2473            9.9167+-0.3272          might be 1.0252x faster
> yahoo                 3.8333+-0.3668     ?      3.9167+-0.3272        ? might be 1.0217x slower
> 
> <arithmetic> *       25.9833+-0.1913     ?     27.3167+-1.5166        ? might be 1.0513x slower
> <geometric>          15.8834+-0.2865     ?     16.1718+-0.4609        ? might be 1.0182x slower
> <harmonic>            9.9554+-0.4904     ?     10.0539+-0.4415        ? might be 1.0099x slower
Comment 12 Filip Pizlo 2013-09-02 11:44:11 PDT
Created attachment 210303 [details]
the patch

Updated patch that more rigorously tracks CodeBlock memory footprint.  I discovered bugs in our memory footprint tracking when trying to track down the JSBench/google regression.  This version of the patch is very precise - CodeBlocks will report extra memory cost on allocation, and then again when setJITCode() is called, and then again during GC to remind it that we're still using memory.
Comment 13 WebKit Commit Bot 2013-09-02 11:46:04 PDT
Attachment 210303 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/wtf/RefCountedArray.h']" exit_code: 1
Source/JavaScriptCore/interpreter/JSStack.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 14 Filip Pizlo 2013-09-02 12:03:15 PDT
Final perf numbers:


Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)
"ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154943)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                                                       TipOfTree              ImplicitJettison                                 
SunSpider:
   3d-cube                                                           7.5772+-0.2675            7.5515+-0.2977        
   3d-morph                                                          8.3541+-0.1250            8.3220+-0.0851        
   3d-raytrace                                                       9.5204+-0.2656     ?      9.7745+-0.3732        ? might be 1.0267x slower
   access-binary-trees                                               2.7388+-0.3031            2.4257+-0.3239          might be 1.1291x faster
   access-fannkuch                                                   7.6904+-0.0451     ?      7.7251+-0.0703        ?
   access-nbody                                                      4.1301+-0.0555     ?      4.1605+-0.0564        ?
   access-nsieve                                                     4.8283+-0.0367            4.8267+-0.0276        
   bitops-3bit-bits-in-byte                                          1.8116+-0.0159     ?      1.8148+-0.0154        ?
   bitops-bits-in-byte                                               6.6706+-0.0694            6.6569+-0.0663        
   bitops-bitwise-and                                                2.7759+-0.0717     ?      2.7797+-0.0560        ?
   bitops-nsieve-bits                                                4.6408+-0.0349     ?      4.6643+-0.0373        ?
   controlflow-recursive                                             2.9477+-0.0324            2.9041+-0.0161          might be 1.0150x faster
   crypto-aes                                                        6.0573+-0.2684            5.9654+-0.3151          might be 1.0154x faster
   crypto-md5                                                        3.2302+-0.0685            3.2166+-0.0615        
   crypto-sha1                                                       2.9176+-0.0323     ?      2.9218+-0.0524        ?
   date-format-tofte                                                12.6460+-0.9473     ?     12.8812+-0.9693        ? might be 1.0186x slower
   date-format-xparb                                                 9.4717+-0.5930            8.8675+-0.6215          might be 1.0681x faster
   math-cordic                                                       3.8912+-0.0262     ?      3.9123+-0.0323        ?
   math-partial-sums                                                10.4616+-0.0660     ?     10.7140+-0.2142        ? might be 1.0241x slower
   math-spectral-norm                                                2.8880+-0.0365            2.8576+-0.0483          might be 1.0106x faster
   regexp-dna                                                       12.7901+-0.5535           12.7745+-0.5377        
   string-base64                                                     6.4729+-0.5067     ?      6.7753+-0.4914        ? might be 1.0467x slower
   string-fasta                                                     12.1680+-0.0904           12.1047+-0.0767        
   string-tagcloud                                                  14.7868+-0.1954     ?     14.8587+-0.2404        ?
   string-unpack-code                                               31.9109+-0.2661           31.7173+-0.2941        
   string-validate-input                                             8.9537+-0.2023            8.8332+-0.2238          might be 1.0136x faster

   <arithmetic> *                                                    7.7820+-0.1274            7.7695+-0.1503          might be 1.0016x faster
   <geometric>                                                       6.1899+-0.0969            6.1600+-0.1113          might be 1.0049x faster
   <harmonic>                                                        5.0378+-0.0747            4.9863+-0.0826          might be 1.0103x faster

                                                                       TipOfTree              ImplicitJettison                                 
V8Spider:
   crypto                                                           81.3337+-0.3650           81.2854+-0.3767        
   deltablue                                                       102.7304+-1.2137          102.3248+-1.7007        
   earley-boyer                                                     72.3858+-0.9708     ?     72.4182+-0.8841        ?
   raytrace                                                         44.5000+-4.6406     ?     45.5569+-4.8826        ? might be 1.0238x slower
   regexp                                                          102.6822+-0.3878          102.1736+-0.2897        
   richards                                                        116.3986+-1.6155          115.3811+-1.9082        
   splay                                                            59.8808+-3.0978           59.5411+-3.2722        

   <arithmetic>                                                     82.8445+-0.9124           82.6687+-0.7806          might be 1.0021x faster
   <geometric> *                                                    78.8874+-1.1497           78.8664+-1.1121          might be 1.0003x faster
   <harmonic>                                                       74.5889+-1.5308     ?     74.7546+-1.6029        ? might be 1.0022x slower

                                                                       TipOfTree              ImplicitJettison                                 
Octane and V8v7:
   encrypt                                                          0.47381+-0.00049          0.47345+-0.00039       
   decrypt                                                          8.64355+-0.01117          8.64303+-0.01193       
   deltablue                                               x2       0.61595+-0.01993          0.61305+-0.02505       
   earley                                                           0.90053+-0.00926    !     0.93205+-0.01523       ! definitely 1.0350x slower
   boyer                                                           12.72051+-0.19821    ?    12.73262+-0.05977       ?
   raytrace                                                x2       4.38239+-0.03528    ?     4.40353+-0.03277       ?
   regexp                                                  x2      33.02072+-0.22762         32.79667+-0.34209       
   richards                                                x2       0.32362+-0.00543    ^     0.31484+-0.00312       ^ definitely 1.0279x faster
   splay                                                   x2       0.63675+-0.00789    ?     0.63882+-0.00743       ?
   navier-stokes                                           x2      10.93067+-0.00811         10.92758+-0.00840       
   closure                                                          0.43247+-0.04703    ?     0.43618+-0.04699       ?
   jquery                                                           5.30279+-0.70601    ?     5.37115+-0.68983       ? might be 1.0129x slower
   gbemu                                                   x2      98.01298+-7.73358         95.49285+-2.48679         might be 1.0264x faster
   mandreel                                                x2     194.24757+-0.69189    ?   194.44718+-0.98367       ?
   pdfjs                                                   x2     100.02497+-0.32473    ?   100.62253+-0.35900       ?
   box2d                                                   x2      35.45050+-0.53370         35.07193+-0.42922         might be 1.0108x faster

V8v7:
   <arithmetic>                                                     7.65991+-0.04088          7.63563+-0.04494         might be 1.0032x faster
   <geometric> *                                                    2.46719+-0.01324          2.46272+-0.01258         might be 1.0018x faster
   <harmonic>                                                       0.95847+-0.00784          0.95038+-0.00724         might be 1.0085x faster

Octane including V8v7:
   <arithmetic>                                                    37.83715+-0.62535         37.66332+-0.18580         might be 1.0046x faster
   <geometric> *                                                    7.19136+-0.11718          7.17528+-0.06212         might be 1.0022x faster
   <harmonic>                                                       1.34321+-0.02250          1.33487+-0.01978         might be 1.0062x faster

                                                                       TipOfTree              ImplicitJettison                                 
Kraken:
   ai-astar                                                         490.889+-0.528      ?     491.727+-0.629         ?
   audio-beat-detection                                             253.203+-3.086      ?     253.383+-2.897         ?
   audio-dft                                                        311.763+-1.546      ?     311.985+-1.939         ?
   audio-fft                                                        147.769+-0.222      !     149.817+-0.376         ! definitely 1.0139x slower
   audio-oscillator                                                 248.309+-1.568      ?     249.609+-2.706         ?
   imaging-darkroom                                                 296.887+-1.618      ?     296.993+-1.752         ?
   imaging-desaturate                                               159.907+-0.267            159.749+-0.308         
   imaging-gaussian-blur                                            404.812+-1.831            403.932+-0.373         
   json-parse-financial                                              81.055+-0.452      !      82.640+-0.164         ! definitely 1.0196x slower
   json-stringify-tinderbox                                         110.785+-2.382      ^     104.534+-0.438         ^ definitely 1.0598x faster
   stanford-crypto-aes                                              109.845+-0.926            108.539+-0.621           might be 1.0120x faster
   stanford-crypto-ccm                                              126.020+-2.100            122.910+-7.396           might be 1.0253x faster
   stanford-crypto-pbkdf2                                           270.788+-1.885      ^     266.060+-1.196         ^ definitely 1.0178x faster
   stanford-crypto-sha256-iterative                                 128.662+-0.804      ^     127.327+-0.465         ^ definitely 1.0105x faster

   <arithmetic> *                                                   224.335+-0.370            223.515+-0.661           might be 1.0037x faster
   <geometric>                                                      195.388+-0.448            194.166+-0.901           might be 1.0063x faster
   <harmonic>                                                       170.799+-0.500            169.342+-1.071           might be 1.0086x faster

                                                                       TipOfTree              ImplicitJettison                                 
JSBench:
   amazon                                                           10.0833+-0.1834     ?     10.3333+-0.3128        ? might be 1.0248x slower
   facebook                                                         38.7500+-0.3949           37.9167+-0.9171          might be 1.0220x faster
   google                                                           67.9167+-1.0991     ?     72.1667+-5.1677        ? might be 1.0626x slower
   twitter                                                          10.0000+-0.0000           10.0000+-0.0000        
   yahoo                                                             3.9167+-0.1834     ?      4.0833+-0.1834        ? might be 1.0426x slower

   <arithmetic> *                                                   26.1333+-0.2673     ?     26.9000+-1.1501        ? might be 1.0293x slower
   <geometric>                                                      15.9631+-0.2046     ?     16.2883+-0.3315        ? might be 1.0204x slower
   <harmonic>                                                       10.0857+-0.2789     ?     10.3570+-0.2200        ? might be 1.0269x slower

                                                                       TipOfTree              ImplicitJettison                                 
JSRegress:
   adapt-to-double-divide                                           22.5321+-0.0331           22.5153+-0.0331        
   aliased-arguments-getbyval                                        0.9733+-0.0282            0.9669+-0.0336        
   allocate-big-object                                               4.2350+-1.3558            4.0942+-1.3207          might be 1.0344x faster
   arity-mismatch-inlining                                           0.9012+-0.0339            0.8661+-0.0262          might be 1.0405x faster
   array-access-polymorphic-structure                                9.5719+-2.1450            9.0308+-2.0628          might be 1.0599x faster
   array-nonarray-polymorhpic-access                                60.4786+-0.1646     ?     83.5236+-33.9695       ? might be 1.3810x slower
   array-with-double-add                                             5.3788+-0.0225            5.3540+-0.0244        
   array-with-double-increment                                       4.1264+-0.0470     ?      4.1590+-0.0296        ?
   array-with-double-mul-add                                         7.4213+-0.2645            7.3572+-0.3296        
   array-with-double-sum                                             7.8876+-0.0190            7.8746+-0.0316        
   array-with-int32-add-sub                                          9.3150+-0.0355            9.3079+-0.0280        
   array-with-int32-or-double-sum                                    7.9653+-0.0222     ?      8.0040+-0.0504        ?
   ArrayBuffer-DataView-alloc-large-long-lived                     128.3822+-0.8954          127.9946+-0.7156        
   ArrayBuffer-DataView-alloc-long-lived                            42.0366+-3.9421           41.5764+-3.8905          might be 1.0111x faster
   ArrayBuffer-Int32Array-byteOffset                                 8.7690+-0.0265            8.7641+-0.0136        
   ArrayBuffer-Int8Array-alloc-huge-long-lived                     214.4182+-2.8831     ?    218.4404+-4.0591        ? might be 1.0188x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented         173.3457+-3.2215          172.5032+-2.8373        
   ArrayBuffer-Int8Array-alloc-large-long-lived                    131.2046+-1.8644     ?    132.0404+-1.3432        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer                    82.8584+-11.1824          80.5351+-10.7322         might be 1.0288x faster
   ArrayBuffer-Int8Array-alloc-long-lived                           41.1541+-3.9065           40.6021+-3.8956          might be 1.0136x faster
   ArrayBuffer-Int8Array-alloc                                      36.6418+-3.9564           35.9480+-4.0597          might be 1.0193x faster
   basic-set                                                        21.7550+-0.5359           21.1033+-0.3600          might be 1.0309x faster
   big-int-mul                                                       4.7868+-0.0312            4.7748+-0.0299        
   boolean-test                                                      4.3481+-0.0285            4.3301+-0.0224        
   branch-fold                                                       4.7642+-0.0525            4.7056+-0.0306          might be 1.0124x faster
   cast-int-to-double                                               14.1155+-0.0462           14.0806+-0.0371        
   cell-argument                                                    14.6631+-0.2425           14.5931+-0.2319        
   cfg-simplify                                                      3.8558+-0.0718            3.8015+-0.0442          might be 1.0143x faster
   cmpeq-obj-to-obj-other                                           12.3155+-0.2647     ?     12.4804+-0.1903        ? might be 1.0134x slower
   constant-test                                                     8.5537+-0.0956     ?      8.6478+-0.0277        ? might be 1.0110x slower
   DataView-custom-properties                                      136.0959+-0.6971     ?    136.5311+-0.8152        ?
   delay-tear-off-arguments-strictmode                               3.3816+-0.0333     ?      3.4324+-0.0513        ? might be 1.0150x slower
   direct-arguments-getbyval                                         0.7901+-0.0158     ?      0.7920+-0.0200        ?
   double-pollution-getbyval                                        10.8126+-0.0411           10.7642+-0.0341        
   double-pollution-putbyoffset                                      7.1357+-0.6794            6.9062+-0.6246          might be 1.0332x faster
   empty-string-plus-int                                            13.8711+-0.2353           13.7065+-0.2602          might be 1.0120x faster
   emscripten-cube2hash                                             49.7315+-2.9598           48.4989+-2.6819          might be 1.0254x faster
   emscripten-memops                                             10472.3305+-531.3944   ?  10849.9673+-1381.4535     ? might be 1.0361x slower
   external-arguments-getbyval                                       2.3694+-0.1489     ?      2.3932+-0.1482        ? might be 1.0101x slower
   external-arguments-putbyval                                       3.9622+-0.2550     ?      3.9638+-0.2604        ?
   Float32Array-matrix-mult                                          6.7174+-0.2015     ?      6.7348+-0.2103        ?
   Float32Array-to-Float64Array-set                                 96.1479+-0.2889     ?     96.7853+-1.1169        ?
   Float64Array-alloc-long-lived                                   108.4501+-0.4895     ?    110.1404+-1.6324        ? might be 1.0156x slower
   Float64Array-to-Int16Array-set                                  112.7396+-0.4804     ^    111.8948+-0.2655        ^ definitely 1.0076x faster
   fold-double-to-int                                               25.3360+-0.0889     ?     25.3605+-0.2320        ?
   function-dot-apply                                                3.0473+-0.0290            3.0473+-0.0434        
   function-test                                                     4.9190+-0.0990            4.8497+-0.1076          might be 1.0143x faster
   get-by-id-chain-from-try-block                                    6.5924+-0.0608            6.5755+-0.0489        
   get-by-id-proto-or-self                                          22.9274+-0.3798     ?     23.0477+-0.3516        ?
   get-by-id-self-or-proto                                          23.3653+-0.3464           23.3446+-0.3560        
   HashMap-put-get-iterate-keys                                     44.8670+-1.0121           43.7765+-0.6513          might be 1.0249x faster
   HashMap-put-get-iterate                                          53.7902+-0.7637     ?     53.8910+-0.5889        ?
   HashMap-string-put-get-iterate                                   64.3819+-0.7515     ?     65.0015+-0.2300        ?
   imul-double-only                                                 17.5215+-0.1070           17.4410+-0.0221        
   imul-int-only                                                    15.5842+-0.0366     ?     15.5850+-0.0286        ?
   imul-mixed                                                       22.0165+-0.0204           22.0147+-0.0321        
   in-four-cases                                                    26.0791+-0.0262     !     26.1346+-0.0191        ! definitely 1.0021x slower
   in-one-case-false                                                12.2241+-0.0301           12.1925+-0.0306        
   in-one-case-true                                                 12.1971+-0.0200     ?     12.2307+-0.0389        ?
   in-two-cases                                                     12.6376+-0.0389     ?     12.6556+-0.0589        ?
   indexed-properties-in-objects                                     4.0776+-0.0275            4.0667+-0.0391        
   inline-arguments-access                                           1.4872+-0.0490     ^      1.4135+-0.0197        ^ definitely 1.0522x faster
   inline-arguments-local-escape                                    28.4465+-2.6632     ?     28.9921+-2.9522        ? might be 1.0192x slower
   inline-get-scoped-var                                             6.7890+-0.0760     ?      6.8436+-0.1305        ?
   inlined-put-by-id-transition                                     14.9878+-0.1640           14.9043+-0.3319        
   int-or-other-abs-then-get-by-val                                  9.0764+-0.2210            8.9383+-0.1705          might be 1.0154x faster
   int-or-other-abs-zero-then-get-by-val                            36.2350+-0.0672     ?     36.2954+-0.1552        ?
   int-or-other-add-then-get-by-val                                 10.2061+-0.0322           10.1883+-0.0441        
   int-or-other-add                                                 10.4771+-0.1009           10.4129+-0.0597        
   int-or-other-div-then-get-by-val                                  6.1232+-0.0255            6.0954+-0.0315        
   int-or-other-max-then-get-by-val                                  7.0887+-0.0321            7.0340+-0.0237        
   int-or-other-min-then-get-by-val                                  7.1515+-0.0756            7.1303+-0.0303        
   int-or-other-mod-then-get-by-val                                  5.9886+-0.0329     ?      6.0361+-0.0494        ?
   int-or-other-mul-then-get-by-val                                  6.4927+-0.0411            6.4537+-0.0391        
   int-or-other-neg-then-get-by-val                                  7.9868+-0.0269            7.9674+-0.0307        
   int-or-other-neg-zero-then-get-by-val                            36.3819+-0.2737           36.3709+-0.2439        
   int-or-other-sub-then-get-by-val                                 10.5668+-0.0259     ?     10.5963+-0.0364        ?
   int-or-other-sub                                                  8.1510+-0.0543     ?      8.1576+-0.0712        ?
   int-overflow-local                                               11.8089+-0.0378           11.7464+-0.0966        
   Int16Array-alloc-long-lived                                      71.9502+-0.4820           71.5981+-0.3442        
   Int16Array-bubble-sort-with-byteLength                           48.3286+-0.1030           48.2471+-0.0824        
   Int16Array-bubble-sort                                           47.7080+-0.1046           47.6513+-0.1367        
   Int16Array-load-int-mul                                           1.9916+-0.0270     ?      2.0146+-0.0252        ? might be 1.0116x slower
   Int16Array-to-Int32Array-set                                     89.1196+-1.5524     !     94.2976+-0.2589        ! definitely 1.0581x slower
   Int32Array-alloc-huge-long-lived                                718.6344+-16.1892         717.8390+-17.2009       
   Int32Array-alloc-huge                                           823.8969+-5.8283          815.9898+-6.4664        
   Int32Array-alloc-large-long-lived                               977.9449+-6.0936          972.1173+-4.9341        
   Int32Array-alloc-large                                           46.0689+-1.2054           45.7415+-1.0931        
   Int32Array-alloc-long-lived                                      85.1817+-1.3147           85.1333+-1.2975        
   Int32Array-alloc                                                  7.4203+-2.9471     ?      7.4226+-2.9809        ?
   Int32Array-Int8Array-view-alloc                                  22.6554+-1.9874           22.5249+-1.9791        
   Int8Array-alloc-long-lived                                       74.0958+-4.6020           71.3239+-1.8159          might be 1.0389x faster
   Int8Array-load-with-byteLength                                    4.8471+-0.0534     ?      4.8699+-0.0613        ?
   Int8Array-load                                                    4.8083+-0.0162            4.7961+-0.0187        
   integer-divide                                                   15.4020+-0.0409           15.3604+-0.0254        
   integer-modulo                                                    1.9058+-0.0186     ?      1.9063+-0.0253        ?
   lots-of-fields                                                   16.2878+-2.4060           15.3368+-2.2646          might be 1.0620x faster
   make-indexed-storage                                              5.0476+-0.6276     ?      5.2915+-0.6570        ? might be 1.0483x slower
   make-rope-cse                                                    16.7825+-3.0361     ?     16.8796+-2.9110        ?
   marsaglia                                                       521.3164+-0.3604          521.1319+-0.2852        
   method-on-number                                                 27.4553+-0.4535           27.3361+-0.2615        
   negative-zero-divide                                              0.3188+-0.0126            0.3132+-0.0077          might be 1.0179x faster
   negative-zero-modulo                                              0.3097+-0.0162            0.2996+-0.0099          might be 1.0339x faster
   negative-zero-negate                                              0.2920+-0.0124     ?      0.2960+-0.0131        ? might be 1.0137x slower
   nested-function-parsing-random                                  408.4075+-12.5558         402.5014+-12.3849         might be 1.0147x faster
   nested-function-parsing                                          56.7902+-3.9412           56.2834+-3.1137        
   new-array-buffer-dead                                             3.9547+-0.0870            3.9533+-0.0709        
   new-array-buffer-push                                            14.8819+-2.4573           14.7503+-2.3242        
   new-array-dead                                                   28.3798+-0.0447           28.3492+-0.0348        
   new-array-push                                                   12.4360+-1.9900     ?     12.4729+-2.0373        ?
   number-test                                                       4.4442+-0.3216            4.3248+-0.0335          might be 1.0276x faster
   object-closure-call                                               8.6885+-0.1751     ?      9.2203+-1.0907        ? might be 1.0612x slower
   object-test                                                       4.7650+-0.0724     ?      4.8056+-0.0967        ?
   poly-stricteq                                                    92.9704+-0.3486     ?     93.2971+-0.8929        ?
   polymorphic-structure                                            21.0709+-0.1185     ?     21.0864+-0.0846        ?
   polyvariant-monomorphic-get-by-id                                12.5332+-0.0749           12.4876+-0.0321        
   put-by-val-large-index-blank-indexing-type                       16.3695+-3.0235           16.1402+-3.0032          might be 1.0142x faster
   rare-osr-exit-on-local                                           20.0854+-0.0356     ?     20.1420+-0.1078        ?
   register-pressure-from-osr                                       31.3997+-0.0490     ?     31.4437+-0.0838        ?
   simple-activation-demo                                           35.0472+-0.5050           34.6783+-0.2331          might be 1.0106x faster
   slow-array-profile-convergence                                    4.9621+-0.2368            4.9196+-0.3122        
   slow-convergence                                                  3.6424+-0.0778            3.5775+-0.0446          might be 1.0182x faster
   sparse-conditional                                                1.2976+-0.0350     ?      1.3050+-0.0500        ?
   splice-to-remove                                                 47.9832+-0.1263     ^     47.4436+-0.0982        ^ definitely 1.0114x faster
   string-concat-object                                              5.0633+-1.4144     ?      5.8572+-1.5479        ? might be 1.1568x slower
   string-concat-pair-object                                         5.0085+-1.3998     ?      5.7935+-1.5459        ? might be 1.1567x slower
   string-concat-pair-simple                                        19.4906+-0.6911           19.3184+-0.5926        
   string-concat-simple                                             19.6532+-0.6493           19.5187+-0.8386        
   string-cons-repeat                                               14.9946+-0.9638           14.9350+-0.9996        
   string-cons-tower                                                15.5005+-0.9733     ?     15.7058+-1.0775        ? might be 1.0132x slower
   string-equality                                                  43.3847+-0.4572           43.1904+-0.0406        
   string-get-by-val-big-char                                       17.4001+-0.2075           17.2647+-0.1957        
   string-get-by-val-out-of-bounds-insane                            5.2148+-0.1702            5.1269+-0.0828          might be 1.0171x faster
   string-get-by-val-out-of-bounds                                   4.7430+-0.0124     ?      4.7464+-0.0249        ?
   string-get-by-val                                                 3.9883+-0.0347     !      4.0724+-0.0366        ! definitely 1.0211x slower
   string-hash                                                       2.5950+-0.0272     ?      2.6163+-0.0384        ?
   string-long-ident-equality                                       38.6109+-0.2759           38.4412+-0.0363        
   string-repeat-arith                                              51.5061+-0.4902     ?     51.9763+-0.6198        ?
   string-sub                                                       99.9758+-1.2785     ?    100.0079+-3.7156        ?
   string-test                                                       4.3229+-0.1005            4.2343+-0.0253          might be 1.0209x faster
   string-var-equality                                              70.9502+-0.1710     ?     71.1273+-0.2964        ?
   structure-hoist-over-transitions                                  4.0573+-0.6026     ?      4.2561+-0.6272        ? might be 1.0490x slower
   switch-char-constant                                              3.3324+-0.0234            3.3259+-0.0317        
   switch-char                                                       7.9442+-0.0243     ?      7.9693+-0.0482        ?
   switch-constant                                                  12.9281+-2.6755     ?     12.9892+-2.5679        ?
   switch-string-basic-big-var                                      21.5866+-0.4242           21.3565+-0.0483          might be 1.0108x faster
   switch-string-basic-big                                          24.9608+-1.8009     ?     27.1146+-1.7301        ? might be 1.0863x slower
   switch-string-basic-var                                          21.2753+-0.0750           21.2695+-0.0400        
   switch-string-basic                                              20.1825+-0.3847           19.8077+-0.0459          might be 1.0189x faster
   switch-string-big-length-tower-var                               29.7831+-0.6199           29.5685+-0.0874        
   switch-string-length-tower-var                                   23.2907+-0.0519           23.2852+-0.0507        
   switch-string-length-tower                                       17.6455+-0.0576     ?     17.6620+-0.0458        ?
   switch-string-short                                              17.6218+-0.0350     ?     17.6589+-0.0737        ?
   switch                                                           19.3067+-2.8221     ?     19.3574+-2.7740        ?
   tear-off-arguments-simple                                         2.3117+-0.0435     ?      2.3781+-0.0286        ? might be 1.0287x slower
   tear-off-arguments                                                3.4755+-0.0340     ?      3.5369+-0.0477        ? might be 1.0176x slower
   temporal-structure                                               21.3210+-0.3743           21.2023+-0.0517        
   to-int32-boolean                                                 21.5763+-0.0396     ?     21.7357+-0.1625        ?
   undefined-test                                                    4.4589+-0.0314            4.4303+-0.0379        

   <arithmetic>                                                     90.5312+-20.6522    ?     92.1376+-22.0489       ? might be 1.0177x slower
   <geometric> *                                                    14.6974+-0.2928     ?     14.7137+-0.3248        ? might be 1.0011x slower
   <harmonic>                                                        5.1456+-0.0794            5.1248+-0.0807          might be 1.0040x faster

                                                                       TipOfTree              ImplicitJettison                                 
DSP:
   filtrr-posterize-tint                                            44.2134+-1.3306           43.9242+-1.3151        
   filtrr-tint-contrast-sat-bright                                  71.7637+-0.8685           71.2836+-0.3472        
   filtrr-tint-sat-adj-contr-mult                                   85.7292+-3.7008           83.8413+-3.1712          might be 1.0225x faster
   filtrr-blur-overlay-sat-contr                                   217.7817+-5.7239          217.0554+-5.9783        
   filtrr-sat-blur-mult-sharpen-contr                              259.7598+-2.0965     ?    263.2921+-4.5074        ? might be 1.0136x slower
   filtrr-sepia-bias                                                33.7648+-3.5145           33.6503+-3.5694        
   route9-vp8                                              x5     1090.6045+-10.1558        1078.6572+-9.2724          might be 1.0111x faster
   starfield                                               x5     1185.4922+-5.3854     ?   1187.0004+-3.7362        ?
   bellard-jslinux                                         x5     2879.1667+-9.2980         2872.1667+-11.1600       
   zynaps-quake3                                           x5     1401.0389+-22.8425        1399.7315+-24.1886       
   zynaps-mandelbrot                                       x5     1106.2737+-5.5673         1106.2389+-4.9541        
   ammojs-asm-js                                           x5      260.8441+-13.2576    ?    262.8664+-14.8387       ?
   ammojs-regular-js                                       x5      244.6981+-11.5234    ?    250.6587+-12.0301       ? might be 1.0244x slower

   <arithmetic>                                                   1013.5025+-3.0629         1012.1865+-2.2018          might be 1.0013x faster
   <geometric> *                                                   621.4527+-7.6916     ?    622.3740+-8.0204        ? might be 1.0015x slower
   <harmonic>                                                      282.7200+-11.0262         282.6506+-10.9849         might be 1.0002x faster

                                                                       TipOfTree              ImplicitJettison                                 
All benchmarks:
   <arithmetic>                                                    219.5496+-11.6277    ?    220.2248+-12.4186       ? might be 1.0031x slower
   <geometric>                                                      26.2264+-0.2780     ?     26.2329+-0.3531        ? might be 1.0002x slower
   <harmonic>                                                        4.9417+-0.0512            4.9170+-0.0565          might be 1.0050x faster

                                                                       TipOfTree              ImplicitJettison                                 
Geomean of preferred means:
   <scaled-result>                                                  42.1420+-0.1530     ?     42.2802+-0.5278        ? might be 1.0033x slower
Comment 15 Geoffrey Garen 2013-09-02 18:06:48 PDT
Comment on attachment 210303 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=210303&action=review

Refactoring looks good to me, but I'd like to see the performance change split into a separate patch.

> Source/JavaScriptCore/ChangeLog:37
> +        This change has some small performance implications. JSBench/google
> +        shows a ~9% regression because it GC's more frequently. However, that
> +        regression is not due to the jettison refactoring - instead it's due to
> +        the fact that this change also makes us more precisely track CodeBlock
> +        memory footprint. Previously, we ignored the size of the bytecode stream.
> +        Now we don't ignore it anyway. This causes some benchmarks to GC more
> +        frequently. It's a bug to have the GC ignore the memory footprint of
> +        CodeBlocks, and if that bug causes some benchmark to run a bit faster
> +        while using a bit more memory, then it's still a bug and we should still
> +        fix it. There are no other performance changes due to this change.

Can you submit the change to count the size of the bytecode stream as a separate patch? That would confirm your theory that this new way of scanning code blocks is performance-neutral. It would also make for clearer svn history, and a clearer patch.
Comment 16 Filip Pizlo 2013-09-02 18:34:00 PDT
(In reply to comment #15)
> (From update of attachment 210303 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=210303&action=review
> 
> Refactoring looks good to me, but I'd like to see the performance change split into a separate patch.
> 
> > Source/JavaScriptCore/ChangeLog:37
> > +        This change has some small performance implications. JSBench/google
> > +        shows a ~9% regression because it GC's more frequently. However, that
> > +        regression is not due to the jettison refactoring - instead it's due to
> > +        the fact that this change also makes us more precisely track CodeBlock
> > +        memory footprint. Previously, we ignored the size of the bytecode stream.
> > +        Now we don't ignore it anyway. This causes some benchmarks to GC more
> > +        frequently. It's a bug to have the GC ignore the memory footprint of
> > +        CodeBlocks, and if that bug causes some benchmark to run a bit faster
> > +        while using a bit more memory, then it's still a bug and we should still
> > +        fix it. There are no other performance changes due to this change.
> 
> Can you submit the change to count the size of the bytecode stream as a separate patch? That would confirm your theory 

To clarify, this isn't a theory - I already confirmed it. 

> that this new way of scanning code blocks is performance-neutral. It would also make for clearer svn history, and a clearer patch.

Sure.
Comment 17 Filip Pizlo 2013-09-02 21:49:58 PDT
Results without the reportExtraMemoryCost() change.  Note that JSBench no longer shows a 3% regression in the arithmetic mean.


Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (r154964)
"ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154964)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                                                       TipOfTree              ImplicitJettison                                 
SunSpider:
   3d-cube                                                           7.6092+-0.2599     ?      7.6923+-0.2637        ? might be 1.0109x slower
   3d-morph                                                          8.5404+-0.1659            8.3645+-0.0755          might be 1.0210x faster
   3d-raytrace                                                       9.8103+-0.3123            9.6302+-0.2153          might be 1.0187x faster
   access-binary-trees                                               2.7199+-0.2865            2.7152+-0.2905        
   access-fannkuch                                                   7.7220+-0.0840            7.6520+-0.0521        
   access-nbody                                                      4.1087+-0.0300            4.1063+-0.0453        
   access-nsieve                                                     4.8093+-0.0696     ?      4.8269+-0.0529        ?
   bitops-3bit-bits-in-byte                                          1.8094+-0.0196     ?      1.8241+-0.0238        ?
   bitops-bits-in-byte                                               6.6906+-0.0907     ?      6.7012+-0.0714        ?
   bitops-bitwise-and                                                2.7965+-0.0219            2.7838+-0.0403        
   bitops-nsieve-bits                                                4.6360+-0.0369     ?      4.6578+-0.0363        ?
   controlflow-recursive                                             2.9509+-0.0269     ?      2.9549+-0.0119        ?
   crypto-aes                                                        6.0345+-0.2717     ?      6.0586+-0.2989        ?
   crypto-md5                                                        3.1875+-0.0495     ?      3.2804+-0.0562        ? might be 1.0291x slower
   crypto-sha1                                                       2.9337+-0.0481     ?      2.9650+-0.0343        ? might be 1.0107x slower
   date-format-tofte                                                12.6566+-0.9516     ?     13.0299+-1.0430        ? might be 1.0295x slower
   date-format-xparb                                                 9.1078+-0.6258     ?      9.1693+-0.6579        ?
   math-cordic                                                       3.8672+-0.0257     ?      3.9419+-0.0612        ? might be 1.0193x slower
   math-partial-sums                                                10.4909+-0.0607     ?     10.4975+-0.0793        ?
   math-spectral-norm                                                2.8854+-0.0246            2.8732+-0.0842        
   regexp-dna                                                       12.7883+-0.5695     ?     12.7938+-0.5092        ?
   string-base64                                                     6.7566+-0.5090     ?      6.8600+-0.4901        ? might be 1.0153x slower
   string-fasta                                                     12.1271+-0.1521     ?     12.1993+-0.1333        ?
   string-tagcloud                                                  14.8122+-0.1676     ?     14.8172+-0.2136        ?
   string-unpack-code                                               32.0134+-0.5174           31.5321+-0.3647          might be 1.0153x faster
   string-validate-input                                             8.8170+-0.2111     ?      8.8352+-0.2553        ?

   <arithmetic> *                                                    7.7954+-0.1076     ?      7.7986+-0.1264        ? might be 1.0004x slower
   <geometric>                                                       6.1963+-0.0844     ?      6.2150+-0.0949        ? might be 1.0030x slower
   <harmonic>                                                        5.0392+-0.0646     ?      5.0607+-0.0719        ? might be 1.0043x slower

                                                                       TipOfTree              ImplicitJettison                                 
V8Spider:
   crypto                                                           81.4630+-0.3098           81.3337+-0.3441        
   deltablue                                                       102.1397+-1.7780     ?    102.1652+-1.5412        ?
   earley-boyer                                                     71.9896+-0.9835     ?     72.8013+-1.2106        ? might be 1.0113x slower
   raytrace                                                         43.7062+-3.7618     ?     45.9620+-4.9641        ? might be 1.0516x slower
   regexp                                                          102.2680+-0.3074     ?    102.5945+-0.3803        ?
   richards                                                        115.8428+-1.4996     ?    116.8501+-1.2253        ?
   splay                                                            60.0478+-3.0382     ?     60.3149+-2.9320        ?

   <arithmetic>                                                     82.4939+-0.7044     ?     83.1460+-0.6556        ? might be 1.0079x slower
   <geometric> *                                                    78.5446+-0.9613     ?     79.3534+-0.9787        ? might be 1.0103x slower
   <harmonic>                                                       74.2602+-1.3328     ?     75.2602+-1.4837        ? might be 1.0135x slower

                                                                       TipOfTree              ImplicitJettison                                 
Octane and V8v7:
   encrypt                                                          0.47715+-0.00435          0.47441+-0.00082       
   decrypt                                                          8.65572+-0.01505    ?     8.67222+-0.04087       ?
   deltablue                                               x2       0.63853+-0.02896    ?     0.64364+-0.04636       ?
   earley                                                           0.90738+-0.01559          0.90693+-0.01918       
   boyer                                                           12.83705+-0.19705         12.66959+-0.04757         might be 1.0132x faster
   raytrace                                                x2       4.40987+-0.07078    ?     4.42154+-0.05389       ?
   regexp                                                  x2      33.22945+-0.52463         32.94922+-0.27870       
   richards                                                x2       0.32194+-0.00447    ?     0.32249+-0.00508       ?
   splay                                                   x2       0.65980+-0.03371    ?     0.66043+-0.02941       ?
   navier-stokes                                           x2      10.93885+-0.02862         10.92387+-0.00781       
   closure                                                          0.43232+-0.04701    ?     0.43375+-0.04699       ?
   jquery                                                           5.31228+-0.70639    ?     5.33513+-0.70840       ?
   gbemu                                                   x2     101.34195+-7.26352         93.31950+-4.98609         might be 1.0860x faster
   mandreel                                                x2     194.31791+-1.08132    ?   194.98320+-1.26498       ?
   pdfjs                                                   x2     100.17874+-0.37535         99.63650+-0.25724       
   box2d                                                   x2      35.34444+-0.49458    ?    35.40152+-0.48689       ?

V8v7:
   <arithmetic>                                                     7.70464+-0.07417          7.66035+-0.03549         might be 1.0058x faster
   <geometric> *                                                    2.49459+-0.02085          2.49244+-0.03066         might be 1.0009x faster
   <harmonic>                                                       0.97006+-0.01010    ?     0.97104+-0.01761       ? might be 1.0010x slower

Octane including V8v7:
   <arithmetic>                                                    38.13019+-0.59071         37.50061+-0.41403         might be 1.0168x faster
   <geometric> *                                                    7.25919+-0.11712          7.21189+-0.09384         might be 1.0066x faster
   <harmonic>                                                       1.35715+-0.02340    ?     1.35885+-0.02994       ? might be 1.0012x slower

                                                                       TipOfTree              ImplicitJettison                                 
Kraken:
   ai-astar                                                         491.329+-0.649      ?     491.897+-0.827         ?
   audio-beat-detection                                             254.760+-3.132            252.638+-2.871         
   audio-dft                                                        311.981+-1.664      ?     312.704+-2.104         ?
   audio-fft                                                        147.581+-0.213      ?     148.186+-0.831         ?
   audio-oscillator                                                 247.649+-1.385            247.496+-1.514         
   imaging-darkroom                                                 296.796+-1.105      ?     298.189+-1.471         ?
   imaging-desaturate                                               159.777+-0.278      ?     159.800+-0.303         ?
   imaging-gaussian-blur                                            408.465+-5.370            404.853+-1.170         
   json-parse-financial                                              81.074+-0.258      !      82.604+-0.161         ! definitely 1.0189x slower
   json-stringify-tinderbox                                         108.889+-2.752      ^     105.004+-0.507         ^ definitely 1.0370x faster
   stanford-crypto-aes                                              110.419+-1.251            109.401+-0.852         
   stanford-crypto-ccm                                              119.257+-6.738      ?     122.181+-6.297         ? might be 1.0245x slower
   stanford-crypto-pbkdf2                                           271.469+-1.609            269.812+-2.985         
   stanford-crypto-sha256-iterative                                 128.541+-0.346      ^     127.356+-0.312         ^ definitely 1.0093x faster

   <arithmetic> *                                                   224.142+-0.868            223.723+-0.478           might be 1.0019x faster
   <geometric>                                                      194.591+-1.107            194.280+-0.728           might be 1.0016x faster
   <harmonic>                                                       169.584+-1.329            169.433+-0.945           might be 1.0009x faster

                                                                       TipOfTree              ImplicitJettison                                 
JSBench:
   amazon                                                           10.0000+-0.0000     ?     10.1667+-0.2473        ? might be 1.0167x slower
   facebook                                                         38.5833+-0.4248     ?     39.0000+-0.6636        ? might be 1.0108x slower
   google                                                           68.0833+-1.3936           68.0833+-0.9939        
   twitter                                                           9.9167+-0.3272     ?     10.1667+-0.2473        ? might be 1.0252x slower
   yahoo                                                             3.8333+-0.2473            3.8333+-0.2473        

   <arithmetic> *                                                   26.0833+-0.2787     ?     26.2500+-0.2107        ? might be 1.0064x slower
   <geometric>                                                      15.8245+-0.2039     ?     15.9907+-0.2130        ? might be 1.0105x slower
   <harmonic>                                                        9.9188+-0.3437     ?     10.0060+-0.3479        ? might be 1.0088x slower

                                                                       TipOfTree              ImplicitJettison                                 
JSRegress:
   adapt-to-double-divide                                           22.5453+-0.0330           22.5322+-0.0330        
   aliased-arguments-getbyval                                        0.9640+-0.0294     ?      0.9997+-0.0318        ? might be 1.0370x slower
   allocate-big-object                                               4.4868+-1.3899            4.0390+-1.2788          might be 1.1109x faster
   arity-mismatch-inlining                                           0.8884+-0.0343            0.8809+-0.0234        
   array-access-polymorphic-structure                                9.0436+-1.9957     ?      9.2468+-2.0873        ? might be 1.0225x slower
   array-nonarray-polymorhpic-access                                72.0459+-25.1076          60.4826+-0.0896          might be 1.1912x faster
   array-with-double-add                                             5.3684+-0.0243     ?      5.4059+-0.0404        ?
   array-with-double-increment                                       4.1749+-0.0689            4.1430+-0.0396        
   array-with-double-mul-add                                         7.3663+-0.2581     ?      7.4556+-0.2328        ? might be 1.0121x slower
   array-with-double-sum                                             7.8983+-0.0513            7.8593+-0.0248        
   array-with-int32-add-sub                                          9.3619+-0.0361            9.3075+-0.0200        
   array-with-int32-or-double-sum                                    7.9602+-0.0158     ?      7.9645+-0.0167        ?
   ArrayBuffer-DataView-alloc-large-long-lived                     130.0518+-0.9105          129.3100+-0.6274        
   ArrayBuffer-DataView-alloc-long-lived                            42.4460+-3.8454           41.8191+-3.8378          might be 1.0150x faster
   ArrayBuffer-Int32Array-byteOffset                                 8.7189+-0.0227     ?      8.7478+-0.0662        ?
   ArrayBuffer-Int8Array-alloc-huge-long-lived                     217.6167+-2.2998          216.4716+-2.8280        
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented         172.8489+-3.9112     ?    173.4783+-3.2949        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived                    132.1901+-1.4942          131.6699+-1.5067        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer                    83.2396+-11.4100          81.0640+-10.7675         might be 1.0268x faster
   ArrayBuffer-Int8Array-alloc-long-lived                           41.1225+-3.7190           40.8107+-3.9050        
   ArrayBuffer-Int8Array-alloc                                      36.6668+-3.9373           36.0413+-3.9775          might be 1.0174x faster
   basic-set                                                        21.4052+-0.3236     ?     21.4517+-0.3436        ?
   big-int-mul                                                       4.7613+-0.0377            4.7365+-0.0259        
   boolean-test                                                      4.4033+-0.0514            4.3524+-0.0295          might be 1.0117x faster
   branch-fold                                                       4.7016+-0.0137     !      4.7474+-0.0271        ! definitely 1.0097x slower
   cast-int-to-double                                               14.1181+-0.0388     ?     14.1222+-0.0348        ?
   cell-argument                                                    14.5110+-0.1947           14.4967+-0.2027        
   cfg-simplify                                                      3.8113+-0.0261            3.7941+-0.0340        
   cmpeq-obj-to-obj-other                                           12.3427+-0.2227     ?     12.4859+-0.2672        ? might be 1.0116x slower
   constant-test                                                     8.6309+-0.0688     ?      8.6375+-0.0558        ?
   DataView-custom-properties                                      136.7026+-0.6207          136.1101+-0.8427        
   delay-tear-off-arguments-strictmode                               3.4095+-0.0404            3.3802+-0.0357        
   direct-arguments-getbyval                                         0.7991+-0.0128            0.7945+-0.0302        
   double-pollution-getbyval                                        10.7627+-0.0395     ?     10.7853+-0.0341        ?
   double-pollution-putbyoffset                                      7.2864+-0.5209            7.1524+-0.5339          might be 1.0187x faster
   empty-string-plus-int                                            13.9536+-0.2308           13.8622+-0.1696        
   emscripten-cube2hash                                             49.5278+-2.7986     ?     52.3181+-2.7973        ? might be 1.0563x slower
   emscripten-memops                                             10476.5049+-528.3420   ?  10505.1029+-483.2218      ?
   external-arguments-getbyval                                       2.3837+-0.1488            2.3692+-0.1378        
   external-arguments-putbyval                                       3.9258+-0.2622     ?      4.0134+-0.2460        ? might be 1.0223x slower
   Float32Array-matrix-mult                                          6.6930+-0.1898     ?      6.7130+-0.1785        ?
   Float32Array-to-Float64Array-set                                 97.2792+-0.8390           96.5809+-0.6334        
   Float64Array-alloc-long-lived                                   108.7377+-0.5336          108.4215+-0.5352        
   Float64Array-to-Int16Array-set                                  112.2077+-0.6930          111.9416+-0.9850        
   fold-double-to-int                                               25.6047+-0.4813           25.4989+-0.3424        
   function-dot-apply                                                3.0417+-0.0233            3.0291+-0.0219        
   function-test                                                     4.9188+-0.1117            4.8155+-0.0983          might be 1.0214x faster
   get-by-id-chain-from-try-block                                    6.5887+-0.0224     ?      6.5907+-0.0567        ?
   get-by-id-proto-or-self                                          22.9899+-0.3069     ?     23.0391+-0.3854        ?
   get-by-id-self-or-proto                                          23.2573+-0.3932     ?     23.3561+-0.3269        ?
   HashMap-put-get-iterate-keys                                     43.9475+-0.6076           43.7813+-0.5548        
   HashMap-put-get-iterate                                          53.7388+-0.6084     ?     54.3502+-1.3796        ? might be 1.0114x slower
   HashMap-string-put-get-iterate                                   64.9091+-0.8361           64.4281+-0.5766        
   imul-double-only                                                 17.4542+-0.0226     ?     17.8201+-0.7227        ? might be 1.0210x slower
   imul-int-only                                                    15.5818+-0.0368     ?     15.5860+-0.0430        ?
   imul-mixed                                                       22.3935+-0.7166           22.0179+-0.0249          might be 1.0171x faster
   in-four-cases                                                    26.0535+-0.0229     !     26.2182+-0.1111        ! definitely 1.0063x slower
   in-one-case-false                                                12.2280+-0.0303     ?     12.2516+-0.0376        ?
   in-one-case-true                                                 12.2181+-0.0316     ?     12.2938+-0.1117        ?
   in-two-cases                                                     12.6373+-0.0239           12.6127+-0.0395        
   indexed-properties-in-objects                                     4.0797+-0.0298     ?      4.1638+-0.0846        ? might be 1.0206x slower
   inline-arguments-access                                           1.4024+-0.0156     ?      1.4066+-0.0343        ?
   inline-arguments-local-escape                                    27.3204+-0.6930           26.4215+-0.3232          might be 1.0340x faster
   inline-get-scoped-var                                             6.8362+-0.0379            6.7595+-0.0650          might be 1.0114x faster
   inlined-put-by-id-transition                                     14.7154+-0.1737     ?     14.8836+-0.1758        ? might be 1.0114x slower
   int-or-other-abs-then-get-by-val                                  8.9078+-0.1603     ?      8.9583+-0.1840        ?
   int-or-other-abs-zero-then-get-by-val                            36.4547+-0.1060     ?     36.5175+-0.1575        ?
   int-or-other-add-then-get-by-val                                 10.2180+-0.0365     ?     10.2670+-0.0912        ?
   int-or-other-add                                                 10.4069+-0.0441           10.3878+-0.0372        
   int-or-other-div-then-get-by-val                                  6.1195+-0.0261     ?      6.1215+-0.0393        ?
   int-or-other-max-then-get-by-val                                  7.1088+-0.0916            7.0618+-0.0312        
   int-or-other-min-then-get-by-val                                  7.1803+-0.0613            7.1676+-0.0404        
   int-or-other-mod-then-get-by-val                                  6.0450+-0.1057            5.9676+-0.0252          might be 1.0130x faster
   int-or-other-mul-then-get-by-val                                  6.5628+-0.0880     ^      6.4209+-0.0378        ^ definitely 1.0221x faster
   int-or-other-neg-then-get-by-val                                  8.0006+-0.0518            7.9679+-0.0380        
   int-or-other-neg-zero-then-get-by-val                            36.9265+-0.7394           36.2842+-0.0664          might be 1.0177x faster
   int-or-other-sub-then-get-by-val                                 10.5784+-0.0847     ?     10.5808+-0.0251        ?
   int-or-other-sub                                                  8.1335+-0.0327     ?      8.1359+-0.0296        ?
   int-overflow-local                                               11.7926+-0.0367     ?     11.8599+-0.0436        ?
   Int16Array-alloc-long-lived                                      71.7590+-0.3805           71.7106+-0.5310        
   Int16Array-bubble-sort-with-byteLength                           48.2921+-0.1260     ?     48.5295+-0.3186        ?
   Int16Array-bubble-sort                                           47.7671+-0.2194           47.6770+-0.1348        
   Int16Array-load-int-mul                                           2.0065+-0.0187            2.0014+-0.0221        
   Int16Array-to-Int32Array-set                                     88.5658+-0.7033     !     93.7748+-0.5168        ! definitely 1.0588x slower
   Int32Array-alloc-huge-long-lived                                725.1355+-14.1244         720.8295+-15.6631       
   Int32Array-alloc-huge                                           818.4932+-6.8506          810.2781+-6.5496          might be 1.0101x faster
   Int32Array-alloc-large-long-lived                               973.5072+-9.2513     ?    983.5853+-7.6258        ? might be 1.0104x slower
   Int32Array-alloc-large                                           46.7437+-0.8107           45.7942+-0.6759          might be 1.0207x faster
   Int32Array-alloc-long-lived                                      85.1979+-1.1622           85.0947+-1.2663        
   Int32Array-alloc                                                  7.3815+-2.9606     ?      7.4424+-2.9916        ?
   Int32Array-Int8Array-view-alloc                                  22.9276+-1.9769           22.2734+-1.7833          might be 1.0294x faster
   Int8Array-alloc-long-lived                                       71.8527+-1.8866           71.3330+-1.4488        
   Int8Array-load-with-byteLength                                    4.8385+-0.0283            4.8181+-0.0194        
   Int8Array-load                                                    4.8288+-0.0201            4.8119+-0.0220        
   integer-divide                                                   15.4233+-0.0893           15.3596+-0.0231        
   integer-modulo                                                    1.9604+-0.0886            1.9079+-0.0220          might be 1.0275x faster
   lots-of-fields                                                   15.9912+-2.4697     ?     16.1531+-2.3912        ? might be 1.0101x slower
   make-indexed-storage                                              4.8751+-0.5807     ?      5.0185+-0.6283        ? might be 1.0294x slower
   make-rope-cse                                                    16.7977+-2.9695           16.7855+-2.9516        
   marsaglia                                                       521.0994+-0.5673     ?    521.1359+-0.3132        ?
   method-on-number                                                 26.7612+-0.1477     ?     27.0664+-0.3683        ? might be 1.0114x slower
   negative-zero-divide                                              0.3203+-0.0136            0.3123+-0.0087          might be 1.0255x faster
   negative-zero-modulo                                              0.3025+-0.0116     ?      0.3031+-0.0093        ?
   negative-zero-negate                                              0.2889+-0.0111     ?      0.2908+-0.0107        ?
   nested-function-parsing-random                                  408.6951+-12.3142         404.9318+-12.3736       
   nested-function-parsing                                          57.0143+-4.0261     ?     57.0505+-3.9748        ?
   new-array-buffer-dead                                             3.9359+-0.1247     ?      3.9951+-0.0892        ? might be 1.0150x slower
   new-array-buffer-push                                            14.8644+-2.4003     ?     15.0474+-2.4038        ? might be 1.0123x slower
   new-array-dead                                                   28.3854+-0.0312     ?     28.5239+-0.2078        ?
   new-array-push                                                   12.4008+-1.9994     ?     12.4728+-2.0136        ?
   number-test                                                       4.3299+-0.0525            4.3021+-0.0314        
   object-closure-call                                               9.2589+-1.1204     ?      9.7386+-1.3953        ? might be 1.0518x slower
   object-test                                                       4.8022+-0.1057            4.7449+-0.0777          might be 1.0121x faster
   poly-stricteq                                                    93.0923+-0.3415     ?     93.1412+-0.3196        ?
   polymorphic-structure                                            21.1069+-0.0542           21.0592+-0.0592        
   polyvariant-monomorphic-get-by-id                                12.4600+-0.0150     ?     12.5305+-0.0569        ?
   put-by-val-large-index-blank-indexing-type                       16.2878+-3.1001     ?     16.3387+-3.0675        ?
   rare-osr-exit-on-local                                           20.1345+-0.0277           20.0802+-0.0382        
   register-pressure-from-osr                                       31.3923+-0.0418           31.3694+-0.0357        
   simple-activation-demo                                           34.7484+-0.2487     ?     34.8054+-0.1997        ?
   slow-array-profile-convergence                                    4.9100+-0.2456            4.8144+-0.2431          might be 1.0199x faster
   slow-convergence                                                  3.5933+-0.0502            3.5881+-0.0627        
   sparse-conditional                                                1.3272+-0.0212            1.3224+-0.0295        
   splice-to-remove                                                 47.8836+-0.0849     ^     47.4467+-0.1239        ^ definitely 1.0092x faster
   string-concat-object                                              5.2163+-1.4868            5.0887+-1.4358          might be 1.0251x faster
   string-concat-pair-object                                         4.9793+-1.4071     ?      5.0482+-1.4662        ? might be 1.0138x slower
   string-concat-pair-simple                                        19.3862+-0.8865     ?     19.5129+-0.7701        ?
   string-concat-simple                                             19.4484+-0.7129           19.2956+-0.6422        
   string-cons-repeat                                               15.0039+-1.0009     ?     15.0624+-1.1299        ?
   string-cons-tower                                                15.7162+-1.0716           15.3684+-0.9535          might be 1.0226x faster
   string-equality                                                  43.4599+-0.3870           43.1770+-0.0457        
   string-get-by-val-big-char                                       17.2520+-0.2343     ?     17.2725+-0.1957        ?
   string-get-by-val-out-of-bounds-insane                            5.1425+-0.0649            5.0750+-0.0658          might be 1.0133x faster
   string-get-by-val-out-of-bounds                                   4.7369+-0.0225            4.7321+-0.0225        
   string-get-by-val                                                 3.9964+-0.0265     !      4.1042+-0.0391        ! definitely 1.0270x slower
   string-hash                                                       2.5952+-0.0271            2.5867+-0.0253        
   string-long-ident-equality                                       38.4670+-0.2296     ?     38.9421+-0.7073        ? might be 1.0124x slower
   string-repeat-arith                                              52.3725+-0.9391           51.6423+-0.4045          might be 1.0141x faster
   string-sub                                                       99.1375+-0.7746     ?    104.5398+-7.1642        ? might be 1.0545x slower
   string-test                                                       4.2218+-0.0205     ?      4.2333+-0.0239        ?
   string-var-equality                                              71.1598+-0.3313           71.0704+-0.3784        
   structure-hoist-over-transitions                                  4.0612+-0.6031            4.0506+-0.5820        
   switch-char-constant                                              3.3309+-0.0349     ?      3.3473+-0.0230        ?
   switch-char                                                       7.9525+-0.0256     ?      7.9705+-0.0348        ?
   switch-constant                                                  13.1070+-2.8166           12.7950+-2.6698          might be 1.0244x faster
   switch-string-basic-big-var                                      21.3973+-0.0489           21.3438+-0.0381        
   switch-string-basic-big                                          24.2545+-1.4830     ?     26.1890+-1.8757        ? might be 1.0798x slower
   switch-string-basic-var                                          21.2496+-0.0530     !     21.6655+-0.3239        ! definitely 1.0196x slower
   switch-string-basic                                              19.8133+-0.0548     ?     19.8622+-0.0759        ?
   switch-string-big-length-tower-var                               29.7427+-0.2075           29.5266+-0.0967        
   switch-string-length-tower-var                                   23.2948+-0.0695     ?     23.2960+-0.0384        ?
   switch-string-length-tower                                       17.6173+-0.0330     ?     17.7102+-0.0993        ?
   switch-string-short                                              17.6302+-0.0587     ?     17.6347+-0.0569        ?
   switch                                                           17.2043+-2.6394           16.5340+-2.4195          might be 1.0405x faster
   tear-off-arguments-simple                                         2.3016+-0.0440     ?      2.3138+-0.0399        ?
   tear-off-arguments                                                3.4644+-0.0251     ?      3.4736+-0.0492        ?
   temporal-structure                                               21.0933+-0.0439           21.0855+-0.0561        
   to-int32-boolean                                                 21.5533+-0.0260     ?     21.5673+-0.0480        ?
   undefined-test                                                    4.4470+-0.0232     ?      4.4662+-0.0625        ?

   <arithmetic>                                                     90.5983+-20.7758    ?     90.6297+-20.7755       ? might be 1.0003x slower
   <geometric> *                                                    14.6796+-0.3048           14.6669+-0.3553          might be 1.0009x faster
   <harmonic>                                                        5.1246+-0.0831            5.1158+-0.0907          might be 1.0017x faster

                                                                       TipOfTree              ImplicitJettison                                 
DSP:
   filtrr-posterize-tint                                            44.0309+-1.3639     ?     44.0596+-1.4119        ?
   filtrr-tint-contrast-sat-bright                                  71.2073+-0.3948     ?     71.6827+-0.8522        ?
   filtrr-tint-sat-adj-contr-mult                                   86.0472+-3.6161           85.7312+-3.7417        
   filtrr-blur-overlay-sat-contr                                   219.7635+-5.9953          218.3678+-5.7187        
   filtrr-sat-blur-mult-sharpen-contr                              260.1861+-1.9079          258.5276+-1.6658        
   filtrr-sepia-bias                                                33.9601+-3.5925           33.5398+-3.4420          might be 1.0125x faster
   route9-vp8                                              x5     1089.1169+-8.1935         1086.1057+-6.1966        
   starfield                                               x5     1188.6717+-3.0951     ?   1188.9186+-5.7830        ?
   bellard-jslinux                                         x5     2881.8333+-16.1644        2877.5833+-9.5227        
   zynaps-quake3                                           x5     1396.8693+-25.6225        1395.7904+-23.1548       
   zynaps-mandelbrot                                       x5     1106.4576+-5.3028         1105.4316+-4.3344        
   ammojs-asm-js                                           x5      263.4510+-14.3026         257.5503+-14.0830         might be 1.0229x faster
   ammojs-regular-js                                       x5      251.8095+-11.2739         246.7334+-10.3089         might be 1.0206x faster

   <arithmetic>                                                   1014.7864+-2.2201         1012.2555+-2.5921          might be 1.0025x faster
   <geometric> *                                                   624.4404+-7.5139          620.4609+-8.1379          might be 1.0064x faster
   <harmonic>                                                      284.1913+-10.3974         281.9868+-11.1326         might be 1.0078x faster

                                                                       TipOfTree              ImplicitJettison                                 
All benchmarks:
   <arithmetic>                                                    219.7869+-11.7053         219.3710+-11.6034         might be 1.0019x faster
   <geometric>                                                      26.2403+-0.3062           26.2019+-0.3373          might be 1.0015x faster
   <harmonic>                                                        4.9477+-0.0597            4.9464+-0.0593          might be 1.0003x faster

                                                                       TipOfTree              ImplicitJettison                                 
Geomean of preferred means:
   <scaled-result>                                                  42.1887+-0.2058     ?     42.1959+-0.1839        ? might be 1.0002x slower
Comment 18 Filip Pizlo 2013-09-02 21:52:01 PDT
Created attachment 210321 [details]
the patch

Updated patch without the fix for https://bugs.webkit.org/show_bug.cgi?id=120615
Comment 19 WebKit Commit Bot 2013-09-02 21:53:35 PDT
Attachment 210321 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1
Source/JavaScriptCore/interpreter/JSStack.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 20 Oliver Hunt 2013-09-03 09:31:55 PDT
Comment on attachment 210321 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=210321&action=review

> Source/JavaScriptCore/CMakeLists.txt:-174
> -    heap/CopiedSpace.cpp
> -    heap/CopyVisitor.cpp
> -    heap/ConservativeRoots.cpp

It seems wrong to remove these?  Or is this a duplicated include?
Comment 21 Filip Pizlo 2013-09-03 09:35:39 PDT
(In reply to comment #20)
> (From update of attachment 210321 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=210321&action=review
> 
> > Source/JavaScriptCore/CMakeLists.txt:-174
> > -    heap/CopiedSpace.cpp
> > -    heap/CopyVisitor.cpp
> > -    heap/ConservativeRoots.cpp
> 
> It seems wrong to remove these?  Or is this a duplicated include?

They're duplicates.  I'm removing them.
Comment 22 Filip Pizlo 2013-09-03 09:38:40 PDT
Landed in http://trac.webkit.org/changeset/154986