tools.memory: display some more code heap stats
							parent
							
								
									87665c8f40
								
							
						
					
					
						commit
						eed0b27d5d
					
				| 
						 | 
				
			
			@ -55,6 +55,8 @@ IN: tools.memory
 | 
			
		|||
        { "Mark stack:" [ mark-stack>> kilobytes ] }
 | 
			
		||||
    } object-table. ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: data-room. ( -- )
 | 
			
		||||
    "== Data heap ==" print nl
 | 
			
		||||
    data-room data-heap-room memory>struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -64,14 +66,6 @@ IN: tools.memory
 | 
			
		|||
        [ misc-room. ]
 | 
			
		||||
    } cleave ;
 | 
			
		||||
 | 
			
		||||
: code-room. ( -- )
 | 
			
		||||
    "== Code heap ==" print nl
 | 
			
		||||
    code-room mark-sweep-sizes memory>struct mark-sweep-table. ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: room. ( -- ) data-room. nl code-room. ;
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: heap-stat-step ( obj counts sizes -- )
 | 
			
		||||
| 
						 | 
				
			
			@ -265,3 +259,36 @@ INSTANCE: code-blocks immutable-sequence
 | 
			
		|||
: lookup-return-address ( addr -- code-block )
 | 
			
		||||
    dup in-code-heap?
 | 
			
		||||
    [ \ code-blocks get (lookup-return-address) ] [ drop f ] if ;
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: code-block-stats ( code-blocks -- counts sizes )
 | 
			
		||||
    H{ } clone H{ } clone
 | 
			
		||||
    [ '[ [ size>> ] [ type>> ] bi [ nip _ inc-at ] [ _ at+ ] 2bi ] each ]
 | 
			
		||||
    2keep ;
 | 
			
		||||
 | 
			
		||||
: blocks ( n -- str ) number>string " blocks" append ;
 | 
			
		||||
 | 
			
		||||
: code-block-table-row ( string type counts sizes -- triple )
 | 
			
		||||
    [ at 0 or blocks ] [ at 0 or kilobytes ] bi-curry* bi 3array ;
 | 
			
		||||
 | 
			
		||||
: code-block-table. ( counts sizes -- )
 | 
			
		||||
    [
 | 
			
		||||
        {
 | 
			
		||||
            { "Optimized code:" +optimized+ }
 | 
			
		||||
            { "Unoptimized code:" +unoptimized+ }
 | 
			
		||||
            { "Inline caches:" +pic+ }
 | 
			
		||||
            { "Profiling stubs:" +profiling+ }
 | 
			
		||||
        }
 | 
			
		||||
    ] 2dip '[ _ _ code-block-table-row ] { } assoc>map
 | 
			
		||||
    simple-table. ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: code-room. ( -- )
 | 
			
		||||
    "== Code heap ==" print nl
 | 
			
		||||
    code-room mark-sweep-sizes memory>struct mark-sweep-table. nl
 | 
			
		||||
    code-blocks code-block-stats code-block-table. ;
 | 
			
		||||
 | 
			
		||||
: room. ( -- )
 | 
			
		||||
    data-room. nl code-room. ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue