Merge branch 'master' of git://factorcode.org/git/factor

db4
Doug Coleman 2008-08-31 21:41:19 -05:00
commit d72ae796c6
18 changed files with 138 additions and 121 deletions

View File

@ -12,8 +12,6 @@ IN: compiler.tree.propagation.info
: null-class? ( class -- ? ) null class<= ; : null-class? ( class -- ? ) null class<= ;
SYMBOL: +interval+
GENERIC: eql? ( obj1 obj2 -- ? ) GENERIC: eql? ( obj1 obj2 -- ? )
M: object eql? eq? ; M: object eql? eq? ;
M: fixnum eql? eq? ; M: fixnum eql? eq? ;
@ -40,7 +38,7 @@ slots ;
: class-interval ( class -- interval ) : class-interval ( class -- interval )
dup real class<= dup real class<=
[ +interval+ word-prop [-inf,inf] or ] [ drop f ] if ; [ "interval" word-prop [-inf,inf] or ] [ drop f ] if ;
: interval>literal ( class interval -- literal literal? ) : interval>literal ( class interval -- literal literal? )
#! If interval has zero length and the class is sufficiently #! If interval has zero length and the class is sufficiently
@ -84,7 +82,7 @@ slots ;
init-value-info ; foldable init-value-info ; foldable
: <class-info> ( class -- info ) : <class-info> ( class -- info )
dup word? [ dup +interval+ word-prop ] [ f ] if [-inf,inf] or dup word? [ dup "interval" word-prop ] [ f ] if [-inf,inf] or
<class/interval-info> ; foldable <class/interval-info> ; foldable
: <interval-info> ( interval -- info ) : <interval-info> ( interval -- info )

View File

@ -1,9 +1,9 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors kernel arrays sequences math math.order USING: accessors kernel arrays sequences math math.order
math.partial-dispatch generic generic.standard classes.algebra math.partial-dispatch generic generic.standard generic.math
classes.union sets quotations assocs combinators words classes.algebra classes.union sets quotations assocs combinators
namespaces words namespaces
compiler.tree compiler.tree
compiler.tree.builder compiler.tree.builder
compiler.tree.normalization compiler.tree.normalization
@ -145,3 +145,13 @@ SYMBOL: history
: always-inline-word? ( word -- ? ) : always-inline-word? ( word -- ? )
{ curry compose } memq? ; { curry compose } memq? ;
: do-inlining ( #call word -- ? )
{
{ [ dup always-inline-word? ] [ inline-word ] }
{ [ dup standard-generic? ] [ inline-standard-method ] }
{ [ dup math-generic? ] [ inline-math-method ] }
{ [ dup math-partial? ] [ inline-math-partial ] }
{ [ dup method-body? ] [ inline-method-body ] }
[ 2drop f ]
} cond ;

View File

@ -17,11 +17,11 @@ IN: compiler.tree.propagation.known-words
\ fixnum \ fixnum
most-negative-fixnum most-positive-fixnum [a,b] most-negative-fixnum most-positive-fixnum [a,b]
+interval+ set-word-prop "interval" set-word-prop
\ array-capacity \ array-capacity
0 max-array-capacity [a,b] 0 max-array-capacity [a,b]
+interval+ set-word-prop "interval" set-word-prop
{ + - * / } { + - * / }
[ { number number } "input-classes" set-word-prop ] each [ { number number } "input-classes" set-word-prop ] each
@ -66,17 +66,17 @@ most-negative-fixnum most-positive-fixnum [a,b]
over interval>> [ [ clone ] dip change-interval ] [ 2drop ] if ; inline over interval>> [ [ clone ] dip change-interval ] [ 2drop ] if ; inline
{ bitnot fixnum-bitnot bignum-bitnot } [ { bitnot fixnum-bitnot bignum-bitnot } [
[ [ interval-bitnot ] ?change-interval ] +outputs+ set-word-prop [ [ interval-bitnot ] ?change-interval ] "outputs" set-word-prop
] each ] each
\ abs [ [ interval-abs ] ?change-interval ] +outputs+ set-word-prop \ abs [ [ interval-abs ] ?change-interval ] "outputs" set-word-prop
: math-closure ( class -- newclass ) : math-closure ( class -- newclass )
{ fixnum bignum integer rational float real number object } { fixnum bignum integer rational float real number object }
[ class<= ] with find nip ; [ class<= ] with find nip ;
: fits? ( interval class -- ? ) : fits? ( interval class -- ? )
+interval+ word-prop interval-subset? ; "interval" word-prop interval-subset? ;
: binary-op-class ( info1 info2 -- newclass ) : binary-op-class ( info1 info2 -- newclass )
[ class>> ] bi@ [ class>> ] bi@
@ -120,7 +120,7 @@ most-negative-fixnum most-positive-fixnum [a,b]
[ binary-op-class ] [ , binary-op-interval ] 2bi [ binary-op-class ] [ , binary-op-interval ] 2bi
@ @
<class/interval-info> <class/interval-info>
] +outputs+ set-word-prop ; ] "outputs" set-word-prop ;
\ + [ [ interval+ ] [ may-overflow number-valued ] binary-op ] each-derived-op \ + [ [ interval+ ] [ may-overflow number-valued ] binary-op ] each-derived-op
\ + [ [ interval+ ] [ number-valued ] binary-op ] each-fast-derived-op \ + [ [ interval+ ] [ number-valued ] binary-op ] each-fast-derived-op
@ -158,7 +158,7 @@ most-negative-fixnum most-positive-fixnum [a,b]
in1 in2 op negate-comparison (comparison-constraints) out f--> /\ ; in1 in2 op negate-comparison (comparison-constraints) out f--> /\ ;
: define-comparison-constraints ( word op -- ) : define-comparison-constraints ( word op -- )
'[ , comparison-constraints ] +constraints+ set-word-prop ; '[ , comparison-constraints ] "constraints" set-word-prop ;
comparison-ops comparison-ops
[ dup '[ , define-comparison-constraints ] each-derived-op ] each [ dup '[ , define-comparison-constraints ] each-derived-op ] each
@ -178,13 +178,13 @@ generic-comparison-ops [
comparison-ops [ comparison-ops [
dup '[ dup '[
[ , fold-comparison ] +outputs+ set-word-prop [ , fold-comparison ] "outputs" set-word-prop
] each-derived-op ] each-derived-op
] each ] each
generic-comparison-ops [ generic-comparison-ops [
dup specific-comparison dup specific-comparison
'[ , fold-comparison ] +outputs+ set-word-prop '[ , fold-comparison ] "outputs" set-word-prop
] each ] each
: maybe-or-never ( ? -- info ) : maybe-or-never ( ? -- info )
@ -196,7 +196,7 @@ generic-comparison-ops [
{ number= bignum= float= } [ { number= bignum= float= } [
[ [
info-intervals-intersect? maybe-or-never info-intervals-intersect? maybe-or-never
] +outputs+ set-word-prop ] "outputs" set-word-prop
] each ] each
: info-classes-intersect? ( info1 info2 -- ? ) : info-classes-intersect? ( info1 info2 -- ? )
@ -206,13 +206,13 @@ generic-comparison-ops [
over value-info literal>> fixnum? [ over value-info literal>> fixnum? [
[ value-info literal>> is-equal-to ] dip t--> [ value-info literal>> is-equal-to ] dip t-->
] [ 3drop f ] if ] [ 3drop f ] if
] +constraints+ set-word-prop ] "constraints" set-word-prop
\ eq? [ \ eq? [
[ info-intervals-intersect? ] [ info-intervals-intersect? ]
[ info-classes-intersect? ] [ info-classes-intersect? ]
2bi or maybe-or-never 2bi or maybe-or-never
] +outputs+ set-word-prop ] "outputs" set-word-prop
{ {
{ >fixnum fixnum } { >fixnum fixnum }
@ -226,7 +226,7 @@ generic-comparison-ops [
interval-intersect interval-intersect
] 2bi ] 2bi
<class/interval-info> <class/interval-info>
] +outputs+ set-word-prop ] "outputs" set-word-prop
] assoc-each ] assoc-each
{ {
@ -250,36 +250,36 @@ generic-comparison-ops [
} }
} cond } cond
[ fixnum fits? fixnum integer ? ] keep <class/interval-info> [ fixnum fits? fixnum integer ? ] keep <class/interval-info>
[ 2nip ] curry +outputs+ set-word-prop [ 2nip ] curry "outputs" set-word-prop
] each ] each
{ <tuple> <tuple-boa> } [ { <tuple> <tuple-boa> } [
[ [
literal>> dup tuple-layout? [ class>> ] [ drop tuple ] if <class-info> literal>> dup tuple-layout? [ class>> ] [ drop tuple ] if <class-info>
[ clear ] dip [ clear ] dip
] +outputs+ set-word-prop ] "outputs" set-word-prop
] each ] each
\ new [ \ new [
literal>> dup tuple-class? [ drop tuple ] unless <class-info> literal>> dup tuple-class? [ drop tuple ] unless <class-info>
] +outputs+ set-word-prop ] "outputs" set-word-prop
! the output of clone has the same type as the input ! the output of clone has the same type as the input
{ clone (clone) } [ { clone (clone) } [
[ clone f >>literal f >>literal? ] [ clone f >>literal f >>literal? ]
+outputs+ set-word-prop "outputs" set-word-prop
] each ] each
\ slot [ \ slot [
dup literal?>> dup literal?>>
[ literal>> swap value-info-slot ] [ 2drop object-info ] if [ literal>> swap value-info-slot ] [ 2drop object-info ] if
] +outputs+ set-word-prop ] "outputs" set-word-prop
\ instance? [ \ instance? [
[ value-info ] dip over literal>> class? [ [ value-info ] dip over literal>> class? [
[ literal>> ] dip predicate-constraints [ literal>> ] dip predicate-constraints
] [ 3drop f ] if ] [ 3drop f ] if
] +constraints+ set-word-prop ] "constraints" set-word-prop
\ instance? [ \ instance? [
! We need to force the caller word to recompile when the class ! We need to force the caller word to recompile when the class
@ -292,4 +292,4 @@ generic-comparison-ops [
[ predicate-output-infos ] [ predicate-output-infos ]
bi bi
] [ 2drop object-info ] if ] [ 2drop object-info ] if
] +outputs+ set-word-prop ] "outputs" set-word-prop

View File

@ -6,9 +6,6 @@ compiler.tree.propagation.copy
compiler.tree.propagation.info ; compiler.tree.propagation.info ;
IN: compiler.tree.propagation.nodes IN: compiler.tree.propagation.nodes
SYMBOL: +constraints+
SYMBOL: +outputs+
GENERIC: propagate-before ( node -- ) GENERIC: propagate-before ( node -- )
GENERIC: propagate-after ( node -- ) GENERIC: propagate-after ( node -- )

View File

@ -3,8 +3,7 @@
USING: fry accessors kernel sequences sequences.private assocs words USING: fry accessors kernel sequences sequences.private assocs words
namespaces classes.algebra combinators classes classes.tuple namespaces classes.algebra combinators classes classes.tuple
classes.tuple.private continuations arrays classes.tuple.private continuations arrays
math math.partial-dispatch math.private slots generic definitions math math.private slots generic definitions
generic.standard generic.math
stack-checker.state stack-checker.state
compiler.tree compiler.tree
compiler.tree.propagation.info compiler.tree.propagation.info
@ -52,7 +51,7 @@ M: #declare propagate-before
with-datastack first assume ; with-datastack first assume ;
: compute-constraints ( #call word -- ) : compute-constraints ( #call word -- )
dup +constraints+ word-prop [ nip custom-constraints ] [ dup "constraints" word-prop [ nip custom-constraints ] [
dup predicate? [ dup predicate? [
[ [ in-d>> first ] [ out-d>> first ] bi ] [ [ in-d>> first ] [ out-d>> first ] bi ]
[ "predicating" word-prop ] bi* [ "predicating" word-prop ] bi*
@ -61,19 +60,22 @@ M: #declare propagate-before
] if* ; ] if* ;
: call-outputs-quot ( #call word -- infos ) : call-outputs-quot ( #call word -- infos )
[ in-d>> [ value-info ] map ] [ +outputs+ word-prop ] bi* [ in-d>> [ value-info ] map ] [ "outputs" word-prop ] bi*
with-datastack ; with-datastack ;
: foldable-call? ( #call word -- ? ) : foldable-call? ( #call word -- ? )
"foldable" word-prop "foldable" word-prop
[ in-d>> [ value-info literal?>> ] all? ] [ drop f ] if ; [ in-d>> [ value-info literal?>> ] all? ] [ drop f ] if ;
: fold-call ( #call word -- infos ) : (fold-call) ( #call word -- info )
[ [ out-d>> ] [ in-d>> [ value-info literal>> ] map ] bi ] [ '[ , execute ] ] bi* [ [ out-d>> ] [ in-d>> [ value-info literal>> ] map ] bi ] [ '[ , execute ] ] bi*
'[ , , with-datastack [ <literal-info> ] map nip ] '[ , , with-datastack [ <literal-info> ] map nip ]
[ drop [ object-info ] replicate ] [ drop [ object-info ] replicate ]
recover ; recover ;
: fold-call ( #call word -- )
[ (fold-call) ] [ drop out-d>> ] 2bi set-value-infos ;
: predicate-output-infos ( info class -- info ) : predicate-output-infos ( info class -- info )
[ class>> ] dip { [ class>> ] dip {
{ [ 2dup class<= ] [ t <literal-info> ] } { [ 2dup class<= ] [ t <literal-info> ] }
@ -95,30 +97,23 @@ M: #declare propagate-before
: output-value-infos ( #call word -- infos ) : output-value-infos ( #call word -- infos )
{ {
{ [ 2dup foldable-call? ] [ fold-call ] }
{ [ dup tuple-constructor? ] [ propagate-tuple-constructor ] } { [ dup tuple-constructor? ] [ propagate-tuple-constructor ] }
{ [ dup sequence-constructor? ] [ propagate-sequence-constructor ] } { [ dup sequence-constructor? ] [ propagate-sequence-constructor ] }
{ [ dup predicate? ] [ propagate-predicate ] } { [ dup predicate? ] [ propagate-predicate ] }
{ [ dup +outputs+ word-prop ] [ call-outputs-quot ] } { [ dup "outputs" word-prop ] [ call-outputs-quot ] }
[ default-output-value-infos ] [ default-output-value-infos ]
} cond ; } cond ;
: do-inlining ( #call word -- ? )
{
{ [ dup always-inline-word? ] [ inline-word ] }
{ [ dup standard-generic? ] [ inline-standard-method ] }
{ [ dup math-generic? ] [ inline-math-method ] }
{ [ dup math-partial? ] [ inline-math-partial ] }
{ [ dup method-body? ] [ inline-method-body ] }
[ 2drop f ]
} cond ;
M: #call propagate-before M: #call propagate-before
dup word>> 2dup do-inlining [ 2drop ] [ dup word>> {
{ [ 2dup foldable-call? ] [ fold-call ] }
{ [ 2dup do-inlining ] [ 2drop ] }
[
[ [ output-value-infos ] [ drop out-d>> ] 2bi set-value-infos ] [ [ output-value-infos ] [ drop out-d>> ] 2bi set-value-infos ]
[ compute-constraints ] [ compute-constraints ]
2bi 2bi
] if ; ]
} cond ;
M: #call annotate-node M: #call annotate-node
dup [ in-d>> ] [ out-d>> ] bi append (annotate-node) ; dup [ in-d>> ] [ out-d>> ] bi append (annotate-node) ;

View File

@ -1,6 +1,6 @@
USING: definitions help help.topics help.crossref help.markup USING: accessors definitions help help.topics help.crossref
help.syntax kernel sequences tools.test words parser namespaces help.markup help.syntax kernel sequences tools.test words parser
assocs source-files eval ; namespaces assocs source-files eval ;
IN: help.topics.tests IN: help.topics.tests
\ article-name must-infer \ article-name must-infer

View File

@ -32,8 +32,8 @@ M: wrapper expand-macros* wrapped>> literal ;
stack get pop >quotation end (expand-macros) ; stack get pop >quotation end (expand-macros) ;
: expand-macro? ( word -- quot ? ) : expand-macro? ( word -- quot ? )
dup [ "macro" word-prop ] [ +transform-quot+ word-prop ] bi or dup [ dup [ "macro" word-prop ] [ "transform-quot" word-prop ] bi or dup [
swap [ stack-effect in>> length ] [ +transform-n+ word-prop ] bi or swap [ stack-effect in>> length ] [ "transform-n" word-prop ] bi or
stack get length <= stack get length <=
] [ 2drop f f ] if ; ] [ 2drop f f ] if ;

View File

@ -173,15 +173,13 @@ do-primitive alien-invoke alien-indirect alien-callback
{ call execute dispatch load-locals get-local drop-locals } { call execute dispatch load-locals get-local drop-locals }
[ t "no-compile" set-word-prop ] each [ t "no-compile" set-word-prop ] each
SYMBOL: +primitive+
: non-inline-word ( word -- ) : non-inline-word ( word -- )
dup called-dependency depends-on dup called-dependency depends-on
{ {
{ [ dup "shuffle" word-prop ] [ infer-shuffle-word ] } { [ dup "shuffle" word-prop ] [ infer-shuffle-word ] }
{ [ dup "special" word-prop ] [ infer-special ] } { [ dup "special" word-prop ] [ infer-special ] }
{ [ dup +primitive+ word-prop ] [ infer-primitive ] } { [ dup "primitive" word-prop ] [ infer-primitive ] }
{ [ dup +transform-quot+ word-prop ] [ apply-transform ] } { [ dup "transform-quot" word-prop ] [ apply-transform ] }
{ [ dup "macro" word-prop ] [ apply-macro ] } { [ dup "macro" word-prop ] [ apply-macro ] }
{ [ dup "cannot-infer" word-prop ] [ cannot-infer-effect ] } { [ dup "cannot-infer" word-prop ] [ cannot-infer-effect ] }
{ [ dup "inferred-effect" word-prop ] [ cached-infer ] } { [ dup "inferred-effect" word-prop ] [ cached-infer ] }
@ -190,7 +188,7 @@ SYMBOL: +primitive+
} cond ; } cond ;
: define-primitive ( word inputs outputs -- ) : define-primitive ( word inputs outputs -- )
[ 2drop t +primitive+ set-word-prop ] [ 2drop t "primitive" set-word-prop ]
[ drop "input-classes" set-word-prop ] [ drop "input-classes" set-word-prop ]
[ nip "default-output-classes" set-word-prop ] [ nip "default-output-classes" set-word-prop ]
3tri ; 3tri ;
@ -600,8 +598,6 @@ SYMBOL: +primitive+
\ (set-os-envs) { array } { } define-primitive \ (set-os-envs) { array } { } define-primitive
\ do-primitive [ \ do-primitive cannot-infer-effect ] "infer" set-word-prop
\ dll-valid? { object } { object } define-primitive \ dll-valid? { object } { object } define-primitive
\ modify-code-heap { array object } { } define-primitive \ modify-code-heap { array object } { } define-primitive

View File

@ -8,9 +8,6 @@ stack-checker.backend stack-checker.state stack-checker.visitor
stack-checker.errors ; stack-checker.errors ;
IN: stack-checker.transforms IN: stack-checker.transforms
SYMBOL: +transform-quot+
SYMBOL: +transform-n+
: give-up-transform ( word -- ) : give-up-transform ( word -- )
dup recursive-label dup recursive-label
[ call-recursive-word ] [ call-recursive-word ]
@ -48,8 +45,8 @@ SYMBOL: +transform-n+
: apply-transform ( word -- ) : apply-transform ( word -- )
[ inlined-dependency depends-on ] [ [ inlined-dependency depends-on ] [
[ ] [ ]
[ +transform-quot+ word-prop ] [ "transform-quot" word-prop ]
[ +transform-n+ word-prop ] [ "transform-n" word-prop ]
tri tri
(apply-transform) (apply-transform)
] bi ; ] bi ;
@ -64,8 +61,8 @@ SYMBOL: +transform-n+
] bi ; ] bi ;
: define-transform ( word quot n -- ) : define-transform ( word quot n -- )
[ drop +transform-quot+ set-word-prop ] [ drop "transform-quot" set-word-prop ]
[ nip +transform-n+ set-word-prop ] [ nip "transform-n" set-word-prop ]
3bi ; 3bi ;
! Combinators ! Combinators

View File

@ -85,8 +85,11 @@ IN: tools.deploy.shaker
[ [
strip-dictionary? [ strip-dictionary? [
{ {
"cannot-infer"
"coercer" "coercer"
"combination"
"compiled-effect" "compiled-effect"
"compiled-generic-uses"
"compiled-uses" "compiled-uses"
"constraints" "constraints"
"declared-effect" "declared-effect"
@ -94,38 +97,52 @@ IN: tools.deploy.shaker
"default-method" "default-method"
"default-output-classes" "default-output-classes"
"derived-from" "derived-from"
"identities" "engines"
"if-intrinsics" "if-intrinsics"
"infer" "infer"
"inferred-effect" "inferred-effect"
"inline"
"inlined-block"
"input-classes" "input-classes"
"interval" "interval"
"intrinsics" "intrinsics"
"lambda"
"loc" "loc"
"local-reader"
"local-reader?"
"local-writer"
"local-writer?"
"local?"
"macro"
"members" "members"
"methods" "memo-quot"
"method-class" "method-class"
"method-generic" "method-generic"
"combination" "methods"
"cannot-infer"
"no-compile" "no-compile"
"optimizer-hooks" "optimizer-hooks"
"output-classes" "outputs"
"participants" "participants"
"predicate" "predicate"
"predicate-definition" "predicate-definition"
"predicating" "predicating"
"tuple-dispatch-generic" "reader"
"slots" "reading"
"recursive"
"shuffle"
"slot-names" "slot-names"
"slots"
"special"
"specializer" "specializer"
"step-into" "step-into"
"step-into?" "step-into?"
"superclass" "superclass"
"reading" "transform-n"
"writing" "transform-quot"
"tuple-dispatch-generic"
"type" "type"
"engines" "writer"
"writing"
} % } %
] when ] when
@ -211,6 +228,7 @@ IN: tools.deploy.shaker
classes:update-map classes:update-map
command-line:main-vocab-hook command-line:main-vocab-hook
compiled-crossref compiled-crossref
compiled-generic-crossref
compiler.units:recompile-hook compiler.units:recompile-hook
compiler.units:update-tuples-hook compiler.units:update-tuples-hook
definitions:crossref definitions:crossref

View File

@ -1,15 +1,15 @@
USING: tools.deploy.config ; USING: tools.deploy.config ;
H{ H{
{ deploy-word-defs? f }
{ deploy-random? f }
{ deploy-name "tools.deploy.test.1" }
{ deploy-threads? t }
{ deploy-compiler? t }
{ deploy-math? t }
{ deploy-c-types? f } { deploy-c-types? f }
{ deploy-name "tools.deploy.test.1" }
{ deploy-io 2 } { deploy-io 2 }
{ deploy-reflection 1 } { deploy-random? f }
{ deploy-ui? f } { deploy-math? t }
{ deploy-compiler? t }
{ deploy-reflection 2 }
{ "stop-after-last-window?" t } { "stop-after-last-window?" t }
{ deploy-threads? t }
{ deploy-ui? f }
{ deploy-word-props? f } { deploy-word-props? f }
{ deploy-word-defs? f }
} }

View File

@ -1,15 +1,15 @@
USING: tools.deploy.config ; USING: tools.deploy.config ;
H{ H{
{ deploy-math? t } { deploy-io 2 }
{ deploy-compiler? t }
{ deploy-reflection 2 }
{ deploy-ui? f } { deploy-ui? f }
{ deploy-word-props? f }
{ deploy-threads? t } { deploy-threads? t }
{ deploy-c-types? f } { deploy-c-types? f }
{ deploy-random? f }
{ "stop-after-last-window?" t }
{ deploy-name "tools.deploy.test.2" } { deploy-name "tools.deploy.test.2" }
{ deploy-io 2 } { deploy-compiler? t }
{ deploy-word-props? f }
{ deploy-reflection 2 }
{ deploy-word-defs? f } { deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-random? f }
{ deploy-math? t }
} }

View File

@ -1,15 +1,15 @@
USING: tools.deploy.config ; USING: tools.deploy.config ;
H{ H{
{ deploy-word-defs? f }
{ deploy-random? f }
{ deploy-name "tools.deploy.test.3" }
{ deploy-threads? t }
{ deploy-compiler? t }
{ deploy-math? t }
{ deploy-c-types? f }
{ deploy-io 3 } { deploy-io 3 }
{ deploy-reflection 1 }
{ deploy-ui? f } { deploy-ui? f }
{ "stop-after-last-window?" t } { deploy-threads? t }
{ deploy-c-types? f }
{ deploy-name "tools.deploy.test.3" }
{ deploy-compiler? t }
{ deploy-word-props? f } { deploy-word-props? f }
{ deploy-reflection 2 }
{ deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-random? f }
{ deploy-math? t }
} }

View File

@ -1,15 +1,15 @@
USING: tools.deploy.config ; USING: tools.deploy.config ;
H{ H{
{ deploy-math? t }
{ deploy-reflection 1 }
{ deploy-io 2 } { deploy-io 2 }
{ deploy-c-types? f }
{ deploy-random? f }
{ deploy-ui? f } { deploy-ui? f }
{ deploy-name "tools.deploy.test.4" }
{ deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-threads? t } { deploy-threads? t }
{ deploy-c-types? f }
{ deploy-name "tools.deploy.test.4" }
{ deploy-compiler? t } { deploy-compiler? t }
{ deploy-word-props? f } { deploy-word-props? f }
{ deploy-reflection 2 }
{ deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-random? f }
{ deploy-math? t }
} }

View File

@ -1,15 +1,15 @@
USING: tools.deploy.config ; USING: tools.deploy.config ;
H{ H{
{ deploy-math? t }
{ deploy-reflection 1 }
{ deploy-io 3 } { deploy-io 3 }
{ deploy-c-types? f }
{ deploy-random? f }
{ deploy-ui? f } { deploy-ui? f }
{ deploy-name "tools.deploy.test.5" }
{ deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-threads? t } { deploy-threads? t }
{ deploy-c-types? f }
{ deploy-name "tools.deploy.test.5" }
{ deploy-compiler? t } { deploy-compiler? t }
{ deploy-word-props? f } { deploy-word-props? f }
{ deploy-reflection 2 }
{ deploy-word-defs? f }
{ "stop-after-last-window?" t }
{ deploy-random? f }
{ deploy-math? t }
} }

View File

@ -8,4 +8,4 @@ TUPLE: handler < wrapper table ;
: <handler> ( child -- handler ) handler new-wrapper ; : <handler> ( child -- handler ) handler new-wrapper ;
M: handler handle-gesture ( gesture gadget -- ? ) M: handler handle-gesture ( gesture gadget -- ? )
over table>> at dup [ call f ] [ 2drop t ] if ; tuck table>> at dup [ call f ] [ 2drop t ] if ;

View File

@ -40,7 +40,13 @@ PREDICATE: obj-list < word \ objects = ;
M: obj-list article-title ( objects -- title ) drop "Objects" ; M: obj-list article-title ( objects -- title ) drop "Objects" ;
! M: obj-list article-content ( objects -- title )
! execute
! [ [ type -> ] [ ] bi 2array ] map
! { $tab , } bake ;
M: obj-list article-content ( objects -- title ) M: obj-list article-content ( objects -- title )
execute drop
objects
[ [ type -> ] [ ] bi 2array ] map [ [ type -> ] [ ] bi 2array ] map
{ $tab , } bake ; { $tab , } bake ;