[webkit-reviews] review requested: [Bug 72311] Inline caches that refer to otherwise dead objects should be cleared : [Attachment 115728] the patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Nov 17 20:01:07 PST 2011


Filip Pizlo <fpizlo at apple.com> has asked  for review:
Bug 72311: Inline caches that refer to otherwise dead objects should be cleared
https://bugs.webkit.org/show_bug.cgi?id=72311

Attachment 115728: the patch
https://bugs.webkit.org/attachment.cgi?id=115728&action=review

------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
This combines the patch on https://bugs.webkit.org/show_bug.cgi?id=72312 with
full inline cache clearing support.  So far it looks like it works, and
performance looks mostly fine, except something strange is happening in
V8-regexp.



[pizlo at nitroflex bencher] ./bencher
TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
WeakCaches:/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc
--remote oldmac,bigmac
Packaging VM builds for remote hosts...
Sending VM builds to oldmac...
Running on oldmac...
376/376 							
Generating benchmark report at
TipOfTree_WeakCaches_SunSpiderV8Kraken_20111117_1949_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
(r100674)
"WeakCaches" at
/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r100674)

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

					    TipOfTree		    WeakCaches 
				 
SunSpider:
   3d-cube				  9.0475+-0.0387	 
8.9664+-0.0477	     
   3d-morph				 10.4450+-0.1721    ^	
10.1015+-0.0355       ^ definitely 1.0340x faster
   3d-raytrace				  9.2003+-0.0617    ?	 
9.2515+-0.0654	     ?
   access-binary-trees			  1.9097+-0.0069    ?	 
1.9349+-0.0326	     ? might be 1.0132x slower
   access-fannkuch			  9.1217+-0.0200    ^	 
9.0871+-0.0084	     ^ definitely 1.0038x faster
   access-nbody 			  5.0345+-0.0044    ?	 
5.0679+-0.0381	     ?
   access-nsieve			  3.7133+-0.0101	 
3.7111+-0.0060	     
   bitops-3bit-bits-in-byte		  1.4966+-0.0164	 
1.4959+-0.0184	     
   bitops-bits-in-byte			  5.9275+-0.0180    ?	 
5.9298+-0.0159	     ?
   bitops-bitwise-and			  3.9731+-0.0059    ?	 
3.9737+-0.0080	     ?
   bitops-nsieve-bits			  6.7840+-0.0316    ?	 
6.8390+-0.0420	     ?
   controlflow-recursive		  2.7644+-0.0177    ?	 
2.7921+-0.0369	     ? might be 1.0100x slower
   crypto-aes				  8.8837+-0.3084	 
8.6743+-0.0546	       might be 1.0241x faster
   crypto-md5				  3.0347+-0.0590	 
2.9922+-0.0132	       might be 1.0142x faster
   crypto-sha1				  2.6152+-0.0334    ?	 
2.6323+-0.0314	     ?
   date-format-tofte			 12.9762+-0.1771    ?	
13.1488+-0.0922       ? might be 1.0133x slower
   date-format-xparb			 13.8699+-0.1296    !	
14.2420+-0.1412       ! definitely 1.0268x slower
   math-cordic				  8.6768+-0.0372    ^	 
8.6144+-0.0209	     ^ definitely 1.0073x faster
   math-partial-sums			 12.6416+-0.0401	
12.6347+-0.0488       
   math-spectral-norm			  3.1685+-0.0557	 
3.1329+-0.0089	       might be 1.0114x faster
   regexp-dna				 15.6974+-0.0541    ?	
15.7449+-0.0606       ?
   string-base64			  4.7532+-0.0370    ?	 
4.7739+-0.0392	     ?
   string-fasta 			  8.9202+-0.0318    ?	 
9.0204+-0.0890	     ? might be 1.0112x slower
   string-tagcloud			 15.9672+-0.1008	
15.7997+-0.1061 	might be 1.0106x faster
   string-unpack-code			 27.4349+-0.1522    ?	
27.4398+-0.0469       ?
   string-validate-input		  6.9217+-0.1974	 
6.7428+-0.0794	       might be 1.0265x faster

   <arithmetic> *			  8.2684+-0.0264	 
8.2594+-0.0244	       might be 1.0011x faster
   <geometric>				  6.5486+-0.0233	 
6.5411+-0.0212	       might be 1.0011x faster
   <harmonic>				  5.0696+-0.0217    ?	 
5.0700+-0.0222	     ? might be 1.0001x slower

					    TipOfTree		    WeakCaches 
				 
V8:
   crypto				 93.3679+-0.3252    ?	
93.7752+-0.3924       ?
   deltablue				205.0419+-0.7970    !  
207.4518+-1.3348       ! definitely 1.0118x slower
   earley-boyer 			127.6397+-1.6513       
125.9481+-1.5823	 might be 1.0134x faster
   raytrace				 75.9334+-0.2453    ?	
76.5853+-0.5557       ?
   regexp				147.4395+-0.4611    !  
148.2696+-0.2811       ! definitely 1.0056x slower
   richards				166.2447+-0.2814       
166.0438+-0.3616       
   splay				107.5413+-1.4244       
106.9378+-0.7132       

   <arithmetic> 			131.8869+-0.4721    ?  
132.1445+-0.3777       ? might be 1.0020x slower
   <geometric> *			125.4485+-0.5032    ?  
125.6287+-0.3867       ? might be 1.0014x slower
   <harmonic>				119.2648+-0.5089    ?  
119.4452+-0.4084       ? might be 1.0015x slower

					    TipOfTree		    WeakCaches 
				 
Kraken:
   ai-astar				895.4246+-0.9915       
895.1654+-0.4022       
   audio-beat-detection 		248.5174+-0.3483    !  
250.5549+-0.8042       ! definitely 1.0082x slower
   audio-dft				314.1673+-2.4462    ?  
314.1825+-2.4322       ?
   audio-fft				162.3186+-0.8125    ?  
162.3518+-0.7823       ?
   audio-oscillator			355.8777+-3.1971    ^  
344.9823+-4.3299       ^ definitely 1.0316x faster
   imaging-darkroom			404.1052+-5.4632    ?  
405.4850+-6.1308       ?
   imaging-desaturate			291.2879+-0.1209       
291.1845+-0.0613       
   imaging-gaussian-blur		750.8557+-0.3035    ?  
752.8046+-3.3790       ?
   json-parse-financial 		 89.8248+-0.6193	
89.5875+-0.1899       
   json-stringify-tinderbox		104.5581+-0.2745    ?  
105.1705+-0.5748       ?
   stanford-crypto-aes			143.2029+-1.6641       
143.0827+-0.7456       
   stanford-crypto-ccm			137.4856+-0.5693    !  
140.4658+-1.0226       ! definitely 1.0217x slower
   stanford-crypto-pbkdf2		280.5099+-1.9514    ?  
283.5715+-2.2643       ? might be 1.0109x slower
   stanford-crypto-sha256-iterative	112.9657+-0.2543       
112.9229+-0.2411       

   <arithmetic> *			306.5072+-0.4968    ?  
306.5366+-0.6874       ? might be 1.0001x slower
   <geometric>				239.8899+-0.4148    ?  
240.1797+-0.5115       ? might be 1.0012x slower
   <harmonic>				194.6864+-0.3307    ?  
195.1378+-0.3639       ? might be 1.0023x slower

					    TipOfTree		    WeakCaches 
				 
All benchmarks:
   <arithmetic> 			115.5168+-0.1711    ?  
115.5589+-0.2314       ? might be 1.0004x slower
   <geometric>				 29.7140+-0.0748	
29.7123+-0.0711 	might be 1.0001x faster
   <harmonic>				  8.9367+-0.0377    ?	 
8.9378+-0.0384	     ? might be 1.0001x slower

					    TipOfTree		    WeakCaches 
				 
Geomean of preferred means:
   <scaled-result>			 68.2507+-0.1561    ?	
68.2608+-0.1430       ? might be 1.0001x slower

Sending VM builds to bigmac...
Running on bigmac...
376/376 							
Generating benchmark report at
TipOfTree_WeakCaches_SunSpiderV8Kraken_20111117_1951_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on bigmac.local (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
(r100674)
"WeakCaches" at
/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r100674)

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

					    TipOfTree		    WeakCaches 
				 
SunSpider:
   3d-cube				  7.5728+-0.1215	 
7.4300+-0.0254	       might be 1.0192x faster
   3d-morph				  8.4423+-0.0879    ?	 
8.4828+-0.1291	     ?
   3d-raytrace				  7.6856+-0.0513    ?	 
7.7025+-0.0624	     ?
   access-binary-trees			  1.5943+-0.0069    ?	 
1.5977+-0.0082	     ?
   access-fannkuch			  7.5383+-0.0104    ^	 
7.5180+-0.0082	     ^ definitely 1.0027x faster
   access-nbody 			  4.1663+-0.0092    !	 
4.1817+-0.0061	     ! definitely 1.0037x slower
   access-nsieve			  3.1429+-0.0427	 
3.1428+-0.0375	     
   bitops-3bit-bits-in-byte		  1.2399+-0.0138	 
1.2390+-0.0095	     
   bitops-bits-in-byte			  4.9107+-0.0055	 
4.8973+-0.0198	     
   bitops-bitwise-and			  3.2831+-0.0045    ?	 
3.2890+-0.0055	     ?
   bitops-nsieve-bits			  5.6333+-0.0338    ?	 
5.6556+-0.0387	     ?
   controlflow-recursive		  2.2875+-0.0123    ?	 
2.2913+-0.0126	     ?
   crypto-aes				  7.1496+-0.0385    ?	 
7.3631+-0.2183	     ? might be 1.0299x slower
   crypto-md5				  2.4973+-0.0094	 
2.4956+-0.0086	     
   crypto-sha1				  2.1853+-0.0329	 
2.1757+-0.0174	     
   date-format-tofte			 10.6273+-0.0559    !	
10.7725+-0.0539       ! definitely 1.0137x slower
   date-format-xparb			 11.4395+-0.2274    ?	
11.4434+-0.0890       ?
   math-cordic				  7.1588+-0.0780    ?	 
7.1610+-0.0499	     ?
   math-partial-sums			 10.4612+-0.0344    ?	
10.4707+-0.0383       ?
   math-spectral-norm			  2.6258+-0.0326	 
2.6008+-0.0081	     
   regexp-dna				 12.9697+-0.0534    ?	
13.0062+-0.0585       ?
   string-base64			  3.9142+-0.0170    ?	 
3.9304+-0.0123	     ?
   string-fasta 			  7.3654+-0.0195    !	 
7.4126+-0.0144	     ! definitely 1.0064x slower
   string-tagcloud			 13.0923+-0.0652    ^	
12.9657+-0.0327       ^ definitely 1.0098x faster
   string-unpack-code			 22.2100+-0.1262	
22.1619+-0.0837       
   string-validate-input		  5.5449+-0.0392    ?	 
5.6332+-0.0621	     ? might be 1.0159x slower

   <arithmetic> *			  6.7976+-0.0218    ?	 
6.8085+-0.0208	     ? might be 1.0016x slower
   <geometric>				  5.4030+-0.0185    ?	 
5.4117+-0.0177	     ? might be 1.0016x slower
   <harmonic>				  4.1972+-0.0165    ?	 
4.2005+-0.0144	     ? might be 1.0008x slower

					    TipOfTree		    WeakCaches 
				 
V8:
   crypto				 77.3068+-0.2470    ?	
78.5472+-1.0606       ? might be 1.0160x slower
   deltablue				169.1565+-0.5722    ?  
169.9061+-0.7509       ?
   earley-boyer 			105.8436+-1.2681    ?  
106.1506+-1.8865       ?
   raytrace				 62.5844+-0.6697    ?	
63.4609+-0.5217       ? might be 1.0140x slower
   regexp				123.0489+-0.4275    !  
124.9241+-0.9108       ! definitely 1.0152x slower
   richards				138.1625+-0.3256    ?  
138.3885+-0.7911       ?
   splay				 90.0783+-0.9855    ?	
90.5373+-1.2191       ?

   <arithmetic> 			109.4544+-0.2879    !  
110.2735+-0.4132       ! definitely 1.0075x slower
   <geometric> *			104.1137+-0.3218    !  
104.9882+-0.4307       ! definitely 1.0084x slower
   <harmonic>				 98.9421+-0.3618    !	
99.8732+-0.4189       ! definitely 1.0094x slower

					    TipOfTree		    WeakCaches 
				 
Kraken:
   ai-astar				817.2374+-11.1240   ?  
827.1865+-0.5183       ? might be 1.0122x slower
   audio-beat-detection 		203.9402+-0.3269    !  
206.1474+-0.6714       ! definitely 1.0108x slower
   audio-dft				261.1492+-2.3054       
259.6474+-2.6116       
   audio-fft				132.7391+-0.0777    ?  
132.8311+-0.1997       ?
   audio-oscillator			294.2755+-1.5612    ^  
283.3337+-4.9055       ^ definitely 1.0386x faster
   imaging-darkroom			333.9641+-4.6759    ?  
334.3031+-4.9627       ?
   imaging-desaturate			240.7603+-0.1246    ?  
240.8660+-0.3476       ?
   imaging-gaussian-blur		620.6148+-0.1868    ?  
621.9812+-2.4208       ?
   json-parse-financial 		 73.2566+-0.4176    !	
74.1150+-0.3143       ! definitely 1.0117x slower
   json-stringify-tinderbox		 86.3845+-0.2568    ?	
86.7771+-0.2189       ?
   stanford-crypto-aes			117.3842+-0.6165    ?  
118.7492+-0.7655       ? might be 1.0116x slower
   stanford-crypto-ccm			116.1933+-0.9027    ?  
117.1747+-0.7135       ?
   stanford-crypto-pbkdf2		233.0368+-1.4568       
232.9577+-0.2467       
   stanford-crypto-sha256-iterative	 93.1566+-0.2464	
93.0921+-0.3027       

   <arithmetic> *			258.8638+-1.0708    ?  
259.2259+-0.4904       ? might be 1.0014x slower
   <geometric>				199.5603+-0.5626    ?  
199.8244+-0.4281       ? might be 1.0013x slower
   <harmonic>				160.8641+-0.4246    ?  
161.4155+-0.3345       ? might be 1.0034x slower

					    TipOfTree		    WeakCaches 
				 
All benchmarks:
   <arithmetic> 			 97.1705+-0.3044    ?	
97.4063+-0.1669       ? might be 1.0024x slower
   <geometric>				 24.5976+-0.0601    ?	
24.6601+-0.0603       ? might be 1.0025x slower
   <harmonic>				  7.3988+-0.0285    ?	 
7.4055+-0.0250	     ? might be 1.0009x slower

					    TipOfTree		    WeakCaches 
				 
Geomean of preferred means:
   <scaled-result>			 56.7948+-0.1173    ?	
57.0104+-0.1230       ? might be 1.0038x slower

[pizlo at nitroflex bencher]


More information about the webkit-reviews mailing list