1 USING: accessors alien.c-types classes.struct combinators io kernel
2 math math.bitwise tools.image-analyzer.gc-info tools.image-analyzer.vm ;
3 IN: tools.image-analyzer.code-heap-reader
6 TUPLE: code-block-t free? owner parameters relocation gc-maps payload ;
8 : free? ( code-block -- ? )
11 : size ( code-block -- n )
12 header>> dup 1 mask? [ 7 unmask ] [ 0xfffff8 mask ] if ;
14 : (read-code-block) ( -- code-block payload )
15 code-block [ read-struct ] [ heap-size ] bi over size swap - read ;
17 : >code-block< ( code-block -- free? owner parameters relocation )
18 { [ free? ] [ owner>> ] [ parameters>> ] [ relocation>> ] } cleave ;
20 : read-code-block ( -- code-block )
22 [ >code-block< ] [ [ byte-array>gc-maps ] keep ] bi*