[webkit-reviews] review requested: [Bug 86553] JSGlobalData ScratchBuffers Are Not Visited During Garbage Collection : [Attachment 142849] Updated patch wit JIT code keeping track of active scratch buffers

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri May 18 21:58:29 PDT 2012


Michael Saboff <msaboff at apple.com> has asked  for review:
Bug 86553: JSGlobalData ScratchBuffers Are Not Visited During Garbage
Collection
https://bugs.webkit.org/show_bug.cgi?id=86553

Attachment 142849: Updated patch wit JIT code keeping track of active scratch
buffers
https://bugs.webkit.org/attachment.cgi?id=142849&action=review

------- Additional Comments from Michael Saboff <msaboff at apple.com>
Updated the patch to eliminate the large regression.

The JIT'ed code now writes out the active scratch size before calling out to
C++ code and then clears after the scratch buffer is done being used.

Below are the updated performance results.  The only tests that shows any kind
of slowdown is V8Real-richards at 1.8% and JSRegress string-test at 1.2% and
undefined-test at 1%.

Benchmark report for SunSpider, V8, V8Real, Kraken, JSBench, JSRegress, and DSP
on msaboff-pro (MacPro5,1).

VMs tested:
"BaseLine" at
/Volumes/Data/src/webkit.baseline/WebKitBuild/Release/DumpRenderTree (r117391)
"VisitScratchBuffers" at
/Volumes/Data/src/webkit/WebKitBuild/Release/DumpRenderTree (r117391)

Collected 24 samples per benchmark/VM, with 4 VM invocations per benchmark. No
manual garbage collection invocations were
emitted. 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	      
VisitScratchBuffers				   
SunSpider:
   3d-cube					7.6129+-0.0933	   ?	 
7.6663+-0.0854	      ?
   3d-morph					7.4009+-0.0485		 
7.3647+-0.0634	      
   3d-raytrace					9.9724+-0.2799	   ?	
10.0044+-0.2792        ?
   access-binary-trees				1.8306+-0.0218		 
1.8300+-0.0139	      
   access-fannkuch				7.5732+-0.0296	   ?	 
7.5741+-0.0188	      ?
   access-nbody 				3.9349+-0.0397	   ?	 
3.9701+-0.0474	      ?
   access-nsieve				3.6768+-0.0277		 
3.6712+-0.0311	      
   bitops-3bit-bits-in-byte			1.4424+-0.0165		 
1.4295+-0.0111	      
   bitops-bits-in-byte				5.5075+-0.0504	   ?	 
5.5182+-0.0306	      ?
   bitops-bitwise-and				3.4327+-0.0082	   ?	 
3.4491+-0.0210	      ?
   bitops-nsieve-bits				3.3273+-0.0090	   ?	 
3.3510+-0.0241	      ?
   controlflow-recursive			2.4683+-0.0155		 
2.4647+-0.0142	      
   crypto-aes					7.9243+-0.1127		 
7.9035+-0.0971	      
   crypto-md5					3.4875+-0.0452	   ?	 
3.4883+-0.0473	      ?
   crypto-sha1					2.8354+-0.0325		 
2.8082+-0.0302	      
   date-format-tofte			       13.1882+-0.8200	   ?	
13.3276+-0.8214        ? might be 1.0106x slower
   date-format-xparb			       10.9723+-0.5200	   ?	
11.2165+-0.5118        ? might be 1.0223x slower
   math-cordic					4.3376+-0.0520		 
4.3276+-0.0502	      
   math-partial-sums				9.1740+-0.0313	   ?	 
9.2795+-0.0910	      ? might be 1.0115x slower
   math-spectral-norm				2.9616+-0.0325	   ?	 
2.9657+-0.0319	      ?
   regexp-dna					9.8527+-0.0953	   ?	 
9.8968+-0.0972	      ?
   string-base64				4.8435+-0.0392	   ?	 
4.9458+-0.2122	      ? might be 1.0211x slower
   string-fasta 				7.8418+-0.2518		 
7.8418+-0.2455	      
   string-tagcloud			       13.3686+-0.2192		
13.2846+-0.2230        
   string-unpack-code			       22.7043+-0.5997	   ?	
22.7916+-0.6311        ?
   string-validate-input			8.5788+-0.5542	   ?	 
8.6677+-0.5762	      ? might be 1.0104x slower

   <arithmetic> *				6.9327+-0.0485	   ?	 
6.9630+-0.0495	      ? might be 1.0044x slower
   <geometric>					5.6237+-0.0257	   ?	 
5.6402+-0.0250	      ? might be 1.0029x slower
   <harmonic>					4.5358+-0.0197	   ?	 
4.5390+-0.0182	      ? might be 1.0007x slower

						   BaseLine	      
VisitScratchBuffers				   
V8:
   crypto				       75.6202+-0.4168	   ?	
75.6938+-0.4005        ?
   deltablue				      157.6811+-1.3157	   ?   
157.9404+-1.6757	?
   earley-boyer 			       93.4031+-0.2822	   ?	
93.4446+-0.2714        ?
   raytrace				       55.7306+-0.9583	   ?	
55.9167+-1.1695        ?
   regexp				       93.8529+-0.3721	   ^	
93.0471+-0.2650        ^ definitely 1.0087x faster
   richards				      142.9939+-1.9374	   ?   
143.9461+-2.3855	?
   splay				      115.5968+-11.9257        
110.2246+-12.3616	  might be 1.0487x faster

   <arithmetic> 			      104.9827+-1.6401	       
104.3162+-1.6959	  might be 1.0064x faster
   <geometric> *			       99.0779+-1.3428		
98.4330+-1.3742 	 might be 1.0066x faster
   <harmonic>				       93.3028+-0.9826		
92.7727+-1.0176 	 might be 1.0057x faster

						   BaseLine	      
VisitScratchBuffers				   
V8Real:
   encrypt				       0.42564+-0.00038    !	
0.42761+-0.00063       ! definitely 1.0046x slower
   decrypt				       7.42067+-0.01653    ?	
7.44325+-0.01692       ?
   deltablue			      x2       0.94420+-0.00600 	
0.94255+-0.00499       
   earley				       3.16078+-0.03656 	
3.13649+-0.03207       
   boyer				      15.72871+-0.05014    ?   
15.77503+-0.04728	?
   raytrace			      x2       6.94780+-0.05752 	
6.89380+-0.06171       
   regexp			      x2      26.95430+-0.04281    ?   
27.00633+-0.08617	?
   richards			      x2       0.37960+-0.00234    !	
0.38654+-0.00326       ! definitely 1.0183x slower
   splay			      x2       0.95467+-0.01488 	
0.93567+-0.01685	 might be 1.0203x faster

   <arithmetic> 			       7.07835+-0.01316    ?	
7.07944+-0.01412       ? might be 1.0002x slower
   <geometric> *			       2.59949+-0.00684 	
2.59637+-0.00808	 might be 1.0012x faster
   <harmonic>				       1.10135+-0.00424    ?	
1.10605+-0.00511       ? might be 1.0043x slower

						   BaseLine	      
VisitScratchBuffers				   
Kraken:
   ai-astar				       814.209+-7.905		
812.194+-8.275	       
   audio-beat-detection 		       204.129+-1.316	   ?	
204.146+-1.351	       ?
   audio-dft				       291.572+-0.967		
290.128+-2.574	       
   audio-fft				       120.070+-0.146	   ?	
120.132+-0.196	       ?
   audio-oscillator			       322.365+-0.300	   !	
325.176+-1.396	       ! definitely 1.0087x slower
   imaging-darkroom			       304.594+-1.003		
304.585+-1.207	       
   imaging-desaturate			       219.444+-0.127	   ?	
219.604+-0.156	       ?
   imaging-gaussian-blur		       457.373+-0.472	   ?	
457.991+-0.488	       ?
   json-parse-financial 			66.846+-0.273	   ^	 
66.418+-0.143	      ^ definitely 1.0064x faster
   json-stringify-tinderbox			84.163+-0.164	   !	 
84.717+-0.190	      ! definitely 1.0066x slower
   stanford-crypto-aes				89.333+-0.994	   ^	 
88.113+-0.222	      ^ definitely 1.0138x faster
   stanford-crypto-ccm				94.998+-0.292		 
94.973+-0.240	      
   stanford-crypto-pbkdf2		       193.628+-0.655	   ?	
194.207+-0.939	       ?
   stanford-crypto-sha256-iterative		94.502+-0.175	   ?	 
94.640+-0.163	      ?

   <arithmetic> *			       239.802+-0.608		
239.787+-0.577		 might be 1.0001x faster
   <geometric>				       183.758+-0.217		
183.686+-0.169		 might be 1.0004x faster
   <harmonic>				       146.853+-0.210		
146.664+-0.096		 might be 1.0013x faster

						   BaseLine	      
VisitScratchBuffers				   
JSBench:
   amazon				       17.8333+-0.2033	   ?	
18.0000+-0.2490        ?
   facebook				       69.8750+-2.1253	   ?	
71.0833+-2.6028        ? might be 1.0173x slower
   google				       98.5000+-2.2926		
97.2917+-2.3411 	 might be 1.0124x faster
   twitter				       52.1250+-0.2266		
51.8333+-0.2690        
   yahoo				       22.4583+-0.2149		
22.2917+-0.1961        

   <arithmetic> *			       52.1583+-0.5224		
52.1000+-0.5728 	 might be 1.0011x faster
   <geometric>				       42.7707+-0.2901		
42.7705+-0.3350 	 might be 1.0000x faster
   <harmonic>				       34.6295+-0.1954	   ?	
34.6683+-0.2322        ? might be 1.0011x slower

						   BaseLine	      
VisitScratchBuffers				   
JSRegress:
   adapt-to-double-divide		       72.6620+-0.0852	   ?	
72.7051+-0.1321        ?
   aliased-arguments-getbyval			3.6815+-0.1802		 
3.6746+-0.1908	      
   arity-mismatch-inlining			1.3168+-0.0312		 
1.2890+-0.0094		might be 1.0215x faster
   big-int-mul				       28.5101+-0.3113		
28.4635+-0.1875        
   boolean-test 				3.9266+-0.0074	   ?	 
3.9326+-0.0151	      ?
   cast-int-to-double			       14.1526+-0.0168	   ?	
14.1607+-0.0213        ?
   cfg-simplify 				6.5957+-0.0205	   ?	 
6.6029+-0.0167	      ?
   cmpeq-obj-to-obj-other		       13.9139+-0.4605	   ?	
14.0145+-0.4557        ?
   constant-test			       27.1168+-0.0414	   ?	
27.2107+-0.0838        ?
   direct-arguments-getbyval			0.7011+-0.0105	   ?	 
0.7019+-0.0123	      ?
   double-pollution-getbyval			8.7756+-0.0274	   ?	 
8.7777+-0.0186	      ?
   double-pollution-putbyoffset 		4.6870+-0.0354		 
4.6648+-0.0408	      
   external-arguments-getbyval			4.2952+-0.1919		 
4.2653+-0.1955	      
   external-arguments-putbyval			7.0715+-0.3312	   ?	 
7.0967+-0.3327	      ?
   Float32Array-matrix-mult		       11.3192+-0.5077	   ?	
11.5432+-0.5367        ? might be 1.0198x slower
   fold-double-to-int			       34.2063+-0.5895		
33.8435+-0.2564 	 might be 1.0107x faster
   function-test				4.6158+-0.0286		 
4.5848+-0.0172	      
   inline-arguments-access			3.6107+-0.0225	   ?	 
3.6116+-0.0190	      ?
   inline-arguments-local-escape	       39.4209+-1.4598	   ?	
40.0287+-1.4872        ? might be 1.0154x slower
   int-overflow-local			      102.6761+-0.1919	   ?   
102.6830+-0.1260	?
   Int16Array-bubble-sort		       69.0327+-0.6773		
68.6075+-0.9430        
   Int16Array-load-int-mul		       15.8174+-0.0875	   ?	
15.8965+-0.1237        ?
   Int8Array-load				4.7640+-0.0325		 
4.7464+-0.0637	      
   integer-divide			       15.0545+-0.3723		
14.8291+-0.0315 	 might be 1.0152x faster
   method-on-number			      187.5714+-1.4717	   ?   
191.3869+-2.8458	? might be 1.0203x slower
   number-test					3.9351+-0.0177	   ?	 
3.9598+-0.0108	      ?
   object-test					4.2206+-0.0152		 
4.1962+-0.0182	      
   poly-stricteq			       91.0462+-0.4125	   ?	
91.1090+-0.4208        ?
   rare-osr-exit-on-local		      150.9123+-0.1566	       
150.6968+-0.0943	
   simple-activation-demo		       55.2887+-0.3349		
55.2096+-0.1918        
   slow-convergence			       90.2112+-0.3039		
90.1522+-0.3118        
   string-hash				       14.5765+-0.2147	   ?	
14.7791+-0.9469        ? might be 1.0139x slower
   string-test					3.7378+-0.0119	   !	 
3.7830+-0.0133	      ! definitely 1.0121x slower
   tear-off-arguments				3.8165+-0.1831		 
3.8063+-0.1918	      
   to-int32-boolean			       29.3838+-0.2678		
29.0918+-0.0978 	 might be 1.0100x faster
   undefined-test				4.2109+-0.0201	   !	 
4.2541+-0.0155	      ! definitely 1.0102x slower

   <arithmetic> 			       31.5788+-0.0842	   ?	
31.6766+-0.1305        ? might be 1.0031x slower
   <geometric> *			       13.0148+-0.0891	   ?	
13.0203+-0.0916        ? might be 1.0004x slower
   <harmonic>					5.7876+-0.0518		 
5.7763+-0.0484		might be 1.0020x faster

						   BaseLine	      
VisitScratchBuffers				   
DSP:
   filtrr-posterize-tint		       49.0644+-0.3898	   ?	
49.1086+-0.4294        ?
   filtrr-tint-contrast-sat-bright	       81.3190+-0.6132	   ?	
81.5211+-0.5791        ?
   filtrr-tint-sat-adj-contr-mult	       93.7695+-0.7597		
93.6671+-0.6576        
   filtrr-blur-overlay-sat-contr	      231.7627+-0.7890	   ?   
232.0110+-0.8206	?
   filtrr-sat-blur-mult-sharpen-contr	      288.6334+-1.8254	       
288.5511+-1.6429	
   filtrr-sepia-bias			       33.4302+-0.3968	   ?	
33.5880+-0.4207        ?
   route9-vp8			      x5     1587.7897+-7.5654	   ?  
1589.0287+-6.5103	 ?

   <arithmetic> 			      792.4480+-3.3264	   ?   
793.0537+-2.9408	? might be 1.0008x slower
   <geometric> *			      345.7214+-0.6517	   ?   
346.0915+-0.6747	? might be 1.0011x slower
   <harmonic>				      130.6126+-0.4003	   ?   
130.8947+-0.4082	? might be 1.0022x slower

						   BaseLine	      
VisitScratchBuffers				   
All benchmarks:
   <arithmetic> 			      128.1947+-0.3152	   ?   
128.2463+-0.3003	? might be 1.0004x slower
   <geometric>				       20.0661+-0.0589	   ?	
20.0724+-0.0659        ? might be 1.0003x slower
   <harmonic>					4.5082+-0.0165	   ?	 
4.5165+-0.0190	      ? might be 1.0018x slower

						   BaseLine	      
VisitScratchBuffers				   
Geomean of preferred means:
   <scaled-result>			       37.2970+-0.1094		
37.2804+-0.1215 	 might be 1.0004x faster


More information about the webkit-reviews mailing list