sets: moving unique/conjoin/conjoin-at to compiler.utilities.
parent
b5ce31cbae
commit
f4ccfa0f71
|
@ -1,11 +1,10 @@
|
||||||
USING: accessors alien assocs compiler.cfg compiler.cfg.comparisons
|
USING: accessors alien assocs compiler.cfg compiler.cfg.comparisons
|
||||||
compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.liveness
|
compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.liveness
|
||||||
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
|
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
|
||||||
compiler.cfg.utilities compiler.test cpu.architecture
|
compiler.cfg.utilities compiler.test compiler.utilities cpu.architecture
|
||||||
cpu.x86.assembler.operands kernel math namespaces sequences system
|
cpu.x86.assembler.operands kernel math namespaces sequences system
|
||||||
tools.test ;
|
tools.test ;
|
||||||
IN: compiler.cfg.liveness.tests
|
IN: compiler.cfg.liveness.tests
|
||||||
QUALIFIED: sets
|
|
||||||
|
|
||||||
! compute-edge-live-in
|
! compute-edge-live-in
|
||||||
{ H{ } } [
|
{ H{ } } [
|
||||||
|
@ -71,7 +70,7 @@ QUALIFIED: sets
|
||||||
{ 124 double-2-rep }
|
{ 124 double-2-rep }
|
||||||
{ 125 tagged-rep }
|
{ 125 tagged-rep }
|
||||||
} representations set
|
} representations set
|
||||||
{ 123 124 125 } sets:unique gc-roots
|
{ 123 124 125 } unique gc-roots
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
! gen-uses
|
! gen-uses
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
! Copyright (C) 2009, 2010 Slava Pestov.
|
! Copyright (C) 2009, 2010 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors assocs combinators combinators.short-circuit
|
USING: accessors assocs combinators combinators.short-circuit
|
||||||
compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.predecessors
|
compiler.cfg.def-use compiler.cfg.instructions
|
||||||
compiler.cfg.registers compiler.cfg.rpo
|
compiler.cfg.predecessors compiler.cfg.registers
|
||||||
compiler.cfg.ssa.destruction.leaders compiler.cfg.utilities
|
compiler.cfg.rpo compiler.cfg.ssa.destruction.leaders
|
||||||
cpu.architecture deques dlists fry kernel locals namespaces
|
compiler.cfg.utilities compiler.utilities cpu.architecture
|
||||||
sequences sets ;
|
deques dlists fry kernel locals namespaces sequences sets ;
|
||||||
IN: compiler.cfg.liveness
|
IN: compiler.cfg.liveness
|
||||||
|
|
||||||
SYMBOL: live-ins
|
SYMBOL: live-ins
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
! Copyright (C) 2009 Slava Pestov.
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: assocs compiler.cfg.instructions compiler.cfg.registers
|
USING: assocs compiler.cfg.instructions compiler.cfg.registers
|
||||||
compiler.cfg.ssa.destruction.leaders cpu.architecture deques
|
compiler.cfg.ssa.destruction.leaders compiler.utilities
|
||||||
dlists fry kernel locals make namespaces sequences ;
|
cpu.architecture deques dlists fry kernel locals make namespaces
|
||||||
QUALIFIED: sets
|
sequences ;
|
||||||
IN: compiler.cfg.parallel-copy
|
IN: compiler.cfg.parallel-copy
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -60,7 +60,7 @@ SYMBOL: temp-vregs
|
||||||
|
|
||||||
: temp-vreg ( rep -- vreg )
|
: temp-vreg ( rep -- vreg )
|
||||||
temp-vregs get [ next-vreg-rep ] cache
|
temp-vregs get [ next-vreg-rep ] cache
|
||||||
[ leader-map get sets:conjoin ] keep ;
|
[ leader-map get conjoin ] keep ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
USING: assocs compiler.cfg.def-use compiler.cfg.instructions
|
USING: assocs compiler.cfg.def-use compiler.cfg.instructions
|
||||||
compiler.cfg.registers compiler.cfg.ssa.destruction.coalescing
|
compiler.cfg.registers compiler.cfg.ssa.destruction.coalescing
|
||||||
compiler.cfg.ssa.destruction.leaders compiler.cfg.ssa.interference
|
compiler.cfg.ssa.destruction.leaders
|
||||||
compiler.cfg.utilities cpu.architecture grouping kernel make
|
compiler.cfg.ssa.interference compiler.cfg.utilities
|
||||||
|
compiler.utilities cpu.architecture grouping kernel make
|
||||||
namespaces random sequences tools.test ;
|
namespaces random sequences tools.test ;
|
||||||
QUALIFIED: sets
|
|
||||||
IN: compiler.cfg.ssa.destruction.coalescing.tests
|
IN: compiler.cfg.ssa.destruction.coalescing.tests
|
||||||
|
|
||||||
! eliminatable-copy?
|
! eliminatable-copy?
|
||||||
|
@ -104,7 +104,7 @@ IN: compiler.cfg.ssa.destruction.coalescing.tests
|
||||||
|
|
||||||
{ t } [
|
{ t } [
|
||||||
10 [
|
10 [
|
||||||
{ 2286 2287 2288 } sets:unique leader-map set
|
{ 2286 2287 2288 } unique leader-map set
|
||||||
2286 make-phi-inputs ##phi new-insn
|
2286 make-phi-inputs ##phi new-insn
|
||||||
coalesce-now
|
coalesce-now
|
||||||
2286 leader
|
2286 leader
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
USING: accessors arrays assocs compiler.cfg.def-use
|
USING: accessors arrays assocs compiler.cfg.def-use
|
||||||
compiler.cfg.instructions compiler.cfg.linearization
|
compiler.cfg.instructions compiler.cfg.linearization
|
||||||
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
|
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
|
||||||
compiler.cfg.ssa.interference cpu.architecture fry kernel make
|
compiler.cfg.ssa.interference compiler.utilities
|
||||||
namespaces sequences sets sorting ;
|
cpu.architecture fry kernel make namespaces sequences sets
|
||||||
|
sorting ;
|
||||||
IN: compiler.cfg.ssa.destruction.coalescing
|
IN: compiler.cfg.ssa.destruction.coalescing
|
||||||
|
|
||||||
: zip-scalar ( scalar seq -- pairs )
|
: zip-scalar ( scalar seq -- pairs )
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
! Copyright (C) 2008, 2010 Slava Pestov.
|
! Copyright (C) 2008, 2010 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors arrays assocs combinators.short-circuit compiler.cfg
|
USING: accessors arrays assocs combinators.short-circuit
|
||||||
compiler.cfg.instructions compiler.cfg.rpo cpu.architecture deques fry
|
compiler.cfg compiler.cfg.instructions compiler.cfg.rpo
|
||||||
heaps kernel locals macros math sequences sets ;
|
cpu.architecture deques fry hashtables heaps kernel locals
|
||||||
|
macros math sequences sets ;
|
||||||
IN: compiler.cfg.utilities
|
IN: compiler.cfg.utilities
|
||||||
|
|
||||||
: block>cfg ( bb -- cfg )
|
: block>cfg ( bb -- cfg )
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2008, 2009 Slava Pestov.
|
! Copyright (C) 2008, 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: arrays assocs fry kernel locals math math.order
|
USING: arrays assocs fry hashtables kernel locals math
|
||||||
namespaces sequences vectors ;
|
math.order namespaces sequences vectors ;
|
||||||
IN: compiler.utilities
|
IN: compiler.utilities
|
||||||
|
|
||||||
: flattener ( seq quot -- seq vector quot' )
|
: flattener ( seq quot -- seq vector quot' )
|
||||||
|
@ -47,3 +47,12 @@ yield-hook [ [ ] ] initialize
|
||||||
] unless
|
] unless
|
||||||
destination'
|
destination'
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
: unique ( seq -- assoc )
|
||||||
|
[ dup ] H{ } map>assoc ;
|
||||||
|
|
||||||
|
: conjoin ( elt assoc -- )
|
||||||
|
dupd set-at ;
|
||||||
|
|
||||||
|
: conjoin-at ( value key assoc -- )
|
||||||
|
[ dupd ?set-at ] change-at ;
|
||||||
|
|
|
@ -238,16 +238,18 @@ TUPLE: simd-test-failure
|
||||||
word '[ _ execute ] ;
|
word '[ _ execute ] ;
|
||||||
|
|
||||||
: remove-float-words ( alist -- alist' )
|
: remove-float-words ( alist -- alist' )
|
||||||
{ distance vsqrt n/v v/n v/ normalize } unique assoc-diff ;
|
{ distance vsqrt n/v v/n v/ normalize }
|
||||||
|
'[ drop _ member? ] assoc-reject ;
|
||||||
|
|
||||||
: remove-integer-words ( alist -- alist' )
|
: remove-integer-words ( alist -- alist' )
|
||||||
{ vlshift vrshift v*high v*hs+ } unique assoc-diff ;
|
{ vlshift vrshift v*high v*hs+ }
|
||||||
|
'[ drop _ member? ] assoc-reject ;
|
||||||
|
|
||||||
: boolean-ops ( -- words )
|
: boolean-ops ( -- words )
|
||||||
{ vand vandn vor vxor vnot vcount } ;
|
{ vand vandn vor vxor vnot vcount } ;
|
||||||
|
|
||||||
: remove-boolean-words ( alist -- alist' )
|
: remove-boolean-words ( alist -- alist' )
|
||||||
boolean-ops unique assoc-diff ;
|
boolean-ops '[ drop _ member? ] assoc-reject ;
|
||||||
|
|
||||||
: ops-to-check ( elt-class -- alist )
|
: ops-to-check ( elt-class -- alist )
|
||||||
[ vector-words >alist ] dip
|
[ vector-words >alist ] dip
|
||||||
|
|
|
@ -108,10 +108,10 @@ PRIVATE>
|
||||||
: exclusions ( -- set )
|
: exclusions ( -- set )
|
||||||
exclusions-file utf8 file-lines
|
exclusions-file utf8 file-lines
|
||||||
[ "#" split1 drop [ blank? ] trim-tail hex> ] map
|
[ "#" split1 drop [ blank? ] trim-tail hex> ] map
|
||||||
[ 0 = ] reject ;
|
[ 0 = ] reject fast-set ;
|
||||||
|
|
||||||
: remove-exclusions ( alist -- alist )
|
: remove-exclusions ( alist -- alist )
|
||||||
exclusions unique assoc-diff ;
|
exclusions [ nip sets:in? ] curry assoc-reject ;
|
||||||
|
|
||||||
: process-canonical ( data -- hash hash )
|
: process-canonical ( data -- hash hash )
|
||||||
(process-decomposed) [ first* ] filter
|
(process-decomposed) [ first* ] filter
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
! Copyright (C) 2007, 2009 Daniel Ehrenberg, Slava Pestov, and Doug Coleman
|
! Copyright (C) 2007, 2009 Daniel Ehrenberg, Slava Pestov, and Doug Coleman
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: help.markup help.syntax kernel sequences
|
USING: assocs.private help.markup help.syntax kernel math
|
||||||
sequences.private namespaces math quotations assocs.private
|
namespaces quotations sequences ;
|
||||||
sets ;
|
|
||||||
IN: assocs
|
IN: assocs
|
||||||
|
|
||||||
ARTICLE: "alists" "Association lists"
|
ARTICLE: "alists" "Association lists"
|
||||||
|
@ -103,11 +102,6 @@ $nl
|
||||||
substitute
|
substitute
|
||||||
extract-keys
|
extract-keys
|
||||||
}
|
}
|
||||||
"Adding elements to sets:"
|
|
||||||
{ $subsections
|
|
||||||
conjoin
|
|
||||||
conjoin-at
|
|
||||||
}
|
|
||||||
"Destructive operations:"
|
"Destructive operations:"
|
||||||
{ $subsections
|
{ $subsections
|
||||||
assoc-union!
|
assoc-union!
|
||||||
|
|
|
@ -169,12 +169,3 @@ M: sequence clear-set
|
||||||
: intersect! ( set1 set2 -- set1 )
|
: intersect! ( set1 set2 -- set1 )
|
||||||
dupd sequence/tester [ dup ] prepose [ not ] compose pick
|
dupd sequence/tester [ dup ] prepose [ not ] compose pick
|
||||||
[ delete ] curry [ [ drop ] if ] curry compose each ;
|
[ delete ] curry [ [ drop ] if ] curry compose each ;
|
||||||
|
|
||||||
! Temporarily for compatibility
|
|
||||||
|
|
||||||
: unique ( seq -- assoc )
|
|
||||||
[ dup ] H{ } map>assoc ;
|
|
||||||
: conjoin ( elt assoc -- )
|
|
||||||
dupd set-at ;
|
|
||||||
: conjoin-at ( value key assoc -- )
|
|
||||||
[ dupd ?set-at ] change-at ;
|
|
||||||
|
|
|
@ -67,9 +67,9 @@ M: ast-return compile-ast
|
||||||
|
|
||||||
: block-lexenv ( block -- lexenv )
|
: block-lexenv ( block -- lexenv )
|
||||||
[ [ arguments>> ] [ temporaries>> ] bi append ]
|
[ [ arguments>> ] [ temporaries>> ] bi append ]
|
||||||
[ body>> [ assigned-locals ] map concat unique ] bi
|
[ body>> [ assigned-locals ] map concat fast-set ] bi
|
||||||
'[
|
'[
|
||||||
dup dup _ key?
|
dup dup _ in?
|
||||||
[ <local-reader> ]
|
[ <local-reader> ]
|
||||||
[ <local> ]
|
[ <local> ]
|
||||||
if
|
if
|
||||||
|
|
Loading…
Reference in New Issue