]> gitweb.factorcode.org Git - factor.git/commitdiff
tools.image-analyzer.*: wrap read objects in heap-node tuples with their addresses
authorBjörn Lindqvist <bjourne@gmail.com>
Mon, 7 Dec 2015 03:20:43 +0000 (04:20 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Mon, 7 Dec 2015 03:20:43 +0000 (04:20 +0100)
extra/tools/image-analyzer/code-heap-reader/code-heap-reader.factor
extra/tools/image-analyzer/data-heap-reader/data-heap-reader.factor
extra/tools/image-analyzer/image-analyzer.factor
extra/tools/image-analyzer/vm/vm.factor

index e01c7d62cac9e8c1bff8070e045954aa903cd492..1a9dc9b04635bfc379d637fb7a3f50c808ef3373 100644 (file)
@@ -1,10 +1,8 @@
-USING: accessors alien.c-types classes.struct combinators io kernel
-math math.bitwise tools.image-analyzer.gc-info tools.image-analyzer.vm ;
+USING: accessors alien.c-types classes.struct io kernel math
+math.bitwise tools.image-analyzer.gc-info tools.image-analyzer.vm ;
 IN: tools.image-analyzer.code-heap-reader
 QUALIFIED: layouts
 
-TUPLE: code-block-t free? owner parameters relocation gc-maps payload ;
-
 : free? ( code-block -- ? )
     header>> 1 mask? ;
 
@@ -14,10 +12,6 @@ TUPLE: code-block-t free? owner parameters relocation gc-maps payload ;
 : (read-code-block) ( -- code-block payload )
     code-block [ read-struct ] [ heap-size ] bi over size swap - read ;
 
-: >code-block< ( code-block -- free? owner parameters relocation )
-    { [ free? ] [ owner>> ] [ parameters>> ] [ relocation>> ] } cleave ;
-
 : read-code-block ( -- code-block )
-    (read-code-block)
-    [ >code-block< ] [ [ byte-array>gc-maps ] keep ] bi*
-    code-block-t boa ;
+    tell-input (read-code-block) 2dup [ free? ] [ byte-array>gc-maps ] bi*
+    code-heap-node boa ;
index a9b268d99191141bd50eba2a8ff123d0630ae6b5..57140d41dea2742d5ae2675f596a038824d0db55 100644 (file)
@@ -1,10 +1,10 @@
-USING: accessors assocs classes classes.struct io locals
-math.bitwise namespaces sequences system tools.image-analyzer.utils
-tools.image-analyzer.vm vm vocabs.parser ;
+USING: accessors assocs classes.struct io locals math.bitwise
+namespaces system tools.image-analyzer.utils tools.image-analyzer.vm
+vm vocabs.parser ;
 IN: tools.image-analyzer.data-heap-reader
 FROM: alien.c-types => uchar heap-size ;
 FROM: arrays => 2array ;
-FROM: kernel => ? bi dup keep nip swap ;
+FROM: kernel => ? boa bi dup keep nip swap ;
 FROM: layouts => data-alignment ;
 FROM: math => + - * align neg shift ;
 
@@ -103,4 +103,4 @@ M: tuple read-payload ( rel-base tuple -- payload )
     peek-read-object object-tag tag>class read-struct ;
 
 : read-object ( rel-base -- object )
-    (read-object) [ read-payload ] keep swap 2array ;
+    tell-input swap (read-object) [ read-payload ] keep swap heap-node boa ;
index a7cc1f81583c1f63efa7abb59862d4f7044acc0d..fa061861a457d05d7dc9b25173464d43ef1159fc 100644 (file)
@@ -1,13 +1,14 @@
-USING: accessors arrays assocs classes.struct fry io io.encodings.binary
-io.files io.streams.byte-array kernel kernel.private math sequences
-tools.image-analyzer.code-heap-reader tools.image-analyzer.data-heap-reader
-tools.image-analyzer.utils tools.image-analyzer.vm vm ;
+USING: accessors classes.struct fry io io.encodings.binary io.files
+io.streams.byte-array kernel sequences
+tools.image-analyzer.code-heap-reader
+tools.image-analyzer.data-heap-reader tools.image-analyzer.utils
+tools.image-analyzer.vm ;
 IN: tools.image-analyzer
 
 : code-heap>code-blocks ( code-heap -- code-blocks )
     binary [ [ read-code-block ] consume-stream>sequence ] with-byte-reader ;
 
-: data-heap>objects ( data-relocation-base data-heap -- object-assoc )
+: data-heap>objects ( data-relocation-base data-heap -- seq )
     binary [ '[ _ read-object ] consume-stream>sequence ] with-byte-reader ;
 
 : load-image ( image -- header data-heap code-heap )
index 6f05668a3e9e34633828ca0a425d07501449f2ab..30b13d46bb6784690fbf89d08fda64850ece8ff0 100644 (file)
@@ -90,3 +90,7 @@ STRUCT: code-block
     { owner cell_t }
     { parameters cell_t }
     { relocation cell_t } ;
+
+TUPLE: heap-node address object payload ;
+
+TUPLE: code-heap-node < heap-node free? gc-maps ;