WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
145995
Function parameters should be parsed in the same parser arena as the function body
https://bugs.webkit.org/show_bug.cgi?id=145995
Summary
Function parameters should be parsed in the same parser arena as the function...
Saam Barati
Reported
2015-06-15 17:26:00 PDT
This will allow destructuring nodes with default values in a function parameter to work. Also, this will help simplify default function parameter values.
Attachments
it begins
(14.71 KB, patch)
2015-07-11 18:29 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(64.39 KB, patch)
2015-07-11 20:23 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(80.52 KB, patch)
2015-07-13 13:13 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(82.36 KB, patch)
2015-07-14 00:03 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(190.94 KB, patch)
2015-07-14 17:21 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(190.94 KB, patch)
2015-07-14 17:28 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(190.18 KB, patch)
2015-07-14 18:19 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(190.19 KB, patch)
2015-07-16 15:18 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(191.23 KB, patch)
2015-07-16 17:05 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(194.23 KB, patch)
2015-07-17 10:53 PDT
,
Saam Barati
ysuzuki
: review+
commit-queue
: commit-queue-
Details
Formatted Diff
Diff
Show Obsolete
(9)
View All
Add attachment
proposed patch, testcase, etc.
Saam Barati
Comment 1
2015-07-11 18:29:31 PDT
Created
attachment 256671
[details]
it begins
Saam Barati
Comment 2
2015-07-11 20:23:12 PDT
Created
attachment 256675
[details]
patch More work is done. I need to make some things clearer and also find all the places we assume SourceCode starts with "{", and find other assumptions we make about a SourceCode representing a function body.
Saam Barati
Comment 3
2015-07-13 13:13:57 PDT
Created
attachment 256716
[details]
patch getting closer
Saam Barati
Comment 4
2015-07-14 00:03:16 PDT
Created
attachment 256762
[details]
patch almost there, just need to do some cleanup work.
Saam Barati
Comment 5
2015-07-14 17:21:34 PDT
Created
attachment 256813
[details]
patch
WebKit Commit Bot
Comment 6
2015-07-14 17:24:06 PDT
Attachment 256813
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/FunctionPrototype.cpp:94: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/parser/Parser.cpp:629: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/parser/Parser.cpp:1466: Multi line control clauses should use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/parser/Parser.cpp:1468: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] Total errors found: 4 in 65 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 7
2015-07-14 17:28:16 PDT
Created
attachment 256814
[details]
patch
WebKit Commit Bot
Comment 8
2015-07-14 17:31:19 PDT
Attachment 256814
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/FunctionPrototype.cpp:94: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/parser/Parser.cpp:629: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/parser/Parser.cpp:1466: Multi line control clauses should use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/parser/Parser.cpp:1468: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] Total errors found: 4 in 65 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 9
2015-07-14 18:19:55 PDT
Created
attachment 256815
[details]
patch fix style.
Saam Barati
Comment 10
2015-07-14 23:10:27 PDT
Looks like a win for Octane's jquery/closure VMs tested: "original" at /Volumes/Data/WK/c/OpenSource/WebKitBuild/Release/jsc (
r186808
) "parserArena" at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (
r186808
) Collected 10 samples per benchmark/VM, with 10 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. original parserArena SunSpider: 3d-cube 4.0566+-0.1041 ? 4.1190+-0.0549 ? might be 1.0154x slower 3d-morph 5.0283+-0.2384 4.9284+-0.1246 might be 1.0203x faster 3d-raytrace 4.9236+-0.1528 4.8785+-0.1876 access-binary-trees 2.0665+-0.2026 1.9825+-0.0652 might be 1.0424x faster access-fannkuch 4.9886+-0.0823 4.9330+-0.0327 might be 1.0113x faster access-nbody 2.3308+-0.0945 2.3128+-0.0790 access-nsieve 3.0926+-0.0659 3.0914+-0.1209 bitops-3bit-bits-in-byte 1.3527+-0.0412 1.3420+-0.0227 bitops-bits-in-byte 3.0561+-0.0586 ? 3.0905+-0.0356 ? might be 1.0112x slower bitops-bitwise-and 1.9004+-0.0647 1.8739+-0.0310 might be 1.0141x faster bitops-nsieve-bits 2.7601+-0.0475 2.7473+-0.0262 controlflow-recursive 1.9079+-0.0988 1.8944+-0.1164 crypto-aes 3.5603+-0.1074 ? 3.6525+-0.1513 ? might be 1.0259x slower crypto-md5 2.3054+-0.0584 ? 2.4748+-0.1810 ? might be 1.0735x slower crypto-sha1 2.3412+-0.1412 ? 2.3564+-0.1662 ? date-format-tofte 6.3396+-0.2528 ? 6.3408+-0.2156 ? date-format-xparb 4.6555+-0.4075 4.4728+-0.1608 might be 1.0409x faster math-cordic 2.6022+-0.0583 2.5785+-0.0596 math-partial-sums 4.2284+-0.0596 ? 4.2563+-0.0805 ? math-spectral-norm 1.7198+-0.0353 1.6850+-0.0297 might be 1.0206x faster regexp-dna 6.3488+-0.3446 ? 6.3596+-0.3710 ? string-base64 4.2674+-0.1844 4.2332+-0.1612 string-fasta 5.6248+-0.2156 ? 5.7251+-0.1470 ? might be 1.0178x slower string-tagcloud 7.8296+-0.2894 7.7648+-0.1495 string-unpack-code 18.9322+-0.4571 18.7162+-0.2444 might be 1.0115x faster string-validate-input 4.3131+-0.0942 ? 4.3279+-0.0936 ? <arithmetic> 4.3282+-0.0281 4.3130+-0.0240 might be 1.0035x faster original parserArena LongSpider: 3d-cube 748.5720+-4.5781 746.6973+-2.5905 3d-morph 1427.6650+-3.7510 ? 1433.4964+-6.0359 ? 3d-raytrace 591.9726+-5.8679 590.4996+-5.6967 access-binary-trees 775.5763+-10.8665 ? 818.2841+-100.9616 ? might be 1.0551x slower access-fannkuch 263.1493+-2.4986 ? 263.3152+-1.6356 ? access-nbody 488.0519+-5.1511 486.3771+-4.5767 access-nsieve 351.8096+-7.5674 ? 353.7068+-8.0424 ? bitops-3bit-bits-in-byte 38.8309+-1.0788 38.5149+-0.9129 bitops-bits-in-byte 76.5209+-2.0781 ? 78.8891+-1.5606 ? might be 1.0309x slower bitops-nsieve-bits 393.7701+-4.7512 ? 394.0207+-4.0610 ? controlflow-recursive 411.9420+-20.2079 409.2651+-7.7972 crypto-aes 555.0009+-8.5518 ? 556.1525+-6.9283 ? crypto-md5 445.7911+-3.2292 445.1364+-2.4506 crypto-sha1 603.7799+-3.4355 ? 604.8678+-6.0550 ? date-format-tofte 485.6542+-12.9571 483.1949+-14.1721 date-format-xparb 639.4885+-12.7862 ? 651.5853+-11.2405 ? might be 1.0189x slower hash-map 145.2804+-1.2656 ? 146.1568+-2.1473 ? math-cordic 477.8722+-15.5550 476.3781+-20.2708 math-partial-sums 394.2970+-4.0859 391.0750+-2.0822 math-spectral-norm 524.6047+-1.9298 ? 526.6829+-3.2963 ? string-base64 329.3938+-3.0386 ? 332.9461+-5.5650 ? might be 1.0108x slower string-fasta 343.8171+-3.0897 343.1503+-3.9150 string-tagcloud 171.6422+-1.0676 ? 172.7533+-2.3961 ? <geometric> 372.5883+-1.1834 ? 374.0938+-2.0383 ? might be 1.0040x slower original parserArena V8Spider: crypto 47.0468+-1.1781 ? 47.5657+-0.7732 ? might be 1.0110x slower deltablue 70.3542+-2.0757 ? 72.2536+-2.1230 ? might be 1.0270x slower earley-boyer 37.4238+-0.8364 37.2653+-0.7720 raytrace 27.9650+-0.9724 ? 27.9977+-0.8601 ? regexp 59.1407+-1.5173 58.4058+-0.2362 might be 1.0126x faster richards 64.1301+-1.7435 ? 65.9872+-1.6044 ? might be 1.0290x slower splay 32.5140+-1.1838 32.3408+-1.0002 <geometric> 45.8395+-0.5232 ? 46.1449+-0.3697 ? might be 1.0067x slower original parserArena Octane: encrypt 0.19537+-0.00440 ? 0.19578+-0.00098 ? decrypt 3.22690+-0.04501 3.21874+-0.04187 deltablue x2 0.14691+-0.00117 ? 0.14820+-0.00266 ? earley 0.26578+-0.00194 ? 0.26620+-0.00167 ? boyer 3.96423+-0.02669 3.94717+-0.02673 navier-stokes x2 4.72862+-0.01753 ? 4.75172+-0.02210 ? raytrace x2 0.94449+-0.02937 ? 0.98266+-0.01986 ? might be 1.0404x slower richards x2 0.09789+-0.00065 0.09729+-0.00103 splay x2 0.32604+-0.00277 ? 0.32969+-0.00200 ? might be 1.0112x slower regexp x2 24.05858+-0.34172 23.89150+-0.33594 pdfjs x2 35.62041+-0.62453 ? 35.79472+-0.50881 ? mandreel x2 41.95899+-0.24553 ? 46.19874+-8.60987 ? might be 1.1010x slower gbemu x2 33.63284+-1.34343 32.44587+-0.39006 might be 1.0366x faster closure 0.51189+-0.00361 ^ 0.50253+-0.00293 ^ definitely 1.0186x faster jquery 6.59774+-0.03488 ^ 6.52435+-0.02778 ^ definitely 1.0112x faster box2d x2 9.47209+-0.08205 9.43057+-0.04648 zlib x2 354.21082+-10.90381 ? 362.08746+-4.00420 ? might be 1.0222x slower typescript x2 619.52705+-10.66928 617.57588+-8.79139 <geometric> 5.32512+-0.02146 ? 5.35934+-0.04898 ? might be 1.0064x slower original parserArena Kraken: ai-astar 212.457+-3.624 ? 216.583+-6.814 ? might be 1.0194x slower audio-beat-detection 70.231+-1.146 69.713+-0.862 audio-dft 104.248+-2.320 ? 105.430+-2.173 ? might be 1.0113x slower audio-fft 59.877+-0.091 ? 60.049+-0.184 ? audio-oscillator 58.341+-0.200 ? 58.987+-0.947 ? might be 1.0111x slower imaging-darkroom 88.540+-0.914 88.394+-1.374 imaging-desaturate 52.388+-2.224 51.487+-3.138 might be 1.0175x faster imaging-gaussian-blur 80.839+-1.584 80.613+-1.455 json-parse-financial 36.972+-2.081 35.193+-0.343 might be 1.0505x faster json-stringify-tinderbox 26.183+-0.402 25.710+-0.475 might be 1.0184x faster stanford-crypto-aes 50.193+-0.361 49.898+-0.233 stanford-crypto-ccm 37.195+-1.116 36.910+-1.365 stanford-crypto-pbkdf2 91.993+-4.449 91.388+-1.830 stanford-crypto-sha256-iterative 34.846+-0.609 ? 34.901+-0.321 ? <arithmetic> 71.736+-0.542 ? 71.804+-0.530 ? might be 1.0009x slower original parserArena JSRegress: abc-forward-loop-equal 28.2504+-0.7628 ? 28.5449+-1.1769 ? might be 1.0104x slower abc-postfix-backward-loop 27.9740+-0.5299 ? 28.2337+-1.0800 ? abc-simple-backward-loop 29.3584+-2.9488 27.8823+-0.8474 might be 1.0529x faster abc-simple-forward-loop 27.9806+-0.9275 ? 28.0172+-0.5514 ? abc-skippy-loop 20.7948+-0.8707 ? 21.1445+-1.2724 ? might be 1.0168x slower abs-boolean 2.2619+-0.0490 ? 2.2952+-0.0525 ? might be 1.0147x slower adapt-to-double-divide 15.3046+-0.3206 ! 16.2585+-0.6312 ! definitely 1.0623x slower aliased-arguments-getbyval 1.1120+-0.0545 ? 1.1469+-0.0865 ? might be 1.0313x slower allocate-big-object 2.3657+-0.1036 ? 2.5035+-0.1194 ? might be 1.0582x slower arguments-named-and-reflective 10.4029+-0.2268 ? 10.6197+-0.4598 ? might be 1.0208x slower arguments-out-of-bounds 9.3481+-0.3061 ? 9.5527+-0.3002 ? might be 1.0219x slower arguments-strict-mode 9.0991+-0.4123 9.0334+-0.2580 arguments 8.0334+-0.3045 8.0054+-0.1385 arity-mismatch-inlining 0.7460+-0.0097 0.7278+-0.0246 might be 1.0250x faster array-access-polymorphic-structure 5.4756+-0.1210 ? 5.7168+-0.2938 ? might be 1.0440x slower array-nonarray-polymorhpic-access 23.4629+-0.4444 23.3675+-0.4516 array-prototype-every 76.0206+-1.9847 72.9562+-1.8086 might be 1.0420x faster array-prototype-forEach 73.4281+-1.4709 ^ 70.0372+-0.2095 ^ definitely 1.0484x faster array-prototype-map 78.5586+-0.7656 78.3777+-1.5337 array-prototype-reduce 67.0933+-0.2143 67.0624+-0.5810 array-prototype-reduceRight 68.6675+-1.5384 67.6617+-1.0059 might be 1.0149x faster array-prototype-some 75.3539+-1.6476 ^ 72.3977+-0.7687 ^ definitely 1.0408x faster array-splice-contiguous 19.5671+-0.4430 19.3347+-0.3994 might be 1.0120x faster array-with-double-add 3.2628+-0.0993 3.1261+-0.0508 might be 1.0437x faster array-with-double-increment 2.9321+-0.1311 2.9036+-0.1724 array-with-double-mul-add 3.9039+-0.0304 ? 3.9382+-0.1502 ? array-with-double-sum 3.0231+-0.0757 ? 3.0415+-0.1221 ? array-with-int32-add-sub 5.3918+-0.1423 5.3627+-0.0861 array-with-int32-or-double-sum 3.1855+-0.1830 3.0322+-0.0579 might be 1.0506x faster ArrayBuffer-DataView-alloc-large-long-lived 25.6499+-1.0183 25.6038+-1.1116 ArrayBuffer-DataView-alloc-long-lived 11.7049+-0.6586 11.6969+-0.2959 ArrayBuffer-Int32Array-byteOffset 3.4437+-0.0941 3.4079+-0.1059 might be 1.0105x faster ArrayBuffer-Int8Array-alloc-large-long-lived 25.1471+-0.2456 ? 25.2796+-0.1722 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 18.9575+-0.5122 ? 19.7909+-1.3674 ? might be 1.0440x slower ArrayBuffer-Int8Array-alloc-long-lived 11.5741+-0.9685 10.9811+-0.4140 might be 1.0540x faster ArrayBuffer-Int8Array-alloc 9.3788+-0.5428 9.2822+-0.3494 might be 1.0104x faster asmjs_bool_bug 15.3720+-0.1736 ? 15.3957+-0.2268 ? assign-custom-setter-polymorphic 2.4228+-0.1134 ? 2.4976+-0.1095 ? might be 1.0309x slower assign-custom-setter 3.1357+-0.0880 ? 3.2191+-0.0891 ? might be 1.0266x slower basic-set 7.3530+-0.2171 ? 7.6046+-0.2961 ? might be 1.0342x slower big-int-mul 3.4695+-0.0369 ? 3.5238+-0.0687 ? might be 1.0157x slower boolean-test 2.7039+-0.0470 2.6869+-0.0499 branch-fold 3.4358+-0.0818 ? 3.4417+-0.1071 ? branch-on-string-as-boolean 15.3260+-0.3956 ? 15.8961+-0.6797 ? might be 1.0372x slower by-val-generic 6.6744+-0.1622 6.6075+-0.1058 might be 1.0101x faster call-spread-apply 25.2201+-0.6602 25.0700+-0.4996 call-spread-call 20.6206+-0.9027 ? 20.7403+-0.3753 ? captured-assignments 0.3419+-0.0090 ? 0.3422+-0.0165 ? cast-int-to-double 4.7456+-0.0961 ? 4.7996+-0.1476 ? might be 1.0114x slower cell-argument 6.0943+-0.1808 5.9579+-0.1928 might be 1.0229x faster cfg-simplify 2.5928+-0.0859 ? 2.6271+-0.0796 ? might be 1.0132x slower chain-getter-access 7.6756+-0.2153 ? 7.7881+-0.2325 ? might be 1.0147x slower cmpeq-obj-to-obj-other 10.8312+-0.8802 ? 11.3740+-0.5417 ? might be 1.0501x slower constant-test 4.5040+-0.0526 ? 4.6375+-0.2298 ? might be 1.0296x slower create-lots-of-functions 9.0361+-0.3184 8.9270+-0.2931 might be 1.0122x faster cse-new-array-buffer 2.2055+-0.0728 2.1454+-0.0870 might be 1.0280x faster cse-new-array 2.2425+-0.1361 2.2395+-0.1289 DataView-custom-properties 29.7905+-0.8924 29.7473+-0.7282 delay-tear-off-arguments-strictmode 11.2224+-0.1464 ! 12.1765+-0.3552 ! definitely 1.0850x slower deltablue-varargs 143.7879+-2.7115 ? 144.8324+-3.5357 ? destructuring-arguments 156.0806+-3.7434 ? 156.5025+-0.8516 ? destructuring-parameters-overridden-by-function 0.4269+-0.0203 ^ 0.3919+-0.0063 ^ definitely 1.0891x faster destructuring-swap 4.4591+-0.1276 4.4462+-0.0566 direct-arguments-getbyval 1.1023+-0.0581 1.0809+-0.0351 might be 1.0198x faster div-boolean-double 4.9172+-0.0844 ? 5.0284+-0.0847 ? might be 1.0226x slower div-boolean 7.7483+-0.0851 ? 7.8088+-0.1433 ? double-get-by-val-out-of-bounds 4.0844+-0.1237 ? 4.0984+-0.1554 ? double-pollution-getbyval 8.2120+-0.0729 ? 8.2151+-0.1713 ? double-pollution-putbyoffset 3.6035+-0.1011 3.5994+-0.1173 double-real-use 24.8062+-2.3664 ? 25.5277+-1.4764 ? might be 1.0291x slower double-to-int32-typed-array-no-inline 1.9218+-0.0205 ? 1.9282+-0.0585 ? double-to-int32-typed-array 1.6265+-0.0386 ? 1.6864+-0.0913 ? might be 1.0368x slower double-to-uint32-typed-array-no-inline 2.0136+-0.1051 1.9543+-0.0294 might be 1.0303x faster double-to-uint32-typed-array 1.6867+-0.0421 ? 1.8144+-0.1234 ? might be 1.0757x slower elidable-new-object-dag 31.9121+-0.2561 ? 32.1786+-0.7192 ? elidable-new-object-roflcopter 31.3835+-0.2917 ? 32.2628+-0.8835 ? might be 1.0280x slower elidable-new-object-then-call 29.7952+-0.3773 ? 30.0837+-0.8608 ? elidable-new-object-tree 34.1771+-0.2393 34.0107+-0.2609 empty-string-plus-int 4.4986+-0.1401 ? 4.5334+-0.1037 ? emscripten-cube2hash 25.4675+-0.9270 25.3688+-0.8807 exit-length-on-plain-object 12.0290+-0.6278 11.5928+-0.3761 might be 1.0376x faster external-arguments-getbyval 1.1166+-0.0571 ? 1.1197+-0.0865 ? external-arguments-putbyval 2.0276+-0.1033 2.0270+-0.0509 fixed-typed-array-storage-var-index 1.0972+-0.0451 1.0894+-0.0107 fixed-typed-array-storage 0.7963+-0.0459 0.7840+-0.0336 might be 1.0157x faster Float32Array-matrix-mult 3.6462+-0.0798 3.5752+-0.0384 might be 1.0199x faster Float32Array-to-Float64Array-set 44.4099+-0.3462 ? 44.8114+-1.0309 ? Float64Array-alloc-long-lived 52.7114+-1.5950 51.9784+-0.2419 might be 1.0141x faster Float64Array-to-Int16Array-set 52.2746+-0.9648 ? 52.8050+-1.3095 ? might be 1.0101x slower fold-double-to-int 19.4076+-0.4691 ? 19.9835+-1.1955 ? might be 1.0297x slower fold-get-by-id-to-multi-get-by-offset-rare-int 9.5385+-0.2561 ? 9.5887+-0.2803 ? fold-get-by-id-to-multi-get-by-offset 7.7135+-0.2279 ? 7.8618+-0.2339 ? might be 1.0192x slower fold-multi-get-by-offset-to-get-by-offset 7.6499+-0.5975 7.4430+-0.3240 might be 1.0278x faster fold-multi-get-by-offset-to-poly-get-by-offset 6.6320+-0.3491 ? 7.1871+-0.6617 ? might be 1.0837x slower fold-multi-put-by-offset-to-poly-put-by-offset 7.0200+-0.6528 6.9383+-0.2388 might be 1.0118x faster fold-multi-put-by-offset-to-put-by-offset 4.0224+-0.3820 ? 4.5000+-0.6853 ? might be 1.1188x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 7.7408+-0.1751 ? 7.9979+-0.3906 ? might be 1.0332x slower fold-put-by-id-to-multi-put-by-offset 7.9412+-0.2382 ? 8.2751+-0.2299 ? might be 1.0420x slower fold-put-structure 4.2796+-0.3859 ? 4.7431+-0.3987 ? might be 1.1083x slower for-of-iterate-array-entries 11.1050+-0.1975 10.8292+-0.1452 might be 1.0255x faster for-of-iterate-array-keys 3.2159+-0.0619 ? 3.2491+-0.1036 ? might be 1.0103x slower for-of-iterate-array-values 3.2989+-0.1438 3.2061+-0.2023 might be 1.0289x faster fround 18.9278+-1.1859 ^ 17.4016+-0.3201 ^ definitely 1.0877x faster ftl-library-inlining-dataview 53.7096+-0.7184 ? 54.8235+-1.4205 ? might be 1.0207x slower ftl-library-inlining 104.0228+-1.1870 102.9541+-0.3944 might be 1.0104x faster function-dot-apply 1.8850+-0.0759 ? 1.8881+-0.1569 ? function-test 2.5228+-0.0458 2.5142+-0.0778 function-with-eval 87.4093+-1.6226 85.1866+-1.7126 might be 1.0261x faster gcse-poly-get-less-obvious 13.5730+-0.1742 ? 13.7465+-0.5948 ? might be 1.0128x slower gcse-poly-get 13.7531+-0.3727 13.5186+-0.4450 might be 1.0173x faster gcse 3.6690+-0.1597 3.6675+-0.1003 get-by-id-bimorphic-check-structure-elimination-simple 2.4629+-0.0643 2.4396+-0.0491 get-by-id-bimorphic-check-structure-elimination 5.3833+-0.0577 ? 5.4314+-0.1505 ? get-by-id-chain-from-try-block 6.3027+-0.3266 6.0492+-0.1997 might be 1.0419x faster get-by-id-check-structure-elimination 4.1562+-0.0722 4.1379+-0.0553 get-by-id-proto-or-self 13.9608+-0.8253 13.2905+-0.2100 might be 1.0504x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.6948+-0.0346 2.6828+-0.0215 get-by-id-self-or-proto 13.9100+-0.6750 ? 14.0182+-0.7036 ? get-by-val-out-of-bounds 3.8725+-0.1457 3.7717+-0.0649 might be 1.0267x faster get_callee_monomorphic 2.3720+-0.2284 2.2519+-0.1628 might be 1.0533x faster get_callee_polymorphic 3.9401+-0.2725 3.7106+-0.0572 might be 1.0619x faster getter-no-activation 4.5501+-0.0637 4.5364+-0.0950 getter-prototype 9.3271+-0.2278 9.0378+-0.1219 might be 1.0320x faster getter-richards 106.0860+-1.9237 104.2881+-4.4519 might be 1.0172x faster getter 5.1779+-0.2837 5.0543+-0.1556 might be 1.0245x faster global-var-const-infer-fire-from-opt 0.8246+-0.0962 0.8125+-0.0842 might be 1.0149x faster global-var-const-infer 0.6722+-0.0391 ? 0.6812+-0.0457 ? might be 1.0133x slower HashMap-put-get-iterate-keys 24.9050+-0.9865 24.4224+-1.3898 might be 1.0198x faster HashMap-put-get-iterate 24.6137+-1.2691 24.1630+-0.8201 might be 1.0187x faster HashMap-string-put-get-iterate 22.7581+-0.4710 ? 23.3426+-0.7567 ? might be 1.0257x slower hoist-make-rope 7.6134+-0.3354 7.4577+-0.3370 might be 1.0209x faster hoist-poly-check-structure-effectful-loop 3.9302+-0.1042 3.9200+-0.0510 hoist-poly-check-structure 3.1684+-0.0906 3.0981+-0.0506 might be 1.0227x faster imul-double-only 6.8110+-0.2410 6.6515+-0.1164 might be 1.0240x faster imul-int-only 7.8208+-0.3828 7.6623+-0.3378 might be 1.0207x faster imul-mixed 6.3596+-0.3020 6.2808+-0.1662 might be 1.0126x faster in-four-cases 16.1493+-0.1529 ? 16.4708+-0.4466 ? might be 1.0199x slower in-one-case-false 8.8856+-0.2229 ? 8.9788+-0.4127 ? might be 1.0105x slower in-one-case-true 9.1656+-0.3083 8.9155+-0.1388 might be 1.0281x faster in-two-cases 9.2873+-0.1856 9.2504+-0.2071 indexed-properties-in-objects 2.7336+-0.0647 2.7183+-0.0704 infer-closure-const-then-mov-no-inline 2.9819+-0.0537 ? 3.0334+-0.1165 ? might be 1.0173x slower infer-closure-const-then-mov 16.1705+-0.3592 ? 16.3406+-0.3710 ? might be 1.0105x slower infer-closure-const-then-put-to-scope-no-inline 10.9036+-0.1894 ? 11.1868+-0.6000 ? might be 1.0260x slower infer-closure-const-then-put-to-scope 20.6441+-0.6037 ? 21.2551+-1.5158 ? might be 1.0296x slower infer-closure-const-then-reenter-no-inline 45.4363+-1.4481 44.6562+-0.1823 might be 1.0175x faster infer-closure-const-then-reenter 21.7841+-1.3167 21.4429+-0.9043 might be 1.0159x faster infer-constant-global-property 3.1558+-0.0280 3.1511+-0.0289 infer-constant-property 2.4310+-0.0317 ? 2.4576+-0.0313 ? might be 1.0109x slower infer-one-time-closure-ten-vars 8.0728+-0.3249 7.9593+-0.0902 might be 1.0143x faster infer-one-time-closure-two-vars 7.7070+-0.3659 ? 7.8138+-0.3457 ? might be 1.0139x slower infer-one-time-closure 7.5615+-0.2326 7.4978+-0.1354 infer-one-time-deep-closure 12.3926+-0.6456 ? 12.5406+-0.7255 ? might be 1.0119x slower inline-arguments-access 3.4753+-0.0879 ? 3.5667+-0.2174 ? might be 1.0263x slower inline-arguments-aliased-access 3.5586+-0.1470 ? 3.5924+-0.1049 ? inline-arguments-local-escape 3.5157+-0.1246 3.4753+-0.1410 might be 1.0116x faster inline-get-scoped-var 4.3585+-0.1286 ? 4.4393+-0.1392 ? might be 1.0185x slower inlined-put-by-id-transition 9.9165+-0.6071 ? 10.2650+-0.6724 ? might be 1.0351x slower int-or-other-abs-then-get-by-val 4.4766+-0.0592 ? 4.6467+-0.1928 ? might be 1.0380x slower int-or-other-abs-zero-then-get-by-val 15.5130+-0.4482 ? 15.9235+-1.0637 ? might be 1.0265x slower int-or-other-add-then-get-by-val 3.8248+-0.1295 3.8165+-0.1575 int-or-other-add 4.6427+-0.1177 4.6247+-0.0898 int-or-other-div-then-get-by-val 3.4355+-0.0380 ? 3.5041+-0.0966 ? might be 1.0200x slower int-or-other-max-then-get-by-val 3.7200+-0.1215 3.6776+-0.0677 might be 1.0115x faster int-or-other-min-then-get-by-val 3.6519+-0.0417 ? 3.7865+-0.1115 ? might be 1.0369x slower int-or-other-mod-then-get-by-val 3.2424+-0.0628 ? 3.2990+-0.0930 ? might be 1.0174x slower int-or-other-mul-then-get-by-val 3.3764+-0.0644 ? 3.4224+-0.0609 ? might be 1.0136x slower int-or-other-neg-then-get-by-val 4.1869+-0.1109 ? 4.2315+-0.1018 ? might be 1.0106x slower int-or-other-neg-zero-then-get-by-val 16.0900+-1.1669 15.4801+-0.3736 might be 1.0394x faster int-or-other-sub-then-get-by-val 3.7776+-0.0912 ? 3.7852+-0.0889 ? int-or-other-sub 3.2137+-0.0943 3.1792+-0.1135 might be 1.0109x faster int-overflow-local 3.9905+-0.1134 ? 4.0494+-0.1378 ? might be 1.0148x slower Int16Array-alloc-long-lived 38.8562+-0.4175 ? 39.4758+-0.5136 ? might be 1.0159x slower Int16Array-bubble-sort-with-byteLength 12.6253+-0.6598 12.5402+-0.1760 Int16Array-bubble-sort 13.1909+-0.4563 ? 13.3396+-0.1541 ? might be 1.0113x slower Int16Array-load-int-mul 1.3390+-0.0739 1.2978+-0.0261 might be 1.0317x faster Int16Array-to-Int32Array-set 44.0984+-1.2963 ? 44.3643+-1.3508 ? Int32Array-alloc-large 11.6330+-0.4335 ? 11.6844+-0.2912 ? Int32Array-alloc-long-lived 43.0925+-0.2252 ? 43.1112+-0.1656 ? Int32Array-alloc 2.8386+-0.1729 2.7534+-0.1867 might be 1.0310x faster Int32Array-Int8Array-view-alloc 5.8328+-0.3343 5.6897+-0.0508 might be 1.0251x faster int52-spill 4.1516+-0.0706 ? 4.2850+-0.1654 ? might be 1.0321x slower Int8Array-alloc-long-lived 35.1940+-0.8592 ? 35.4916+-0.9425 ? Int8Array-load-with-byteLength 3.1806+-0.0747 3.1523+-0.1018 Int8Array-load 3.2236+-0.0729 3.2167+-0.0836 integer-divide 9.6103+-0.1478 9.5874+-0.1070 integer-modulo 1.6004+-0.0592 1.5314+-0.0378 might be 1.0451x faster is-boolean-fold-tricky 3.5363+-0.0723 3.5049+-0.0422 is-boolean-fold 2.4418+-0.0290 ? 2.4803+-0.0985 ? might be 1.0158x slower is-function-fold-tricky-internal-function 9.4880+-0.3123 9.4101+-0.2251 is-function-fold-tricky 3.8958+-0.0634 3.8523+-0.0672 might be 1.0113x faster is-function-fold 2.5059+-0.0522 2.5005+-0.0557 is-number-fold-tricky 3.8673+-0.1170 3.8113+-0.1069 might be 1.0147x faster is-number-fold 2.4636+-0.0486 ? 2.4709+-0.0715 ? is-object-or-null-fold-functions 2.4478+-0.0158 ? 2.4840+-0.0416 ? might be 1.0148x slower is-object-or-null-fold-less-tricky 3.9550+-0.1326 3.9001+-0.1194 might be 1.0141x faster is-object-or-null-fold-tricky 4.9478+-0.1928 4.8405+-0.0772 might be 1.0222x faster is-object-or-null-fold 2.4995+-0.0494 ? 2.5102+-0.0716 ? is-object-or-null-trickier-function 3.9152+-0.1112 3.8962+-0.0825 is-object-or-null-trickier-internal-function 9.7822+-0.1215 9.7771+-0.1813 is-object-or-null-tricky-function 3.8814+-0.0603 ? 3.9297+-0.0905 ? might be 1.0124x slower is-object-or-null-tricky-internal-function 7.2475+-0.0891 ? 7.2634+-0.0711 ? is-string-fold-tricky 3.8490+-0.0953 3.7628+-0.0781 might be 1.0229x faster is-string-fold 2.4457+-0.0463 2.4338+-0.0361 is-undefined-fold-tricky 3.1038+-0.0496 ? 3.1040+-0.0731 ? is-undefined-fold 2.4679+-0.0390 ? 2.5038+-0.1093 ? might be 1.0146x slower large-int-captured 3.9005+-0.4411 3.7467+-0.1541 might be 1.0411x faster large-int-neg 14.0356+-1.0626 13.5870+-0.6084 might be 1.0330x faster large-int 12.8647+-0.3981 ? 13.2704+-0.5586 ? might be 1.0315x slower load-varargs-elimination 21.0016+-1.3447 20.9260+-1.4064 logical-not-weird-types 2.7782+-0.1234 2.7679+-0.1667 logical-not 3.9521+-0.1183 ? 4.0017+-0.0835 ? might be 1.0125x slower lots-of-fields 9.1310+-0.2798 ? 9.3500+-0.6451 ? might be 1.0240x slower make-indexed-storage 2.7593+-0.0832 ? 2.8587+-0.1489 ? might be 1.0360x slower make-rope-cse 3.5595+-0.2175 3.4999+-0.1405 might be 1.0170x faster marsaglia-larger-ints 31.0507+-0.4912 30.7564+-0.5214 marsaglia-osr-entry 20.4985+-0.5801 20.2469+-0.7824 might be 1.0124x faster math-with-out-of-bounds-array-values 21.3819+-1.0235 20.9876+-0.6219 might be 1.0188x faster max-boolean 2.7181+-0.4780 2.5003+-0.0243 might be 1.0871x faster method-on-number 15.4664+-0.5795 15.1864+-0.3510 might be 1.0184x faster min-boolean 2.4875+-0.0536 2.4522+-0.0786 might be 1.0144x faster minus-boolean-double 2.8423+-0.0241 ? 2.8876+-0.0513 ? might be 1.0159x slower minus-boolean 2.1365+-0.0298 ? 2.1373+-0.0255 ? misc-strict-eq 32.0874+-4.9902 30.1268+-1.3471 might be 1.0651x faster mod-boolean-double 10.7597+-0.4058 ? 11.0651+-1.0016 ? might be 1.0284x slower mod-boolean 7.8020+-0.0269 ? 7.9874+-0.2923 ? might be 1.0238x slower mul-boolean-double 3.3384+-0.0342 ? 3.4144+-0.1110 ? might be 1.0228x slower mul-boolean 2.6726+-0.1321 2.6609+-0.0950 neg-boolean 2.9368+-0.1088 2.8659+-0.0498 might be 1.0247x faster negative-zero-divide 0.2923+-0.0088 ? 0.2943+-0.0110 ? negative-zero-modulo 0.2805+-0.0065 ? 0.2868+-0.0127 ? might be 1.0224x slower negative-zero-negate 0.2654+-0.0049 ? 0.2860+-0.0213 ? might be 1.0776x slower nested-function-parsing 32.0344+-0.5384 31.7899+-0.2100 new-array-buffer-dead 81.8406+-0.4507 81.7421+-0.4154 new-array-buffer-push 5.7042+-0.2596 ? 5.7751+-0.3738 ? might be 1.0124x slower new-array-dead 13.8606+-0.7376 13.5938+-0.4362 might be 1.0196x faster new-array-push 3.2369+-0.1287 ? 3.3186+-0.1153 ? might be 1.0252x slower no-inline-constructor 29.4399+-0.4838 ? 29.4824+-0.1999 ? number-test 2.6629+-0.0435 2.6480+-0.0560 object-closure-call 4.6566+-0.1262 4.5739+-0.0595 might be 1.0181x faster object-test 2.6268+-0.1858 2.4430+-0.0322 might be 1.0752x faster obvious-sink-pathology-taken 96.5558+-2.0696 95.7297+-0.8182 obvious-sink-pathology 91.4477+-0.8966 91.2404+-0.5022 obviously-elidable-new-object 27.0715+-0.7062 ? 28.0129+-1.8852 ? might be 1.0348x slower plus-boolean-arith 2.2553+-0.1132 2.1962+-0.0161 might be 1.0269x faster plus-boolean-double 2.8784+-0.0546 ? 2.9033+-0.0418 ? plus-boolean 2.4026+-0.0334 2.3808+-0.0495 poly-chain-access-different-prototypes-simple 2.5393+-0.0310 2.5283+-0.0383 poly-chain-access-different-prototypes 2.3354+-0.0318 ? 2.3648+-0.0493 ? might be 1.0126x slower poly-chain-access-simpler 2.5293+-0.0527 2.5236+-0.0537 poly-chain-access 2.3475+-0.1003 ? 2.3835+-0.0888 ? might be 1.0153x slower poly-stricteq 48.0337+-0.6912 47.9050+-0.3827 polymorphic-array-call 1.1768+-0.0594 ? 1.2326+-0.1089 ? might be 1.0474x slower polymorphic-get-by-id 2.6318+-0.0469 ? 2.7004+-0.1964 ? might be 1.0261x slower polymorphic-put-by-id 23.7823+-0.5992 ? 25.2384+-1.5058 ? might be 1.0612x slower polymorphic-structure 12.4732+-0.1975 ? 12.5477+-0.1568 ? polyvariant-monomorphic-get-by-id 6.5062+-0.6804 6.4700+-0.5994 proto-getter-access 7.6879+-0.1762 7.5668+-0.1022 might be 1.0160x faster put-by-id-replace-and-transition 7.3965+-0.2579 ? 7.6620+-0.6962 ? might be 1.0359x slower put-by-id-slightly-polymorphic 2.4477+-0.0266 2.4373+-0.0564 put-by-id 9.2785+-0.2808 9.0425+-0.1701 might be 1.0261x faster put-by-val-direct 0.2881+-0.0165 ? 0.2958+-0.0146 ? might be 1.0269x slower put-by-val-large-index-blank-indexing-type 5.0684+-0.2012 4.8580+-0.1932 might be 1.0433x faster put-by-val-machine-int 2.3437+-0.0842 ? 2.3620+-0.1021 ? rare-osr-exit-on-local 13.8973+-0.2263 13.8562+-0.1470 register-pressure-from-osr 15.5884+-0.4809 15.4825+-0.3356 repeat-multi-get-by-offset 20.8234+-0.3612 20.5940+-0.5045 might be 1.0111x faster setter-prototype 6.9636+-0.2377 ? 6.9648+-0.1512 ? setter 5.3108+-0.2341 5.2591+-0.2412 simple-activation-demo 23.1988+-0.8628 ? 23.7177+-1.0096 ? might be 1.0224x slower simple-getter-access 9.8091+-0.1530 ? 9.8374+-0.2227 ? simple-poly-call-nested 8.6343+-0.3000 8.2127+-0.2750 might be 1.0513x faster simple-poly-call 1.1569+-0.0298 1.1438+-0.0399 might be 1.0114x faster sin-boolean 17.0823+-0.7675 ? 17.5911+-0.7439 ? might be 1.0298x slower singleton-scope 52.8921+-1.3741 52.0327+-0.2441 might be 1.0165x faster sink-function 8.9333+-0.2722 ? 9.1427+-0.3963 ? might be 1.0234x slower sink-huge-activation 16.1269+-1.0241 15.5290+-0.3713 might be 1.0385x faster sinkable-new-object-dag 52.8076+-0.6964 52.7316+-0.8070 sinkable-new-object-taken 39.5755+-0.2863 ? 40.1165+-0.4844 ? might be 1.0137x slower sinkable-new-object 27.8725+-0.3973 ? 28.0398+-0.4516 ? slow-array-profile-convergence 2.3346+-0.0861 ? 2.3367+-0.0917 ? slow-convergence 2.3163+-0.1642 2.2709+-0.0712 might be 1.0200x faster slow-ternaries 16.6730+-0.4791 ? 16.7771+-0.7267 ? sorting-benchmark 16.3418+-0.5591 16.0468+-0.3669 might be 1.0184x faster sparse-conditional 1.0290+-0.0226 1.0165+-0.0091 might be 1.0123x faster splice-to-remove 12.3030+-0.6376 11.7798+-0.3862 might be 1.0444x faster string-char-code-at 13.8394+-0.5221 ? 13.8540+-0.6211 ? string-concat-object 2.0907+-0.1124 ? 2.1969+-0.1290 ? might be 1.0508x slower string-concat-pair-object 2.0799+-0.1726 2.0705+-0.0860 string-concat-pair-simple 8.6248+-0.2199 ? 8.6748+-0.2071 ? string-concat-simple 8.9347+-0.2665 8.7485+-0.1768 might be 1.0213x faster string-cons-repeat 6.4200+-0.3514 6.3395+-0.2810 might be 1.0127x faster string-cons-tower 6.4532+-0.2476 6.4343+-0.3062 string-equality 14.9037+-0.4841 14.7778+-0.6684 string-get-by-val-big-char 6.3250+-0.2370 6.1933+-0.0632 might be 1.0213x faster string-get-by-val-out-of-bounds-insane 3.1514+-0.2208 3.0291+-0.0752 might be 1.0404x faster string-get-by-val-out-of-bounds 3.7928+-0.0620 ? 3.8303+-0.0885 ? string-get-by-val 2.6256+-0.0377 2.6017+-0.0794 string-hash 1.7857+-0.0257 ? 1.8461+-0.0930 ? might be 1.0338x slower string-long-ident-equality 12.7156+-0.9956 11.9256+-0.2140 might be 1.0662x faster string-out-of-bounds 10.0142+-0.3745 9.9667+-0.4368 string-repeat-arith 27.8690+-1.3275 26.4352+-0.3507 might be 1.0542x faster string-sub 52.5240+-1.0007 51.2790+-1.4446 might be 1.0243x faster string-test 2.5973+-0.0401 ? 2.6065+-0.1167 ? string-var-equality 24.1212+-1.1670 23.7657+-0.5575 might be 1.0150x faster structure-hoist-over-transitions 2.3979+-0.0794 2.3760+-0.1324 substring-concat-weird 34.4271+-1.0257 ? 34.4271+-0.4789 ? substring-concat 37.3927+-0.6594 ? 38.1896+-1.2511 ? might be 1.0213x slower substring 43.4680+-1.0314 ? 43.8188+-1.2349 ? switch-char-constant 2.4887+-0.0724 ? 2.5577+-0.0602 ? might be 1.0277x slower switch-char 5.2818+-0.4419 ? 5.5391+-0.3525 ? might be 1.0487x slower switch-constant 7.2539+-0.4399 ? 7.8980+-0.4124 ? might be 1.0888x slower switch-string-basic-big-var 15.2092+-0.4912 14.8630+-0.2282 might be 1.0233x faster switch-string-basic-big 14.4555+-0.5976 14.3282+-0.3116 switch-string-basic-var 13.0675+-0.6565 12.6406+-0.2418 might be 1.0338x faster switch-string-basic 12.4610+-0.3702 ? 12.6622+-0.3443 ? might be 1.0161x slower switch-string-big-length-tower-var 16.7197+-0.3332 ? 16.9590+-0.6697 ? might be 1.0143x slower switch-string-length-tower-var 12.3011+-0.1137 ? 12.7136+-0.5397 ? might be 1.0335x slower switch-string-length-tower 11.0867+-0.2633 ? 11.2022+-0.2949 ? might be 1.0104x slower switch-string-short 11.6457+-0.9076 11.3466+-0.3611 might be 1.0264x faster switch 11.3470+-0.4237 ? 11.8271+-0.4514 ? might be 1.0423x slower tear-off-arguments-simple 3.0356+-0.0351 ? 3.0902+-0.1837 ? might be 1.0180x slower tear-off-arguments 4.0306+-0.1561 3.9394+-0.1220 might be 1.0232x faster temporal-structure 11.4191+-0.3413 ? 11.5953+-0.5771 ? might be 1.0154x slower to-int32-boolean 12.5781+-0.3048 ? 12.9288+-0.5553 ? might be 1.0279x slower try-catch-get-by-val-cloned-arguments 12.3413+-0.2885 12.3379+-0.2036 try-catch-get-by-val-direct-arguments 5.3222+-0.1339 5.2272+-0.0749 might be 1.0182x faster try-catch-get-by-val-scoped-arguments 6.4214+-0.1298 ? 6.5427+-0.3385 ? might be 1.0189x slower typed-array-get-set-by-val-profiling 26.2111+-0.5454 ? 26.4745+-0.5180 ? might be 1.0101x slower undefined-property-access 206.5062+-1.7041 205.3543+-1.7557 undefined-test 2.7469+-0.1000 2.6805+-0.0637 might be 1.0248x faster unprofiled-licm 13.3362+-0.2756 ? 13.6115+-0.6631 ? might be 1.0206x slower varargs-call 12.7104+-0.1916 12.6732+-0.1002 varargs-construct-inline 21.1562+-0.5941 21.0561+-0.2504 varargs-construct 19.0471+-0.1752 ? 19.1121+-0.2337 ? varargs-inline 8.0146+-0.1746 7.9000+-0.1511 might be 1.0145x faster varargs-strict-mode 8.6206+-0.1624 ? 8.6341+-0.1600 ? varargs 8.5776+-0.1134 8.4848+-0.0934 might be 1.0109x faster weird-inlining-const-prop 2.0860+-0.0978 1.9870+-0.0734 might be 1.0498x faster <geometric> 7.3161+-0.0182 ? 7.3166+-0.0177 ? might be 1.0001x slower original parserArena CompressionBench: huffman 53.4638+-1.8968 51.5905+-0.9192 might be 1.0363x faster arithmetic-simple 253.4769+-1.7748 ? 254.5241+-1.7776 ? arithmetic-precise 233.6371+-1.8197 233.4102+-2.7945 arithmetic-complex-precise 231.6261+-1.5858 ? 232.9466+-1.8545 ? arithmetic-precise-order-0 259.9308+-0.9009 ? 260.7111+-2.3049 ? arithmetic-precise-order-1 287.1697+-3.3540 ? 288.1502+-2.7861 ? arithmetic-precise-order-2 331.3731+-3.8605 ? 334.7061+-8.0980 ? might be 1.0101x slower arithmetic-simple-order-1 305.3245+-3.2707 ? 306.0601+-2.8427 ? arithmetic-simple-order-2 359.7890+-3.3459 357.8897+-4.3257 lz-string 321.5365+-6.5752 313.2104+-2.9259 might be 1.0266x faster <geometric> 240.2076+-0.8022 239.2735+-0.9243 might be 1.0039x faster original parserArena Geomean of preferred means: <scaled-result> 33.7245+-0.0867 ? 33.7760+-0.0898 ? might be 1.0015x slower
Yusuke Suzuki
Comment 11
2015-07-16 11:06:36 PDT
Comment on
attachment 256815
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=256815&action=review
The logic itself looks nice. Few nits.
> Source/JavaScriptCore/ChangeLog:34 > + to make things clearer and more deliberate.
Maybe, these messages are mis indented.
> Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:64 > + strictMode, JSParserCodeType::Function, error, 0, executable->parseMode());
Use nullptr instead of `0`.
> Source/JavaScriptCore/parser/ASTBuilder.h:349 > + functionInfo.body->setLoc(functionInfo.startLine, functionInfo.endLine, location.startOffset, location.lineStartOffset);
OK, now, parameters are reparsed.
> Source/JavaScriptCore/parser/Nodes.h:1630 > + Vector<DestructuringPatternNode*, 3> m_patterns;
I think this vector leaks memory since ParserArenaFreeable's destructor is not called. Use intrusive lists (like the other nodes such as ArgumentListNode).
> Source/JavaScriptCore/parser/Parser.cpp:-370 > -#endif
Looks fine.
> Source/JavaScriptCore/parser/Parser.cpp:1390 > + failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? "Cannot parse body of this function" : "Cannot parse body of this arrow function");
OK, here, we always use SyntaxChecker.
> Source/JavaScriptCore/parser/Parser.cpp:1628 > + RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode);
Is there any case in which ArrowFunctionMode has valid `name`?
> Source/JavaScriptCore/runtime/CodeCache.cpp:98 > + JSParserCodeType::Program, error, 0, FunctionParseMode::NotAFunctionMode, ConstructorKind::None, thisTDZMode);
Let's use nullptr instead of 0.
> Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37 > +checkBasicBlock(testConditionalFunctionCall, "y ?", ShouldHaveExecuted);
Why are they changed?
Saam Barati
Comment 12
2015-07-16 14:29:15 PDT
Comment on
attachment 256815
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=256815&action=review
>> Source/JavaScriptCore/ChangeLog:34 >> + to make things clearer and more deliberate. > > Maybe, these messages are mis indented.
Will fix.
>> Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:64 >> + strictMode, JSParserCodeType::Function, error, 0, executable->parseMode()); > > Use nullptr instead of `0`.
will do.
>> Source/JavaScriptCore/parser/Nodes.h:1630 >> + Vector<DestructuringPatternNode*, 3> m_patterns; > > I think this vector leaks memory since ParserArenaFreeable's destructor is not called. > Use intrusive lists (like the other nodes such as ArgumentListNode).
Good catch.
>> Source/JavaScriptCore/parser/Parser.cpp:1390 >> + failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? "Cannot parse body of this function" : "Cannot parse body of this arrow function"); > > OK, here, we always use SyntaxChecker.
Yes. I removed the ::FunctionBodyBuilder from SyntaxChecker and ASTBuilder because it's always SyntaxChecker. This to me is just more clear.
>> Source/JavaScriptCore/parser/Parser.cpp:1628 >> + RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode); > > Is there any case in which ArrowFunctionMode has valid `name`?
I believe we hit this path with: var f = (x) => x; I will double check though, this seems a bit weird.
>> Source/JavaScriptCore/runtime/CodeCache.cpp:98 >> + JSParserCodeType::Program, error, 0, FunctionParseMode::NotAFunctionMode, ConstructorKind::None, thisTDZMode); > > Let's use nullptr instead of 0.
will do.
>> Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37 >> +checkBasicBlock(testConditionalFunctionCall, "y ?", ShouldHaveExecuted); > > Why are they changed?
These tests work by looking up string indices inside the function. If there are multiple occurrences of a string inside the function, it will find the first occurrence. Because the function's source text now includes the parameters, these texts were resolving to the wrong index inside the function. "y ?" is a unique string inside the function and therefore is not ambiguous in terms of it's substring index.
Saam Barati
Comment 13
2015-07-16 15:12:25 PDT
Comment on
attachment 256815
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=256815&action=review
>>> Source/JavaScriptCore/parser/Nodes.h:1630 >>> + Vector<DestructuringPatternNode*, 3> m_patterns; >> >> I think this vector leaks memory since ParserArenaFreeable's destructor is not called. >> Use intrusive lists (like the other nodes such as ArgumentListNode). > > Good catch.
I'm going to make this inherit from ParserArenaDeletable.
> Source/JavaScriptCore/parser/Nodes.h:1747 > + class DestructuringPatternNode : public ParserArenaFreeable {
This also needs to inherit from ParserArenaDeletable.
Saam Barati
Comment 14
2015-07-16 15:18:02 PDT
Created
attachment 256933
[details]
patch
Saam Barati
Comment 15
2015-07-16 17:05:27 PDT
Created
attachment 256939
[details]
patch rebased
Yusuke Suzuki
Comment 16
2015-07-17 07:59:00 PDT
Comment on
attachment 256815
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=256815&action=review
>> Source/JavaScriptCore/parser/Nodes.h:1747 >> + class DestructuringPatternNode : public ParserArenaFreeable { > > This also needs to inherit from ParserArenaDeletable.
OK, ObjectPattern / ArrayPattern has a Vector. So DestructuringPatternNode should be ParserArenaDeletable.
>>> Source/JavaScriptCore/parser/Parser.cpp:1628 >>> + RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode); >> >> Is there any case in which ArrowFunctionMode has valid `name`? > > I believe we hit this path with: > var f = (x) => x; > > I will double check though, this seems a bit weird.
Ah, OK. name is transfered from the variable name.
>>> Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37 >>> +checkBasicBlock(testConditionalFunctionCall, "y ?", ShouldHaveExecuted); >> >> Why are they changed? > > These tests work by looking up string indices inside the function. If there are multiple occurrences of a string > inside the function, it will find the first occurrence. Because the function's source text now includes the parameters, these > texts were resolving to the wrong index inside the function. "y ?" is a unique string inside the function and therefore is not ambiguous > in terms of it's substring index.
OK, make sense.
Saam Barati
Comment 17
2015-07-17 08:07:37 PDT
(In reply to
comment #16
)
> Comment on
attachment 256815
[details]
> patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=256815&action=review
> > >> Source/JavaScriptCore/parser/Nodes.h:1747 > >> + class DestructuringPatternNode : public ParserArenaFreeable { > > > > This also needs to inherit from ParserArenaDeletable. > > OK, ObjectPattern / ArrayPattern has a Vector. So DestructuringPatternNode > should be ParserArenaDeletable. > > >>> Source/JavaScriptCore/parser/Parser.cpp:1628 > >>> + RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode); > >> > >> Is there any case in which ArrowFunctionMode has valid `name`? > > > > I believe we hit this path with: > > var f = (x) => x; > > > > I will double check though, this seems a bit weird. > > Ah, OK. name is transfered from the variable name.
> I was wrong about this. It doesn't get the name from the variable name. (I think there is some machinery that does something similar but it's not in this part of the parser.) I removed the assertion that it could also be an arrow function.
> >>> Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37 > >>> +checkBasicBlock(testConditionalFunctionCall, "y ?", ShouldHaveExecuted); > >> > >> Why are they changed? > > > > These tests work by looking up string indices inside the function. If there are multiple occurrences of a string > > inside the function, it will find the first occurrence. Because the function's source text now includes the parameters, these > > texts were resolving to the wrong index inside the function. "y ?" is a unique string inside the function and therefore is not ambiguous > > in terms of it's substring index. > > OK, make sense.
Yusuke Suzuki
Comment 18
2015-07-17 08:56:23 PDT
Comment on
attachment 256939
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=256939&action=review
> Source/JavaScriptCore/parser/ASTBuilder.h:367 > + SourceCode source = m_sourceCode->subExpression(functionInfo.startOffset, functionInfo.endOffset, functionInfo.startLine, functionInfo.bodyStartColumn);
Dropping subArrowFunction is OK.
> Source/JavaScriptCore/parser/Parser.cpp:248 > + m_parameters = functionInfo.parameters;
This branch (parsing function parameters) is not executed under arrowfunction = OFF, is it correct?
Saam Barati
Comment 19
2015-07-17 10:53:18 PDT
Created
attachment 256977
[details]
patch Fixed #ifdef bug. It should not surround the entire isReparsingFunction() but just surround reprising of arrow functions.
Yusuke Suzuki
Comment 20
2015-07-17 11:22:56 PDT
Comment on
attachment 256977
[details]
patch Great, r+.
WebKit Commit Bot
Comment 21
2015-07-17 11:29:39 PDT
Comment on
attachment 256977
[details]
patch Rejecting
attachment 256977
[details]
from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.appspot.com', '--bot-id=webkit-cq-02', 'validate-changelog', '--check-oops', '--non-interactive', 256977, '--port=mac']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit ChangeLog entry in LayoutTests/ChangeLog contains OOPS!. Full output:
http://webkit-queues.appspot.com/results/6690290693832704
Saam Barati
Comment 22
2015-07-17 11:50:23 PDT
landed in:
https://trac.webkit.org/r186959
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug