factor/library/tools/dump.factor

31 lines
904 B
Factor
Raw Normal View History

2005-04-17 18:41:05 -04:00
! Copyright (C) 2004, 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: dump
2005-04-19 20:28:01 -04:00
USING: alien assembler generic kernel kernel-internals lists
math memory sequences stdio strings unparser ;
2005-04-17 18:41:05 -04:00
: cell. >hex cell 2 * CHAR: 0 pad write ;
: slot@ ( address n -- n ) cell * swap 7 bitnot bitand + ;
: dump-line ( address n value -- )
>r slot@ cell. ": " write r> cell. terpri ;
2005-04-19 20:28:01 -04:00
: (dump) ( address list -- )
0 swap [ >r 2dup r> dump-line 1 + ] each 2drop ;
2005-04-17 18:41:05 -04:00
2005-04-19 20:28:01 -04:00
: integer-slots ( obj -- list )
dup size cell / [ integer-slot ] project-with ;
2005-04-17 18:41:05 -04:00
: dump ( obj -- )
#! Dump an object's memory.
2005-04-19 20:28:01 -04:00
dup address swap integer-slots (dump) ;
: alien-slots ( address length -- list )
cell / [ cell * alien-unsigned-4 ] project-with ;
2005-04-17 18:41:05 -04:00
: dump* ( alien len -- )
#! Dump an alien's memory.
dup string? [ c-size ] when
2005-04-19 20:28:01 -04:00
>r [ alien-address ] keep r> alien-slots (dump) ;