???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................GOOF----LE-8-2.0Øq      ] × 4       h_      ] g  guile¤	 ¤	g  define-module*¤	 ¤	 ¤	g  statprof¤	 ¤	g  filenameS¤		f  statprof.scm¤	
g  importsS¤	g  srfi¤	g  srfi-1¤	 ¤	 ¤	g  system¤	g  vm¤	 ¤	 ¤	g  frame¤	 ¤	 ¤	g  program¤	 ¤	 ¤	 ¤	g  exportsS¤	g  statprof-active?¤	g  statprof-start¤	g  statprof-stop¤	g  statprof-reset¤	g  statprof-accumulated-time¤	 g  statprof-sample-count¤	!g  statprof-fold-call-data¤	"g  statprof-proc-call-data¤	#g  statprof-call-data-name¤	$g  statprof-call-data-calls¤	%g  statprof-call-data-cum-samples¤	&g  statprof-call-data-self-samples¤	'g  statprof-call-data->stats¤	(g  statprof-stats-proc-name¤	)g  statprof-stats-%-time-in-proc¤	*g  statprof-stats-cum-secs-in-proc¤	+g   statprof-stats-self-secs-in-proc¤	,g  statprof-stats-calls¤	-g  !statprof-stats-self-secs-per-call¤	.g   statprof-stats-cum-secs-per-call¤	/g  statprof-display¤	0g  statprof-display-anomolies¤	1g  statprof-fetch-stacks¤	2g  statprof-fetch-call-tree¤	3g  with-statprof¤	4g  gcprof¤	5 !"#$%&'()*+,-./01234 ¤	6g  	autoloadsS¤	7g  ice-9¤	8g  format¤	978 ¤	:8 ¤	;9: ¤	<g  set-current-module¤	=< ¤	>< ¤	?g  accumulated-time¤	@g  last-start-time¤	Ag  sample-count¤	Bg  sampling-frequency¤	Cg  remaining-prof-time¤	Dg  profile-level¤	Eg  %count-calls?¤	Fg  gc-time-taken¤	Gg  record-full-stacks?¤	Hg  stacks¤	Ig  procedure-data¤	Jg  make-call-data¤	Kg  call-data-proc¤	Lg  procedure-name¤	Mg  call-data-name¤	Ng  with-output-to-string¤	Og  write¤	Pg  call-data-printable¤	Qg  call-data-call-count¤	Rg  call-data-cum-sample-count¤	Sg  call-data-self-sample-count¤	Tg  inc-call-data-call-count!¤	Ug  inc-call-data-cum-sample-count!¤	Vg   inc-call-data-self-sample-count!¤	Wg  make-syntax-transformer¤	XW ¤	YW ¤	Zg  accumulate-time¤	[g  macro¤	\g  $sc-dispatch¤	]\ ¤	^\ ¤	_g  _¤	`g  any¤	a_`Œ¤	bg  syntax->datum¤	cb ¤	db ¤	eg  datum->syntax¤	fe ¤	ge ¤	hg  set!¤	ig  +¤	je  0.0¤	kg  -¤	l@ ¤	mg  syntax-violation¤	nm ¤	om ¤	pf  -source expression failed to match any pattern¤	qg  program?¤	rg  program-num-free-variables¤	sg  program-objcode¤	tg  	hashq-ref¤	ug  
hashq-set!¤	vg  get-call-data¤	wg  stack-length¤	xg  frame-procedure¤	yg  
count-call¤	zg  frame-previous¤	{g  make-hash-table¤	|g  	hash-fold¤	}g  and=>¤	~g  	stack-ref¤	g  sample-stack-procs¤ €g  inside-profiler?¤ g  get-internal-run-time¤ ‚g  
make-stack¤ ƒg  profile-signal-handler¤ „g  pk¤ …g  what!¤ †g  set-vm-trace-level!¤ ‡g  the-vm¤ ˆg  vm-trace-level¤ ‰g  	setitimer¤ Šg  ITIMER_PROF¤ ‹g  assq¤ Œg  gc-stats¤ g  	add-hook!¤ Žg  vm-apply-hook¤ g  remove-hook!¤ g  error¤ ‘f  /Can't reset profiler while profiler is running.¤ ’g  	sigaction¤ “g  SIGPROF¤ ”f  :Can't call statprof-fold-called while profiler is running.¤ •e  100.0¤ –e  1.0¤ —g  max¤ ˜g  stats-sorter¤ ™g  current-output-port¤ šf  No samples recorded.
¤ ›g  sort¤ œf  !~5a ~10a   ~7a ~8a ~8a ~8a  ~8@a
¤ f  %  ¤ žf  
cumulative¤ Ÿf  self¤  f   ¤ ¡f  total¤ ¢f   ~5a  ~9a  ~8a ~8a ~8a ~8a  ~8@a
¤ £f  time¤ ¤f  seconds¤ ¥f  calls¤ ¦f  ms/call¤ §f  name¤ ¨f  ~5a ~10a   ~7a  ~8@a
¤ ©f  %¤ ªf  ~5a  ~10a  ~7a  ~8@a
¤ «g  for-each¤ ¬f  #~6,2f ~9,2f ~9,2f ~7d ~8,2f ~8,2f  ¤ ­f  ~6,2f ~9,2f ~9,2f  ¤ ®g  display¤ ¯g  newline¤ °f  ---
¤ ±g  simple-format¤ ²f  Sample count: ~A
¤ ³f  *Total time: ~A seconds (~A seconds in GC)
¤ ´g  internal-time-units-per-second¤ µf  ==[~A ~A ~A]
¤ ¶f  Total time: ~A
¤ ·f  5Can't get accumulated time while profiler is running.¤ ¸g  procedure=?¤ ¹g  map¤ ºg  lists->trees¤ »g  cadr¤ ¼g  find¤ ½g  	assq-set!¤ ¾g  filter¤ ¿g  identity¤ Àg  unfold-right¤ Ág  stack->procedures¤ Âg  loopS¤ ÃÂŒ¤ Äg  hzS¤ ÅÄ	Œ¤ Æg  count-calls?S¤ ÇÆ	Œ¤ Èg  full-stacks?S¤ ÉÈ	Œ¤ ÊÃÅÇÉ ¤ Ëg  inexact->exact¤ Ìg  floor¤ Íe  	1000000.0¤ Îf  Invalid macro body¤ Ïg  keyword?¤ Ðg  eq?¤ Ñg  @¤ ÒÑ ¤ Óg  lambda¤ ÔÈ	Œ¤ ÕÃÔ ¤ Ög  after-gc-hook¤C 5    h0]  F  ]4	
56;5	 4> >  "  G   ?R@RARBRCR
DRER
FRGRHRIR  h   Ë   ]  C  Ã       g  proc
		 g  
call-count		 g  cum-sample-count			 g  self-sample-count			  g  filenamef  statprof.scmŒ
 Ã
ŒŒ	 Ä	ŒŒ 			  g  nameg  make-call-dataŒ CJRh   t   ] 
£C l       g  cd
		  g  filenamef  statprof.scmŒ
 Å
ŒŒ	 Å	ŒŒ 		  g  nameg  call-data-procŒ CKRLK h   }   ]4 56   u       g  cd
		  g  filenamef  statprof.scmŒ
 Æ
ŒŒ	 Æ	,ŒŒ	 Æ	ŒŒ 		  g  nameg  call-data-nameŒ CMRMNOK   h   R   ] 4L 56   J       g  filenamef  statprof.scmŒ
 É	ŒŒ	 É	/ŒŒ	 É	(ŒŒ 		
   C   h    ™   ]	4 5$  C O 6 ‘       g  cd
		 g  t			  g  filenamef  statprof.scmŒ
 Ç
ŒŒ	 È	ŒŒ		 È	ŒŒ	 É	ŒŒ 		  g  nameg  call-data-printableŒ CPR  h   z   ] £C r       g  cd
		  g  filenamef  statprof.scmŒ
 Ê
ŒŒ	 Ê	"ŒŒ 		  g  nameg  call-data-call-countŒ CQR h   €   ] 	£Cx       g  cd
		  g  filenamef  statprof.scmŒ
 Ë
ŒŒ	 Ë	(ŒŒ 		  g  nameg  call-data-cum-sample-countŒ CRR   h      ] 	£Cy       g  cd
		  g  filenamef  statprof.scmŒ
 Ì
ŒŒ	 Ì	)ŒŒ 		  g  nameg  call-data-self-sample-countŒ CSR  h   ‘   ]  £—¤C   ‰       g  cd
		  g  filenamef  statprof.scmŒ
 Î
ŒŒ		 Ï	ŒŒ	
 Ï	ŒŒ	 Ï	ŒŒ 		  g  nameg  inc-call-data-call-count!Œ CTR  h   —   ] 	 	£—¤C        g  cd
		  g  filenamef  statprof.scmŒ
 Ð
ŒŒ	 Ñ	ŒŒ	 Ñ	ŒŒ	 Ñ	ŒŒ 		  g  nameg  inc-call-data-cum-sample-count!Œ CUR    h   ˜   ] 	 	£—¤C        g  cd
		  g  filenamef  statprof.scmŒ
 Ò
ŒŒ	 Ó	ŒŒ	 Ó	ŒŒ	 Ó	ŒŒ 		  g  nameg   inc-call-data-self-sample-count!Œ CVR4YZ[^adgh?ijkl    h    `   ] ŒŒ  C     X       g  	stop-time
		  g  filenamef  statprof.scmŒ
 Õ
ŒŒ	 Ö	ŒŒ 		   C     h   a   ]	4 5L 4?6Y       g  args
		 g  v			  g  filenamef  statprof.scmŒ	 Õ
ŒŒ 		   Cop        h(   _   ]	4 5$   O @ 6 W       g  y
		' g  tmp		'  g  filenamef  statprof.scmŒ
 Õ
ŒŒ 		'   C5ZRqrstIJu  hp   #  ]4 5€$  "  	4 5
‘$   "  4 545$  C4 


54>  "  G  C       g  proc
		o g  t	
	# g  k	4	o g  t		?	o g  	call-data		T	o  g  filenamef  statprof.scmŒ
 Ù
ŒŒ	 Ú	ŒŒ	
 Ú	ŒŒ	
 Ú	ŒŒ	 Û	ŒŒ	 Û	ŒŒ	' Ú	ŒŒ	. Ý	ŒŒ	4 Ú	ŒŒ	7 Þ	ŒŒ	? Þ	ŒŒ	K ß	ŒŒ	T ß	ŒŒ	W à	
ŒŒ 		o  g  nameg  get-call-dataŒ CvRwGHAxyz{u|Uv     h   ‰   ]4 56          g  proc
		 g  val		 g  accum			  g  filenamef  statprof.scmŒ
 õ		ŒŒ	 ÷	ŒŒ	 ö	ŒŒ 			   C}vV~    h  ü  ])H4 >  "  G  $   Œ "   — "  »$  45$  Z&  K454	5"ÿÿÇ4	>  "  G  45$  "  "ÿÿ‘45"ÿÿ|4
>  "  G  445>  "  !G  "  4 
54	5"ÿÿ+JC       ô      g  stack
		 g  hit-count-call?		 g  frame		1 ì g  
procs-seen		1 ì g  self		1 ì g  t		> ¸  g  filenamef  statprof.scmŒ
 æ
ŒŒ	 ç	ŒŒ	 ç	ŒŒ	 ê	ŒŒ	" ë	ŒŒ	$ ë	ŒŒ	+ í	ŒŒ	- í	ŒŒ	1 ï	ŒŒ	7 ò	ŒŒ	8 ü	ŒŒ	> ò	ŒŒ	N þ	ŒŒ	Q	ŒŒ	R	ŒŒ	Y	,ŒŒ	j	ŒŒ	k	ŒŒ €	ŒŒ Ž		ŒŒ  	ŒŒ ¡	ŒŒ µ	ŒŒ ¹ ô	ŒŒ Î ú	ŒŒ Ñ ú	ŒŒ à ú	ŒŒ ì ï	ŒŒ í ï	ŒŒ õ ð	ŒŒ ï	ŒŒ  		  g  nameg  sample-stack-procsŒ CR€R€D‚ƒ„…E†‡ˆ?j@‰ŠB     hð   S  ] 
”$  Û45 45$  "  445545$  "  7	$  $4
45 445 5™>  "  G  "   –˜– 4

Ž>  "  G  $  "  145  	$  $4
45 445 5—>  "  G  "   "    C   K      g  sig
	 í g  	stop-time	 ä g  t			: g  stack		: á g  inside-apply-trap?		C Þ  g  filenamef  statprof.scmŒ

ŒŒ		ŒŒ		ŒŒ		ŒŒ		ŒŒ		ŒŒ		ŒŒ		ŒŒ	+	ŒŒ	/	ŒŒ	0	#ŒŒ	7	ŒŒ	:	ŒŒ	=	!ŒŒ	C	ŒŒ	K!	ŒŒ	U)	ŒŒ	V*	ŒŒ	Y*	'ŒŒ	^+	+ŒŒ	a+	;ŒŒ	g+	+ŒŒ	h+	'ŒŒ	m*	ŒŒ	} ×	ŒŒ †,	ŒŒ ‡.	ŒŒ 0	ŒŒ “1	ŒŒ ˜.	ŒŒ ¦3	ŒŒ «5	$ŒŒ ±5	ŒŒ ·6	ŒŒ ¸7	ŒŒ »7	'ŒŒ À8	+ŒŒ Ã8	;ŒŒ É8	+ŒŒ Ê8	'ŒŒ Ï7	ŒŒ ë:	ŒŒ +	 í  g  nameg  profile-signal-handlerŒ CƒR€?j@}xTv   h   e   ]4 56   ]       g  proc
		  g  filenamef  statprof.scmŒ
E	ŒŒ	G	ŒŒ	F	ŒŒ 		   C 	       h@   »   ]$  C–45 ˜– 44 5>  "  G  45  C    ³       g  frame
		<  g  filenamef  statprof.scmŒ
?
ŒŒ	@	ŒŒ	 ×	ŒŒ	B	ŒŒ	B	ŒŒ	D	ŒŒ	D	ŒŒ	+D	ŒŒ	4I	ŒŒ	:I	ŒŒ 		<  g  nameg  
count-callŒ CyRD    h   ð   ] 
”C è       g  filenamef  statprof.scmŒ
M
ŒŒ	P	ŒŒ 		
  g  nameg  statprof-active?Œg  documentationf  uReturns @code{#t} if @code{statprof-start} has been called more times
than @code{statprof-stop}, @code{#f} otherwise.Œ CRDC@‹FŒF‰ŠBEŽ‡y†ˆ     hà   U  ]— ‘$  Ë  $   
”$  "   Ž
”"   45  445 5Ž $  4	


  Ž>  "  G  "  4	


Ž>  "  G  $   4445 5>  "  G  "   445 445 5—>  "  G  CC    M      g  rpt
	 Ú g  t		4 g  use-rpt?	9 Ú  g  filenamef  statprof.scmŒ
S
ŒŒ	W	ŒŒ	W	ŒŒ	X	ŒŒ	X	ŒŒ	Y	ŒŒ	Z	ŒŒ	[	+ŒŒ	[	 ŒŒ	[	ŒŒ	/\	+ŒŒ	0\	 ŒŒ	9Y	ŒŒ	>]	ŒŒ	?^	ŒŒ	E^	ŒŒ	F`	ŒŒ	J`	ŒŒ	K`	(ŒŒ	Q`	ŒŒ	R`	ŒŒ	T_	ŒŒ	Za	ŒŒ	[b	ŒŒ	db	'ŒŒ	gb	1ŒŒ	lb	ŒŒ	yc	ŒŒ ‚e	ŒŒ …f	ŒŒ Šc	ŒŒ ˜g	ŒŒ ™h	ŒŒ œh	ŒŒ Ÿh	&ŒŒ ¥h	ŒŒ ¬h	ŒŒ ¹i	ŒŒ ¼i	ŒŒ Ái	*ŒŒ Äi	:ŒŒ Êi	*ŒŒ Ëi	&ŒŒ Ði	ŒŒ -	 Ü
  g  nameg  statprof-startŒg  documentationf  Start the profiler.@code{}Œ CRD‹FŒF†‡ˆEŽy‰ŠC?j@      h   ™  ] ™ 
‘$  z445 5Ž˜ 445 445 5™>  "  G  	$   4
445 5>  "  G  "   4



5 –45 ˜–  CC     ‘      g  filenamef  statprof.scmŒ
m
ŒŒ	q	ŒŒ	q	ŒŒ	
r	ŒŒ	r	ŒŒ	u	ŒŒ	u	ŒŒ	u	+ŒŒ	u	ŒŒ	u	ŒŒ	u	ŒŒ	!t	ŒŒ	"v	ŒŒ	%v	ŒŒ	*v	*ŒŒ	-v	:ŒŒ	3v	*ŒŒ	4v	&ŒŒ	9v	ŒŒ	Gw	ŒŒ	Hx	ŒŒ	Kx	ŒŒ	Nx	)ŒŒ	Tx	ŒŒ	[x	ŒŒ	h{	"ŒŒ	t{	ŒŒ	x ×	ŒŒ	z|	ŒŒ „|	ŒŒ ‡}	ŒŒ  	 ‹
  g  nameg  statprof-stopŒg  documentationf  Stop the profiler.@code{}Œ CRD‘E?@ABC{IGH’“ƒ        hx   Û  - . , 3 #  
”$  4>  "  G  "    
  
  Œ  	4
 ƒ5   4>  "  G  C       Ó      g  sample-seconds
		q g  sample-microseconds		q g  count-calls?			q g  full-stacks?			q  g  filenamef  statprof.scmŒ

ŒŒ	ˆ	ŒŒ	ˆ	ŒŒ	‰	ŒŒ	"‰	ŒŒ	'‰	ŒŒ	7Š	ŒŒ	:‹	ŒŒ	=Œ	ŒŒ	@	ŒŒ	EŽ	ŒŒ	GŽ	ŒŒ	J	ŒŒ	K	ŒŒ	T	ŒŒ	X‘	ŒŒ	Y’	ŒŒ	[’	ŒŒ	\“	ŒŒ 		q	  g  nameg  statprof-resetŒg  documentationf VReset the statprof sampler interval to @var{sample-seconds} and
@var{sample-microseconds}. If @var{count-calls?} is true, arrange to
instrument procedure calls as well as collecting statistical profiling
data. If @var{full-stacks?} is true, collect all sampled stacks into a
list for later analysis.

Enables traps and debugging as necessary.Œ CRD”|       h   ˆ   ]L 6      €       g  key
		
 g  value		
 g  prior-result			
  g  filenamef  statprof.scmŒ
¡	ŒŒ	
¢	ŒŒ 		
	   CI   h0     ]
”$  4>  "  G  "    O 6       g  proc
		/ g  init		/  g  filenamef  statprof.scmŒ
–
ŒŒ		ŒŒ	
	ŒŒ	ž	ŒŒ	ž	ŒŒ	ž	ŒŒ	/ 	ŒŒ 		/	  g  nameg  statprof-fold-call-dataŒg  documentationf 7Fold @var{proc} over the call-data accumulated by statprof. Cannot be
called while statprof is active. @var{proc} should take two arguments,
@code{(@var{call-data} @var{prior-result})}.

Note that a given proc-name may appear multiple times, but if it does,
it represents different functions with the same name.Œ C!RD”tI    h(     ]
”$  4>  "  G  "    6      g  proc
		(  g  filenamef  statprof.scmŒ
¦
ŒŒ	©	ŒŒ	
©	ŒŒ	ª	ŒŒ	ª	ŒŒ	ª	ŒŒ	(¬	ŒŒ 		(  g  nameg  statprof-proc-call-dataŒg  documentationf  TReturns the call-data associated with @var{proc}, or @code{#f} if
none is available.Œ C"RPSR E$•–j—     h¨   ¾  ]14 54 54 545 45 45 ›$  4 5"  ›šš	šš	š$  
‘$  
"  š	››"  $  š	›45›"   C   ¶      g  	call-data
	 ¥ g  	proc-name		 ¥ g  self-samples		 ¥ g  cum-samples		 ¥ g  all-samples		" ¥ g  secs-per-sample		/ ¥ g  	num-calls		C ¥  g  filenamef  statprof.scmŒ
±
ŒŒ	»	ŒŒ		»	ŒŒ	¼	ŒŒ	»	ŒŒ	½	ŒŒ	»	ŒŒ	¾	ŒŒ	"»	ŒŒ	%¿	ŒŒ	*À	ŒŒ	/¿	ŒŒ	/»	ŒŒ	7Á	ŒŒ	8Á	'ŒŒ	C»	ŒŒ	LÄ	ŒŒ	NÄ	,ŒŒ	OÄ	ŒŒ	TÅ	ŒŒ	VÅ	+ŒŒ	WÅ	ŒŒ	\Æ	ŒŒ	^Æ	,ŒŒ	_Æ	ŒŒ	gÈ	ŒŒ	jÉ	ŒŒ	oÉ	ŒŒ	qÉ	*ŒŒ	zÊ	ŒŒ	|Ê	9ŒŒ	}Ê	ŒŒ ‹Ë	ŒŒ Ì	ŒŒ ’Í	ŒŒ “Ì	ŒŒ ”Ð	ŒŒ œÌ	ŒŒ ¤Ã	ŒŒ (	 ¥  g  nameg  statprof-call-data->statsŒg  documentationf  0Returns an object of type @code{statprof-stats}.Œ C'R     h      ] 
£C y       g  stats
		  g  filenamef  statprof.scmŒ
Ò
ŒŒ	Ò	)ŒŒ 		  g  nameg  statprof-stats-proc-nameŒ C(R  h   †   ] £C ~       g  stats
		  g  filenamef  statprof.scmŒ
Ó
ŒŒ	Ó	.ŒŒ 		  g  nameg  statprof-stats-%-time-in-procŒ C)R     h   ˆ   ] 	£C€       g  stats
		  g  filenamef  statprof.scmŒ
Ô
ŒŒ	Ô	0ŒŒ 		  g  nameg  statprof-stats-cum-secs-in-procŒ C*R   h   ‰   ] 	£C       g  stats
		  g  filenamef  statprof.scmŒ
Õ
ŒŒ	Õ	1ŒŒ 		  g  nameg   statprof-stats-self-secs-in-procŒ C+R  h   }   ] 	£Cu       g  stats
		  g  filenamef  statprof.scmŒ
Ö
ŒŒ	Ö	%ŒŒ 		  g  nameg  statprof-stats-callsŒ C,R      h   Š   ] 	£C‚       g  stats
		  g  filenamef  statprof.scmŒ
×
ŒŒ	×	2ŒŒ 		  g  nameg  !statprof-stats-self-secs-per-callŒ C-R h   ‰   ] 	£C       g  stats
		  g  filenamef  statprof.scmŒ
Ø
ŒŒ	Ø	1ŒŒ 		  g  nameg   statprof-stats-cum-secs-per-callŒ C.R+*    h8   ã   ]
4 545˜
‘$  4 545˜"  
”C     Û       g  x
		3 g  y		3 g  diff			3  g  filenamef  statprof.scmŒ
Ü
ŒŒ	Ý	ŒŒ	
Þ	ŒŒ	Ý	ŒŒ	Ý	ŒŒ	à		ŒŒ	à	ŒŒ	á	ŒŒ	#â	ŒŒ	*á		ŒŒ	1ß	ŒŒ 		3	  g  nameg  stats-sorterŒ C˜R™ 8š!' h   ~   ]4 5ŒC   v       g  data
		 g  prior-value		  g  filenamef  statprof.scmŒ
ï	ŒŒ	ð	 ŒŒ	ð	ŒŒ 			   C›˜EœžŸ ¡¢£¤¥¦§¨©ª«E8¬)*+,-.­®(¯      h    =  ]$  J4M 4 54 54 54 5è4 5šè4	 5š>  "  G  "  )4M 
4 54 54 5>  "  G  44 5M >  "  G  M 6      5      g  stats
	 š  g  filenamef  statprof.scmŒ
õ	ŒŒ	ö	ŒŒ		÷	ŒŒ	÷	ŒŒ	ø	ŒŒ	ù	ŒŒ	ú	ŒŒ	%û	ŒŒ	/ü	ŒŒ	6ü	ŒŒ	:ý	ŒŒ	Aý	ŒŒ	F÷	ŒŒ	Sþ	ŒŒ	Yþ	ŒŒ	Zÿ	ŒŒ	a 	ŒŒ	h	ŒŒ	sþ	ŒŒ	|	ŒŒ		ŒŒ Œ	ŒŒ š	ŒŒ 	 š  g  nameg  display-stats-lineŒ C®°±²³F–´ $     h(  ’  -  1  3  H J (  45 K "   45 
‘$  J 64545	$  H4J 
>	  "  G  4J >	  "  G  "  84J >  "  G  4J >  "  G  4 O >  "  G  4J >  "  G  445 >  "  G  4 5 !"›#›6   Š      g  port
	% g  
stats-list	9% g  sorted-stats		D%  g  filenamef  statprof.scmŒ
å
ŒŒ	è	ŒŒ	è	ŒŒ	è	ŒŒ	ë	ŒŒ	$ë	ŒŒ	)ê	ŒŒ	/ì	ŒŒ	1ì	ŒŒ	2î	ŒŒ	7ò	ŒŒ	9î	ŒŒ	9î	ŒŒ	<ó	ŒŒ	Dî	ŒŒ	L	ŒŒ	M	ŒŒ	S	ŒŒ	U	ŒŒ	W	ŒŒ	Y	(ŒŒ	[	/ŒŒ	]	2ŒŒ	_	9ŒŒ	a	AŒŒ	f	ŒŒ	o		ŒŒ	u		ŒŒ	w
	ŒŒ	y
	ŒŒ	{
	&ŒŒ	}
	0ŒŒ	
	8ŒŒ 
	BŒŒ ƒ
	LŒŒ ˆ		ŒŒ •	ŒŒ ›	ŒŒ 	ŒŒ Ÿ	ŒŒ ¡	&ŒŒ £	-ŒŒ ¨	ŒŒ ±	ŒŒ ·	ŒŒ ¹	ŒŒ »	ŒŒ ½	&ŒŒ ¿	0ŒŒ Ä	ŒŒ Í	ŒŒ æ	ŒŒ ê	ŒŒ ñ	ŒŒ ú	ŒŒ ÿ	ŒŒ 	-ŒŒ		ŒŒ	ŒŒ	ŒŒ	&ŒŒ 	ŒŒ%	ŒŒ @		%


  g  nameg  statprof-displayŒg  documentationf  ŠDisplays a gprof-like summary of the statistics collected. Unless an
optional @var{port} argument is passed, uses the current output port.Œ C/R!EQR±µM        hH   Ø   ]$  :4 5
‘$  +4 5
”$  4 54 54 56CCC    Ð       g  data
		D g  prior-value		D  g  filenamef  statprof.scmŒ
	ŒŒ		ŒŒ			ŒŒ		ŒŒ			ŒŒ	 	ŒŒ	 	ŒŒ	"		ŒŒ	'"	ŒŒ	(#	ŒŒ	/$	ŒŒ	6%	ŒŒ	>!		ŒŒ 		D	   C±¶²    h@     ] 4>  "  G  445 >  "  G  45 6             g  filenamef  statprof.scmŒ

ŒŒ		ŒŒ	'	ŒŒ	'	ŒŒ	'	'ŒŒ	%'	ŒŒ	2(	ŒŒ	3(	)ŒŒ	9(	ŒŒ 
		9
  g  nameg  statprof-display-anomoliesŒg  documentationf  QA sanity check that attempts to detect anomolies in statprof's
statistics.@code{}Œ C0RD·?´  h(   ò   ] 
”$  4>  "  G  "   ›C  ê       g  filenamef  statprof.scmŒ
*
ŒŒ	,	ŒŒ	
,	ŒŒ	-	ŒŒ	-	ŒŒ	-	ŒŒ	%.	ŒŒ 		&
  g  nameg  statprof-accumulated-timeŒg  documentationf  AReturns the time accumulated during the last statprof run.@code{}Œ CRD·A       h(   ì   ] 
”$  4>  "  G  "   C     ä       g  filenamef  statprof.scmŒ
0
ŒŒ	2	ŒŒ	
2	ŒŒ	3	ŒŒ	3	ŒŒ	3	ŒŒ 		#
  g  nameg  statprof-sample-countŒg  documentationf  HReturns the number of samples taken during the last statprof run.@code{}Œ C RMi#RQi$RRi%RSi&RH       h   >  ] C   6      g  filenamef  statprof.scmŒ
;
ŒŒ 		
  g  nameg  statprof-fetch-stacksŒg  documentationf  ÇReturns a list of stacks, as they were captured since the last call
to @code{statprof-reset}.

Note that stacks are only collected if the @var{full-stacks?} argument
to @code{statprof-reset} is true.Œ C1Rqs       h8   È   ] &  C4 5$  45$  4 545‚CCC  À       g  a
		6 g  b		6  g  filenamef  statprof.scmŒ
D	ŒŒ	
E	ŒŒ	F	ŒŒ	G	ŒŒ	E	ŒŒ	G	ŒŒ	"G	ŒŒ	#H	ŒŒ	*H	ŒŒ	1H	ŒŒ 		6	  g  nameg  procedure=?Œ C¸R¹º    h   €   ] 4 ŽL 5ŒC       x       g  tail
		  g  filenamef  statprof.scmŒ
R	ŒŒ	S	 ŒŒ	T	 ŒŒ	T	.ŒŒ	T	 ŒŒ	S	ŒŒ 		   Ci»›h   z   ] ŽŽ”C    r       g  a
		 g  b		  g  filenamef  statprof.scmŒ
X	ŒŒ	X	%ŒŒ		X	.ŒŒ	X	"ŒŒ 			   C¼  h   k   ]L L 6   c       g  x
		  g  filenamef  statprof.scmŒ
[	ŒŒ	[	 ŒŒ	
[	(ŒŒ	[	ŒŒ 		   C½ 
       h¸     ]""   (  +4O 5445?45ŒC(  Ž—"ÿÿ¶4O 5$  !Ž4	ŽŽŒ5"ÿÿ}ŽŽ Œ"ÿÿ` 
"ÿÿR          g  lists
	 ´ g  equal?	 ´ g  in		 ¦ g  
n-terminal		 ¦ g  tails		 ¦ g  trees			7 g  t		` ¦  g  filenamef  statprof.scmŒ
N
ŒŒ	O	ŒŒ	P	ŒŒ	R	ŒŒ	R	ŒŒ	V	ŒŒ	"V	"ŒŒ	,V	ŒŒ	-W	ŒŒ	6V	ŒŒ	:Y	ŒŒ	>P	ŒŒ	AZ	
ŒŒ	DZ	ŒŒ	PZ	ŒŒ	Q[	ŒŒ	`P	ŒŒ	k^	ŒŒ	n`	ŒŒ	ua	ŒŒ	xb	 ŒŒ	|b	*ŒŒ	}b	ŒŒ	`	ŒŒ ‰^	ŒŒ Œd	
ŒŒ ‘f	ŒŒ •f	!ŒŒ ™f	ŒŒ œf	
ŒŒ ¦d	ŒŒ ¦O	ŒŒ ªO	,ŒŒ ´O	ŒŒ #	 ´	  g  nameg  lists->treesŒ CºR¾¿À     h   Y   ] €C  Q       g  x
		  g  filenamef  statprof.scmŒ
j	ŒŒ	j	$ŒŒ 		   Cxz~      h    •   ]44 
556            g  stack
		  g  filenamef  statprof.scmŒ
h
ŒŒ	j	
ŒŒ	m	ŒŒ	j	
ŒŒ	i	ŒŒ 		  g  nameg  stack->proceduresŒ CÁRº¹ÁH¸  h   T  ] 4455ŒC   L      g  filenamef  statprof.scmŒ
o
ŒŒ	v	ŒŒ	v	ŒŒ	v	ŒŒ	v	ŒŒ 		
  g  nameg  statprof-fetch-call-treeŒg  documentationf  ¶Return a call tree for the previous statprof run.

The return value is a list of nodes, each of which is of the type:
@code
 node ::= (@var{proc} @var{count} . @var{nodes})
@end codeŒ C2RÊ   h0   ½   ]
 
‘$  E4L >   G ™ "ÿÿÙ       µ       g  i
		) g  result		) g  result			)  g  filenamef  statprof.scmŒ
Ž	ŒŒ		ŒŒ	
	ŒŒ	‘	ŒŒ	’	ŒŒ	”	ŒŒ	)”	ŒŒ 		)	  g  nameg  lpŒ C        h    l   ]O  L  Q   L6       d       g  lp
		  g  filenamef  statprof.scmŒ
	ŒŒ	Ž	ŒŒ		ŒŒ	Ž	ŒŒ 		
   CËÌÍ      h@   Ù   ] 444L›554L›4L›5˜š5LL >  "  G  6   Ñ       g  filenamef  statprof.scmŒ
†	ŒŒ	‡	ŒŒ	‡	ŒŒ		‡	&ŒŒ	‡	-ŒŒ	‡	&ŒŒ	‡	ŒŒ	ˆ	ŒŒ	ˆ	)ŒŒ	ˆ	0ŒŒ	‰	0ŒŒ	#‰	7ŒŒ	%‰	0ŒŒ	&ˆ	-ŒŒ	'ˆ	&ŒŒ	)ˆ	ŒŒ	2‡	ŒŒ	>Œ	ŒŒ 		>
   C/I     h(   [   ] 4>   "  G  4>   "  G   C S       g  filenamef  statprof.scmŒ
•	ŒŒ	–	ŒŒ	—	ŒŒ	%˜	ŒŒ 		'
   CËÌÍ       h@   Ù   ] 444L›554L›4L›5˜š5LL >  "  G  6   Ñ       g  filenamef  statprof.scmŒ
†	ŒŒ	‡	ŒŒ	‡	ŒŒ		‡	&ŒŒ	‡	-ŒŒ	‡	&ŒŒ	‡	ŒŒ	ˆ	ŒŒ	ˆ	)ŒŒ	ˆ	0ŒŒ	‰	0ŒŒ	#‰	7ŒŒ	%‰	0ŒŒ	&ˆ	-ŒŒ	'ˆ	&ŒŒ	)ˆ	ŒŒ	2‡	ŒŒ	>Œ	ŒŒ 		>
   C/I     h(   [   ] 4>   "  G  4>   "  G   C S       g  filenamef  statprof.scmŒ
•	ŒŒ	–	ŒŒ	—	ŒŒ	%˜	ŒŒ 		'
   C/I   h(   [   ] 4>   "  G  4>   "  G   C S       g  filenamef  statprof.scmŒ
•	ŒŒ	–	ŒŒ	—	ŒŒ	%˜	ŒŒ 		'
   C  h    .  - /   0   3 #  #  	d#  #  O  Q O 4O >   "  G  V4>   X4>   "  G  CX4>   "  G  F     &      g  thunk
	 › g  loop	 › g  hz		 › g  count-calls?		 › g  full-stacks?		 › g  thunk		A ›  g  filenamef  statprof.scmŒ
x
ŒŒ	A…	ŒŒ 	 ›
g  loopSŒg  hzS	Œg  count-calls?S	Œg  full-stacks?S	Œ   g  nameg  statprofŒg  documentationf õProfile the execution of @var{thunk}, and return its return values.

The stack will be sampled @var{hz} times per second, and the thunk
itself will be called @var{loop} times.

If @var{count-calls?} is true, all procedure calls will be recorded. This
operation is somewhat expensive.

If @var{full-stacks?} is true, at each sample, statprof will store away the
whole call tree, for later analysis. Use @code{statprof-fetch-stacks} or
@code{statprof-fetch-call-tree} to retrieve the last-stored stacks.Œ CR4Y3[^adgÎÏÐ hP   	  ](  645$    &  ŽC ŽŽ "ÿÿÈ4 5$  CC        g  kw
		N g  args		N g  def			N  g  filenamef  statprof.scmŒ
±	ŒŒ	²	ŒŒ	³	ŒŒ	³	ŒŒ	´	ŒŒ	´	ŒŒ	´	ŒŒ	²	ŒŒ	µ	ŒŒ	#µ	ŒŒ	&¶	
ŒŒ	-·	ŒŒ	:·	
ŒŒ	;¸	ŒŒ	H²	ŒŒ 		N	  g  nameg  
kw-arg-refŒ CÒÓÂÄÆÈ        h`   Î   -  1  3 O Q 4 5ŒŒ4 54 	d54 54 5 
C     Æ       g  args
			[ g  
kw-arg-ref		[  g  filenamef  statprof.scmŒ
š
ŒŒ	»	ŒŒ	¼	ŒŒ	%»	ŒŒ	)½	ŒŒ	4»	ŒŒ	5¾	
ŒŒ	A»	ŒŒ	B¿	ŒŒ	M»	ŒŒ	NÀ	ŒŒ	Z»	ŒŒ 			[


   C       h   a   ]	4 5L 4?6Y       g  args
		 g  v			  g  filenamef  statprof.scmŒ	š
ŒŒ 		   Cop        h(   w  ]	4 5$   O @ 6 o      g  y
		' g  tmp		'  g  filenamef  statprof.scmŒ
š
ŒŒ 		'  g  documentationf ËProfile the expressions in the body, and return the body's return values.

Keyword arguments:

@table @code
@item #:loop
Execute the body @var{loop} number of times, or @code{#f} for no looping

default: @code{#f}
@item #:hz
Sampling rate

default: @code{20}
@item #:count-calls?
Whether to instrument each function call (expensive)

default: @code{#f}
@item #:full-stacks?
Whether to collect away all sampled stacks into a list

default: @code{#f}
@end tableŒg  
macro-typeg  defmacroŒg  defmacro-argsg  args  C53RÕ€‚„…?j@ 
  hx   .  ]  $   C 45 4L 
5  $   "  4455  4>  "  G  – 	˜– 45  	  C    &      g  t
		t g  t
	!	? g  	stop-time
	?	o g  stack	?	o  g  filenamef  statprof.scmŒ
Û	ŒŒ	Ü	ŒŒ	ß	ŒŒ	â	ŒŒ	æ	ŒŒ	!æ	ŒŒ	0ç	ŒŒ	4ç	ŒŒ	5ç	"ŒŒ	<ç	ŒŒ	?â	ŒŒ	Dè	ŒŒ	Y ×	ŒŒ	bé	ŒŒ	cê	ŒŒ	iê	ŒŒ	rì	ŒŒ 		t
  g  nameg  gc-callbackŒ CD‘?@AE{IGHC‹FŒFÖ†‡ˆ  h      ] 
”$  4>  "  G  "   
  
  4 ƒ5 	L 
 — ‘$  O 45  445 5Ž 4L >  "  G  445 445 5—>  "  G  CC     y      g  filenamef  statprof.scmŒ
	ŒŒ	Ñ	ŒŒ	
Ñ	ŒŒ	Ò	ŒŒ	Ò	ŒŒ	Ò	ŒŒ	#Ó	ŒŒ	&Ô	ŒŒ	)Õ	ŒŒ	,Ö	ŒŒ	-×	ŒŒ	6×	ŒŒ	:Ø	ŒŒ	;Ù	ŒŒ	=Ù	ŒŒ	@ï	ŒŒ	Bï	ŒŒ	Fð	ŒŒ	Jð	ŒŒ	Mò	
ŒŒ	Nó	 ŒŒ	Tó	
ŒŒ	Uô	#ŒŒ	Yô	)ŒŒ	Zô	8ŒŒ	`ô	#ŒŒ	aô	ŒŒ	cô	
ŒŒ	dõ	
ŒŒ	xö	
ŒŒ	{ö	ŒŒ €ö	,ŒŒ ƒö	<ŒŒ ‰ö	,ŒŒ Šö	(ŒŒ ö	
ŒŒ %	 ›
   C     h8      ]"  # 
‘$  C4L >   "  G   ™ "ÿÿÝL "ÿÿÕ       ‡       g  i
		)  g  filenamef  statprof.scmŒ
	ŒŒ		ŒŒ				ŒŒ			ŒŒ		ŒŒ	#	ŒŒ	)	ŒŒ	)	ŒŒ 			1
   CD‹FŒFÖ?j@/I   hh   â   ] ™ 
‘$  =445 5Ž˜ 4L >  "  G  	–4
5 ˜–  "   4>   "  G   C       Ú       g  filenamef  statprof.scmŒ
	ŒŒ	ú	ŒŒ	ú	ŒŒ	
û	ŒŒ	û	ŒŒ	þ	ŒŒ	þ	ŒŒ	þ	-ŒŒ	þ	ŒŒ	þ	ŒŒ	þ	ŒŒ	!ý	
ŒŒ	"ÿ	
ŒŒ	9 ×	ŒŒ	; 	ŒŒ	E 	
ŒŒ	H	
ŒŒ	M	ŒŒ	_	ŒŒ 		a
   C   h    W  - /   0   3 #  #  O Q O O O Q  Q Q 4>   "  G  V4>   X4>   "  G  CX4>   "  G  FO      g  thunk
	   g  loop	   g  full-stacks?		   g  gc-callback		-   g  pre		L   g  thunk		L   g  post		L    g  filenamef  statprof.scmŒ
Â
ŒŒ	;	ŒŒ 	  
g  loopSŒg  full-stacks?S	Œ   g  nameg  gcprofŒg  documentationf +Do an allocation profile of the execution of @var{thunk}.

The stack will be sampled soon after every garbage collection, yielding
an approximate idea of what is causing allocation in your program.

Since GC does not occur very frequently, you may need to use the
@var{loop} parameter, to cause @var{thunk} to be called @var{loop}
times.

If @var{full-stacks?} is true, at each sample, statprof will store away the
whole call tree, for later analysis. Use @code{statprof-fetch-stacks} or
@code{statprof-fetch-call-tree} to retrieve the last-stored stacks.Œ C4RC    >      g  m
		0  g  filenamef  statprof.scmŒ		}
ŒŒ	4 ¯
ŒŒ	8 °
ŒŒ	< ±
ŒŒ	@ ²
ŒŒ	D ³
ŒŒ	H ´
ŒŒ	L µ
ŒŒ	P ¶
ŒŒ	T ¸
ŒŒ	U º	ŒŒ	X º
ŒŒ	\ ¿
ŒŒF Ã
ŒŒÏ Å
ŒŒp Æ
ŒŒ´ Ç
ŒŒE Ê
ŒŒÛ Ë
ŒŒt Ì
ŒŒ$ Î
ŒŒÚ Ð
ŒŒ“ Ò
ŒŒ Ù
ŒŒ æ
ŒŒ
ŒŒ†
ŒŒ.?
ŒŒ;M
ŒŒ¨S
ŒŒm
ŒŒ–
ŒŒ!––
ŒŒ"ñ¦
ŒŒ&±
ŒŒ'Ò
ŒŒ'¹Ó
ŒŒ([Ô
ŒŒ(üÕ
ŒŒ)Ö
ŒŒ*5×
ŒŒ*ÔØ
ŒŒ,Ü
ŒŒ3½å
ŒŒ6p
ŒŒ7¥*
ŒŒ8×0
ŒŒ8Þ6
ŒŒ8å7
ŒŒ8ì8
ŒŒ8ó9
ŒŒ:Q;
ŒŒ;kC
ŒŒ@"N
ŒŒAhh
ŒŒBïo
ŒŒL¡x
ŒŒ]*Â
ŒŒ ;	],
   C6 