WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
117377
fourthTier: DFG GetById patching shouldn't distinguish between self lists and proto lists
https://bugs.webkit.org/show_bug.cgi?id=117377
Summary
fourthTier: DFG GetById patching shouldn't distinguish between self lists and...
Filip Pizlo
Reported
2013-06-08 18:35:13 PDT
Patch forthcoming.
Attachments
the patch
(24.70 KB, patch)
2013-06-08 18:39 PDT
,
Filip Pizlo
ggaren
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2013-06-08 18:39:38 PDT
Created
attachment 204106
[details]
the patch
Filip Pizlo
Comment 2
2013-06-08 18:44:33 PDT
Comment on
attachment 204106
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=204106&action=review
> LayoutTests/ChangeLog:8 > + Add tests that show why this is important. These tests speed up by more than 2x.
Make that more than 3x.
Filip Pizlo
Comment 3
2013-06-08 19:33:48 PDT
Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1). VMs tested: "Old" at /Volumes/Data/pizlo/fourthTier/secondary/OpenSource/WebKitBuild/Release/jsc (
r150814
) "TipOfTree" at /Volumes/Data/pizlo/fourthTier/OpenSource/WebKitBuild/Release/jsc (
r151350
) "UnifiedPolyGet" at /Volumes/Data/fromMiniMe/fourthTier/primary/OpenSource/WebKitBuild/Release/jsc (
r151350
) 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. Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old SunSpider: 3d-cube 6.6471+-0.0872 ? 6.7610+-0.1102 6.7123+-0.0994 ? 3d-morph 8.4750+-0.0945 ! 8.7180+-0.1189 ^ 8.4305+-0.0936 3d-raytrace 8.3790+-0.1352 ? 8.5237+-0.1071 ! 8.7268+-0.0880 ! definitely 1.0415x slower access-binary-trees 1.8393+-0.0093 ^ 1.8163+-0.0117 1.8015+-0.0083 ^ definitely 1.0210x faster access-fannkuch 7.4534+-0.0782 ? 7.4711+-0.0609 ? 7.5981+-0.0821 ? might be 1.0194x slower access-nbody 3.9661+-0.0366 ! 4.0346+-0.0125 ? 4.0468+-0.0224 ! definitely 1.0203x slower access-nsieve 4.7838+-0.1122 ? 4.8524+-0.0383 4.8131+-0.0722 ? bitops-3bit-bits-in-byte 1.7762+-0.0195 ? 1.7808+-0.0177 ? 1.7855+-0.0165 ? bitops-bits-in-byte 6.6059+-0.1160 ? 6.7170+-0.0697 ? 6.7579+-0.0764 ? might be 1.0230x slower bitops-bitwise-and 2.7229+-0.0209 2.7201+-0.0223 2.6960+-0.0464 bitops-nsieve-bits 4.1852+-0.0543 ! 4.3269+-0.0136 ? 4.3665+-0.0583 ! definitely 1.0433x slower controlflow-recursive 3.2911+-0.1894 ^ 2.9942+-0.0316 ? 3.0361+-0.0584 ^ definitely 1.0840x faster crypto-aes 5.1810+-0.0760 ? 5.3060+-0.1041 5.2623+-0.0788 ? might be 1.0157x slower crypto-md5 3.0676+-0.0240 ! 3.1571+-0.0269 ^ 3.0803+-0.0226 ? crypto-sha1 2.8331+-0.0192 ? 2.9095+-0.0594 2.8688+-0.0265 ? might be 1.0126x slower date-format-tofte 14.8885+-0.2787 14.8012+-0.1904 ? 14.8552+-0.3156 date-format-xparb 8.4939+-0.1451 ? 8.5746+-0.1437 8.5548+-0.1553 ? math-cordic 3.9247+-0.0116 ? 3.9491+-0.0161 ? 3.9831+-0.0504 ? might be 1.0149x slower math-partial-sums 12.0567+-0.1119 11.9006+-0.1233 ? 11.9331+-0.1408 might be 1.0104x faster math-spectral-norm 2.6987+-0.0083 ! 2.7282+-0.0208 2.7224+-0.0203 ? regexp-dna 11.3417+-0.1724 11.2975+-0.1811 ? 11.3029+-0.1503 string-base64 4.8564+-0.1765 4.8344+-0.0544 ? 4.9263+-0.0801 ? might be 1.0144x slower string-fasta 10.6780+-0.1316 ? 10.8243+-0.2779 10.6765+-0.1150 string-tagcloud 14.1440+-0.1619 ? 14.4411+-0.1403 ? 14.4978+-0.2362 ? might be 1.0250x slower string-unpack-code 28.0420+-0.0826 ! 29.1296+-0.0498 ? 29.7608+-0.7922 ! definitely 1.0613x slower string-validate-input 6.4606+-0.1019 6.4459+-0.1200 6.4360+-0.1109 <arithmetic> * 7.2612+-0.0457 ? 7.3467+-0.0481 ? 7.3704+-0.0660 ? might be 1.0150x slower <geometric> 5.7589+-0.0338 ? 5.8019+-0.0313 ? 5.8021+-0.0319 ? might be 1.0075x slower <harmonic> 4.6686+-0.0241 ? 4.6878+-0.0189 4.6799+-0.0170 ? might be 1.0024x slower Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old V8Spider: crypto 79.5437+-0.1945 ? 79.8214+-0.2113 ? 79.9207+-0.1710 ! definitely 1.0047x slower deltablue 104.3275+-0.4176 ^ 101.4076+-1.1714 ? 102.8474+-1.9719 might be 1.0144x faster earley-boyer 69.6713+-0.3008 ! 71.8912+-0.3518 71.7349+-0.2236 ! definitely 1.0296x slower raytrace 37.9899+-0.3217 ! 40.0980+-0.3664 ^ 39.3617+-0.2623 ! definitely 1.0361x slower regexp 99.9139+-0.4498 ! 100.8937+-0.3541 100.7127+-0.2652 ! definitely 1.0080x slower richards 113.0453+-1.2847 112.0754+-0.8933 ? 113.6185+-1.6951 ? splay 47.2896+-0.3000 47.2642+-0.4259 47.2028+-0.2990 <arithmetic> 78.8259+-0.2532 ? 79.0645+-0.2861 ? 79.3427+-0.4336 ? might be 1.0066x slower <geometric> * 73.6269+-0.2232 ! 74.2710+-0.2501 ? 74.3232+-0.2861 ! definitely 1.0095x slower <harmonic> 68.0661+-0.2384 ! 69.1424+-0.2613 68.9566+-0.1636 ! definitely 1.0131x slower Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old Octane and V8v7: encrypt 0.46636+-0.00069 ^ 0.46389+-0.00056 0.46314+-0.00039 ^ definitely 1.0069x faster decrypt 8.62195+-0.01466 ^ 8.56890+-0.02393 ? 8.59384+-0.02992 deltablue x2 0.56651+-0.00204 ! 0.57500+-0.00302 ? 0.57558+-0.00205 ! definitely 1.0160x slower earley 0.89447+-0.01052 ^ 0.86218+-0.00828 ? 0.86842+-0.00396 ^ definitely 1.0300x faster boyer 12.77044+-0.04179 ! 12.94519+-0.03646 12.91063+-0.04799 ! definitely 1.0110x slower raytrace x2 4.46441+-0.04492 ? 4.52141+-0.04287 ^ 4.36084+-0.05215 ^ definitely 1.0237x faster regexp x2 32.69172+-0.38203 ? 32.79450+-0.26411 32.49730+-0.30661 richards x2 0.30838+-0.00377 0.30744+-0.00103 ? 0.30995+-0.00274 ? splay x2 0.64749+-0.02873 0.64046+-0.01432 0.64018+-0.01698 might be 1.0114x faster navier-stokes x2 10.77583+-0.00841 ! 10.80567+-0.00737 10.80197+-0.00670 ! definitely 1.0024x slower closure 0.31883+-0.03436 ? 0.32020+-0.03532 ? 0.32250+-0.03556 ? might be 1.0115x slower jquery 4.53347+-0.55644 ? 4.55121+-0.55619 ? 4.56849+-0.55526 ? gbemu x2 253.92247+-16.72937 ^ 142.70076+-2.92763 ^ 136.96312+-1.94993 ^ definitely 1.8539x faster box2d x2 32.38644+-0.18687 ! 32.89246+-0.10297 ? 33.29310+-0.44378 ! definitely 1.0280x slower V8v7: <arithmetic> 7.60387+-0.04809 ? 7.63307+-0.03578 7.57548+-0.04394 might be 1.0037x faster <geometric> * 2.42678+-0.01627 ? 2.42790+-0.00891 2.41754+-0.01175 might be 1.0038x faster <harmonic> 0.92656+-0.00875 0.92444+-0.00392 ? 0.92666+-0.00541 ? might be 1.0001x slower Octane including V8v7: <arithmetic> 31.77873+-1.53879 ^ 21.73577+-0.27812 ^ 21.20960+-0.21233 ^ definitely 1.4983x faster <geometric> * 4.39042+-0.06040 ^ 4.17672+-0.04836 4.15487+-0.04692 ^ definitely 1.0567x faster <harmonic> 1.05920+-0.01690 1.05772+-0.01815 ? 1.06099+-0.01763 ? might be 1.0017x slower Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old Kraken: ai-astar 491.433+-0.387 ? 492.072+-0.573 491.861+-0.616 ? audio-beat-detection 246.806+-3.988 242.642+-0.560 ! 246.800+-2.100 audio-dft 316.236+-10.418 307.348+-1.048 306.855+-0.634 might be 1.0306x faster audio-fft 143.414+-0.220 ! 144.970+-0.076 144.778+-0.135 ! definitely 1.0095x slower audio-oscillator 232.337+-0.734 ! 245.766+-5.690 ? 246.395+-6.033 ! definitely 1.0605x slower imaging-darkroom 290.120+-0.657 290.039+-9.462 285.362+-1.089 ^ definitely 1.0167x faster imaging-desaturate 159.958+-0.093 ^ 157.669+-0.106 157.640+-0.081 ^ definitely 1.0147x faster imaging-gaussian-blur 403.314+-0.235 ^ 399.818+-0.136 ? 399.880+-0.147 ^ definitely 1.0086x faster json-parse-financial 80.426+-0.158 ! 81.449+-0.673 81.235+-0.407 ! definitely 1.0101x slower json-stringify-tinderbox 101.580+-0.743 ^ 99.099+-0.404 ? 99.473+-1.030 ^ definitely 1.0212x faster stanford-crypto-aes 94.325+-0.572 ^ 93.052+-0.381 92.935+-0.469 ^ definitely 1.0150x faster stanford-crypto-ccm 100.648+-2.493 96.690+-1.465 94.232+-4.201 might be 1.0681x faster stanford-crypto-pbkdf2 268.477+-0.860 268.418+-0.701 267.601+-2.615 stanford-crypto-sha256-iterative 116.105+-0.389 ? 116.555+-1.522 115.437+-0.180 ^ definitely 1.0058x faster <arithmetic> * 217.513+-1.018 216.828+-0.518 216.463+-0.538 might be 1.0048x faster <geometric> 185.636+-0.736 184.803+-0.290 184.282+-0.780 might be 1.0074x faster <harmonic> 159.309+-0.607 ^ 158.280+-0.363 157.577+-1.066 ^ definitely 1.0110x faster Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old JSRegress: adapt-to-double-divide 22.5317+-0.0627 ? 22.5739+-0.0772 ? 22.5898+-0.1272 ? aliased-arguments-getbyval 0.8337+-0.0068 ! 0.8547+-0.0071 0.8499+-0.0072 ! definitely 1.0194x slower allocate-big-object 2.4885+-0.0255 ? 2.5051+-0.0251 2.4983+-0.0274 ? arity-mismatch-inlining 0.7917+-0.0303 ? 0.8053+-0.0204 ? 0.8069+-0.0203 ? might be 1.0192x slower array-access-polymorphic-structure 6.7949+-0.1070 ? 6.8556+-0.1687 6.7986+-0.1092 ? array-with-double-add 5.8730+-0.1407 5.8717+-0.0689 ? 5.9266+-0.0530 ? array-with-double-increment 4.2224+-0.0857 4.1434+-0.0814 ? 4.1485+-0.0428 might be 1.0178x faster array-with-double-mul-add 7.0769+-0.0562 ^ 6.6465+-0.0506 ? 6.7018+-0.0632 ^ definitely 1.0560x faster array-with-double-sum 7.8998+-0.0934 ? 7.9135+-0.0986 7.8590+-0.0720 array-with-int32-add-sub 10.5511+-0.0940 ? 10.5793+-0.0840 ? 10.5842+-0.0708 ? array-with-int32-or-double-sum 7.9422+-0.0948 ? 7.9892+-0.0687 ? 8.0244+-0.1096 ? might be 1.0103x slower big-int-mul 4.7901+-0.0506 ? 4.8486+-0.0421 ? 4.8878+-0.0170 ! definitely 1.0204x slower boolean-test 4.4370+-0.0697 4.4099+-0.0610 4.3988+-0.0897 cast-int-to-double 13.9027+-0.1203 13.8970+-0.0933 13.7902+-0.0983 cell-argument 14.4202+-0.1095 ? 14.4537+-0.1048 14.4184+-0.0801 cfg-simplify 3.9510+-0.0735 ^ 3.8530+-0.0150 ? 3.8551+-0.0136 ^ definitely 1.0249x faster cmpeq-obj-to-obj-other 10.6184+-0.1939 ? 10.9971+-0.2446 ? 11.0871+-0.1825 ! definitely 1.0441x slower constant-test 8.5114+-0.1413 ? 8.6566+-0.1623 8.6543+-0.0782 ? might be 1.0168x slower direct-arguments-getbyval 0.7325+-0.0098 0.7316+-0.0084 ? 0.7402+-0.0083 ? might be 1.0105x slower double-pollution-getbyval 10.8447+-0.0959 10.8290+-0.0798 10.8073+-0.0672 double-pollution-putbyoffset 4.8126+-0.0841 ? 4.9423+-0.0836 4.9403+-0.0698 ? might be 1.0265x slower external-arguments-getbyval 1.9975+-0.0170 ^ 1.9237+-0.0230 1.9128+-0.0192 ^ definitely 1.0443x faster external-arguments-putbyval 3.1447+-0.0205 ^ 3.0390+-0.0174 3.0321+-0.0106 ^ definitely 1.0371x faster Float32Array-matrix-mult 13.9539+-0.3143 13.9397+-0.1615 ? 14.2772+-0.3376 ? might be 1.0232x slower fold-double-to-int 22.7797+-0.3908 ^ 22.0659+-0.1207 22.0575+-0.2714 ^ definitely 1.0327x faster function-dot-apply 3.1141+-0.0133 ^ 3.0587+-0.0139 3.0572+-0.0135 ^ definitely 1.0186x faster function-test 5.1683+-0.0735 5.0165+-0.0795 4.9732+-0.1306 might be 1.0392x faster get-by-id-chain-from-try-block 6.6736+-0.1546 ? 6.7177+-0.1703 6.7154+-0.1221 ? get-by-id-proto-or-self 88.5038+-10.9461 ? 93.9929+-7.7281 ^ 22.9150+-0.3986 ^ definitely 3.8623x faster get-by-id-self-or-proto 77.4939+-8.3832 ? 93.5840+-9.0334 ^ 23.2360+-0.4549 ^ definitely 3.3351x faster HashMap-put-get-iterate-keys 85.9905+-0.6022 85.2178+-0.4312 84.9744+-0.6584 might be 1.0120x faster HashMap-put-get-iterate 89.1902+-0.8937 ? 90.9055+-0.8570 ? 91.0667+-0.6971 ! definitely 1.0210x slower HashMap-string-put-get-iterate 72.5963+-0.5256 ? 73.4586+-0.6337 ? 73.6254+-0.3767 ! definitely 1.0142x slower indexed-properties-in-objects 4.3451+-0.0636 ! 4.4402+-0.0113 4.4325+-0.0156 ! definitely 1.0201x slower inline-arguments-access 1.2758+-0.0330 ! 1.3632+-0.0138 ? 1.3656+-0.0148 ! definitely 1.0704x slower inline-arguments-local-escape 25.4749+-0.4816 ^ 23.1775+-0.3295 22.9538+-0.2450 ^ definitely 1.1098x faster inline-get-scoped-var 6.4871+-0.0684 ? 6.5056+-0.0745 ? 6.5531+-0.0795 ? might be 1.0102x slower inlined-put-by-id-transition 16.2780+-0.3036 ^ 14.8304+-0.2027 14.5252+-0.2582 ^ definitely 1.1207x faster int-or-other-abs-then-get-by-val 8.7706+-0.0887 ! 8.9808+-0.0881 8.9360+-0.0897 ? might be 1.0189x slower int-or-other-abs-zero-then-get-by-val 36.8646+-0.0844 ? 36.9991+-0.1302 ? 37.1567+-0.2785 ? int-or-other-add-then-get-by-val 10.1781+-0.0850 ? 10.2212+-0.0914 ? 10.2762+-0.1145 ? int-or-other-add 10.4812+-0.0667 ? 10.4980+-0.1084 ? 10.5137+-0.0718 ? int-or-other-div-then-get-by-val 6.3658+-0.0831 ? 6.3999+-0.0746 6.3035+-0.0790 int-or-other-max-then-get-by-val 7.2332+-0.0767 ? 7.3387+-0.1070 7.3274+-0.0954 ? might be 1.0130x slower int-or-other-min-then-get-by-val 7.3011+-0.0862 7.2822+-0.0701 ? 7.3933+-0.0948 ? might be 1.0126x slower int-or-other-mod-then-get-by-val 6.2039+-0.0763 6.1833+-0.1012 6.1624+-0.0738 int-or-other-mul-then-get-by-val 6.5467+-0.0965 6.4610+-0.0752 ? 6.5724+-0.0835 ? int-or-other-neg-then-get-by-val 8.0529+-0.0923 7.9717+-0.0752 ? 8.0986+-0.1006 ? int-or-other-neg-zero-then-get-by-val 36.7673+-0.3192 36.5204+-0.2644 ? 36.6889+-0.2520 int-or-other-sub-then-get-by-val 10.1413+-0.0670 ? 10.2789+-0.0947 10.2339+-0.1124 ? int-or-other-sub 8.1879+-0.0926 ? 8.2793+-0.1179 8.1801+-0.0815 int-overflow-local 11.9078+-0.2204 11.8227+-0.1812 11.7633+-0.1304 might be 1.0123x faster Int16Array-bubble-sort 49.1989+-0.1528 ! 49.7234+-0.1660 49.6636+-0.0730 ! definitely 1.0094x slower Int16Array-load-int-mul 1.9200+-0.0099 ? 1.9251+-0.0072 ? 1.9341+-0.0150 ? Int8Array-load 4.8002+-0.0659 ? 4.8134+-0.0526 ? 4.8180+-0.0593 ? integer-divide 15.3799+-0.2384 ? 15.3955+-0.1370 15.3171+-0.1149 integer-modulo 1.9954+-0.0201 1.9795+-0.0138 1.9727+-0.0103 might be 1.0115x faster make-indexed-storage 3.7304+-0.0342 ? 3.7599+-0.1022 ? 3.9216+-0.1453 ! definitely 1.0512x slower marsaglia 521.5661+-0.6712 520.8473+-0.5476 ? 521.3623+-0.2989 method-on-number 27.2531+-0.3917 26.5825+-0.3032 ^ 25.8539+-0.3782 ^ definitely 1.0541x faster nested-function-parsing-random 385.0966+-13.3681 380.6488+-13.0704 ? 394.6828+-13.3224 ? might be 1.0249x slower nested-function-parsing 47.8988+-0.9486 ? 48.2393+-1.1056 48.2193+-1.0325 ? new-array-buffer-dead 3.6648+-0.0202 ? 3.6960+-0.0657 ? 3.6992+-0.0683 ? new-array-buffer-push 10.2172+-0.1273 ? 10.2424+-0.1712 10.1984+-0.1949 new-array-dead 28.4345+-0.1260 28.3978+-0.0902 ? 28.8231+-0.4293 ? might be 1.0137x slower new-array-push 6.7966+-0.0513 ? 6.8387+-0.0498 6.8305+-0.0565 ? number-test 4.3675+-0.0630 4.3266+-0.0696 ? 4.3807+-0.0733 ? object-closure-call 12.9149+-1.4157 10.5454+-1.9110 ? 10.5542+-1.9159 might be 1.2237x faster object-test 4.8190+-0.0575 ? 4.8691+-0.0737 ? 4.9385+-0.1423 ? might be 1.0248x slower poly-stricteq 92.0432+-0.2317 91.8998+-0.2668 ? 93.0736+-1.2031 ? might be 1.0112x slower polymorphic-structure 20.9705+-0.1892 20.8193+-0.0833 ? 21.0303+-0.5561 ? polyvariant-monomorphic-get-by-id 12.5440+-0.0828 12.5417+-0.0999 ? 12.5760+-0.1046 ? rare-osr-exit-on-local 20.0151+-0.1034 ? 20.0200+-0.0636 ? 20.1111+-0.0574 ? register-pressure-from-osr 31.6860+-0.0844 31.4304+-0.1804 31.2382+-0.0460 ^ definitely 1.0143x faster simple-activation-demo 34.3251+-0.1015 ? 34.6341+-0.4088 34.2606+-0.0801 slow-array-profile-convergence 3.8994+-0.0213 3.8418+-0.0498 3.8202+-0.0569 ^ definitely 1.0207x faster slow-convergence 3.4244+-0.0144 ? 3.4535+-0.0189 ? 3.4645+-0.0131 ! definitely 1.0117x slower sparse-conditional 1.3228+-0.0186 1.3160+-0.0249 ^ 1.2622+-0.0235 ^ definitely 1.0480x faster splice-to-remove 49.4806+-0.2197 ! 50.1436+-0.2307 ? 50.3002+-0.4603 ! definitely 1.0166x slower string-concat-object 2.7493+-0.0488 2.7247+-0.0316 ? 2.7474+-0.0409 string-concat-pair-object 2.6498+-0.0449 ? 2.6506+-0.0122 ? 2.6623+-0.0295 ? string-concat-pair-simple 17.2728+-0.2463 17.0527+-0.2037 17.0116+-0.2578 might be 1.0154x faster string-concat-simple 17.2851+-0.3536 16.9752+-0.3118 ? 17.4068+-0.3865 ? string-cons-repeat 10.2054+-0.0219 10.1925+-0.0180 ? 10.1934+-0.0175 string-cons-tower 10.9177+-0.0293 10.8838+-0.0351 10.8716+-0.0349 string-hash 2.5622+-0.0138 ? 2.5721+-0.0104 2.5715+-0.0099 ? string-repeat-arith 45.0630+-0.3495 ^ 43.3468+-0.3528 ? 43.8571+-0.8397 ^ definitely 1.0275x faster string-sub 87.9294+-0.7877 ^ 85.7649+-0.6254 ? 86.5203+-0.5675 ^ definitely 1.0163x faster string-test 4.2099+-0.0438 ? 4.2458+-0.0715 ! 4.3853+-0.0487 ! definitely 1.0417x slower structure-hoist-over-transitions 3.1782+-0.0287 ? 3.1891+-0.0190 3.1829+-0.0211 ? tear-off-arguments-simple 1.7572+-0.0100 ! 1.9795+-0.0126 1.9785+-0.0121 ! definitely 1.1259x slower tear-off-arguments 3.1917+-0.0099 ! 3.3206+-0.0053 ? 3.3321+-0.0063 ! definitely 1.0440x slower temporal-structure 21.0500+-0.1098 ? 21.2926+-0.3760 21.0476+-0.0753 to-int32-boolean 23.1854+-0.1147 ^ 21.3925+-0.1140 21.3353+-0.0611 ^ definitely 1.0867x faster undefined-test 4.5156+-0.0519 4.4975+-0.0314 4.4863+-0.0483 <arithmetic> 26.4314+-0.1533 ? 26.5036+-0.1908 ^ 25.1952+-0.1629 ^ definitely 1.0491x faster <geometric> * 9.7911+-0.0302 9.7798+-0.0424 ^ 9.5115+-0.0402 ^ definitely 1.0294x faster <harmonic> 5.0970+-0.0294 ? 5.1259+-0.0195 5.1099+-0.0201 ? might be 1.0025x slower Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old All benchmarks: <arithmetic> 42.6577+-0.3166 ^ 41.3176+-0.1554 ^ 40.4736+-0.0999 ^ definitely 1.0540x faster <geometric> 11.3249+-0.0459 11.2551+-0.0537 ^ 11.0651+-0.0514 ^ definitely 1.0235x faster <harmonic> 3.6303+-0.0296 ? 3.6383+-0.0307 3.6380+-0.0300 ? might be 1.0021x slower Old TipOfTree UnifiedPolyGet UnifiedPolyGet v. Old Geomean of preferred means: <scaled-result> 21.8654+-0.1020 21.7184+-0.1010 21.5848+-0.0996 ^ definitely 1.0130x faster
Geoffrey Garen
Comment 4
2013-06-09 10:13:35 PDT
gbemu x2 253.92247+-16.72937 ^ 142.70076+-2.92763 ^ 136.96312+-1.94993 ^ definitely 1.8539x faster Delicious.
Geoffrey Garen
Comment 5
2013-06-09 10:18:16 PDT
Comment on
attachment 204106
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=204106&action=review
r=me, but I think I spotted a bug.
> Source/JavaScriptCore/ChangeLog:17 > + I believe that this was introduced way back in the days of the old interpreter, > + where distinguishing between self lists, proto lists, and chain lists was meaningful > + for interpreter performance: it meant fewer branches to evaluate those lists. Then
Yup.
> Source/JavaScriptCore/bytecode/PolymorphicAccessStructureList.h:69 > - this->isDirect = isDirect; > + isDirect = _isDirect;
I prefer the this-> style, but I guess it's the minority in this function.
> Source/JavaScriptCore/dfg/DFGRepatch.cpp:423 > + || baseValue.asCell()->structure()->isUncacheableDictionary())
I think we need to check propertyAccessesAreCacheable() instead of isUncacheableDictionary(), to account for prohibitsPropertyCaching().
Filip Pizlo
Comment 6
2013-06-09 10:36:49 PDT
(In reply to
comment #4
)
> gbemu x2 253.92247+-16.72937 ^ 142.70076+-2.92763 ^ 136.96312+-1.94993 ^ definitely 1.8539x faster > > Delicious.
Note most of that is from merging some fixes from trunk!
Filip Pizlo
Comment 7
2013-06-09 11:22:45 PDT
(In reply to
comment #5
)
> (From update of
attachment 204106
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=204106&action=review
> > r=me, but I think I spotted a bug. > > > Source/JavaScriptCore/ChangeLog:17 > > + I believe that this was introduced way back in the days of the old interpreter, > > + where distinguishing between self lists, proto lists, and chain lists was meaningful > > + for interpreter performance: it meant fewer branches to evaluate those lists. Then > > Yup. > > > Source/JavaScriptCore/bytecode/PolymorphicAccessStructureList.h:69 > > - this->isDirect = isDirect; > > + isDirect = _isDirect; > > I prefer the this-> style, but I guess it's the minority in this function. > > > Source/JavaScriptCore/dfg/DFGRepatch.cpp:423 > > + || baseValue.asCell()->structure()->isUncacheableDictionary()) > > I think we need to check propertyAccessesAreCacheable() instead of isUncacheableDictionary(), to account for prohibitsPropertyCaching().
Yup, we do that check everywhere else. Will change and retest performance.
Filip Pizlo
Comment 8
2013-06-09 12:19:37 PDT
Landed in
http://trac.webkit.org/changeset/151355
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