factor/extra/tools/image-analyzer/vm/vm.factor

97 lines
2.0 KiB
Factor

USING: alien.c-types assocs classes.struct kernel kernel.private vm ;
IN: tools.image-analyzer.vm
! These structs and words correspond to vm/image.hpp
STRUCT: image-header
{ magic cell_t }
{ version cell_t }
{ data-relocation-base cell_t }
{ data-size cell_t }
{ code-relocation-base cell_t }
{ code-size cell_t }
{ reserved-1 cell_t }
{ reserved-2 cell_t }
{ reserved-3 cell_t }
{ reserved-4 cell_t }
{ special-objects cell_t[special-object-count] } ;
! These structs and words correspond to vm/layouts.hpp
STRUCT: object
{ header cell_t } ;
STRUCT: alien
{ header cell_t }
{ base cell_t }
{ expired cell_t }
{ displacement cell_t }
{ address cell_t } ;
STRUCT: array
{ header cell_t }
{ capacity cell_t } ;
STRUCT: bignum
{ header cell_t }
{ capacity cell_t } ;
STRUCT: callstack
{ header cell_t }
{ length cell_t } ;
STRUCT: dll
{ header cell_t }
{ path cell_t }
{ handle void* } ;
STRUCT: quotation
{ header cell_t }
{ array cell_t }
{ cached_effect cell_t }
{ cache_counter cell_t }
{ entry_point cell_t } ;
STRUCT: string
{ header cell_t }
{ length cell_t }
{ aux cell_t }
{ hashcode cell_t } ;
STRUCT: tuple
{ header cell_t }
{ layout cell_t } ;
STRUCT: tuple-layout
{ header cell_t }
{ capacity cell_t }
{ klass cell_t }
{ size cell_t }
{ echelon cell_t } ;
STRUCT: word
{ header cell_t }
{ hashcode cell_t }
{ name cell_t }
{ vocabulary cell_t }
{ def cell_t }
{ props cell_t }
{ pic_def cell_t }
{ pic_tail_def cell_t }
{ subprimitive cell_t }
{ entry_point cell_t } ;
STRUCT: wrapper
{ header cell_t }
{ object cell_t } ;
! These structs and words correspond to vm/code_blocks.hpp
STRUCT: code-block
{ header cell_t }
{ owner cell_t }
{ parameters cell_t }
{ relocation cell_t } ;
TUPLE: heap-node address object payload ;
TUPLE: code-heap-node < heap-node free? gc-maps ;