Bug 148610

Summary: JSC should infer property types
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, basile_clement, benjamin, commit-queue, ggaren, mark.lam, mhahnenb, msaboff, nrotem, oliver, rniwa, saam, sam, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: All   
OS: All   
Bug Depends on: 148611, 148649, 148717, 149047, 149106, 149283    
Bug Blocks:    
Attachments:
Description Flags
it's a start
none
some more stuff
none
wow, this is fun and easy!
none
more things
none
more stuff
none
a little more
none
rebased and using a slightly more space-optimal InferredTypeTable
none
a bit more
none
more
none
just a bit more
none
rebased
none
some more
none
LLInt put_by_id type checking is written
none
starting to compile
none
it compiles!
none
it compiles!
none
it inferred a type!
none
OMG it passed some tests
none
it passes many tests
none
more fixing
none
even more fixing
none
work in progress
none
the patch
ggaren: review+
the patch
none
the patch
none
the patch
none
patch for landing none

Filip Pizlo
Reported 2015-08-29 13:03:10 PDT
Here's the basic design: - PropertyMapEntry tells you if a property is subject to type inference. If it is, then before storing into it, you need to look up the property's offset in the Structure's type inference table. If the value being stored is a member of the type according to that table, you can store. Otherwise, you need to do something to broaden the type. - The Structure's type inference table maps offsets to InferredType objects. InferredType objects are GC cells. - When a Structure transition occurs, the new structure's type inference table will share the same InferredType objects as the old structure for all of the properties that the two structures have in common. This ensures that if a store occurs on the old structure that causes a change in the inferred type, then users of the new structure immediately find out that they may now see that new type. Note that this is slightly conservative: it also means that if the type changes on the new structure, the old structure will find out, even though it doesn't need to. - All stores from a reflective context (i.e. not PutById) immediately disable type inference on the property by causing the InferredType to become TOP. - Dictionary transitions disable type inference by simply not copying the type inference table. This means that it doesn't affect the type inference of prior structures. It does mean that both the dictionary structure and all of its successors (including when it's flattened) will not enjoy type inference. The upside is that dictionary puts - which are expensive to begin with - don't have to validate types. We're assuming that once a dictionary transition happens then it's because many accesses will be reflective. Another common use of dictionaries is for prototypes, which will often be dictionaries until they are flattened. But prototype accesses usually benefit from immutable property inference already, so it's OK if type inference sometimes fails. - Property type will not, at least initially, have any effect on property representation. It just guarantees that you don't have to do some type check after load. - Property type will include Structure, for those Structures that have a valid transition watchpoint. InferredType will register a watchpoint on the transition, and will generalize to "Object" if the watchpoint fires. That way, we don't have to worry about some object having the structure at the time we store a reference into a property, but then the object's structure changes. We'll only do the inference if the transition had never fired, and when it does, the property finds out. - All put_by_id inline caches will have to do type checks, except of course when we already have a proof about what the type is. Such a proof will probably only happen in the DFG/FTL.
Attachments
it's a start (26.39 KB, patch)
2015-08-31 10:41 PDT, Filip Pizlo
no flags
some more stuff (48.88 KB, patch)
2015-08-31 12:21 PDT, Filip Pizlo
no flags
wow, this is fun and easy! (69.27 KB, patch)
2015-08-31 13:28 PDT, Filip Pizlo
no flags
more things (88.42 KB, patch)
2015-08-31 15:24 PDT, Filip Pizlo
no flags
more stuff (103.53 KB, patch)
2015-09-01 11:49 PDT, Filip Pizlo
no flags
a little more (104.06 KB, patch)
2015-09-10 10:13 PDT, Filip Pizlo
no flags
rebased and using a slightly more space-optimal InferredTypeTable (111.68 KB, patch)
2015-09-10 14:11 PDT, Filip Pizlo
no flags
a bit more (125.58 KB, patch)
2015-09-10 14:53 PDT, Filip Pizlo
no flags
more (131.73 KB, patch)
2015-09-11 23:57 PDT, Filip Pizlo
no flags
just a bit more (139.56 KB, patch)
2015-09-12 22:07 PDT, Filip Pizlo
no flags
rebased (139.47 KB, patch)
2015-09-14 15:13 PDT, Filip Pizlo
no flags
some more (147.06 KB, patch)
2015-09-14 18:47 PDT, Filip Pizlo
no flags
LLInt put_by_id type checking is written (154.00 KB, patch)
2015-09-15 11:04 PDT, Filip Pizlo
no flags
starting to compile (159.33 KB, patch)
2015-09-15 12:12 PDT, Filip Pizlo
no flags
it compiles! (159.33 KB, patch)
2015-09-15 14:44 PDT, Filip Pizlo
no flags
it compiles! (168.35 KB, patch)
2015-09-15 15:04 PDT, Filip Pizlo
no flags
it inferred a type! (171.64 KB, patch)
2015-09-15 16:21 PDT, Filip Pizlo
no flags
OMG it passed some tests (171.10 KB, patch)
2015-09-15 18:04 PDT, Filip Pizlo
no flags
it passes many tests (179.08 KB, patch)
2015-09-15 19:30 PDT, Filip Pizlo
no flags
more fixing (179.95 KB, patch)
2015-09-15 20:44 PDT, Filip Pizlo
no flags
even more fixing (186.65 KB, patch)
2015-09-15 21:25 PDT, Filip Pizlo
no flags
work in progress (191.19 KB, patch)
2015-09-16 16:04 PDT, Filip Pizlo
no flags
the patch (220.45 KB, patch)
2015-09-17 13:53 PDT, Filip Pizlo
ggaren: review+
the patch (220.91 KB, patch)
2015-09-17 14:39 PDT, Filip Pizlo
no flags
the patch (220.95 KB, patch)
2015-09-17 21:34 PDT, Filip Pizlo
no flags
the patch (220.95 KB, patch)
2015-09-17 22:12 PDT, Filip Pizlo
no flags
patch for landing (230.96 KB, patch)
2015-09-21 12:09 PDT, Filip Pizlo
no flags
Radar WebKit Bug Importer
Comment 1 2015-08-29 13:04:39 PDT
Radar WebKit Bug Importer
Comment 2 2015-08-29 13:04:40 PDT
Filip Pizlo
Comment 3 2015-08-31 10:41:03 PDT
Created attachment 260294 [details] it's a start
Filip Pizlo
Comment 4 2015-08-31 12:21:29 PDT
Created attachment 260305 [details] some more stuff
Filip Pizlo
Comment 5 2015-08-31 13:28:34 PDT
Created attachment 260312 [details] wow, this is fun and easy! Still more code to write, but it's coming together nicely so far.
Filip Pizlo
Comment 6 2015-08-31 15:24:33 PDT
Created attachment 260323 [details] more things
Filip Pizlo
Comment 7 2015-09-01 11:49:29 PDT
Created attachment 260376 [details] more stuff Beefed up type check machinery in the DFG/FTL to deal with the ObjectWithStructureOrOther case. That was the only kind of type that the DFG/FTL couldn't previously check.
Filip Pizlo
Comment 8 2015-09-10 10:13:21 PDT
Created attachment 260936 [details] a little more
Filip Pizlo
Comment 9 2015-09-10 14:11:17 PDT
Created attachment 260955 [details] rebased and using a slightly more space-optimal InferredTypeTable
Filip Pizlo
Comment 10 2015-09-10 14:53:16 PDT
Created attachment 260958 [details] a bit more
Filip Pizlo
Comment 11 2015-09-11 23:57:25 PDT
Filip Pizlo
Comment 12 2015-09-12 22:07:35 PDT
Created attachment 261074 [details] just a bit more I've wired the put_by_id store checks into most things. I still need to wire it into the LLInt.
Filip Pizlo
Comment 13 2015-09-14 15:13:36 PDT
Filip Pizlo
Comment 14 2015-09-14 18:47:47 PDT
Created attachment 261159 [details] some more Slowly integrating into LLInt put_by_id inline caching.
Filip Pizlo
Comment 15 2015-09-15 11:04:18 PDT
Created attachment 261216 [details] LLInt put_by_id type checking is written OMG I'm so close now.
Filip Pizlo
Comment 16 2015-09-15 12:12:44 PDT
Created attachment 261223 [details] starting to compile
Filip Pizlo
Comment 17 2015-09-15 14:44:44 PDT
Created attachment 261240 [details] it compiles!
Oliver Hunt
Comment 18 2015-09-15 14:57:03 PDT
(In reply to comment #17) > Created attachment 261240 [details] > it compiles! r=me :D
Filip Pizlo
Comment 19 2015-09-15 15:04:55 PDT
Created attachment 261243 [details] it compiles! The last file I uploaded was an older patch.
Filip Pizlo
Comment 20 2015-09-15 16:21:27 PDT
Created attachment 261256 [details] it inferred a type! It just inferred that "f" is an Int32 below: function foo(o) { return o.f + 1; } noInline(foo); for (var i = 0; i < 10000; ++i) foo({f:i});
Filip Pizlo
Comment 21 2015-09-15 18:04:45 PDT
Created attachment 261275 [details] OMG it passed some tests
Filip Pizlo
Comment 22 2015-09-15 19:30:22 PDT
Created attachment 261284 [details] it passes many tests
Filip Pizlo
Comment 23 2015-09-15 20:44:19 PDT
Created attachment 261290 [details] more fixing Right now it looks like I might have introduced a performance pathology to inline caches because the no-access-inlining tests are timing out. Other than that, this is starting to look good.
Filip Pizlo
Comment 24 2015-09-15 21:25:12 PDT
Created attachment 261295 [details] even more fixing Fixed tag register usage in the put_by_id type check. That's what was causing bad performance.
Filip Pizlo
Comment 25 2015-09-16 11:59:48 PDT
This looks pretty good. Now I just need to fix the raytrace regression, and this will turn into a really nice speed-up. Benchmark report for Octane on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r189810) "PropTypeInference" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (r189810) Collected 8 samples per benchmark/VM, with 8 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 PropTypeInference encrypt 0.16891+-0.00252 0.16502+-0.00272 might be 1.0236x faster decrypt 3.02377+-0.00694 ^ 2.92723+-0.05261 ^ definitely 1.0330x faster deltablue x2 0.16084+-0.00654 ^ 0.13684+-0.00191 ^ definitely 1.1754x faster earley 0.30135+-0.00227 ? 0.30291+-0.00087 ? boyer 4.28630+-0.02453 ? 4.39991+-0.09832 ? might be 1.0265x slower navier-stokes x2 4.80670+-0.01273 4.80088+-0.00803 raytrace x2 0.90676+-0.02904 ! 1.26826+-0.22724 ! definitely 1.3987x slower richards x2 0.10723+-0.00159 ^ 0.08840+-0.00084 ^ definitely 1.2130x faster splay x2 0.32863+-0.00254 ? 0.33190+-0.00335 ? regexp x2 24.67865+-0.18165 24.35562+-0.48648 might be 1.0133x faster pdfjs x2 36.64304+-0.60033 ? 36.82721+-0.31432 ? mandreel x2 42.42468+-0.31628 42.30698+-0.27770 gbemu x2 34.76927+-0.64065 34.30328+-1.82136 might be 1.0136x faster closure 0.57134+-0.00237 ? 0.57294+-0.00228 ? jquery 7.09233+-0.03046 ! 7.22342+-0.03013 ! definitely 1.0185x slower box2d x2 10.08765+-0.05900 ^ 9.09621+-0.07398 ^ definitely 1.1090x faster zlib x2 386.80319+-6.80693 381.44449+-10.04212 might be 1.0140x faster typescript x2 633.37460+-7.97292 ? 651.13870+-10.22388 ? might be 1.0280x slower <geometric> 5.51512+-0.02974 5.46103+-0.07040 might be 1.0099x faster
Oliver Hunt
Comment 26 2015-09-16 12:55:13 PDT
(In reply to comment #25) > typescript x2 633.37460+-7.97292 ? 651.13870+-10.22388 ? > might be 1.0280x slower I'm curious, given what i sort of code type script is ostensibly for, i would have expected improvement here. Are we already just doing something good without this analysis?
Filip Pizlo
Comment 27 2015-09-16 13:12:45 PDT
(In reply to comment #26) > (In reply to comment #25) > > > typescript x2 633.37460+-7.97292 ? 651.13870+-10.22388 ? > > might be 1.0280x slower > > I'm curious, given what i sort of code type script is ostensibly for, i > would have expected improvement here. Are we already just doing something > good without this analysis? I don't know what you mean. "Typescript" is a typescript compiler, not necessarily a representative Typescript program. Also, the goal of property type inference is not to reinfer the original types used by every possible CrappyLanguage->JS compiler. For example, property type inference only infers that a property has some specific object type if that type doesn't have subtyping. And yes, we are already doing a pretty good job of running this benchmark.
Filip Pizlo
Comment 28 2015-09-16 13:13:34 PDT
Looks like the Raytrace regression is mostly a warm-up time regression. The benchmark runs a bit faster when you let it run long enough. I'll keep investigating.
Oliver Hunt
Comment 29 2015-09-16 13:19:38 PDT
(In reply to comment #27) > (In reply to comment #26) > > (In reply to comment #25) > > > > > typescript x2 633.37460+-7.97292 ? 651.13870+-10.22388 ? > > > might be 1.0280x slower > > > > I'm curious, given what i sort of code type script is ostensibly for, i > > would have expected improvement here. Are we already just doing something > > good without this analysis? > > I don't know what you mean. "Typescript" is a typescript compiler, not > necessarily a representative Typescript program. > Ah, ok, that makes substantially more sense. > Also, the goal of property type inference is not to reinfer the original > types used by every possible CrappyLanguage->JS compiler. For example, > property type inference only infers that a property has some specific object > type if that type doesn't have sub typing. Does that apply even for sane ES6? e.g. class Foo { }; class Bar extends Foo { }; or the equivalent for manual JS inheritance? > > And yes, we are already doing a pretty good job of running this benchmark. That was what i figured :D
Filip Pizlo
Comment 30 2015-09-16 13:37:20 PDT
(In reply to comment #29) > (In reply to comment #27) > > (In reply to comment #26) > > > (In reply to comment #25) > > > > > > > typescript x2 633.37460+-7.97292 ? 651.13870+-10.22388 ? > > > > might be 1.0280x slower > > > > > > I'm curious, given what i sort of code type script is ostensibly for, i > > > would have expected improvement here. Are we already just doing something > > > good without this analysis? > > > > I don't know what you mean. "Typescript" is a typescript compiler, not > > necessarily a representative Typescript program. > > > Ah, ok, that makes substantially more sense. > > > Also, the goal of property type inference is not to reinfer the original > > types used by every possible CrappyLanguage->JS compiler. For example, > > property type inference only infers that a property has some specific object > > type if that type doesn't have sub typing. > > Does that apply even for sane ES6? e.g. > > class Foo { }; > class Bar extends Foo { }; > > or the equivalent for manual JS inheritance? If you have a property that points to either Foo or Bar then we will merge the two to "Object". I.e. it's not super useful for most programs.
Filip Pizlo
Comment 31 2015-09-16 16:03:21 PDT
Well, this is pretty good. 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 (r189810) "PropTypeInference" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (r189810) Collected 8 samples per benchmark/VM, with 8 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 PropTypeInference SunSpider: 3d-cube 4.6250+-0.1959 ? 4.8483+-0.1788 ? might be 1.0483x slower 3d-morph 5.3803+-0.2129 5.2288+-0.0549 might be 1.0290x faster 3d-raytrace 5.2417+-0.1950 5.2153+-0.0721 access-binary-trees 2.1002+-0.0765 ? 2.2199+-0.1277 ? might be 1.0570x slower access-fannkuch 5.7328+-0.4433 5.4622+-0.0536 might be 1.0495x faster access-nbody 2.5158+-0.1876 ? 2.6108+-0.2258 ? might be 1.0377x slower access-nsieve 3.0552+-0.1184 2.9935+-0.0353 might be 1.0206x faster bitops-3bit-bits-in-byte 1.1770+-0.0625 1.1231+-0.0179 might be 1.0480x faster bitops-bits-in-byte 3.1704+-0.0397 ? 3.2297+-0.0698 ? might be 1.0187x slower bitops-bitwise-and 2.0616+-0.0557 1.9935+-0.0344 might be 1.0341x faster bitops-nsieve-bits 2.9762+-0.0934 ? 3.0097+-0.0858 ? might be 1.0113x slower controlflow-recursive 2.3121+-0.1200 ? 2.3300+-0.0930 ? crypto-aes 3.9079+-0.1019 ? 4.4235+-0.6217 ? might be 1.1319x slower crypto-md5 2.4789+-0.1039 ? 2.5037+-0.0760 ? crypto-sha1 2.4169+-0.1869 2.2813+-0.1240 might be 1.0594x faster date-format-tofte 6.7809+-0.2225 ? 6.7858+-0.1401 ? date-format-xparb 4.9249+-0.5210 4.6237+-0.1594 might be 1.0651x faster math-cordic 2.8792+-0.1427 ? 2.9638+-0.2478 ? might be 1.0294x slower math-partial-sums 4.7814+-0.0319 4.7479+-0.0652 math-spectral-norm 1.9031+-0.0461 ? 1.9554+-0.0894 ? might be 1.0275x slower regexp-dna 6.4941+-0.2347 6.4583+-0.4996 string-base64 4.8989+-0.6884 4.3126+-0.0724 might be 1.1360x faster string-fasta 5.7323+-0.0558 5.7038+-0.1034 string-tagcloud 8.1845+-0.3592 7.9359+-0.0612 might be 1.0313x faster string-unpack-code 18.7733+-0.9083 18.2597+-0.6957 might be 1.0281x faster string-validate-input 4.5981+-0.0971 4.5358+-0.1315 might be 1.0137x faster <arithmetic> 4.5809+-0.0416 4.5291+-0.0388 might be 1.0114x faster TipOfTree PropTypeInference LongSpider: 3d-cube 802.8184+-1.1690 ^ 792.2674+-2.8621 ^ definitely 1.0133x faster 3d-morph 1483.1839+-2.6321 ? 1498.9178+-34.1944 ? might be 1.0106x slower 3d-raytrace 591.0079+-5.0994 588.9049+-4.5188 access-binary-trees 802.6959+-4.9928 796.0794+-3.3422 access-fannkuch 273.5180+-4.8238 272.5452+-2.2775 access-nbody 503.6322+-0.3070 ? 505.7096+-3.1017 ? access-nsieve 368.1664+-12.4399 ? 374.9346+-11.5301 ? might be 1.0184x slower bitops-3bit-bits-in-byte 33.9543+-0.7093 ? 34.0146+-0.9645 ? bitops-bits-in-byte 75.6387+-2.9604 75.0401+-1.1219 bitops-nsieve-bits 398.8509+-2.2453 ? 400.7792+-3.4765 ? controlflow-recursive 426.2560+-4.0713 423.8850+-1.4406 crypto-aes 566.8598+-7.3313 559.2004+-12.1552 might be 1.0137x faster crypto-md5 431.2558+-1.7126 430.4504+-2.3067 crypto-sha1 636.5125+-1.5853 628.6773+-9.3324 might be 1.0125x faster date-format-tofte 501.2081+-5.4174 ? 502.5661+-4.6859 ? date-format-xparb 655.4932+-2.2265 ? 663.7870+-29.3137 ? might be 1.0127x slower hash-map 166.4718+-4.5448 164.2834+-4.0662 might be 1.0133x faster math-cordic 474.8139+-1.5644 474.4279+-1.3808 math-partial-sums 462.2896+-2.8386 ^ 455.5179+-1.6345 ^ definitely 1.0149x faster math-spectral-norm 546.9286+-2.5782 ? 547.5915+-3.4611 ? string-base64 352.7332+-5.7302 ? 355.2516+-18.7733 ? string-fasta 365.2469+-3.2275 362.0158+-1.8947 string-tagcloud 174.6937+-1.3866 ? 176.0477+-2.2160 ? <geometric> 384.6890+-1.3348 384.0363+-1.8207 might be 1.0017x faster TipOfTree PropTypeInference V8Spider: crypto 50.1670+-1.5238 47.8391+-1.2478 might be 1.0487x faster deltablue 87.0811+-1.7276 ^ 77.9060+-3.1056 ^ definitely 1.1178x faster earley-boyer 41.1463+-1.0819 ? 42.8026+-1.3212 ? might be 1.0403x slower raytrace 33.1436+-1.8860 31.0324+-1.1950 might be 1.0680x faster regexp 61.8413+-1.2828 ? 62.4763+-1.5282 ? might be 1.0103x slower richards 63.0591+-1.7792 ^ 52.6292+-1.3454 ^ definitely 1.1982x faster splay 34.1602+-1.0702 ? 35.6920+-1.5597 ? might be 1.0448x slower <geometric> 50.0840+-0.5988 ^ 47.9038+-0.8425 ^ definitely 1.0455x faster TipOfTree PropTypeInference Octane: encrypt 0.16871+-0.00284 ^ 0.16195+-0.00101 ^ definitely 1.0417x faster decrypt 3.02910+-0.01487 ^ 2.90365+-0.01669 ^ definitely 1.0432x faster deltablue x2 0.15958+-0.00651 ^ 0.13905+-0.00222 ^ definitely 1.1476x faster earley 0.30207+-0.00283 ? 0.30534+-0.00478 ? might be 1.0108x slower boyer 4.28637+-0.01892 ? 4.32666+-0.02796 ? navier-stokes x2 4.82749+-0.03323 ? 4.86614+-0.12574 ? raytrace x2 0.89613+-0.00652 ^ 0.85767+-0.00248 ^ definitely 1.0448x faster richards x2 0.10654+-0.00161 ^ 0.08825+-0.00060 ^ definitely 1.2072x faster splay x2 0.32553+-0.00271 ? 0.33166+-0.00417 ? might be 1.0188x slower regexp x2 24.63893+-0.18265 24.30294+-0.16241 might be 1.0138x faster pdfjs x2 36.54433+-0.30398 ? 36.81652+-0.35804 ? mandreel x2 42.34141+-0.29707 42.28839+-0.19672 gbemu x2 34.27753+-0.40394 34.09559+-2.67689 closure 0.57291+-0.00247 ? 0.57307+-0.00290 ? jquery 7.13432+-0.05176 ! 7.21157+-0.01591 ! definitely 1.0108x slower box2d x2 10.09660+-0.04806 ^ 9.02640+-0.06321 ^ definitely 1.1186x faster zlib x2 379.70389+-16.65197 ? 387.33121+-3.19627 ? might be 1.0201x slower typescript x2 641.95547+-21.02952 ? 654.81155+-3.22706 ? might be 1.0200x slower <geometric> 5.49639+-0.03297 ^ 5.33200+-0.02881 ^ definitely 1.0308x faster TipOfTree PropTypeInference Kraken: ai-astar 221.069+-5.365 ^ 125.807+-0.793 ^ definitely 1.7572x faster audio-beat-detection 50.538+-0.249 50.134+-0.348 audio-dft 96.834+-2.341 96.104+-1.916 audio-fft 35.923+-2.081 35.296+-0.479 might be 1.0178x faster audio-oscillator 60.405+-2.863 ^ 56.408+-1.001 ^ definitely 1.0709x faster imaging-darkroom 61.894+-1.930 60.241+-1.223 might be 1.0274x faster imaging-desaturate 48.245+-0.230 ? 48.597+-1.863 ? imaging-gaussian-blur 85.408+-0.861 85.069+-0.993 json-parse-financial 40.614+-1.598 39.319+-0.568 might be 1.0330x faster json-stringify-tinderbox 22.480+-0.385 22.220+-0.664 might be 1.0117x faster stanford-crypto-aes 41.040+-1.601 40.891+-0.830 stanford-crypto-ccm 36.045+-1.871 34.894+-0.692 might be 1.0330x faster stanford-crypto-pbkdf2 92.066+-0.329 ? 97.040+-5.212 ? might be 1.0540x slower stanford-crypto-sha256-iterative 36.476+-1.664 36.076+-0.551 might be 1.0111x faster <arithmetic> 66.360+-0.562 ^ 59.150+-0.532 ^ definitely 1.1219x faster TipOfTree PropTypeInference JSRegress: abc-forward-loop-equal 29.5717+-0.7997 ? 29.6232+-0.6661 ? abc-postfix-backward-loop 29.3344+-0.4990 ? 29.6458+-0.7477 ? might be 1.0106x slower abc-simple-backward-loop 28.9061+-0.4349 ? 29.2442+-0.4026 ? might be 1.0117x slower abc-simple-forward-loop 29.3086+-0.8344 29.2127+-0.4515 abc-skippy-loop 20.8447+-0.3063 ? 21.1579+-0.3780 ? might be 1.0150x slower abs-boolean 2.4233+-0.0424 ? 2.4713+-0.1055 ? might be 1.0198x slower adapt-to-double-divide 16.3937+-0.4955 16.0262+-0.3545 might be 1.0229x faster aliased-arguments-getbyval 1.2181+-0.0886 ? 1.2209+-0.0591 ? allocate-big-object 2.5926+-0.4533 2.5301+-0.1283 might be 1.0247x faster arguments-named-and-reflective 10.6788+-0.3871 10.6289+-0.3912 arguments-out-of-bounds 9.6739+-0.4936 9.6472+-0.4291 arguments-strict-mode 10.1104+-0.7169 9.6148+-0.4352 might be 1.0515x faster arguments 8.6199+-0.2681 ? 9.1803+-1.7263 ? might be 1.0650x slower arity-mismatch-inlining 0.8607+-0.0314 ? 0.9181+-0.1511 ? might be 1.0667x slower array-access-polymorphic-structure 5.9170+-0.0712 ! 7.3939+-0.3762 ! definitely 1.2496x slower array-nonarray-polymorhpic-access 23.5085+-0.7201 ? 23.7864+-0.7931 ? might be 1.0118x slower array-prototype-every 76.9250+-3.3893 ? 77.1250+-3.1070 ? array-prototype-forEach 75.4867+-0.7674 ? 76.1922+-1.4677 ? array-prototype-map 81.3942+-1.5720 ? 82.5326+-3.7403 ? might be 1.0140x slower array-prototype-reduce 71.1826+-1.1518 71.0775+-1.0542 array-prototype-reduceRight 72.5941+-3.5006 ? 73.2465+-3.9408 ? array-prototype-some 75.4871+-0.8979 ? 76.4512+-1.0151 ? might be 1.0128x slower array-splice-contiguous 20.6437+-0.9323 20.1867+-0.5569 might be 1.0226x faster array-with-double-add 3.3815+-0.0418 ? 3.4146+-0.1078 ? array-with-double-increment 3.1118+-0.1776 ? 3.1120+-0.1433 ? array-with-double-mul-add 4.1994+-0.0758 4.1393+-0.0397 might be 1.0145x faster array-with-double-sum 3.1522+-0.0571 ? 3.1703+-0.0443 ? array-with-int32-add-sub 5.7793+-0.2497 5.7340+-0.2260 array-with-int32-or-double-sum 3.2869+-0.0688 3.2415+-0.0408 might be 1.0140x faster ArrayBuffer-DataView-alloc-large-long-lived 25.5993+-0.5443 25.3614+-0.2696 ArrayBuffer-DataView-alloc-long-lived 12.0539+-0.6530 11.6406+-0.2431 might be 1.0355x faster ArrayBuffer-Int32Array-byteOffset 3.6175+-0.2479 3.4754+-0.0260 might be 1.0409x faster ArrayBuffer-Int8Array-alloc-large-long-lived 30.3481+-1.0535 ? 30.4585+-0.9591 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 20.4596+-1.4145 ? 21.2423+-2.2532 ? might be 1.0383x slower ArrayBuffer-Int8Array-alloc-long-lived 12.3514+-0.3393 12.0435+-0.3403 might be 1.0256x faster ArrayBuffer-Int8Array-alloc 9.7338+-0.7646 9.3685+-0.2558 might be 1.0390x faster arrowfunction-call 10.8471+-0.4929 10.5509+-0.1284 might be 1.0281x faster asmjs_bool_bug 7.4742+-0.1806 ? 7.5392+-0.3326 ? assign-custom-setter-polymorphic 2.4456+-0.0496 ? 2.5216+-0.0642 ? might be 1.0311x slower assign-custom-setter 3.4162+-0.0414 ? 3.4782+-0.0870 ? might be 1.0182x slower basic-set 8.5318+-0.2485 8.3574+-0.3100 might be 1.0209x faster big-int-mul 3.4236+-0.0315 ? 3.5718+-0.2324 ? might be 1.0433x slower boolean-test 3.3359+-0.3124 3.1011+-0.0610 might be 1.0757x faster branch-fold 3.6116+-0.0339 ? 3.6716+-0.1598 ? might be 1.0166x slower branch-on-string-as-boolean 16.9776+-0.4538 16.8361+-0.3111 by-val-generic 2.5794+-0.3077 2.4775+-0.0747 might be 1.0412x faster call-spread-apply 26.9822+-1.3769 26.9507+-1.3812 call-spread-call 21.0297+-0.6743 ? 22.0792+-0.9198 ? might be 1.0499x slower captured-assignments 0.4579+-0.0733 0.4440+-0.0284 might be 1.0314x faster cast-int-to-double 5.0800+-0.0949 ? 5.0805+-0.0959 ? cell-argument 6.4022+-0.3258 6.2119+-0.4405 might be 1.0306x faster cfg-simplify 2.8950+-0.0493 ? 2.9511+-0.1494 ? might be 1.0194x slower chain-getter-access 8.3528+-0.1082 ? 8.6506+-0.3623 ? might be 1.0357x slower cmpeq-obj-to-obj-other 12.1717+-0.7570 ? 12.2025+-0.8686 ? constant-test 4.9201+-0.1929 4.8553+-0.0522 might be 1.0134x faster create-lots-of-functions 9.3572+-0.3303 ? 9.7289+-0.5300 ? might be 1.0397x slower cse-new-array-buffer 2.3886+-0.1963 2.3618+-0.1541 might be 1.0113x faster cse-new-array 2.6270+-0.3218 2.5959+-0.2751 might be 1.0120x faster DataView-custom-properties 31.4965+-0.9413 30.8705+-0.7066 might be 1.0203x faster delay-tear-off-arguments-strictmode 12.0873+-0.3038 ? 12.5700+-0.5805 ? might be 1.0399x slower deltablue-varargs 175.1500+-5.4030 173.0341+-5.7436 might be 1.0122x faster destructuring-arguments 166.0807+-1.8202 ? 169.4739+-11.7492 ? might be 1.0204x slower destructuring-parameters-overridden-by-function 0.4597+-0.0271 ? 0.6080+-0.1931 ? might be 1.3226x slower destructuring-swap 4.8339+-0.1126 ? 4.8463+-0.1984 ? direct-arguments-getbyval 1.2357+-0.1176 1.2206+-0.0696 might be 1.0124x faster div-boolean-double 5.3571+-0.0973 5.3013+-0.1179 might be 1.0105x faster div-boolean 8.1472+-0.1437 ? 8.2857+-0.3241 ? might be 1.0170x slower double-get-by-val-out-of-bounds 4.7416+-0.6329 4.7011+-0.6800 double-pollution-getbyval 8.6831+-0.1004 ? 8.6996+-0.1218 ? double-pollution-putbyoffset 3.6554+-0.1064 3.5929+-0.0919 might be 1.0174x faster double-real-use 23.9808+-0.5169 23.8664+-0.6328 double-to-int32-typed-array-no-inline 2.2318+-0.1811 2.1806+-0.0829 might be 1.0235x faster double-to-int32-typed-array 2.0368+-0.0474 ? 2.0776+-0.1425 ? might be 1.0200x slower double-to-uint32-typed-array-no-inline 2.2336+-0.0794 ? 2.2965+-0.0875 ? might be 1.0281x slower double-to-uint32-typed-array 2.0689+-0.0358 ? 2.1271+-0.1150 ? might be 1.0281x slower elidable-new-object-dag 35.0308+-1.1095 34.5814+-1.2698 might be 1.0130x faster elidable-new-object-roflcopter 34.0688+-0.6941 32.5712+-1.1193 might be 1.0460x faster elidable-new-object-then-call 31.8958+-0.9847 ? 32.2336+-0.8130 ? might be 1.0106x slower elidable-new-object-tree 37.2376+-0.5414 ? 37.6832+-1.1244 ? might be 1.0120x slower empty-string-plus-int 4.6707+-0.0832 ! 4.8784+-0.0332 ! definitely 1.0445x slower emscripten-cube2hash 25.9473+-1.2074 ? 27.8556+-1.4515 ? might be 1.0735x slower exit-length-on-plain-object 12.3092+-0.3740 ! 15.2178+-0.4169 ! definitely 1.2363x slower external-arguments-getbyval 1.2769+-0.0598 1.2050+-0.0979 might be 1.0597x faster external-arguments-putbyval 2.1420+-0.0710 ? 2.2119+-0.1281 ? might be 1.0326x slower fixed-typed-array-storage-var-index 1.2164+-0.0501 1.1682+-0.0123 might be 1.0412x faster fixed-typed-array-storage 0.8961+-0.0327 ? 0.9125+-0.0668 ? might be 1.0184x slower Float32Array-matrix-mult 3.8965+-0.0497 ! 4.3716+-0.4038 ! definitely 1.1219x slower Float32Array-to-Float64Array-set 46.5005+-0.5037 ? 47.1925+-0.8722 ? might be 1.0149x slower Float64Array-alloc-long-lived 71.4377+-1.2180 ? 72.8191+-6.0410 ? might be 1.0193x slower Float64Array-to-Int16Array-set 57.4603+-1.8593 57.1108+-1.9288 fold-double-to-int 12.4950+-0.5810 12.1107+-0.3008 might be 1.0317x faster fold-get-by-id-to-multi-get-by-offset-rare-int 10.9265+-1.0117 ? 11.4056+-1.5478 ? might be 1.0438x slower fold-get-by-id-to-multi-get-by-offset 10.8847+-1.4517 10.1502+-0.5742 might be 1.0724x faster fold-multi-get-by-offset-to-get-by-offset 8.7002+-1.2102 ? 9.0302+-0.7432 ? might be 1.0379x slower fold-multi-get-by-offset-to-poly-get-by-offset 10.0186+-2.6535 8.6365+-0.6155 might be 1.1600x faster fold-multi-put-by-offset-to-poly-put-by-offset 10.9536+-1.5074 10.4555+-1.2798 might be 1.0476x faster fold-multi-put-by-offset-to-put-by-offset 6.7541+-1.1494 ! 10.4541+-0.4607 ! definitely 1.5478x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.4175+-0.4695 ? 9.6074+-0.6219 ? might be 1.0202x slower fold-put-by-id-to-multi-put-by-offset 11.0346+-0.9828 ? 11.3848+-1.0905 ? might be 1.0317x slower fold-put-by-val-with-string-to-multi-put-by-offset 11.1555+-1.1047 ? 11.3719+-0.6603 ? might be 1.0194x slower fold-put-by-val-with-symbol-to-multi-put-by-offset 10.4830+-1.0065 ? 10.7354+-0.5549 ? might be 1.0241x slower fold-put-structure 6.4121+-0.7574 ? 7.6949+-0.7344 ? might be 1.2001x slower for-of-iterate-array-entries 10.9035+-0.1343 ? 11.2227+-0.5828 ? might be 1.0293x slower for-of-iterate-array-keys 3.5661+-0.3586 3.4253+-0.1196 might be 1.0411x faster for-of-iterate-array-values 3.5945+-0.2273 3.5343+-0.2919 might be 1.0170x faster fround 17.7127+-0.5042 ? 17.8475+-0.4742 ? ftl-library-inlining-dataview 56.7204+-1.5642 ? 56.8355+-1.0749 ? ftl-library-inlining 95.7446+-1.0132 95.6008+-0.6416 function-call 10.7158+-0.2095 ? 10.9701+-0.4081 ? might be 1.0237x slower function-dot-apply 2.0196+-0.0444 ? 2.2635+-0.4926 ? might be 1.1207x slower function-test 2.7177+-0.0843 ? 2.7506+-0.0400 ? might be 1.0121x slower function-with-eval 93.3626+-0.4010 93.1958+-1.1569 gcse-poly-get-less-obvious 20.1965+-0.2359 ? 20.3802+-0.3880 ? gcse-poly-get 24.8224+-2.0524 ^ 20.9301+-0.2630 ^ definitely 1.1860x faster gcse 3.8448+-0.1134 3.5800+-0.4065 might be 1.0740x faster get-by-id-bimorphic-check-structure-elimination-simple 2.7037+-0.1058 2.6115+-0.0665 might be 1.0353x faster get-by-id-bimorphic-check-structure-elimination 5.7253+-0.2055 ^ 4.7585+-0.1274 ^ definitely 1.2032x faster get-by-id-chain-from-try-block 5.5022+-0.1929 5.3586+-0.0455 might be 1.0268x faster get-by-id-check-structure-elimination 4.4259+-0.1577 ^ 3.9153+-0.0829 ^ definitely 1.1304x faster get-by-id-proto-or-self 15.8441+-0.9135 15.5797+-0.8584 might be 1.0170x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.8765+-0.0188 ? 2.9175+-0.0559 ? might be 1.0142x slower get-by-id-self-or-proto 15.6098+-1.0422 15.4301+-0.9243 might be 1.0116x faster get-by-val-out-of-bounds 4.3539+-0.1028 ? 4.4181+-0.3469 ? might be 1.0148x slower get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.7909+-0.0403 2.7631+-0.0947 might be 1.0101x faster get-by-val-with-string-bimorphic-check-structure-elimination 6.1374+-0.2374 5.9023+-0.1430 might be 1.0398x faster get-by-val-with-string-chain-from-try-block 5.5459+-0.1212 ? 5.6515+-0.2643 ? might be 1.0190x slower get-by-val-with-string-check-structure-elimination 5.6353+-1.1329 5.1361+-0.1171 might be 1.0972x faster get-by-val-with-string-proto-or-self 16.4633+-1.0073 15.6938+-0.8350 might be 1.0490x faster get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.3479+-0.0601 ^ 3.0869+-0.0839 ^ definitely 1.0846x faster get-by-val-with-string-self-or-proto 15.7904+-0.6484 15.6165+-0.5953 might be 1.0111x faster get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0858+-0.0214 ? 3.1515+-0.0762 ? might be 1.0213x slower get-by-val-with-symbol-bimorphic-check-structure-elimination 12.3023+-0.1258 ? 12.4216+-0.1806 ? get-by-val-with-symbol-chain-from-try-block 5.5128+-0.0816 ? 5.6950+-0.2452 ? might be 1.0331x slower get-by-val-with-symbol-check-structure-elimination 11.2745+-0.1025 ? 11.4391+-0.1639 ? might be 1.0146x slower get-by-val-with-symbol-proto-or-self 15.6640+-0.6903 15.6021+-0.3291 get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 4.0652+-0.8184 3.9002+-0.3238 might be 1.0423x faster get-by-val-with-symbol-self-or-proto 15.3779+-0.3621 ? 15.8925+-0.4612 ? might be 1.0335x slower get_callee_monomorphic 2.5283+-0.2841 2.3928+-0.0820 might be 1.0566x faster get_callee_polymorphic 3.6313+-0.3648 ? 3.6917+-0.4619 ? might be 1.0166x slower getter-no-activation 4.8243+-0.1602 ? 4.8625+-0.2385 ? getter-prototype 8.8296+-0.1172 ^ 8.0971+-0.4452 ^ definitely 1.0905x faster getter-richards 121.6720+-6.0224 116.7231+-4.3454 might be 1.0424x faster getter 5.4981+-0.4648 5.2302+-0.3808 might be 1.0512x faster global-object-access-with-mutating-structure 5.5336+-0.1020 ? 5.7931+-0.2739 ? might be 1.0469x slower global-var-const-infer-fire-from-opt 0.8446+-0.0385 ? 0.9189+-0.2117 ? might be 1.0879x slower global-var-const-infer 0.6885+-0.0740 0.6471+-0.0203 might be 1.0639x faster hard-overflow-check-equal 33.0935+-0.9574 ^ 27.0496+-1.6507 ^ definitely 1.2234x faster hard-overflow-check 32.7499+-0.9313 ^ 26.3548+-0.5100 ^ definitely 1.2427x faster HashMap-put-get-iterate-keys 27.3331+-0.9749 25.9342+-1.0295 might be 1.0539x faster HashMap-put-get-iterate 29.3111+-0.6953 28.9029+-0.9642 might be 1.0141x faster HashMap-string-put-get-iterate 25.4756+-1.4210 24.7638+-1.5794 might be 1.0287x faster hoist-make-rope 8.3820+-0.6547 ? 8.7106+-0.4068 ? might be 1.0392x slower hoist-poly-check-structure-effectful-loop 4.1714+-0.0716 ^ 3.7039+-0.0921 ^ definitely 1.1262x faster hoist-poly-check-structure 3.3055+-0.0838 ? 3.3567+-0.4233 ? might be 1.0155x slower imul-double-only 7.3764+-0.5683 7.2557+-0.1262 might be 1.0166x faster imul-int-only 8.7517+-0.9824 8.7089+-0.8251 imul-mixed 7.1204+-0.2967 7.0125+-0.4385 might be 1.0154x faster in-four-cases 17.5611+-0.7770 16.9061+-0.2895 might be 1.0387x faster in-one-case-false 9.1648+-0.0268 ! 9.9040+-0.6752 ! definitely 1.0807x slower in-one-case-true 9.4945+-0.5018 ? 9.6930+-0.5692 ? might be 1.0209x slower in-two-cases 9.9522+-0.3876 ? 9.9612+-0.4333 ? indexed-properties-in-objects 2.7026+-0.0258 ! 2.8047+-0.0715 ! definitely 1.0377x slower infer-closure-const-then-mov-no-inline 3.6418+-0.1629 3.5840+-0.0604 might be 1.0161x faster infer-closure-const-then-mov 18.6453+-0.5731 18.5856+-0.5846 infer-closure-const-then-put-to-scope-no-inline 10.7996+-0.1181 ? 10.8659+-0.2430 ? infer-closure-const-then-put-to-scope 22.9692+-0.5785 22.3600+-0.3925 might be 1.0272x faster infer-closure-const-then-reenter-no-inline 44.8476+-0.6212 44.7841+-0.4210 infer-closure-const-then-reenter 22.7558+-0.4858 ? 23.2394+-0.7274 ? might be 1.0212x slower infer-constant-global-property 3.3704+-0.0432 ? 3.3928+-0.0609 ? infer-constant-property 2.6177+-0.0235 ? 2.7779+-0.2446 ? might be 1.0612x slower infer-one-time-closure-ten-vars 7.8377+-0.3884 ? 7.9692+-0.5299 ? might be 1.0168x slower infer-one-time-closure-two-vars 7.3498+-0.0752 ? 7.4298+-0.3353 ? might be 1.0109x slower infer-one-time-closure 7.5201+-0.4085 7.0848+-0.1613 might be 1.0614x faster infer-one-time-deep-closure 10.9701+-0.2998 10.7126+-0.2289 might be 1.0240x faster inline-arguments-access 3.5844+-0.1538 ? 3.6664+-0.1790 ? might be 1.0229x slower inline-arguments-aliased-access 3.6736+-0.2317 3.6265+-0.0557 might be 1.0130x faster inline-arguments-local-escape 3.9170+-0.3672 3.7670+-0.2051 might be 1.0398x faster inline-get-scoped-var 4.5165+-0.1154 ? 4.5360+-0.1271 ? inlined-put-by-id-transition 9.2961+-0.8185 ? 9.4428+-0.5341 ? might be 1.0158x slower inlined-put-by-val-with-string-transition 42.0168+-1.1972 ? 43.7844+-3.5313 ? might be 1.0421x slower inlined-put-by-val-with-symbol-transition 42.3346+-1.3820 42.2761+-0.9862 int-or-other-abs-then-get-by-val 4.7492+-0.3413 4.4778+-0.1117 might be 1.0606x faster int-or-other-abs-zero-then-get-by-val 15.8073+-0.5929 15.7552+-0.5238 int-or-other-add-then-get-by-val 4.1774+-0.0633 ^ 4.0304+-0.0389 ^ definitely 1.0365x faster int-or-other-add 4.9076+-0.0689 ? 4.9833+-0.2463 ? might be 1.0154x slower int-or-other-div-then-get-by-val 3.7598+-0.0785 3.7453+-0.0733 int-or-other-max-then-get-by-val 3.8940+-0.0651 ? 3.9060+-0.0802 ? int-or-other-min-then-get-by-val 3.8104+-0.0898 ? 3.8372+-0.1706 ? int-or-other-mod-then-get-by-val 3.8776+-0.9246 3.6039+-0.2247 might be 1.0760x faster int-or-other-mul-then-get-by-val 3.6250+-0.0859 3.6041+-0.0287 int-or-other-neg-then-get-by-val 4.0274+-0.0680 4.0029+-0.0750 int-or-other-neg-zero-then-get-by-val 15.2208+-0.2043 ? 15.3367+-0.2612 ? int-or-other-sub-then-get-by-val 4.7621+-1.3515 4.0442+-0.0642 might be 1.1775x faster int-or-other-sub 3.4206+-0.0175 ? 3.4476+-0.0586 ? int-overflow-local 4.0792+-0.0654 4.0475+-0.0822 Int16Array-alloc-long-lived 47.2630+-1.6321 46.9967+-1.4819 Int16Array-bubble-sort-with-byteLength 17.3005+-0.8974 17.1313+-0.4104 Int16Array-bubble-sort 16.9147+-0.4615 16.5849+-0.3364 might be 1.0199x faster Int16Array-load-int-mul 1.4391+-0.0702 1.4312+-0.0443 Int16Array-to-Int32Array-set 56.8430+-20.1768 44.3498+-0.8899 might be 1.2817x faster Int32Array-alloc-large 12.1926+-0.8485 ? 12.3728+-0.3810 ? might be 1.0148x slower Int32Array-alloc-long-lived 55.6529+-1.1868 55.0514+-1.1829 might be 1.0109x faster Int32Array-alloc 3.2221+-0.7695 2.8369+-0.1858 might be 1.1358x faster Int32Array-Int8Array-view-alloc 5.9669+-0.1284 ? 6.1463+-0.3031 ? might be 1.0301x slower int52-spill 4.5905+-0.1678 4.5609+-0.1835 Int8Array-alloc-long-lived 41.4351+-1.1068 ? 41.4825+-1.4119 ? Int8Array-load-with-byteLength 3.4350+-0.2105 3.3689+-0.0553 might be 1.0196x faster Int8Array-load 3.3622+-0.0729 ? 3.4219+-0.1065 ? might be 1.0178x slower integer-divide 10.3889+-0.1671 ? 10.4047+-0.1493 ? integer-modulo 1.6092+-0.0525 ? 1.7135+-0.1371 ? might be 1.0648x slower is-boolean-fold-tricky 3.7952+-0.1001 3.7493+-0.0417 might be 1.0123x faster is-boolean-fold 2.7310+-0.1774 2.6745+-0.0739 might be 1.0211x faster is-function-fold-tricky-internal-function 9.6697+-0.1846 ^ 9.3421+-0.1039 ^ definitely 1.0351x faster is-function-fold-tricky 4.1133+-0.1596 ? 4.1262+-0.1597 ? is-function-fold 2.6356+-0.0242 ? 2.6606+-0.0399 ? is-number-fold-tricky 3.9150+-0.0597 ? 4.0237+-0.1168 ? might be 1.0278x slower is-number-fold 2.8237+-0.2890 2.6457+-0.0643 might be 1.0673x faster is-object-or-null-fold-functions 2.6680+-0.0198 2.6405+-0.0337 might be 1.0104x faster is-object-or-null-fold-less-tricky 4.1605+-0.2565 ? 4.3308+-0.3946 ? might be 1.0409x slower is-object-or-null-fold-tricky 4.8619+-0.2009 4.7811+-0.0863 might be 1.0169x faster is-object-or-null-fold 2.8720+-0.5044 2.6563+-0.0468 might be 1.0812x faster is-object-or-null-trickier-function 4.1263+-0.2185 ? 4.2554+-0.4450 ? might be 1.0313x slower is-object-or-null-trickier-internal-function 9.7037+-0.1097 ? 9.9784+-0.4098 ? might be 1.0283x slower is-object-or-null-tricky-function 4.0859+-0.1057 3.9906+-0.0592 might be 1.0239x faster is-object-or-null-tricky-internal-function 7.6077+-0.5790 7.2156+-0.0550 might be 1.0543x faster is-string-fold-tricky 4.1620+-0.4107 3.9545+-0.0854 might be 1.0525x faster is-string-fold 2.6166+-0.0221 ? 2.6217+-0.0314 ? is-undefined-fold-tricky 3.3550+-0.0349 3.3256+-0.0856 is-undefined-fold 2.7866+-0.2652 2.6118+-0.0334 might be 1.0670x faster JSONP-negative-0 0.2552+-0.0288 0.2481+-0.0087 might be 1.0287x faster large-int-captured 4.2205+-0.3414 4.0890+-0.1852 might be 1.0322x faster large-int-neg 14.1271+-0.5233 ? 14.2442+-0.4001 ? large-int 13.3140+-0.3874 13.1909+-0.5799 load-varargs-elimination 20.3296+-0.3462 ? 20.4649+-0.2723 ? logical-not-weird-types 2.9827+-0.0371 ? 3.0428+-0.0780 ? might be 1.0201x slower logical-not 4.3944+-0.0445 ? 4.4736+-0.2007 ? might be 1.0180x slower lots-of-fields 8.8457+-0.2121 ! 9.7119+-0.4546 ! definitely 1.0979x slower make-indexed-storage 2.8498+-0.1140 ? 2.8546+-0.2331 ? make-rope-cse 3.6681+-0.0996 3.6257+-0.0853 might be 1.0117x faster marsaglia-larger-ints 32.3426+-0.9767 31.7346+-0.5387 might be 1.0192x faster marsaglia-osr-entry 21.1767+-0.5042 ? 21.7398+-0.8062 ? might be 1.0266x slower math-with-out-of-bounds-array-values 21.2525+-0.3417 ? 21.5648+-0.3727 ? might be 1.0147x slower max-boolean 2.5870+-0.0218 2.5854+-0.0320 method-on-number 15.4821+-0.1861 ? 15.7819+-0.4661 ? might be 1.0194x slower min-boolean 2.6347+-0.0644 2.5722+-0.0240 might be 1.0243x faster minus-boolean-double 3.0699+-0.0281 3.0576+-0.0280 minus-boolean 2.3146+-0.0541 ? 2.3328+-0.0375 ? misc-strict-eq 28.5292+-0.7565 ? 28.8959+-1.0290 ? might be 1.0129x slower mod-boolean-double 11.0106+-0.1432 ? 11.2087+-0.4314 ? might be 1.0180x slower mod-boolean 8.2936+-0.1792 8.2680+-0.0887 mul-boolean-double 3.6155+-0.0328 3.6015+-0.0511 mul-boolean 2.7650+-0.0355 ? 2.8200+-0.0727 ? might be 1.0199x slower neg-boolean 3.0625+-0.0486 ? 3.1330+-0.0912 ? might be 1.0230x slower negative-zero-divide 0.3619+-0.0267 0.3601+-0.0578 negative-zero-modulo 0.3296+-0.0213 ? 0.3776+-0.1016 ? might be 1.1456x slower negative-zero-negate 0.3364+-0.0327 0.3330+-0.0187 might be 1.0103x faster nested-function-parsing 44.9096+-0.4937 ? 45.2174+-0.7220 ? new-array-buffer-dead 87.2598+-0.8165 ? 87.9518+-1.1456 ? new-array-buffer-push 6.2701+-0.3388 6.1367+-0.2126 might be 1.0217x faster new-array-dead 15.7499+-0.4377 15.2573+-0.6562 might be 1.0323x faster new-array-push 3.4451+-0.0845 ? 3.5808+-0.1713 ? might be 1.0394x slower no-inline-constructor 31.4798+-0.7483 31.2064+-0.7996 number-test 3.0825+-0.1460 ? 3.1673+-0.3014 ? might be 1.0275x slower object-closure-call 5.2546+-0.2382 5.1404+-0.2353 might be 1.0222x faster object-get-own-property-symbols-on-large-array 4.2432+-0.4389 4.2310+-0.1665 object-test 2.7614+-0.0383 ? 2.8503+-0.2657 ? might be 1.0322x slower obvious-sink-pathology-taken 98.2146+-0.4998 ? 98.9673+-0.9870 ? obvious-sink-pathology 94.6472+-2.9624 94.3766+-1.0083 obviously-elidable-new-object 28.8225+-1.1079 28.6124+-0.7996 plus-boolean-arith 2.4198+-0.0909 2.3831+-0.0764 might be 1.0154x faster plus-boolean-double 3.2399+-0.2349 3.0991+-0.0665 might be 1.0454x faster plus-boolean 2.5147+-0.0202 ? 2.5215+-0.0824 ? poly-chain-access-different-prototypes-simple 3.2129+-0.0339 ? 3.2605+-0.1140 ? might be 1.0148x slower poly-chain-access-different-prototypes 3.4951+-0.4574 3.2688+-0.0383 might be 1.0692x faster poly-chain-access-simpler 3.2435+-0.1635 ? 3.2728+-0.0668 ? poly-chain-access 3.4103+-0.3115 3.2807+-0.0745 might be 1.0395x faster poly-stricteq 50.2519+-0.7779 ? 54.5121+-10.9504 ? might be 1.0848x slower polymorphic-array-call 1.2140+-0.0656 ? 1.2923+-0.0578 ? might be 1.0645x slower polymorphic-get-by-id 2.8390+-0.0945 2.8358+-0.0633 polymorphic-put-by-id 28.4326+-0.8798 ? 28.8254+-1.6172 ? might be 1.0138x slower polymorphic-put-by-val-with-string 28.4671+-1.2600 28.1255+-0.8196 might be 1.0121x faster polymorphic-put-by-val-with-symbol 28.3532+-0.7375 28.0122+-0.7486 might be 1.0122x faster polymorphic-structure 13.3037+-0.7050 12.6111+-0.4073 might be 1.0549x faster polyvariant-monomorphic-get-by-id 7.0004+-0.7264 ? 7.0975+-0.9503 ? might be 1.0139x slower proto-getter-access 8.3029+-0.2266 ? 8.3607+-0.1487 ? prototype-access-with-mutating-prototype 5.3680+-0.0955 ? 5.4576+-0.1688 ? might be 1.0167x slower put-by-id-replace-and-transition 8.2173+-0.5292 7.7328+-0.6229 might be 1.0627x faster put-by-id-slightly-polymorphic 2.6937+-0.1981 ? 2.8078+-0.3419 ? might be 1.0424x slower put-by-id 9.6949+-0.3689 ? 10.5410+-1.5546 ? might be 1.0873x slower put-by-val-direct 0.3545+-0.0434 ? 0.4512+-0.1937 ? might be 1.2729x slower put-by-val-large-index-blank-indexing-type 5.6454+-0.4484 5.4767+-0.0938 might be 1.0308x faster put-by-val-machine-int 2.6420+-0.1464 2.5577+-0.1053 might be 1.0329x faster put-by-val-with-string-replace-and-transition 10.3070+-0.5493 ? 10.5470+-0.5860 ? might be 1.0233x slower put-by-val-with-string-slightly-polymorphic 3.0268+-0.3346 2.8661+-0.0590 might be 1.0561x faster put-by-val-with-string 10.4149+-0.3574 ? 11.4967+-1.8582 ? might be 1.1039x slower put-by-val-with-symbol-replace-and-transition 12.0017+-0.4439 11.9598+-0.7083 put-by-val-with-symbol-slightly-polymorphic 3.1986+-0.0968 3.1432+-0.0301 might be 1.0176x faster put-by-val-with-symbol 10.4873+-0.4274 10.3170+-0.3656 might be 1.0165x faster rare-osr-exit-on-local 13.6107+-0.1393 13.4398+-0.2670 might be 1.0127x faster register-pressure-from-osr 17.6605+-0.5441 ^ 16.7320+-0.3334 ^ definitely 1.0555x faster repeat-multi-get-by-offset 21.9933+-0.4557 20.9397+-0.7693 might be 1.0503x faster setter-prototype 7.5709+-0.0595 ? 7.7887+-0.2615 ? might be 1.0288x slower setter 5.7907+-0.7243 5.5689+-0.5711 might be 1.0398x faster simple-activation-demo 24.6304+-0.5532 24.4910+-1.1713 simple-getter-access 11.2278+-1.1876 10.7763+-0.2052 might be 1.0419x faster simple-poly-call-nested 8.6622+-0.5060 ? 8.8309+-0.4756 ? might be 1.0195x slower simple-poly-call 1.3475+-0.2147 1.3026+-0.0981 might be 1.0345x faster sin-boolean 21.1088+-1.5999 20.7724+-1.3556 might be 1.0162x faster singleton-scope 55.6290+-0.6432 ? 56.3892+-0.6442 ? might be 1.0137x slower sink-function 10.1957+-0.8361 ? 11.5894+-2.5810 ? might be 1.1367x slower sink-huge-activation 17.2687+-0.5716 16.9765+-0.8272 might be 1.0172x faster sinkable-new-object-dag 54.1818+-2.3263 ? 55.2975+-2.7790 ? might be 1.0206x slower sinkable-new-object-taken 44.2835+-1.1100 ? 44.6409+-0.9252 ? sinkable-new-object 29.9977+-0.5132 29.8000+-0.7123 slow-array-profile-convergence 2.4892+-0.1482 2.4558+-0.0531 might be 1.0136x faster slow-convergence 2.3258+-0.0129 ? 2.4157+-0.1944 ? might be 1.0387x slower slow-ternaries 18.6867+-2.7090 17.7903+-1.1302 might be 1.0504x faster sorting-benchmark 16.9830+-0.6257 16.7650+-0.4607 might be 1.0130x faster sparse-conditional 1.1466+-0.0255 ? 1.1566+-0.0595 ? splice-to-remove 12.1070+-0.2887 ? 12.1998+-0.2102 ? string-char-code-at 13.0139+-0.2578 12.8115+-0.2038 might be 1.0158x faster string-concat-object 2.2356+-0.1212 2.2006+-0.1506 might be 1.0159x faster string-concat-pair-object 2.2146+-0.1225 ? 2.4526+-0.3699 ? might be 1.1075x slower string-concat-pair-simple 9.2794+-0.3734 ? 9.9085+-0.6272 ? might be 1.0678x slower string-concat-simple 9.9892+-0.4472 9.6035+-0.4529 might be 1.0402x faster string-cons-repeat 7.0335+-0.7329 6.6205+-0.6618 might be 1.0624x faster string-cons-tower 6.7029+-0.3549 ? 6.7058+-0.3042 ? string-equality 14.8603+-0.2069 14.8358+-0.1479 string-get-by-val-big-char 6.5475+-0.1068 6.5198+-0.1239 string-get-by-val-out-of-bounds-insane 3.1256+-0.0655 ? 3.1882+-0.2827 ? might be 1.0200x slower string-get-by-val-out-of-bounds 3.8898+-0.0840 3.8773+-0.0511 string-get-by-val 2.8253+-0.1511 2.7980+-0.0312 string-hash 1.8631+-0.0636 1.8445+-0.0761 might be 1.0101x faster string-long-ident-equality 12.9726+-0.1506 ? 12.9995+-0.2028 ? string-out-of-bounds 10.0300+-0.3182 ? 10.1510+-0.2220 ? might be 1.0121x slower string-repeat-arith 25.8796+-0.4607 ! 27.0114+-0.4602 ! definitely 1.0437x slower string-sub 54.2256+-1.4278 ? 56.4030+-2.2070 ? might be 1.0402x slower string-test 2.9397+-0.1204 2.8784+-0.1429 might be 1.0213x faster string-var-equality 26.8928+-1.0550 26.1954+-0.2288 might be 1.0266x faster structure-hoist-over-transitions 2.4105+-0.2529 2.3530+-0.1179 might be 1.0244x faster substring-concat-weird 36.1540+-0.9641 35.8641+-1.0046 substring-concat 40.0718+-1.9293 ? 40.7859+-1.7083 ? might be 1.0178x slower substring 45.4316+-1.1906 ? 46.0712+-1.0491 ? might be 1.0141x slower switch-char-constant 2.7558+-0.2119 2.6687+-0.0717 might be 1.0326x faster switch-char 6.1469+-0.7855 5.4218+-0.2547 might be 1.1337x faster switch-constant 9.3231+-0.3900 8.7255+-0.7661 might be 1.0685x faster switch-string-basic-big-var 14.2144+-0.2104 ? 14.7147+-0.6433 ? might be 1.0352x slower switch-string-basic-big 15.0564+-0.4078 14.9639+-0.4952 switch-string-basic-var 13.7571+-0.3284 13.6036+-0.4160 might be 1.0113x faster switch-string-basic 12.6897+-0.3405 12.4093+-0.1664 might be 1.0226x faster switch-string-big-length-tower-var 17.9904+-0.2933 ? 18.0975+-0.4954 ? switch-string-length-tower-var 13.0660+-0.3670 13.0508+-0.3167 switch-string-length-tower 11.4669+-0.2992 ? 11.6501+-0.2268 ? might be 1.0160x slower switch-string-short 11.2619+-0.1470 ? 11.4160+-0.2373 ? might be 1.0137x slower switch 10.9872+-0.5257 ? 11.2272+-0.6557 ? might be 1.0218x slower tear-off-arguments-simple 3.1823+-0.1551 3.0855+-0.1438 might be 1.0314x faster tear-off-arguments 4.0500+-0.0942 4.0186+-0.1247 temporal-structure 12.0714+-0.5155 11.6929+-0.2702 might be 1.0324x faster to-int32-boolean 12.6377+-0.3849 ? 12.7692+-0.3727 ? might be 1.0104x slower try-catch-get-by-val-cloned-arguments 13.7059+-0.2732 ? 14.2403+-0.4656 ? might be 1.0390x slower try-catch-get-by-val-direct-arguments 6.3293+-0.1316 ? 6.4584+-0.2735 ? might be 1.0204x slower try-catch-get-by-val-scoped-arguments 7.8473+-0.0659 7.5740+-0.2238 might be 1.0361x faster typed-array-get-set-by-val-profiling 28.2184+-1.5252 27.4100+-1.0152 might be 1.0295x faster undefined-property-access 224.4266+-1.9747 ^ 215.9747+-0.7775 ^ definitely 1.0391x faster undefined-test 3.0668+-0.1341 3.0042+-0.0866 might be 1.0208x faster unprofiled-licm 13.6879+-0.2591 ^ 9.6975+-0.8975 ^ definitely 1.4115x faster varargs-call 13.1685+-0.3131 ? 13.3662+-0.5337 ? might be 1.0150x slower varargs-construct-inline 21.8319+-0.5745 21.6925+-0.4184 varargs-construct 19.7384+-0.2127 ? 19.8718+-0.3292 ? varargs-inline 8.6916+-0.1746 ? 8.9851+-0.4015 ? might be 1.0338x slower varargs-strict-mode 9.5021+-0.1170 ? 9.7660+-0.7597 ? might be 1.0278x slower varargs 9.6411+-0.2983 9.6282+-0.3530 weird-inlining-const-prop 2.1598+-0.1052 ? 2.1880+-0.1765 ? might be 1.0131x slower <geometric> 7.9406+-0.0271 7.9233+-0.0260 might be 1.0022x faster TipOfTree PropTypeInference AsmBench: bigfib.cpp 445.6295+-6.3191 ? 456.6078+-6.8338 ? might be 1.0246x slower cray.c 414.5247+-50.4765 390.4744+-1.3718 might be 1.0616x faster dry.c 425.0297+-7.1072 419.2015+-6.9705 might be 1.0139x faster FloatMM.c 680.5083+-1.5857 ? 682.1187+-3.7260 ? gcc-loops.cpp 3410.4165+-8.8511 3405.7317+-6.4612 n-body.c 820.9221+-1.7417 ? 821.1677+-3.5436 ? Quicksort.c 405.4785+-2.6890 404.4405+-4.5563 stepanov_container.cpp 3469.2711+-13.9779 ? 3490.1951+-22.9585 ? Towers.c 233.9452+-4.3522 232.3153+-0.8717 <geometric> 715.0234+-8.1584 711.5162+-2.2886 might be 1.0049x faster TipOfTree PropTypeInference CompressionBench: huffman 61.1774+-0.9324 61.1209+-1.1611 arithmetic-simple 282.7768+-29.9651 269.4106+-0.7516 might be 1.0496x faster arithmetic-precise 242.4166+-2.7698 241.3868+-1.4367 arithmetic-complex-precise 243.4485+-4.5442 242.0727+-1.4858 arithmetic-precise-order-0 278.8811+-1.4633 277.8895+-0.3913 arithmetic-precise-order-1 294.3374+-1.2475 294.1070+-0.8609 arithmetic-precise-order-2 344.1716+-3.7321 ? 344.7427+-6.4314 ? arithmetic-simple-order-1 317.0632+-0.7942 ? 317.1623+-2.6656 ? arithmetic-simple-order-2 366.9575+-4.1691 366.2957+-4.0739 lz-string 315.7057+-3.1909 311.3489+-3.9630 might be 1.0140x faster <geometric> 252.4959+-2.9546 250.6809+-0.7604 might be 1.0072x faster TipOfTree PropTypeInference Geomean of preferred means: <scaled-result> 51.0509+-0.1883 ^ 49.6831+-0.1183 ^ definitely 1.0275x faster
Filip Pizlo
Comment 32 2015-09-16 16:04:00 PDT
Created attachment 261334 [details] work in progress This is already showing huge speed-ups but I still have bugs to fix.
Filip Pizlo
Comment 33 2015-09-17 13:53:49 PDT
Created attachment 261417 [details] the patch
WebKit Commit Bot
Comment 34 2015-09-17 13:56:43 PDT
Attachment 261417 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/WTF/wtf/HashTable.h:289: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:41: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:42: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:45: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1120: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.h:215: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/InferredType.h:218: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/CMakeLists.txt:500: Alphabetical sorting problem. "runtime/InferredType.cpp" should be before "runtime/InferredValue.cpp". [list/order] [5] Total errors found: 12 in 67 files If any of these errors are false positives, please file a bug against check-webkit-style.
Geoffrey Garen
Comment 35 2015-09-17 14:33:24 PDT
Comment on attachment 261417 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=261417&action=review r=me Please fix EWS. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5247 > + std::unique_ptr<GPRTemporary> structure; Can we just use WTF::Optional here? > Source/JavaScriptCore/runtime/InferredTypeTable.h:36 > +// destructor and makes lifetype easier to manage. For example, since it's a cell, we know that this thing lifetype=>lifetime > Source/JavaScriptCore/runtime/InferredTypeTable.h:92 > + // (transition), then absence means bottom. If we're storing to an existing property (replace, then (replace => (replace)
Filip Pizlo
Comment 36 2015-09-17 14:36:12 PDT
(In reply to comment #35) > Comment on attachment 261417 [details] > the patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=261417&action=review > > r=me > > Please fix EWS. Working on it! > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5247 > > + std::unique_ptr<GPRTemporary> structure; > > Can we just use WTF::Optional here? I'll try! > > > Source/JavaScriptCore/runtime/InferredTypeTable.h:36 > > +// destructor and makes lifetype easier to manage. For example, since it's a cell, we know that this thing > > lifetype=>lifetime Fixed. > > > Source/JavaScriptCore/runtime/InferredTypeTable.h:92 > > + // (transition), then absence means bottom. If we're storing to an existing property (replace, then > > (replace => (replace) Fixed.
Filip Pizlo
Comment 37 2015-09-17 14:39:50 PDT
Created attachment 261429 [details] the patch Fixes for EWS and to address ggaren's review.
WebKit Commit Bot
Comment 38 2015-09-17 14:42:40 PDT
Attachment 261429 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/WTF/wtf/HashTable.h:289: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:41: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:42: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:45: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1120: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.h:215: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/InferredType.h:218: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/CMakeLists.txt:500: Alphabetical sorting problem. "runtime/InferredType.cpp" should be before "runtime/InferredValue.cpp". [list/order] [5] Total errors found: 12 in 67 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 39 2015-09-17 21:34:59 PDT
Created attachment 261483 [details] the patch More build fixing.
WebKit Commit Bot
Comment 40 2015-09-17 21:38:31 PDT
Attachment 261483 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/WTF/wtf/HashTable.h:289: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:41: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:42: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:45: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1120: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.h:215: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/InferredType.h:218: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/CMakeLists.txt:500: Alphabetical sorting problem. "runtime/InferredType.cpp" should be before "runtime/InferredValue.cpp". [list/order] [5] Total errors found: 12 in 67 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 41 2015-09-17 22:12:28 PDT
Created attachment 261488 [details] the patch Fixed 32-bit.
WebKit Commit Bot
Comment 42 2015-09-17 22:14:18 PDT
Attachment 261488 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/WTF/wtf/HashTable.h:289: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:41: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:42: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:45: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1120: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.h:215: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/InferredType.h:218: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/CMakeLists.txt:500: Alphabetical sorting problem. "runtime/InferredType.cpp" should be before "runtime/InferredValue.cpp". [list/order] [5] Total errors found: 12 in 67 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 43 2015-09-21 12:09:40 PDT
Created attachment 261675 [details] patch for landing
Filip Pizlo
Comment 44 2015-09-21 12:10:23 PDT
(In reply to comment #43) > Created attachment 261675 [details] > patch for landing Actually, I probably have a few more style things to fix.
WebKit Commit Bot
Comment 45 2015-09-21 12:12:36 PDT
Attachment 261675 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/WTF/wtf/HashTable.h:289: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:41: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:42: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:43: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:44: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.cpp:45: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1120: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/runtime/InferredType.h:215: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/InferredType.h:218: The parameter name "locker" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/CMakeLists.txt:505: Alphabetical sorting problem. "runtime/InferredType.cpp" should be before "runtime/InferredValue.cpp". [list/order] [5] Total errors found: 12 in 78 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 46 2015-09-21 12:13:47 PDT
(In reply to comment #36) > (In reply to comment #35) > > Comment on attachment 261417 [details] > > the patch > > > > View in context: > > https://bugs.webkit.org/attachment.cgi?id=261417&action=review > > > > r=me > > > > Please fix EWS. > > Working on it! > > > > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5247 > > > + std::unique_ptr<GPRTemporary> structure; > > > > Can we just use WTF::Optional here? > > I'll try! Seems like WTF::Optional is a bit less nice than std::unique_ptr here. The problem is that GPRTemporary and friends don't understand move semantics. > > > > > > Source/JavaScriptCore/runtime/InferredTypeTable.h:36 > > > +// destructor and makes lifetype easier to manage. For example, since it's a cell, we know that this thing > > > > lifetype=>lifetime > > Fixed. > > > > > > Source/JavaScriptCore/runtime/InferredTypeTable.h:92 > > > + // (transition), then absence means bottom. If we're storing to an existing property (replace, then > > > > (replace => (replace) > > Fixed.
Filip Pizlo
Comment 47 2015-09-21 13:06:02 PDT
Performance numbers of rebased/fixed patch: 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 (r190059) "PropTypeInference" at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (r190059) Collected 6 samples per benchmark/VM, with 6 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 PropTypeInference SunSpider: 3d-cube 4.7428+-0.6027 ? 4.7881+-0.3438 ? 3d-morph 5.3899+-0.4131 5.2757+-0.3096 might be 1.0216x faster 3d-raytrace 5.1612+-0.1125 ? 5.3435+-0.3846 ? might be 1.0353x slower access-binary-trees 2.0806+-0.0929 ? 2.0895+-0.0980 ? access-fannkuch 5.6501+-0.3192 5.5453+-0.3887 might be 1.0189x faster access-nbody 2.4732+-0.1931 ? 2.6016+-0.2697 ? might be 1.0519x slower access-nsieve 2.9972+-0.0649 ? 3.0012+-0.0459 ? bitops-3bit-bits-in-byte 1.1775+-0.0642 ? 1.1804+-0.0881 ? bitops-bits-in-byte 3.4649+-0.6345 3.1764+-0.0295 might be 1.0909x faster bitops-bitwise-and 2.0213+-0.0670 2.0000+-0.0557 might be 1.0107x faster bitops-nsieve-bits 2.9753+-0.0879 2.9705+-0.0323 controlflow-recursive 2.2998+-0.1100 ? 2.3708+-0.2268 ? might be 1.0309x slower crypto-aes 4.0861+-0.2577 3.8636+-0.1042 might be 1.0576x faster crypto-md5 2.4433+-0.0825 ? 2.4772+-0.0490 ? might be 1.0139x slower crypto-sha1 2.4228+-0.1835 ? 2.5243+-0.1973 ? might be 1.0419x slower date-format-tofte 6.8379+-0.5738 ? 7.0383+-0.3589 ? might be 1.0293x slower date-format-xparb 4.6060+-0.1854 ? 4.6276+-0.1156 ? math-cordic 2.8149+-0.0647 2.7980+-0.0810 math-partial-sums 5.1778+-1.0129 4.8067+-0.1006 might be 1.0772x faster math-spectral-norm 1.8640+-0.0211 ? 1.9270+-0.0778 ? might be 1.0338x slower regexp-dna 6.4928+-0.3693 6.4168+-0.2384 might be 1.0118x faster string-base64 4.6406+-0.2646 ? 4.6528+-0.3587 ? string-fasta 5.8877+-0.2278 5.8011+-0.1346 might be 1.0149x faster string-tagcloud 7.8036+-0.1621 ? 7.8427+-0.0889 ? string-unpack-code 18.6976+-0.4090 ^ 17.8575+-0.2819 ^ definitely 1.0470x faster string-validate-input 4.6159+-0.2063 ? 4.7290+-0.4749 ? might be 1.0245x slower <arithmetic> 4.5702+-0.0687 4.5271+-0.0522 might be 1.0095x faster TipOfTree PropTypeInference LongSpider: 3d-cube 808.3922+-7.5296 800.5357+-7.1386 3d-morph 1496.5264+-29.6262 1484.9765+-5.8968 3d-raytrace 594.7610+-12.5181 594.3466+-8.0207 access-binary-trees 802.4530+-6.2678 ? 803.2994+-7.4199 ? access-fannkuch 273.5359+-4.7797 ? 274.4207+-5.5666 ? access-nbody 508.0145+-11.4747 506.0303+-1.9341 access-nsieve 359.5817+-1.8110 ? 362.9360+-10.1494 ? bitops-3bit-bits-in-byte 34.1751+-0.5839 33.5027+-0.1939 might be 1.0201x faster bitops-bits-in-byte 76.3990+-1.9102 74.6802+-1.5706 might be 1.0230x faster bitops-nsieve-bits 406.2599+-15.1556 400.8208+-3.5662 might be 1.0136x faster controlflow-recursive 423.9346+-2.5188 ? 425.5837+-6.3849 ? crypto-aes 565.1296+-2.4617 555.4758+-12.5875 might be 1.0174x faster crypto-md5 431.8547+-2.3074 ? 444.2644+-29.7342 ? might be 1.0287x slower crypto-sha1 640.2647+-16.0862 627.4917+-13.6221 might be 1.0204x faster date-format-tofte 500.1413+-6.8873 492.5465+-4.7863 might be 1.0154x faster date-format-xparb 657.0205+-2.5252 653.5280+-3.7157 hash-map 151.1997+-1.0504 149.0120+-1.4363 might be 1.0147x faster math-cordic 475.0708+-1.4689 ? 480.3130+-15.2602 ? might be 1.0110x slower math-partial-sums 460.3826+-1.7658 457.7976+-10.3462 math-spectral-norm 546.4360+-2.1050 546.4219+-1.3553 string-base64 349.1503+-5.0129 ? 351.6608+-11.0910 ? string-fasta 361.1235+-1.0005 ? 363.8851+-3.8400 ? string-tagcloud 174.9200+-2.7001 ? 175.9580+-3.8409 ? <geometric> 383.3689+-1.2943 382.0263+-2.6859 might be 1.0035x faster TipOfTree PropTypeInference V8Spider: crypto 48.5835+-2.0303 47.0136+-0.8406 might be 1.0334x faster deltablue 89.0227+-5.2123 ^ 78.6388+-2.1744 ^ definitely 1.1320x faster earley-boyer 40.8271+-1.4930 ? 42.6728+-1.9986 ? might be 1.0452x slower raytrace 32.2310+-1.2260 ? 32.3558+-2.6326 ? regexp 63.6097+-2.7093 62.5983+-1.9897 might be 1.0162x faster richards 63.0675+-1.7312 ^ 53.1778+-1.0904 ^ definitely 1.1860x faster splay 33.5918+-1.7520 ? 35.6288+-1.3411 ? might be 1.0606x slower <geometric> 49.8383+-0.8573 48.1899+-1.2272 might be 1.0342x faster TipOfTree PropTypeInference Octane: encrypt 0.16956+-0.00120 ^ 0.16388+-0.00210 ^ definitely 1.0346x faster decrypt 3.02277+-0.01049 ^ 2.89974+-0.01705 ^ definitely 1.0424x faster deltablue x2 0.16029+-0.00564 0.14390+-0.01596 might be 1.1139x faster earley 0.30094+-0.00498 ? 0.30431+-0.00306 ? might be 1.0112x slower boyer 4.31720+-0.08120 ? 4.62621+-0.72195 ? might be 1.0716x slower navier-stokes x2 4.81361+-0.03433 4.80543+-0.02804 raytrace x2 0.89267+-0.00633 ^ 0.85912+-0.00810 ^ definitely 1.0391x faster richards x2 0.10694+-0.00129 ^ 0.08817+-0.00053 ^ definitely 1.2129x faster splay x2 0.32715+-0.00327 ? 0.32947+-0.00407 ? regexp x2 25.07377+-0.40042 24.77031+-0.19539 might be 1.0123x faster pdfjs x2 37.08916+-0.55000 36.33195+-0.24799 might be 1.0208x faster mandreel x2 42.78122+-0.80838 42.12141+-0.35107 might be 1.0157x faster gbemu x2 32.38523+-0.11773 ^ 31.13536+-0.54316 ^ definitely 1.0401x faster closure 0.57394+-0.00971 ? 0.57419+-0.00362 ? jquery 7.09461+-0.03367 ! 7.26501+-0.05984 ! definitely 1.0240x slower box2d x2 10.07767+-0.11998 ^ 9.05855+-0.06708 ^ definitely 1.1125x faster zlib x2 380.47413+-13.08656 ? 385.03022+-10.23500 ? might be 1.0120x slower typescript x2 632.98865+-6.10096 ? 646.79846+-8.86919 ? might be 1.0218x slower <geometric> 5.48956+-0.02837 ^ 5.31410+-0.05270 ^ definitely 1.0330x faster TipOfTree PropTypeInference Kraken: ai-astar 219.049+-1.552 ^ 126.233+-2.397 ^ definitely 1.7353x faster audio-beat-detection 50.545+-0.246 50.129+-0.531 audio-dft 96.274+-3.235 95.157+-0.445 might be 1.0117x faster audio-fft 35.131+-0.434 ? 35.233+-1.092 ? audio-oscillator 60.786+-0.942 ^ 55.981+-1.139 ^ definitely 1.0858x faster imaging-darkroom 60.560+-0.176 ^ 59.760+-0.268 ^ definitely 1.0134x faster imaging-desaturate 48.457+-0.345 ? 48.818+-2.413 ? imaging-gaussian-blur 85.253+-0.780 85.098+-0.632 json-parse-financial 39.249+-1.673 38.007+-0.904 might be 1.0327x faster json-stringify-tinderbox 22.360+-0.562 ? 22.455+-1.023 ? stanford-crypto-aes 40.038+-1.131 ? 40.597+-1.497 ? might be 1.0140x slower stanford-crypto-ccm 36.181+-2.567 35.970+-1.110 stanford-crypto-pbkdf2 92.340+-0.794 ? 95.338+-3.119 ? might be 1.0325x slower stanford-crypto-sha256-iterative 36.227+-0.734 36.172+-0.763 <arithmetic> 65.889+-0.576 ^ 58.925+-0.242 ^ definitely 1.1182x faster TipOfTree PropTypeInference JSRegress: abc-forward-loop-equal 29.2559+-0.5414 29.1943+-0.8502 abc-postfix-backward-loop 29.2917+-0.9783 29.2782+-0.7544 abc-simple-backward-loop 29.0842+-0.5607 ? 29.3294+-0.4276 ? abc-simple-forward-loop 28.9221+-1.0819 ? 29.1674+-0.7069 ? abc-skippy-loop 21.1955+-0.8817 20.9233+-0.4589 might be 1.0130x faster abs-boolean 2.5147+-0.1280 2.4414+-0.1156 might be 1.0300x faster adapt-to-double-divide 16.2664+-0.3687 ? 16.6285+-0.6643 ? might be 1.0223x slower aliased-arguments-getbyval 1.1921+-0.1033 ? 1.3047+-0.3015 ? might be 1.0944x slower allocate-big-object 2.8940+-0.5850 2.5646+-0.2428 might be 1.1284x faster arguments-named-and-reflective 11.0823+-1.4811 10.6854+-0.2848 might be 1.0371x faster arguments-out-of-bounds 9.1888+-0.5045 ? 9.5485+-0.8752 ? might be 1.0391x slower arguments-strict-mode 9.7758+-0.4480 9.5412+-0.1857 might be 1.0246x faster arguments 8.4133+-0.2543 8.3153+-0.1561 might be 1.0118x faster arity-mismatch-inlining 0.8627+-0.0393 ? 0.8630+-0.0731 ? array-access-polymorphic-structure 5.8049+-0.2512 ! 7.3947+-0.8358 ! definitely 1.2739x slower array-nonarray-polymorhpic-access 23.5650+-0.9905 ? 23.6554+-1.1436 ? array-prototype-every 74.6295+-1.0537 ? 75.6181+-1.0107 ? might be 1.0132x slower array-prototype-forEach 75.6641+-2.0051 74.1990+-1.2999 might be 1.0197x faster array-prototype-map 80.1168+-1.1450 ? 80.8711+-0.9698 ? array-prototype-reduce 70.3433+-0.8294 ? 74.7786+-4.4773 ? might be 1.0631x slower array-prototype-reduceRight 71.1724+-1.9850 ? 74.3874+-4.1505 ? might be 1.0452x slower array-prototype-some 76.2527+-1.5043 ? 77.0946+-2.9468 ? might be 1.0110x slower array-splice-contiguous 20.5249+-1.0988 ? 21.8825+-1.3153 ? might be 1.0661x slower array-with-double-add 3.3869+-0.0803 3.3674+-0.0418 array-with-double-increment 3.0929+-0.0882 3.0852+-0.1588 array-with-double-mul-add 4.1794+-0.1136 ? 4.2128+-0.1387 ? array-with-double-sum 3.2036+-0.0660 3.1860+-0.0764 array-with-int32-add-sub 5.6458+-0.0993 ? 5.6866+-0.1320 ? array-with-int32-or-double-sum 3.2581+-0.0858 3.2498+-0.0829 ArrayBuffer-DataView-alloc-large-long-lived 25.4689+-0.3942 ? 26.2404+-1.0540 ? might be 1.0303x slower ArrayBuffer-DataView-alloc-long-lived 11.7254+-0.3666 ? 11.9897+-0.2895 ? might be 1.0225x slower ArrayBuffer-Int32Array-byteOffset 3.5431+-0.1337 ? 3.8325+-0.4277 ? might be 1.0817x slower ArrayBuffer-Int8Array-alloc-large-long-lived 26.0218+-1.6645 ? 26.8368+-1.4875 ? might be 1.0313x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 19.9666+-1.8102 19.1589+-0.4815 might be 1.0422x faster ArrayBuffer-Int8Array-alloc-long-lived 11.9658+-1.8782 11.3262+-0.4678 might be 1.0565x faster ArrayBuffer-Int8Array-alloc 9.4832+-0.4530 ? 9.6635+-0.5912 ? might be 1.0190x slower arrowfunction-call 10.8002+-0.6699 10.5736+-0.2023 might be 1.0214x faster asmjs_bool_bug 7.3823+-0.0788 ? 7.3825+-0.0671 ? assign-custom-setter-polymorphic 2.5249+-0.3004 2.4854+-0.0909 might be 1.0159x faster assign-custom-setter 3.2089+-0.0251 ? 3.4916+-0.4527 ? might be 1.0881x slower basic-set 7.6571+-0.4739 7.5033+-0.4606 might be 1.0205x faster big-int-mul 3.5081+-0.0712 ? 3.5909+-0.3403 ? might be 1.0236x slower boolean-test 3.0339+-0.0730 ? 3.0942+-0.1166 ? might be 1.0199x slower branch-fold 3.7389+-0.1589 3.5923+-0.0552 might be 1.0408x faster branch-on-string-as-boolean 16.8508+-0.5096 ? 16.9028+-0.8097 ? by-val-generic 2.8080+-0.7179 2.4610+-0.1043 might be 1.1410x faster call-spread-apply 28.0340+-2.9220 27.2805+-2.0488 might be 1.0276x faster call-spread-call 21.3276+-0.5595 21.2303+-0.8187 captured-assignments 0.4249+-0.0288 0.4111+-0.0228 might be 1.0338x faster cast-int-to-double 5.1431+-0.2211 ? 5.2274+-0.1357 ? might be 1.0164x slower cell-argument 6.4918+-0.4377 5.8654+-0.3900 might be 1.1068x faster cfg-simplify 2.8495+-0.0615 ? 2.9009+-0.1126 ? might be 1.0180x slower chain-getter-access 8.3563+-0.2787 ? 8.4617+-0.2886 ? might be 1.0126x slower cmpeq-obj-to-obj-other 13.0609+-0.9812 11.9322+-1.1826 might be 1.0946x faster constant-test 4.8277+-0.0772 4.8188+-0.0771 create-lots-of-functions 9.6580+-0.6179 9.5850+-0.5294 cse-new-array-buffer 2.4917+-0.3055 2.2670+-0.1727 might be 1.0991x faster cse-new-array 2.3025+-0.0822 ? 2.3456+-0.1759 ? might be 1.0187x slower DataView-custom-properties 30.6132+-0.9256 ? 31.2958+-1.5092 ? might be 1.0223x slower delay-tear-off-arguments-strictmode 12.5073+-0.3747 12.1667+-0.3970 might be 1.0280x faster deltablue-varargs 177.8333+-6.8327 169.1558+-10.3932 might be 1.0513x faster destructuring-arguments 164.5846+-4.3356 ? 169.4613+-18.8243 ? might be 1.0296x slower destructuring-parameters-overridden-by-function 0.4498+-0.0121 0.4494+-0.0139 destructuring-swap 4.7052+-0.1062 ? 4.7530+-0.0581 ? might be 1.0102x slower direct-arguments-getbyval 1.2299+-0.0906 ? 1.2790+-0.2415 ? might be 1.0399x slower div-boolean-double 5.2735+-0.0943 ? 5.3004+-0.0205 ? div-boolean 8.0701+-0.1059 8.0368+-0.0772 double-get-by-val-out-of-bounds 4.8618+-0.9347 4.5375+-0.1998 might be 1.0715x faster double-pollution-getbyval 8.7028+-0.1014 8.6739+-0.0970 double-pollution-putbyoffset 3.7285+-0.2148 3.6625+-0.1704 might be 1.0180x faster double-real-use 23.9666+-0.4957 ? 24.9035+-1.6080 ? might be 1.0391x slower double-to-int32-typed-array-no-inline 2.5832+-0.6154 2.2244+-0.1175 might be 1.1613x faster double-to-int32-typed-array 2.0058+-0.0260 ? 2.0152+-0.0458 ? double-to-uint32-typed-array-no-inline 2.2391+-0.0671 ? 2.3342+-0.1788 ? might be 1.0425x slower double-to-uint32-typed-array 2.0764+-0.0350 ? 2.1123+-0.0824 ? might be 1.0173x slower elidable-new-object-dag 33.9972+-0.7653 33.8401+-0.5661 elidable-new-object-roflcopter 32.9342+-1.2311 ? 33.0465+-0.5731 ? elidable-new-object-then-call 31.6366+-1.0875 ? 32.0599+-0.9868 ? might be 1.0134x slower elidable-new-object-tree 37.6227+-1.3809 37.4583+-0.4553 empty-string-plus-int 4.8105+-0.0794 ^ 4.6560+-0.0400 ^ definitely 1.0332x faster emscripten-cube2hash 27.2149+-2.7825 ? 27.7684+-2.3248 ? might be 1.0203x slower exit-length-on-plain-object 12.7218+-0.9389 ! 15.6928+-0.8747 ! definitely 1.2335x slower external-arguments-getbyval 1.3810+-0.1708 1.2740+-0.1061 might be 1.0840x faster external-arguments-putbyval 2.2612+-0.3810 2.1069+-0.0661 might be 1.0733x faster fixed-typed-array-storage-var-index 1.2815+-0.2721 ? 1.3269+-0.2734 ? might be 1.0354x slower fixed-typed-array-storage 0.8901+-0.0153 ? 1.2246+-0.5467 ? might be 1.3758x slower Float32Array-matrix-mult 3.9270+-0.2675 ? 4.0329+-0.1370 ? might be 1.0270x slower Float32Array-to-Float64Array-set 46.4519+-0.5630 ? 47.1915+-1.1639 ? might be 1.0159x slower Float64Array-alloc-long-lived 59.5718+-2.2766 59.4033+-1.9387 Float64Array-to-Int16Array-set 57.0536+-1.6087 56.3014+-1.3008 might be 1.0134x faster fold-double-to-int 12.1692+-0.3837 12.1383+-0.1429 fold-get-by-id-to-multi-get-by-offset-rare-int 11.5530+-1.2079 11.0991+-1.2505 might be 1.0409x faster fold-get-by-id-to-multi-get-by-offset 10.5317+-0.9060 ? 10.9688+-1.8369 ? might be 1.0415x slower fold-multi-get-by-offset-to-get-by-offset 8.8232+-1.7974 8.4367+-1.2687 might be 1.0458x faster fold-multi-get-by-offset-to-poly-get-by-offset 8.6947+-1.0303 8.5572+-1.5692 might be 1.0161x faster fold-multi-put-by-offset-to-poly-put-by-offset 9.6204+-1.9938 9.3383+-0.9781 might be 1.0302x faster fold-multi-put-by-offset-to-put-by-offset 6.1820+-1.7293 ? 9.6665+-2.1067 ? might be 1.5637x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.0935+-0.1918 ? 9.5677+-0.8311 ? might be 1.0521x slower fold-put-by-id-to-multi-put-by-offset 10.7448+-0.7409 ? 11.6541+-1.5525 ? might be 1.0846x slower fold-put-by-val-with-string-to-multi-put-by-offset 11.8110+-1.7083 10.6590+-0.4639 might be 1.1081x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 11.0337+-1.3685 10.4695+-1.3045 might be 1.0539x faster fold-put-structure 4.7858+-1.0782 ! 9.7280+-2.5686 ! definitely 2.0327x slower for-of-iterate-array-entries 11.1143+-0.5986 10.7583+-0.0636 might be 1.0331x faster for-of-iterate-array-keys 3.2562+-0.4577 ? 3.4440+-0.1822 ? might be 1.0577x slower for-of-iterate-array-values 3.0048+-0.1990 ! 3.3866+-0.1128 ! definitely 1.1270x slower fround 17.3387+-0.2861 ? 18.0580+-1.0879 ? might be 1.0415x slower ftl-library-inlining-dataview 55.9319+-0.9706 ? 56.1827+-0.8821 ? ftl-library-inlining 98.6658+-1.0069 ^ 95.2107+-0.3298 ^ definitely 1.0363x faster function-call 10.6126+-0.0992 ? 10.6792+-0.1939 ? function-dot-apply 2.0356+-0.0676 ? 2.1530+-0.1723 ? might be 1.0577x slower function-test 2.7437+-0.1682 2.7321+-0.1554 function-with-eval 92.5800+-0.8755 ? 93.3281+-1.4975 ? gcse-poly-get-less-obvious 20.4156+-0.3247 ? 20.8866+-0.7728 ? might be 1.0231x slower gcse-poly-get 26.5012+-2.2962 23.4316+-3.2162 might be 1.1310x faster gcse 3.8020+-0.0425 ^ 3.4362+-0.0913 ^ definitely 1.1065x faster get-by-id-bimorphic-check-structure-elimination-simple 2.5957+-0.0710 2.5888+-0.0491 get-by-id-bimorphic-check-structure-elimination 5.7639+-0.2909 ^ 4.6324+-0.0777 ^ definitely 1.2443x faster get-by-id-chain-from-try-block 2.4410+-0.0962 2.4122+-0.0709 might be 1.0119x faster get-by-id-check-structure-elimination 4.3538+-0.0799 ^ 3.9196+-0.1287 ^ definitely 1.1108x faster get-by-id-proto-or-self 15.6344+-0.4784 14.9376+-0.2563 might be 1.0466x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.8895+-0.0228 ? 3.2565+-0.6422 ? might be 1.1270x slower get-by-id-self-or-proto 15.4174+-0.5846 ? 15.9132+-1.1442 ? might be 1.0322x slower get-by-val-out-of-bounds 4.3680+-0.2217 4.2543+-0.0847 might be 1.0267x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.8315+-0.0511 2.7559+-0.0672 might be 1.0274x faster get-by-val-with-string-bimorphic-check-structure-elimination 6.1059+-0.3255 5.7941+-0.0383 might be 1.0538x faster get-by-val-with-string-chain-from-try-block 2.4731+-0.1100 2.3979+-0.0247 might be 1.0314x faster get-by-val-with-string-check-structure-elimination 5.2080+-0.1137 5.1986+-0.2213 get-by-val-with-string-proto-or-self 16.3051+-0.9881 16.2748+-0.9150 get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.3452+-0.0403 ^ 3.0539+-0.0664 ^ definitely 1.0954x faster get-by-val-with-string-self-or-proto 15.9242+-0.9263 ? 16.2294+-1.7299 ? might be 1.0192x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0992+-0.0190 ? 3.1392+-0.1002 ? might be 1.0129x slower get-by-val-with-symbol-bimorphic-check-structure-elimination 12.3888+-0.1304 12.2392+-0.1030 might be 1.0122x faster get-by-val-with-symbol-chain-from-try-block 2.5190+-0.2944 2.3950+-0.0620 might be 1.0517x faster get-by-val-with-symbol-check-structure-elimination 11.6271+-0.5589 11.3650+-0.1759 might be 1.0231x faster get-by-val-with-symbol-proto-or-self 15.2840+-0.6269 ? 15.8708+-1.2282 ? might be 1.0384x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 3.7252+-0.0699 ? 3.7436+-0.0778 ? get-by-val-with-symbol-self-or-proto 16.0485+-1.2303 15.5035+-1.1314 might be 1.0352x faster get_callee_monomorphic 2.4707+-0.1720 2.3127+-0.0949 might be 1.0683x faster get_callee_polymorphic 3.3920+-0.1897 ? 3.4490+-0.1121 ? might be 1.0168x slower getter-no-activation 4.8055+-0.2289 4.7218+-0.0900 might be 1.0177x faster getter-prototype 8.8928+-0.1539 ^ 7.8325+-0.0895 ^ definitely 1.1354x faster getter-richards 122.2996+-4.7402 112.2590+-12.0441 might be 1.0894x faster getter 5.7893+-0.9336 ? 6.2678+-0.6372 ? might be 1.0826x slower global-object-access-with-mutating-structure 5.7130+-0.3589 5.6577+-0.1565 global-var-const-infer-fire-from-opt 0.7432+-0.0943 0.7409+-0.0620 global-var-const-infer 0.6775+-0.0661 ? 0.7139+-0.1114 ? might be 1.0536x slower hard-overflow-check-equal 32.5212+-0.6809 ^ 27.0288+-1.0493 ^ definitely 1.2032x faster hard-overflow-check 33.5828+-1.6557 ^ 26.6927+-2.4828 ^ definitely 1.2581x faster HashMap-put-get-iterate-keys 26.2586+-2.2311 25.8042+-1.5101 might be 1.0176x faster HashMap-put-get-iterate 28.2961+-1.7193 27.5394+-2.2205 might be 1.0275x faster HashMap-string-put-get-iterate 25.0199+-1.4472 24.9035+-1.6663 hoist-make-rope 8.9907+-0.8762 ? 8.9948+-1.7127 ? hoist-poly-check-structure-effectful-loop 4.2053+-0.0732 ^ 3.5889+-0.0510 ^ definitely 1.1718x faster hoist-poly-check-structure 3.3177+-0.0522 3.2021+-0.0790 might be 1.0361x faster imul-double-only 7.5194+-0.7492 7.3422+-0.4815 might be 1.0241x faster imul-int-only 8.9041+-1.4102 8.3981+-0.5832 might be 1.0603x faster imul-mixed 6.8191+-0.3905 ? 6.8403+-0.2804 ? in-four-cases 16.9794+-0.5416 ? 17.4189+-0.8348 ? might be 1.0259x slower in-one-case-false 10.0020+-0.6094 ? 10.0507+-0.6904 ? in-one-case-true 10.0309+-0.9024 9.4259+-0.3791 might be 1.0642x faster in-two-cases 9.8362+-0.7490 9.5291+-0.1720 might be 1.0322x faster indexed-properties-in-objects 2.7590+-0.0975 2.7463+-0.0526 infer-closure-const-then-mov-no-inline 3.5654+-0.0445 ? 3.5659+-0.1047 ? infer-closure-const-then-mov 18.4739+-0.8179 18.2969+-0.6610 infer-closure-const-then-put-to-scope-no-inline 11.0356+-0.5375 11.0333+-0.5446 infer-closure-const-then-put-to-scope 23.5270+-1.0831 22.6763+-0.3089 might be 1.0375x faster infer-closure-const-then-reenter-no-inline 45.0827+-1.0119 44.8099+-0.9203 infer-closure-const-then-reenter 22.8745+-0.9968 22.7742+-0.5190 infer-constant-global-property 3.4010+-0.0572 3.3731+-0.0418 infer-constant-property 2.6145+-0.0820 ? 2.6703+-0.0841 ? might be 1.0214x slower infer-one-time-closure-ten-vars 7.7696+-0.2172 7.7333+-0.3244 infer-one-time-closure-two-vars 7.3708+-0.1531 ? 7.4640+-0.2837 ? might be 1.0126x slower infer-one-time-closure 7.3285+-0.4484 7.2106+-0.0923 might be 1.0164x faster infer-one-time-deep-closure 11.0614+-1.4578 10.7964+-0.3081 might be 1.0245x faster inline-arguments-access 3.6347+-0.1125 ? 3.8083+-0.2458 ? might be 1.0478x slower inline-arguments-aliased-access 3.8827+-0.3560 3.6642+-0.1387 might be 1.0596x faster inline-arguments-local-escape 3.8428+-0.1171 ? 4.0070+-0.5886 ? might be 1.0427x slower inline-get-scoped-var 4.6508+-0.1804 ? 4.7192+-0.2606 ? might be 1.0147x slower inlined-put-by-id-transition 9.0524+-0.4857 ? 9.6212+-0.8371 ? might be 1.0628x slower inlined-put-by-val-with-string-transition 41.1200+-0.7952 ? 41.7339+-1.5971 ? might be 1.0149x slower inlined-put-by-val-with-symbol-transition 41.4701+-1.7365 41.2740+-1.4864 int-or-other-abs-then-get-by-val 4.4325+-0.0518 ? 4.4717+-0.0816 ? int-or-other-abs-zero-then-get-by-val 15.8817+-0.5589 ? 16.0114+-1.5829 ? int-or-other-add-then-get-by-val 3.9924+-0.0374 ? 4.0691+-0.1508 ? might be 1.0192x slower int-or-other-add 5.0435+-0.3923 ? 5.1272+-0.3428 ? might be 1.0166x slower int-or-other-div-then-get-by-val 3.9332+-0.4777 3.6976+-0.0567 might be 1.0637x faster int-or-other-max-then-get-by-val 4.0122+-0.2783 3.9182+-0.2664 might be 1.0240x faster int-or-other-min-then-get-by-val 3.8909+-0.2247 3.7238+-0.0598 might be 1.0449x faster int-or-other-mod-then-get-by-val 3.4381+-0.0452 ? 3.6979+-0.6451 ? might be 1.0756x slower int-or-other-mul-then-get-by-val 3.5179+-0.0879 ? 3.7096+-0.2914 ? might be 1.0545x slower int-or-other-neg-then-get-by-val 4.0693+-0.2634 3.9995+-0.0656 might be 1.0175x faster int-or-other-neg-zero-then-get-by-val 15.6581+-0.2916 15.4326+-0.5063 might be 1.0146x faster int-or-other-sub-then-get-by-val 3.9843+-0.0486 ? 4.2035+-0.3213 ? might be 1.0550x slower int-or-other-sub 3.5651+-0.1801 3.4811+-0.1223 might be 1.0241x faster int-overflow-local 3.9746+-0.0804 ? 4.1954+-0.3200 ? might be 1.0556x slower Int16Array-alloc-long-lived 42.8050+-1.4025 ? 43.9364+-1.1584 ? might be 1.0264x slower Int16Array-bubble-sort-with-byteLength 17.1491+-0.3702 ? 17.6703+-1.2370 ? might be 1.0304x slower Int16Array-bubble-sort 16.9415+-0.6676 16.4939+-0.3557 might be 1.0271x faster Int16Array-load-int-mul 1.4108+-0.0191 ? 1.4323+-0.0687 ? might be 1.0153x slower Int16Array-to-Int32Array-set 42.9880+-1.1997 ? 44.5687+-1.0891 ? might be 1.0368x slower Int32Array-alloc-large 12.4425+-1.1345 ? 12.6727+-0.2117 ? might be 1.0185x slower Int32Array-alloc-long-lived 48.7629+-2.1034 48.2029+-1.6338 might be 1.0116x faster Int32Array-alloc 3.0721+-0.2887 2.7614+-0.1544 might be 1.1125x faster Int32Array-Int8Array-view-alloc 6.1337+-0.4953 ? 6.8896+-1.9801 ? might be 1.1232x slower int52-spill 4.5082+-0.0449 ? 5.0986+-0.5860 ? might be 1.1310x slower Int8Array-alloc-long-lived 37.8144+-0.9387 ? 38.5215+-0.8741 ? might be 1.0187x slower Int8Array-load-with-byteLength 3.3598+-0.0770 3.3457+-0.0666 Int8Array-load 3.3770+-0.0643 ? 3.4445+-0.1824 ? might be 1.0200x slower integer-divide 10.6740+-0.8913 10.4662+-0.4130 might be 1.0199x faster integer-modulo 1.6125+-0.0601 1.6066+-0.0550 is-boolean-fold-tricky 3.7686+-0.0554 ? 3.8389+-0.1863 ? might be 1.0186x slower is-boolean-fold 2.6112+-0.0588 2.6110+-0.0196 is-function-fold-tricky-internal-function 9.7222+-0.5144 9.4925+-0.1954 might be 1.0242x faster is-function-fold-tricky 4.0018+-0.0664 ? 4.1520+-0.3898 ? might be 1.0375x slower is-function-fold 2.6331+-0.0461 ? 2.6611+-0.0716 ? might be 1.0106x slower is-number-fold-tricky 3.9784+-0.1245 3.9709+-0.1524 is-number-fold 2.7143+-0.2321 2.6601+-0.1040 might be 1.0204x faster is-object-or-null-fold-functions 2.6341+-0.0445 ? 2.6759+-0.0884 ? might be 1.0159x slower is-object-or-null-fold-less-tricky 4.0076+-0.0810 ? 4.0934+-0.2020 ? might be 1.0214x slower is-object-or-null-fold-tricky 4.8174+-0.1619 ? 4.8824+-0.2294 ? might be 1.0135x slower is-object-or-null-fold 2.7059+-0.0852 2.6928+-0.0990 is-object-or-null-trickier-function 4.0779+-0.1171 4.0349+-0.0420 might be 1.0107x faster is-object-or-null-trickier-internal-function 10.1472+-0.1714 9.9172+-0.3326 might be 1.0232x faster is-object-or-null-tricky-function 4.1335+-0.1985 4.1117+-0.2087 is-object-or-null-tricky-internal-function 7.3047+-0.0942 ? 7.7479+-0.4466 ? might be 1.0607x slower is-string-fold-tricky 3.9859+-0.0407 3.9516+-0.1861 is-string-fold 2.6926+-0.2511 2.6252+-0.0547 might be 1.0257x faster is-undefined-fold-tricky 3.3969+-0.2473 3.2858+-0.0375 might be 1.0338x faster is-undefined-fold 2.6242+-0.0455 ? 2.6334+-0.0509 ? JSONP-negative-0 0.2548+-0.0342 0.2472+-0.0071 might be 1.0308x faster large-int-captured 4.1525+-0.1985 4.1058+-0.1180 might be 1.0114x faster large-int-neg 13.8376+-0.3785 ? 13.8585+-0.2518 ? large-int 13.1132+-0.2649 13.0769+-0.3449 load-varargs-elimination 20.3203+-0.5074 ? 20.4447+-0.4997 ? logical-not-weird-types 3.1070+-0.1549 ? 3.2371+-0.3767 ? might be 1.0419x slower logical-not 4.4531+-0.1698 ? 4.4636+-0.1737 ? lots-of-fields 8.7481+-0.3075 ! 9.9758+-0.8970 ! definitely 1.1403x slower make-indexed-storage 2.7694+-0.1847 ? 3.0671+-0.3833 ? might be 1.1075x slower make-rope-cse 3.7627+-0.4665 ? 3.8555+-0.2591 ? might be 1.0247x slower marsaglia-larger-ints 32.2712+-1.2378 ? 32.6901+-1.4620 ? might be 1.0130x slower marsaglia-osr-entry 22.1102+-1.7625 21.3010+-0.4922 might be 1.0380x faster math-with-out-of-bounds-array-values 21.6844+-1.0511 21.5551+-0.5822 max-boolean 2.5820+-0.0699 ? 2.6283+-0.0250 ? might be 1.0179x slower method-on-number 15.4005+-0.2286 ? 15.6253+-0.3632 ? might be 1.0146x slower min-boolean 2.6105+-0.0401 ? 2.9282+-0.6871 ? might be 1.1217x slower minus-boolean-double 3.0334+-0.0238 ? 3.0553+-0.0603 ? minus-boolean 2.3148+-0.0159 2.2912+-0.0482 might be 1.0103x faster misc-strict-eq 28.8842+-1.3300 ? 29.4826+-2.1874 ? might be 1.0207x slower mod-boolean-double 11.0057+-0.0855 ? 11.4257+-0.4965 ? might be 1.0382x slower mod-boolean 8.3228+-0.2264 8.2702+-0.1365 mul-boolean-double 3.6002+-0.0407 3.5934+-0.0404 mul-boolean 2.8011+-0.0598 2.7946+-0.0464 neg-boolean 3.1781+-0.1603 ? 3.1788+-0.3223 ? negative-zero-divide 0.3497+-0.0217 0.3322+-0.0071 might be 1.0527x faster negative-zero-modulo 0.3309+-0.0302 0.3300+-0.0151 negative-zero-negate 0.3402+-0.0300 0.3374+-0.0284 nested-function-parsing 44.7537+-0.3487 ? 47.6743+-7.9140 ? might be 1.0653x slower new-array-buffer-dead 88.0920+-1.2346 87.0777+-0.2166 might be 1.0116x faster new-array-buffer-push 6.3342+-0.3217 ? 6.3610+-0.3956 ? new-array-dead 15.2585+-0.9004 15.1410+-1.2405 new-array-push 3.7107+-0.6123 3.5001+-0.1058 might be 1.0602x faster no-inline-constructor 31.4322+-0.9602 30.3726+-0.3107 might be 1.0349x faster number-test 3.0252+-0.1037 3.0068+-0.0414 object-closure-call 5.1714+-0.0697 ^ 4.9052+-0.0421 ^ definitely 1.0543x faster object-get-own-property-symbols-on-large-array 4.2858+-0.2562 4.1847+-0.1836 might be 1.0241x faster object-test 2.6774+-0.0381 ? 2.7833+-0.1163 ? might be 1.0396x slower obvious-sink-pathology-taken 98.5884+-1.7220 ? 98.6610+-0.7807 ? obvious-sink-pathology 93.9097+-0.9381 ? 94.4691+-0.7443 ? obviously-elidable-new-object 28.0309+-0.1980 ? 28.6387+-1.0657 ? might be 1.0217x slower plus-boolean-arith 2.5700+-0.5385 2.5673+-0.4820 plus-boolean-double 3.1879+-0.1175 3.1248+-0.1022 might be 1.0202x faster plus-boolean 2.6839+-0.3839 2.5038+-0.0581 might be 1.0719x faster poly-chain-access-different-prototypes-simple 3.2185+-0.0345 ? 3.2238+-0.0552 ? poly-chain-access-different-prototypes 3.4225+-0.2746 3.3510+-0.2151 might be 1.0214x faster poly-chain-access-simpler 3.2130+-0.1118 ? 3.4087+-0.2633 ? might be 1.0609x slower poly-chain-access 3.2137+-0.0328 ? 3.2773+-0.1058 ? might be 1.0198x slower poly-stricteq 54.1142+-11.0091 49.2927+-0.4620 might be 1.0978x faster polymorphic-array-call 1.6573+-0.2991 1.4249+-0.3520 might be 1.1631x faster polymorphic-get-by-id 2.9280+-0.1660 2.8101+-0.0568 might be 1.0420x faster polymorphic-put-by-id 27.7259+-1.2687 ? 28.4172+-0.6048 ? might be 1.0249x slower polymorphic-put-by-val-with-string 29.0875+-2.2989 28.2561+-1.8394 might be 1.0294x faster polymorphic-put-by-val-with-symbol 27.9021+-1.0384 ? 28.5615+-1.6244 ? might be 1.0236x slower polymorphic-structure 13.0709+-0.2294 ^ 12.4043+-0.0402 ^ definitely 1.0537x faster polyvariant-monomorphic-get-by-id 6.7465+-1.2231 ? 7.6111+-0.9520 ? might be 1.1281x slower proto-getter-access 8.6458+-0.5719 8.3782+-0.2081 might be 1.0319x faster prototype-access-with-mutating-prototype 5.3808+-0.0994 ? 5.4672+-0.3300 ? might be 1.0161x slower put-by-id-replace-and-transition 8.1746+-0.6979 7.8530+-0.7722 might be 1.0409x faster put-by-id-slightly-polymorphic 2.7203+-0.2972 2.7012+-0.0619 put-by-id 10.0052+-0.7015 9.7212+-0.3880 might be 1.0292x faster put-by-val-direct 0.3543+-0.0189 0.3495+-0.0382 might be 1.0137x faster put-by-val-large-index-blank-indexing-type 5.2645+-0.2655 5.1637+-0.1591 might be 1.0195x faster put-by-val-machine-int 2.5867+-0.0587 ? 2.6604+-0.3102 ? might be 1.0285x slower put-by-val-with-string-replace-and-transition 10.4016+-0.4380 10.2722+-0.3960 might be 1.0126x faster put-by-val-with-string-slightly-polymorphic 2.9104+-0.0489 2.8376+-0.0284 might be 1.0256x faster put-by-val-with-string 10.4681+-0.6371 10.2043+-0.2468 might be 1.0259x faster put-by-val-with-symbol-replace-and-transition 12.0392+-1.0014 11.8336+-0.4149 might be 1.0174x faster put-by-val-with-symbol-slightly-polymorphic 3.2569+-0.2508 3.1962+-0.0846 might be 1.0190x faster put-by-val-with-symbol 10.3306+-0.5818 ? 10.9072+-0.9625 ? might be 1.0558x slower rare-osr-exit-on-local 13.4838+-0.3143 ? 13.6044+-0.1004 ? raytrace-with-empty-try-catch 5.2295+-0.3844 ? 5.2699+-0.4771 ? raytrace-with-try-catch 9.8995+-0.3166 ? 10.0918+-0.5439 ? might be 1.0194x slower register-pressure-from-osr 17.5092+-0.5563 16.8988+-1.3316 might be 1.0361x faster repeat-multi-get-by-offset 21.7959+-0.3320 ^ 20.5215+-0.2055 ^ definitely 1.0621x faster richards-empty-try-catch 80.4956+-2.7170 ^ 75.0305+-1.2187 ^ definitely 1.0728x faster richards-try-catch 238.1567+-2.3966 ? 281.5015+-102.7455 ? might be 1.1820x slower setter-prototype 7.6861+-0.0883 ? 7.8169+-0.3861 ? might be 1.0170x slower setter 6.3018+-1.0505 5.3936+-0.7868 might be 1.1684x faster simple-activation-demo 24.1591+-0.5253 ? 24.5610+-0.4787 ? might be 1.0166x slower simple-getter-access 10.7656+-0.1738 10.6199+-0.2206 might be 1.0137x faster simple-poly-call-nested 8.6737+-0.7339 8.5588+-0.7619 might be 1.0134x faster simple-poly-call 1.2817+-0.0586 ? 1.3352+-0.1046 ? might be 1.0417x slower sin-boolean 19.1953+-1.8377 ? 21.6408+-2.3545 ? might be 1.1274x slower singleton-scope 56.3237+-0.6195 56.1107+-1.0060 sink-function 9.9395+-0.3538 ? 10.3332+-0.7959 ? might be 1.0396x slower sink-huge-activation 16.3710+-0.5455 ? 17.3427+-0.5678 ? might be 1.0594x slower sinkable-new-object-dag 55.0791+-1.0536 ? 55.3174+-1.9154 ? sinkable-new-object-taken 44.9294+-0.8349 44.8969+-1.3799 sinkable-new-object 29.7616+-0.7979 ? 30.0410+-0.9881 ? slow-array-profile-convergence 2.6222+-0.4217 2.5402+-0.1375 might be 1.0323x faster slow-convergence 2.3660+-0.1463 2.2963+-0.0200 might be 1.0304x faster slow-ternaries 18.1591+-2.0277 17.3085+-0.5495 might be 1.0491x faster sorting-benchmark 16.6117+-0.1717 ? 16.9953+-0.7647 ? might be 1.0231x slower sparse-conditional 1.1291+-0.0194 ? 1.1597+-0.0628 ? might be 1.0271x slower splice-to-remove 12.1139+-0.4865 11.8872+-0.2664 might be 1.0191x faster string-char-code-at 13.2475+-0.7080 13.1129+-0.4481 might be 1.0103x faster string-concat-object 2.2237+-0.2179 2.1785+-0.0584 might be 1.0207x faster string-concat-pair-object 2.2999+-0.3856 2.1578+-0.1947 might be 1.0659x faster string-concat-pair-simple 9.6015+-0.5308 9.1500+-0.3475 might be 1.0493x faster string-concat-simple 9.6510+-0.6523 9.6064+-0.6254 string-cons-repeat 6.4468+-0.2753 ? 6.4529+-0.3588 ? string-cons-tower 6.7308+-0.3619 6.5052+-0.2129 might be 1.0347x faster string-equality 15.2827+-0.9493 15.0187+-0.3588 might be 1.0176x faster string-get-by-val-big-char 6.4831+-0.1447 6.4093+-0.0824 might be 1.0115x faster string-get-by-val-out-of-bounds-insane 3.1792+-0.1296 3.1156+-0.0982 might be 1.0204x faster string-get-by-val-out-of-bounds 3.9298+-0.1233 3.9070+-0.0604 string-get-by-val 2.9985+-0.4511 2.7920+-0.0397 might be 1.0739x faster string-hash 1.8282+-0.0408 1.8235+-0.0411 string-long-ident-equality 13.0981+-0.1966 13.0455+-0.2186 string-out-of-bounds 10.2070+-0.2828 9.8489+-0.2258 might be 1.0364x faster string-repeat-arith 26.5071+-1.7995 ? 26.7694+-1.2087 ? string-sub 54.0820+-1.7878 ? 54.2485+-1.0491 ? string-test 2.8761+-0.0830 ? 3.2080+-0.2992 ? might be 1.1154x slower string-var-equality 26.7916+-0.3642 ? 27.0715+-1.0954 ? might be 1.0104x slower structure-hoist-over-transitions 2.3475+-0.0634 ? 2.3582+-0.1085 ? substring-concat-weird 35.7413+-0.5952 ? 40.7201+-10.5762 ? might be 1.1393x slower substring-concat 39.9545+-1.0555 39.5170+-0.9721 might be 1.0111x faster substring 45.5553+-1.6892 44.8214+-1.3797 might be 1.0164x faster switch-char-constant 2.7635+-0.2676 2.7005+-0.0959 might be 1.0234x faster switch-char 6.2032+-0.6412 6.1126+-1.3381 might be 1.0148x faster switch-constant 8.6914+-0.5991 7.9536+-0.8459 might be 1.0928x faster switch-string-basic-big-var 14.4274+-0.4404 ? 14.4664+-0.3161 ? switch-string-basic-big 15.0580+-0.1261 14.7757+-0.2021 might be 1.0191x faster switch-string-basic-var 13.4624+-0.2941 13.4200+-0.4294 switch-string-basic 12.8307+-0.6787 12.4835+-0.3739 might be 1.0278x faster switch-string-big-length-tower-var 17.5719+-0.3273 ! 18.2921+-0.3311 ! definitely 1.0410x slower switch-string-length-tower-var 13.3907+-0.4744 13.0042+-0.1791 might be 1.0297x faster switch-string-length-tower 11.4096+-0.2833 11.2950+-0.1259 might be 1.0102x faster switch-string-short 11.3164+-0.1766 ? 11.4895+-0.3603 ? might be 1.0153x slower switch 11.0555+-0.8324 ? 11.1816+-0.7361 ? might be 1.0114x slower tear-off-arguments-simple 3.0653+-0.1760 ? 3.1147+-0.0880 ? might be 1.0161x slower tear-off-arguments 4.1008+-0.1576 4.0742+-0.1671 temporal-structure 11.7981+-0.2894 11.5581+-0.1590 might be 1.0208x faster to-int32-boolean 13.0162+-0.5467 12.3929+-0.1708 might be 1.0503x faster try-catch-get-by-val-cloned-arguments 10.0589+-1.0130 9.3782+-0.4393 might be 1.0726x faster try-catch-get-by-val-direct-arguments 2.3096+-0.3516 2.1451+-0.0946 might be 1.0767x faster try-catch-get-by-val-scoped-arguments 4.8257+-0.5401 4.7975+-0.1665 typed-array-get-set-by-val-profiling 26.7119+-0.9874 ? 27.2920+-0.8589 ? might be 1.0217x slower undefined-property-access 223.4028+-0.6433 ^ 216.8560+-1.5101 ^ definitely 1.0302x faster undefined-test 2.9779+-0.0749 ? 3.0611+-0.0497 ? might be 1.0279x slower unprofiled-licm 13.8807+-0.4931 ^ 9.3837+-0.2532 ^ definitely 1.4792x faster v8-raytrace-with-empty-try-catch 48.3561+-1.7011 ? 48.9113+-1.2492 ? might be 1.0115x slower v8-raytrace-with-try-catch 62.2459+-1.7889 61.5130+-0.9639 might be 1.0119x faster varargs-call 12.9253+-0.4836 ? 13.1195+-0.6122 ? might be 1.0150x slower varargs-construct-inline 22.1121+-1.0437 ? 22.1789+-1.2781 ? varargs-construct 20.4200+-0.5051 ? 20.5695+-1.1725 ? varargs-inline 8.6818+-0.1798 8.5725+-0.1014 might be 1.0128x faster varargs-strict-mode 9.5401+-0.1624 ? 9.8438+-0.5807 ? might be 1.0318x slower varargs 9.7897+-0.4717 9.6482+-0.0969 might be 1.0147x faster weird-inlining-const-prop 2.2670+-0.2643 2.1498+-0.0607 might be 1.0545x faster <geometric> 8.0046+-0.0151 7.9926+-0.0367 might be 1.0015x faster TipOfTree PropTypeInference AsmBench: bigfib.cpp 449.1815+-9.0890 ? 453.3105+-3.8975 ? cray.c 389.8056+-1.0021 ? 391.8986+-1.8362 ? dry.c 419.7795+-7.9248 417.3834+-10.8220 FloatMM.c 680.8737+-2.3023 ? 681.4316+-2.7946 ? gcc-loops.cpp 3416.9170+-25.5728 ? 3422.0966+-37.2072 ? n-body.c 822.4246+-5.1849 ? 824.8667+-10.2035 ? Quicksort.c 401.0483+-5.8818 ? 405.2496+-4.5788 ? might be 1.0105x slower stepanov_container.cpp 3462.0726+-26.9140 ? 3476.7963+-19.5554 ? Towers.c 233.2786+-1.3340 233.1695+-2.3573 <geometric> 709.4514+-1.0928 ? 711.6836+-2.7674 ? might be 1.0031x slower TipOfTree PropTypeInference CompressionBench: huffman 60.2751+-1.5927 ? 60.3528+-1.4476 ? arithmetic-simple 272.2301+-5.2355 270.3472+-0.9339 arithmetic-precise 242.4681+-1.2903 ? 245.0926+-1.4835 ? might be 1.0108x slower arithmetic-complex-precise 244.4243+-5.9900 242.8595+-1.2462 arithmetic-precise-order-0 281.7957+-4.5846 279.1423+-1.5067 arithmetic-precise-order-1 296.9806+-2.1834 ? 299.2129+-4.8285 ? arithmetic-precise-order-2 341.7417+-2.6325 ? 343.8968+-3.2327 ? arithmetic-simple-order-1 316.1276+-1.8707 ? 321.6702+-8.8431 ? might be 1.0175x slower arithmetic-simple-order-2 367.3960+-6.7300 ? 368.8064+-4.1606 ? lz-string 311.3584+-5.9814 ? 313.3135+-10.2423 ? <geometric> 251.3111+-1.7960 ? 252.0734+-0.9986 ? might be 1.0030x slower TipOfTree PropTypeInference Geomean of preferred means: <scaled-result> 50.9013+-0.1140 ^ 49.7302+-0.1931 ^ definitely 1.0236x faster
Filip Pizlo
Comment 48 2015-09-21 13:50:00 PDT
Ryosuke Niwa
Comment 49 2015-09-21 19:25:12 PDT
We're seeing ~3% improvement on Octane, ~8% improvement on Kraken, and ~1% improvement on JetStream from this change.
Note You need to log in before you can comment on or make changes to this bug.