USING: accessors alien assocs compiler.cfg compiler.cfg.comparisons
compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.liveness
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
tools.test ;
IN: compiler.cfg.liveness.tests
-QUALIFIED: sets
! compute-edge-live-in
{ H{ } } [
{ 124 double-2-rep }
{ 125 tagged-rep }
} representations set
- { 123 124 125 } sets:unique gc-roots
+ { 123 124 125 } unique gc-roots
] unit-test
! gen-uses
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs combinators combinators.short-circuit
-compiler.cfg.def-use compiler.cfg.instructions compiler.cfg.predecessors
-compiler.cfg.registers compiler.cfg.rpo
-compiler.cfg.ssa.destruction.leaders compiler.cfg.utilities
-cpu.architecture deques dlists fry kernel locals namespaces
-sequences sets ;
+compiler.cfg.def-use compiler.cfg.instructions
+compiler.cfg.predecessors compiler.cfg.registers
+compiler.cfg.rpo compiler.cfg.ssa.destruction.leaders
+compiler.cfg.utilities compiler.utilities cpu.architecture
+deques dlists fry kernel locals namespaces sequences sets ;
IN: compiler.cfg.liveness
SYMBOL: live-ins
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.ssa.destruction.leaders cpu.architecture deques
-dlists fry kernel locals make namespaces sequences ;
-QUALIFIED: sets
+compiler.cfg.ssa.destruction.leaders compiler.utilities
+cpu.architecture deques dlists fry kernel locals make namespaces
+sequences ;
IN: compiler.cfg.parallel-copy
<PRIVATE
: temp-vreg ( rep -- vreg )
temp-vregs get [ next-vreg-rep ] cache
- [ leader-map get sets:conjoin ] keep ;
+ [ leader-map get conjoin ] keep ;
PRIVATE>
USING: assocs compiler.cfg.def-use compiler.cfg.instructions
compiler.cfg.registers compiler.cfg.ssa.destruction.coalescing
-compiler.cfg.ssa.destruction.leaders compiler.cfg.ssa.interference
-compiler.cfg.utilities cpu.architecture grouping kernel make
+compiler.cfg.ssa.destruction.leaders
+compiler.cfg.ssa.interference compiler.cfg.utilities
+compiler.utilities cpu.architecture grouping kernel make
namespaces random sequences tools.test ;
-QUALIFIED: sets
IN: compiler.cfg.ssa.destruction.coalescing.tests
! eliminatable-copy?
{ t } [
10 [
- { 2286 2287 2288 } sets:unique leader-map set
+ { 2286 2287 2288 } unique leader-map set
2286 make-phi-inputs ##phi new-insn
coalesce-now
2286 leader
USING: accessors arrays assocs compiler.cfg.def-use
compiler.cfg.instructions compiler.cfg.linearization
compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
-compiler.cfg.ssa.interference cpu.architecture fry kernel make
-namespaces sequences sets sorting ;
+compiler.cfg.ssa.interference compiler.utilities
+cpu.architecture fry kernel make namespaces sequences sets
+sorting ;
IN: compiler.cfg.ssa.destruction.coalescing
: zip-scalar ( scalar seq -- pairs )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators.short-circuit compiler.cfg
-compiler.cfg.instructions compiler.cfg.rpo cpu.architecture deques fry
-heaps kernel locals macros math sequences sets ;
+USING: accessors arrays assocs combinators.short-circuit
+compiler.cfg compiler.cfg.instructions compiler.cfg.rpo
+cpu.architecture deques fry hashtables heaps kernel locals
+macros math sequences sets ;
IN: compiler.cfg.utilities
: block>cfg ( bb -- cfg )
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs fry kernel locals math math.order
-namespaces sequences vectors ;
+USING: arrays assocs fry hashtables kernel locals math
+math.order namespaces sequences vectors ;
IN: compiler.utilities
: flattener ( seq quot -- seq vector quot' )
] unless
destination'
] if ;
+
+: unique ( seq -- assoc )
+ [ dup ] H{ } map>assoc ;
+
+: conjoin ( elt assoc -- )
+ dupd set-at ;
+
+: conjoin-at ( value key assoc -- )
+ [ dupd ?set-at ] change-at ;
word '[ _ execute ] ;
: 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' )
- { vlshift vrshift v*high v*hs+ } unique assoc-diff ;
+ { vlshift vrshift v*high v*hs+ }
+ '[ drop _ member? ] assoc-reject ;
: boolean-ops ( -- words )
{ vand vandn vor vxor vnot vcount } ;
: remove-boolean-words ( alist -- alist' )
- boolean-ops unique assoc-diff ;
+ boolean-ops '[ drop _ member? ] assoc-reject ;
: ops-to-check ( elt-class -- alist )
[ vector-words >alist ] dip
: exclusions ( -- set )
exclusions-file utf8 file-lines
[ "#" split1 drop [ blank? ] trim-tail hex> ] map
- [ 0 = ] reject ;
+ [ 0 = ] reject fast-set ;
: remove-exclusions ( alist -- alist )
- exclusions unique assoc-diff ;
+ exclusions [ nip sets:in? ] curry assoc-reject ;
: process-canonical ( data -- hash hash )
(process-decomposed) [ first* ] filter
! Copyright (C) 2007, 2009 Daniel Ehrenberg, Slava Pestov, and Doug Coleman
! See http://factorcode.org/license.txt for BSD license.
-USING: help.markup help.syntax kernel sequences
-sequences.private namespaces math quotations assocs.private
-sets ;
+USING: assocs.private help.markup help.syntax kernel math
+namespaces quotations sequences ;
IN: assocs
ARTICLE: "alists" "Association lists"
substitute
extract-keys
}
-"Adding elements to sets:"
-{ $subsections
- conjoin
- conjoin-at
-}
"Destructive operations:"
{ $subsections
assoc-union!
: intersect! ( set1 set2 -- set1 )
dupd sequence/tester [ dup ] prepose [ not ] compose pick
[ 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 ;
: block-lexenv ( block -- lexenv )
[ [ 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> ]
if