WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 143146
Clean up Identifier factories to clarify the meaning of StringImpl*
https://bugs.webkit.org/show_bug.cgi?id=143146
Summary
Clean up Identifier factories to clarify the meaning of StringImpl*
Yusuke Suzuki
Reported
2015-03-27 13:03:48 PDT
Clean up Identifier factories to clarify the meaning of StringImpl*
Attachments
Patch
(207.66 KB, patch)
2015-03-27 13:13 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(207.11 KB, patch)
2015-03-27 13:31 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(209.81 KB, patch)
2015-03-28 02:00 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Yusuke Suzuki
Comment 1
2015-03-27 13:13:35 PDT
Created
attachment 249601
[details]
Patch
Yusuke Suzuki
Comment 2
2015-03-27 13:28:33 PDT
Almost all changes in WebKit2 / WebKit / WebCore are Identifier => Identifier::fromString/Identifier::fromUid. In WTF, StringImpl* is now cleaned up to explicitly use it as uid. Renaming isUnique to isSymbol (
https://bugs.webkit.org/show_bug.cgi?id=141106#c37
) Introducing 3 string kinds, 1. StringNormal (non-atomic, non-symbol) 2. StringAtomic (atomic, non-symbol) 3. StringSymbol (non-atomic, symbol) In Identifier, explicitly define 2 factory functions, fromUid and fromString.
Yusuke Suzuki
Comment 3
2015-03-27 13:31:32 PDT
Created
attachment 249603
[details]
Patch
Yusuke Suzuki
Comment 4
2015-03-28 02:00:29 PDT
Created
attachment 249657
[details]
Patch
Yusuke Suzuki
Comment 5
2015-03-31 11:37:06 PDT
Object.getOwnPropertySymbols patch becomes too large. So this patch is spawned from it.
Filip Pizlo
Comment 6
2015-03-31 11:44:34 PDT
Performance impact? Please use Tools/Scripts/run-jsc-benchmarks Baseline:<path to baseline jsc> Mine:<path to jsc with your changes> Preferably also configure it to run Octane, and post those results.
Yusuke Suzuki
Comment 7
2015-03-31 11:46:27 PDT
(In reply to
comment #6
)
> Performance impact? > > Please use Tools/Scripts/run-jsc-benchmarks Baseline:<path to baseline jsc> > Mine:<path to jsc with your changes> > > Preferably also configure it to run Octane, and post those results.
Thanks! I'll take it.
Yusuke Suzuki
Comment 8
2015-03-31 12:29:21 PDT
First result, not using Octane. I'll setup environment to run Octane in run-jsc-benchmarks Benchmark report for SunSpider, LongSpider, V8Spider, and JSRegress on yusuke (MacBookPro8,2). VMs tested: "Baseline" at /Users/yusuke/dev/WebKit/WebKitBuild/Release/jsc "Mine" at /Users/yusuke/dev/WebKit/WebKitBuild/identifier/Release/jsc Collected 4 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. Baseline Mine SunSpider: 3d-cube 5.6353+-0.8267 5.4421+-0.2245 might be 1.0355x faster 3d-morph 6.0991+-0.1264 6.0425+-0.0250 3d-raytrace 7.3867+-1.3110 6.8843+-0.2270 might be 1.0730x faster access-binary-trees 2.4324+-0.0666 ? 2.4432+-0.1645 ? access-fannkuch 6.5162+-0.1185 ? 6.5640+-0.1765 ? access-nbody 3.1632+-0.4174 ? 3.1801+-0.6810 ? access-nsieve 3.3439+-0.1437 ? 3.3710+-0.0997 ? bitops-3bit-bits-in-byte 1.9228+-0.0555 1.9150+-0.0400 bitops-bits-in-byte 3.6048+-0.0783 3.5626+-0.0873 might be 1.0119x faster bitops-bitwise-and 2.3672+-0.1876 ? 2.3697+-0.1335 ? bitops-nsieve-bits 5.6820+-2.9908 4.6463+-1.3994 might be 1.2229x faster controlflow-recursive 2.3619+-0.0920 ? 2.3641+-0.1382 ? crypto-aes 5.2573+-2.5325 4.6362+-0.2642 might be 1.1340x faster crypto-md5 2.6955+-0.0563 2.6624+-0.0451 might be 1.0124x faster crypto-sha1 2.8760+-0.2136 2.8194+-0.2818 might be 1.0201x faster date-format-tofte 9.8620+-0.2264 9.7141+-0.3831 might be 1.0152x faster date-format-xparb 5.5468+-0.0819 5.5127+-0.1552 math-cordic 3.4692+-0.0961 3.4542+-0.1008 math-partial-sums 6.6200+-3.6915 ? 7.2188+-3.1253 ? might be 1.0904x slower math-spectral-norm 2.3818+-0.0517 ? 2.3848+-0.0923 ? regexp-dna 9.0883+-4.1359 7.4827+-0.1531 might be 1.2146x faster string-base64 5.8726+-2.9952 4.8553+-0.1943 might be 1.2095x faster string-fasta 7.1832+-0.2976 ? 7.2688+-0.1834 ? might be 1.0119x slower string-tagcloud 10.3871+-0.2510 ? 10.7244+-1.5029 ? might be 1.0325x slower string-unpack-code 22.9854+-6.1520 22.3551+-4.2903 might be 1.0282x faster string-validate-input 5.1447+-0.0773 ? 5.3025+-0.1813 ? might be 1.0307x slower <arithmetic> 5.7648+-0.1618 5.5837+-0.2443 might be 1.0324x faster Baseline Mine LongSpider: 3d-cube 937.5034+-28.5713 ! 983.3462+-8.7573 ! definitely 1.0489x slower 3d-morph 1590.1312+-4.7993 ? 1596.8079+-5.8036 ? 3d-raytrace 819.1777+-17.7360 ? 834.9861+-19.5181 ? might be 1.0193x slower access-binary-trees 1141.2209+-20.5716 ? 1151.3492+-8.5751 ? access-fannkuch 355.6476+-28.1854 354.8389+-16.5104 access-nbody 675.2780+-3.6932 ^ 666.6944+-2.3261 ^ definitely 1.0129x faster access-nsieve 955.2313+-29.9591 948.9088+-25.1972 bitops-3bit-bits-in-byte 52.2550+-0.8546 ? 52.9308+-2.7214 ? might be 1.0129x slower bitops-bits-in-byte 104.7086+-12.9789 101.7750+-4.9805 might be 1.0288x faster bitops-nsieve-bits 811.8054+-16.8935 ? 822.7943+-21.4909 ? might be 1.0135x slower controlflow-recursive 525.1616+-6.3043 ! 534.5832+-2.3200 ! definitely 1.0179x slower crypto-aes 778.6168+-13.1455 ? 779.4603+-18.0428 ? crypto-md5 645.5275+-4.0026 ? 647.6222+-13.4067 ? crypto-sha1 739.7191+-14.2289 ? 748.9631+-36.3434 ? might be 1.0125x slower date-format-tofte 844.8108+-41.1818 819.2424+-36.6379 might be 1.0312x faster date-format-xparb 794.2470+-37.3342 792.3867+-71.9792 math-cordic 658.2045+-5.8346 657.2531+-2.8058 math-partial-sums 594.8108+-22.7876 ? 600.8997+-28.3040 ? might be 1.0102x slower math-spectral-norm 905.7029+-5.4484 ? 911.6506+-13.6982 ? string-base64 422.6147+-22.4303 414.5021+-13.2196 might be 1.0196x faster string-fasta 484.1487+-6.3226 482.7860+-9.8633 string-tagcloud 234.5778+-13.3018 ? 238.8315+-1.6006 ? might be 1.0181x slower <geometric> 562.2380+-4.6091 ? 564.0316+-2.5589 ? might be 1.0032x slower Baseline Mine V8Spider: crypto 63.4139+-2.4498 61.9439+-3.0494 might be 1.0237x faster deltablue 101.8953+-4.4657 96.8514+-16.4290 might be 1.0521x faster earley-boyer 45.6738+-1.2495 ? 45.6927+-1.1642 ? raytrace 41.2145+-2.3192 39.7695+-2.1257 might be 1.0363x faster regexp 74.3088+-3.2638 ? 74.6990+-5.3181 ? richards 84.6373+-4.7250 ? 90.2291+-5.7002 ? might be 1.0661x slower splay 42.7302+-3.5544 40.4140+-4.0788 might be 1.0573x faster <geometric> 61.3216+-1.0692 60.4458+-1.8795 might be 1.0145x faster Baseline Mine JSRegress: abs-boolean 3.1035+-0.1283 ? 3.2075+-0.1012 ? might be 1.0335x slower adapt-to-double-divide 17.1965+-0.6752 17.1837+-0.5172 aliased-arguments-getbyval 1.2579+-0.0593 ? 1.4305+-0.5950 ? might be 1.1372x slower allocate-big-object 2.7850+-0.1101 2.7781+-0.0495 arguments-named-and-reflective 14.0236+-3.7189 13.5850+-2.7831 might be 1.0323x faster arguments-out-of-bounds 15.9777+-0.7605 ? 16.1884+-2.3050 ? might be 1.0132x slower arguments-strict-mode 12.6647+-2.4461 11.7845+-0.2569 might be 1.0747x faster arguments 11.4329+-3.3660 ? 11.6825+-2.9243 ? might be 1.0218x slower arity-mismatch-inlining 0.9380+-0.0447 ? 0.9843+-0.2069 ? might be 1.0493x slower array-access-polymorphic-structure 7.3102+-0.6834 ? 9.6050+-4.3327 ? might be 1.3139x slower array-nonarray-polymorhpic-access 40.1147+-1.9214 ? 41.7183+-0.9603 ? might be 1.0400x slower array-prototype-every 100.4833+-3.5329 ? 102.1475+-7.4441 ? might be 1.0166x slower array-prototype-forEach 97.0215+-3.4324 ? 99.3673+-5.8660 ? might be 1.0242x slower array-prototype-map 118.4540+-10.4749 111.4524+-9.8444 might be 1.0628x faster array-prototype-some 100.6805+-6.0608 ? 102.4485+-8.3114 ? might be 1.0176x slower array-splice-contiguous 48.4435+-2.5237 47.7895+-4.8558 might be 1.0137x faster array-with-double-add 4.4432+-0.2995 4.4421+-0.1642 array-with-double-increment 3.7227+-0.1572 ? 3.8392+-0.1810 ? might be 1.0313x slower array-with-double-mul-add 5.2820+-0.1885 5.2496+-0.1389 array-with-double-sum 3.4246+-0.1155 ? 3.4357+-0.1269 ? array-with-int32-add-sub 7.7073+-0.0502 7.6254+-0.0663 might be 1.0107x faster array-with-int32-or-double-sum 3.4621+-0.0380 ? 3.5204+-0.1001 ? might be 1.0169x slower ArrayBuffer-DataView-alloc-large-long-lived 40.6982+-4.0840 40.0147+-3.5477 might be 1.0171x faster ArrayBuffer-DataView-alloc-long-lived 16.8784+-3.5450 ? 17.5261+-4.4258 ? might be 1.0384x slower ArrayBuffer-Int32Array-byteOffset 4.0253+-0.1910 4.0235+-0.1830 ArrayBuffer-Int8Array-alloc-large-long-lived 42.0272+-4.9528 ? 43.0339+-7.6263 ? might be 1.0240x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 28.6893+-4.9279 ? 29.0190+-5.5475 ? might be 1.0115x slower ArrayBuffer-Int8Array-alloc-long-lived 16.2690+-4.8019 15.1385+-0.3821 might be 1.0747x faster ArrayBuffer-Int8Array-alloc 15.5809+-6.2996 ? 15.6381+-5.0596 ? asmjs_bool_bug 7.8658+-0.0987 ? 9.1540+-3.8345 ? might be 1.1638x slower assign-custom-setter-polymorphic 3.2542+-0.1005 ? 3.3127+-0.1421 ? might be 1.0180x slower assign-custom-setter 4.3877+-0.1720 ? 4.7025+-0.2670 ? might be 1.0718x slower basic-set 9.5545+-0.3787 ? 9.8511+-0.5647 ? might be 1.0310x slower big-int-mul 4.5270+-0.1025 4.4946+-0.3037 boolean-test 3.4167+-0.1510 3.3578+-0.1334 might be 1.0175x faster branch-fold 4.1937+-0.0446 ? 4.2535+-0.1148 ? might be 1.0143x slower by-val-generic 8.6541+-0.1751 ? 8.7014+-0.1352 ? call-spread-apply 36.3522+-4.4309 35.9220+-4.5184 might be 1.0120x faster call-spread-call 26.2310+-0.4139 ? 28.4358+-4.0530 ? might be 1.0841x slower captured-assignments 0.4978+-0.0275 0.4824+-0.0313 might be 1.0319x faster cast-int-to-double 5.5855+-0.0378 ? 5.5998+-0.0518 ? cell-argument 8.7169+-0.2207 ? 8.9020+-0.7139 ? might be 1.0212x slower cfg-simplify 3.1686+-0.1111 3.0804+-0.0293 might be 1.0286x faster chain-getter-access 11.4119+-0.1681 11.3120+-0.1248 cmpeq-obj-to-obj-other 12.4672+-2.0397 11.8927+-1.1730 might be 1.0483x faster constant-test 5.2326+-0.0310 ? 5.3173+-0.1953 ? might be 1.0162x slower DataView-custom-properties 48.2158+-4.9422 47.7755+-4.0560 deconstructing-parameters-overridden-by-function 0.5242+-0.0229 0.5222+-0.0271 delay-tear-off-arguments-strictmode 16.4005+-6.0962 16.0378+-2.3497 might be 1.0226x faster deltablue-varargs 220.6406+-6.6187 217.3112+-2.6375 might be 1.0153x faster destructuring-arguments 19.3137+-3.5145 18.2872+-0.4229 might be 1.0561x faster destructuring-swap 5.3704+-0.0561 ? 5.4240+-0.1927 ? direct-arguments-getbyval 1.2928+-0.0921 1.2174+-0.0273 might be 1.0620x faster div-boolean-double 5.4901+-0.0285 5.4852+-0.0388 div-boolean 8.1672+-0.2507 ? 8.3152+-0.6649 ? might be 1.0181x slower double-get-by-val-out-of-bounds 4.9183+-0.1857 4.8932+-0.1566 double-pollution-getbyval 9.0648+-0.1611 9.0345+-0.0823 double-pollution-putbyoffset 4.6896+-0.0618 4.6486+-0.3254 double-to-int32-typed-array-no-inline 2.3485+-0.0542 ? 2.4542+-0.0639 ? might be 1.0450x slower double-to-int32-typed-array 2.1347+-0.0534 2.1020+-0.0202 might be 1.0156x faster double-to-uint32-typed-array-no-inline 2.4545+-0.0274 2.4208+-0.0318 might be 1.0139x faster double-to-uint32-typed-array 2.1401+-0.0224 ? 2.1575+-0.0842 ? elidable-new-object-dag 49.1843+-4.1354 ? 51.7391+-1.5152 ? might be 1.0519x slower elidable-new-object-roflcopter 53.4616+-4.3610 ? 56.7514+-7.6762 ? might be 1.0615x slower elidable-new-object-then-call 48.7101+-3.9136 43.9800+-1.8016 might be 1.1076x faster elidable-new-object-tree 56.1705+-7.0712 52.7722+-7.4781 might be 1.0644x faster empty-string-plus-int 6.1521+-0.0884 ? 7.0362+-2.8177 ? might be 1.1437x slower emscripten-cube2hash 44.7760+-0.6143 42.1935+-2.6936 might be 1.0612x faster exit-length-on-plain-object 17.4562+-4.8086 16.4266+-4.4949 might be 1.0627x faster external-arguments-getbyval 1.4322+-0.2876 1.2967+-0.0686 might be 1.1045x faster external-arguments-putbyval 2.5953+-0.3427 2.5742+-0.1653 fixed-typed-array-storage-var-index 1.3791+-0.1180 1.3417+-0.0092 might be 1.0278x faster fixed-typed-array-storage 0.9464+-0.0417 0.9403+-0.0241 Float32Array-matrix-mult 6.2306+-2.1290 5.0540+-1.4541 might be 1.2328x faster Float32Array-to-Float64Array-set 60.0915+-5.2168 59.0541+-0.4491 might be 1.0176x faster Float64Array-alloc-long-lived 79.8263+-1.0316 ? 83.1487+-7.4699 ? might be 1.0416x slower Float64Array-to-Int16Array-set 76.9496+-5.5973 ? 78.4128+-0.7445 ? might be 1.0190x slower fold-double-to-int 19.5172+-4.4922 18.1194+-0.4046 might be 1.0771x faster fold-get-by-id-to-multi-get-by-offset-rare-int 11.2448+-1.0320 ? 12.8923+-1.2184 ? might be 1.1465x slower fold-get-by-id-to-multi-get-by-offset 10.6040+-0.8930 10.3243+-0.9165 might be 1.0271x faster fold-multi-get-by-offset-to-get-by-offset 9.8237+-1.6383 8.1026+-1.4574 might be 1.2124x faster fold-multi-get-by-offset-to-poly-get-by-offset 9.2824+-1.6501 9.0139+-1.6936 might be 1.0298x faster fold-multi-put-by-offset-to-poly-put-by-offset 8.6982+-1.0872 ? 9.1117+-1.3450 ? might be 1.0475x slower fold-multi-put-by-offset-to-put-by-offset 7.0565+-0.2315 5.6555+-1.6786 might be 1.2477x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.9478+-0.3631 ? 10.1312+-0.3726 ? might be 1.0184x slower fold-put-by-id-to-multi-put-by-offset 9.8533+-1.1582 9.7422+-0.5855 might be 1.0114x faster fold-put-structure 6.5596+-0.4639 ? 6.9060+-0.2761 ? might be 1.0528x slower for-of-iterate-array-entries 5.0867+-0.1666 4.9739+-0.1810 might be 1.0227x faster for-of-iterate-array-keys 4.2391+-0.4874 4.1625+-0.1699 might be 1.0184x faster for-of-iterate-array-values 4.5025+-1.7383 4.0420+-0.2186 might be 1.1139x faster fround 19.6874+-0.5512 19.6602+-0.9341 ftl-library-inlining-dataview 82.2327+-1.1729 ! 91.3588+-5.6098 ! definitely 1.1110x slower ftl-library-inlining 122.0204+-0.2226 ? 124.5643+-4.9804 ? might be 1.0208x slower function-dot-apply 2.4053+-0.0209 ? 2.4434+-0.0656 ? might be 1.0158x slower function-test 3.6534+-0.0336 3.5992+-0.0221 might be 1.0150x faster function-with-eval 108.9006+-7.9284 108.3831+-10.8178 gcse-poly-get-less-obvious 20.0575+-2.5796 ? 20.1475+-2.0557 ? gcse-poly-get 21.6545+-1.9699 ? 23.1320+-1.4453 ? might be 1.0682x slower gcse 5.4515+-0.9360 5.2843+-0.8276 might be 1.0316x faster get-by-id-bimorphic-check-structure-elimination-simple 2.9257+-0.1420 2.9203+-0.1181 get-by-id-bimorphic-check-structure-elimination 6.9590+-0.0480 ? 7.0366+-0.1031 ? might be 1.0111x slower get-by-id-chain-from-try-block 8.3402+-1.3704 8.0314+-1.8365 might be 1.0384x faster get-by-id-check-structure-elimination 5.8215+-0.7354 5.6588+-0.1336 might be 1.0288x faster get-by-id-proto-or-self 18.4210+-2.1207 18.0952+-0.3754 might be 1.0180x faster get-by-id-quadmorphic-check-structure-elimination-simple 3.1259+-0.0291 ? 3.1664+-0.1394 ? might be 1.0130x slower get-by-id-self-or-proto 18.2165+-0.5793 ? 21.1044+-6.0733 ? might be 1.1585x slower get-by-val-out-of-bounds 4.6213+-0.0537 ? 4.7836+-0.2365 ? might be 1.0351x slower get_callee_monomorphic 3.8990+-0.0856 ? 4.0343+-0.1411 ? might be 1.0347x slower get_callee_polymorphic 3.6251+-0.1576 ? 3.6612+-0.1286 ? getter-no-activation 5.8008+-0.3469 5.6454+-0.0855 might be 1.0275x faster getter-richards 134.3784+-6.8125 130.0661+-7.2308 might be 1.0332x faster getter 5.9849+-0.2921 5.8763+-0.0387 might be 1.0185x faster global-var-const-infer-fire-from-opt 0.9294+-0.0470 ? 1.0386+-0.1692 ? might be 1.1175x slower global-var-const-infer 0.9825+-0.1066 0.9015+-0.1614 might be 1.0899x faster HashMap-put-get-iterate-keys 30.0208+-0.8611 ? 30.0811+-3.2542 ? HashMap-put-get-iterate 29.4758+-1.4352 29.3298+-0.8124 HashMap-string-put-get-iterate 30.6875+-2.0476 30.2630+-2.1260 might be 1.0140x faster hoist-make-rope 12.5938+-1.8461 ? 13.4195+-0.3229 ? might be 1.0656x slower hoist-poly-check-structure-effectful-loop 5.5029+-0.0200 ? 5.5180+-0.0349 ? hoist-poly-check-structure 3.9716+-0.1314 ? 4.0153+-0.1963 ? might be 1.0110x slower imul-double-only 7.9608+-0.3337 ? 8.6046+-2.0358 ? might be 1.0809x slower imul-int-only 10.4820+-0.3285 ? 10.8361+-0.7690 ? might be 1.0338x slower imul-mixed 8.5332+-0.1705 8.2173+-0.9343 might be 1.0384x faster in-four-cases 19.9512+-0.4652 19.8315+-0.3785 in-one-case-false 10.7075+-0.1518 10.6578+-0.0949 in-one-case-true 10.6724+-0.1953 10.6334+-0.0582 in-two-cases 10.9909+-0.2134 ? 11.0800+-0.4116 ? indexed-properties-in-objects 3.3408+-0.4288 3.1584+-0.0544 might be 1.0578x faster infer-closure-const-then-mov-no-inline 4.1874+-0.1841 4.1086+-0.1407 might be 1.0192x faster infer-closure-const-then-mov 18.2084+-0.5326 17.8945+-0.4736 might be 1.0175x faster infer-closure-const-then-put-to-scope-no-inline 13.3309+-0.6924 13.2189+-0.6054 infer-closure-const-then-put-to-scope 23.9834+-0.4736 ? 24.0350+-0.4838 ? infer-closure-const-then-reenter-no-inline 56.2847+-4.7050 56.1269+-3.2945 infer-closure-const-then-reenter 138.2108+-10.4181 ? 139.2700+-6.6778 ? infer-constant-global-property 31.6315+-1.1774 31.5061+-0.9609 infer-constant-property 2.9818+-0.1056 2.9785+-0.1164 infer-one-time-closure-ten-vars 13.2581+-0.8302 ? 13.9448+-4.2653 ? might be 1.0518x slower infer-one-time-closure-two-vars 12.5753+-0.6067 ? 13.3019+-1.9465 ? might be 1.0578x slower infer-one-time-closure 12.4528+-0.4170 12.3430+-0.3875 infer-one-time-deep-closure 23.0263+-4.6302 21.3444+-0.5841 might be 1.0788x faster inline-arguments-access 4.7427+-0.2010 4.5918+-0.1666 might be 1.0329x faster inline-arguments-aliased-access 4.6186+-0.2595 ? 4.6206+-0.1660 ? inline-arguments-local-escape 4.6634+-0.1099 ? 4.8917+-0.6974 ? might be 1.0490x slower inline-get-scoped-var 5.5990+-0.0192 5.5920+-0.0302 inlined-put-by-id-transition 12.7468+-2.0369 11.6516+-0.7181 might be 1.0940x faster int-or-other-abs-then-get-by-val 5.6766+-0.0161 ? 5.6777+-0.1007 ? int-or-other-abs-zero-then-get-by-val 20.0916+-1.6161 20.0161+-3.4022 int-or-other-add-then-get-by-val 5.5697+-0.0264 ? 5.5908+-0.0717 ? int-or-other-add 5.6411+-0.0895 ? 5.7104+-0.1988 ? might be 1.0123x slower int-or-other-div-then-get-by-val 4.7087+-0.0256 4.6896+-0.0269 int-or-other-max-then-get-by-val 4.7458+-0.0435 4.7438+-0.0364 int-or-other-min-then-get-by-val 4.7317+-0.0601 4.7131+-0.0791 int-or-other-mod-then-get-by-val 4.4659+-0.0777 4.4448+-0.0327 int-or-other-mul-then-get-by-val 4.4262+-0.0648 4.4016+-0.0071 int-or-other-neg-then-get-by-val 5.1699+-0.0188 5.1487+-0.0181 int-or-other-neg-zero-then-get-by-val 23.1425+-4.9950 20.8040+-3.7329 might be 1.1124x faster int-or-other-sub-then-get-by-val 5.6215+-0.0352 5.5522+-0.0422 might be 1.0125x faster int-or-other-sub 4.1865+-0.0591 4.1251+-0.0380 might be 1.0149x faster int-overflow-local 5.1078+-0.0657 5.0924+-0.0252 Int16Array-alloc-long-lived 61.8057+-3.8693 61.0450+-6.1071 might be 1.0125x faster Int16Array-bubble-sort-with-byteLength 23.1740+-0.9370 ? 25.0162+-4.8986 ? might be 1.0795x slower Int16Array-bubble-sort 24.1298+-2.7438 24.1125+-2.1742 Int16Array-load-int-mul 1.7117+-0.0704 1.6995+-0.0560 Int16Array-to-Int32Array-set 60.3849+-0.1494 ! 66.5259+-4.7829 ! definitely 1.1017x slower Int32Array-alloc-large 30.2036+-3.4240 ? 30.9112+-2.6073 ? might be 1.0234x slower Int32Array-alloc-long-lived 65.2349+-4.7380 ? 66.0720+-3.1060 ? might be 1.0128x slower Int32Array-alloc 3.6672+-0.0960 ? 5.9087+-2.2374 ? might be 1.6112x slower Int32Array-Int8Array-view-alloc 10.7181+-5.0646 ? 13.1228+-0.9455 ? might be 1.2244x slower int52-spill 7.0837+-0.2048 ? 7.1232+-0.1400 ? Int8Array-alloc-long-lived 53.8125+-4.1864 52.7590+-4.5165 might be 1.0200x faster Int8Array-load-with-byteLength 4.0134+-0.1780 3.8881+-0.0350 might be 1.0322x faster Int8Array-load 3.9625+-0.1613 ? 4.0686+-0.2255 ? might be 1.0268x slower integer-divide 13.4788+-1.7422 12.8658+-0.2347 might be 1.0476x faster integer-modulo 2.3658+-0.1452 2.3003+-0.0503 might be 1.0285x faster large-int-captured 5.9592+-0.2072 5.8726+-0.0236 might be 1.0147x faster large-int-neg 17.7653+-0.4935 ? 18.8929+-3.6260 ? might be 1.0635x slower large-int 17.3626+-2.6058 ? 17.8676+-3.5841 ? might be 1.0291x slower logical-not 5.1319+-0.1070 ? 5.2973+-0.6646 ? might be 1.0322x slower lots-of-fields 14.2731+-0.9803 13.8617+-0.6443 might be 1.0297x faster make-indexed-storage 3.2538+-0.2688 ? 3.4366+-0.2006 ? might be 1.0562x slower make-rope-cse 6.6190+-1.9970 6.4431+-2.0791 might be 1.0273x faster marsaglia-larger-ints 47.5090+-5.2656 46.2736+-1.5693 might be 1.0267x faster marsaglia-osr-entry 27.9537+-5.1668 25.9082+-2.8556 might be 1.0790x faster max-boolean 3.0325+-0.1551 ? 3.0408+-0.1853 ? method-on-number 19.1545+-0.8813 19.1463+-0.3896 min-boolean 2.9884+-0.1160 2.9415+-0.0935 might be 1.0160x faster minus-boolean-double 3.3685+-0.0783 3.2651+-0.1103 might be 1.0317x faster minus-boolean 2.7172+-0.0104 ? 2.7502+-0.0732 ? might be 1.0121x slower misc-strict-eq 42.0126+-3.8514 40.5999+-1.2340 might be 1.0348x faster mod-boolean-double 11.5218+-1.1092 ? 11.5757+-0.5961 ? mod-boolean 8.2332+-0.1853 ? 8.8418+-2.1457 ? might be 1.0739x slower mul-boolean-double 3.9012+-0.1704 3.7795+-0.0095 might be 1.0322x faster mul-boolean 2.9899+-0.1366 2.9445+-0.0214 might be 1.0154x faster neg-boolean 3.2233+-0.0331 ? 3.2497+-0.0381 ? negative-zero-divide 0.3837+-0.0170 0.3813+-0.0134 negative-zero-modulo 0.4669+-0.1534 0.3840+-0.0123 might be 1.2158x faster negative-zero-negate 0.3695+-0.0585 0.3544+-0.0117 might be 1.0425x faster nested-function-parsing 43.8337+-3.9877 ? 43.9905+-5.4256 ? new-array-buffer-dead 3.3653+-0.0299 3.3430+-0.0452 new-array-buffer-push 7.3150+-0.6778 7.0754+-0.2874 might be 1.0339x faster new-array-dead 13.4354+-0.8845 13.2428+-0.6179 might be 1.0145x faster new-array-push 4.4493+-0.0530 ? 4.4738+-0.0712 ? number-test 3.3275+-0.1070 3.3135+-0.1552 object-closure-call 6.9162+-0.1029 ? 7.0329+-0.2323 ? might be 1.0169x slower object-test 3.4256+-0.1103 ? 3.4492+-0.1277 ? obvious-sink-pathology-taken 163.9227+-7.7855 ? 166.1490+-4.3187 ? might be 1.0136x slower obvious-sink-pathology 164.3690+-2.9504 164.1571+-9.4036 obviously-elidable-new-object 39.5768+-0.4746 ? 44.5896+-5.5277 ? might be 1.1267x slower plus-boolean-arith 2.9264+-0.1476 2.8796+-0.1734 might be 1.0162x faster plus-boolean-double 3.2928+-0.1670 ? 3.3339+-0.1839 ? might be 1.0125x slower plus-boolean 2.9635+-0.0679 ? 3.0045+-0.0884 ? might be 1.0138x slower poly-chain-access-different-prototypes-simple 3.4810+-0.1838 3.3849+-0.0177 might be 1.0284x faster poly-chain-access-different-prototypes 2.9150+-0.0781 ? 3.0085+-0.0304 ? might be 1.0321x slower poly-chain-access-simpler 3.5714+-0.5142 3.4380+-0.1423 might be 1.0388x faster poly-chain-access 2.9126+-0.1115 ? 3.0053+-0.0938 ? might be 1.0318x slower poly-stricteq 60.1942+-0.2081 ? 63.7119+-5.9754 ? might be 1.0584x slower polymorphic-array-call 1.4264+-0.1519 1.3713+-0.2092 might be 1.0402x faster polymorphic-get-by-id 3.3870+-0.2178 3.3234+-0.0277 might be 1.0191x faster polymorphic-put-by-id 33.8445+-8.3492 33.6788+-0.8851 polymorphic-structure 19.7099+-3.3952 ? 20.6815+-4.7565 ? might be 1.0493x slower polyvariant-monomorphic-get-by-id 9.5603+-0.1780 9.4493+-0.1603 might be 1.0117x faster proto-getter-access 11.4162+-0.3120 11.3123+-0.3887 put-by-id-replace-and-transition 9.2173+-0.4414 ? 9.5267+-0.3840 ? might be 1.0336x slower put-by-id-slightly-polymorphic 3.0734+-0.1503 ? 3.0945+-0.1081 ? put-by-id 15.3000+-0.6690 14.6467+-0.2349 might be 1.0446x faster put-by-val-direct 0.7552+-0.3102 0.6527+-0.0158 might be 1.1570x faster put-by-val-large-index-blank-indexing-type 7.3573+-3.0658 ? 8.7888+-4.4129 ? might be 1.1946x slower put-by-val-machine-int 2.8520+-0.0821 2.7844+-0.1138 might be 1.0243x faster rare-osr-exit-on-local 16.4058+-0.3885 ? 16.5670+-0.2899 ? register-pressure-from-osr 25.3573+-3.3192 23.2443+-0.1175 might be 1.0909x faster setter 5.8979+-0.3759 ? 6.1323+-1.1367 ? might be 1.0397x slower simple-activation-demo 28.2433+-3.2177 26.4990+-0.4997 might be 1.0658x faster simple-getter-access 14.3135+-0.8034 ? 15.3601+-2.3712 ? might be 1.0731x slower simple-poly-call-nested 8.4711+-0.3251 ? 8.5092+-0.3024 ? simple-poly-call 1.4924+-0.1187 ? 1.5095+-0.2155 ? might be 1.0115x slower sin-boolean 20.3177+-2.7400 ? 22.1544+-0.5473 ? might be 1.0904x slower sinkable-new-object-dag 77.7684+-3.2921 ? 80.7810+-2.8404 ? might be 1.0387x slower sinkable-new-object-taken 57.4024+-3.1972 ? 58.3740+-4.7410 ? might be 1.0169x slower sinkable-new-object 43.4047+-4.4606 42.8701+-2.3468 might be 1.0125x faster slow-array-profile-convergence 3.0512+-0.1816 ? 3.0845+-0.0573 ? might be 1.0109x slower slow-convergence 3.5784+-0.1208 ? 3.6047+-0.2576 ? sparse-conditional 1.3474+-0.1510 1.3110+-0.0146 might be 1.0277x faster splice-to-remove 21.1516+-4.5606 18.0931+-0.2807 might be 1.1690x faster string-char-code-at 17.9282+-4.3536 17.2486+-1.5261 might be 1.0394x faster string-concat-object 2.8364+-0.9674 2.7655+-0.5849 might be 1.0256x faster string-concat-pair-object 2.7239+-0.5591 ? 2.7786+-0.9421 ? might be 1.0201x slower string-concat-pair-simple 14.9527+-2.8256 ? 15.5881+-4.4191 ? might be 1.0425x slower string-concat-simple 15.6957+-3.1500 15.1970+-3.2209 might be 1.0328x faster string-cons-repeat 10.3460+-3.6113 8.9625+-0.9730 might be 1.1544x faster string-cons-tower 8.8694+-1.6195 ? 9.4406+-1.8179 ? might be 1.0644x slower string-equality 18.2830+-0.2797 ? 18.4494+-0.3666 ? string-get-by-val-big-char 8.5414+-0.3911 8.3685+-0.0901 might be 1.0207x faster string-get-by-val-out-of-bounds-insane 4.0970+-0.0686 ! 4.3585+-0.1524 ! definitely 1.0638x slower string-get-by-val-out-of-bounds 5.6566+-0.0698 5.4665+-0.2672 might be 1.0348x faster string-get-by-val 3.8069+-0.1616 ? 3.9148+-0.2430 ? might be 1.0283x slower string-hash 2.2851+-0.0521 2.2841+-0.0512 string-long-ident-equality 15.9465+-1.6368 15.1943+-0.4562 might be 1.0495x faster string-out-of-bounds 15.8334+-0.5343 ? 16.7520+-3.2657 ? might be 1.0580x slower string-repeat-arith 37.4462+-6.8180 ? 40.4728+-4.9967 ? might be 1.0808x slower string-sub 76.6371+-12.7550 ? 80.0655+-3.6973 ? might be 1.0447x slower string-test 3.2250+-0.1923 ? 3.2500+-0.0607 ? string-var-equality 32.2584+-0.5086 31.9219+-0.2123 might be 1.0105x faster structure-hoist-over-transitions 2.8644+-0.0642 2.8514+-0.1325 substring-concat-weird 47.0954+-4.1738 46.1545+-3.8281 might be 1.0204x faster substring-concat 46.0593+-1.7405 ? 47.5220+-4.8934 ? might be 1.0318x slower substring 54.2322+-5.3613 53.3533+-5.7962 might be 1.0165x faster switch-char-constant 2.9285+-0.0333 ? 2.9991+-0.2037 ? might be 1.0241x slower switch-char 6.6383+-0.0172 ? 7.1362+-1.1726 ? might be 1.0750x slower switch-constant 9.0099+-0.4350 8.8519+-0.0471 might be 1.0179x faster switch-string-basic-big-var 17.3363+-3.7032 ? 17.4444+-4.3102 ? switch-string-basic-big 15.1542+-1.0470 14.6340+-0.7916 might be 1.0356x faster switch-string-basic-var 15.6473+-0.1915 ? 17.0310+-4.3118 ? might be 1.0884x slower switch-string-basic 14.9706+-3.5054 13.6093+-0.2441 might be 1.1000x faster switch-string-big-length-tower-var 22.0668+-4.0533 ? 23.5825+-4.1871 ? might be 1.0687x slower switch-string-length-tower-var 17.7955+-3.6107 16.9992+-0.2881 might be 1.0468x faster switch-string-length-tower 13.4550+-0.2795 ? 14.2233+-3.0091 ? might be 1.0571x slower switch-string-short 14.6580+-3.9526 13.1605+-0.1527 might be 1.1138x faster switch 13.3792+-0.7334 ? 13.5033+-0.5131 ? tear-off-arguments-simple 3.5458+-0.1247 ? 3.5955+-0.0545 ? might be 1.0140x slower tear-off-arguments 4.9512+-0.0778 4.9085+-0.0244 temporal-structure 14.3898+-0.3566 ? 14.5500+-0.2584 ? might be 1.0111x slower to-int32-boolean 16.4320+-0.9564 ? 16.5020+-1.0607 ? try-catch-get-by-val-cloned-arguments 17.1218+-7.0712 15.1038+-0.3700 might be 1.1336x faster try-catch-get-by-val-direct-arguments 7.7912+-4.2721 ? 9.5403+-4.9859 ? might be 1.2245x slower try-catch-get-by-val-scoped-arguments 7.7432+-0.2950 ? 10.1133+-4.5481 ? might be 1.3061x slower undefined-property-access 412.0018+-3.3692 411.4041+-10.6943 undefined-test 3.3794+-0.1142 3.2518+-0.0249 might be 1.0392x faster unprofiled-licm 23.8595+-1.6782 23.2005+-0.4740 might be 1.0284x faster varargs-call 15.8480+-0.2993 ? 16.6425+-2.0972 ? might be 1.0501x slower varargs-construct-inline 24.3516+-0.4137 ? 24.4457+-2.2781 ? varargs-construct 35.4243+-3.9162 34.4066+-0.4665 might be 1.0296x faster varargs-inline 9.3729+-0.1935 9.3037+-0.1563 varargs-strict-mode 10.5999+-1.2984 10.1732+-0.1570 might be 1.0419x faster varargs 10.4940+-0.6783 ? 11.9133+-4.1850 ? might be 1.1353x slower weird-inlining-const-prop 2.4048+-0.0822 2.3920+-0.1220 <geometric> 9.4536+-0.0906 ? 9.4818+-0.0443 ? might be 1.0030x slower Baseline Mine Baseline Mine Geomean of preferred means: <scaled-result> 37.0221+-0.1656 36.6503+-0.2423 might be 1.0101x faster
Filip Pizlo
Comment 9
2015-03-31 12:30:36 PDT
Results look very promising so far
Yusuke Suzuki
Comment 10
2015-03-31 12:47:25 PDT
OK. I've checked out Octane r31 (Octane2), set up .run-jsc-benchmarks OctanePath and run-jsc-benchmarks --octane. Here is the result. Benchmark report for Octane on yusuke (MacBookPro8,2). VMs tested: "Baseline" at /Users/yusuke/dev/WebKit/WebKitBuild/Release/jsc "Mine" at /Users/yusuke/dev/WebKit/WebKitBuild/identifier/Release/jsc Collected 4 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. Baseline Mine encrypt 0.25831+-0.00168 ? 0.25918+-0.00367 ? decrypt 4.43019+-0.04410 4.41634+-0.04528 deltablue x2 0.22831+-0.00633 0.22479+-0.00636 might be 1.0157x faster earley 0.66089+-0.00957 ? 0.66644+-0.01086 ? boyer 7.34057+-0.08287 ? 7.34485+-0.04041 ? navier-stokes x2 5.40476+-0.05512 ? 5.42682+-0.08338 ? raytrace x2 1.43530+-0.08010 1.41643+-0.08197 might be 1.0133x faster richards x2 0.12240+-0.00251 ? 0.12294+-0.00341 ? splay x2 0.41684+-0.00369 0.41299+-0.00451 regexp x2 35.95270+-0.46315 35.86742+-0.55205 pdfjs x2 49.29292+-1.37956 48.88469+-0.78112 mandreel x2 59.80098+-0.54078 59.53940+-1.39673 gbemu x2 43.88240+-0.30637 43.43907+-0.82390 might be 1.0102x faster closure 0.58956+-0.00742 ? 0.59907+-0.00715 ? might be 1.0161x slower jquery 7.50632+-0.06683 ? 7.57204+-0.06387 ? box2d x2 13.63611+-0.41038 13.48633+-0.17487 might be 1.0111x faster zlib x2 429.82747+-30.28566 427.36043+-5.33524 typescript x2 881.30328+-20.24660 ? 885.94214+-17.78960 ? <geometric> 7.39157+-0.03937 7.36756+-0.02529 might be 1.0033x faster
Filip Pizlo
Comment 11
2015-03-31 12:49:19 PDT
Comment on
attachment 249657
[details]
Patch r=me
Yusuke Suzuki
Comment 12
2015-03-31 13:37:47 PDT
Comment on
attachment 249657
[details]
Patch Thank you! I've set cq+
WebKit Commit Bot
Comment 13
2015-03-31 14:26:03 PDT
Comment on
attachment 249657
[details]
Patch Clearing flags on attachment: 249657 Committed
r182205
: <
http://trac.webkit.org/changeset/182205
>
WebKit Commit Bot
Comment 14
2015-03-31 14:26:08 PDT
All reviewed patches have been landed. Closing bug.
Alexey Proskuryakov
Comment 15
2015-03-31 16:05:09 PDT
This patch was made with an old checkout, and broke bindings generation tests:
https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/4075/steps/bindings-generation-tests/logs/stdio
I'll update the results.
Yusuke Suzuki
Comment 16
2015-03-31 21:43:07 PDT
(In reply to
comment #15
)
> This patch was made with an old checkout, and broke bindings generation > tests: >
https://build.webkit.org/builders/
> Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/4075/steps/bindings- > generation-tests/logs/stdio > > I'll update the results.
Oops! Thank you for your fix.
http://trac.webkit.org/changeset/182205
It seems that when rebasing the patch I failed to merge
http://trac.webkit.org/changeset/181156
.
Alexey Proskuryakov
Comment 17
2015-03-31 23:18:11 PDT
Comment on
attachment 249657
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=249657&action=review
> Source/WTF/wtf/text/StringImpl.h:744 > + WTF_EXPORT_STRING_API StringImpl& extractFoldedStringInSymbol()
This broke some builds. A function cannot be both exported and inline. I'll fix it now.
Yusuke Suzuki
Comment 18
2015-03-31 23:54:25 PDT
(In reply to
comment #17
)
> Comment on
attachment 249657
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=249657&action=review
> > > Source/WTF/wtf/text/StringImpl.h:744 > > + WTF_EXPORT_STRING_API StringImpl& extractFoldedStringInSymbol() > > This broke some builds. A function cannot be both exported and inline. > > I'll fix it now.
Thanks! Sorry for troubling you.
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