WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
149852
GC should have a Baker barrier for concurrent copying
https://bugs.webkit.org/show_bug.cgi?id=149852
Summary
GC should have a Baker barrier for concurrent copying
Filip Pizlo
Reported
2015-10-06 10:55:59 PDT
Hopefully I can make this barrier fast enough that we can do concurrent copying.
Attachments
it's a start
(68.42 KB, patch)
2015-10-06 10:57 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
something compiles
(96.99 KB, patch)
2015-10-06 12:39 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
starting to make some JIT changes
(106.45 KB, patch)
2015-10-06 20:15 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
more
(119.61 KB, patch)
2015-10-06 21:15 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
a bit more
(127.27 KB, patch)
2015-10-07 12:05 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
it is written
(136.58 KB, patch)
2015-10-07 13:38 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
so far
(164.82 KB, patch)
2015-10-08 13:17 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(181.82 KB, patch)
2015-10-08 14:23 PDT
,
Filip Pizlo
ggaren
: review+
Details
Formatted Diff
Diff
Show Obsolete
(7)
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2015-10-06 10:57:02 PDT
Created
attachment 262527
[details]
it's a start
Filip Pizlo
Comment 2
2015-10-06 11:48:38 PDT
Here's what I want from a read barrier on pointers to copied space: - Once you load a backing store, you can hold onto it across GCs. - The barrier is just one extra branch. - The barrier slow path is no worse than Baker - it either copies the object, or waits for the object to be copied by someone else. I.e. it's O(backing store size). Here's how I'm going to implement this amazing barrier: A backing store pointer will contain two low bits for copying state. Copying state is mostly concerned with whether the object is in to-space or in from-space. The bits will be: 0 => It's in to-space. 1 => We are planning to copy it. It's in to-space if the copy phase hasn't started yet. It's in from-space if the copy phase has started. 2 => It's being copied right now. Anyone who needs this object to be copied should wait for copying to finish by CASing the state to 3, and parking conditionally. 3 => It's being copied right now and people are parked waiting for copying to finish. When copying is done, the copier will unparkAll. The barrier will check if the two low bits are zero. If they are, then we have a to-space pointer. This pointer will continue to be valid indefinitely, since if the GC decides to copy it after we did the load, then it will have to do a handshake and stack scan, which will pin the backing store if the pointer is still on the stack. In C++ code, the barrier will no longer allow loads except if you pass the owning object pointer. This is needed by the slow path to get the VM& and to know which object to ask to copy the backing store. An example use of the barrier will be something like: m_butterfly.get(this)->stuff. If the barrier sees that the two low bits are non-zero, it will invoke copying by doing: 1) Get the VM& and Heap& using the owner. 2) Check the state. If the state is 0, then we're done. If the state is 1, then we're done if the copy phase hasn't started. In all other cases, attempt to lock the backing store by CASing 1->2. 3) If that fails because the state is already 2 or 3, then CAS 2->3 and park conditionally. When parking returns, loop around to (1). 4) If CAS 1->2 succeeded, above, then ask the owning object for the CopyToken for the given backing store pointer. JSCell will have a new virtual method, called copyTokenForPointer(). 5) Call copyBackingStore(). 6) Unlock the backing store by doing CAS 2->0. That may fail if the state is 3, in which case do unparkAll and set the state to 0.
Filip Pizlo
Comment 3
2015-10-06 12:39:39 PDT
Created
attachment 262536
[details]
something compiles I still haven't added barriers to JIT code.
Filip Pizlo
Comment 4
2015-10-06 20:15:41 PDT
Created
attachment 262572
[details]
starting to make some JIT changes
Filip Pizlo
Comment 5
2015-10-06 21:15:58 PDT
Created
attachment 262575
[details]
more
Filip Pizlo
Comment 6
2015-10-07 12:05:55 PDT
Created
attachment 262621
[details]
a bit more
Filip Pizlo
Comment 7
2015-10-07 13:38:14 PDT
Created
attachment 262633
[details]
it is written Now I have to compile it and see how much of a slow-down this is. If the slow-down is too big, we won't do concurrent copying.
WebKit Commit Bot
Comment 8
2015-10-07 14:08:56 PDT
Attachment 262633
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/JSObject.h:819: Multi line control clauses should use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2481: Declaration has space between type name and * in newVectorLength * sizeof [whitespace/declaration] [3] Total errors found: 2 in 35 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 9
2015-10-07 15:56:29 PDT
Looks like this is an Octane slow-down. I will investigate some options for reducing this slow-down. If I can't do it, then we'll have to scrap concurrent copying. Benchmark report for Octane on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (
r190675
) "CopyBarrier" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) Collected 7 samples per benchmark/VM, with 7 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree CopyBarrier encrypt 0.16790+-0.00258 0.16719+-0.00230 decrypt 2.86774+-0.01985 ! 3.15941+-0.03599 ! definitely 1.1017x slower deltablue x2 0.13659+-0.00115 ! 0.14497+-0.00352 ! definitely 1.0613x slower earley 0.30416+-0.00487 ? 0.30778+-0.00294 ? might be 1.0119x slower boyer 4.42021+-0.11711 4.36209+-0.07179 might be 1.0133x faster navier-stokes x2 4.85377+-0.03649 4.81558+-0.01112 raytrace x2 0.85975+-0.00776 ? 0.87472+-0.01173 ? might be 1.0174x slower richards x2 0.08832+-0.00050 ! 0.09011+-0.00119 ! definitely 1.0202x slower splay x2 0.35115+-0.00418 0.34995+-0.01242 regexp x2 24.65362+-0.14126 24.62663+-0.31218 pdfjs x2 36.46518+-0.55242 ? 37.31270+-0.47465 ? might be 1.0232x slower mandreel x2 42.71301+-0.44397 ? 42.72978+-0.57699 ? gbemu x2 31.33819+-0.19275 ! 34.86179+-2.00016 ! definitely 1.1124x slower closure 0.57518+-0.00524 0.57508+-0.00287 jquery 7.25927+-0.03098 7.25026+-0.03321 box2d x2 9.09817+-0.11729 ! 9.39515+-0.03719 ! definitely 1.0326x slower zlib x2 378.31843+-11.71091 373.01766+-7.70996 might be 1.0142x faster typescript x2 659.46139+-5.79322 ? 667.88110+-7.43388 ? might be 1.0128x slower <geometric> 5.32863+-0.02331 ! 5.43187+-0.02289 ! definitely 1.0194x slower
Filip Pizlo
Comment 10
2015-10-07 16:04:23 PDT
Looks like most of that slow-down is due to the butterfly barrier in the FTL. If I remove that, I get: Benchmark report for Octane on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (
r190675
) "CopyBarrier" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) Collected 7 samples per benchmark/VM, with 7 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree CopyBarrier encrypt 0.16692+-0.00209 0.16629+-0.00296 decrypt 2.87282+-0.04412 2.84572+-0.02408 deltablue x2 0.13846+-0.00603 0.13697+-0.00260 might be 1.0109x faster earley 0.29956+-0.00342 ? 0.30632+-0.00388 ? might be 1.0225x slower boyer 4.32069+-0.02527 ? 4.41047+-0.18573 ? might be 1.0208x slower navier-stokes x2 4.83726+-0.03186 4.83127+-0.01830 raytrace x2 0.85305+-0.00492 ? 0.86138+-0.00582 ? richards x2 0.08915+-0.00064 ? 0.09028+-0.00089 ? might be 1.0126x slower splay x2 0.34658+-0.00307 ? 0.34891+-0.00336 ? regexp x2 24.58088+-0.35666 24.51731+-0.18466 pdfjs x2 36.37347+-0.64157 ? 37.33655+-0.42489 ? might be 1.0265x slower mandreel x2 42.32493+-0.27079 ? 42.44305+-0.37117 ? gbemu x2 32.69099+-3.14224 ? 32.95333+-0.40209 ? closure 0.57916+-0.00414 0.57455+-0.00347 jquery 7.27796+-0.05738 ? 7.33825+-0.07197 ? box2d x2 9.09603+-0.16579 ? 9.20729+-0.07010 ? might be 1.0122x slower zlib x2 379.60745+-14.03118 ? 382.13815+-8.49859 ? typescript x2 661.29077+-11.22800 ? 668.84047+-14.93767 ? might be 1.0114x slower <geometric> 5.33260+-0.05320 ? 5.36849+-0.01035 ? might be 1.0067x slower
Filip Pizlo
Comment 11
2015-10-07 16:13:32 PDT
OK, if the barrier masks the low bits instead of branching on them, the overhead becomes: Benchmark report for Octane on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (
r190675
) "CopyBarrier" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) Collected 7 samples per benchmark/VM, with 7 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree CopyBarrier encrypt 0.16557+-0.00047 ? 0.16584+-0.00208 ? decrypt 2.85933+-0.03293 ! 2.94218+-0.00994 ! definitely 1.0290x slower deltablue x2 0.13595+-0.00254 ? 0.14036+-0.00484 ? might be 1.0325x slower earley 0.30679+-0.00515 ? 0.30979+-0.00580 ? boyer 4.36666+-0.09113 4.34825+-0.05969 navier-stokes x2 4.82753+-0.02203 ? 4.86634+-0.03402 ? raytrace x2 0.85859+-0.00615 ? 0.86685+-0.00765 ? richards x2 0.08878+-0.00069 ? 0.08927+-0.00082 ? splay x2 0.34879+-0.00460 0.34585+-0.00302 regexp x2 24.75299+-0.46284 24.28325+-0.23334 might be 1.0193x faster pdfjs x2 36.51325+-0.50687 ! 37.39663+-0.26215 ! definitely 1.0242x slower mandreel x2 42.33943+-0.75062 ? 42.49637+-0.25814 ? gbemu x2 33.15231+-2.73128 ? 34.63046+-3.35769 ? might be 1.0446x slower closure 0.57394+-0.00168 ? 0.57444+-0.00364 ? jquery 7.28736+-0.10461 ? 7.37467+-0.12286 ? might be 1.0120x slower box2d x2 9.15321+-0.07894 ? 9.26354+-0.07849 ? might be 1.0121x slower zlib x2 386.29176+-5.55499 378.18919+-19.91077 might be 1.0214x faster typescript x2 670.35142+-8.24484 ? 671.42533+-14.72365 ? <geometric> 5.35383+-0.04159 ? 5.39428+-0.04954 ? might be 1.0076x slower I think we can live with this. I have an idea for an optimization pass that will make most barriers just mask.
Filip Pizlo
Comment 12
2015-10-07 17:07:45 PDT
Here's the plan. There will be two copied space read barriers: Read-only read barrier: appropriate for when you will only be reading from copied space. Normal read barrier: appropriate for reading and writing. The read-only barrier will just mask off the space bits in the storage pointer. The normal barrier will actually do copying. My experiments show that just masking lowers the performance overhead to something that we can allow. The way that this would work is that the copy phase would handshake before reusing any blocks that were evacuated by the copy phase. Hence, if you load a pointer to copy space, that pointer remains valid until the next handshake. It actually also remains valid across handshakes that just arise from allocation slow-paths, since those don't claim to overwrite the butterfly pointer. It will be worth investigating whether that's a good idea or not. It could be made to work if the copied space handshakes also do stack scans. Those stack scans could then pin additional blocks. This also happens to be correct because we cannot have concurrent writes to copied space. If there is a write to copied space on this thread, then we'll just have to make sure that we don't use the read-only barrier. Basically, the phase to strength-reduce the barrier to be read-only would have to ensure that this does not happen: a: GetButterflyReadOnly(@x) b: GetButterfly(@y) c: PutByOffset(@b, @x, things) d: GetByOffset(@a, @y, things) If we had this, then the GetByOffset would not read the right value in case @y ended up being the same as @x. It would read the value for a different copy of the butterfly. The way I want to formulate this optimization is that we use GetButterfly during most of compilation and then at the bitter end, we convert GetButterfly to GetButterflyReadOnly in cases where it's obviously legal. I believe that it's legal so long as between the use of GetButterfly and the GetButterfly itself there are no operations that could repoint the butterfly. We could even disable the optimization if there are any operations that could GC or even do any kinds of writes.
Filip Pizlo
Comment 13
2015-10-08 13:11:20 PDT
I managed to reduce the overhead a bit, by doing a combination of compiler optimizations and making the copy barrier slow path be an AnyRegCC patchpoint. This ensures that the slow path call doesn't disturb register allocation. I'll investigate why JSRegress had one crash. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (
r190675
) "CopyBarrier" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) Collected 7 samples per benchmark/VM, with 7 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree CopyBarrier SunSpider: 3d-cube 4.7662+-0.3804 4.6425+-0.1875 might be 1.0266x faster 3d-morph 5.3014+-0.0927 ? 5.5327+-0.4370 ? might be 1.0436x slower 3d-raytrace 5.0922+-0.0475 ! 5.2341+-0.0544 ! definitely 1.0279x slower access-binary-trees 2.0643+-0.0744 2.0571+-0.0718 access-fannkuch 5.4184+-0.0530 ? 5.8516+-0.4520 ? might be 1.0799x slower access-nbody 2.6244+-0.2624 2.5362+-0.0986 might be 1.0348x faster access-nsieve 3.3632+-0.0717 ? 3.5043+-0.2237 ? might be 1.0419x slower bitops-3bit-bits-in-byte 1.1710+-0.0277 1.1602+-0.0321 bitops-bits-in-byte 3.1855+-0.0378 ? 3.2047+-0.0869 ? bitops-bitwise-and 2.0696+-0.1232 1.9996+-0.0656 might be 1.0350x faster bitops-nsieve-bits 3.0688+-0.3496 ? 3.1589+-0.2174 ? might be 1.0293x slower controlflow-recursive 2.4271+-0.1528 2.3625+-0.0697 might be 1.0273x faster crypto-aes 3.9245+-0.1522 ? 4.1014+-0.2598 ? might be 1.0451x slower crypto-md5 2.4805+-0.1096 2.4675+-0.0426 crypto-sha1 2.5451+-0.2419 ? 2.5510+-0.1450 ? date-format-tofte 6.5511+-0.2136 ? 6.8525+-0.2094 ? might be 1.0460x slower date-format-xparb 4.5945+-0.2071 ? 4.7220+-0.3604 ? might be 1.0277x slower math-cordic 2.8170+-0.1096 ? 3.1216+-0.3657 ? might be 1.1081x slower math-partial-sums 4.7665+-0.1009 ? 4.7856+-0.2028 ? math-spectral-norm 1.9088+-0.0544 ? 1.9929+-0.1855 ? might be 1.0441x slower regexp-dna 6.2725+-0.2896 6.1806+-0.4382 might be 1.0149x faster string-base64 4.2017+-0.0722 ? 4.4229+-0.1821 ? might be 1.0527x slower string-fasta 5.8637+-0.1479 ? 6.1821+-0.6061 ? might be 1.0543x slower string-tagcloud 8.3752+-0.3444 8.3298+-0.8538 string-unpack-code 18.2429+-0.4129 ? 18.3629+-0.7286 ? string-validate-input 4.4104+-0.1731 4.3731+-0.1402 <arithmetic> 4.5195+-0.0273 ? 4.6035+-0.0595 ? might be 1.0186x slower TipOfTree CopyBarrier LongSpider: 3d-cube 808.3404+-8.3470 798.3175+-6.3350 might be 1.0126x faster 3d-morph 1516.9481+-7.1683 1512.5900+-11.8904 3d-raytrace 603.7644+-8.0754 ? 612.5661+-18.1150 ? might be 1.0146x slower access-binary-trees 799.3973+-7.4798 796.1500+-6.6762 access-fannkuch 277.7800+-5.2077 ! 297.7609+-12.0903 ! definitely 1.0719x slower access-nbody 525.1432+-13.5283 520.0782+-5.1100 access-nsieve 386.8527+-10.9209 380.0312+-5.7167 might be 1.0179x faster bitops-3bit-bits-in-byte 34.3152+-0.7558 ? 34.7849+-1.3063 ? might be 1.0137x slower bitops-bits-in-byte 75.0086+-1.8267 ? 75.4874+-2.3529 ? bitops-nsieve-bits 408.7583+-4.0125 ? 409.1795+-5.1137 ? controlflow-recursive 445.1824+-11.3172 ? 449.6433+-17.6219 ? might be 1.0100x slower crypto-aes 557.1924+-11.6190 ? 576.1128+-7.6855 ? might be 1.0340x slower crypto-md5 480.6033+-37.7685 454.6957+-14.4116 might be 1.0570x faster crypto-sha1 639.8119+-11.7997 ! 664.6239+-5.9341 ! definitely 1.0388x slower date-format-tofte 489.0001+-3.6508 ! 512.3349+-8.0459 ! definitely 1.0477x slower date-format-xparb 660.8737+-4.2211 654.9119+-6.0432 hash-map 153.3190+-3.5448 150.5832+-1.7580 might be 1.0182x faster math-cordic 484.3883+-3.7712 ? 486.5361+-4.9109 ? math-partial-sums 461.9594+-9.7303 ? 465.6082+-7.5737 ? math-spectral-norm 559.9304+-10.3547 ? 560.2048+-14.6957 ? string-base64 380.2801+-6.6147 ? 382.0573+-6.1234 ? string-fasta 368.0956+-4.1089 ? 369.5788+-4.3027 ? string-tagcloud 176.9904+-2.7296 176.8583+-2.3708 <geometric> 390.6977+-1.5000 ? 392.8431+-2.3303 ? might be 1.0055x slower TipOfTree CopyBarrier V8Spider: crypto 48.6737+-2.2567 ? 50.9360+-1.3245 ? might be 1.0465x slower deltablue 79.0785+-1.8271 ? 80.6070+-4.0047 ? might be 1.0193x slower earley-boyer 43.7642+-1.6482 43.2371+-1.1393 might be 1.0122x faster raytrace 30.5356+-1.3369 ? 31.5893+-1.1895 ? might be 1.0345x slower regexp 61.9969+-2.3919 ? 63.0524+-1.4130 ? might be 1.0170x slower richards 54.7079+-1.8301 ? 55.0555+-1.7762 ? splay 37.4195+-1.6466 36.3323+-1.6335 might be 1.0299x faster <geometric> 48.7045+-0.8551 ? 49.2693+-0.7708 ? might be 1.0116x slower TipOfTree CopyBarrier Octane: encrypt 0.16729+-0.00265 0.16563+-0.00408 decrypt 2.89979+-0.01268 ! 3.08545+-0.07238 ! definitely 1.0640x slower deltablue x2 0.13879+-0.00177 ! 0.14482+-0.00152 ! definitely 1.0434x slower earley 0.30634+-0.00287 ? 0.31311+-0.01222 ? might be 1.0221x slower boyer 4.46265+-0.13253 4.44548+-0.09677 navier-stokes x2 4.94364+-0.06512 4.89325+-0.04401 might be 1.0103x faster raytrace x2 0.86805+-0.00914 ? 0.88108+-0.01718 ? might be 1.0150x slower richards x2 0.09034+-0.00151 ? 0.09257+-0.00305 ? might be 1.0247x slower splay x2 0.35379+-0.00776 ? 0.35436+-0.00824 ? regexp x2 24.73347+-0.31910 24.62138+-0.61104 pdfjs x2 36.85924+-0.48381 ! 37.87825+-0.48652 ! definitely 1.0276x slower mandreel x2 43.08522+-0.77892 ? 43.70283+-0.89659 ? might be 1.0143x slower gbemu x2 31.57263+-0.94809 ! 33.02382+-0.42752 ! definitely 1.0460x slower closure 0.58578+-0.00828 0.58408+-0.00695 jquery 7.50441+-0.27548 7.41799+-0.04790 might be 1.0117x faster box2d x2 9.17197+-0.07876 ! 9.37812+-0.10869 ! definitely 1.0225x slower zlib x2 374.45736+-16.43373 ? 386.19931+-2.58896 ? might be 1.0314x slower typescript x2 659.08562+-7.71867 ? 665.02002+-7.03933 ? <geometric> 5.37771+-0.03183 ! 5.46636+-0.02598 ! definitely 1.0165x slower TipOfTree CopyBarrier Kraken: ai-astar 137.638+-24.798 132.320+-1.326 might be 1.0402x faster audio-beat-detection 50.059+-0.414 ? 50.917+-0.653 ? might be 1.0171x slower audio-dft 98.919+-1.813 97.646+-2.843 might be 1.0130x faster audio-fft 35.749+-0.572 35.317+-0.693 might be 1.0122x faster audio-oscillator 58.898+-1.842 ? 59.197+-1.135 ? imaging-darkroom 63.163+-3.830 61.218+-3.853 might be 1.0318x faster imaging-desaturate 51.681+-3.726 48.907+-1.590 might be 1.0567x faster imaging-gaussian-blur 87.250+-2.235 87.209+-0.563 json-parse-financial 39.864+-2.423 37.913+-1.305 might be 1.0515x faster json-stringify-tinderbox 22.839+-0.862 ? 23.434+-0.864 ? might be 1.0260x slower stanford-crypto-aes 40.409+-1.346 ? 42.930+-2.481 ? might be 1.0624x slower stanford-crypto-ccm 35.866+-1.143 ? 37.068+-1.114 ? might be 1.0335x slower stanford-crypto-pbkdf2 95.547+-1.506 ? 97.809+-2.936 ? might be 1.0237x slower stanford-crypto-sha256-iterative 36.868+-0.800 ? 39.146+-2.638 ? might be 1.0618x slower <arithmetic> 61.054+-2.110 60.788+-0.955 might be 1.0044x faster TipOfTree CopyBarrier JSRegress: abc-forward-loop-equal 30.6590+-1.8215 ? 31.1541+-1.3827 ? might be 1.0161x slower abc-postfix-backward-loop 29.6855+-1.2718 ? 30.6586+-0.9921 ? might be 1.0328x slower abc-simple-backward-loop 29.3266+-0.9622 ? 29.9937+-1.2130 ? might be 1.0227x slower abc-simple-forward-loop 30.7038+-0.8400 29.8054+-0.8279 might be 1.0301x faster abc-skippy-loop 21.2514+-0.3127 ? 22.4727+-1.3827 ? might be 1.0575x slower abs-boolean 2.4490+-0.0571 ? 2.5211+-0.2224 ? might be 1.0294x slower adapt-to-double-divide 16.4074+-0.4094 ? 16.6128+-0.2955 ? might be 1.0125x slower aliased-arguments-getbyval 1.3188+-0.1840 1.2580+-0.0953 might be 1.0484x faster allocate-big-object 2.6286+-0.3641 ERROR arguments-named-and-reflective 10.7695+-0.3839 ? 10.8425+-0.5374 ? arguments-out-of-bounds 9.2255+-0.3140 ? 9.4253+-0.1036 ? might be 1.0217x slower arguments-strict-mode 9.2814+-0.2862 ? 9.7877+-0.6464 ? might be 1.0546x slower arguments 8.6960+-0.3973 8.6681+-0.2989 arity-mismatch-inlining 0.8626+-0.0891 0.8553+-0.0433 array-access-polymorphic-structure 7.0733+-0.0932 ? 7.1838+-0.3399 ? might be 1.0156x slower array-nonarray-polymorhpic-access 23.8139+-0.6369 ? 24.9086+-0.8931 ? might be 1.0460x slower array-prototype-every 78.0103+-3.0998 77.9435+-2.8470 array-prototype-forEach 86.3915+-24.9340 75.5431+-1.9417 might be 1.1436x faster array-prototype-map 84.2718+-2.5272 81.0442+-1.1908 might be 1.0398x faster array-prototype-reduce 72.5066+-2.0828 ? 72.6929+-1.7754 ? array-prototype-reduceRight 73.3231+-1.9726 72.8541+-1.6228 array-prototype-some 77.4330+-1.9121 76.2155+-1.0174 might be 1.0160x faster array-splice-contiguous 21.4319+-0.9223 ! 23.9982+-1.2467 ! definitely 1.1197x slower array-with-double-add 3.5051+-0.1155 ? 3.7520+-0.3955 ? might be 1.0704x slower array-with-double-increment 3.0282+-0.0292 ! 3.1891+-0.0931 ! definitely 1.0531x slower array-with-double-mul-add 4.3388+-0.2839 ? 4.3917+-0.0691 ? might be 1.0122x slower array-with-double-sum 3.2249+-0.1514 3.1937+-0.0959 array-with-int32-add-sub 5.7432+-0.1193 ? 5.9404+-0.1346 ? might be 1.0343x slower array-with-int32-or-double-sum 3.2309+-0.0419 ? 3.4370+-0.3736 ? might be 1.0638x slower ArrayBuffer-DataView-alloc-large-long-lived 26.8286+-1.4572 26.6568+-0.9483 ArrayBuffer-DataView-alloc-long-lived 12.2605+-0.5788 ? 12.3423+-0.2830 ? ArrayBuffer-Int32Array-byteOffset 3.6029+-0.1094 ? 3.6260+-0.1349 ? ArrayBuffer-Int8Array-alloc-large-long-lived 27.6990+-1.8468 ? 29.2463+-5.6984 ? might be 1.0559x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 20.3241+-1.0080 ? 20.4301+-1.2533 ? ArrayBuffer-Int8Array-alloc-long-lived 11.5661+-1.0370 ? 11.6934+-0.7619 ? might be 1.0110x slower ArrayBuffer-Int8Array-alloc 9.7154+-0.2716 ? 10.2774+-1.2309 ? might be 1.0579x slower arrowfunction-call 10.9705+-0.1618 ? 11.0342+-0.5708 ? asmjs_bool_bug 7.6852+-0.2311 ? 7.8523+-0.3048 ? might be 1.0218x slower assign-custom-setter-polymorphic 2.4664+-0.1589 2.4250+-0.0416 might be 1.0171x faster assign-custom-setter 3.3037+-0.2110 ? 3.3522+-0.1698 ? might be 1.0147x slower basic-set 7.5387+-0.6027 7.4205+-0.5196 might be 1.0159x faster big-int-mul 3.5354+-0.1981 3.4749+-0.0683 might be 1.0174x faster boolean-test 3.0661+-0.2779 2.9166+-0.0489 might be 1.0513x faster branch-fold 3.5935+-0.0624 ? 3.6259+-0.0816 ? branch-on-string-as-boolean 16.3489+-0.2960 ? 16.9280+-0.5899 ? might be 1.0354x slower by-val-generic 2.4171+-0.0855 ? 2.4299+-0.0733 ? call-spread-apply 27.4577+-1.4944 ? 28.4024+-1.3483 ? might be 1.0344x slower call-spread-call 20.8317+-0.9600 ! 22.9287+-1.0916 ! definitely 1.1007x slower captured-assignments 0.4188+-0.0075 ? 0.4575+-0.0704 ? might be 1.0923x slower cast-int-to-double 5.0900+-0.0455 ? 5.2130+-0.2157 ? might be 1.0242x slower cell-argument 5.8991+-0.1209 ? 6.2134+-0.6124 ? might be 1.0533x slower cfg-simplify 2.8357+-0.0547 ? 2.9210+-0.0878 ? might be 1.0301x slower chain-getter-access 8.3406+-0.0886 ? 8.3418+-0.1720 ? cmpeq-obj-to-obj-other 12.7599+-1.3523 12.7399+-1.3246 constant-test 5.0051+-0.2606 4.8210+-0.1080 might be 1.0382x faster create-lots-of-functions 9.9673+-0.6443 9.8217+-0.5093 might be 1.0148x faster cse-new-array-buffer 2.4275+-0.1078 2.3741+-0.1696 might be 1.0225x faster cse-new-array 2.3277+-0.1113 ? 2.3931+-0.0902 ? might be 1.0281x slower DataView-custom-properties 31.9180+-1.0935 ? 32.6223+-1.2261 ? might be 1.0221x slower delay-tear-off-arguments-strictmode 11.8948+-0.1806 ? 13.2699+-1.2740 ? might be 1.1156x slower deltablue-varargs 173.6674+-2.9296 ? 174.5814+-8.9779 ? destructuring-arguments 158.9051+-1.9785 ! 168.6236+-6.6302 ! definitely 1.0612x slower destructuring-parameters-overridden-by-function 0.4663+-0.0259 0.4491+-0.0128 might be 1.0384x faster destructuring-swap 4.8332+-0.1437 4.7660+-0.0568 might be 1.0141x faster direct-arguments-getbyval 1.2699+-0.1097 ? 1.3331+-0.1926 ? might be 1.0497x slower div-boolean-double 5.3303+-0.0516 5.2781+-0.0696 div-boolean 8.1428+-0.1021 ? 8.2388+-0.1650 ? might be 1.0118x slower double-get-by-val-out-of-bounds 4.5391+-0.1188 4.3255+-0.1394 might be 1.0494x faster double-pollution-getbyval 8.7385+-0.1204 8.6365+-0.1980 might be 1.0118x faster double-pollution-putbyoffset 3.6040+-0.0959 ? 3.7566+-0.1989 ? might be 1.0423x slower double-real-use 25.8704+-2.0018 24.2866+-1.0300 might be 1.0652x faster double-to-int32-typed-array-no-inline 2.4109+-0.2561 2.2370+-0.1353 might be 1.0778x faster double-to-int32-typed-array 2.0393+-0.0323 ? 2.1896+-0.2445 ? might be 1.0737x slower double-to-uint32-typed-array-no-inline 2.3761+-0.1894 2.2871+-0.0599 might be 1.0389x faster double-to-uint32-typed-array 2.1503+-0.0702 2.1140+-0.0431 might be 1.0171x faster elidable-new-object-dag 34.3404+-0.9224 34.2019+-1.1904 elidable-new-object-roflcopter 33.2028+-1.5736 32.9451+-1.0707 elidable-new-object-then-call 32.7499+-1.7140 31.2056+-0.2664 might be 1.0495x faster elidable-new-object-tree 37.9596+-1.0419 ? 38.0883+-1.5517 ? empty-string-plus-int 4.9589+-0.2909 4.8333+-0.1714 might be 1.0260x faster emscripten-cube2hash 26.8223+-1.5437 ? 28.4890+-0.8371 ? might be 1.0621x slower exit-length-on-plain-object 14.7855+-0.4407 ? 15.5168+-0.2944 ? might be 1.0495x slower external-arguments-getbyval 1.2294+-0.0927 ? 1.3449+-0.2542 ? might be 1.0939x slower external-arguments-putbyval 2.5083+-0.6202 2.2907+-0.1813 might be 1.0950x faster fixed-typed-array-storage-var-index 1.2506+-0.0517 ? 1.2661+-0.0773 ? might be 1.0124x slower fixed-typed-array-storage 0.9774+-0.0986 0.9364+-0.0795 might be 1.0438x faster Float32Array-matrix-mult 4.0558+-0.1321 ? 4.3664+-0.2486 ? might be 1.0766x slower Float32Array-to-Float64Array-set 51.3637+-2.3033 ! 57.7694+-2.1006 ! definitely 1.1247x slower Float64Array-alloc-long-lived 61.3879+-2.9361 ? 62.4184+-2.1785 ? might be 1.0168x slower Float64Array-to-Int16Array-set 60.1937+-2.2801 ! 67.5167+-2.2053 ! definitely 1.1217x slower fold-double-to-int 12.2568+-0.2925 ? 12.7076+-0.5708 ? might be 1.0368x slower fold-get-by-id-to-multi-get-by-offset-rare-int 10.7931+-0.9654 ? 11.4110+-1.3351 ? might be 1.0573x slower fold-get-by-id-to-multi-get-by-offset 9.7948+-0.4183 ? 10.0356+-1.4843 ? might be 1.0246x slower fold-multi-get-by-offset-to-get-by-offset 8.4846+-1.4414 ? 9.1590+-0.9151 ? might be 1.0795x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.1879+-1.1790 8.0919+-1.2143 might be 1.0119x faster fold-multi-put-by-offset-to-poly-put-by-offset 9.4583+-1.2846 ? 9.9604+-1.6790 ? might be 1.0531x slower fold-multi-put-by-offset-to-put-by-offset 10.7438+-0.5967 10.4461+-0.6831 might be 1.0285x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 10.1764+-1.0502 9.6116+-0.4345 might be 1.0588x faster fold-put-by-id-to-multi-put-by-offset 10.0394+-0.6644 ? 11.4487+-1.4304 ? might be 1.1404x slower fold-put-by-val-with-string-to-multi-put-by-offset 9.9450+-0.5614 ? 11.2488+-1.5738 ? might be 1.1311x slower fold-put-by-val-with-symbol-to-multi-put-by-offset 10.7750+-1.4143 ? 11.3511+-1.5385 ? might be 1.0535x slower fold-put-structure 8.4439+-0.4773 7.8015+-1.1897 might be 1.0823x faster for-of-iterate-array-entries 10.9854+-0.3150 ? 11.0797+-0.2976 ? for-of-iterate-array-keys 3.4847+-0.2165 ? 3.5036+-0.1870 ? for-of-iterate-array-values 3.3423+-0.0517 ? 3.6323+-0.4162 ? might be 1.0868x slower fround 18.3348+-1.1165 17.6717+-0.4989 might be 1.0375x faster ftl-library-inlining-dataview 56.7878+-0.8081 ? 58.1045+-0.8218 ? might be 1.0232x slower ftl-library-inlining 99.9291+-3.7241 ? 103.9301+-2.8443 ? might be 1.0400x slower function-call 11.1311+-0.4290 10.9091+-0.3288 might be 1.0203x faster function-dot-apply 2.0285+-0.0364 ? 2.0495+-0.0366 ? might be 1.0104x slower function-test 2.7009+-0.0333 ? 2.7052+-0.0665 ? function-with-eval 84.9795+-1.8859 ? 85.2165+-3.0844 ? gcse-poly-get-less-obvious 21.9874+-0.4175 21.4637+-0.6506 might be 1.0244x faster gcse-poly-get 22.0220+-0.5826 ? 23.0745+-2.2413 ? might be 1.0478x slower gcse 3.4215+-0.0610 ? 3.4631+-0.2481 ? might be 1.0122x slower get-by-id-bimorphic-check-structure-elimination-simple 2.6172+-0.0821 ? 2.6242+-0.0934 ? get-by-id-bimorphic-check-structure-elimination 4.7314+-0.1266 ? 4.8940+-0.6550 ? might be 1.0344x slower get-by-id-chain-from-try-block 2.4050+-0.0302 ? 2.4995+-0.0918 ? might be 1.0393x slower get-by-id-check-structure-elimination 3.9420+-0.0968 ? 3.9546+-0.1441 ? get-by-id-proto-or-self 15.1943+-0.3947 ? 16.2537+-1.1803 ? might be 1.0697x slower get-by-id-quadmorphic-check-structure-elimination-simple 2.9506+-0.2353 2.8646+-0.0570 might be 1.0300x faster get-by-id-self-or-proto 15.2104+-0.9210 ? 15.9092+-0.7481 ? might be 1.0459x slower get-by-val-out-of-bounds 4.1004+-0.0671 ? 4.2407+-0.1140 ? might be 1.0342x slower get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.7057+-0.0600 2.6989+-0.0237 get-by-val-with-string-bimorphic-check-structure-elimination 6.0554+-0.0734 6.0462+-0.0358 get-by-val-with-string-chain-from-try-block 2.4565+-0.0854 ? 2.6935+-0.4360 ? might be 1.0965x slower get-by-val-with-string-check-structure-elimination 5.3286+-0.3639 5.3104+-0.1357 get-by-val-with-string-proto-or-self 15.5826+-0.9410 ? 16.1534+-0.7691 ? might be 1.0366x slower get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.0785+-0.0949 ? 3.1017+-0.0754 ? get-by-val-with-string-self-or-proto 16.6108+-0.5025 ? 16.6999+-1.0083 ? get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 2.8737+-0.0361 ? 2.9304+-0.0524 ? might be 1.0197x slower get-by-val-with-symbol-bimorphic-check-structure-elimination 12.6238+-0.4383 12.5592+-0.5372 get-by-val-with-symbol-chain-from-try-block 2.5432+-0.1498 ? 2.7756+-0.4494 ? might be 1.0914x slower get-by-val-with-symbol-check-structure-elimination 11.1808+-0.1683 ? 11.7356+-0.6821 ? might be 1.0496x slower get-by-val-with-symbol-proto-or-self 16.3438+-0.7637 16.1578+-0.4404 might be 1.0115x faster get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 3.6880+-0.0605 ? 3.8547+-0.3592 ? might be 1.0452x slower get-by-val-with-symbol-self-or-proto 17.1835+-1.9067 16.0462+-0.4939 might be 1.0709x faster get_callee_monomorphic 2.4547+-0.3754 ? 2.4604+-0.2923 ? get_callee_polymorphic 3.2985+-0.1343 ? 3.3481+-0.1732 ? might be 1.0150x slower getter-no-activation 4.8664+-0.1482 ? 4.8853+-0.1574 ? getter-prototype 7.7094+-0.0770 ? 8.4655+-1.4652 ? might be 1.0981x slower getter-richards-try-catch 1005.4488+-24.8125 ? 1021.9084+-22.9692 ? might be 1.0164x slower getter-richards 115.3779+-4.2928 ? 118.5544+-5.5394 ? might be 1.0275x slower getter 5.6022+-0.5553 ? 5.6796+-0.6410 ? might be 1.0138x slower global-object-access-with-mutating-structure 5.7913+-0.2995 5.6892+-0.3438 might be 1.0179x faster global-var-const-infer-fire-from-opt 0.9864+-0.2678 0.8283+-0.1334 might be 1.1909x faster global-var-const-infer 0.6588+-0.0508 0.6459+-0.0350 might be 1.0200x faster hard-overflow-check-equal 28.1686+-0.9434 27.9182+-1.3270 hard-overflow-check 28.0322+-1.1118 27.0617+-0.6689 might be 1.0359x faster HashMap-put-get-iterate-keys 25.6188+-1.6080 ? 26.3565+-1.1643 ? might be 1.0288x slower HashMap-put-get-iterate 28.6742+-1.1881 ? 29.2480+-1.8918 ? might be 1.0200x slower HashMap-string-put-get-iterate 24.6393+-1.8683 ? 25.0311+-1.3551 ? might be 1.0159x slower hoist-make-rope 8.2698+-0.5685 ? 9.0882+-0.7496 ? might be 1.0990x slower hoist-poly-check-structure-effectful-loop 3.6452+-0.3195 3.6182+-0.0769 hoist-poly-check-structure 3.0615+-0.0686 ? 3.1478+-0.1459 ? might be 1.0282x slower imul-double-only 7.5462+-0.3738 ? 7.8336+-0.5846 ? might be 1.0381x slower imul-int-only 8.3655+-0.9055 ? 8.8296+-0.8829 ? might be 1.0555x slower imul-mixed 7.0018+-0.6150 ? 7.3048+-0.4367 ? might be 1.0433x slower in-four-cases 17.3836+-0.7132 ? 17.6914+-1.0427 ? might be 1.0177x slower in-one-case-false 9.3865+-0.2369 ! 10.1736+-0.4552 ! definitely 1.0839x slower in-one-case-true 9.7138+-0.4195 ? 9.8720+-0.2090 ? might be 1.0163x slower in-two-cases 9.5970+-0.2521 ! 10.7829+-0.7989 ! definitely 1.1236x slower indexed-properties-in-objects 2.8835+-0.1862 ? 2.9231+-0.1013 ? might be 1.0137x slower infer-closure-const-then-mov-no-inline 3.7053+-0.3934 3.6172+-0.0348 might be 1.0243x faster infer-closure-const-then-mov 18.5825+-0.8745 ? 18.6647+-0.4938 ? infer-closure-const-then-put-to-scope-no-inline 10.9288+-0.3482 ? 11.1655+-0.3255 ? might be 1.0217x slower infer-closure-const-then-put-to-scope 23.1673+-0.5307 22.5123+-0.2859 might be 1.0291x faster infer-closure-const-then-reenter-no-inline 48.3849+-1.0860 ? 49.0010+-1.5179 ? might be 1.0127x slower infer-closure-const-then-reenter 23.2185+-1.6642 ? 23.7557+-1.3734 ? might be 1.0231x slower infer-constant-global-property 3.3882+-0.0847 ? 3.4458+-0.0883 ? might be 1.0170x slower infer-constant-property 2.6484+-0.1086 ? 2.7165+-0.1910 ? might be 1.0257x slower infer-one-time-closure-ten-vars 8.0185+-0.6982 ? 8.2620+-0.6667 ? might be 1.0304x slower infer-one-time-closure-two-vars 7.6945+-0.5659 7.3807+-0.1622 might be 1.0425x faster infer-one-time-closure 7.3712+-0.5684 ? 7.4239+-0.4141 ? infer-one-time-deep-closure 10.8376+-0.2950 ? 10.8435+-0.4889 ? inline-arguments-access 3.6148+-0.1043 ? 3.6495+-0.1774 ? inline-arguments-aliased-access 3.7190+-0.2212 ? 3.8235+-0.5617 ? might be 1.0281x slower inline-arguments-local-escape 3.8052+-0.3365 3.6920+-0.1036 might be 1.0307x faster inline-get-scoped-var 4.5738+-0.1311 ? 4.6055+-0.1369 ? inlined-put-by-id-transition 9.4571+-0.3305 ? 9.6647+-0.4817 ? might be 1.0219x slower inlined-put-by-val-with-string-transition 41.4900+-1.4196 ? 41.8797+-1.2046 ? inlined-put-by-val-with-symbol-transition 42.3209+-2.0520 ? 43.5560+-2.5896 ? might be 1.0292x slower int-or-other-abs-then-get-by-val 4.5505+-0.0627 4.5249+-0.1030 int-or-other-abs-zero-then-get-by-val 15.8814+-0.7079 ? 16.3388+-0.4567 ? might be 1.0288x slower int-or-other-add-then-get-by-val 4.5638+-0.1009 ^ 4.3886+-0.0632 ^ definitely 1.0399x faster int-or-other-add 5.5571+-1.3414 ? 6.0696+-2.7271 ? might be 1.0922x slower int-or-other-div-then-get-by-val 3.7647+-0.1109 ? 3.9653+-0.2868 ? might be 1.0533x slower int-or-other-max-then-get-by-val 4.0655+-0.2394 3.8470+-0.0757 might be 1.0568x faster int-or-other-min-then-get-by-val 3.7535+-0.0579 3.7424+-0.1476 int-or-other-mod-then-get-by-val 3.5207+-0.0894 3.4862+-0.0283 int-or-other-mul-then-get-by-val 3.6046+-0.2118 ? 3.7240+-0.1508 ? might be 1.0331x slower int-or-other-neg-then-get-by-val 4.0672+-0.0996 ? 4.3342+-0.3377 ? might be 1.0657x slower int-or-other-neg-zero-then-get-by-val 15.4683+-0.2474 ! 16.8065+-0.9258 ! definitely 1.0865x slower int-or-other-sub-then-get-by-val 4.5749+-0.1324 ? 4.6178+-0.2710 ? int-or-other-sub 3.5448+-0.1300 3.4526+-0.0462 might be 1.0267x faster int-overflow-local 4.4065+-0.5137 4.1514+-0.1157 might be 1.0614x faster Int16Array-alloc-long-lived 45.5349+-1.7437 44.6700+-1.9541 might be 1.0194x faster Int16Array-bubble-sort-with-byteLength 17.5338+-0.6191 ! 20.7324+-1.2414 ! definitely 1.1824x slower Int16Array-bubble-sort 17.7482+-1.5849 17.5123+-0.3778 might be 1.0135x faster Int16Array-load-int-mul 1.4406+-0.0453 ? 1.4452+-0.0282 ? Int16Array-to-Int32Array-set 46.1750+-1.1464 ! 55.1577+-3.0383 ! definitely 1.1945x slower Int32Array-alloc-large 13.0186+-1.2865 12.8819+-0.7258 might be 1.0106x faster Int32Array-alloc-long-lived 49.9589+-1.3855 ? 51.4449+-2.5524 ? might be 1.0297x slower Int32Array-alloc 2.7975+-0.1117 ? 2.8990+-0.1627 ? might be 1.0363x slower Int32Array-Int8Array-view-alloc 5.9952+-0.1325 ? 6.2015+-0.4513 ? might be 1.0344x slower int52-spill 4.5902+-0.1451 4.5542+-0.1192 Int8Array-alloc-long-lived 39.1768+-0.5026 ? 39.9347+-1.5429 ? might be 1.0193x slower Int8Array-load-with-byteLength 3.3650+-0.0787 ? 3.4258+-0.0959 ? might be 1.0181x slower Int8Array-load 3.3515+-0.0271 ? 3.6637+-0.5932 ? might be 1.0932x slower integer-divide 10.4616+-0.3260 10.3649+-0.2060 integer-modulo 1.5902+-0.0432 1.5768+-0.0560 is-boolean-fold-tricky 3.8190+-0.0910 ? 3.8734+-0.2205 ? might be 1.0142x slower is-boolean-fold 2.6538+-0.0298 ? 2.6738+-0.0672 ? is-function-fold-tricky-internal-function 9.4066+-0.2308 ? 9.7077+-0.2618 ? might be 1.0320x slower is-function-fold-tricky 4.0384+-0.0703 ? 4.0931+-0.1233 ? might be 1.0135x slower is-function-fold 2.6630+-0.0312 ? 2.7481+-0.0927 ? might be 1.0320x slower is-number-fold-tricky 3.9123+-0.1018 ? 4.0567+-0.0621 ? might be 1.0369x slower is-number-fold 2.6808+-0.0678 2.6515+-0.0460 might be 1.0110x faster is-object-or-null-fold-functions 2.6874+-0.0788 ? 2.7388+-0.0847 ? might be 1.0191x slower is-object-or-null-fold-less-tricky 4.0190+-0.0490 ? 4.0589+-0.1453 ? is-object-or-null-fold-tricky 4.7369+-0.0716 ? 4.7738+-0.1126 ? is-object-or-null-fold 2.6790+-0.0532 ? 2.7861+-0.1835 ? might be 1.0400x slower is-object-or-null-trickier-function 4.0523+-0.0890 ? 4.5141+-0.9218 ? might be 1.1140x slower is-object-or-null-trickier-internal-function 9.8590+-0.3874 9.7710+-0.1937 is-object-or-null-tricky-function 4.0529+-0.1096 ? 4.2453+-0.2571 ? might be 1.0475x slower is-object-or-null-tricky-internal-function 7.7717+-0.5504 7.2287+-0.1001 might be 1.0751x faster is-string-fold-tricky 3.9346+-0.0938 ? 4.0119+-0.0373 ? might be 1.0197x slower is-string-fold 2.6622+-0.0624 ? 2.6888+-0.0813 ? is-undefined-fold-tricky 3.4983+-0.2280 3.3741+-0.0840 might be 1.0368x faster is-undefined-fold 2.6226+-0.0496 ? 2.6937+-0.1122 ? might be 1.0271x slower JSONP-negative-0 0.2531+-0.0076 ? 0.2716+-0.0387 ? might be 1.0729x slower large-int-captured 4.1351+-0.2436 4.0534+-0.1025 might be 1.0201x faster large-int-neg 14.0043+-0.4924 ? 14.8794+-0.7836 ? might be 1.0625x slower large-int 13.0544+-0.4132 12.8546+-0.2972 might be 1.0155x faster load-varargs-elimination 21.4800+-1.1890 ? 21.7145+-0.8264 ? might be 1.0109x slower logical-not-weird-types 3.0872+-0.0412 3.0623+-0.0619 logical-not 4.5747+-0.4507 4.3923+-0.0677 might be 1.0415x faster lots-of-fields 9.0352+-0.2073 ? 9.6231+-0.5304 ? might be 1.0651x slower make-indexed-storage 2.7673+-0.1632 ? 3.1042+-0.4340 ? might be 1.1218x slower make-rope-cse 3.7874+-0.3563 ? 3.8360+-0.4716 ? might be 1.0128x slower marsaglia-larger-ints 32.4641+-1.2311 ? 32.6179+-1.4938 ? marsaglia-osr-entry 21.5866+-0.7689 ? 21.6602+-0.7443 ? math-with-out-of-bounds-array-values 22.5623+-1.0670 21.9959+-0.8702 might be 1.0258x faster max-boolean 2.6351+-0.1115 2.6151+-0.0321 method-on-number 16.3605+-0.6159 ! 17.6190+-0.5695 ! definitely 1.0769x slower min-boolean 2.6448+-0.0393 2.6247+-0.0493 minus-boolean-double 3.0406+-0.0366 ? 3.1110+-0.0585 ? might be 1.0232x slower minus-boolean 2.3601+-0.1217 2.3158+-0.0318 might be 1.0191x faster misc-strict-eq 27.7926+-0.9336 ? 29.6031+-1.7581 ? might be 1.0651x slower mod-boolean-double 11.1963+-0.3291 11.1539+-0.2415 mod-boolean 8.5988+-0.4055 8.3114+-0.1436 might be 1.0346x faster mul-boolean-double 3.7711+-0.4771 3.6164+-0.0693 might be 1.0428x faster mul-boolean 2.7920+-0.0761 ? 2.8013+-0.0596 ? neg-boolean 3.1075+-0.0679 ? 3.1896+-0.2640 ? might be 1.0264x slower negative-zero-divide 0.3801+-0.0205 ^ 0.3404+-0.0109 ^ definitely 1.1167x faster negative-zero-modulo 0.3342+-0.0192 ? 0.3752+-0.1188 ? might be 1.1225x slower negative-zero-negate 0.3390+-0.0376 0.3221+-0.0202 might be 1.0526x faster nested-function-parsing 46.2588+-2.0377 45.0798+-0.4822 might be 1.0262x faster new-array-buffer-dead 90.1220+-1.9132 88.8659+-1.9215 might be 1.0141x faster new-array-buffer-push 6.7249+-0.7724 6.3567+-0.5220 might be 1.0579x faster new-array-dead 15.6755+-1.7513 15.5379+-0.7764 new-array-push 3.4268+-0.0946 ? 3.6585+-0.1564 ? might be 1.0676x slower no-inline-constructor 32.0386+-0.9367 ? 32.5082+-1.2402 ? might be 1.0147x slower number-test 2.9875+-0.0959 2.8943+-0.0827 might be 1.0322x faster object-closure-call 4.9897+-0.3767 4.8914+-0.1829 might be 1.0201x faster object-get-own-property-symbols-on-large-array 4.1511+-0.2788 ? 4.2866+-0.3505 ? might be 1.0326x slower object-test 2.8504+-0.3006 2.6847+-0.0463 might be 1.0617x faster obvious-sink-pathology-taken 98.6789+-1.0103 ? 99.8858+-3.0662 ? might be 1.0122x slower obvious-sink-pathology 95.2815+-1.7659 94.1987+-0.8287 might be 1.0115x faster obviously-elidable-new-object 29.4531+-1.5140 29.0735+-0.7013 might be 1.0131x faster plus-boolean-arith 2.4350+-0.0585 2.4219+-0.1009 plus-boolean-double 3.0693+-0.0662 ? 3.1041+-0.0415 ? might be 1.0114x slower plus-boolean 2.5217+-0.0309 ? 2.6392+-0.2970 ? might be 1.0466x slower poly-chain-access-different-prototypes-simple 2.6056+-0.0838 ? 2.6952+-0.2737 ? might be 1.0344x slower poly-chain-access-different-prototypes 2.5197+-0.0438 ? 2.5754+-0.0537 ? might be 1.0221x slower poly-chain-access-simpler 2.5987+-0.0807 ? 2.7213+-0.1822 ? might be 1.0472x slower poly-chain-access 2.5794+-0.1711 ? 2.6528+-0.2711 ? might be 1.0284x slower poly-stricteq 50.2005+-0.8556 ? 52.5764+-1.9447 ? might be 1.0473x slower polymorphic-array-call 1.4366+-0.4321 1.2825+-0.0799 might be 1.1202x faster polymorphic-get-by-id 2.9078+-0.2080 2.8430+-0.0287 might be 1.0228x faster polymorphic-put-by-id 27.6405+-0.7440 ? 28.5027+-0.8366 ? might be 1.0312x slower polymorphic-put-by-val-with-string 29.1290+-0.9583 29.0407+-1.1219 polymorphic-put-by-val-with-symbol 29.3390+-0.9446 28.8688+-0.7776 might be 1.0163x faster polymorphic-structure 12.5812+-0.4667 12.5263+-0.2383 polyvariant-monomorphic-get-by-id 6.5031+-0.7705 ? 6.9377+-1.0840 ? might be 1.0668x slower proto-getter-access 8.3912+-0.3632 8.2522+-0.2482 might be 1.0169x faster prototype-access-with-mutating-prototype 5.3131+-0.1031 ? 5.3802+-0.1355 ? might be 1.0126x slower put-by-id-replace-and-transition 7.6355+-0.2486 ? 7.7525+-0.6745 ? might be 1.0153x slower put-by-id-slightly-polymorphic 2.7017+-0.0881 2.6827+-0.0528 put-by-id 10.1748+-0.5817 9.6402+-0.6494 might be 1.0555x faster put-by-val-direct 0.3390+-0.0228 0.3358+-0.0192 put-by-val-large-index-blank-indexing-type 5.2655+-0.3618 ? 5.3822+-0.3356 ? might be 1.0222x slower put-by-val-machine-int 2.4635+-0.1209 2.4504+-0.0718 put-by-val-with-string-replace-and-transition 10.2629+-0.6259 10.0688+-0.2064 might be 1.0193x faster put-by-val-with-string-slightly-polymorphic 2.9965+-0.2743 ? 3.0203+-0.1120 ? put-by-val-with-string 10.9746+-0.8727 10.8697+-0.7526 put-by-val-with-symbol-replace-and-transition 12.5726+-1.3784 12.1820+-0.6581 might be 1.0321x faster put-by-val-with-symbol-slightly-polymorphic 3.1781+-0.0371 ? 3.2084+-0.0559 ? put-by-val-with-symbol 11.0080+-1.0843 10.5042+-0.6367 might be 1.0480x faster rare-osr-exit-on-local 13.7280+-0.2775 ? 13.7878+-0.4894 ? raytrace-with-empty-try-catch 5.5283+-0.9665 5.2341+-0.1108 might be 1.0562x faster raytrace-with-try-catch 9.6937+-0.2994 ? 10.0346+-0.3156 ? might be 1.0352x slower register-pressure-from-osr 16.8567+-0.5259 16.5480+-0.3758 might be 1.0187x faster repeat-multi-get-by-offset 22.1275+-0.5520 ? 22.2415+-0.6833 ? richards-empty-try-catch 72.1535+-2.1002 ? 73.4194+-2.1236 ? might be 1.0175x slower richards-try-catch 248.0147+-11.1846 245.6300+-11.0472 setter-prototype 7.7951+-0.2406 ? 7.8192+-0.2876 ? setter 6.0612+-0.6760 ? 6.4061+-0.5878 ? might be 1.0569x slower simple-activation-demo 24.5290+-0.8675 24.5137+-0.8074 simple-getter-access 11.0701+-0.2543 10.8294+-0.2550 might be 1.0222x faster simple-poly-call-nested 8.3529+-0.2052 ? 8.7873+-0.4768 ? might be 1.0520x slower simple-poly-call 1.3114+-0.1706 1.2464+-0.0204 might be 1.0522x faster sin-boolean 21.9640+-2.3730 ? 22.1023+-1.4629 ? singleton-scope 64.8886+-2.1527 64.5591+-2.8261 sink-function 10.0872+-0.7003 ? 10.4530+-0.6297 ? might be 1.0363x slower sink-huge-activation 16.4399+-0.5120 ? 16.5466+-0.7431 ? sinkable-new-object-dag 55.2156+-0.9195 53.9531+-1.8180 might be 1.0234x faster sinkable-new-object-taken 43.7229+-2.3522 ? 44.5783+-1.4770 ? might be 1.0196x slower sinkable-new-object 30.6088+-1.2905 30.2974+-1.7581 might be 1.0103x faster slow-array-profile-convergence 2.4709+-0.1486 ? 2.5106+-0.0856 ? might be 1.0161x slower slow-convergence 2.3703+-0.0779 ? 2.5733+-0.2804 ? might be 1.0857x slower slow-ternaries 17.2039+-0.3595 ? 17.8428+-0.6943 ? might be 1.0371x slower sorting-benchmark 17.7844+-0.5417 17.2147+-0.5698 might be 1.0331x faster sparse-conditional 1.1694+-0.0464 ? 1.1936+-0.0814 ? might be 1.0208x slower splice-to-remove 11.8294+-0.2611 ? 12.6182+-0.7353 ? might be 1.0667x slower string-char-code-at 13.5095+-0.5580 13.4676+-0.4817 string-concat-object 2.3062+-0.3523 2.2257+-0.0686 might be 1.0362x faster string-concat-pair-object 2.2621+-0.2072 2.2247+-0.1676 might be 1.0168x faster string-concat-pair-simple 10.1936+-1.1152 9.8425+-0.7879 might be 1.0357x faster string-concat-simple 9.6889+-0.4141 9.5481+-0.4937 might be 1.0147x faster string-cons-repeat 6.9606+-0.5722 6.7498+-0.5440 might be 1.0312x faster string-cons-tower 7.0413+-0.5018 6.6422+-0.1573 might be 1.0601x faster string-equality 16.6834+-0.6328 16.3899+-0.5369 might be 1.0179x faster string-get-by-val-big-char 6.5370+-0.1401 ? 6.6460+-0.2875 ? might be 1.0167x slower string-get-by-val-out-of-bounds-insane 3.1190+-0.0918 3.1025+-0.1195 string-get-by-val-out-of-bounds 3.9538+-0.1674 ? 4.0521+-0.2490 ? might be 1.0249x slower string-get-by-val 2.7898+-0.0781 ? 2.8165+-0.0416 ? string-hash 1.9460+-0.2163 ? 2.0063+-0.3249 ? might be 1.0310x slower string-long-ident-equality 13.5823+-0.2945 ? 13.9297+-0.3259 ? might be 1.0256x slower string-out-of-bounds 10.9208+-1.6288 10.1681+-0.4432 might be 1.0740x faster string-repeat-arith 26.7042+-0.5691 ? 27.6851+-1.2294 ? might be 1.0367x slower string-sub 57.4428+-2.0544 56.4015+-1.4757 might be 1.0185x faster string-test 2.8979+-0.3048 2.8677+-0.0659 might be 1.0106x faster string-var-equality 25.7244+-1.0075 ? 27.4883+-1.0510 ? might be 1.0686x slower structure-hoist-over-transitions 2.3739+-0.2678 2.2733+-0.0739 might be 1.0443x faster substring-concat-weird 35.4907+-0.9397 ? 35.9782+-1.1048 ? might be 1.0137x slower substring-concat 39.5767+-0.4379 ? 41.3360+-1.8453 ? might be 1.0445x slower substring 44.3896+-1.1623 ? 45.3562+-1.5479 ? might be 1.0218x slower switch-char-constant 2.6786+-0.0872 ? 2.6955+-0.0453 ? switch-char 5.6897+-0.8430 ? 6.2449+-0.7555 ? might be 1.0976x slower switch-constant 8.2615+-0.6175 ? 9.3535+-1.5654 ? might be 1.1322x slower switch-string-basic-big-var 14.4728+-0.4816 ! 16.2736+-1.2623 ! definitely 1.1244x slower switch-string-basic-big 15.0027+-0.4638 ? 15.2704+-0.4213 ? might be 1.0178x slower switch-string-basic-var 13.6650+-0.3257 ! 15.4670+-0.8951 ! definitely 1.1319x slower switch-string-basic 12.6801+-0.3286 ? 14.0801+-2.8104 ? might be 1.1104x slower switch-string-big-length-tower-var 18.5501+-1.1404 ? 19.8722+-0.3838 ? might be 1.0713x slower switch-string-length-tower-var 13.3670+-0.4494 ? 13.8947+-0.2923 ? might be 1.0395x slower switch-string-length-tower 11.7568+-0.3351 11.7160+-0.3285 switch-string-short 11.4887+-0.2341 ? 11.6582+-0.1717 ? might be 1.0148x slower switch 11.3312+-0.5178 ? 11.3649+-0.4613 ? tear-off-arguments-simple 2.9987+-0.1132 ? 3.3155+-0.6137 ? might be 1.1056x slower tear-off-arguments 4.7560+-1.7917 4.1872+-0.2821 might be 1.1358x faster temporal-structure 11.9780+-0.4517 11.7229+-0.2228 might be 1.0218x faster to-int32-boolean 12.5300+-0.2005 ? 12.7318+-0.2852 ? might be 1.0161x slower try-catch-get-by-val-cloned-arguments 8.9381+-0.3116 ? 9.1713+-0.1575 ? might be 1.0261x slower try-catch-get-by-val-direct-arguments 2.1664+-0.0708 ? 2.2987+-0.3635 ? might be 1.0611x slower try-catch-get-by-val-scoped-arguments 4.6540+-0.3343 ? 4.7850+-0.3400 ? might be 1.0282x slower typed-array-get-set-by-val-profiling 27.7601+-1.1876 ? 27.8776+-0.9896 ? undefined-property-access 224.0288+-7.2697 219.3663+-3.0073 might be 1.0213x faster undefined-test 3.2122+-0.5520 3.0397+-0.2599 might be 1.0567x faster unprofiled-licm 9.8947+-0.4975 9.4136+-0.1062 might be 1.0511x faster v8-raytrace-with-empty-try-catch 24.1227+-0.5679 ? 24.6723+-0.6499 ? might be 1.0228x slower v8-raytrace-with-try-catch 63.5427+-0.9339 61.4447+-1.3039 might be 1.0341x faster varargs-call 13.1496+-0.2166 ? 13.3098+-0.6952 ? might be 1.0122x slower varargs-construct-inline 22.2813+-0.7684 ? 23.0854+-1.0940 ? might be 1.0361x slower varargs-construct 22.1055+-1.2991 20.5477+-0.4616 might be 1.0758x faster varargs-inline 8.8925+-0.2107 ? 8.9015+-0.3577 ? varargs-strict-mode 9.9533+-0.1941 ? 10.0381+-0.1355 ? varargs 10.2448+-0.7531 10.0682+-0.3935 might be 1.0175x faster weird-inlining-const-prop 2.2250+-0.1494 ? 2.3942+-0.3290 ? might be 1.0760x slower <geometric> 8.1120+-0.0211 ERROR TipOfTree CopyBarrier AsmBench: bigfib.cpp 459.0153+-10.2528 ? 460.5957+-16.2095 ? cray.c 399.0892+-5.0726 394.5936+-6.9938 might be 1.0114x faster dry.c 424.7751+-10.1913 ? 431.6040+-6.5051 ? might be 1.0161x slower FloatMM.c 694.0030+-3.9148 ? 696.0337+-6.3042 ? gcc-loops.cpp 3488.9203+-48.9453 3474.9813+-17.3350 n-body.c 840.0966+-12.5275 ? 850.6762+-19.0963 ? might be 1.0126x slower Quicksort.c 416.2937+-6.6109 409.9180+-6.3406 might be 1.0156x faster stepanov_container.cpp 3638.8120+-185.5335 3548.0878+-111.7123 might be 1.0256x faster Towers.c 236.4852+-4.2395 ? 239.5927+-6.6650 ? might be 1.0131x slower <geometric> 726.7828+-4.3967 726.1412+-4.0736 might be 1.0009x faster TipOfTree CopyBarrier CompressionBench: huffman 63.4103+-4.6493 62.3862+-3.1287 might be 1.0164x faster arithmetic-simple 274.6436+-1.9738 ? 281.8087+-14.2624 ? might be 1.0261x slower arithmetic-precise 247.6661+-4.6923 ? 252.2318+-4.1505 ? might be 1.0184x slower arithmetic-complex-precise 246.7713+-2.1247 ? 255.1078+-7.3175 ? might be 1.0338x slower arithmetic-precise-order-0 288.3261+-5.5442 285.8680+-3.5287 arithmetic-precise-order-1 306.6312+-1.8643 ? 308.9940+-2.4984 ? arithmetic-precise-order-2 361.0420+-14.9012 ? 361.4166+-13.3314 ? arithmetic-simple-order-1 324.5730+-4.0259 ? 326.0039+-4.6573 ? arithmetic-simple-order-2 381.0219+-8.2712 378.9940+-2.5014 lz-string 316.1736+-8.5894 ? 317.0848+-5.5384 ? <geometric> 258.3139+-1.6448 ? 259.9582+-1.3443 ? might be 1.0064x slower TipOfTree CopyBarrier Geomean of preferred means: <scaled-result> 50.5998+-0.2791 ERROR
Filip Pizlo
Comment 14
2015-10-08 13:17:47 PDT
Created
attachment 262708
[details]
so far
Filip Pizlo
Comment 15
2015-10-08 14:05:52 PDT
Latest performance numbers, showing the effect of the copy barrier optimization phase. Benchmark report for SunSpider, Octane, Kraken, and AsmBench on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (
r190682
) "CopyBarrier" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) export JSC_enableCopyBarrierOptimization=false "CopyBarrierOpt" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (
r190682
) export JSC_enableCopyBarrierOptimization=true Collected 7 samples per benchmark/VM, with 7 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree CopyBarrier CopyBarrierOpt CopyBarrierOpt v. TipOfTree SunSpider: 3d-cube 4.5721+-0.1898 ? 4.6021+-0.0796 ? 4.7252+-0.1747 ? might be 1.0335x slower 3d-morph 5.3564+-0.1712 5.2216+-0.0289 ? 5.3242+-0.1205 3d-raytrace 5.1527+-0.1191 ? 5.5182+-0.3596 ? 5.8713+-1.2334 ? might be 1.1395x slower access-binary-trees 2.1350+-0.0853 ? 2.2193+-0.1832 2.1990+-0.0490 ? might be 1.0300x slower access-fannkuch 5.6855+-0.4303 5.6654+-0.0389 5.6428+-0.2465 access-nbody 2.5809+-0.1795 2.4614+-0.0094 ? 2.6533+-0.3544 ? might be 1.0280x slower access-nsieve 3.3419+-0.0528 ? 3.4241+-0.1110 3.3756+-0.0522 ? might be 1.0101x slower bitops-3bit-bits-in-byte 1.2219+-0.0906 1.1496+-0.0240 1.1424+-0.0088 might be 1.0696x faster bitops-bits-in-byte 3.2175+-0.0318 3.1651+-0.0353 ? 3.2522+-0.1197 ? might be 1.0108x slower bitops-bitwise-and 2.0001+-0.0636 1.9570+-0.0217 ? 1.9667+-0.0318 might be 1.0170x faster bitops-nsieve-bits 2.9967+-0.0403 2.9883+-0.0482 ? 3.0973+-0.2347 ? might be 1.0336x slower controlflow-recursive 2.4226+-0.1548 2.4148+-0.1507 ? 2.5106+-0.2389 ? might be 1.0363x slower crypto-aes 3.9853+-0.2508 ? 4.6087+-1.0312 3.9963+-0.0861 ? crypto-md5 2.5252+-0.1221 2.5084+-0.0577 2.4888+-0.0195 might be 1.0146x faster crypto-sha1 2.4983+-0.2548 2.3832+-0.1266 ? 2.4609+-0.1064 might be 1.0152x faster date-format-tofte 6.4712+-0.1451 ? 6.6422+-0.2300 ? 6.6562+-0.1144 ? might be 1.0286x slower date-format-xparb 4.7646+-0.3031 4.6238+-0.2491 4.5939+-0.1951 might be 1.0372x faster math-cordic 2.9044+-0.0798 2.8462+-0.0309 ? 2.8783+-0.1676 math-partial-sums 4.8412+-0.3354 4.7773+-0.1840 4.7106+-0.0494 might be 1.0277x faster math-spectral-norm 1.9065+-0.0346 ? 1.9287+-0.0594 ? 1.9986+-0.1588 ? might be 1.0483x slower regexp-dna 6.1029+-0.2218 5.8811+-0.0540 ? 6.0347+-0.1214 might be 1.0113x faster string-base64 4.3992+-0.3132 4.2300+-0.1044 4.2033+-0.0966 might be 1.0466x faster string-fasta 5.8228+-0.0580 ? 5.8901+-0.0695 ? 6.0822+-0.2053 ? might be 1.0446x slower string-tagcloud 8.1520+-0.3861 ? 8.1737+-0.5061 7.8560+-0.0591 might be 1.0377x faster string-unpack-code 17.8078+-0.4178 ? 18.4489+-0.3517 18.1601+-0.6132 ? might be 1.0198x slower string-validate-input 4.3659+-0.0407 ? 4.3680+-0.0786 ? 4.5140+-0.0737 ! definitely 1.0339x slower <arithmetic> 4.5089+-0.0305 ? 4.5422+-0.0494 ? 4.5536+-0.0932 ? might be 1.0099x slower TipOfTree CopyBarrier CopyBarrierOpt CopyBarrierOpt v. TipOfTree Octane: encrypt 0.16521+-0.00185 0.16234+-0.00319 ? 0.16931+-0.00833 ? might be 1.0248x slower decrypt 2.88344+-0.06234 ! 2.98891+-0.00480 ? 2.99204+-0.01106 ! definitely 1.0377x slower deltablue x2 0.13644+-0.00366 ? 0.14246+-0.00307 0.13944+-0.00339 ? might be 1.0219x slower earley 0.30293+-0.00376 ? 0.30763+-0.00666 ? 0.31010+-0.00478 ? might be 1.0237x slower boyer 4.31132+-0.07610 ? 4.32429+-0.02416 4.32208+-0.02500 ? navier-stokes x2 4.80795+-0.01294 ? 4.83122+-0.04205 4.80958+-0.01626 ? raytrace x2 0.86060+-0.01900 ? 0.86200+-0.00611 0.85726+-0.00284 richards x2 0.08764+-0.00061 ? 0.08913+-0.00110 ? 0.09067+-0.00167 ! definitely 1.0345x slower splay x2 0.34653+-0.00568 ? 0.34695+-0.00237 ? 0.34771+-0.00403 ? regexp x2 24.27927+-0.17910 ? 24.33368+-0.44329 ? 24.39920+-0.22915 ? pdfjs x2 36.72067+-0.27012 ? 36.83530+-0.51404 36.74419+-0.27888 ? mandreel x2 42.52937+-0.28322 ? 42.69942+-0.38495 ? 42.88097+-0.55514 ? gbemu x2 32.33045+-3.18465 ? 33.05323+-0.41560 ? 34.68046+-2.66312 ? might be 1.0727x slower closure 0.57172+-0.00246 ? 0.57713+-0.00321 0.57506+-0.00465 ? jquery 7.33717+-0.16750 7.26847+-0.03362 ? 7.27272+-0.03504 box2d x2 9.10412+-0.10617 ! 9.30991+-0.09120 ? 9.35421+-0.10469 ! definitely 1.0275x slower zlib x2 385.08296+-13.10943 ? 387.37541+-4.07915 385.13042+-12.43483 ? typescript x2 658.71606+-8.25185 ? 667.48417+-10.05048 ? 670.49756+-10.65652 ? might be 1.0179x slower <geometric> 5.32258+-0.03704 ! 5.38102+-0.01676 ? 5.40406+-0.03677 ! definitely 1.0153x slower TipOfTree CopyBarrier CopyBarrierOpt CopyBarrierOpt v. TipOfTree Kraken: ai-astar 126.113+-0.742 ! 135.045+-1.990 ^ 130.187+-1.599 ! definitely 1.0323x slower audio-beat-detection 49.906+-0.294 ? 51.054+-1.012 50.326+-0.436 ? audio-dft 95.675+-1.569 95.354+-1.686 ? 95.846+-1.990 ? audio-fft 35.014+-0.212 ? 35.486+-0.898 34.956+-0.152 audio-oscillator 57.656+-1.260 ? 58.068+-1.097 ? 58.478+-1.255 ? might be 1.0143x slower imaging-darkroom 59.879+-0.495 59.664+-0.163 59.590+-0.067 imaging-desaturate 47.894+-0.838 ? 47.923+-0.476 ? 48.286+-0.171 ? imaging-gaussian-blur 85.079+-0.772 ? 86.362+-0.617 ! 87.855+-0.549 ! definitely 1.0326x slower json-parse-financial 38.421+-0.932 ? 38.477+-2.097 36.878+-0.739 might be 1.0418x faster json-stringify-tinderbox 23.033+-1.795 ? 24.373+-1.583 22.889+-0.515 stanford-crypto-aes 42.364+-1.632 ? 42.466+-1.161 ? 43.806+-1.177 ? might be 1.0340x slower stanford-crypto-ccm 36.149+-1.295 ? 37.032+-1.048 ? 37.707+-1.147 ? might be 1.0431x slower stanford-crypto-pbkdf2 93.964+-0.551 ! 95.899+-0.825 ? 96.614+-0.992 ! definitely 1.0282x slower stanford-crypto-sha256-iterative 36.489+-1.281 ? 36.923+-0.958 36.432+-0.731 <arithmetic> 59.117+-0.181 ! 60.295+-0.206 59.989+-0.203 ! definitely 1.0148x slower TipOfTree CopyBarrier CopyBarrierOpt CopyBarrierOpt v. TipOfTree AsmBench: bigfib.cpp 446.5175+-9.1130 445.7001+-5.2597 442.9327+-3.7050 cray.c 394.6010+-7.1274 391.2347+-1.5308 ? 392.3571+-2.8396 dry.c 443.2237+-51.7062 423.4469+-6.5492 ? 424.1293+-8.6882 might be 1.0450x faster FloatMM.c 682.0114+-2.3816 680.2244+-1.4557 ? 680.7390+-2.7814 gcc-loops.cpp 3406.6056+-6.7398 ? 3409.2352+-6.7551 3406.1016+-5.7223 n-body.c 820.9925+-1.8666 ? 821.3039+-1.7482 820.6895+-1.3974 Quicksort.c 401.8433+-5.0803 ? 407.3869+-5.7041 402.8898+-3.1773 ? stepanov_container.cpp 3481.6228+-17.7819 ? 3521.8627+-84.3928 3480.7144+-19.7138 Towers.c 232.4265+-1.3775 ? 232.5645+-1.1338 ? 232.7243+-0.6798 ? <geometric> 713.8794+-7.6870 711.7949+-3.0812 709.8513+-2.3189 might be 1.0057x faster TipOfTree CopyBarrier CopyBarrierOpt CopyBarrierOpt v. TipOfTree Geomean of preferred means: <scaled-result> 31.7227+-0.0675 ! 32.0025+-0.0780 31.9934+-0.1861 ! definitely 1.0085x slower
Filip Pizlo
Comment 16
2015-10-08 14:23:31 PDT
Created
attachment 262709
[details]
the patch
WebKit Commit Bot
Comment 17
2015-10-08 14:26:46 PDT
Attachment 262709
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGCopyBarrierOptimizationPhase.cpp:99: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/JSObject.h:819: Multi line control clauses should use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2481: Declaration has space between type name and * in newVectorLength * sizeof [whitespace/declaration] [3] Total errors found: 3 in 57 files If any of these errors are false positives, please file a bug against check-webkit-style.
Geoffrey Garen
Comment 18
2015-10-12 13:00:06 PDT
Comment on
attachment 262709
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=262709&action=review
r=me
> Source/JavaScriptCore/ChangeLog:14 > + copied, what stage of copying its in. Two barrier variants are supported:
its => it's
Filip Pizlo
Comment 19
2015-10-12 14:39:22 PDT
(In reply to
comment #18
)
> Comment on
attachment 262709
[details]
> the patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=262709&action=review
> > r=me > > > Source/JavaScriptCore/ChangeLog:14 > > + copied, what stage of copying its in. Two barrier variants are supported: > > its => it's
Fixed!
Filip Pizlo
Comment 20
2015-10-12 15:42:49 PDT
Landed in
http://trac.webkit.org/changeset/190896
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