Bug 120022 - DFG should inline new typedArray()
Summary: DFG should inline new typedArray()
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:
Blocks:
 
Reported: 2013-08-19 12:45 PDT by Filip Pizlo
Modified: 2013-08-21 13:02 PDT (History)
11 users (show)

See Also:


Attachments
work in progress (18.43 KB, patch)
2013-08-19 12:46 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
almost done (39.78 KB, patch)
2013-08-20 17:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (57.57 KB, patch)
2013-08-20 18:37 PDT, Filip Pizlo
webkit-ews: commit-queue-
Details | Formatted Diff | Diff
the patch (57.59 KB, patch)
2013-08-20 20:35 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-19 12:45:39 PDT
Patch forthcoming.
Comment 1 Filip Pizlo 2013-08-19 12:46:44 PDT
Created attachment 209110 [details]
work in progress
Comment 2 Filip Pizlo 2013-08-20 17:36:30 PDT
Created attachment 209240 [details]
almost done
Comment 3 Filip Pizlo 2013-08-20 18:37:26 PDT
Created attachment 209245 [details]
the patch
Comment 4 WebKit Commit Bot 2013-08-20 18:39:34 PDT
Attachment 209245 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast/js/regress/Float64Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Float64Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int16Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int16Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int8Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int8Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/script-tests/Float64Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int16Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int8Array-alloc-long-lived.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/bytecode/SpeculatedType.h', u'Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h', u'Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGCCallHelpers.h', u'Source/JavaScriptCore/dfg/DFGCSEPhase.cpp', u'Source/JavaScriptCore/dfg/DFGClobberize.h', u'Source/JavaScriptCore/dfg/DFGFixupPhase.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGNode.h', u'Source/JavaScriptCore/dfg/DFGNodeType.h', u'Source/JavaScriptCore/dfg/DFGOperations.cpp', u'Source/JavaScriptCore/dfg/DFGOperations.h', u'Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGSafeToExecute.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/jit/JITOpcodes32_64.cpp', u'Source/JavaScriptCore/runtime/JSArray.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSObject.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h']" exit_code: 1
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:171:  The parameter name "type" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1691:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 5 Early Warning System Bot 2013-08-20 18:45:44 PDT
Comment on attachment 209245 [details]
the patch

Attachment 209245 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1520382
Comment 6 EFL EWS Bot 2013-08-20 18:45:47 PDT
Comment on attachment 209245 [details]
the patch

Attachment 209245 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1515727
Comment 7 Early Warning System Bot 2013-08-20 18:47:25 PDT
Comment on attachment 209245 [details]
the patch

Attachment 209245 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1525239
Comment 8 EFL EWS Bot 2013-08-20 19:03:13 PDT
Comment on attachment 209245 [details]
the patch

Attachment 209245 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1512756
Comment 9 Filip Pizlo 2013-08-20 20:35:25 PDT
Created attachment 209247 [details]
the patch

A fix for less intelligent compilers.
Comment 10 WebKit Commit Bot 2013-08-20 20:37:04 PDT
Attachment 209247 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast/js/regress/Float64Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Float64Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int16Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int16Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int8Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int8Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/script-tests/Float64Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int16Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int8Array-alloc-long-lived.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/bytecode/SpeculatedType.h', u'Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h', u'Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGCCallHelpers.h', u'Source/JavaScriptCore/dfg/DFGCSEPhase.cpp', u'Source/JavaScriptCore/dfg/DFGClobberize.h', u'Source/JavaScriptCore/dfg/DFGFixupPhase.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGNode.h', u'Source/JavaScriptCore/dfg/DFGNodeType.h', u'Source/JavaScriptCore/dfg/DFGOperations.cpp', u'Source/JavaScriptCore/dfg/DFGOperations.h', u'Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGSafeToExecute.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/jit/JITOpcodes32_64.cpp', u'Source/JavaScriptCore/runtime/JSArray.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSObject.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h']" exit_code: 1
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:171:  The parameter name "type" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1691:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 11 Oliver Hunt 2013-08-21 08:52:57 PDT
Comment on attachment 209247 [details]
the patch

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

> Source/JavaScriptCore/ChangeLog:18
> +        is turned into the NewTypedArray intrinsic. Later, of child1 (i.e. 'blah')

s/of/if

>> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:171
>> +    bool handleTypedArrayConstructor(int resultOperand, InternalFunction*, int registerOffset, int argumentCountIncludingThis, TypedArrayType type);
> 
> The parameter name "type" adds no information, so it should be removed.  [readability/parameter_name] [5]

Fix this :)
Comment 12 Filip Pizlo 2013-08-21 10:19:48 PDT
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 (r154377)
"InlineAlloc" at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154377)

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                InlineAlloc                                    
SunSpider:
   3d-cube                                                 7.7747+-0.2891            7.6122+-0.2301          might be 1.0213x faster
   3d-morph                                                8.4042+-0.0833     ?      8.4356+-0.0870        ?
   3d-raytrace                                             9.5497+-0.2998            9.5160+-0.3047        
   access-binary-trees                                     2.7488+-0.3093            2.7450+-0.3167        
   access-fannkuch                                         7.6606+-0.0376            7.6433+-0.0390        
   access-nbody                                            4.1223+-0.0489            4.1041+-0.0394        
   access-nsieve                                           4.9050+-0.0653            4.8810+-0.0746        
   bitops-3bit-bits-in-byte                                1.8460+-0.0329     ^      1.7946+-0.0107        ^ definitely 1.0287x faster
   bitops-bits-in-byte                                     6.6703+-0.0584     ?      6.7175+-0.0737        ?
   bitops-bitwise-and                                      2.8029+-0.0326            2.7653+-0.0429          might be 1.0136x faster
   bitops-nsieve-bits                                      4.7089+-0.0393            4.7014+-0.0414        
   controlflow-recursive                                   2.9434+-0.0240     ?      2.9978+-0.0708        ? might be 1.0185x slower
   crypto-aes                                              5.9733+-0.3473            5.9107+-0.2899          might be 1.0106x faster
   crypto-md5                                              3.2492+-0.0606            3.2384+-0.0617        
   crypto-sha1                                             2.9954+-0.0452            2.9403+-0.0437          might be 1.0187x faster
   date-format-tofte                                      13.1546+-1.0071           13.1275+-0.9659        
   date-format-xparb                                       9.3071+-0.6714     ?      9.5249+-0.7396        ? might be 1.0234x slower
   math-cordic                                             3.9242+-0.0352     ?      3.9461+-0.0192        ?
   math-partial-sums                                      10.4970+-0.0290           10.4726+-0.0370        
   math-spectral-norm                                      2.8442+-0.0370     ?      2.8529+-0.0297        ?
   regexp-dna                                             12.9782+-0.6301           12.8178+-0.5322          might be 1.0125x faster
   string-base64                                           6.4370+-0.5505            6.4214+-0.5929        
   string-fasta                                           12.2881+-0.1464           12.2108+-0.1253        
   string-tagcloud                                        14.8669+-0.2310     ?     14.8729+-0.2187        ?
   string-unpack-code                                     32.3795+-0.7718           32.0481+-0.3149          might be 1.0103x faster
   string-validate-input                                   9.0677+-0.1770            8.9481+-0.2276          might be 1.0134x faster

   <arithmetic> *                                          7.8500+-0.1349            7.8172+-0.1398          might be 1.0042x faster
   <geometric>                                             6.2312+-0.1016            6.2069+-0.1029          might be 1.0039x faster
   <harmonic>                                              5.0701+-0.0759            5.0428+-0.0787          might be 1.0054x faster

                                                             TipOfTree                InlineAlloc                                    
V8Spider:
   crypto                                                 81.5586+-0.3559           81.4630+-0.3788        
   deltablue                                             102.2116+-1.0560     ?    102.5456+-0.5378        ?
   earley-boyer                                           71.6705+-0.3700           71.6049+-0.5320        
   raytrace                                               45.9929+-5.3371     ?     46.1615+-5.1969        ?
   regexp                                                104.1917+-2.0254          102.5365+-0.4734          might be 1.0161x faster
   richards                                              117.2156+-1.6040          116.5673+-1.7465        
   splay                                                  59.8726+-3.4770     ?     59.9441+-3.4551        ?

   <arithmetic>                                           83.2448+-0.8593           82.9747+-0.7452          might be 1.0033x faster
   <geometric> *                                          79.3191+-1.1836           79.1510+-0.9761          might be 1.0021x faster
   <harmonic>                                             75.1002+-1.6936           75.0304+-1.4054          might be 1.0009x faster

                                                             TipOfTree                InlineAlloc                                    
Octane and V8v7:
   encrypt                                                0.47487+-0.00076          0.47478+-0.00069       
   decrypt                                                8.66462+-0.02477          8.65431+-0.01733       
   deltablue                                     x2       0.59545+-0.00631          0.59416+-0.00485       
   earley                                                 0.90704+-0.01580          0.89599+-0.00466         might be 1.0123x faster
   boyer                                                 12.64573+-0.06277         12.63382+-0.05103       
   raytrace                                      x2       4.38205+-0.03395    ?     4.40496+-0.05377       ?
   regexp                                        x2      33.23950+-0.19545    ?    33.32507+-0.17230       ?
   richards                                      x2       0.32354+-0.00271          0.32283+-0.00406       
   splay                                         x2       0.65176+-0.02634          0.64136+-0.00827         might be 1.0162x faster
   navier-stokes                                 x2      10.94309+-0.01203    ?    10.94347+-0.01603       ?
   closure                                                0.38418+-0.01884          0.38326+-0.01851       
   jquery                                                 4.76358+-0.55838          4.73609+-0.55293       
   gbemu                                         x2      90.83779+-3.24956    ?    91.22615+-3.31175       ?
   mandreel                                      x2     194.93612+-1.39532        194.83794+-0.77357       
   pdfjs                                         x2      99.36695+-0.18055    !   100.01355+-0.38784       ! definitely 1.0065x slower
   box2d                                         x2      34.68833+-0.20417    ?    34.69207+-0.18310       ?

V8v7:
   <arithmetic>                                           7.68519+-0.02484    ?     7.69516+-0.02354       ? might be 1.0013x slower
   <geometric> *                                          2.46708+-0.01450          2.46133+-0.00618         might be 1.0023x faster
   <harmonic>                                             0.95689+-0.00846          0.95257+-0.00485         might be 1.0045x faster

Octane including V8v7:
   <arithmetic>                                          37.22189+-0.25133    ?    37.29928+-0.24211       ? might be 1.0021x slower
   <geometric> *                                          7.07940+-0.05390          7.07267+-0.04226         might be 1.0010x faster
   <harmonic>                                             1.32226+-0.01282          1.31672+-0.00878         might be 1.0042x faster

                                                             TipOfTree                InlineAlloc                                    
Kraken:
   ai-astar                                               492.730+-1.298            491.255+-0.398         
   audio-beat-detection                                   256.100+-3.567            255.496+-4.584         
   audio-dft                                              314.049+-1.557      ?     339.032+-24.153        ? might be 1.0796x slower
   audio-fft                                              147.776+-0.288      ?     147.864+-0.172         ?
   audio-oscillator                                       248.750+-1.189      ?     249.490+-1.810         ?
   imaging-darkroom                                       295.701+-1.758      ?     297.813+-1.420         ?
   imaging-desaturate                                     159.473+-0.200      ?     159.631+-0.433         ?
   imaging-gaussian-blur                                  404.553+-0.510            404.551+-0.217         
   json-parse-financial                                    79.445+-0.194             79.164+-0.168         
   json-stringify-tinderbox                               103.648+-0.346            103.328+-0.326         
   stanford-crypto-aes                                    109.355+-1.158            107.618+-0.888           might be 1.0161x faster
   stanford-crypto-ccm                                    121.821+-6.161      ?     122.051+-4.304         ?
   stanford-crypto-pbkdf2                                 264.888+-0.831      !     268.123+-2.100         ! definitely 1.0122x slower
   stanford-crypto-sha256-iterative                       128.084+-0.560            128.021+-0.973         

   <arithmetic> *                                         223.312+-0.376      ?     225.246+-1.600         ? might be 1.0087x slower
   <geometric>                                            193.486+-0.591      ?     194.456+-0.910         ? might be 1.0050x slower
   <harmonic>                                             168.153+-0.828      ?     168.346+-0.664         ? might be 1.0011x slower

                                                             TipOfTree                InlineAlloc                                    
JSBench:
   amazon                                                 10.1667+-0.2473           10.1667+-0.2473        
   facebook                                               39.3333+-0.5640           39.0000+-0.5418        
   google                                                 67.2500+-0.9815     ?     67.4167+-1.0302        ?
   twitter                                                10.1667+-0.2473           10.0833+-0.1834        
   yahoo                                                   3.7500+-0.2874     ?      3.9167+-0.1834        ? might be 1.0444x slower

   <arithmetic> *                                         26.1333+-0.2443           26.1167+-0.2680          might be 1.0006x faster
   <geometric>                                            15.9054+-0.2946     ?     16.0113+-0.2278        ? might be 1.0067x slower
   <harmonic>                                              9.8876+-0.4366     ?     10.1190+-0.2889        ? might be 1.0234x slower

                                                             TipOfTree                InlineAlloc                                    
JSRegress:
   adapt-to-double-divide                                 22.5600+-0.0715           22.5582+-0.0336        
   aliased-arguments-getbyval                              0.9642+-0.0247     !      1.0092+-0.0184        ! definitely 1.0467x slower
   allocate-big-object                                     4.0949+-1.3080     ?      4.9551+-1.4695        ? might be 1.2101x slower
   arity-mismatch-inlining                                 0.8773+-0.0282            0.8665+-0.0177          might be 1.0124x faster
   array-access-polymorphic-structure                      9.0851+-2.0234            8.6002+-1.8577          might be 1.0564x faster
   array-nonarray-polymorhpic-access                      82.4143+-31.8422          72.6338+-26.1691         might be 1.1347x faster
   array-with-double-add                                   5.3757+-0.0204     ?      5.3784+-0.0348        ?
   array-with-double-increment                             4.1515+-0.0264            4.1237+-0.0399        
   array-with-double-mul-add                               7.5173+-0.2387            7.4381+-0.2816          might be 1.0106x faster
   array-with-double-sum                                   7.8886+-0.0624            7.8565+-0.0269        
   array-with-int32-add-sub                                9.3562+-0.0332            9.3382+-0.0315        
   array-with-int32-or-double-sum                          8.0342+-0.0653            7.9547+-0.0309          might be 1.0100x faster
   ArrayBuffer-Int32Array-byteOffset                       7.9765+-0.0598     !      8.7132+-0.0169        ! definitely 1.0924x slower
   ArrayBuffer-Int8Array-alloc-huge-long-lived           215.5981+-3.3786     ?    217.8355+-2.2534        ? might be 1.0104x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived          134.0660+-2.0835          131.2934+-1.3026          might be 1.0211x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer          83.6345+-10.6929          83.1611+-10.6541       
   ArrayBuffer-Int8Array-alloc-long-lived                 42.7316+-3.9578           41.4995+-4.3815          might be 1.0297x faster
   ArrayBuffer-Int8Array-alloc                            37.9366+-4.0841           35.8926+-3.7251          might be 1.0569x faster
   big-int-mul                                             4.8030+-0.0300            4.7721+-0.0317        
   boolean-test                                            4.3622+-0.0422     ?      4.3658+-0.0313        ?
   branch-fold                                             4.7819+-0.0418            4.7683+-0.0300        
   cast-int-to-double                                     14.1485+-0.0564           14.1102+-0.0495        
   cell-argument                                          14.6673+-0.2356           14.6391+-0.2113        
   cfg-simplify                                            3.8331+-0.0300            3.7911+-0.0392          might be 1.0111x faster
   cmpeq-obj-to-obj-other                                 12.4158+-0.2515     ?     12.5477+-0.2278        ? might be 1.0106x slower
   constant-test                                           8.5819+-0.0579     ?      8.7165+-0.1282        ? might be 1.0157x slower
   delay-tear-off-arguments-strictmode                     3.4013+-0.0322            3.3702+-0.0271        
   direct-arguments-getbyval                               0.8023+-0.0161     ?      0.8180+-0.0209        ? might be 1.0195x slower
   double-pollution-getbyval                              10.8241+-0.0600           10.7756+-0.0334        
   double-pollution-putbyoffset                            6.8139+-0.6348            6.7952+-0.6303        
   empty-string-plus-int                                  13.9439+-0.2141     ?     14.0987+-0.2422        ? might be 1.0111x slower
   emscripten-cube2hash                                   52.2623+-2.5513           52.0843+-2.5690        
   emscripten-memops                                   10463.3257+-518.7311   ?  10465.9307+-522.8421      ?
   external-arguments-getbyval                             2.4380+-0.1392            2.4051+-0.1580          might be 1.0137x faster
   external-arguments-putbyval                             3.9601+-0.2598     ?      4.0561+-0.2801        ? might be 1.0242x slower
   Float32Array-matrix-mult                                7.2984+-0.2222     ^      6.6040+-0.2134        ^ definitely 1.1051x faster
   Float64Array-alloc-long-lived                         219.4572+-0.7419     ^    109.2268+-0.6746        ^ definitely 2.0092x faster
   fold-double-to-int                                     25.5762+-0.3840           25.2633+-0.0383          might be 1.0124x faster
   function-dot-apply                                      3.0334+-0.0150            3.0242+-0.0287        
   function-test                                           4.9158+-0.0449            4.8012+-0.0820          might be 1.0239x faster
   get-by-id-chain-from-try-block                          6.5817+-0.0274     ?      6.5958+-0.0546        ?
   get-by-id-proto-or-self                                22.8288+-0.2613     ?     23.1340+-0.3339        ? might be 1.0134x slower
   get-by-id-self-or-proto                                23.6257+-0.2443           23.2238+-0.4009          might be 1.0173x faster
   HashMap-put-get-iterate-keys                           44.3407+-0.5527     ?     44.5284+-0.6442        ?
   HashMap-put-get-iterate                                54.5920+-0.9207           53.9982+-0.6264          might be 1.0110x faster
   HashMap-string-put-get-iterate                         64.9997+-0.4874     ?     65.9980+-0.9330        ? might be 1.0154x slower
   hole-check-on-array-load                             1270.0081+-1.0233         1269.8773+-0.9651        
   imul-double-only                                       18.1523+-0.9762           17.8309+-0.7116          might be 1.0180x faster
   imul-int-only                                          15.8455+-0.1851           15.7861+-0.1496        
   imul-mixed                                             22.0594+-0.0573           21.9972+-0.0228        
   in-four-cases                                          26.1402+-0.0817           26.1036+-0.0410        
   in-one-case-false                                      12.3101+-0.0710     ?     12.3556+-0.0947        ?
   in-one-case-true                                       12.2911+-0.0995           12.1761+-0.0295        
   in-two-cases                                           12.6503+-0.0352     ?     12.7884+-0.1597        ? might be 1.0109x slower
   indexed-properties-in-objects                           4.0919+-0.0221            4.0798+-0.0361        
   inline-arguments-access                                 1.4620+-0.0335            1.4474+-0.0261          might be 1.0101x faster
   inline-arguments-local-escape                          27.1226+-1.6491     ?     27.3519+-1.6311        ?
   inline-get-scoped-var                                   6.8488+-0.0444            6.7971+-0.0776        
   inlined-put-by-id-transition                           14.9442+-0.1931     ?     14.9766+-0.2706        ?
   int-or-other-abs-then-get-by-val                        9.0881+-0.1312     ^      8.7744+-0.0611        ^ definitely 1.0357x faster
   int-or-other-abs-zero-then-get-by-val                  36.8343+-0.2610     ?     37.6201+-0.7877        ? might be 1.0213x slower
   int-or-other-add-then-get-by-val                       10.2167+-0.0415           10.1959+-0.0247        
   int-or-other-add                                       10.6599+-0.1921           10.6462+-0.2030        
   int-or-other-div-then-get-by-val                        6.1230+-0.0344            6.1176+-0.0299        
   int-or-other-max-then-get-by-val                        7.1459+-0.0905            7.1218+-0.0641        
   int-or-other-min-then-get-by-val                        7.1497+-0.0352     ?      7.1631+-0.0342        ?
   int-or-other-mod-then-get-by-val                        6.0270+-0.0501     ?      6.0443+-0.0733        ?
   int-or-other-mul-then-get-by-val                        6.5275+-0.0402            6.4605+-0.0564          might be 1.0104x faster
   int-or-other-neg-then-get-by-val                        8.0284+-0.0929            7.9680+-0.0412        
   int-or-other-neg-zero-then-get-by-val                  36.7312+-0.6814     ?     36.7574+-0.9346        ?
   int-or-other-sub-then-get-by-val                       10.5797+-0.0329     ?     10.5993+-0.0548        ?
   int-or-other-sub                                        8.1684+-0.0240     ?      8.1968+-0.0654        ?
   int-overflow-local                                     11.8136+-0.0327           11.7632+-0.0938        
   Int16Array-alloc-long-lived                           182.6471+-1.2198     ^     72.5788+-0.3563        ^ definitely 2.5165x faster
   Int16Array-bubble-sort-with-byteLength                 48.3408+-0.1377     ?     48.3746+-0.1175        ?
   Int16Array-bubble-sort                                 47.7895+-0.1044           47.7442+-0.0847        
   Int16Array-load-int-mul                                 2.0035+-0.0252     ?      2.0370+-0.0205        ? might be 1.0167x slower
   Int32Array-alloc-huge-long-lived                      720.1225+-15.1730    ?    720.2589+-15.2175       ?
   Int32Array-alloc-huge                                 824.2469+-6.0581          820.0264+-7.0436        
   Int32Array-alloc-large-long-lived                    1025.7290+-4.3856     ^    971.3623+-4.0902        ^ definitely 1.0560x faster
   Int32Array-alloc-large                                 46.2191+-1.0630     ?     46.6714+-0.7328        ?
   Int32Array-alloc-long-lived                           195.6223+-1.9626     ^     85.6301+-1.4103        ^ definitely 2.2845x faster
   Int32Array-alloc                                       17.4408+-3.0402     ^      7.4380+-2.9563        ^ definitely 2.3448x faster
   Int32Array-Int8Array-view-alloc                        24.7730+-1.8619           21.8413+-1.8240          might be 1.1342x faster
   Int8Array-alloc-long-lived                            180.1925+-2.4417     ^     71.9688+-1.9285        ^ definitely 2.5038x faster
   Int8Array-load-with-byteLength                          4.8677+-0.0380            4.8358+-0.0229        
   Int8Array-load                                          4.8796+-0.0427            4.8473+-0.0231        
   integer-divide                                         15.3890+-0.0316     ?     15.4343+-0.0463        ?
   integer-modulo                                          1.9361+-0.0265            1.9286+-0.0284        
   lots-of-fields                                         16.6240+-2.4854           16.0715+-2.4798          might be 1.0344x faster
   make-indexed-storage                                    4.8819+-0.6625     ?      4.9315+-0.6602        ? might be 1.0102x slower
   make-rope-cse                                          16.6918+-2.9808           16.5411+-3.0522        
   marsaglia                                             521.9623+-0.6508          521.2033+-0.3265        
   method-on-number                                       27.8754+-0.3046     ?     28.2241+-0.6018        ? might be 1.0125x slower
   miss-string-lookup                                     62.1661+-0.4184     ?     62.5905+-0.3326        ?
   negative-zero-divide                                    0.3401+-0.0135     ?      0.3428+-0.0121        ?
   negative-zero-modulo                                    0.3284+-0.0121     ?      0.3288+-0.0139        ?
   negative-zero-negate                                    0.3138+-0.0142            0.3121+-0.0142        
   nested-function-parsing-random                        416.1320+-12.4091         411.0815+-12.4662         might be 1.0123x faster
   nested-function-parsing                                57.7434+-3.8680           57.3994+-3.9516        
   new-array-buffer-dead                                   3.9478+-0.0927            3.9473+-0.0901        
   new-array-buffer-push                                  15.2118+-2.5014           15.0291+-2.5368          might be 1.0122x faster
   new-array-dead                                         28.4109+-0.0457     ?     28.4228+-0.0747        ?
   new-array-push                                         12.6476+-2.0941           12.4977+-2.0320          might be 1.0120x faster
   number-test                                             4.3098+-0.0305     ?      4.3176+-0.0304        ?
   object-closure-call                                     9.0886+-1.0417     ?      9.6717+-1.4505        ? might be 1.0642x slower
   object-test                                             4.7759+-0.0768     ?      4.8167+-0.0723        ?
   poly-stricteq                                          93.1621+-0.2777     ?     94.3929+-1.2858        ? might be 1.0132x slower
   polymorphic-structure                                  21.1515+-0.0692           21.1147+-0.0717        
   polyvariant-monomorphic-get-by-id                      12.5067+-0.0400     ?     12.5144+-0.0324        ?
   put-by-val-large-index-blank-indexing-type             15.9676+-3.0524           15.9620+-3.1521        
   rare-osr-exit-on-local                                 20.2809+-0.1895           20.1918+-0.0787        
   regexp-match-reify-before-putbyval                      0.3020+-0.0119            0.3007+-0.0115        
   register-pressure-from-osr                             31.5259+-0.0717           31.4446+-0.0754        
   simple-activation-demo                                 35.0315+-0.3777           34.7502+-0.2011        
   slow-array-profile-convergence                          4.6973+-0.2641     ?      4.7110+-0.2878        ?
   slow-convergence                                        3.6619+-0.0507     ?      3.6634+-0.0607        ?
   sparse-conditional                                      1.3192+-0.0342            1.3061+-0.0220          might be 1.0101x faster
   splice-to-remove                                       47.6253+-0.1291     ?     47.6689+-0.1805        ?
   string-concat-object                                    5.0779+-1.4223     ?      5.1365+-1.4382        ? might be 1.0115x slower
   string-concat-pair-object                               4.9933+-1.3963     ?      5.0411+-1.4200        ?
   string-concat-pair-simple                              19.6399+-0.5747           19.2151+-0.8278          might be 1.0221x faster
   string-concat-simple                                   19.2758+-0.8918     ?     19.3407+-0.5321        ?
   string-cons-repeat                                     15.0167+-1.0281           14.9867+-1.0080        
   string-cons-tower                                      15.6889+-0.9547     ?     15.9399+-1.0425        ? might be 1.0160x slower
   string-equality                                        43.7165+-0.5144           43.6238+-0.5748        
   string-get-by-val-big-char                             17.4781+-0.2515     ?     17.7367+-0.1889        ? might be 1.0148x slower
   string-get-by-val-out-of-bounds-insane                  5.2209+-0.0962     ?      5.2994+-0.1394        ? might be 1.0150x slower
   string-get-by-val-out-of-bounds                         4.7929+-0.0362            4.7504+-0.0171        
   string-get-by-val                                       3.9958+-0.0172     ?      4.0535+-0.0670        ? might be 1.0144x slower
   string-hash                                             2.6197+-0.0394     ?      2.6363+-0.0248        ?
   string-long-ident-equality                             38.4349+-0.0584           38.4187+-0.0725        
   string-repeat-arith                                    49.4914+-0.3283     ?     50.3259+-1.3032        ? might be 1.0169x slower
   string-sub                                             94.6537+-0.6196     ?     95.9270+-0.9390        ? might be 1.0135x slower
   string-test                                             4.2635+-0.0364     ?      4.2744+-0.0236        ?
   string-var-equality                                    72.0660+-1.0456           71.2062+-0.3974          might be 1.0121x faster
   structure-hoist-over-transitions                        4.0925+-0.6219            4.0813+-0.6077        
   switch-char-constant                                    3.3911+-0.0696            3.3584+-0.0197        
   switch-char                                             8.0485+-0.0639            7.9989+-0.0612        
   switch-constant                                        13.0496+-2.7806           12.8804+-2.6501          might be 1.0131x faster
   switch-string-basic-big-var                            21.8130+-0.3185           21.7935+-0.3669        
   switch-string-basic-big                                26.1809+-1.1259     ?     26.5506+-0.8547        ? might be 1.0141x slower
   switch-string-basic-var                                21.2953+-0.0627     ?     21.3057+-0.0560        ?
   switch-string-basic                                    22.8580+-2.5141           21.9533+-2.3720          might be 1.0412x faster
   switch-string-big-length-tower-var                     29.8612+-0.3670           29.5637+-0.0889          might be 1.0101x faster
   switch-string-length-tower-var                         23.3739+-0.0570           23.3358+-0.0357        
   switch-string-length-tower                             17.6419+-0.0858           17.5974+-0.0488        
   switch-string-short                                    17.6899+-0.0621           17.6379+-0.0640        
   switch                                                 19.3848+-2.8092           19.2594+-2.7689        
   tear-off-arguments-simple                               2.3175+-0.0342     ?      2.3581+-0.0626        ? might be 1.0175x slower
   tear-off-arguments                                      3.5372+-0.0471            3.5010+-0.0323          might be 1.0103x faster
   temporal-structure                                     21.3620+-0.3637           21.1282+-0.0555          might be 1.0111x faster
   to-int32-boolean                                       21.5867+-0.0581     ?     21.6972+-0.1367        ?
   undefined-test                                          4.4648+-0.0535            4.4648+-0.0401        

   <arithmetic>                                          100.4402+-21.3166          97.0145+-21.3945         might be 1.0353x faster
   <geometric> *                                          14.0782+-0.3253           13.6561+-0.3200          might be 1.0309x faster
   <harmonic>                                              4.6232+-0.0930            4.6107+-0.0953          might be 1.0027x faster

                                                             TipOfTree                InlineAlloc                                    
DSP:
   filtrr-posterize-tint                                  44.3632+-1.4008           44.1349+-1.3230        
   filtrr-tint-contrast-sat-bright                        71.5984+-0.8206     ?     71.8267+-0.7608        ?
   filtrr-tint-sat-adj-contr-mult                         85.2243+-3.3061     ?     86.1100+-4.4840        ? might be 1.0104x slower
   filtrr-blur-overlay-sat-contr                         217.6965+-6.2245     ?    219.9597+-6.0855        ? might be 1.0104x slower
   filtrr-sat-blur-mult-sharpen-contr                    257.2542+-2.1818     ?    258.2245+-2.4730        ?
   filtrr-sepia-bias                                      34.1611+-3.4407     ?     34.2785+-3.6184        ?
   route9-vp8                                    x5     1100.1926+-7.1243         1097.4051+-7.6272        
   starfield                                     x5     1195.0479+-5.2723     ?   1199.8144+-5.3339        ?
   bellard-jslinux                               x5     2873.8333+-7.3491     ?   2883.0833+-12.4903       ?
   zynaps-quake3                                 x5     1404.7575+-21.4354    ?   1408.7024+-26.8952       ?
   zynaps-mandelbrot                             x5     1117.3226+-4.0033         1116.0303+-4.8226        
   ammojs-asm-js                                 x5      271.0255+-14.7087         265.4232+-15.8431         might be 1.0211x faster
   ammojs-regular-js                             x5      249.5704+-10.4340         243.8708+-10.8966         might be 1.0234x faster

   <arithmetic>                                         1018.7572+-1.8917     ?   1019.1752+-2.8746        ? might be 1.0004x slower
   <geometric> *                                         627.9550+-7.8855          625.3468+-8.0212          might be 1.0042x faster
   <harmonic>                                            285.8163+-10.9754         284.4107+-11.4919         might be 1.0049x faster

                                                             TipOfTree                InlineAlloc                                    
All benchmarks:
   <arithmetic>                                          228.1969+-11.8042         226.4252+-11.9524         might be 1.0078x faster
   <geometric>                                            25.8783+-0.3385           25.4183+-0.3243          might be 1.0181x faster
   <harmonic>                                              4.6318+-0.0644            4.6169+-0.0616          might be 1.0032x faster

                                                             TipOfTree                InlineAlloc                                    
Geomean of preferred means:
   <scaled-result>                                        41.9108+-0.2494           41.7075+-0.1791          might be 1.0049x faster
Comment 13 Filip Pizlo 2013-08-21 13:02:53 PDT
Landed in http://trac.webkit.org/changeset/154403