From: Björn Lindqvist Date: Fri, 10 Jul 2015 00:23:16 +0000 (+0200) Subject: tools.image-analyzer.*: fix the loading of the .32 and .64 vocabs X-Git-Tag: unmaintained~2489 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=dea0b49283b93189e76987d1379ffca56dd1d6b0 tools.image-analyzer.*: fix the loading of the .32 and .64 vocabs --- diff --git a/extra/tools/image-analyzer/data-heap-reader/data-heap-reader.factor b/extra/tools/image-analyzer/data-heap-reader/data-heap-reader.factor index 0087dcd7a9..bf8fa64440 100644 --- a/extra/tools/image-analyzer/data-heap-reader/data-heap-reader.factor +++ b/extra/tools/image-analyzer/data-heap-reader/data-heap-reader.factor @@ -1,15 +1,52 @@ -USING: accessors arrays assocs classes classes.struct io -locals math.bitwise namespaces sequences tools.image-analyzer.utils -tools.image-analyzer.vm vm ; +USING: accessors assocs classes classes.struct io locals +math.bitwise namespaces sequences system tools.image-analyzer.utils +tools.image-analyzer.vm vm vocabs.parser ; IN: tools.image-analyzer.data-heap-reader FROM: alien.c-types => char heap-size ; -FROM: kernel => bi dup keep nip swap ; +FROM: arrays => 2array ; +FROM: kernel => ? bi dup keep nip swap ; FROM: layouts => data-alignment ; FROM: math => + - * align neg shift ; +<< +! For the two annoying structs that differ on 32 and 64 bit. +cpu x86.32? +"tools.image-analyzer.vm.32" +"tools.image-analyzer.vm.64" +? use-vocab +>> + +: tag>class ( tag -- class ) + { + { 2 array } + { 3 boxed-float } + { 4 quotation } + { 5 bignum } + { 6 alien } + { 7 tuple } + { 8 wrapper } + { 9 byte-array } + { 10 callstack } + { 11 string } + { 12 word } + { 13 dll } + } at ; + : object-tag ( object -- tag ) header>> 5 2 bit-range ; +UNION: no-payload + alien + boxed-float + dll + quotation + wrapper + word ; + +UNION: array-payload + array + bignum ; + GENERIC: read-payload ( rel-base struct -- tuple ) : remainder-padding ( payload-size object -- n ) diff --git a/extra/tools/image-analyzer/image-analyzer-tests.factor b/extra/tools/image-analyzer/image-analyzer-tests.factor index c0b5eb4460..bcff120ee2 100644 --- a/extra/tools/image-analyzer/image-analyzer-tests.factor +++ b/extra/tools/image-analyzer/image-analyzer-tests.factor @@ -2,8 +2,11 @@ USING: accessors bootstrap.image fry grouping io.files io.pathnames kernel sequences system tools.deploy.backend tools.image-analyzer tools.test ; IN: tools.image-analyzer.tests +: image-path ( arch -- path ) + boot-image-name resource-path ; + : ?make-image ( arch -- ) - dup boot-image-name resource-path exists? [ drop ] [ make-image ] if ; + dup image-path exists? [ drop ] [ make-image ] if ; : loadable-images ( -- images ) images cpu name>> '[ _ tail? ] filter ; @@ -11,7 +14,7 @@ IN: tools.image-analyzer.tests { t } [ loadable-images [ [ ?make-image ] each ] [ [ - boot-image-name resource-path load-image 2drop code-size>> + image-path load-image 2drop code-size>> ] map [ 0 = ] all? ] bi ] unit-test diff --git a/extra/tools/image-analyzer/vm/32/32.factor b/extra/tools/image-analyzer/vm/32/32.factor index 2c97bfe202..184e9ab657 100644 --- a/extra/tools/image-analyzer/vm/32/32.factor +++ b/extra/tools/image-analyzer/vm/32/32.factor @@ -1,5 +1,5 @@ USING: alien.c-types classes.struct vm ; -IN: tools.image-analyzer.vm +IN: tools.image-analyzer.vm.32 STRUCT: boxed-float { header cell } diff --git a/extra/tools/image-analyzer/vm/64/64.factor b/extra/tools/image-analyzer/vm/64/64.factor index 00fc13ad45..ffd25f5656 100644 --- a/extra/tools/image-analyzer/vm/64/64.factor +++ b/extra/tools/image-analyzer/vm/64/64.factor @@ -1,5 +1,5 @@ USING: alien.c-types classes.struct vm ; -IN: tools.image-analyzer.vm +IN: tools.image-analyzer.vm.64 STRUCT: boxed-float { header cell } diff --git a/extra/tools/image-analyzer/vm/vm.factor b/extra/tools/image-analyzer/vm/vm.factor index c2a7959fd4..d6ce7299f4 100644 --- a/extra/tools/image-analyzer/vm/vm.factor +++ b/extra/tools/image-analyzer/vm/vm.factor @@ -1,15 +1,6 @@ -USING: alien.c-types assocs classes.struct kernel kernel.private system vm -vocabs.parser ; +USING: alien.c-types assocs classes.struct kernel kernel.private vm ; IN: tools.image-analyzer.vm -<< -! For the two annoying structs that differ on 32 and 64 bit. -cpu x86.32? -"tools.image-analyzer.vm.32" -"tools.image-analyzer.vm.64" -? use-vocab ->> - ! These structs and words correspond to vm/image.hpp STRUCT: image-header { magic cell } @@ -93,34 +84,6 @@ STRUCT: wrapper { header cell } { object cell } ; -UNION: no-payload - alien - boxed-float - dll - quotation - wrapper - word ; - -UNION: array-payload - array - bignum ; - -: tag>class ( tag -- class ) - { - { 2 array } - { 3 boxed-float } - { 4 quotation } - { 5 bignum } - { 6 alien } - { 7 tuple } - { 8 wrapper } - { 9 byte-array } - { 10 callstack } - { 11 string } - { 12 word } - { 13 dll } - } at ; - ! These structs and words correspond to vm/code_blocks.hpp STRUCT: code-block { header cell }