RESOLVED FIXED 144396
TypeOf should be fast
https://bugs.webkit.org/show_bug.cgi?id=144396
Summary TypeOf should be fast
Filip Pizlo
Reported 2015-04-29 10:15:16 PDT
Currently TypeOf for a cell requires a runtime call because we don't know if something should be called "function" unless we call getCallData(). TypeOf is used often enough that we should have a good inline implementation. To do that, we need to add some stuff to the object model.
Attachments
work in progress (13.29 KB, patch)
2015-04-30 11:36 PDT, Filip Pizlo
no flags
more (15.03 KB, patch)
2015-04-30 17:31 PDT, Filip Pizlo
no flags
getting closer (31.92 KB, patch)
2015-05-01 13:15 PDT, Filip Pizlo
no flags
a bit more (40.08 KB, patch)
2015-05-01 19:56 PDT, Filip Pizlo
no flags
it is written (49.33 KB, patch)
2015-05-01 21:37 PDT, Filip Pizlo
no flags
so close (64.01 KB, patch)
2015-05-01 21:54 PDT, Filip Pizlo
no flags
with fixes (67.49 KB, patch)
2015-05-02 10:50 PDT, Filip Pizlo
no flags
the patch (68.18 KB, patch)
2015-05-02 12:19 PDT, Filip Pizlo
ggaren: review+
Geoffrey Garen
Comment 1 2015-04-29 10:56:40 PDT
Side note: The DOM would like more control over the behavior of "typeof x == 'function'". For example, I believe that global constructors want to be 'function' even though they are not callable. So, adding something explicit to the object model may help the DOM.
Filip Pizlo
Comment 2 2015-04-29 10:58:11 PDT
(In reply to comment #1) > Side note: The DOM would like more control over the behavior of "typeof x == > 'function'". For example, I believe that global constructors want to be > 'function' even though they are not callable. So, adding something explicit > to the object model may help the DOM. Interesting. My changes will preserve current behavior. If we want global constructors to claim to be functions even though this doesn't happen currently, then we should add another type flag for this purpose.
Filip Pizlo
Comment 3 2015-04-30 11:36:30 PDT
Created attachment 252073 [details] work in progress
Filip Pizlo
Comment 4 2015-04-30 17:31:21 PDT
Filip Pizlo
Comment 5 2015-05-01 13:15:29 PDT
Created attachment 252168 [details] getting closer
Filip Pizlo
Comment 6 2015-05-01 19:56:52 PDT
Created attachment 252212 [details] a bit more
Filip Pizlo
Comment 7 2015-05-01 21:37:20 PDT
Created attachment 252216 [details] it is written Still need to test it.
Filip Pizlo
Comment 8 2015-05-01 21:54:04 PDT
Created attachment 252217 [details] so close
Filip Pizlo
Comment 9 2015-05-02 10:50:51 PDT
Created attachment 252237 [details] with fixes It's almost ready for perf testing.
WebKit Commit Bot
Comment 10 2015-05-02 10:53:29 PDT
Attachment 252237 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:4733: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7421: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4912: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4917: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 4 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 11 2015-05-02 12:09:30 PDT
Looks like there is still work to be done to make typeof-using benchmarks fast. But this looks like overall it's a step in the right direction. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r183718) "FastTypeOf" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r183718) 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 FastTypeOf SunSpider: 3d-cube 5.1978+-0.1718 ? 5.2157+-0.1295 ? 3d-morph 6.1007+-0.6261 5.7732+-0.1070 might be 1.0567x faster 3d-raytrace 6.9741+-0.6144 6.5796+-0.2424 might be 1.0600x faster access-binary-trees 2.3698+-0.1982 2.2744+-0.0524 might be 1.0420x faster access-fannkuch 6.3851+-0.6029 5.9056+-0.0886 might be 1.0812x faster access-nbody 2.9767+-0.2060 ? 3.0334+-0.3142 ? might be 1.0190x slower access-nsieve 3.3925+-0.0574 3.3277+-0.0312 might be 1.0195x faster bitops-3bit-bits-in-byte 1.6095+-0.0744 1.5567+-0.0253 might be 1.0339x faster bitops-bits-in-byte 3.4137+-0.0897 ? 3.4755+-0.1500 ? might be 1.0181x slower bitops-bitwise-and 2.1482+-0.0248 ? 2.1496+-0.0259 ? bitops-nsieve-bits 3.4326+-0.5044 3.3822+-0.1519 might be 1.0149x faster controlflow-recursive 2.3929+-0.2622 ? 2.4299+-0.2116 ? might be 1.0154x slower crypto-aes 4.6319+-0.3212 4.4743+-0.1642 might be 1.0352x faster crypto-md5 2.9866+-0.1567 ^ 2.6630+-0.0230 ^ definitely 1.1215x faster crypto-sha1 2.6339+-0.2026 ? 2.7572+-0.3353 ? might be 1.0468x slower date-format-tofte 9.3375+-0.1066 9.2644+-0.1101 date-format-xparb 5.9204+-0.1365 5.8075+-0.0839 might be 1.0194x faster math-cordic 3.2512+-0.1810 3.2406+-0.3291 math-partial-sums 5.6469+-0.6456 5.5345+-0.6952 might be 1.0203x faster math-spectral-norm 2.1170+-0.2291 2.0013+-0.1234 might be 1.0578x faster regexp-dna 7.1612+-0.1176 ? 8.1350+-1.6398 ? might be 1.1360x slower string-base64 4.7490+-0.1701 4.7023+-0.1500 string-fasta 6.7386+-0.1421 ? 6.8193+-0.2436 ? might be 1.0120x slower string-tagcloud 10.0119+-0.6465 ? 11.0955+-1.2711 ? might be 1.1082x slower string-unpack-code 19.8405+-0.9113 19.6479+-0.7282 string-validate-input 4.9638+-0.2305 ? 4.9899+-0.1157 ? <arithmetic> 5.2455+-0.1026 5.2399+-0.0960 might be 1.0011x faster TipOfTree FastTypeOf LongSpider: 3d-cube 880.3381+-3.4118 ? 882.3793+-10.4645 ? 3d-morph 1530.3024+-4.8921 1529.3130+-3.7923 3d-raytrace 727.6813+-7.0710 ? 738.3579+-3.6105 ? might be 1.0147x slower access-binary-trees 1034.8072+-10.1980 1029.8719+-3.4155 access-fannkuch 329.0429+-7.8237 324.3267+-11.9226 might be 1.0145x faster access-nbody 611.7271+-2.4877 ? 613.0899+-5.3711 ? access-nsieve 870.5586+-11.3136 862.9816+-15.5793 bitops-3bit-bits-in-byte 45.3083+-2.0964 45.1043+-1.2853 bitops-bits-in-byte 102.6775+-2.8672 101.5868+-1.2259 might be 1.0107x faster bitops-nsieve-bits 617.9013+-2.3705 616.3745+-2.9901 controlflow-recursive 477.8512+-0.4097 ! 483.8485+-1.6928 ! definitely 1.0126x slower crypto-aes 705.6414+-7.8845 ? 706.9118+-5.2168 ? crypto-md5 529.1755+-12.1179 ? 529.5449+-8.9423 ? crypto-sha1 601.6514+-8.3305 ? 608.1436+-8.4102 ? might be 1.0108x slower date-format-tofte 757.4471+-19.4434 ? 759.3667+-10.3663 ? date-format-xparb 781.4366+-22.4936 ? 782.7607+-16.5367 ? math-cordic 596.3478+-8.8185 592.0996+-4.0884 math-partial-sums 505.3558+-1.9734 ? 508.5758+-3.6045 ? math-spectral-norm 572.3764+-9.4229 566.2964+-3.1767 might be 1.0107x faster string-base64 377.9574+-4.5151 ? 380.7909+-5.1230 ? string-fasta 441.1704+-4.1692 437.8365+-3.4771 string-tagcloud 199.4079+-3.9801 197.4165+-1.8625 might be 1.0101x faster <geometric> 494.3570+-1.8106 493.9562+-1.6228 might be 1.0008x faster TipOfTree FastTypeOf V8Spider: crypto 56.2641+-1.2448 56.1795+-2.3175 deltablue 96.2640+-3.1731 ? 97.3871+-4.9884 ? might be 1.0117x slower earley-boyer 44.7097+-1.0347 ? 44.9069+-0.6713 ? raytrace 40.9255+-2.6427 40.8937+-3.3104 regexp 80.5355+-1.2319 ? 82.4106+-1.9097 ? might be 1.0233x slower richards 79.9155+-1.7866 79.6371+-2.9089 splay 42.4974+-9.2390 39.8397+-1.8951 might be 1.0667x faster <geometric> 59.5900+-1.7002 59.4135+-0.8336 might be 1.0030x faster TipOfTree FastTypeOf Octane: encrypt 0.20474+-0.00265 0.20323+-0.00147 decrypt 3.60210+-0.07386 3.57359+-0.03399 deltablue x2 0.20826+-0.00146 0.20801+-0.00092 earley 0.53688+-0.00374 ? 0.54122+-0.00485 ? boyer 6.78210+-0.06802 6.72953+-0.04320 navier-stokes x2 5.21766+-0.06723 5.21691+-0.07875 raytrace x2 1.24945+-0.06802 ? 1.27082+-0.03130 ? might be 1.0171x slower richards x2 0.12232+-0.00078 ? 0.12282+-0.00152 ? splay x2 0.40021+-0.00385 0.39840+-0.00226 regexp x2 31.92321+-0.24547 ? 32.09864+-0.26782 ? pdfjs x2 44.26175+-0.43166 43.67249+-0.28474 might be 1.0135x faster mandreel x2 50.38151+-0.19348 ? 50.53112+-0.28637 ? gbemu x2 41.79057+-0.52837 41.71339+-0.45591 closure 0.57061+-0.00987 0.56849+-0.00672 jquery 7.45023+-0.86786 7.14372+-0.04106 might be 1.0429x faster box2d x2 12.35265+-0.06649 12.34629+-0.20538 zlib x2 389.81420+-15.59398 382.16678+-17.97486 might be 1.0200x faster typescript x2 893.08639+-123.07095 841.23006+-11.11539 might be 1.0616x faster <geometric> 6.76509+-0.09238 6.72284+-0.03124 might be 1.0063x faster TipOfTree FastTypeOf Kraken: ai-astar 271.298+-1.767 270.646+-3.798 audio-beat-detection 106.991+-1.108 106.878+-1.161 audio-dft 150.411+-3.122 ? 150.913+-5.912 ? audio-fft 84.771+-4.220 82.329+-1.695 might be 1.0297x faster audio-oscillator 208.314+-1.957 ? 210.349+-6.439 ? imaging-darkroom 105.872+-1.699 105.072+-2.094 imaging-desaturate 63.458+-1.405 ? 64.391+-1.870 ? might be 1.0147x slower imaging-gaussian-blur 114.915+-4.848 113.765+-2.086 might be 1.0101x faster json-parse-financial 46.298+-1.650 46.268+-2.481 json-stringify-tinderbox 56.712+-2.488 ? 57.773+-2.194 ? might be 1.0187x slower stanford-crypto-aes 58.584+-0.414 ? 58.964+-0.740 ? stanford-crypto-ccm 60.328+-3.758 60.309+-2.102 stanford-crypto-pbkdf2 136.570+-1.094 ? 138.600+-1.298 ? might be 1.0149x slower stanford-crypto-sha256-iterative 54.152+-3.595 51.672+-1.435 might be 1.0480x faster <arithmetic> 108.477+-0.367 108.423+-0.741 might be 1.0005x faster TipOfTree FastTypeOf JSRegress: abs-boolean 2.6248+-0.0359 ? 2.6301+-0.0275 ? adapt-to-double-divide 16.8876+-0.3110 16.8081+-0.5773 aliased-arguments-getbyval 1.2246+-0.1004 1.2113+-0.0585 might be 1.0109x faster allocate-big-object 2.8471+-0.1084 2.7976+-0.0387 might be 1.0177x faster arguments-named-and-reflective 14.3944+-3.1329 13.2748+-1.0204 might be 1.0843x faster arguments-out-of-bounds 14.8252+-0.3968 ? 16.0652+-1.3475 ? might be 1.0836x slower arguments-strict-mode 12.6161+-1.2077 ? 13.0170+-2.0328 ? might be 1.0318x slower arguments 10.5736+-0.3336 ? 11.0134+-0.8006 ? might be 1.0416x slower arity-mismatch-inlining 0.8086+-0.0364 ? 0.8108+-0.0172 ? array-access-polymorphic-structure 7.4624+-1.2664 7.0724+-0.9264 might be 1.0551x faster array-nonarray-polymorhpic-access 34.6226+-2.1188 ? 35.1212+-1.7208 ? might be 1.0144x slower array-prototype-every 89.4485+-1.1914 ? 90.5056+-1.5491 ? might be 1.0118x slower array-prototype-forEach 86.3842+-1.7857 84.4786+-2.7437 might be 1.0226x faster array-prototype-map 94.4806+-2.6895 ? 94.9690+-2.4177 ? array-prototype-some 87.9235+-0.5314 ? 88.8664+-1.6014 ? might be 1.0107x slower array-splice-contiguous 42.1298+-1.9099 ? 42.8798+-3.5425 ? might be 1.0178x slower array-with-double-add 4.2785+-0.2329 4.2266+-0.1347 might be 1.0123x faster array-with-double-increment 3.2021+-0.0634 ? 3.3259+-0.2649 ? might be 1.0387x slower array-with-double-mul-add 5.0289+-0.0575 ? 5.2085+-0.3884 ? might be 1.0357x slower array-with-double-sum 3.2504+-0.0336 ? 3.2743+-0.0349 ? array-with-int32-add-sub 6.8724+-0.1469 6.8173+-0.1456 array-with-int32-or-double-sum 3.4225+-0.3560 3.2902+-0.0349 might be 1.0402x faster ArrayBuffer-DataView-alloc-large-long-lived 34.4743+-1.5509 33.8180+-2.3306 might be 1.0194x faster ArrayBuffer-DataView-alloc-long-lived 14.4612+-1.7936 ? 14.7930+-1.2535 ? might be 1.0229x slower ArrayBuffer-Int32Array-byteOffset 3.7642+-0.0746 ? 3.9733+-0.4760 ? might be 1.0556x slower ArrayBuffer-Int8Array-alloc-large-long-lived 32.5054+-1.1361 ? 32.5603+-2.2264 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 24.0710+-1.8315 23.0732+-1.9543 might be 1.0432x faster ArrayBuffer-Int8Array-alloc-long-lived 13.7895+-2.1292 ? 13.9473+-1.6149 ? might be 1.0114x slower ArrayBuffer-Int8Array-alloc 11.3704+-0.9853 10.8163+-0.9504 might be 1.0512x faster asmjs_bool_bug 7.6805+-0.0945 ? 7.8042+-0.2468 ? might be 1.0161x slower assign-custom-setter-polymorphic 3.5660+-0.6048 3.1132+-0.2402 might be 1.1455x faster assign-custom-setter 4.5755+-0.1346 4.2610+-0.3412 might be 1.0738x faster basic-set 8.9433+-0.6820 8.6831+-0.5394 might be 1.0300x faster big-int-mul 4.1926+-0.3540 ? 4.2985+-0.4338 ? might be 1.0253x slower boolean-test 3.1510+-0.3105 3.0488+-0.0510 might be 1.0335x faster branch-fold 3.7198+-0.0375 ? 3.9154+-0.3571 ? might be 1.0526x slower branch-on-string-as-boolean 19.8280+-1.7955 ? 21.5415+-1.4594 ? might be 1.0864x slower by-val-generic 8.3127+-0.2180 8.0630+-0.1795 might be 1.0310x faster call-spread-apply 29.4803+-0.5740 ? 30.8560+-1.0766 ? might be 1.0467x slower call-spread-call 26.0701+-1.5059 25.5861+-1.0846 might be 1.0189x faster captured-assignments 0.4309+-0.0081 ? 0.4383+-0.0205 ? might be 1.0170x slower cast-int-to-double 5.2982+-0.0744 ? 5.3204+-0.1076 ? cell-argument 8.5564+-0.2643 8.4507+-0.1218 might be 1.0125x faster cfg-simplify 3.1458+-0.1440 3.1139+-0.1505 might be 1.0103x faster chain-getter-access 9.9703+-0.1225 9.9180+-0.1803 cmpeq-obj-to-obj-other 11.9819+-0.9253 11.5838+-1.6553 might be 1.0344x faster constant-test 4.9392+-0.0145 ? 5.3604+-0.9620 ? might be 1.0853x slower create-lots-of-functions 11.6708+-0.2675 11.5595+-0.2180 DataView-custom-properties 38.4908+-1.6033 ? 38.7067+-2.0391 ? deconstructing-parameters-overridden-by-function 0.4742+-0.0171 ? 0.5045+-0.0306 ? might be 1.0639x slower delay-tear-off-arguments-strictmode 14.7065+-0.9164 14.1676+-0.1617 might be 1.0380x faster deltablue-varargs 202.8655+-2.4070 ? 204.0972+-1.9032 ? destructuring-arguments 18.4803+-1.4837 18.4185+-1.4307 destructuring-swap 6.1582+-2.7980 5.1167+-0.0968 might be 1.2036x faster direct-arguments-getbyval 1.3134+-0.0936 1.2746+-0.0606 might be 1.0305x faster div-boolean-double 5.2415+-0.0228 5.2380+-0.0970 div-boolean 7.8019+-0.0626 ? 7.8062+-0.1303 ? double-get-by-val-out-of-bounds 4.4833+-0.0475 ? 4.5898+-0.1550 ? might be 1.0237x slower double-pollution-getbyval 8.8397+-0.0841 ? 8.8416+-0.0840 ? double-pollution-putbyoffset 4.4404+-0.1637 ? 4.4971+-0.2690 ? might be 1.0128x slower double-to-int32-typed-array-no-inline 2.4385+-0.2811 2.3180+-0.1047 might be 1.0520x faster double-to-int32-typed-array 2.0723+-0.1267 1.9851+-0.1177 might be 1.0440x faster double-to-uint32-typed-array-no-inline 2.4514+-0.1292 2.3415+-0.1002 might be 1.0470x faster double-to-uint32-typed-array 2.0380+-0.0672 ? 2.1596+-0.2159 ? might be 1.0597x slower elidable-new-object-dag 43.8846+-0.8933 ? 43.9627+-1.0511 ? elidable-new-object-roflcopter 47.2490+-2.6587 ? 47.5752+-2.1047 ? elidable-new-object-then-call 39.2255+-0.9689 ? 39.9129+-2.5309 ? might be 1.0175x slower elidable-new-object-tree 45.8738+-1.9745 ? 46.1765+-1.5406 ? empty-string-plus-int 5.5063+-0.2359 ? 6.0791+-1.5219 ? might be 1.1040x slower emscripten-cube2hash 37.9571+-1.3843 ? 39.7899+-1.8022 ? might be 1.0483x slower exit-length-on-plain-object 16.6745+-4.9957 14.6216+-1.3396 might be 1.1404x faster external-arguments-getbyval 1.2303+-0.0689 ? 1.2397+-0.0664 ? external-arguments-putbyval 2.2798+-0.0211 ? 2.3869+-0.2236 ? might be 1.0470x slower fixed-typed-array-storage-var-index 1.2486+-0.0525 1.2096+-0.0180 might be 1.0323x faster fixed-typed-array-storage 0.9398+-0.0197 0.9186+-0.0306 might be 1.0230x faster Float32Array-matrix-mult 4.6354+-0.3627 4.6219+-0.2953 Float32Array-to-Float64Array-set 57.9956+-3.7263 57.4209+-1.9787 might be 1.0100x faster Float64Array-alloc-long-lived 75.1390+-2.3103 73.3345+-2.1316 might be 1.0246x faster Float64Array-to-Int16Array-set 69.3288+-2.5074 68.9473+-2.9251 fold-double-to-int 13.4522+-0.2213 13.4479+-0.2178 fold-get-by-id-to-multi-get-by-offset-rare-int 10.0073+-0.9411 ? 10.7937+-1.3751 ? might be 1.0786x slower fold-get-by-id-to-multi-get-by-offset 10.0979+-1.0768 9.8765+-1.0376 might be 1.0224x faster fold-multi-get-by-offset-to-get-by-offset 9.9212+-1.1766 9.2601+-1.7149 might be 1.0714x faster fold-multi-get-by-offset-to-poly-get-by-offset 9.2013+-1.3604 8.6543+-0.5924 might be 1.0632x faster fold-multi-put-by-offset-to-poly-put-by-offset 9.4580+-1.3693 8.8411+-1.2579 might be 1.0698x faster fold-multi-put-by-offset-to-put-by-offset 4.7642+-0.6168 ? 6.1501+-0.8617 ? might be 1.2909x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.7837+-0.5569 9.5467+-0.3883 might be 1.0248x faster fold-put-by-id-to-multi-put-by-offset 9.7256+-0.6577 ? 9.8959+-1.1125 ? might be 1.0175x slower fold-put-structure 5.9780+-1.5624 ? 7.5050+-0.6105 ? might be 1.2554x slower for-of-iterate-array-entries 4.6434+-0.1256 ? 4.7114+-0.1685 ? might be 1.0147x slower for-of-iterate-array-keys 3.8145+-0.1370 3.6957+-0.0837 might be 1.0321x faster for-of-iterate-array-values 4.1182+-1.0198 3.9602+-0.3569 might be 1.0399x faster fround 20.9076+-0.7269 ? 20.9276+-1.0082 ? ftl-library-inlining-dataview 67.2757+-1.4068 64.4880+-1.6152 might be 1.0432x faster ftl-library-inlining 83.2637+-22.2214 ? 88.5769+-24.6823 ? might be 1.0638x slower function-dot-apply 2.2740+-0.0766 ? 2.2780+-0.1171 ? function-test 3.5122+-0.1507 ^ 2.8512+-0.1140 ^ definitely 1.2318x faster function-with-eval 104.7519+-1.6377 ? 106.6278+-1.7812 ? might be 1.0179x slower gcse-poly-get-less-obvious 18.4354+-0.8965 ? 18.5396+-1.3075 ? gcse-poly-get 22.2178+-1.7148 21.9518+-1.6693 might be 1.0121x faster gcse 4.4045+-0.2725 4.3334+-0.0867 might be 1.0164x faster get-by-id-bimorphic-check-structure-elimination-simple 2.7504+-0.0901 2.7400+-0.0470 get-by-id-bimorphic-check-structure-elimination 6.0734+-0.0907 ? 6.1186+-0.1346 ? get-by-id-chain-from-try-block 7.1271+-1.0832 6.7293+-0.2243 might be 1.0591x faster get-by-id-check-structure-elimination 5.3867+-0.6494 5.2376+-0.3434 might be 1.0285x faster get-by-id-proto-or-self 17.2213+-0.8901 ? 17.9669+-0.2838 ? might be 1.0433x slower get-by-id-quadmorphic-check-structure-elimination-simple 3.3560+-0.3952 3.1567+-0.0423 might be 1.0631x faster get-by-id-self-or-proto 17.4854+-1.0909 17.3374+-0.4100 get-by-val-out-of-bounds 4.4735+-0.2003 4.3855+-0.0302 might be 1.0201x faster get_callee_monomorphic 2.8568+-0.1891 ? 2.9163+-0.2149 ? might be 1.0209x slower get_callee_polymorphic 3.9430+-0.3174 ? 4.3176+-0.4758 ? might be 1.0950x slower getter-no-activation 5.0694+-0.3387 ? 5.1956+-0.2803 ? might be 1.0249x slower getter-richards 124.0921+-6.4450 ? 126.1174+-7.5749 ? might be 1.0163x slower getter 5.8917+-0.5421 ? 6.0798+-0.4546 ? might be 1.0319x slower global-var-const-infer-fire-from-opt 0.9921+-0.1527 0.9770+-0.2203 might be 1.0155x faster global-var-const-infer 0.8130+-0.0864 0.7839+-0.0622 might be 1.0372x faster HashMap-put-get-iterate-keys 25.5789+-0.3477 ? 26.7727+-1.2658 ? might be 1.0467x slower HashMap-put-get-iterate 25.3098+-0.4576 ? 26.0723+-0.6055 ? might be 1.0301x slower HashMap-string-put-get-iterate 28.5695+-1.4949 ? 28.5865+-0.7891 ? hoist-make-rope 11.7022+-0.4921 ? 12.4984+-0.6721 ? might be 1.0680x slower hoist-poly-check-structure-effectful-loop 5.1181+-0.1908 5.0966+-0.1928 hoist-poly-check-structure 3.6512+-0.0237 ? 3.8150+-0.3772 ? might be 1.0449x slower imul-double-only 8.6482+-1.0850 ? 8.9990+-0.7118 ? might be 1.0406x slower imul-int-only 10.0415+-0.6541 10.0367+-0.6289 imul-mixed 8.3157+-0.0840 ? 8.4320+-0.5623 ? might be 1.0140x slower in-four-cases 20.7322+-0.3573 ? 20.8867+-0.5254 ? in-one-case-false 10.1618+-0.4626 ? 10.2876+-0.3736 ? might be 1.0124x slower in-one-case-true 10.0902+-0.3966 ? 11.0101+-0.5471 ? might be 1.0912x slower in-two-cases 10.3376+-0.2917 ? 10.6019+-0.6263 ? might be 1.0256x slower indexed-properties-in-objects 3.0717+-0.0474 2.9731+-0.1921 might be 1.0332x faster infer-closure-const-then-mov-no-inline 4.7029+-0.4642 4.3742+-0.4450 might be 1.0752x faster infer-closure-const-then-mov 20.0017+-0.4138 19.6655+-0.3005 might be 1.0171x faster infer-closure-const-then-put-to-scope-no-inline 14.6551+-1.4390 ? 14.8466+-1.3895 ? might be 1.0131x slower infer-closure-const-then-put-to-scope 22.9206+-1.1320 ? 22.9934+-1.0209 ? infer-closure-const-then-reenter-no-inline 63.2528+-1.6614 62.4329+-1.2799 might be 1.0131x faster infer-closure-const-then-reenter 24.1999+-2.0163 23.3806+-1.6236 might be 1.0350x faster infer-constant-global-property 31.1348+-1.6761 31.0642+-1.6611 infer-constant-property 2.6956+-0.0400 ? 2.7779+-0.1187 ? might be 1.0305x slower infer-one-time-closure-ten-vars 12.6685+-0.9149 ? 12.7612+-0.6671 ? infer-one-time-closure-two-vars 12.0938+-0.3310 ? 13.7252+-1.5483 ? might be 1.1349x slower infer-one-time-closure 12.5203+-1.0953 12.1119+-0.7235 might be 1.0337x faster infer-one-time-deep-closure 22.8330+-1.3150 21.6907+-1.5107 might be 1.0527x faster inline-arguments-access 4.6253+-0.0737 4.5846+-0.0456 inline-arguments-aliased-access 4.6583+-0.0880 4.6340+-0.0737 inline-arguments-local-escape 5.0531+-0.7324 4.7271+-0.1196 might be 1.0690x faster inline-get-scoped-var 5.0445+-0.2921 4.7312+-0.0567 might be 1.0662x faster inlined-put-by-id-transition 10.8984+-0.1732 ? 11.0619+-0.9459 ? might be 1.0150x slower int-or-other-abs-then-get-by-val 4.7897+-0.1498 4.6824+-0.0158 might be 1.0229x faster int-or-other-abs-zero-then-get-by-val 17.6657+-1.0983 ? 18.2265+-1.2433 ? might be 1.0317x slower int-or-other-add-then-get-by-val 4.3315+-0.0984 4.2944+-0.0208 int-or-other-add 5.3500+-0.0517 5.3131+-0.0471 int-or-other-div-then-get-by-val 4.2976+-0.0993 ? 4.3031+-0.0446 ? int-or-other-max-then-get-by-val 4.3969+-0.0209 ? 4.4422+-0.0644 ? might be 1.0103x slower int-or-other-min-then-get-by-val 4.5327+-0.2367 4.4716+-0.0777 might be 1.0137x faster int-or-other-mod-then-get-by-val 4.0958+-0.4345 3.9041+-0.0473 might be 1.0491x faster int-or-other-mul-then-get-by-val 4.0174+-0.0511 ? 4.1244+-0.2395 ? might be 1.0266x slower int-or-other-neg-then-get-by-val 4.5474+-0.1508 ? 4.5542+-0.1323 ? int-or-other-neg-zero-then-get-by-val 17.9198+-1.4959 17.4259+-0.2224 might be 1.0283x faster int-or-other-sub-then-get-by-val 4.5802+-0.1427 4.5315+-0.0606 might be 1.0107x faster int-or-other-sub 3.5310+-0.0359 3.5152+-0.0692 int-overflow-local 4.5201+-0.0958 ? 4.6803+-0.2747 ? might be 1.0354x slower Int16Array-alloc-long-lived 53.5530+-1.8536 ? 53.7943+-1.0243 ? Int16Array-bubble-sort-with-byteLength 20.5167+-0.2541 ? 20.7196+-0.3299 ? Int16Array-bubble-sort 19.7780+-0.5981 ? 20.5556+-1.0508 ? might be 1.0393x slower Int16Array-load-int-mul 1.5744+-0.1786 1.5481+-0.1191 might be 1.0170x faster Int16Array-to-Int32Array-set 51.9712+-1.9310 ? 53.7487+-2.0937 ? might be 1.0342x slower Int32Array-alloc-large 23.5892+-0.6049 ? 24.0756+-0.7261 ? might be 1.0206x slower Int32Array-alloc-long-lived 59.1001+-2.3070 57.6514+-1.2425 might be 1.0251x faster Int32Array-alloc 3.7969+-0.3637 ? 3.9956+-0.6505 ? might be 1.0523x slower Int32Array-Int8Array-view-alloc 6.8914+-0.2133 ! 8.5462+-0.9440 ! definitely 1.2401x slower int52-spill 6.3459+-0.0383 ? 6.3751+-0.0740 ? Int8Array-alloc-long-lived 47.1632+-1.1694 ? 49.3937+-1.7833 ? might be 1.0473x slower Int8Array-load-with-byteLength 3.3260+-0.0368 ? 3.4867+-0.2747 ? might be 1.0483x slower Int8Array-load 3.3127+-0.0555 ? 3.3470+-0.0659 ? might be 1.0104x slower integer-divide 11.0798+-0.1001 ? 11.1480+-0.1118 ? integer-modulo 2.0716+-0.1404 ? 2.3278+-0.5134 ? might be 1.1237x slower is-boolean-fold-tricky 4.5984+-0.3050 4.3895+-0.0531 might be 1.0476x faster is-boolean-fold 2.8420+-0.0465 ? 2.9842+-0.3795 ? might be 1.0500x slower is-function-fold-tricky-internal-function 9.8033+-0.1497 ! 12.1025+-0.2236 ! definitely 1.2345x slower is-function-fold-tricky 4.5329+-0.1181 ? 4.6007+-0.1890 ? might be 1.0150x slower is-function-fold 2.8483+-0.0693 ? 2.8719+-0.0483 ? is-number-fold-tricky 4.4537+-0.1139 ? 4.6582+-0.3317 ? might be 1.0459x slower is-number-fold 3.0008+-0.3130 2.8259+-0.0198 might be 1.0619x faster is-object-or-null-fold-functions 2.8950+-0.0443 ? 2.9642+-0.1321 ? might be 1.0239x slower is-object-or-null-fold-less-tricky 4.6128+-0.1051 4.4965+-0.0542 might be 1.0259x faster is-object-or-null-fold-tricky 10.0801+-0.1066 ^ 6.6509+-0.1253 ^ definitely 1.5156x faster is-object-or-null-fold 2.8765+-0.0765 ? 3.0099+-0.3061 ? might be 1.0464x slower is-object-or-null-trickier-function 4.6642+-0.0927 4.6000+-0.0854 might be 1.0139x faster is-object-or-null-trickier-internal-function 12.6065+-1.0585 ? 12.8415+-0.1160 ? might be 1.0186x slower is-object-or-null-tricky-function 4.6377+-0.0677 4.5503+-0.1046 might be 1.0192x faster is-object-or-null-tricky-internal-function 10.2681+-0.0696 ^ 9.5515+-0.2200 ^ definitely 1.0750x faster is-string-fold-tricky 4.5194+-0.1643 4.4990+-0.1757 is-string-fold 2.8265+-0.1358 ? 3.1156+-0.4118 ? might be 1.1023x slower is-undefined-fold-tricky 4.1049+-0.4807 3.7006+-0.0498 might be 1.1093x faster is-undefined-fold 3.0297+-0.2437 2.8525+-0.0862 might be 1.0621x faster large-int-captured 4.7378+-0.1614 4.6451+-0.1095 might be 1.0200x faster large-int-neg 16.8859+-0.7019 16.6057+-0.6067 might be 1.0169x faster large-int 15.0487+-0.3107 ? 15.6858+-1.0861 ? might be 1.0423x slower logical-not 4.6521+-0.2330 4.4960+-0.0588 might be 1.0347x faster lots-of-fields 14.3793+-2.7672 13.3656+-0.9201 might be 1.0758x faster make-indexed-storage 3.3182+-0.3585 2.9945+-0.3454 might be 1.1081x faster make-rope-cse 4.9051+-0.4446 ? 5.0069+-0.6812 ? might be 1.0208x slower marsaglia-larger-ints 37.3949+-2.0185 36.4942+-1.5837 might be 1.0247x faster marsaglia-osr-entry 23.2267+-0.5145 23.0927+-0.8381 max-boolean 2.6024+-0.3162 2.5220+-0.0478 might be 1.0319x faster method-on-number 17.1045+-0.4053 ? 17.1810+-0.2897 ? min-boolean 2.6331+-0.3135 2.4511+-0.0211 might be 1.0742x faster minus-boolean-double 3.1453+-0.0418 ? 3.1932+-0.0714 ? might be 1.0152x slower minus-boolean 2.3565+-0.1285 ? 2.4644+-0.2962 ? might be 1.0458x slower misc-strict-eq 37.6771+-0.7570 37.5186+-0.6075 mod-boolean-double 11.0610+-0.3442 11.0224+-0.2565 mod-boolean 7.8180+-0.0401 ? 7.8572+-0.0743 ? mul-boolean-double 3.7751+-0.1240 3.6802+-0.0335 might be 1.0258x faster mul-boolean 2.9045+-0.0905 ? 2.9968+-0.2277 ? might be 1.0318x slower neg-boolean 3.2088+-0.0983 3.1921+-0.0707 negative-zero-divide 0.3631+-0.0490 0.3583+-0.0093 might be 1.0135x faster negative-zero-modulo 0.3477+-0.0190 ? 0.3611+-0.0190 ? might be 1.0386x slower negative-zero-negate 0.3199+-0.0091 ? 0.3246+-0.0148 ? might be 1.0145x slower nested-function-parsing 39.6425+-1.8376 38.8528+-1.2872 might be 1.0203x faster new-array-buffer-dead 112.5321+-1.3871 ? 113.1478+-3.7468 ? new-array-buffer-push 6.9789+-0.2553 6.9732+-0.2029 new-array-dead 18.9426+-0.5794 ? 19.0050+-0.4309 ? new-array-push 3.9288+-0.1702 ? 4.3426+-0.8600 ? might be 1.1053x slower no-inline-constructor 123.5755+-2.3196 ! 131.0090+-1.2610 ! definitely 1.0602x slower number-test 3.2253+-0.4094 3.1568+-0.3421 might be 1.0217x faster object-closure-call 5.6568+-0.0965 ? 5.8025+-0.2526 ? might be 1.0258x slower object-test 3.3962+-0.5036 3.0461+-0.3710 might be 1.1149x faster obvious-sink-pathology-taken 140.6009+-2.3708 ? 140.6113+-1.8045 ? obvious-sink-pathology 132.5070+-1.5988 131.2062+-2.5259 obviously-elidable-new-object 35.9722+-1.3809 35.9237+-0.7701 plus-boolean-arith 2.4879+-0.0507 ? 2.5849+-0.2267 ? might be 1.0390x slower plus-boolean-double 3.2158+-0.0608 ? 3.2184+-0.0950 ? plus-boolean 2.4832+-0.1744 2.3537+-0.0315 might be 1.0550x faster poly-chain-access-different-prototypes-simple 3.4668+-0.4026 3.2955+-0.0946 might be 1.0520x faster poly-chain-access-different-prototypes 2.6695+-0.3418 2.6087+-0.1295 might be 1.0233x faster poly-chain-access-simpler 3.2826+-0.0756 3.2714+-0.0395 poly-chain-access 2.5348+-0.1265 ? 2.6523+-0.3188 ? might be 1.0463x slower poly-stricteq 63.0007+-2.1962 ? 63.1503+-1.0247 ? polymorphic-array-call 1.3424+-0.1553 1.2455+-0.0275 might be 1.0778x faster polymorphic-get-by-id 3.0853+-0.0580 ? 3.1412+-0.0589 ? might be 1.0181x slower polymorphic-put-by-id 29.8818+-3.3842 28.9084+-0.9984 might be 1.0337x faster polymorphic-structure 15.2430+-0.9330 ? 15.4735+-1.4465 ? might be 1.0151x slower polyvariant-monomorphic-get-by-id 8.5368+-0.1551 ? 8.7110+-0.4815 ? might be 1.0204x slower proto-getter-access 10.1388+-0.1281 ^ 9.8070+-0.1148 ^ definitely 1.0338x faster put-by-id-replace-and-transition 9.3521+-0.3356 9.1877+-0.2692 might be 1.0179x faster put-by-id-slightly-polymorphic 2.8243+-0.0856 2.7491+-0.0569 might be 1.0274x faster put-by-id 12.6666+-0.3076 12.5829+-0.3329 put-by-val-direct 0.4559+-0.0334 0.4128+-0.0142 might be 1.1043x faster put-by-val-large-index-blank-indexing-type 6.1807+-0.6348 ? 6.2935+-0.7867 ? might be 1.0183x slower put-by-val-machine-int 2.8691+-0.1686 ? 2.8910+-0.3267 ? rare-osr-exit-on-local 15.9410+-2.0278 14.8478+-0.2401 might be 1.0736x faster register-pressure-from-osr 21.9861+-1.0871 21.9609+-1.2092 setter 5.8956+-0.7369 5.7069+-0.6786 might be 1.0331x faster simple-activation-demo 25.5389+-1.1657 24.8955+-0.4875 might be 1.0258x faster simple-getter-access 12.7457+-0.2119 ? 12.7474+-0.2339 ? simple-poly-call-nested 8.2498+-0.1799 8.1348+-0.2712 might be 1.0141x faster simple-poly-call 1.3024+-0.0496 ? 1.3307+-0.1347 ? might be 1.0217x slower sin-boolean 22.6650+-0.5475 ? 24.2918+-1.1057 ? might be 1.0718x slower singleton-scope 68.3917+-1.6811 ? 68.4198+-1.6625 ? sink-function 12.4308+-0.3752 12.3936+-0.3723 sinkable-new-object-dag 69.2089+-0.5359 ? 70.7182+-1.8237 ? might be 1.0218x slower sinkable-new-object-taken 54.2608+-2.6451 53.5833+-2.9129 might be 1.0126x faster sinkable-new-object 39.6253+-2.2511 ? 40.7083+-1.8308 ? might be 1.0273x slower slow-array-profile-convergence 2.8648+-0.1246 ? 3.0032+-0.3610 ? might be 1.0483x slower slow-convergence 2.7576+-0.1516 2.7010+-0.1621 might be 1.0210x faster sorting-benchmark 20.8746+-0.5832 ? 21.7457+-1.3301 ? might be 1.0417x slower sparse-conditional 1.1337+-0.0562 1.1060+-0.0177 might be 1.0251x faster splice-to-remove 17.3232+-1.6753 17.0988+-1.4058 might be 1.0131x faster string-char-code-at 18.2097+-1.6253 17.2783+-0.2304 might be 1.0539x faster string-concat-object 2.5251+-0.0701 ? 2.6067+-0.1269 ? might be 1.0323x slower string-concat-pair-object 2.5669+-0.1792 ? 2.7063+-0.2907 ? might be 1.0543x slower string-concat-pair-simple 12.0251+-0.9622 ? 12.4455+-0.9984 ? might be 1.0350x slower string-concat-simple 12.7947+-1.3268 12.3322+-1.3114 might be 1.0375x faster string-cons-repeat 8.5297+-0.9981 ? 8.7627+-1.2204 ? might be 1.0273x slower string-cons-tower 8.5420+-0.9764 ? 8.6149+-0.7992 ? string-equality 18.1510+-1.6135 ? 18.7796+-1.7310 ? might be 1.0346x slower string-get-by-val-big-char 7.1410+-0.0743 7.0996+-0.0400 string-get-by-val-out-of-bounds-insane 3.7356+-0.0984 3.7312+-0.4341 string-get-by-val-out-of-bounds 5.2684+-0.2344 5.2015+-0.0823 might be 1.0129x faster string-get-by-val 3.4442+-0.0414 ^ 3.2854+-0.0265 ^ definitely 1.0483x faster string-hash 2.1818+-0.2442 2.0649+-0.0458 might be 1.0567x faster string-long-ident-equality 15.9530+-1.0263 15.2242+-0.3893 might be 1.0479x faster string-out-of-bounds 15.1478+-0.9240 14.9458+-0.2220 might be 1.0135x faster string-repeat-arith 35.0408+-1.9992 31.4628+-1.6236 might be 1.1137x faster string-sub 68.5024+-4.6726 67.6466+-3.5300 might be 1.0127x faster string-test 2.9639+-0.0839 2.9344+-0.0228 might be 1.0101x faster string-var-equality 33.4323+-1.5907 32.7492+-1.2900 might be 1.0209x faster structure-hoist-over-transitions 2.6178+-0.1015 ? 2.7149+-0.1570 ? might be 1.0371x slower substring-concat-weird 40.5321+-1.8374 ? 42.2543+-2.4492 ? might be 1.0425x slower substring-concat 41.1139+-1.1979 ? 41.8407+-1.9623 ? might be 1.0177x slower substring 46.6278+-1.8131 ? 47.5215+-2.0886 ? might be 1.0192x slower switch-char-constant 2.6895+-0.0446 ? 2.7041+-0.0602 ? switch-char 7.1014+-0.9462 6.9963+-0.9547 might be 1.0150x faster switch-constant 8.4379+-0.2892 ? 8.7167+-0.5159 ? might be 1.0330x slower switch-string-basic-big-var 18.4140+-0.7589 18.3156+-0.6279 switch-string-basic-big 14.6460+-0.3378 14.5602+-0.2081 switch-string-basic-var 14.5818+-0.1523 ? 14.6547+-0.2842 ? switch-string-basic 13.5048+-0.3160 ? 13.6800+-0.2974 ? might be 1.0130x slower switch-string-big-length-tower-var 21.1015+-1.7141 20.2431+-0.9330 might be 1.0424x faster switch-string-length-tower-var 15.5881+-0.5938 ? 15.9134+-1.3171 ? might be 1.0209x slower switch-string-length-tower 12.9159+-0.3600 ? 12.9202+-0.1835 ? switch-string-short 12.7500+-0.1721 ? 12.7839+-0.1692 ? switch 12.7271+-0.1884 ? 12.9423+-0.5514 ? might be 1.0169x slower tear-off-arguments-simple 3.5063+-0.1618 ? 3.5229+-0.1476 ? tear-off-arguments 4.6535+-0.0421 ? 4.7522+-0.1575 ? might be 1.0212x slower temporal-structure 12.2433+-0.1222 ? 12.5517+-0.3537 ? might be 1.0252x slower to-int32-boolean 13.8214+-0.2588 ? 14.0861+-0.9323 ? might be 1.0192x slower try-catch-get-by-val-cloned-arguments 15.3340+-1.5564 14.6546+-0.5055 might be 1.0464x faster try-catch-get-by-val-direct-arguments 7.1213+-0.9795 ? 7.2033+-1.3605 ? might be 1.0115x slower try-catch-get-by-val-scoped-arguments 7.6374+-0.0560 ? 8.3050+-1.0117 ? might be 1.0874x slower typed-array-get-set-by-val-profiling 33.6586+-2.4616 32.5028+-1.3606 might be 1.0356x faster undefined-property-access 358.7854+-2.5306 355.1364+-2.9223 might be 1.0103x faster undefined-test 3.0203+-0.0279 ? 3.1891+-0.2964 ? might be 1.0559x slower unprofiled-licm 24.3934+-1.6659 22.9065+-0.2706 might be 1.0649x faster varargs-call 16.2912+-1.0503 15.9132+-0.4635 might be 1.0238x faster varargs-construct-inline 23.6945+-1.6544 ? 23.8232+-1.2817 ? varargs-construct 31.8429+-0.2191 31.7965+-0.3332 varargs-inline 9.3855+-0.2674 ? 9.6024+-0.7296 ? might be 1.0231x slower varargs-strict-mode 10.4270+-0.3662 ? 10.4302+-0.3953 ? varargs 10.3014+-0.1855 ? 10.5271+-0.7686 ? might be 1.0219x slower weird-inlining-const-prop 2.4225+-0.1477 2.2753+-0.1046 might be 1.0647x faster <geometric> 8.6178+-0.0480 8.6119+-0.0158 might be 1.0007x faster TipOfTree FastTypeOf AsmBench: bigfib.cpp 496.1573+-2.2942 495.7375+-5.2356 cray.c 475.4874+-133.6488 423.3683+-3.3488 might be 1.1231x faster dry.c 483.9148+-7.3464 ? 488.8380+-7.3494 ? might be 1.0102x slower FloatMM.c 728.3402+-6.7959 727.6390+-6.1537 gcc-loops.cpp 4276.1742+-5.9658 ? 4276.9834+-17.9059 ? n-body.c 983.0286+-5.7620 979.4143+-0.9579 Quicksort.c 422.4576+-4.9618 419.7352+-3.0048 stepanov_container.cpp 3618.1105+-23.2676 3604.4108+-15.0399 Towers.c 261.8316+-3.7934 260.4954+-0.4316 <geometric> 801.7464+-21.4629 792.4357+-1.2606 might be 1.0117x faster TipOfTree FastTypeOf CompressionBench: huffman 371.4502+-2.3921 ^ 361.1787+-3.4249 ^ definitely 1.0284x faster arithmetic-simple 392.5138+-4.3091 ? 400.6689+-6.6296 ? might be 1.0208x slower arithmetic-precise 298.2770+-2.5733 297.6355+-4.9673 arithmetic-complex-precise 299.6568+-2.7860 ? 300.2652+-3.0324 ? arithmetic-precise-order-0 427.9771+-7.5552 423.1330+-6.0784 might be 1.0114x faster arithmetic-precise-order-1 328.3070+-3.4293 ? 329.2343+-4.4209 ? arithmetic-precise-order-2 364.0974+-3.1693 ? 392.7399+-83.4007 ? might be 1.0787x slower arithmetic-simple-order-1 422.6135+-5.6010 421.9578+-3.3853 arithmetic-simple-order-2 472.9729+-5.0464 471.9146+-9.5995 lz-string 320.1600+-1.7817 ? 323.8259+-5.8925 ? might be 1.0115x slower <geometric> 365.5865+-1.4104 ? 367.5551+-6.4319 ? might be 1.0054x slower TipOfTree FastTypeOf Geomean of preferred means: <scaled-result> 64.1345+-0.3756 63.9887+-0.2779 might be 1.0023x faster
Filip Pizlo
Comment 12 2015-05-02 12:19:58 PDT
Created attachment 252243 [details] the patch
WebKit Commit Bot
Comment 13 2015-05-02 12:22:25 PDT
Attachment 252243 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:4733: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7421: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4912: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4917: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 4 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Geoffrey Garen
Comment 14 2015-05-02 15:21:32 PDT
Comment on attachment 252243 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=252243&action=review r=me > Source/JavaScriptCore/ChangeLog:10 > + Adds comprehensive support for fast typeof to the optimizing JITs. Calls into the runtime > + are only used for very exotic objects - they must have either the MasqueradesAsUndefined or > + TypeOfShouldCallGetCallData type flags set. All other cases are handled inline. When do we need to use this flag? Seems weird.
Filip Pizlo
Comment 15 2015-05-02 17:13:12 PDT
(In reply to comment #14) > Comment on attachment 252243 [details] > the patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=252243&action=review > > r=me > > > Source/JavaScriptCore/ChangeLog:10 > > + Adds comprehensive support for fast typeof to the optimizing JITs. Calls into the runtime > > + are only used for very exotic objects - they must have either the MasqueradesAsUndefined or > > + TypeOfShouldCallGetCallData type flags set. All other cases are handled inline. > > When do we need to use this flag? Seems weird. TypeOfShouldCallGetCallData means that there is a getCallData() override. Currently if there is such an override then we need to call it since it may still return CallTypeNone. The flag allows us to avoid the call in cases where getCallData() is not overridden.
Filip Pizlo
Comment 16 2015-05-02 17:17:23 PDT
Ryosuke Niwa
Comment 17 2015-05-04 20:17:02 PDT
Looks like this was a 2% improvement on Speedometer.
Note You need to log in before you can comment on or make changes to this bug.