Bug 139398

Summary: Crash in JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq
Product: WebKit Reporter: Vanessa Freudenberg <vanessa>
Component: JavaScriptCoreAssignee: Michael Saboff <msaboff>
Status: RESOLVED FIXED    
Severity: Major CC: cody.taylor, fpizlo, msaboff, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Mac (Intel)   
OS: OS X 10.10   
URL: http://bertfreudenberg.github.io/SqueakJS/etoys/
See Also: https://bugs.webkit.org/show_bug.cgi?id=136803
Attachments:
Description Flags
Work in progress patch without test
none
Updated work in Progress
none
Patch for Review fpizlo: review+

Description Vanessa Freudenberg 2014-12-08 07:29:15 PST
Safari (and WebKit nightly) crashes reproducibly after a couple of seconds running this (which works fine in Chrome and Firefox):

http://bertfreudenberg.github.io/SqueakJS/etoys/

It's not trivial to isolate the problem. This is a full Smalltalk Virtual Machine with its own JIT and memory management, but if I can be of any help: I am the main developer.

Thread 22 Crashed:: FTL Worklist Worker Thread
0   com.apple.JavaScriptCore      	0x000000011237e30e WTFCrashWithSecurityImplication + 62
1   com.apple.JavaScriptCore      	0x0000000111f72212 JSC::DFG::crash(JSC::DFG::Graph&, WTF::CString const&, char const*, int, char const*, char const*) + 418
2   com.apple.JavaScriptCore      	0x0000000111f722bf JSC::DFG::Graph::handleAssertionFailure(JSC::DFG::Node*, char const*, int, char const*, char const*) + 159
3   com.apple.JavaScriptCore      	0x0000000112078c93 JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq() + 3411
4   com.apple.JavaScriptCore      	0x0000000112061247 JSC::FTL::LowerDFGToLLVM::compileNode(unsigned int) + 3351
5   com.apple.JavaScriptCore      	0x0000000112060418 JSC::FTL::LowerDFGToLLVM::compileBlock(JSC::DFG::BasicBlock*) + 824
6   com.apple.JavaScriptCore      	0x000000011205f8fb JSC::FTL::LowerDFGToLLVM::lower() + 3899
7   com.apple.JavaScriptCore      	0x000000011205e999 JSC::FTL::lowerDFGToLLVM(JSC::FTL::State&) + 41
Comment 1 Alexey Proskuryakov 2014-12-09 00:06:02 PST
I could reproduce with Safari 8 (didn't try nightlies or trunk).
Comment 2 Radar WebKit Bug Importer 2014-12-09 00:06:17 PST
<rdar://problem/19187718>
Comment 3 Michael Saboff 2015-02-06 15:54:36 PST
Have a fix need to write a test.
Comment 4 Michael Saboff 2015-02-06 18:31:04 PST
Created attachment 246196 [details]
Work in progress patch without test
Comment 5 Filip Pizlo 2015-02-09 10:07:53 PST
Comment on attachment 246196 [details]
Work in progress patch without test

View in context: https://bugs.webkit.org/attachment.cgi?id=246196&action=review

> Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:3552
> +            || m_node->isBinaryUseKind(UntypedUse)

This is wrong.  The code below will not generate correct results for UntypedUse.
Comment 6 Michael Saboff 2015-02-09 10:41:20 PST
Here is the source for the function that is being compiled:
function tallyIntoMapwith(sourceWord, destinationWord) {
	var pixMask;
	var mapIndex;
	var destShifted;
	var i;
	var maskShifted;
	var pixVal;

	if ((cmFlags & (ColorMapPresent | ColorMapIndexedPart)) !== (ColorMapPresent | ColorMapIndexedPart)) {
		return destinationWord;
	}
	pixMask = maskTable[destDepth];
	destShifted = destinationWord;
	maskShifted = destMask;
	for (i = 1; i <= destPPW; i++) {
		if ((maskShifted & pixMask) !== 0) {

			/* Only tally pixels within the destination rectangle */

			pixVal = destShifted & pixMask;
			if (destDepth < 16) {
				mapIndex = pixVal;
			} else {
                                // Crashes checking the IR generated for the next statement				if (destDepth === 16) {
					mapIndex = rgbMapfromto(pixVal, 5, cmBitsPerColor);
				} else {
					mapIndex = rgbMapfromto(pixVal, 8, cmBitsPerColor);
				}
			}
			tallyMapAtput(mapIndex, tallyMapAt(mapIndex) + 1);
		}
		maskShifted = SHR(maskShifted, destDepth);
		destShifted = SHR(destShifted, destDepth);
	}
	return destinationWord;
}
Comment 7 Michael Saboff 2015-02-09 18:28:21 PST
Created attachment 246308 [details]
Updated work in Progress
Comment 8 Michael Saboff 2015-02-10 07:39:54 PST
Tested performance with of adding the a FTL::canCompile() check to validate that the DFG graph is suitable for lowering to LLVM and got a huge slowdown.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on msaboff-pro (MacPro5,1).

VMs tested:
"Baseline" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc
"CheckFTLCapabilitesAgain" at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                         Baseline         CheckFTLCapabilitesAgain                              
SunSpider:
   3d-cube                                            8.4254+-0.2303            8.2947+-0.4883          might be 1.0158x faster
   3d-morph                                          12.5574+-0.2270     ?     12.6633+-0.5515        ?
   3d-raytrace                                       11.0907+-0.3086           10.8575+-0.3941          might be 1.0215x faster
   access-binary-trees                                3.3362+-0.1887            3.3247+-0.2178        
   access-fannkuch                                   10.2742+-0.2233     ?     10.4454+-0.3724        ? might be 1.0167x slower
   access-nbody                                       5.3285+-0.1665     ?      5.3630+-0.2529        ?
   access-nsieve                                      5.8448+-0.0553            5.7865+-0.1660          might be 1.0101x faster
   bitops-3bit-bits-in-byte                           2.3517+-0.1475     ?      2.4132+-0.1010        ? might be 1.0262x slower
   bitops-bits-in-byte                                6.3422+-0.0406     ?      6.3508+-0.1032        ?
   bitops-bitwise-and                                 3.1060+-0.1512     ?      3.1929+-0.1980        ? might be 1.0280x slower
   bitops-nsieve-bits                                 6.7874+-0.2680            6.7325+-0.2410        
   controlflow-recursive                              3.6476+-0.2466            3.4430+-0.1825          might be 1.0594x faster
   crypto-aes                                         7.0080+-0.2997     ?      7.1836+-0.2734        ? might be 1.0251x slower
   crypto-md5                                         4.2530+-0.2816            4.2493+-0.3246        
   crypto-sha1                                        4.2775+-0.3129     ?      4.2863+-0.3765        ?
   date-format-tofte                                 17.0318+-0.7223           16.5503+-0.5088          might be 1.0291x faster
   date-format-xparb                                  8.8958+-0.4373     ?      8.9974+-0.4338        ? might be 1.0114x slower
   math-cordic                                        5.5435+-0.2909     ?      5.5732+-0.2498        ?
   math-partial-sums                                 10.9012+-0.1222     ?     11.0506+-0.1198        ? might be 1.0137x slower
   math-spectral-norm                                 3.5137+-0.1778            3.4557+-0.2000          might be 1.0168x faster
   regexp-dna                                        11.4762+-0.2570     ?     11.6005+-0.1091        ? might be 1.0108x slower
   string-base64                                      7.1635+-0.3972     ?      7.2466+-0.2875        ? might be 1.0116x slower
   string-fasta                                      12.1312+-0.3163           12.0148+-0.2926        
   string-tagcloud                                   17.8674+-0.3081           17.2139+-0.5594          might be 1.0380x faster
   string-unpack-code                                37.7999+-1.1774     ?     38.5540+-1.0918        ? might be 1.0199x slower
   string-validate-input                              8.3782+-0.3113            8.1863+-0.4700          might be 1.0234x faster

   <arithmetic> *                                     9.0513+-0.0522            9.0396+-0.1029          might be 1.0013x faster
   <geometric>                                        7.3470+-0.0350            7.3334+-0.0974          might be 1.0018x faster
   <harmonic>                                         6.1554+-0.0667            6.1513+-0.1069          might be 1.0007x faster

                                                         Baseline         CheckFTLCapabilitesAgain                              
LongSpider:
   3d-cube                                         1684.4370+-366.0668   !   2379.1963+-9.0939        ! definitely 1.4125x slower
   3d-morph                                        1978.3196+-3.0337     !   2189.1918+-3.8531        ! definitely 1.1066x slower
   3d-raytrace                                     1542.9747+-3.8720     ^   1525.5170+-7.5645        ^ definitely 1.0114x faster
   access-binary-trees                             1859.5215+-5.2750     ^   1797.2401+-1.6667        ^ definitely 1.0347x faster
   access-fannkuch                                  591.7411+-28.0623    !    733.6613+-8.7177        ! definitely 1.2398x slower
   access-nbody                                    1479.0960+-1.7625     !   1837.4803+-1.8035        ! definitely 1.2423x slower
   access-nsieve                                   1804.3760+-9.1209         1800.7350+-20.1102       
   bitops-3bit-bits-in-byte                          70.3105+-0.2038     !    135.6770+-0.8051        ! definitely 1.9297x slower
   bitops-bits-in-byte                              364.0190+-5.1025     !    549.7675+-0.1606        ! definitely 1.5103x slower
   bitops-nsieve-bits                              1454.5776+-4.7530     ^   1328.5969+-2.7677        ^ definitely 1.0948x faster
   controlflow-recursive                           1089.2863+-6.4276     ^    925.0367+-2.4511        ^ definitely 1.1776x faster
   crypto-aes                                      1290.7263+-3.5353     !   1949.4685+-12.6533       ! definitely 1.5104x slower
   crypto-md5                                      1070.2658+-5.3137     !   1281.9777+-13.4215       ! definitely 1.1978x slower
   crypto-sha1                                     1449.4285+-9.4458     !   1906.0695+-7.5645        ! definitely 1.3150x slower
   date-format-tofte                               1507.5335+-68.9748    !   1601.1042+-9.8061        ! definitely 1.0621x slower
   date-format-xparb                               1403.2462+-68.1595        1378.9893+-26.0171         might be 1.0176x faster
   math-cordic                                     1049.3808+-8.0381     !   2001.6452+-5.9398        ! definitely 1.9075x slower
   math-partial-sums                               1278.9943+-2.5430     !   1312.8829+-2.2899        ! definitely 1.0265x slower
   math-spectral-norm                              1217.8057+-1.6660     !   2113.2379+-3.1426        ! definitely 1.7353x slower
   string-base64                                    631.4800+-1.8253     ^    623.7205+-3.5519        ^ definitely 1.0124x faster
   string-fasta                                     860.3738+-11.4774    !    995.1693+-3.4808        ! definitely 1.1567x slower
   string-tagcloud                                  420.2945+-5.2666     ?    424.2668+-6.7480        ?

   <arithmetic>                                    1186.2813+-20.6741    !   1399.5742+-0.9272        ! definitely 1.1798x slower
   <geometric> *                                    998.2024+-11.7829    !   1193.3721+-1.5206        ! definitely 1.1955x slower
   <harmonic>                                       624.1823+-3.3413     !    864.7079+-2.7638        ! definitely 1.3853x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
V8Spider:
   crypto                                           100.4189+-1.2812     ?    100.8250+-1.0864        ?
   deltablue                                        124.8494+-11.2373    ?    126.9690+-1.8237        ? might be 1.0170x slower
   earley-boyer                                      81.0970+-2.7328     ?     81.7010+-0.6636        ?
   raytrace                                          49.1834+-2.8370     ?     50.7105+-2.8897        ? might be 1.0310x slower
   regexp                                           128.6553+-1.9744          127.4943+-1.8847        
   richards                                         132.0338+-3.9614     !    141.1838+-3.6683        ! definitely 1.0693x slower
   splay                                             58.8062+-2.4803     ?     59.0485+-3.7745        ?

   <arithmetic>                                      96.4349+-1.5936     ?     98.2760+-0.8584        ? might be 1.0191x slower
   <geometric> *                                     90.5335+-1.5304     ?     92.1233+-1.0666        ? might be 1.0176x slower
   <harmonic>                                        84.3103+-1.8796     ?     85.7321+-1.5327        ? might be 1.0169x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
Octane:
   encrypt                                           0.45952+-0.01251    !     0.58129+-0.00736       ! definitely 1.2650x slower
   decrypt                                           8.25512+-0.12867    !    10.52647+-0.03494       ! definitely 1.2751x slower
   deltablue                                x2       0.38899+-0.00336    !     0.66973+-0.01270       ! definitely 1.7217x slower
   earley                                            1.32078+-0.01135    ?     1.32944+-0.01362       ?
   boyer                                            11.85747+-0.09610    !    14.12994+-0.13250       ! definitely 1.1916x slower
   navier-stokes                            x2       7.39018+-0.02564    !    11.46404+-0.05493       ! definitely 1.5513x slower
   raytrace                                 x2       2.51232+-0.21192    !     5.01789+-0.38755       ! definitely 1.9973x slower
   richards                                 x2       0.24088+-0.00288    !     0.37012+-0.00096       ! definitely 1.5365x slower
   splay                                    x2       0.66895+-0.00390    !     0.82139+-0.10543       ! definitely 1.2279x slower
   regexp                                   x2      62.96479+-1.59686         62.76995+-0.86524       
   pdfjs                                    x2      96.49107+-0.59789    ?    96.60619+-0.85911       ?
   mandreel                                 x2     107.02375+-0.73439    !   170.95224+-0.96348       ! definitely 1.5973x slower
   gbemu                                    x2      96.66876+-4.03324    !   102.54764+-1.25550       ! definitely 1.0608x slower
   closure                                           0.96826+-0.00344    ?     0.97132+-0.00897       ?
   jquery                                           12.31582+-0.03684         12.29063+-0.11049       
   box2d                                    x2      28.08956+-0.28453    !    29.98011+-0.09508       ! definitely 1.0673x slower
   zlib                                     x2     888.53666+-2.12592    !  1098.63363+-3.57671       ! definitely 1.2365x slower
   typescript                               x2    1453.91418+-47.57047      1399.21326+-27.99842        might be 1.0391x faster

   <arithmetic>                                    184.16524+-3.08111    !   199.93071+-1.81436       ! definitely 1.0856x slower
   <geometric> *                                    13.28100+-0.10741    !    16.66220+-0.12331       ! definitely 1.2546x slower
   <harmonic>                                        1.36844+-0.00310    !     1.95929+-0.04402       ! definitely 1.4318x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
Kraken:
   ai-astar                                          819.725+-28.565           794.124+-29.497          might be 1.0322x faster
   audio-beat-detection                              220.882+-0.994      !     224.379+-0.295         ! definitely 1.0158x slower
   audio-dft                                         301.660+-36.392           291.005+-1.251           might be 1.0366x faster
   audio-fft                                         155.742+-1.005            154.937+-1.268         
   audio-oscillator                                  427.917+-2.562      ^     274.321+-1.218         ^ definitely 1.5599x faster
   imaging-darkroom                                  335.383+-1.813      ^     331.140+-0.757         ^ definitely 1.0128x faster
   imaging-desaturate                                145.258+-0.255      !     212.677+-0.465         ! definitely 1.4641x slower
   imaging-gaussian-blur                             216.181+-1.743      !     387.265+-1.061         ! definitely 1.7914x slower
   json-parse-financial                               92.461+-0.793      ?      93.396+-2.274         ? might be 1.0101x slower
   json-stringify-tinderbox                          113.586+-5.365            112.786+-1.501         
   stanford-crypto-aes                               116.779+-2.412      ?     117.935+-1.778         ?
   stanford-crypto-ccm                               111.485+-3.146      ^      93.090+-2.939         ^ definitely 1.1976x faster
   stanford-crypto-pbkdf2                            313.339+-2.938      ^     264.435+-5.494         ^ definitely 1.1849x faster
   stanford-crypto-sha256-iterative                   95.082+-1.401      !      97.102+-0.552         ! definitely 1.0212x slower

   <arithmetic> *                                    247.534+-4.298            246.328+-1.970           might be 1.0049x faster
   <geometric>                                       199.280+-2.395      ?     201.219+-0.919         ? might be 1.0097x slower
   <harmonic>                                        168.280+-1.318      ?     169.825+-0.949         ? might be 1.0092x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
JSRegress:
   abs-boolean                                        4.6240+-0.1165     ?      4.6695+-0.1843        ?
   adapt-to-double-divide                            19.3786+-0.3969     !     20.3898+-0.3619        ! definitely 1.0522x slower
   aliased-arguments-getbyval                         1.4614+-0.1168            1.4613+-0.1833        
   allocate-big-object                                3.5966+-0.2758     ?      3.5994+-0.1604        ?
   arity-mismatch-inlining                            1.3419+-0.2591            1.3115+-0.0532          might be 1.0231x faster
   array-access-polymorphic-structure                12.5099+-0.1738           12.4674+-0.2858        
   array-nonarray-polymorhpic-access                 69.0966+-0.6658     ?     69.5461+-8.2680        ?
   array-prototype-every                            188.6152+-5.4459          186.7556+-8.4325        
   array-prototype-forEach                          186.2267+-15.3484    ?    189.5630+-10.3126       ? might be 1.0179x slower
   array-prototype-map                              223.6080+-5.1404          220.3545+-4.3256          might be 1.0148x faster
   array-prototype-some                             197.2348+-13.7463         192.0667+-8.1613          might be 1.0269x faster
   array-splice-contiguous                           89.5582+-4.6993     ?     90.2499+-4.8957        ?
   array-with-double-add                              7.4485+-0.1674            7.4044+-0.0914        
   array-with-double-increment                        5.5300+-0.1445     ?      5.5310+-0.1298        ?
   array-with-double-mul-add                         11.6240+-0.1131           11.5105+-0.1456        
   array-with-double-sum                              5.3740+-0.1061     ?      5.4253+-0.1557        ?
   array-with-int32-add-sub                          13.1236+-0.2279           12.8990+-0.2262          might be 1.0174x faster
   array-with-int32-or-double-sum                     5.2505+-0.1243     ?      5.3434+-0.0824        ? might be 1.0177x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     65.4079+-2.6091           64.4221+-0.6485          might be 1.0153x faster
   ArrayBuffer-DataView-alloc-long-lived             27.1077+-1.3025           26.2334+-0.3690          might be 1.0333x faster
   ArrayBuffer-Int32Array-byteOffset                  5.3918+-0.2344            5.1122+-0.3690          might be 1.0547x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     68.6993+-1.3282     ?     70.6108+-3.7409        ? might be 1.0278x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     43.7990+-1.3709     ?     44.3135+-1.4476        ? might be 1.0117x slower
   ArrayBuffer-Int8Array-alloc-long-lived            25.3255+-0.8341     ?     27.1045+-2.7248        ? might be 1.0702x slower
   ArrayBuffer-Int8Array-alloc                       21.4498+-0.9400     ?     21.6425+-1.0428        ?
   asmjs_bool_bug                                    12.7160+-0.2284           12.6465+-0.2307        
   assign-custom-setter-polymorphic                   6.0016+-0.1905     ?      6.0761+-0.1493        ? might be 1.0124x slower
   assign-custom-setter                               8.2315+-0.1746     ?      8.3250+-0.0711        ? might be 1.0114x slower
   basic-set                                         18.0435+-1.5026           16.8120+-1.2060          might be 1.0733x faster
   big-int-mul                                        7.7390+-0.0810     ?      7.7891+-0.2318        ?
   boolean-test                                       4.8981+-0.2104            4.7920+-0.0972          might be 1.0221x faster
   branch-fold                                        5.2663+-0.1577     ?      5.3416+-0.1572        ? might be 1.0143x slower
   by-val-generic                                    15.3765+-0.3021           15.3273+-0.6053        
   call-spread-apply                                 26.7298+-0.2589     ^     26.0934+-0.2417        ^ definitely 1.0244x faster
   call-spread-call                                  11.5486+-0.2806           11.2810+-0.2555          might be 1.0237x faster
   captured-assignments                               0.8494+-0.2058            0.8127+-0.1360          might be 1.0451x faster
   cast-int-to-double                                 8.6546+-0.1895            8.5427+-0.0844          might be 1.0131x faster
   cell-argument                                     12.1551+-0.1365     !     15.7473+-0.1257        ! definitely 1.2955x slower
   cfg-simplify                                       3.9940+-0.1929     ?      4.0381+-0.1133        ? might be 1.0110x slower
   chain-getter-access                               16.7128+-0.4791     !     22.1323+-0.2905        ! definitely 1.3243x slower
   cmpeq-obj-to-obj-other                            16.3000+-0.4354     ?     16.9847+-0.7668        ? might be 1.0420x slower
   constant-test                                      8.0817+-0.1085            7.9722+-0.2230          might be 1.0137x faster
   DataView-custom-properties                        73.4356+-1.2568     ?     73.7570+-2.8189        ?
   delay-tear-off-arguments-strictmode               44.0186+-0.5679           43.8254+-2.2986        
   destructuring-arguments                            9.1373+-0.1351            9.0717+-0.2135        
   destructuring-swap                                 8.1918+-0.1754     ?      8.2317+-0.2375        ?
   direct-arguments-getbyval                          1.5794+-0.2850            1.5415+-0.1012          might be 1.0246x faster
   div-boolean-double                                 5.9225+-0.2271            5.7382+-0.2442          might be 1.0321x faster
   div-boolean                                       10.1893+-0.1093           10.1876+-0.1200        
   double-get-by-val-out-of-bounds                    7.9057+-0.3169            7.7896+-0.2344          might be 1.0149x faster
   double-pollution-getbyval                         10.2017+-0.2023           10.0055+-0.2051          might be 1.0196x faster
   double-pollution-putbyoffset                       7.9363+-0.1543            7.8453+-0.1986          might be 1.0116x faster
   double-to-int32-typed-array-no-inline              3.6616+-0.1544     ?      3.7155+-0.3031        ? might be 1.0147x slower
   double-to-int32-typed-array                        3.1696+-0.1668     ?      3.1974+-0.2120        ?
   double-to-uint32-typed-array-no-inline             3.7192+-0.1000     ?      3.7934+-0.1485        ? might be 1.0199x slower
   double-to-uint32-typed-array                       3.3278+-0.2488            3.2569+-0.0613          might be 1.0218x faster
   elidable-new-object-dag                           63.1037+-0.7777     !    396.1140+-6.2530        ! definitely 6.2772x slower
   elidable-new-object-roflcopter                   237.3107+-0.6990          237.0347+-0.9520        
   elidable-new-object-then-call                     59.1095+-0.8220     !    259.2364+-6.0201        ! definitely 4.3857x slower
   elidable-new-object-tree                          69.5731+-1.3086     !    393.7665+-4.8424        ! definitely 5.6598x slower
   empty-string-plus-int                             10.3997+-0.1950           10.1263+-0.2315          might be 1.0270x faster
   emscripten-cube2hash                              57.2567+-0.4616     ?     57.5522+-1.4530        ?
   external-arguments-getbyval                        2.4247+-0.2277     ?      2.4348+-0.2186        ?
   external-arguments-putbyval                        3.6743+-0.2111     ?      3.7758+-0.2266        ? might be 1.0276x slower
   fixed-typed-array-storage-var-index                1.8537+-0.0563     !      2.0468+-0.1165        ! definitely 1.1041x slower
   fixed-typed-array-storage                          1.4429+-0.0992     ?      1.5068+-0.1887        ? might be 1.0442x slower
   Float32Array-matrix-mult                           8.3763+-0.5623     ?      8.8171+-1.5045        ? might be 1.0526x slower
   Float32Array-to-Float64Array-set                 119.1960+-4.1940          116.5704+-1.0105          might be 1.0225x faster
   Float64Array-alloc-long-lived                    103.5098+-0.7632     ?    103.9840+-1.4414        ?
   Float64Array-to-Int16Array-set                   144.8483+-2.7642          144.8109+-4.4859        
   fold-double-to-int                                23.7125+-0.4981     !     34.6306+-1.0998        ! definitely 1.4604x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     14.5103+-0.8095           14.3445+-0.3931          might be 1.0116x faster
   fold-get-by-id-to-multi-get-by-offset             12.3757+-0.4647     ?     12.5439+-0.4257        ? might be 1.0136x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.7960+-1.7112     ?     10.8817+-2.1934        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.9042+-1.0602           10.5978+-0.3201          might be 1.0289x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.8348+-1.1391     ?     10.1268+-1.3330        ? might be 1.0297x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.8740+-1.1242            8.0186+-1.3234          might be 1.1067x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     16.0674+-1.2591           15.4662+-2.5596          might be 1.0389x faster
   fold-put-by-id-to-multi-put-by-offset             11.4954+-0.7012     ?     11.6194+-1.4441        ? might be 1.0108x slower
   fold-put-structure                                 8.6396+-0.7585     ?      8.8072+-1.1558        ? might be 1.0194x slower
   for-of-iterate-array-entries                      10.9670+-0.3609           10.8669+-0.3066        
   for-of-iterate-array-keys                          5.0760+-0.1750            5.0153+-0.2392          might be 1.0121x faster
   for-of-iterate-array-values                        4.0119+-0.3122     ?      4.4427+-0.2013        ? might be 1.1074x slower
   fround                                            25.6963+-0.2118     !     26.9955+-0.1115        ! definitely 1.0506x slower
   ftl-library-inlining-dataview                    155.8597+-22.1040         152.9064+-2.0952          might be 1.0193x faster
   ftl-library-inlining                             135.4794+-7.6702     !    145.0245+-0.2659        ! definitely 1.0705x slower
   function-dot-apply                                 2.8680+-0.1800            2.8400+-0.2309        
   function-test                                      5.5325+-0.2112            5.4984+-0.2358        
   function-with-eval                               223.1771+-2.0292          219.8792+-24.2283         might be 1.0150x faster
   gcse-poly-get-less-obvious                        36.9563+-0.6808           36.2575+-1.0252          might be 1.0193x faster
   gcse-poly-get                                     36.8305+-0.2743           36.8132+-1.0005        
   gcse                                               9.1937+-0.1077            9.0728+-0.2076          might be 1.0133x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      4.1334+-0.1258            4.0856+-0.1403          might be 1.0117x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                     12.1049+-0.0943           11.9789+-0.1516          might be 1.0105x faster
   get-by-id-chain-from-try-block                    19.7538+-0.1189           19.6180+-0.1033        
   get-by-id-check-structure-elimination             10.7063+-0.4386           10.6670+-0.1560        
   get-by-id-proto-or-self                           30.8511+-0.6974     !     34.7138+-0.6516        ! definitely 1.1252x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      5.2753+-0.1731            5.1339+-0.1196          might be 1.0275x faster
   get-by-id-self-or-proto                           31.8908+-6.4890     ?     34.8402+-2.3304        ? might be 1.0925x slower
   get-by-val-out-of-bounds                           7.5349+-0.2843            7.3873+-0.1681          might be 1.0200x faster
   get_callee_monomorphic                             6.0526+-0.3895     ?      6.2784+-0.5388        ? might be 1.0373x slower
   get_callee_polymorphic                             5.4689+-0.1834            5.2090+-0.2557          might be 1.0499x faster
   getter-no-activation                               6.3060+-0.1271     ?      6.3098+-0.1127        ?
   getter-richards                                  179.2745+-3.6649          169.4739+-8.3713          might be 1.0578x faster
   getter                                             9.0842+-0.5308            8.8842+-0.3596          might be 1.0225x faster
   global-var-const-infer-fire-from-opt               1.8119+-0.1247            1.7501+-0.1884          might be 1.0353x faster
   global-var-const-infer                             1.4200+-0.1673     ?      1.5260+-0.2394        ? might be 1.0746x slower
   HashMap-put-get-iterate-keys                      50.5900+-0.5999           49.9011+-0.8957          might be 1.0138x faster
   HashMap-put-get-iterate                           49.9439+-1.1221           48.5055+-0.3857          might be 1.0297x faster
   HashMap-string-put-get-iterate                    49.7173+-1.1275     ?     50.7897+-1.2250        ? might be 1.0216x slower
   hoist-make-rope                                   16.7797+-2.4051     !     96.5465+-0.6237        ! definitely 5.7538x slower
   hoist-poly-check-structure-effectful-loop   
                                                      9.5635+-0.1147     ^      9.3412+-0.1072        ^ definitely 1.0238x faster
   hoist-poly-check-structure                         6.3197+-0.1809            6.1780+-0.2422          might be 1.0229x faster
   imul-double-only                                  13.4333+-1.8984     !     21.2166+-0.1331        ! definitely 1.5794x slower
   imul-int-only                                     14.5253+-0.1249           14.4742+-0.1747        
   imul-mixed                                        12.6605+-1.6708     !     26.9069+-0.2395        ! definitely 2.1253x slower
   in-four-cases                                     36.2841+-0.7934           35.1251+-0.7375          might be 1.0330x faster
   in-one-case-false                                 18.7558+-0.4603           18.2859+-0.1467          might be 1.0257x faster
   in-one-case-true                                  18.5046+-0.1471           18.3490+-0.3288        
   in-two-cases                                      19.3170+-0.1691           19.0038+-0.1558          might be 1.0165x faster
   indexed-properties-in-objects                      4.6625+-0.1717            4.6201+-0.1983        
   infer-closure-const-then-mov-no-inline             6.0481+-0.0413            5.9131+-0.1266          might be 1.0228x faster
   infer-closure-const-then-mov                      26.2275+-0.3431           26.0132+-0.1356        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     19.7618+-0.2721     !     22.2540+-0.2305        ! definitely 1.1261x slower
   infer-closure-const-then-put-to-scope             33.7224+-1.1604     ?     34.5884+-0.7527        ? might be 1.0257x slower
   infer-closure-const-then-reenter-no-inline   
                                                     92.8353+-0.1746     !    106.8552+-0.2427        ! definitely 1.1510x slower
   infer-closure-const-then-reenter                  31.6918+-0.2544     ?     36.6333+-15.7428       ? might be 1.1559x slower
   infer-constant-global-property                    38.8754+-0.0466     ^     38.6995+-0.1082        ^ definitely 1.0045x faster
   infer-constant-property                            3.7210+-0.0641            3.5969+-0.0974          might be 1.0345x faster
   infer-one-time-closure-ten-vars                   17.7138+-0.1977     !     27.1662+-0.0665        ! definitely 1.5336x slower
   infer-one-time-closure-two-vars                   16.9888+-0.8368     !     26.8641+-0.2370        ! definitely 1.5813x slower
   infer-one-time-closure                            16.7379+-0.5725     !     27.8843+-3.9084        ! definitely 1.6659x slower
   infer-one-time-deep-closure                       29.6984+-0.3056     !     53.3060+-0.1967        ! definitely 1.7949x slower
   inline-arguments-access                            2.8155+-0.1350            2.7695+-0.1123          might be 1.0166x faster
   inline-arguments-aliased-access                    3.1365+-0.0726            3.0220+-0.1744          might be 1.0379x faster
   inline-arguments-local-escape                     25.7418+-0.1349           25.7292+-0.7041        
   inline-get-scoped-var                              5.8198+-0.1463     ?      5.9213+-0.1525        ? might be 1.0174x slower
   inlined-put-by-id-transition                      16.8721+-1.7771     ?     18.0001+-1.6120        ? might be 1.0669x slower
   int-or-other-abs-then-get-by-val                   9.5490+-0.0351            9.4943+-0.1991        
   int-or-other-abs-zero-then-get-by-val             34.0172+-0.2931     ?     34.1624+-0.8267        ?
   int-or-other-add-then-get-by-val                   8.4006+-0.1908            8.3348+-0.1562        
   int-or-other-add                                   9.1472+-0.2646            8.9370+-0.1878          might be 1.0235x faster
   int-or-other-div-then-get-by-val                   6.5130+-0.1475     ?      6.5466+-0.1541        ?
   int-or-other-max-then-get-by-val                   7.9655+-0.1190            7.8763+-0.2495          might be 1.0113x faster
   int-or-other-min-then-get-by-val                   7.2291+-0.0852            7.1592+-0.1205        
   int-or-other-mod-then-get-by-val                   6.0799+-0.1594     ?      6.1268+-0.1704        ?
   int-or-other-mul-then-get-by-val                   6.4827+-0.3017            6.4816+-0.2086        
   int-or-other-neg-then-get-by-val                   8.0347+-0.1788     ?      8.0956+-0.1627        ?
   int-or-other-neg-zero-then-get-by-val             34.2698+-0.6073           34.1738+-0.4280        
   int-or-other-sub-then-get-by-val                   8.7798+-0.3754            8.6645+-0.1254          might be 1.0133x faster
   int-or-other-sub                                   6.8898+-0.0309            6.8373+-0.2975        
   int-overflow-local                                 8.0093+-0.2453            7.8735+-0.2589          might be 1.0172x faster
   Int16Array-alloc-long-lived                       76.9608+-1.0634           76.7668+-0.6921        
   Int16Array-bubble-sort-with-byteLength            51.9716+-1.1528           50.7997+-0.2815          might be 1.0231x faster
   Int16Array-bubble-sort                            49.0795+-2.3672     ?     49.4153+-0.2929        ?
   Int16Array-load-int-mul                            2.2545+-0.0352     ?      2.3665+-0.1657        ? might be 1.0497x slower
   Int16Array-to-Int32Array-set                     115.0621+-2.7538          113.6673+-1.8571          might be 1.0123x faster
   Int32Array-alloc-large                            38.2499+-2.0791     ?     38.7213+-1.3738        ? might be 1.0123x slower
   Int32Array-alloc-long-lived                       83.4545+-0.1762     ?     84.2670+-0.9991        ?
   Int32Array-alloc                                   4.8250+-0.0842     ?      4.8977+-0.1246        ? might be 1.0151x slower
   Int32Array-Int8Array-view-alloc                   12.5760+-0.5129     ?     12.5898+-0.4951        ?
   int52-spill                                       12.3936+-0.3048     ?     12.5532+-0.3837        ? might be 1.0129x slower
   Int8Array-alloc-long-lived                        71.3570+-1.8304           71.0410+-1.1916        
   Int8Array-load-with-byteLength                     5.1310+-0.1025     ?      5.2275+-0.1936        ? might be 1.0188x slower
   Int8Array-load                                     5.3022+-0.1295            5.1945+-0.1809          might be 1.0207x faster
   integer-divide                                    19.2576+-0.1415     ?     19.2896+-0.1823        ?
   integer-modulo                                     3.6686+-0.2285     ?      3.6914+-0.1971        ?
   large-int-captured                                12.6235+-0.5776           12.4000+-0.1304          might be 1.0180x faster
   large-int-neg                                     30.3953+-0.4732     !     36.6799+-0.1073        ! definitely 1.2068x slower
   large-int                                         27.6955+-0.6522     !     33.9491+-0.1690        ! definitely 1.2258x slower
   logical-not                                        8.3284+-0.4757            7.9944+-0.1381          might be 1.0418x faster
   lots-of-fields                                    19.4020+-0.9630     ?     19.4133+-0.9242        ?
   make-indexed-storage                               5.3406+-0.3512            5.1228+-0.6225          might be 1.0425x faster
   make-rope-cse                                      6.4365+-0.4104     ?      6.6588+-0.5304        ? might be 1.0345x slower
   marsaglia-larger-ints                             68.9099+-0.9061     !    121.5530+-0.3809        ! definitely 1.7639x slower
   marsaglia-osr-entry                               34.9568+-1.0049     !     59.0480+-0.7334        ! definitely 1.6892x slower
   max-boolean                                        4.0038+-0.0170     ^      3.8951+-0.0801        ^ definitely 1.0279x faster
   method-on-number                                  34.2491+-1.1027           33.6317+-0.7463          might be 1.0184x faster
   min-boolean                                        3.8400+-0.1737     ?      3.8627+-0.1242        ?
   minus-boolean-double                               4.4599+-0.1204            4.4465+-0.1406        
   minus-boolean                                      3.6945+-0.1564            3.6124+-0.0474          might be 1.0227x faster
   misc-strict-eq                                    71.1572+-2.3636     !    104.2823+-1.1226        ! definitely 1.4655x slower
   mod-boolean-double                                14.3255+-0.1245           14.2023+-0.1021        
   mod-boolean                                        9.1544+-0.2036     ?      9.1627+-0.2649        ?
   mul-boolean-double                                 4.9484+-0.0711     ?      5.0229+-0.1017        ? might be 1.0151x slower
   mul-boolean                                        4.0357+-0.0906            3.9935+-0.0778          might be 1.0106x faster
   neg-boolean                                        4.5553+-0.0352     ?      4.5628+-0.0856        ?
   negative-zero-divide                               0.5441+-0.0411     ?      0.6057+-0.0983        ? might be 1.1132x slower
   negative-zero-modulo                               0.5522+-0.0144     ?      0.5700+-0.0280        ? might be 1.0322x slower
   negative-zero-negate                               0.5751+-0.0882     ?      0.6095+-0.1020        ? might be 1.0597x slower
   nested-function-parsing                           41.3818+-1.5392           41.0739+-0.2268        
   new-array-buffer-dead                              3.9998+-0.1372     ?      4.0690+-0.1849        ? might be 1.0173x slower
   new-array-buffer-push                             10.6415+-0.2570           10.4905+-0.6459          might be 1.0144x faster
   new-array-dead                                    17.0543+-0.7157     !     25.2828+-0.1657        ! definitely 1.4825x slower
   new-array-push                                     8.0736+-0.2456            7.5189+-0.3417          might be 1.0738x faster
   number-test                                        4.7886+-0.1771     ?      4.8571+-0.1646        ? might be 1.0143x slower
   object-closure-call                               10.5224+-0.0792           10.4433+-0.2217        
   object-test                                        5.3250+-0.2935            5.3174+-0.1343        
   obvious-sink-pathology-taken                     214.2635+-0.5744     !    252.3495+-1.4259        ! definitely 1.1778x slower
   obvious-sink-pathology                           199.7045+-3.3389     !    224.1775+-1.8527        ! definitely 1.1225x slower
   obviously-elidable-new-object                     53.3845+-4.6002     !    200.5685+-1.9052        ! definitely 3.7571x slower
   plus-boolean-arith                                 4.0507+-0.1373     ?      4.0516+-0.1596        ?
   plus-boolean-double                                4.6918+-0.7086            4.4555+-0.0604          might be 1.0530x faster
   plus-boolean                                       3.7067+-0.2186            3.6240+-0.0470          might be 1.0228x faster
   poly-chain-access-different-prototypes-simple   
                                                      5.0992+-0.0941            5.0823+-0.0442        
   poly-chain-access-different-prototypes             3.6006+-0.1246     ?      3.6530+-0.1820        ? might be 1.0146x slower
   poly-chain-access-simpler                          5.1478+-0.0630     ?      5.1702+-0.1423        ?
   poly-chain-access                                  3.5235+-0.1836            3.4802+-0.1359          might be 1.0124x faster
   poly-stricteq                                    100.5943+-1.4958     ?    101.7350+-2.4594        ? might be 1.0113x slower
   polymorphic-array-call                             2.8863+-0.2757     ?      2.9764+-0.4590        ? might be 1.0312x slower
   polymorphic-get-by-id                              5.4058+-0.6572            5.2473+-0.1539          might be 1.0302x faster
   polymorphic-put-by-id                             45.8995+-2.7530     !     59.6768+-2.3528        ! definitely 1.3002x slower
   polymorphic-structure                             32.9184+-0.5850           32.7490+-0.7483        
   polyvariant-monomorphic-get-by-id                 16.8973+-0.1670     ^     16.3267+-0.2350        ^ definitely 1.0349x faster
   proto-getter-access                               16.7477+-0.4001     !     22.1210+-0.2567        ! definitely 1.3208x slower
   put-by-id-replace-and-transition                  13.5422+-0.1951           13.4939+-0.5020        
   put-by-id-slightly-polymorphic                     4.1270+-0.0970            4.1242+-0.0515        
   put-by-id                                         19.9316+-0.6846           19.7304+-0.2602          might be 1.0102x faster
   put-by-val-direct                                  1.0460+-0.1421            0.9971+-0.1184          might be 1.0490x faster
   put-by-val-large-index-blank-indexing-type   
                                                     10.6899+-0.9303     ?     11.5063+-0.2884        ? might be 1.0764x slower
   put-by-val-machine-int                             4.2477+-0.3137            4.1003+-0.2610          might be 1.0359x faster
   rare-osr-exit-on-local                            25.4911+-0.2411           24.4973+-0.8674          might be 1.0406x faster
   register-pressure-from-osr                        38.5587+-0.1077     ^     38.0007+-0.2934        ^ definitely 1.0147x faster
   setter                                             7.2455+-0.1543            7.0966+-0.1738          might be 1.0210x faster
   simple-activation-demo                            44.9509+-0.7473           44.9391+-0.9497        
   simple-getter-access                              21.6575+-0.0892     !     39.9102+-0.2885        ! definitely 1.8428x slower
   simple-poly-call-nested                           13.4908+-0.4527           13.4630+-0.1723        
   simple-poly-call                                   2.1773+-0.0952            2.1533+-0.2194          might be 1.0111x faster
   sin-boolean                                       29.4828+-1.5170     !     37.4934+-0.0964        ! definitely 1.2717x slower
   sinkable-new-object-dag                          116.6228+-0.8593     !    453.6685+-2.4984        ! definitely 3.8900x slower
   sinkable-new-object-taken                         91.1771+-4.4688     !    242.0369+-0.6390        ! definitely 2.6546x slower
   sinkable-new-object                               60.9850+-0.9860     !    225.5914+-2.3441        ! definitely 3.6991x slower
   slow-array-profile-convergence                     5.0558+-0.2884            5.0335+-0.2434        
   slow-convergence                                   5.6465+-0.3511     ?      5.6841+-0.3164        ?
   sparse-conditional                                 1.8359+-0.1020            1.8192+-0.0972        
   splice-to-remove                                  36.6088+-7.1041           34.9860+-5.2682          might be 1.0464x faster
   string-char-code-at                               30.3575+-0.5042     ?     30.5596+-0.1255        ?
   string-concat-object                               3.2576+-0.3479            3.0875+-0.0603          might be 1.0551x faster
   string-concat-pair-object                          3.2261+-0.4070            3.1658+-0.2467          might be 1.0190x faster
   string-concat-pair-simple                         18.6556+-0.2096           18.5200+-0.2180        
   string-concat-simple                              19.8800+-1.4408           19.3168+-0.2418          might be 1.0292x faster
   string-cons-repeat                                12.0523+-0.2335           11.9501+-0.2123        
   string-cons-tower                                 11.4610+-0.2810     ?     11.5821+-0.3386        ? might be 1.0106x slower
   string-equality                                   33.8660+-1.2201           33.4109+-0.1460          might be 1.0136x faster
   string-get-by-val-big-char                        13.1780+-0.2773     ?     13.2233+-0.3382        ?
   string-get-by-val-out-of-bounds-insane             8.4455+-0.1898            8.3916+-0.2080        
   string-get-by-val-out-of-bounds                    9.5274+-0.0718     ?      9.5297+-0.1453        ?
   string-get-by-val                                  6.7510+-0.1086            6.6613+-0.1287          might be 1.0135x faster
   string-hash                                        3.5029+-0.0523     ?      3.5790+-0.1316        ? might be 1.0217x slower
   string-long-ident-equality                        26.6472+-0.2015     ?     26.7075+-0.2235        ?
   string-repeat-arith                               62.1497+-0.6698     ?     62.3445+-0.3617        ?
   string-sub                                       128.3932+-13.1800         124.9559+-10.3201         might be 1.0275x faster
   string-test                                        4.7396+-0.2010            4.7198+-0.1920        
   string-var-equality                               62.2034+-0.3990     ?     62.4970+-1.1900        ?
   structure-hoist-over-transitions                   4.0231+-0.2828            3.9997+-0.2371        
   substring-concat-weird                            73.2336+-0.6126           73.0629+-0.6829        
   substring-concat                                  77.4042+-1.1964     ?     77.5797+-0.8602        ?
   substring                                         88.8140+-0.2364     ?     88.9866+-0.1945        ?
   switch-char-constant                               3.8516+-0.1636     ?      3.8702+-0.1977        ?
   switch-char                                       11.4363+-0.8443           11.0693+-0.1606          might be 1.0331x faster
   switch-constant                                   16.0402+-1.4455     ^     11.8289+-0.0993        ^ definitely 1.3560x faster
   switch-string-basic-big-var                       28.9197+-3.5943           27.5436+-1.5166          might be 1.0500x faster
   switch-string-basic-big                           24.7867+-1.3142     ?     26.5432+-3.1280        ? might be 1.0709x slower
   switch-string-basic-var                           32.5650+-1.1665           32.4203+-0.6607        
   switch-string-basic                               25.6594+-2.2299           24.6808+-1.9929          might be 1.0396x faster
   switch-string-big-length-tower-var                30.3538+-0.1972     ?     30.3622+-0.1693        ?
   switch-string-length-tower-var                    25.9030+-0.1544     ?     25.9549+-0.3374        ?
   switch-string-length-tower                        20.7535+-0.1659     ?     20.8020+-0.0925        ?
   switch-string-short                               20.5867+-0.2700     ?     20.7989+-0.5326        ? might be 1.0103x slower
   switch                                            19.2795+-1.5976           17.6420+-1.2611          might be 1.0928x faster
   tear-off-arguments-simple                          2.9830+-0.2528            2.9618+-0.2471        
   tear-off-arguments                                 4.6494+-0.1883            4.5898+-0.1310          might be 1.0130x faster
   temporal-structure                                20.3470+-0.1224           20.3274+-0.1620        
   to-int32-boolean                                  25.0353+-0.1112           24.9971+-0.1751        
   undefined-property-access                        583.9514+-2.0631     !   1248.4633+-4.2484        ! definitely 2.1380x slower
   undefined-test                                     4.9692+-0.1013     ?      5.0055+-0.1810        ?
   unprofiled-licm                                   34.7032+-0.5001     !     92.2252+-0.1580        ! definitely 2.6575x slower
   weird-inlining-const-prop                          3.4278+-0.1809            3.2885+-0.1343          might be 1.0424x faster

   <arithmetic>                                      30.5198+-0.0685     !     40.5466+-0.0709        ! definitely 1.3285x slower
   <geometric> *                                     13.5534+-0.0390     !     14.6148+-0.0240        ! definitely 1.0783x slower
   <harmonic>                                         6.7218+-0.0736     ?      6.8254+-0.0598        ? might be 1.0154x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
AsmBench:
   bigfib.cpp                                       878.0169+-4.1164     !   1629.5879+-8.3457        ! definitely 1.8560x slower
   cray.c                                           932.9725+-6.5789     !   1196.9877+-5.0369        ! definitely 1.2830x slower
   dry.c                                           1037.2360+-51.1077    !   2211.6805+-5.8159        ! definitely 2.1323x slower
   FloatMM.c                                       1300.6982+-1.1365     !   3104.3005+-7.1997        ! definitely 2.3866x slower
   gcc-loops.cpp                                   8242.9375+-11.8682    !  21128.2677+-85.1920       ! definitely 2.5632x slower
   n-body.c                                        2459.0804+-1.8172     !   3349.5526+-7.2435        ! definitely 1.3621x slower
   Quicksort.c                                      716.3071+-2.8297     !   1174.3195+-2.6994        ! definitely 1.6394x slower
   stepanov_container.cpp                          6097.1636+-59.6463    !   8004.3325+-69.4672       ! definitely 1.3128x slower
   Towers.c                                         603.8243+-2.3533     !    843.3235+-3.4249        ! definitely 1.3966x slower

   <arithmetic>                                    2474.2485+-7.4511     !   4738.0392+-16.7050       ! definitely 1.9149x slower
   <geometric> *                                   1573.2813+-7.0126     !   2695.5319+-4.5170        ! definitely 1.7133x slower
   <harmonic>                                      1170.5747+-6.0796     !   1902.1325+-2.1761        ! definitely 1.6250x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
CompressionBench:
   huffman                                          986.6367+-3.9390     ?    993.3391+-5.5206        ?
   arithmetic-simple                                755.8078+-4.0038     !    823.0468+-8.9523        ! definitely 1.0890x slower
   arithmetic-precise                               583.7607+-3.9752     !    638.0286+-11.1589       ! definitely 1.0930x slower
   arithmetic-complex-precise                       581.1090+-4.6540     !    632.3051+-5.3181        ! definitely 1.0881x slower
   arithmetic-precise-order-0                       880.3327+-2.1561     !    993.3704+-7.3136        ! definitely 1.1284x slower
   arithmetic-precise-order-1                       634.4040+-7.7519     !    720.2720+-6.7940        ! definitely 1.1354x slower
   arithmetic-precise-order-2                       695.2308+-2.2665     !    734.2612+-4.0503        ! definitely 1.0561x slower
   arithmetic-simple-order-1                        783.2249+-24.0466    !    926.2104+-8.3223        ! definitely 1.1826x slower
   arithmetic-simple-order-2                        856.9854+-9.3096     !   1010.2057+-10.4138       ! definitely 1.1788x slower
   lz-string                                        650.6823+-35.1524         648.1721+-37.3666       

   <arithmetic>                                     740.8174+-3.1775     !    811.9211+-3.9340        ! definitely 1.0960x slower
   <geometric> *                                    729.8222+-3.3225     !    798.2359+-4.8790        ! definitely 1.0937x slower
   <harmonic>                                       719.2511+-3.5920     !    784.8371+-5.8218        ! definitely 1.0912x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
All benchmarks:
   <arithmetic>                                     187.2725+-1.3372     !    260.5900+-0.3086        ! definitely 1.3915x slower
   <geometric>                                       23.1282+-0.0289     !     25.4349+-0.0259        ! definitely 1.0997x slower
   <harmonic>                                         5.8469+-0.0445     !      6.5479+-0.0676        ! definitely 1.1199x slower

                                                         Baseline         CheckFTLCapabilitesAgain                              
Geomean of preferred means:
   <scaled-result>                                  119.5923+-0.4503     !    137.5658+-0.2518        ! definitely 1.1503x slower
Comment 9 Filip Pizlo 2015-02-10 08:18:31 PST
Seems like capabilities is rejecting some SSA-only node. Have you checked which one? The verboseFTLFailure option helps.
Comment 10 Michael Saboff 2015-02-10 13:08:02 PST
Created attachment 246339 [details]
Patch for Review

With the addition of GetArgument to nodes the FTL can compile, performance of this change is neutral.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on msaboff-pro (MacPro5,1).

VMs tested:
"Baseline" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc
"GCDontDropLocks" at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                         Baseline              GCDontDropLocks                                  
SunSpider:
   3d-cube                                            8.4182+-0.1632     ?      8.4540+-0.2904        ?
   3d-morph                                          12.5315+-0.1126           12.3455+-0.1700          might be 1.0151x faster
   3d-raytrace                                       11.2659+-0.2415     ?     11.2862+-0.5272        ?
   access-binary-trees                                3.3699+-0.2193     ?      3.3897+-0.1905        ?
   access-fannkuch                                   10.3343+-0.1275     ?     10.3641+-0.1133        ?
   access-nbody                                       5.3344+-0.1630     ?      5.4145+-0.1666        ? might be 1.0150x slower
   access-nsieve                                      5.7599+-0.2325     ?      5.8395+-0.4122        ? might be 1.0138x slower
   bitops-3bit-bits-in-byte                           2.3200+-0.0779     ?      2.3464+-0.1267        ? might be 1.0114x slower
   bitops-bits-in-byte                                6.4326+-0.0727            6.3898+-0.1107        
   bitops-bitwise-and                                 3.2323+-0.5347            3.0872+-0.0985          might be 1.0470x faster
   bitops-nsieve-bits                                 6.7697+-0.2507            6.7692+-0.2439        
   controlflow-recursive                              3.5411+-0.1371     ?      3.5575+-0.1420        ?
   crypto-aes                                         7.3265+-0.1178            7.2000+-0.2995          might be 1.0176x faster
   crypto-md5                                         4.1788+-0.1741     ?      4.2330+-0.3140        ? might be 1.0130x slower
   crypto-sha1                                        4.2776+-0.1844            4.1335+-0.1470          might be 1.0349x faster
   date-format-tofte                                 16.4802+-0.8108     ?     16.7255+-0.4282        ? might be 1.0149x slower
   date-format-xparb                                  9.0560+-0.3985     ?      9.2162+-0.5968        ? might be 1.0177x slower
   math-cordic                                        5.5895+-0.0596            5.5720+-0.2297        
   math-partial-sums                                 10.9075+-0.1516     ?     11.0041+-0.1998        ?
   math-spectral-norm                                 3.6575+-0.0922            3.5025+-0.0993          might be 1.0443x faster
   regexp-dna                                        11.5829+-0.4284           11.5226+-0.3204        
   string-base64                                      7.2734+-0.4649            7.0970+-0.2133          might be 1.0249x faster
   string-fasta                                      12.1530+-0.1269           11.8853+-0.3384          might be 1.0225x faster
   string-tagcloud                                   17.6798+-0.7478     ?     17.8823+-0.8228        ? might be 1.0115x slower
   string-unpack-code                                37.7018+-0.8088     ?     38.7096+-1.0123        ? might be 1.0267x slower
   string-validate-input                              8.4999+-0.2591            8.3740+-0.0986          might be 1.0150x faster

   <arithmetic> *                                     9.0644+-0.0219     ?      9.0885+-0.0890        ? might be 1.0027x slower
   <geometric>                                        7.3782+-0.0384            7.3558+-0.0622          might be 1.0031x faster
   <harmonic>                                         6.1857+-0.0489            6.1506+-0.0511          might be 1.0057x faster

                                                         Baseline              GCDontDropLocks                                  
LongSpider:
   3d-cube                                         1572.4506+-15.8268    ?   1579.3855+-14.0683       ?
   3d-morph                                        1978.3008+-2.8752     ?   1979.7406+-5.3939        ?
   3d-raytrace                                     1545.5157+-5.8466         1542.8701+-13.7048       
   access-binary-trees                             1857.8989+-12.9700    ?   1865.8145+-14.8117       ?
   access-fannkuch                                  612.4640+-16.6624         603.9508+-27.4607         might be 1.0141x faster
   access-nbody                                    1479.2485+-0.7502     ?   1480.2745+-2.9993        ?
   access-nsieve                                   1815.8328+-22.5018    ?   1816.2382+-1.3841        ?
   bitops-3bit-bits-in-byte                          70.5505+-0.4485     ?     71.1366+-0.8852        ?
   bitops-bits-in-byte                              364.9235+-9.0461     ?    371.5090+-20.2799       ? might be 1.0180x slower
   bitops-nsieve-bits                              1451.4608+-9.9395     ?   1454.1737+-3.7660        ?
   controlflow-recursive                           1088.8662+-3.8220     !   1100.7425+-4.0526        ! definitely 1.0109x slower
   crypto-aes                                      1290.4815+-7.2738         1287.4751+-8.8507        
   crypto-md5                                      1074.3110+-11.4371    ?   1077.0363+-9.5350        ?
   crypto-sha1                                     1451.3952+-6.7547         1447.1078+-2.2909        
   date-format-tofte                               1504.3210+-34.7836    ?   1505.2068+-46.5842       ?
   date-format-xparb                               1382.9160+-34.4685    ?   1386.0083+-58.8536       ?
   math-cordic                                     1048.7971+-2.3046         1047.6755+-3.3711        
   math-partial-sums                               1278.7834+-1.2912     ?   1279.2395+-4.4666        ?
   math-spectral-norm                              1220.3388+-5.9809         1218.7812+-2.6360        
   string-base64                                    633.7208+-2.0387          631.6899+-0.6469        
   string-fasta                                     856.6053+-9.0596          854.2009+-7.9423        
   string-tagcloud                                  420.4265+-3.1453     ?    427.4407+-4.9112        ? might be 1.0167x slower

   <arithmetic>                                    1181.8004+-1.9563     ?   1183.0772+-3.1142        ? might be 1.0011x slower
   <geometric> *                                    996.9258+-2.5696     ?    998.8010+-5.1858        ? might be 1.0019x slower
   <harmonic>                                       625.5198+-2.7878     ?    628.8298+-5.7468        ? might be 1.0053x slower

                                                         Baseline              GCDontDropLocks                                  
V8Spider:
   crypto                                           101.2330+-0.9714           99.7784+-1.0863          might be 1.0146x faster
   deltablue                                        124.5154+-4.9894     ?    126.6332+-5.5302        ? might be 1.0170x slower
   earley-boyer                                      81.0359+-2.9248           80.9374+-2.3870        
   raytrace                                          51.1403+-1.9148           50.2490+-2.2622          might be 1.0177x faster
   regexp                                           127.8777+-1.2461     ?    128.4796+-1.9493        ?
   richards                                         131.1280+-2.5493          130.1443+-3.1131        
   splay                                             58.5543+-2.9304     ?     59.8976+-7.3677        ? might be 1.0229x slower

   <arithmetic>                                      96.4978+-1.0637     ?     96.5885+-1.9003        ? might be 1.0009x slower
   <geometric> *                                     90.8896+-0.8476     ?     90.9124+-2.0287        ? might be 1.0003x slower
   <harmonic>                                        84.9957+-0.6852           84.9280+-2.2587          might be 1.0008x faster

                                                         Baseline              GCDontDropLocks                                  
Octane:
   encrypt                                           0.46304+-0.01328    ?     0.46374+-0.01389       ?
   decrypt                                           8.23338+-0.05522          8.23142+-0.02429       
   deltablue                                x2       0.39298+-0.01138    ?     0.39656+-0.01005       ?
   earley                                            1.31261+-0.01279    ?     1.31339+-0.01974       ?
   boyer                                            11.82759+-0.18553    ?    11.93536+-0.17688       ?
   navier-stokes                            x2       7.37550+-0.00269    ?     7.38452+-0.03123       ?
   raytrace                                 x2       2.61455+-0.06000          2.59075+-0.10635       
   richards                                 x2       0.24120+-0.00097          0.24073+-0.00149       
   splay                                    x2       0.66273+-0.00946          0.66208+-0.00847       
   regexp                                   x2      62.70158+-1.07559         62.29042+-2.17956       
   pdfjs                                    x2      97.02221+-0.86093         96.58048+-1.72717       
   mandreel                                 x2     107.28598+-0.41204        106.62174+-0.70212       
   gbemu                                    x2      96.74476+-4.03921    ?    97.38819+-5.47451       ?
   closure                                           0.96883+-0.00451    ?     0.96913+-0.00360       ?
   jquery                                           12.32544+-0.08550    ?    12.35530+-0.10213       ?
   box2d                                    x2      28.16444+-0.20330    ?    28.17626+-0.14401       ?
   zlib                                     x2     860.01270+-77.42407       859.88035+-84.05314      
   typescript                               x2    1470.67902+-9.90368    ?  1496.47662+-28.37605      ? might be 1.0175x slower

   <arithmetic>                                    183.43087+-5.00017    ?   185.08819+-3.90105       ? might be 1.0090x slower
   <geometric> *                                    13.30281+-0.04420    ?    13.31272+-0.06124       ? might be 1.0007x slower
   <harmonic>                                        1.37335+-0.00442    ?     1.37490+-0.00435       ? might be 1.0011x slower

                                                         Baseline              GCDontDropLocks                                  
Kraken:
   ai-astar                                          828.281+-2.947            818.522+-28.189          might be 1.0119x faster
   audio-beat-detection                              220.410+-1.706            217.615+-5.702           might be 1.0128x faster
   audio-dft                                         292.362+-1.850      ?     298.274+-24.488        ? might be 1.0202x slower
   audio-fft                                         155.227+-0.530      ?     156.124+-0.490         ?
   audio-oscillator                                  427.786+-2.012      ?     428.788+-3.065         ?
   imaging-darkroom                                  335.533+-1.042      ?     336.196+-3.089         ?
   imaging-desaturate                                144.997+-0.237      ?     145.393+-1.363         ?
   imaging-gaussian-blur                             222.434+-16.802           216.910+-0.663           might be 1.0255x faster
   json-parse-financial                               92.556+-1.588      ?      92.907+-1.619         ?
   json-stringify-tinderbox                          112.199+-1.240      ?     114.627+-5.114         ? might be 1.0216x slower
   stanford-crypto-aes                               117.362+-4.287      ?     120.658+-2.694         ? might be 1.0281x slower
   stanford-crypto-ccm                                96.086+-8.788      ?     103.093+-18.441        ? might be 1.0729x slower
   stanford-crypto-pbkdf2                            313.001+-1.601      ?     313.086+-2.011         ?
   stanford-crypto-sha256-iterative                   95.575+-0.941             94.668+-1.720         

   <arithmetic> *                                    246.701+-0.818      ?     246.918+-3.371         ? might be 1.0009x slower
   <geometric>                                       197.155+-0.961      ?     198.474+-3.148         ? might be 1.0067x slower
   <harmonic>                                        165.377+-1.442      ?     167.266+-3.681         ? might be 1.0114x slower

                                                         Baseline              GCDontDropLocks                                  
JSRegress:
   abs-boolean                                        4.6545+-0.1008     ?      4.6977+-0.0741        ?
   adapt-to-double-divide                            19.3527+-0.6111     ?     19.9943+-0.4514        ? might be 1.0332x slower
   aliased-arguments-getbyval                         1.4955+-0.0319            1.4733+-0.0986          might be 1.0151x faster
   allocate-big-object                                3.8573+-0.5466            3.6166+-0.2219          might be 1.0666x faster
   arity-mismatch-inlining                            1.4124+-0.0974            1.2565+-0.0749          might be 1.1240x faster
   array-access-polymorphic-structure                12.4926+-0.2404     ?     12.5963+-0.1836        ?
   array-nonarray-polymorhpic-access                 71.9895+-8.8771           68.9149+-0.1559          might be 1.0446x faster
   array-prototype-every                            187.1476+-5.9625     ?    187.2065+-9.4322        ?
   array-prototype-forEach                          185.5018+-16.1921    ?    185.6143+-5.2219        ?
   array-prototype-map                              223.3948+-6.2899          221.9315+-8.4885        
   array-prototype-some                             192.0681+-9.1314          190.5795+-16.8366       
   array-splice-contiguous                           90.4393+-4.8265     ?     91.5522+-4.7159        ? might be 1.0123x slower
   array-with-double-add                              7.5663+-0.1389            7.4557+-0.2137          might be 1.0148x faster
   array-with-double-increment                        5.4986+-0.0963            5.4875+-0.1367        
   array-with-double-mul-add                         11.7545+-0.1279           11.5923+-0.1017          might be 1.0140x faster
   array-with-double-sum                              5.5007+-0.1519     ?      5.5163+-0.1817        ?
   array-with-int32-add-sub                          13.1166+-0.1854     ?     13.1217+-0.1490        ?
   array-with-int32-or-double-sum                     5.2689+-0.1974     ?      5.3748+-0.2729        ? might be 1.0201x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     65.6398+-2.5010     ?     65.8452+-3.7800        ?
   ArrayBuffer-DataView-alloc-long-lived             27.2765+-1.3810     ?     27.8345+-3.0536        ? might be 1.0205x slower
   ArrayBuffer-Int32Array-byteOffset                  5.2795+-0.1901     ?      5.2905+-0.4848        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     69.6019+-1.3762     ?     71.2387+-5.1734        ? might be 1.0235x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     44.7752+-2.0712           44.2270+-1.2250          might be 1.0124x faster
   ArrayBuffer-Int8Array-alloc-long-lived            25.0690+-0.6854     ?     27.1992+-3.2519        ? might be 1.0850x slower
   ArrayBuffer-Int8Array-alloc                       21.3313+-0.8172           21.1887+-0.8477        
   asmjs_bool_bug                                    12.9000+-0.2973           12.7668+-0.0764          might be 1.0104x faster
   assign-custom-setter-polymorphic                   6.1367+-0.1806            6.0308+-0.2188          might be 1.0176x faster
   assign-custom-setter                               8.1672+-0.1334     ?      8.2919+-0.2043        ? might be 1.0153x slower
   basic-set                                         17.5738+-0.4739     ?     18.1650+-1.2100        ? might be 1.0336x slower
   big-int-mul                                        7.7270+-0.1088            7.7198+-0.0846        
   boolean-test                                       4.9018+-0.0622     ?      4.9471+-0.0962        ?
   branch-fold                                        5.1659+-0.1001     ?      5.1785+-0.0697        ?
   by-val-generic                                    15.2974+-0.2972     ?     15.6628+-0.2196        ? might be 1.0239x slower
   call-spread-apply                                 26.5145+-0.7496           26.2604+-0.8804        
   call-spread-call                                  11.6060+-0.6335     ?     11.6605+-0.5409        ?
   captured-assignments                               0.8287+-0.1338     ?      0.8297+-0.1586        ?
   cast-int-to-double                                 8.5576+-0.1353            8.5499+-0.1462        
   cell-argument                                     12.0210+-0.2253     ?     12.1844+-0.2870        ? might be 1.0136x slower
   cfg-simplify                                       4.0751+-0.2984            3.9841+-0.1415          might be 1.0228x faster
   chain-getter-access                               17.0258+-0.6231           16.9030+-0.2355        
   cmpeq-obj-to-obj-other                            16.3461+-0.8813           16.1530+-0.2867          might be 1.0120x faster
   constant-test                                      8.0795+-0.1347     ?      8.0857+-0.0887        ?
   DataView-custom-properties                        74.0634+-3.0873           72.5284+-1.9700          might be 1.0212x faster
   delay-tear-off-arguments-strictmode               44.4702+-2.4880           44.3380+-0.9907        
   destructuring-arguments                            9.1158+-0.1124     ?      9.2268+-0.3004        ? might be 1.0122x slower
   destructuring-swap                                 8.2737+-0.2112            8.2017+-0.1495        
   direct-arguments-getbyval                          1.5498+-0.0580     ?      1.5948+-0.0885        ? might be 1.0290x slower
   div-boolean-double                                 5.9710+-0.1101            5.9473+-0.1471        
   div-boolean                                       10.1363+-0.1685     ?     10.1957+-0.0914        ?
   double-get-by-val-out-of-bounds                    7.9268+-0.1203     ?      7.9448+-0.3699        ?
   double-pollution-getbyval                         10.0666+-0.0848           10.0246+-0.1511        
   double-pollution-putbyoffset                       7.9918+-0.1625            7.9761+-0.0645        
   double-to-int32-typed-array-no-inline              3.6428+-0.1966     ?      3.7709+-0.2960        ? might be 1.0352x slower
   double-to-int32-typed-array                        3.1005+-0.1723     ?      3.2510+-0.0592        ? might be 1.0485x slower
   double-to-uint32-typed-array-no-inline             3.7531+-0.1611     ?      3.7822+-0.1117        ?
   double-to-uint32-typed-array                       3.3169+-0.1672     ?      3.4016+-0.0778        ? might be 1.0255x slower
   elidable-new-object-dag                           62.3590+-1.7917     ?     62.3649+-0.9649        ?
   elidable-new-object-roflcopter                   237.8345+-0.5354          237.2275+-3.8306        
   elidable-new-object-then-call                     59.6786+-1.0979     ?     59.7554+-0.6394        ?
   elidable-new-object-tree                          69.5608+-2.0522           69.3770+-1.7358        
   empty-string-plus-int                             10.3713+-0.4963     ?     10.4081+-0.2331        ?
   emscripten-cube2hash                              58.9937+-2.8777           57.2469+-0.8571          might be 1.0305x faster
   external-arguments-getbyval                        2.4733+-0.1644     ?      2.6055+-0.0549        ? might be 1.0535x slower
   external-arguments-putbyval                        3.8029+-0.2167            3.7583+-0.2723          might be 1.0119x faster
   fixed-typed-array-storage-var-index                1.9705+-0.1155            1.9130+-0.1172          might be 1.0300x faster
   fixed-typed-array-storage                          1.4205+-0.1536     ?      1.5037+-0.1146        ? might be 1.0585x slower
   Float32Array-matrix-mult                           8.6047+-0.6410     ?      8.7645+-1.0707        ? might be 1.0186x slower
   Float32Array-to-Float64Array-set                 116.5335+-1.2744     ?    119.3748+-7.6337        ? might be 1.0244x slower
   Float64Array-alloc-long-lived                    104.0468+-0.2593          103.6662+-0.3895        
   Float64Array-to-Int16Array-set                   148.9898+-6.4143          143.4996+-0.3547          might be 1.0383x faster
   fold-double-to-int                                23.9456+-0.1385           23.7025+-0.3318          might be 1.0103x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     14.5051+-0.5287     ?     14.8297+-1.3090        ? might be 1.0224x slower
   fold-get-by-id-to-multi-get-by-offset             12.3587+-0.6665     ?     12.5906+-0.4061        ? might be 1.0188x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.8820+-1.2692     ?     11.0045+-1.3174        ? might be 1.0113x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.7514+-0.1000     ?     11.3784+-1.2265        ? might be 1.0583x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.3288+-1.2627            9.9453+-0.9965          might be 1.0386x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.8533+-1.0844            8.1558+-1.2579          might be 1.0855x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     15.7582+-1.4230           15.6997+-1.5090        
   fold-put-by-id-to-multi-put-by-offset             12.3923+-0.6360     ^     11.2931+-0.2172        ^ definitely 1.0973x faster
   fold-put-structure                                 8.7355+-1.2192            8.4242+-0.7025          might be 1.0370x faster
   for-of-iterate-array-entries                      10.8713+-0.2986     ?     11.1339+-0.3514        ? might be 1.0242x slower
   for-of-iterate-array-keys                          4.9062+-0.1528     ?      5.1445+-0.1526        ? might be 1.0486x slower
   for-of-iterate-array-values                        4.2009+-0.3647     ?      4.4331+-0.3128        ? might be 1.0553x slower
   fround                                            25.7797+-0.9133     ?     25.8633+-0.4932        ?
   ftl-library-inlining-dataview                    154.1937+-16.4122    ?    163.3884+-35.6620       ? might be 1.0596x slower
   ftl-library-inlining                             137.4650+-7.6708          132.9558+-0.2219          might be 1.0339x faster
   function-dot-apply                                 2.8934+-0.1718            2.8358+-0.1823          might be 1.0203x faster
   function-test                                      5.4753+-0.1121     ?      5.5850+-0.0873        ? might be 1.0200x slower
   function-with-eval                               221.8502+-2.4193     ?    224.4473+-3.2197        ? might be 1.0117x slower
   gcse-poly-get-less-obvious                        36.7003+-0.3625     ?     36.8351+-0.5225        ?
   gcse-poly-get                                     36.8918+-0.5441           36.7315+-0.2858        
   gcse                                               9.1646+-0.1711     ?      9.2031+-0.2400        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      4.1537+-0.2285            4.0828+-0.1580          might be 1.0174x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                     12.0768+-0.0904           11.9962+-0.0835        
   get-by-id-chain-from-try-block                    19.6868+-0.1434           19.5738+-0.1529        
   get-by-id-check-structure-elimination             10.7141+-0.1719     ?     10.7539+-0.1667        ?
   get-by-id-proto-or-self                           32.2889+-4.9828           30.8953+-0.8073          might be 1.0451x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      5.2346+-0.1283            5.0843+-0.0552          might be 1.0296x faster
   get-by-id-self-or-proto                           32.5116+-3.3519           31.6240+-3.8106          might be 1.0281x faster
   get-by-val-out-of-bounds                           7.5823+-0.0792     ?      7.8698+-0.4309        ? might be 1.0379x slower
   get_callee_monomorphic                             6.0835+-0.6218     ?      6.3014+-0.5218        ? might be 1.0358x slower
   get_callee_polymorphic                             5.2173+-0.2648     ?      5.3146+-0.3111        ? might be 1.0187x slower
   getter-no-activation                               6.3169+-0.0424     ?      6.3377+-0.0557        ?
   getter-richards                                  179.4138+-4.1424     ?    179.5891+-4.4725        ?
   getter                                             9.0655+-0.6084            9.0225+-0.3642        
   global-var-const-infer-fire-from-opt               1.6066+-0.2165            1.5850+-0.2767          might be 1.0136x faster
   global-var-const-infer                             1.5861+-0.0430     ?      1.6118+-0.2625        ? might be 1.0162x slower
   HashMap-put-get-iterate-keys                      50.1355+-0.4759     ?     50.6242+-2.4185        ?
   HashMap-put-get-iterate                           48.8799+-0.8023     ?     49.1795+-0.7087        ?
   HashMap-string-put-get-iterate                    49.7312+-0.8450     ?     49.8484+-0.5696        ?
   hoist-make-rope                                   16.1805+-0.6725     ?     16.9859+-1.6259        ? might be 1.0498x slower
   hoist-poly-check-structure-effectful-loop   
                                                      9.6718+-0.1211            9.5989+-0.2094        
   hoist-poly-check-structure                         6.2363+-0.1985     ?      6.3167+-0.0493        ? might be 1.0129x slower
   imul-double-only                                  13.1089+-2.2498           12.6905+-1.4664          might be 1.0330x faster
   imul-int-only                                     14.5789+-0.1185     ?     14.6594+-0.3395        ?
   imul-mixed                                        12.2266+-0.4641     ?     12.8387+-1.1413        ? might be 1.0501x slower
   in-four-cases                                     36.2007+-0.5397           35.9999+-0.0827        
   in-one-case-false                                 18.6770+-0.3047           18.5905+-0.2504        
   in-one-case-true                                  18.5460+-0.1473     ?     18.6664+-0.3203        ?
   in-two-cases                                      19.3434+-0.0931     ?     19.4129+-0.0942        ?
   indexed-properties-in-objects                      4.6365+-0.1307     ?      4.6815+-0.0618        ?
   infer-closure-const-then-mov-no-inline             5.9440+-0.1169     ?      6.0260+-0.1108        ? might be 1.0138x slower
   infer-closure-const-then-mov                      26.4353+-1.0216           26.2432+-0.1218        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     19.8334+-0.1292     ?     19.9190+-0.1847        ?
   infer-closure-const-then-put-to-scope             33.5945+-1.1687     ?     34.1675+-1.2123        ? might be 1.0171x slower
   infer-closure-const-then-reenter-no-inline   
                                                     92.9028+-0.1778           92.8307+-0.2439        
   infer-closure-const-then-reenter                  31.6311+-0.2693     ?     31.9343+-0.3087        ?
   infer-constant-global-property                    38.9811+-0.1272           38.8700+-0.0992        
   infer-constant-property                            3.5612+-0.1180     ?      3.6152+-0.1376        ? might be 1.0152x slower
   infer-one-time-closure-ten-vars                   17.7716+-0.2258     ?     18.0256+-0.9638        ? might be 1.0143x slower
   infer-one-time-closure-two-vars                   16.8160+-0.6024     ?     17.1002+-0.2575        ? might be 1.0169x slower
   infer-one-time-closure                            16.8242+-0.2903     ?     16.8865+-0.3971        ?
   infer-one-time-deep-closure                       29.9249+-1.2084     ?     29.9713+-0.4506        ?
   inline-arguments-access                            2.7684+-0.0437     ?      2.8510+-0.2293        ? might be 1.0299x slower
   inline-arguments-aliased-access                    3.1318+-0.0828     ?      3.1490+-0.1237        ?
   inline-arguments-local-escape                     25.7004+-0.6012     ?     25.8563+-0.3643        ?
   inline-get-scoped-var                              5.9445+-0.1765            5.8370+-0.1153          might be 1.0184x faster
   inlined-put-by-id-transition                      18.0613+-1.9021     ?     18.4288+-0.1420        ? might be 1.0203x slower
   int-or-other-abs-then-get-by-val                   9.4550+-0.1142     ?      9.4913+-0.1928        ?
   int-or-other-abs-zero-then-get-by-val             34.2383+-0.6654           33.9043+-0.3192        
   int-or-other-add-then-get-by-val                   8.4260+-0.2032     ?      8.5445+-0.2433        ? might be 1.0141x slower
   int-or-other-add                                   9.0619+-0.0778     ?      9.0886+-0.2179        ?
   int-or-other-div-then-get-by-val                   6.4757+-0.0938     ?      6.5332+-0.1177        ?
   int-or-other-max-then-get-by-val                   7.9882+-0.1066     ?      8.1210+-0.2448        ? might be 1.0166x slower
   int-or-other-min-then-get-by-val                   7.2601+-0.1107     ?      7.2715+-0.1845        ?
   int-or-other-mod-then-get-by-val                   6.2218+-0.2850            6.1956+-0.0833        
   int-or-other-mul-then-get-by-val                   6.4114+-0.1926     ?      6.4952+-0.1481        ? might be 1.0131x slower
   int-or-other-neg-then-get-by-val                   8.0944+-0.1098            8.0889+-0.1770        
   int-or-other-neg-zero-then-get-by-val             34.1515+-0.4809           33.8409+-0.2093        
   int-or-other-sub-then-get-by-val                   8.7601+-0.1033            8.6185+-0.0679          might be 1.0164x faster
   int-or-other-sub                                   6.9061+-0.3401     ?      6.9680+-0.1051        ?
   int-overflow-local                                 7.9780+-0.1877     ?      7.9924+-0.0832        ?
   Int16Array-alloc-long-lived                       77.0925+-0.1268     ^     76.5705+-0.3326        ^ definitely 1.0068x faster
   Int16Array-bubble-sort-with-byteLength            51.0751+-0.4058     ?     51.3408+-0.5052        ?
   Int16Array-bubble-sort                            49.8894+-0.4473           49.6786+-0.2021        
   Int16Array-load-int-mul                            2.3148+-0.0959            2.3042+-0.1090        
   Int16Array-to-Int32Array-set                     126.8885+-37.2383    ?    128.5230+-38.8723       ? might be 1.0129x slower
   Int32Array-alloc-large                            38.2947+-0.8977           38.0353+-1.3629        
   Int32Array-alloc-long-lived                       84.4915+-0.8421     ?     84.5505+-1.3463        ?
   Int32Array-alloc                                   4.9767+-0.1688            4.7601+-0.1492          might be 1.0455x faster
   Int32Array-Int8Array-view-alloc                   12.7070+-0.5780           12.3931+-0.5526          might be 1.0253x faster
   int52-spill                                       12.1982+-0.4893     ?     12.6000+-0.3576        ? might be 1.0329x slower
   Int8Array-alloc-long-lived                        71.3340+-1.1899           70.4129+-0.7941          might be 1.0131x faster
   Int8Array-load-with-byteLength                     5.2761+-0.2294            5.2421+-0.2216        
   Int8Array-load                                     5.1584+-0.1096     ?      5.2700+-0.0917        ? might be 1.0216x slower
   integer-divide                                    19.2887+-0.1819     ?     19.3428+-0.1846        ?
   integer-modulo                                     3.6653+-0.1631            3.5782+-0.1457          might be 1.0243x faster
   large-int-captured                                12.2614+-0.1279     ?     12.6848+-0.4867        ? might be 1.0345x slower
   large-int-neg                                     30.6094+-0.3377     ?     30.6644+-0.0403        ?
   large-int                                         27.7270+-0.1358     ?     27.7870+-0.1581        ?
   logical-not                                        8.4051+-0.2113            8.0862+-0.3146          might be 1.0394x faster
   lots-of-fields                                    19.1578+-0.3510     ?     19.3359+-0.2173        ?
   make-indexed-storage                               5.2587+-0.6761     ?      5.4574+-0.1207        ? might be 1.0378x slower
   make-rope-cse                                      6.4254+-0.3720            6.3045+-0.3535          might be 1.0192x faster
   marsaglia-larger-ints                             68.4944+-1.2980           68.3429+-0.8048        
   marsaglia-osr-entry                               34.6706+-1.1035     ?     34.7924+-0.6926        ?
   max-boolean                                        4.0743+-0.1784            3.9473+-0.1376          might be 1.0322x faster
   method-on-number                                  33.9269+-0.2022     ?     34.1981+-1.0151        ?
   min-boolean                                        3.8382+-0.1578     ?      3.8660+-0.2156        ?
   minus-boolean-double                               4.4182+-0.1638     ?      4.4248+-0.1018        ?
   minus-boolean                                      3.7380+-0.0944     ?      3.7861+-0.0624        ? might be 1.0129x slower
   misc-strict-eq                                    74.3518+-7.9824           71.5353+-1.3269          might be 1.0394x faster
   mod-boolean-double                                14.4360+-0.2254           14.3428+-0.1270        
   mod-boolean                                        9.1984+-0.0591            9.1083+-0.1100        
   mul-boolean-double                                 5.1852+-0.6855            5.0608+-0.1051          might be 1.0246x faster
   mul-boolean                                        4.0546+-0.1205            4.0192+-0.1044        
   neg-boolean                                        4.6334+-0.1319     ?      4.6467+-0.1506        ?
   negative-zero-divide                               0.6107+-0.1278     ?      0.6289+-0.1460        ? might be 1.0298x slower
   negative-zero-modulo                               0.5576+-0.0173     ?      0.5930+-0.0952        ? might be 1.0635x slower
   negative-zero-negate                               0.5408+-0.1091            0.5388+-0.1032        
   nested-function-parsing                           41.5181+-1.7234     ?     42.3985+-1.5201        ? might be 1.0212x slower
   new-array-buffer-dead                              4.0348+-0.2512     ?      4.1336+-0.1203        ? might be 1.0245x slower
   new-array-buffer-push                             10.3823+-0.3156     ?     10.4253+-0.0880        ?
   new-array-dead                                    17.5992+-1.5918           17.5905+-0.9402        
   new-array-push                                     8.0272+-0.1962     ?      8.0565+-0.3378        ?
   number-test                                        4.8040+-0.1225     ?      4.8043+-0.1512        ?
   object-closure-call                               10.6111+-0.2575           10.5595+-0.1573        
   object-test                                        5.2485+-0.1693            5.1948+-0.1835          might be 1.0103x faster
   obvious-sink-pathology-taken                     215.1147+-3.3997          214.1620+-0.4644        
   obvious-sink-pathology                           200.1269+-8.1760          199.9217+-1.9846        
   obviously-elidable-new-object                     55.3165+-1.5017           54.9796+-1.2386        
   plus-boolean-arith                                 4.0870+-0.1010            4.0074+-0.1210          might be 1.0199x faster
   plus-boolean-double                                4.4862+-0.1642            4.4242+-0.0713          might be 1.0140x faster
   plus-boolean                                       3.5700+-0.1719     ?      3.7527+-0.0908        ? might be 1.0512x slower
   poly-chain-access-different-prototypes-simple   
                                                      5.1960+-0.2069            5.0916+-0.0796          might be 1.0205x faster
   poly-chain-access-different-prototypes             3.6784+-0.1030            3.5420+-0.0853          might be 1.0385x faster
   poly-chain-access-simpler                          5.2195+-0.1059            5.1636+-0.1145          might be 1.0108x faster
   poly-chain-access                                  3.4917+-0.1433     ?      3.5483+-0.1412        ? might be 1.0162x slower
   poly-stricteq                                    100.1656+-0.1469          100.0320+-0.4477        
   polymorphic-array-call                             2.9268+-0.1696            2.7316+-0.1322          might be 1.0715x faster
   polymorphic-get-by-id                              5.2484+-0.1124     ?      5.2796+-0.1482        ?
   polymorphic-put-by-id                             48.1115+-0.5151     ?     49.0697+-8.2517        ? might be 1.0199x slower
   polymorphic-structure                             33.3530+-1.2016           32.7623+-0.9687          might be 1.0180x faster
   polyvariant-monomorphic-get-by-id                 16.9235+-0.1080           16.8543+-0.1604        
   proto-getter-access                               16.7967+-0.6746     ?     16.8078+-0.5516        ?
   put-by-id-replace-and-transition                  13.6254+-0.0431     ?     13.6846+-0.2404        ?
   put-by-id-slightly-polymorphic                     4.0937+-0.1532     ?      4.1898+-0.0794        ? might be 1.0235x slower
   put-by-id                                         19.5258+-0.1566     ?     19.9422+-0.7256        ? might be 1.0213x slower
   put-by-val-direct                                  0.9742+-0.0450     ?      1.0237+-0.1441        ? might be 1.0508x slower
   put-by-val-large-index-blank-indexing-type   
                                                     10.8092+-0.8496     ?     11.6863+-0.2738        ? might be 1.0811x slower
   put-by-val-machine-int                             4.1487+-0.1740     ?      4.1952+-0.2794        ? might be 1.0112x slower
   rare-osr-exit-on-local                            25.5348+-0.1545           25.5187+-0.3310        
   register-pressure-from-osr                        38.4960+-0.1936     ?     38.6727+-0.0769        ?
   setter                                             7.2130+-0.0968     ?      7.2328+-0.0739        ?
   simple-activation-demo                            44.9634+-0.3848           44.7938+-0.5353        
   simple-getter-access                              21.7957+-0.4772     ?     22.1135+-0.7077        ? might be 1.0146x slower
   simple-poly-call-nested                           13.0504+-0.3860     ?     13.3170+-0.2746        ? might be 1.0204x slower
   simple-poly-call                                   2.1075+-0.2394     ?      2.1107+-0.3298        ?
   sin-boolean                                       29.0068+-0.6013     ?     30.5367+-1.1111        ? might be 1.0527x slower
   sinkable-new-object-dag                          116.1004+-1.2779     ?    116.1453+-1.2708        ?
   sinkable-new-object-taken                         90.1947+-1.1470     ?     90.2230+-0.6040        ?
   sinkable-new-object                               60.7133+-0.7831           60.1281+-1.4341        
   slow-array-profile-convergence                     5.1678+-0.2608            5.1115+-0.5768          might be 1.0110x faster
   slow-convergence                                   5.5082+-0.2399     ?      5.7157+-0.3581        ? might be 1.0377x slower
   sparse-conditional                                 1.8230+-0.0778            1.8137+-0.1822        
   splice-to-remove                                  36.6860+-6.2339     ?     37.4087+-4.8565        ? might be 1.0197x slower
   string-char-code-at                               30.4198+-0.5544     ?     30.6482+-0.6200        ?
   string-concat-object                               3.2625+-0.4250            3.2300+-0.2563          might be 1.0101x faster
   string-concat-pair-object                          3.4754+-0.1915     ?      3.5167+-0.0466        ? might be 1.0119x slower
   string-concat-pair-simple                         18.8889+-0.4752           18.6403+-0.3163          might be 1.0133x faster
   string-concat-simple                              19.6453+-0.5054           19.4712+-0.6016        
   string-cons-repeat                                12.0885+-0.4172           11.7490+-0.1585          might be 1.0289x faster
   string-cons-tower                                 11.7847+-0.3797           11.4280+-0.4871          might be 1.0312x faster
   string-equality                                   33.8126+-0.9173           33.6017+-0.3902        
   string-get-by-val-big-char                        13.4598+-0.3470     ?     13.8488+-1.1826        ? might be 1.0289x slower
   string-get-by-val-out-of-bounds-insane             8.3265+-0.3481     ?      8.5162+-0.3630        ? might be 1.0228x slower
   string-get-by-val-out-of-bounds                    9.5153+-0.2000     ?      9.6157+-0.2603        ? might be 1.0106x slower
   string-get-by-val                                  6.7004+-0.0627     ?      6.8144+-0.2128        ? might be 1.0170x slower
   string-hash                                        3.6866+-0.0850            3.6252+-0.2137          might be 1.0169x faster
   string-long-ident-equality                        26.6011+-0.2583     ?     26.7570+-0.2267        ?
   string-repeat-arith                               62.3745+-0.1286     ?     62.6171+-0.3591        ?
   string-sub                                       122.9592+-7.1406     ?    123.6145+-6.0449        ?
   string-test                                        4.6650+-0.1218     ?      4.7573+-0.2209        ? might be 1.0198x slower
   string-var-equality                               61.9735+-0.4045     ?     62.0135+-0.4012        ?
   structure-hoist-over-transitions                   4.0211+-0.2445     ?      4.0335+-0.2540        ?
   substring-concat-weird                            73.1310+-0.4691     ?     73.1920+-0.7983        ?
   substring-concat                                  77.1300+-0.4742     ?     77.7907+-0.9704        ?
   substring                                         89.0831+-0.7636           88.9203+-0.4069        
   switch-char-constant                               3.8557+-0.2372     ?      3.8702+-0.1269        ?
   switch-char                                       11.2290+-0.0767           11.1948+-0.0271        
   switch-constant                                   15.9353+-0.5084           15.4952+-0.7201          might be 1.0284x faster
   switch-string-basic-big-var                       30.1849+-0.6670     ?     30.8915+-4.0400        ? might be 1.0234x slower
   switch-string-basic-big                           24.2051+-1.0537     ?     24.4816+-1.0980        ? might be 1.0114x slower
   switch-string-basic-var                           32.3972+-0.7530           32.2527+-1.1010        
   switch-string-basic                               24.6594+-1.1668     ?     24.7790+-3.6750        ?
   switch-string-big-length-tower-var                30.3163+-0.1803           30.2670+-0.1426        
   switch-string-length-tower-var                    25.9023+-0.2995     ?     26.0675+-0.3798        ?
   switch-string-length-tower                        20.9170+-0.3035     ?     20.9708+-0.3997        ?
   switch-string-short                               20.4302+-0.4061     ?     20.6995+-0.2808        ? might be 1.0132x slower
   switch                                            20.1923+-3.0800           20.1823+-3.7469        
   tear-off-arguments-simple                          3.1180+-0.2133     ?      3.1375+-0.1730        ?
   tear-off-arguments                                 4.7030+-0.0983            4.6130+-0.2698          might be 1.0195x faster
   temporal-structure                                20.2697+-0.3275     ?     20.4108+-0.3703        ?
   to-int32-boolean                                  25.0076+-0.1309     ?     25.2031+-0.6102        ?
   undefined-property-access                        586.5524+-3.5528     ?    594.8389+-13.0704       ? might be 1.0141x slower
   undefined-test                                     4.9396+-0.1152     ?      4.9655+-0.1334        ?
   unprofiled-licm                                   34.9355+-0.6572           34.6259+-0.9224        
   weird-inlining-const-prop                          3.3925+-0.2007     ?      3.4482+-0.1229        ? might be 1.0164x slower

   <arithmetic>                                      30.5943+-0.1601     ?     30.6418+-0.1686        ? might be 1.0016x slower
   <geometric> *                                     13.5852+-0.0523     ?     13.6146+-0.0772        ? might be 1.0022x slower
   <harmonic>                                         6.7466+-0.1351     ?      6.7761+-0.0829        ? might be 1.0044x slower

                                                         Baseline              GCDontDropLocks                                  
AsmBench:
   bigfib.cpp                                       885.9561+-14.4322         885.2551+-10.2143       
   cray.c                                           939.0995+-19.5729         937.8809+-9.9572        
   dry.c                                           1036.8992+-49.4114    ?   1040.2014+-52.5562       ?
   FloatMM.c                                       1300.5830+-1.2492     ?   1301.7482+-4.2456        ?
   gcc-loops.cpp                                   8243.2223+-26.0528        8239.2985+-37.6850       
   n-body.c                                        2461.7712+-5.4009         2461.5670+-2.6966        
   Quicksort.c                                      716.7245+-4.6225          709.4655+-15.1560         might be 1.0102x faster
   stepanov_container.cpp                          6126.7295+-52.5106    ?   6141.3320+-143.1878      ?
   Towers.c                                         604.7589+-1.0772     ?    604.8128+-2.1064        ?

   <arithmetic>                                    2479.5271+-8.2109     ?   2480.1735+-10.5904       ? might be 1.0003x slower
   <geometric> *                                   1577.3336+-5.9145         1576.2140+-6.6186          might be 1.0007x faster
   <harmonic>                                      1173.8192+-4.9787         1171.9223+-8.9496          might be 1.0016x faster

                                                         Baseline              GCDontDropLocks                                  
CompressionBench:
   huffman                                          985.9033+-6.2595     ?    994.1664+-5.1978        ?
   arithmetic-simple                                757.3226+-4.5343          756.6260+-4.4654        
   arithmetic-precise                               583.3495+-0.7610          580.8860+-1.9744        
   arithmetic-complex-precise                       579.1113+-5.5740     ?    582.7550+-6.9453        ?
   arithmetic-precise-order-0                       876.9205+-17.1287         872.4954+-13.8249       
   arithmetic-precise-order-1                       648.0650+-37.3673         635.1788+-3.8598          might be 1.0203x faster
   arithmetic-precise-order-2                       692.7225+-2.0392          688.6235+-3.1584        
   arithmetic-simple-order-1                        774.2105+-1.9221     ?    775.4611+-2.0768        ?
   arithmetic-simple-order-2                        865.3110+-11.6704         860.4604+-8.5941        
   lz-string                                        648.7929+-32.9223         636.9789+-28.2791         might be 1.0185x faster

   <arithmetic>                                     741.1709+-3.7991          738.3632+-2.2673          might be 1.0038x faster
   <geometric> *                                    730.2445+-4.4793          727.0790+-2.4987          might be 1.0044x faster
   <harmonic>                                       719.7312+-5.0940          716.3110+-2.6989          might be 1.0048x faster

                                                         Baseline              GCDontDropLocks                                  
All benchmarks:
   <arithmetic>                                     187.1217+-0.5054     ?    187.3061+-0.4097        ? might be 1.0010x slower
   <geometric>                                       23.1686+-0.0660     ?     23.2056+-0.1036        ? might be 1.0016x slower
   <harmonic>                                         5.8685+-0.0738     ?      5.8843+-0.0394        ? might be 1.0027x slower

                                                         Baseline              GCDontDropLocks                                  
Geomean of preferred means:
   <scaled-result>                                  119.7111+-0.2297     ?    119.7625+-0.3776        ? might be 1.0004x slower
Comment 11 Filip Pizlo 2015-02-10 13:49:20 PST
Comment on attachment 246339 [details]
Patch for Review

View in context: https://bugs.webkit.org/attachment.cgi?id=246339&action=review

> Source/JavaScriptCore/dfg/DFGPlan.cpp:387
> -            
> +
> +        if (FTL::canCompile(dfg) == FTL::CannotCompile) {
> +            finalizer = std::make_unique<FailedFinalizer>(*this);
> +            return FailPath;
> +        }
> +

Maybe it's even better to do this before the LLVM initialization step?  Perhaps just before the dumpAndVerifyGraph(dfg, "Graph jump before FTL lowering:").
Comment 12 Michael Saboff 2015-02-10 13:54:03 PST
> Maybe it's even better to do this before the LLVM initialization step? 
> Perhaps just before the dumpAndVerifyGraph(dfg, "Graph jump before FTL
> lowering:").

I moved it as you suggested.
Comment 13 Michael Saboff 2015-02-10 13:59:55 PST
Committed r179882: <http://trac.webkit.org/changeset/179882>
Comment 14 Cody A. Taylor 2015-02-11 06:31:23 PST
*** Bug 141042 has been marked as a duplicate of this bug. ***
Comment 15 Cody A. Taylor 2015-04-10 07:41:11 PDT
I still see the linked application crash with Safari 8.0.4 on OS X Yosemite 10.10.2.

Is it expected that this fixed is in Safari 8.0.4?
Comment 16 Michael Saboff 2015-04-10 10:24:52 PDT
(In reply to comment #15)
> I still see the linked application crash with Safari 8.0.4 on OS X Yosemite
> 10.10.2.
> 
> Is it expected that this fixed is in Safari 8.0.4?

This fix is not in 8.0.4 because we missed the deadline.  It should be in the next Safari update/release.
Comment 17 Cody A. Taylor 2015-04-27 11:02:23 PDT
*** Bug 141042 has been marked as a duplicate of this bug. ***