Skip to content

Commit

Permalink
vm: add the gc-info struct
Browse files Browse the repository at this point in the history
  • Loading branch information
bjourne authored and erg committed Aug 25, 2014
1 parent 9b35de2 commit 3a6c147
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 29 deletions.
11 changes: 2 additions & 9 deletions basis/compiler/codegen/gc-maps/gc-maps-tests.factor
Expand Up @@ -2,17 +2,10 @@ USING: namespaces byte-arrays make compiler.codegen.gc-maps
compiler.codegen.relocation bit-arrays accessors classes.struct
tools.test kernel math sequences alien.c-types
specialized-arrays boxes compiler.cfg.instructions system
cpu.architecture ;
cpu.architecture vm ;
SPECIALIZED-ARRAY: uint
IN: compiler.codegen.gc-maps.tests

STRUCT: gc-info
{ scrub-d-count uint }
{ scrub-r-count uint }
{ gc-root-count uint }
{ derived-root-count uint }
{ return-address-count uint } ;

SINGLETON: fake-cpu

fake-cpu \ cpu set
Expand Down Expand Up @@ -63,7 +56,7 @@ M: fake-cpu gc-root-offset ;
! Return addresses
uint-array{ 100 } underlying>> %

! GC info footer - 16 bytes
! GC info footer - 20 bytes
S{ gc-info
{ scrub-d-count 5 }
{ scrub-r-count 2 }
Expand Down
11 changes: 11 additions & 0 deletions basis/vm/vm-docs.factor
Expand Up @@ -20,3 +20,14 @@ HELP: vm
HELP: vm-field-offset
{ $values { "field" string } { "offset" number } }
{ $description "Gets the offset in bytes to the named virtual machine field." } ;

HELP: gc-info
{ $class-description "A struct that defines the sizes of the garbage collection maps for a word. It has the following slots:"
{ $table
{ { $slot "scrub-d-count" } "Number of datastack scrub bits per callsite." }
{ { $slot "scrub-r-count" } "Number of retainstack scrub bits per callsite." }
{ { $slot "gc-root-count" } "Number of gc root bits per callsite." }
{ { $slot "derived-root-count" } "Number of derived roots per callsite." }
{ { $slot "return-address-count" } "Number of gc callsites." }
}
} ;
7 changes: 7 additions & 0 deletions basis/vm/vm.factor
Expand Up @@ -91,3 +91,10 @@ STRUCT: dispatch-statistics

{ pic-tag-count cell }
{ pic-tuple-count cell } ;

STRUCT: gc-info
{ scrub-d-count uint read-only }
{ scrub-r-count uint read-only }
{ gc-root-count uint read-only }
{ derived-root-count uint read-only }
{ return-address-count uint read-only } ;
11 changes: 0 additions & 11 deletions extra/tools/gc-decode/gc-decode-docs.factor
Expand Up @@ -4,17 +4,6 @@ IN: tools.gc-decode
ARTICLE: "tools.gc-decode" "GC maps decoder"
"A vocab that disassembles words gc maps. It's useful to have when debugging garbage collection issues." ;

HELP: gc-info
{ $class-description "A struct that defines the sizes of the garbage collection maps for a word. It has the following slots:"
{ $table
{ { $slot "scrub-d-count" } "Number of datastack scrub bits per callsite." }
{ { $slot "scrub-r-count" } "Number of retainstack scrub bits per callsite." }
{ { $slot "gc-root-count" } "Number of gc root bits per callsite." }
{ { $slot "derived-root-count" } "Number of derived roots per callsite." }
{ { $slot "return-address-count" } "Number of gc callsites." }
}
} ;

HELP: word>gc-info
{ $values { "word" word } { "gc-info" gc-info } }
{ $description "Gets the gc-info struct for a word." } ;
Expand Down
2 changes: 1 addition & 1 deletion extra/tools/gc-decode/gc-decode-tests.factor
@@ -1,4 +1,4 @@
USING: bit-arrays classes.struct tools.gc-decode tools.test ;
USING: bit-arrays classes.struct tools.gc-decode tools.test vm ;
QUALIFIED: effects
QUALIFIED: llvm.types
QUALIFIED: unix.process
Expand Down
9 changes: 1 addition & 8 deletions extra/tools/gc-decode/gc-decode.factor
@@ -1,6 +1,6 @@
USING: accessors alien alien.c-types alien.data arrays assocs bit-arrays
bit-arrays.private classes.struct fry grouping kernel math math.statistics
sequences sequences.repeating words ;
sequences sequences.repeating vm words ;
IN: tools.gc-decode

! Utils
Expand All @@ -20,13 +20,6 @@ IN: tools.gc-decode
[ heap-size * [ >c-ptr alien-address ] dip - <alien> ] 2keep
c-direct-array-constructor execute( alien len -- seq ) ;

STRUCT: gc-info
{ scrub-d-count uint read-only }
{ scrub-r-count uint read-only }
{ gc-root-count uint read-only }
{ derived-root-count uint read-only }
{ return-address-count uint read-only } ;

: bit-counts ( gc-info -- counts )
struct-slot-values 3 head ;

Expand Down

0 comments on commit 3a6c147

Please sign in to comment.