]> gitweb.factorcode.org Git - factor.git/blob - extra/tools/image-analyzer/code-heap-reader/code-heap-reader.factor
tools.image-analyzer.*: wrap read objects in heap-node tuples with their addresses
[factor.git] / extra / tools / image-analyzer / code-heap-reader / code-heap-reader.factor
1 USING: accessors alien.c-types classes.struct io kernel math
2 math.bitwise tools.image-analyzer.gc-info tools.image-analyzer.vm ;
3 IN: tools.image-analyzer.code-heap-reader
4 QUALIFIED: layouts
5
6 : free? ( code-block -- ? )
7     header>> 1 mask? ;
8
9 : size ( code-block -- n )
10     header>> dup 1 mask? [ 7 unmask ] [ 0xfffff8 mask ] if ;
11
12 : (read-code-block) ( -- code-block payload )
13     code-block [ read-struct ] [ heap-size ] bi over size swap - read ;
14
15 : read-code-block ( -- code-block )
16     tell-input (read-code-block) 2dup [ free? ] [ byte-array>gc-maps ] bi*
17     code-heap-node boa ;