! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math namespaces assocs hashtables sequences arrays
-accessors words vectors combinators combinators.short-circuit
-sets classes layouts fry locals cpu.architecture
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.def-use
-compiler.cfg.registers
-compiler.cfg.utilities
-compiler.cfg.comparisons
-compiler.cfg.instructions
-compiler.cfg.representations.preferred ;
+USING: accessors arrays assocs combinators.short-circuit
+compiler.cfg.comparisons compiler.cfg.instructions
+compiler.cfg.representations.preferred compiler.cfg.rpo
+compiler.cfg.utilities cpu.architecture fry kernel locals math
+namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.alias-analysis
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators combinators.short-circuit compiler.utilities
-compiler.cfg compiler.cfg.instructions compiler.cfg.rpo
-compiler.cfg.predecessors compiler.cfg.utilities kernel math sequences ;
+USING: accessors combinators combinators.short-circuit
+compiler.cfg compiler.cfg.predecessors compiler.cfg.rpo
+compiler.cfg.utilities kernel sequences ;
IN: compiler.cfg.block-joining
! Joining blocks that are not calls and are connected by a single CFG edge.
! Copyright (C) 2009, 2011 Doug Coleman, Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays accessors assocs combinators combinators.short-circuit
-dlists deques kernel locals math math.order sequences
-sets vectors fry splitting compiler.cfg.def-use compiler.cfg
-compiler.cfg.rpo compiler.cfg.predecessors compiler.cfg.renaming
-compiler.cfg.instructions compiler.cfg.utilities ;
+USING: accessors arrays combinators combinators.short-circuit
+compiler.cfg compiler.cfg.instructions compiler.cfg.predecessors
+compiler.cfg.renaming compiler.cfg.rpo compiler.cfg.utilities
+deques dlists fry kernel locals math sequences sets vectors ;
FROM: namespaces => get set ;
IN: compiler.cfg.branch-splitting
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces accessors math math.order assocs kernel
-sequences combinators classes words system fry locals
-cpu.architecture layouts compiler.cfg compiler.cfg.rpo
-compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.stack-frame ;
+USING: accessors compiler.cfg.instructions compiler.cfg.rpo
+compiler.cfg.stack-frame cpu.architecture kernel layouts locals
+math math.order namespaces sequences ;
IN: compiler.cfg.build-stack-frame
SYMBOLS: param-area-size allot-area-size allot-area-align
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs arrays layouts math math.order
-math.parser combinators combinators.short-circuit fry make
-sequences sequences.generalizations alien alien.private
-alien.strings alien.c-types alien.libraries classes.struct
-namespaces kernel strings libc locals quotations words
-cpu.architecture compiler.utilities compiler.tree compiler.cfg
-compiler.cfg.builder compiler.cfg.builder.alien.params
-compiler.cfg.builder.alien.boxing compiler.cfg.builder.blocks
-compiler.cfg.instructions compiler.cfg.stack-frame
-compiler.cfg.stacks compiler.cfg.stacks.local
-compiler.cfg.registers compiler.cfg.hats compiler.errors ;
+USING: accessors alien alien.c-types alien.libraries
+alien.strings arrays assocs classes.struct combinators
+compiler.cfg compiler.cfg.builder
+compiler.cfg.builder.alien.boxing
+compiler.cfg.builder.alien.params compiler.cfg.hats
+compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.stacks compiler.cfg.stacks.local compiler.errors
+compiler.tree cpu.architecture fry kernel layouts make math
+math.parser namespaces sequences sequences.generalizations
+strings words ;
FROM: compiler.errors => no-such-symbol no-such-library ;
IN: compiler.cfg.builder.alien
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.c-types arrays assocs combinators
-classes.struct fry kernel layouts locals math namespaces
-sequences sequences.generalizations system
-compiler.cfg.builder.alien.params compiler.cfg.hats
-compiler.cfg.registers compiler.cfg.instructions
-compiler.cfg.intrinsics.allot cpu.architecture ;
+USING: accessors alien.c-types arrays assocs classes.struct
+combinators compiler.cfg.builder.alien.params compiler.cfg.hats
+compiler.cfg.instructions compiler.cfg.intrinsics.allot
+compiler.cfg.registers cpu.architecture fry kernel layouts
+locals math namespaces sequences system ;
QUALIFIED-WITH: alien.c-types c
IN: compiler.cfg.builder.alien.boxing
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: cpu.architecture fry kernel layouts math math.order
-namespaces sequences vectors assocs arrays locals ;
+USING: arrays assocs cpu.architecture fry kernel layouts locals
+math math.order namespaces sequences vectors ;
IN: compiler.cfg.builder.alien.params
SYMBOL: stack-params
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays fry kernel make math namespaces sequences
-compiler.cfg compiler.cfg.instructions compiler.cfg.stacks
-compiler.cfg.stacks.local ;
+USING: accessors arrays compiler.cfg compiler.cfg.instructions
+compiler.cfg.stacks compiler.cfg.stacks.local kernel make math
+namespaces sequences ;
+SLOT: in-d
+SLOT: out-d
IN: compiler.cfg.builder.blocks
: set-basic-block ( basic-block -- )
! Copyright (C) 2004, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators hashtables kernel
-math fry namespaces make sequences words byte-arrays
-layouts alien.c-types
-stack-checker.inlining cpu.architecture
-compiler.tree
-compiler.tree.builder
-compiler.tree.combinators
-compiler.tree.propagation.info
-compiler.cfg
-compiler.cfg.hats
-compiler.cfg.utilities
-compiler.cfg.registers
-compiler.cfg.intrinsics
-compiler.cfg.comparisons
-compiler.cfg.stack-frame
-compiler.cfg.instructions
-compiler.cfg.predecessors
-compiler.cfg.builder.blocks
-compiler.cfg.stacks
-compiler.cfg.stacks.local ;
+USING: accessors assocs combinators compiler.cfg
+compiler.cfg.builder.blocks compiler.cfg.comparisons
+compiler.cfg.hats compiler.cfg.instructions
+compiler.cfg.intrinsics compiler.cfg.registers
+compiler.cfg.stacks compiler.cfg.stacks.local compiler.tree
+cpu.architecture fry kernel make math namespaces sequences words
+;
IN: compiler.cfg.builder
! Convert tree SSA IR to CFG IR. The result is not in SSA form; this is
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math vectors arrays accessors namespaces ;
+USING: accessors kernel math namespaces vectors ;
IN: compiler.cfg
TUPLE: basic-block < identity-tuple
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel combinators.short-circuit accessors math sequences
-sets assocs compiler.cfg.instructions compiler.cfg.rpo
-compiler.cfg.def-use compiler.cfg.linearization
-compiler.cfg.utilities compiler.cfg.finalization
-compiler.utilities ;
+USING: accessors compiler.cfg.rpo kernel sequences ;
IN: compiler.cfg.checker
ERROR: bad-successors ;
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sets kernel namespaces assocs accessors sequences grouping
-fry compiler.cfg.def-use compiler.cfg.rpo
-compiler.cfg.renaming compiler.cfg.instructions
-compiler.cfg.predecessors compiler.cfg.utilities ;
+USING: accessors assocs compiler.cfg.def-use
+compiler.cfg.instructions compiler.cfg.predecessors
+compiler.cfg.renaming compiler.cfg.rpo compiler.cfg.utilities
+fry grouping kernel namespaces sequences ;
FROM: namespaces => set ;
IN: compiler.cfg.copy-prop
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs deques dlists kernel locals sequences lexer
-namespaces functors compiler.cfg.rpo compiler.cfg.utilities
-compiler.cfg.predecessors compiler.cfg ;
+USING: accessors assocs compiler.cfg.predecessors
+compiler.cfg.rpo deques dlists functors kernel lexer locals
+namespaces sequences ;
IN: compiler.cfg.dataflow-analysis
GENERIC: join-sets ( sets bb dfa -- set )
! Copyright (C) 2008, 2010 Slava Pestov, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs kernel namespaces sequences combinators
-compiler.cfg.instructions compiler.cfg.def-use
-compiler.cfg.rpo compiler.cfg.predecessors hash-sets sets ;
+USING: accessors arrays assocs combinators compiler.cfg.def-use
+compiler.cfg.instructions compiler.cfg.predecessors
+compiler.cfg.rpo kernel namespaces sequences sets ;
FROM: assocs => change-at ;
FROM: namespaces => set ;
IN: compiler.cfg.dce
! Copyright (C) 2008, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel words sequences quotations namespaces io vectors
-arrays hashtables classes.tuple math accessors prettyprint
-prettyprint.config assocs prettyprint.backend prettyprint.custom
-prettyprint.sections parser random compiler.tree.builder
-compiler.tree.optimizer cpu.architecture compiler.cfg.builder
-compiler.cfg.linearization compiler.cfg.registers
-compiler.cfg.stack-frame compiler.cfg.linear-scan
-compiler.cfg.optimizer compiler.cfg.finalization
-compiler.cfg.instructions compiler.cfg.utilities
-compiler.cfg.def-use compiler.cfg.rpo
-compiler.cfg.representations compiler.cfg.gc-checks
-compiler.cfg.save-contexts compiler.cfg
-compiler.cfg.representations.preferred
-compiler.cfg.scheduling compiler.units ;
+USING: accessors assocs classes.tuple compiler.cfg
+compiler.cfg.builder compiler.cfg.def-use
+compiler.cfg.finalization compiler.cfg.gc-checks
+compiler.cfg.instructions compiler.cfg.linearization
+compiler.cfg.optimizer compiler.cfg.registers
+compiler.cfg.representations
+compiler.cfg.representations.preferred compiler.cfg.rpo
+compiler.cfg.save-contexts compiler.cfg.scheduling
+compiler.cfg.utilities compiler.tree.builder
+compiler.tree.optimizer compiler.units hashtables io kernel math
+namespaces prettyprint prettyprint.backend prettyprint.custom
+prettyprint.sections quotations random sequences vectors words ;
FROM: compiler.cfg.linearization => number-blocks ;
IN: compiler.cfg.debugger
! Copyright (C) 2008, 2011 Slava Pestov, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs arrays classes combinators
-compiler.units fry generalizations sequences.generalizations
-generic kernel locals namespaces quotations sequences sets slots
-words compiler.cfg.instructions compiler.cfg.instructions.syntax
-compiler.cfg.rpo compiler.cfg ;
+USING: accessors arrays assocs combinators compiler.cfg
+compiler.cfg.instructions compiler.cfg.instructions.syntax
+compiler.cfg.rpo compiler.units fry generic kernel namespaces
+quotations sequences sequences.generalizations sets slots words
+;
FROM: namespaces => set ;
FROM: sets => members ;
IN: compiler.cfg.def-use
! Copyright (C) 2009, 2010 Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators compiler.cfg.def-use
-compiler.cfg.instructions compiler.cfg.registers fry kernel locals
-namespaces sequences sorting make math math.vectors sets vectors ;
+USING: accessors assocs compiler.cfg.def-use
+compiler.cfg.instructions fry kernel locals math math.vectors
+namespaces sequences sets sorting vectors ;
FROM: namespaces => set ;
IN: compiler.cfg.dependence
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators sets math fry kernel math.order
-dlists deques vectors namespaces sequences sorting locals
-compiler.cfg.rpo compiler.cfg.predecessors ;
+USING: accessors assocs combinators compiler.cfg.predecessors
+compiler.cfg.rpo deques dlists fry kernel locals math math.order
+namespaces sequences sorting vectors ;
FROM: namespaces => set ;
IN: compiler.cfg.dominance
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel compiler.cfg.representations
-compiler.cfg.scheduling compiler.cfg.gc-checks
-compiler.cfg.write-barrier compiler.cfg.save-contexts
-compiler.cfg.ssa.destruction compiler.cfg.build-stack-frame
-compiler.cfg.linear-scan compiler.cfg.stacks.vacant
-compiler.cfg.utilities ;
+USING: compiler.cfg.build-stack-frame compiler.cfg.gc-checks
+compiler.cfg.linear-scan compiler.cfg.representations
+compiler.cfg.save-contexts compiler.cfg.scheduling
+compiler.cfg.ssa.destruction compiler.cfg.stacks.vacant
+compiler.cfg.utilities compiler.cfg.write-barrier ;
IN: compiler.cfg.finalization
: finalize-cfg ( cfg -- )
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators fry grouping kernel layouts
-locals math make namespaces sequences cpu.architecture
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.hats
-compiler.cfg.registers
-compiler.cfg.utilities
-compiler.cfg.comparisons
-compiler.cfg.instructions
-compiler.cfg.predecessors ;
+USING: accessors assocs compiler.cfg compiler.cfg.comparisons
+compiler.cfg.instructions compiler.cfg.predecessors
+compiler.cfg.registers compiler.cfg.rpo compiler.cfg.utilities
+cpu.architecture grouping kernel layouts locals make math
+namespaces sequences ;
IN: compiler.cfg.gc-checks
<PRIVATE
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien arrays byte-arrays classes.algebra
-combinators.short-circuit kernel layouts math namespaces
-sequences combinators splitting parser effects words
-cpu.architecture compiler.constants compiler.cfg.registers
-compiler.cfg.instructions compiler.cfg.instructions.syntax ;
+USING: accessors alien byte-arrays classes.algebra combinators
+compiler.cfg.instructions compiler.cfg.instructions.syntax
+compiler.cfg.registers compiler.constants effects kernel layouts
+math namespaces parser sequences splitting words ;
IN: compiler.cfg.hats
<<
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors math namespaces sequences kernel fry
-compiler.cfg compiler.cfg.registers compiler.cfg.instructions
-compiler.cfg.rpo ;
+USING: accessors compiler.cfg.instructions
+compiler.cfg.registers compiler.cfg.rpo fry kernel math
+namespaces sequences ;
IN: compiler.cfg.height
! Combine multiple stack height changes into one at the
! Copyright (C) 2008, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs accessors arrays kernel sequences namespaces words
-math math.order layouts classes.union compiler.units alien
-byte-arrays combinators compiler.cfg.registers
-compiler.cfg.instructions.syntax ;
+USING: accessors compiler.cfg.instructions.syntax kernel math
+namespaces ;
IN: compiler.cfg.instructions
<<
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: classes.tuple classes.tuple.parser kernel words
-make fry sequences parser accessors effects namespaces
-combinators splitting classes.parser lexer quotations ;
+USING: accessors classes.parser classes.tuple combinators
+effects fry kernel lexer make namespaces parser sequences
+splitting words ;
IN: compiler.cfg.instructions.syntax
SYMBOLS: def use temp literal ;
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.order sequences accessors arrays
-byte-arrays layouts classes.tuple.private fry locals
-compiler.tree.propagation.info compiler.cfg.hats
-compiler.cfg.instructions compiler.cfg.stacks
-compiler.cfg.utilities compiler.cfg.builder.blocks
-compiler.constants cpu.architecture alien.c-types ;
+USING: accessors arrays byte-arrays compiler.cfg.builder.blocks
+compiler.cfg.hats compiler.cfg.instructions compiler.cfg.stacks
+compiler.constants compiler.tree.propagation.info
+cpu.architecture fry kernel layouts locals math math.order
+sequences ;
IN: compiler.cfg.intrinsics.allot
: ##set-slots, ( regs obj class -- )
! Copyright (C) 2008, 2010 Slava Pestov, Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences accessors layouts kernel math math.intervals
-namespaces combinators fry arrays
-cpu.architecture
-compiler.tree.propagation.info
-compiler.cfg
-compiler.cfg.hats
-compiler.cfg.stacks
-compiler.cfg.instructions
-compiler.cfg.utilities
-compiler.cfg.builder.blocks
-compiler.cfg.registers
-compiler.cfg.comparisons ;
+USING: accessors arrays combinators compiler.cfg.builder.blocks
+compiler.cfg.comparisons compiler.cfg.hats
+compiler.cfg.instructions compiler.cfg.stacks
+compiler.tree.propagation.info cpu.architecture fry kernel
+layouts math math.intervals namespaces sequences ;
IN: compiler.cfg.intrinsics.fixnum
: emit-both-fixnums? ( -- )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry kernel compiler.cfg.stacks compiler.cfg.hats
-compiler.cfg.instructions compiler.cfg.utilities ;
+USING: compiler.cfg.hats compiler.cfg.stacks fry ;
IN: compiler.cfg.intrinsics.float
: emit-float-ordered-comparison ( cc -- )
! Copyright (C) 2008, 2010 Slava Pestov, Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: words sequences kernel combinators cpu.architecture assocs
-math.bitwise
-compiler.cfg.hats
-compiler.cfg.stacks
-compiler.cfg.instructions
-compiler.cfg.intrinsics.alien
-compiler.cfg.intrinsics.allot
-compiler.cfg.intrinsics.fixnum
-compiler.cfg.intrinsics.float
-compiler.cfg.intrinsics.slots
-compiler.cfg.intrinsics.strings
-compiler.cfg.intrinsics.misc
-compiler.cfg.comparisons ;
+USING: assocs compiler.cfg.comparisons compiler.cfg.hats
+compiler.cfg.intrinsics.alien compiler.cfg.intrinsics.allot
+compiler.cfg.intrinsics.fixnum compiler.cfg.intrinsics.float
+compiler.cfg.intrinsics.misc compiler.cfg.intrinsics.slots
+compiler.cfg.intrinsics.strings compiler.cfg.stacks
+cpu.architecture kernel words ;
QUALIFIED: alien
QUALIFIED: alien.accessors
-QUALIFIED: alien.data.private
QUALIFIED: alien.c-types
-QUALIFIED: kernel
+QUALIFIED: alien.data.private
QUALIFIED: arrays
QUALIFIED: byte-arrays
-QUALIFIED: kernel.private
-QUALIFIED: slots.private
-QUALIFIED: strings.private
QUALIFIED: classes.tuple.private
-QUALIFIED: math.private
+QUALIFIED: kernel
+QUALIFIED: kernel.private
QUALIFIED: math.bitwise.private
-QUALIFIED: math.integers.private
QUALIFIED: math.floats.private
+QUALIFIED: math.integers.private
QUALIFIED: math.libm
+QUALIFIED: math.private
+QUALIFIED: slots.private
+QUALIFIED: strings.private
IN: compiler.cfg.intrinsics
ERROR: inline-intrinsics-not-supported word quot ;
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors classes.algebra layouts kernel math namespaces
-sequences cpu.architecture
-compiler.tree.propagation.info
-compiler.cfg.stacks
-compiler.cfg.hats
-compiler.cfg.comparisons
-compiler.cfg.instructions
-compiler.cfg.builder.blocks
-compiler.cfg.utilities ;
+USING: accessors classes.algebra compiler.cfg.builder.blocks
+compiler.cfg.comparisons compiler.cfg.hats
+compiler.cfg.instructions compiler.cfg.stacks
+compiler.tree.propagation.info cpu.architecture kernel layouts
+math namespaces sequences ;
FROM: vm => context-field-offset vm-field-offset ;
QUALIFIED-WITH: alien.c-types c
IN: compiler.cfg.intrinsics.misc
! (c)2009 Joe Groff bsd license
-USING: accessors arrays assocs classes combinators
-combinators.short-circuit compiler.cfg.builder.blocks
-compiler.cfg.registers compiler.cfg.stacks
-compiler.cfg.stacks.local compiler.tree.propagation.info
-compiler.cfg.instructions
-cpu.architecture effects fry generalizations
-kernel locals macros make math namespaces quotations sequences
-sequences.generalizations splitting stack-checker words ;
+USING: accessors arrays classes combinators
+compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.stacks compiler.cfg.stacks.local
+compiler.tree.propagation.info cpu.architecture fry
+generalizations kernel locals macros make math quotations
+sequences sequences.generalizations ;
IN: compiler.cfg.intrinsics.simd.backend
! Selection of implementation based on available CPU instructions
! Copyright (C) 2009 Slava Pestov, Joe Groff.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.c-types byte-arrays fry
-classes.algebra cpu.architecture kernel layouts math sequences
-math.vectors math.vectors.simd.intrinsics
-macros generalizations combinators combinators.short-circuit
-arrays locals compiler.tree.propagation.info
-compiler.cfg.builder.blocks
-compiler.cfg.comparisons
-compiler.cfg.stacks compiler.cfg.stacks.local compiler.cfg.hats
-compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.intrinsics
-compiler.cfg.intrinsics.alien
-compiler.cfg.intrinsics.simd.backend
-specialized-arrays ;
+USING: accessors alien.c-types arrays byte-arrays combinators
+combinators.short-circuit compiler.cfg.comparisons
+compiler.cfg.hats compiler.cfg.instructions
+compiler.cfg.intrinsics compiler.cfg.intrinsics.alien
+compiler.cfg.intrinsics.simd.backend compiler.cfg.stacks
+cpu.architecture fry kernel layouts locals math math.vectors
+math.vectors.simd.intrinsics sequences specialized-arrays ;
FROM: alien.c-types => heap-size char short int longlong float double ;
SPECIALIZED-ARRAYS: char uchar short ushort int uint longlong ulonglong float double ;
IN: compiler.cfg.intrinsics.simd
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: layouts namespaces kernel accessors sequences math
-classes.algebra classes.builtin locals combinators
-combinators.short-circuit cpu.architecture
-compiler.tree.propagation.info compiler.cfg.stacks
-compiler.cfg.hats compiler.cfg.registers
-compiler.cfg.instructions compiler.cfg.utilities
-compiler.cfg.builder.blocks compiler.constants ;
+USING: accessors classes.algebra classes.builtin
+combinators.short-circuit compiler.cfg.builder.blocks
+compiler.cfg.hats compiler.cfg.instructions
+compiler.cfg.registers compiler.cfg.stacks
+compiler.tree.propagation.info cpu.architecture kernel layouts
+locals math namespaces sequences ;
IN: compiler.cfg.intrinsics.slots
: class-tag ( class -- tag/f )
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types kernel compiler.constants compiler.cfg.hats
-compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.stacks cpu.architecture ;
+USING: alien.c-types compiler.cfg.hats compiler.cfg.instructions
+compiler.cfg.stacks compiler.constants cpu.architecture kernel ;
IN: compiler.cfg.intrinsics.strings
: (string-nth) ( n string -- base offset rep c-type )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs binary-search combinators
-combinators.short-circuit heaps kernel namespaces
-sequences fry locals math math.order arrays sorting
-compiler.utilities
-compiler.cfg.linear-scan.live-intervals
+USING: accessors assocs combinators combinators.short-circuit
compiler.cfg.linear-scan.allocation.spilling
-compiler.cfg.linear-scan.allocation.splitting
-compiler.cfg.linear-scan.allocation.state ;
+compiler.cfg.linear-scan.allocation.state
+compiler.cfg.linear-scan.live-intervals compiler.utilities fry
+heaps kernel locals math namespaces sequences ;
IN: compiler.cfg.linear-scan.allocation
: active-positions ( new assoc -- )
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators fry hints kernel locals
-math sequences sets sorting splitting namespaces linked-assocs
-combinators.short-circuit compiler.utilities
-compiler.cfg.linear-scan.allocation.state
+USING: accessors assocs combinators
compiler.cfg.linear-scan.allocation.splitting
-compiler.cfg.linear-scan.live-intervals ;
+compiler.cfg.linear-scan.allocation.state
+compiler.cfg.linear-scan.live-intervals compiler.utilities fry
+kernel linked-assocs locals math namespaces sequences ;
IN: compiler.cfg.linear-scan.allocation.spilling
ERROR: bad-live-ranges interval ;
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs binary-search combinators
-combinators.short-circuit fry hints kernel locals
-math math.order sequences sets sorting splitting namespaces
+USING: accessors binary-search combinators
compiler.cfg.linear-scan.allocation.state
-compiler.cfg.linear-scan.live-intervals ;
+compiler.cfg.linear-scan.live-intervals fry hints kernel locals
+math math.order namespaces sequences ;
IN: compiler.cfg.linear-scan.allocation.splitting
: split-range ( live-range n -- before after )
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays accessors assocs combinators cpu.architecture fry
-heaps kernel math math.order namespaces layouts sequences vectors
-linked-assocs compiler.cfg compiler.cfg.registers
+USING: accessors arrays assocs combinators compiler.cfg
compiler.cfg.instructions
-compiler.cfg.linear-scan.live-intervals ;
+compiler.cfg.linear-scan.live-intervals compiler.cfg.registers
+cpu.architecture fry heaps kernel layouts linked-assocs math
+math.order namespaces sequences ;
FROM: assocs => change-at ;
IN: compiler.cfg.linear-scan.allocation.state
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel math assocs namespaces sequences heaps
-fry make combinators combinators.short-circuit sets locals arrays
-cpu.architecture layouts
-compiler.cfg
-compiler.cfg.def-use
-compiler.cfg.liveness
-compiler.cfg.registers
+USING: accessors assocs combinators compiler.cfg
compiler.cfg.instructions
-compiler.cfg.linearization
-compiler.cfg.ssa.destruction.leaders
-compiler.cfg.renaming.functor
-compiler.cfg.linear-scan.allocation
compiler.cfg.linear-scan.allocation.state
-compiler.cfg.linear-scan.live-intervals ;
+compiler.cfg.linear-scan.live-intervals
+compiler.cfg.linearization compiler.cfg.liveness
+compiler.cfg.registers compiler.cfg.renaming.functor
+compiler.cfg.ssa.destruction.leaders heaps kernel locals make
+math namespaces sequences ;
FROM: namespaces => set ;
IN: compiler.cfg.linear-scan.assignment
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel sequences sets arrays math strings fry
-namespaces prettyprint compiler.cfg.linear-scan.live-intervals
-compiler.cfg.linear-scan.allocation compiler.cfg assocs ;
-FROM: namespaces => set ;
+USING: accessors arrays assocs
+compiler.cfg.linear-scan.allocation
+compiler.cfg.linear-scan.live-intervals fry kernel math
+namespaces prettyprint sequences strings ;
IN: compiler.cfg.linear-scan.debugger
: check-linear-scan ( live-intervals machine-registers -- )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors assocs sequences namespaces make locals
-cpu.architecture
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.registers
-compiler.cfg.instructions
-compiler.cfg.linear-scan.numbering
-compiler.cfg.linear-scan.live-intervals
-compiler.cfg.linear-scan.allocation
-compiler.cfg.linear-scan.allocation.state
+USING: accessors assocs compiler.cfg.linear-scan.allocation
compiler.cfg.linear-scan.assignment
-compiler.cfg.linear-scan.resolve ;
-FROM: assocs => change-at ;
+compiler.cfg.linear-scan.live-intervals
+compiler.cfg.linear-scan.numbering
+compiler.cfg.linear-scan.resolve cpu.architecture kernel locals
+sequences ;
IN: compiler.cfg.linear-scan
! References:
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces kernel assocs accessors locals sequences math
-math.order fry combinators binary-search
-compiler.cfg.instructions
-compiler.cfg.registers
-compiler.cfg.def-use
-compiler.cfg.liveness
-compiler.cfg.linearization
-compiler.cfg.ssa.destruction.leaders
-compiler.cfg
-cpu.architecture ;
+USING: accessors assocs binary-search combinators
+compiler.cfg.def-use compiler.cfg.instructions
+compiler.cfg.linearization compiler.cfg.liveness
+compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
+cpu.architecture fry kernel locals math math.order namespaces
+sequences ;
IN: compiler.cfg.linear-scan.live-intervals
TUPLE: live-range from to ;
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors math sequences grouping namespaces
-compiler.cfg.linearization ;
+USING: accessors compiler.cfg.linearization grouping kernel math
+namespaces sequences ;
IN: compiler.cfg.linear-scan.numbering
: number-instruction ( n insn -- n' )
: check-numbering ( cfg -- )
check-numbering? get
- [ linearization-order [ check-block-numbering ] each ] [ drop ] if ;
\ No newline at end of file
+ [ linearization-order [ check-block-numbering ] each ] [ drop ] if ;
! Copyright (C) 2009, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs combinators
-combinators.short-circuit fry kernel locals namespaces
-make math sequences hashtables
-cpu.architecture
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.liveness
-compiler.cfg.registers
-compiler.cfg.utilities
-compiler.cfg.instructions
-compiler.cfg.predecessors
-compiler.cfg.parallel-copy
-compiler.cfg.ssa.destruction
-compiler.cfg.linear-scan.assignment
-compiler.cfg.linear-scan.allocation.state ;
+combinators.short-circuit compiler.cfg compiler.cfg.instructions
+compiler.cfg.linear-scan.allocation.state
+compiler.cfg.linear-scan.assignment compiler.cfg.parallel-copy
+compiler.cfg.predecessors compiler.cfg.registers
+compiler.cfg.rpo compiler.cfg.utilities cpu.architecture fry
+kernel locals make namespaces sequences ;
IN: compiler.cfg.linear-scan.resolve
TUPLE: location
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs deques dlists hashtables kernel
-make sorting namespaces sequences combinators
-combinators.short-circuit fry math compiler.cfg.rpo
-compiler.cfg.utilities compiler.cfg.loop-detection
-compiler.cfg.predecessors sets hash-sets ;
+USING: accessors assocs combinators combinators.short-circuit
+compiler.cfg.loop-detection compiler.cfg.predecessors
+compiler.cfg.rpo compiler.cfg.utilities deques dlists fry kernel
+make math namespaces sequences sets sorting ;
FROM: namespaces => set ;
IN: compiler.cfg.linearization
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays kernel accessors assocs fry locals combinators
-deques dlists namespaces sequences sets compiler.cfg
-compiler.cfg.def-use compiler.cfg.instructions
-compiler.cfg.registers compiler.cfg.ssa.destruction.leaders
-compiler.cfg.utilities compiler.cfg.predecessors
-compiler.cfg.rpo cpu.architecture ;
+USING: accessors assocs combinators 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 ;
FROM: namespaces => set ;
IN: compiler.cfg.liveness
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators deques dlists fry kernel
-namespaces sequences sets compiler.cfg compiler.cfg.predecessors ;
+USING: accessors assocs compiler.cfg compiler.cfg.predecessors
+deques dlists fry kernel namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.loop-detection
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs cpu.architecture compiler.cfg.registers
-compiler.cfg.instructions compiler.cfg.ssa.destruction.leaders
-deques dlists fry kernel locals namespaces sequences hashtables ;
+USING: assocs compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.ssa.destruction.leaders cpu.architecture deques
+dlists fry kernel locals namespaces sequences ;
FROM: sets => conjoin ;
IN: compiler.cfg.parallel-copy
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors fry sequences assocs compiler.cfg.rpo
-compiler.cfg.instructions compiler.cfg.utilities ;
+USING: accessors assocs compiler.cfg.rpo compiler.cfg.utilities
+fry kernel sequences ;
IN: compiler.cfg.predecessors
<PRIVATE
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors namespaces kernel math parser assocs sequences ;
+USING: assocs kernel math namespaces parser sequences ;
IN: compiler.cfg.registers
! Virtual registers, used by CFG and machine IRs, are just integers
! Copyright (C) 2009, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs fry functors generic.parser
-kernel lexer namespaces parser sequences slots words sets
-compiler.cfg.def-use compiler.cfg.instructions
-compiler.cfg.instructions.syntax ;
+USING: accessors arrays assocs compiler.cfg.def-use
+compiler.cfg.instructions compiler.cfg.instructions.syntax fry
+functors generic.parser kernel lexer namespaces parser sequences
+sets slots words ;
IN: compiler.cfg.renaming.functor
! Like compiler.cfg.def-use, but for changing operands
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs kernel namespaces sequences
-compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.renaming.functor ;
+USING: assocs compiler.cfg.registers
+compiler.cfg.renaming.functor kernel namespaces ;
IN: compiler.cfg.renaming
SYMBOL: renamings
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors byte-arrays combinators
-combinators.short-circuit kernel layouts locals make math
-namespaces sequences cpu.architecture compiler.cfg.registers
-compiler.cfg.instructions
-compiler.cfg.representations.rewrite
-compiler.cfg.representations.selection ;
+combinators.short-circuit compiler.cfg.instructions
+compiler.cfg.registers compiler.cfg.representations.rewrite
+compiler.cfg.representations.selection cpu.architecture kernel
+layouts locals make math namespaces sequences ;
IN: compiler.cfg.representations.peephole
! Representation selection performs some peephole optimizations
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences arrays fry namespaces generic
-words sets combinators generalizations sequences.generalizations
-cpu.architecture compiler.units compiler.cfg.utilities
-compiler.cfg compiler.cfg.rpo compiler.cfg.instructions
-compiler.cfg.def-use ;
+USING: accessors arrays combinators compiler.cfg.def-use
+compiler.cfg.instructions compiler.units cpu.architecture fry
+generic kernel namespaces sequences sequences.generalizations
+sets words ;
FROM: compiler.cfg.instructions.syntax => insn-def-slots
insn-use-slots insn-temp-slots scalar-rep ;
FROM: namespaces => set ;
! See http://factorcode.org/license.txt for BSD license.
USING:
compiler.cfg
-compiler.cfg.registers
-compiler.cfg.predecessors
compiler.cfg.loop-detection
-compiler.cfg.representations.rewrite
+compiler.cfg.predecessors
+compiler.cfg.registers
+compiler.cfg.representations.coalescing
compiler.cfg.representations.peephole
+compiler.cfg.representations.rewrite
compiler.cfg.representations.selection
-compiler.cfg.representations.coalescing
-compiler.cfg.utilities
-kernel ;
+compiler.cfg.utilities ;
IN: compiler.cfg.representations
! Virtual register representation selection. This is where
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators
-combinators.short-circuit layouts kernel locals make math
-namespaces sequences
-compiler.cfg.instructions
-compiler.cfg.registers
-compiler.cfg.renaming.functor
+USING: arrays assocs compiler.cfg.instructions
+compiler.cfg.registers compiler.cfg.renaming.functor
compiler.cfg.representations.conversion
-compiler.cfg.representations.preferred
-compiler.cfg.rpo
-compiler.cfg.utilities
-cpu.architecture ;
+compiler.cfg.representations.preferred compiler.cfg.rpo kernel
+locals make namespaces sequences ;
IN: compiler.cfg.representations.rewrite
! Insert conversions. This introduces new temporaries, so we need
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs byte-arrays combinators
-disjoint-sets fry kernel locals math math.functions
-namespaces sequences sets
-compiler.cfg
-compiler.cfg.instructions
-compiler.cfg.loop-detection
-compiler.cfg.registers
-compiler.cfg.representations.preferred
+compiler.cfg compiler.cfg.instructions
+compiler.cfg.loop-detection compiler.cfg.registers
compiler.cfg.representations.coalescing
-compiler.cfg.rpo
-compiler.cfg.utilities
-compiler.utilities
-cpu.architecture ;
+compiler.cfg.representations.preferred compiler.cfg.rpo
+compiler.cfg.utilities compiler.utilities cpu.architecture
+disjoint-sets fry kernel locals math math.functions namespaces
+sequences sets ;
FROM: assocs => change-at ;
FROM: namespaces => set ;
IN: compiler.cfg.representations.selection
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors namespaces make math sequences sets
-assocs fry compiler.cfg compiler.cfg.instructions ;
+USING: accessors compiler.cfg fry kernel make sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.rpo
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors compiler.cfg.instructions compiler.cfg.registers
-compiler.cfg.rpo cpu.architecture kernel sequences vectors
-combinators.short-circuit ;
+USING: accessors combinators.short-circuit
+compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.rpo cpu.architecture kernel sequences ;
IN: compiler.cfg.save-contexts
! Insert context saves.
! Copyright (C) 2009, 2010 Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs compiler.cfg.def-use compiler.cfg.dependence
-compiler.cfg.instructions compiler.cfg.linear-scan.numbering compiler.cfg.rpo
-cpu.architecture fry kernel make math namespaces sequences sets splitting ;
+USING: accessors arrays assocs compiler.cfg.dependence
+compiler.cfg.instructions compiler.cfg.linear-scan.numbering
+compiler.cfg.rpo fry kernel make math namespaces sequences
+splitting ;
FROM: namespaces => set ;
IN: compiler.cfg.scheduling
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces kernel accessors sequences fry assocs
-sets math combinators deques dlists
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.def-use
-compiler.cfg.registers
-compiler.cfg.dominance
-compiler.cfg.instructions
-compiler.cfg.renaming
-compiler.cfg.renaming.functor
-compiler.cfg.ssa.construction.tdmsc ;
+USING: accessors assocs combinators compiler.cfg
+compiler.cfg.def-use compiler.cfg.dominance
+compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.renaming.functor compiler.cfg.rpo
+compiler.cfg.ssa.construction.tdmsc deques dlists fry kernel
+math namespaces sequences sets ;
FROM: assocs => change-at ;
FROM: namespaces => set ;
IN: compiler.cfg.ssa.construction
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs bit-arrays bit-sets combinators compiler.cfg
-compiler.cfg.dominance compiler.cfg.rpo compiler.cfg.utilities fry
-hashtables hints kernel locals math namespaces sequences sets ;
+USING: accessors arrays assocs bit-sets compiler.cfg
+compiler.cfg.dominance compiler.cfg.rpo compiler.cfg.utilities
+fry hashtables kernel locals math namespaces sequences sets ;
FROM: namespaces => set ;
FROM: assocs => change-at ;
IN: compiler.cfg.ssa.construction.tdmsc
! Copyright (C) 2009, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs kernel locals fry make namespaces
-sequences cpu.architecture
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.utilities
-compiler.cfg.predecessors
-compiler.cfg.registers
-compiler.cfg.instructions ;
+USING: accessors assocs compiler.cfg compiler.cfg.instructions
+compiler.cfg.predecessors compiler.cfg.registers
+compiler.cfg.rpo compiler.cfg.utilities fry kernel locals make
+namespaces sequences ;
FROM: assocs => change-at ;
IN: compiler.cfg.ssa.cssa
! Copyright (C) 2009, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators fry locals kernel
-make namespaces sequences sequences.deep sets vectors
-cpu.architecture
-compiler.cfg.rpo
-compiler.cfg.def-use
-compiler.cfg.registers
-compiler.cfg.dominance
-compiler.cfg.instructions
-compiler.cfg.liveness
-compiler.cfg.ssa.cssa
+USING: accessors arrays assocs combinators compiler.cfg.def-use
+compiler.cfg.dominance compiler.cfg.instructions
+compiler.cfg.liveness compiler.cfg.parallel-copy
+compiler.cfg.registers compiler.cfg.rpo compiler.cfg.ssa.cssa
compiler.cfg.ssa.destruction.leaders
compiler.cfg.ssa.interference
-compiler.cfg.ssa.interference.live-ranges
-compiler.cfg.parallel-copy
-compiler.cfg.utilities
-compiler.utilities ;
+compiler.cfg.ssa.interference.live-ranges cpu.architecture
+kernel locals make namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.ssa.destruction
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs combinators
-combinators.short-circuit fry kernel math math.order sorting
-sorting.slots namespaces sequences locals compiler.cfg.def-use
-compiler.cfg.dominance compiler.cfg.ssa.interference.live-ranges ;
+USING: accessors arrays combinators combinators.short-circuit
+compiler.cfg.dominance compiler.cfg.ssa.interference.live-ranges
+kernel locals math math.order sequences sorting.slots ;
IN: compiler.cfg.ssa.interference
! Interference testing using SSA properties.
2dup [ length 1 = ] both? [ sets-interfere-1? ] [
merge-sets dup linear-interference-test
[ drop f t ] [ dup update-for-merge f ] if
- ] if ;
\ No newline at end of file
+ ] if ;
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs fry kernel namespaces sequences math
-arrays compiler.cfg.def-use compiler.cfg.instructions
-compiler.cfg.liveness compiler.cfg.rpo
-compiler.cfg.dominance compiler.cfg ;
+USING: assocs compiler.cfg compiler.cfg.def-use
+compiler.cfg.dominance compiler.cfg.instructions
+compiler.cfg.liveness compiler.cfg.rpo kernel math namespaces
+sequences ;
IN: compiler.cfg.ssa.interference.live-ranges
! Live ranges for interference testing
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.order namespaces accessors kernel layouts
-combinators assocs sequences cpu.architecture
-words compiler.cfg.instructions ;
+USING: accessors kernel math namespaces ;
IN: compiler.cfg.stack-frame
TUPLE: stack-frame
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces assocs kernel fry accessors sequences make math locals
-combinators compiler.cfg compiler.cfg.hats compiler.cfg.instructions
-compiler.cfg.utilities compiler.cfg.rpo compiler.cfg.stacks.local
+USING: accessors assocs compiler.cfg compiler.cfg.instructions
+compiler.cfg.predecessors compiler.cfg.rpo
compiler.cfg.stacks.global compiler.cfg.stacks.height
-compiler.cfg.predecessors ;
+compiler.cfg.stacks.local compiler.cfg.utilities fry kernel
+locals make math sequences ;
IN: compiler.cfg.stacks.finalize
! This pass inserts peeks and replaces.
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs kernel combinators compiler.cfg.dataflow-analysis
-compiler.cfg.stacks.local ;
+USING: assocs combinators compiler.cfg.dataflow-analysis
+compiler.cfg.stacks.local kernel ;
IN: compiler.cfg.stacks.global
: transfer-peeked-locs ( assoc bb -- assoc' )
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs fry kernel math
-namespaces compiler.cfg.registers ;
+USING: accessors assocs compiler.cfg.registers fry kernel math
+namespaces ;
IN: compiler.cfg.stacks.height
! Global stack height tracking done while constructing CFG.
M: rs-loc untranslate-loc [ n>> ] [ rs-heights get at ] bi* + <rs-loc> ;
: untranslate-locs ( assoc bb -- assoc' )
- '[ [ _ untranslate-loc ] dip ] assoc-map ;
\ No newline at end of file
+ '[ [ _ untranslate-loc ] dip ] assoc-map ;
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs kernel math math.order namespaces sets make
-sequences combinators fry
-compiler.cfg
-compiler.cfg.hats
-compiler.cfg.instructions
-compiler.cfg.registers
-compiler.cfg.stacks.height
-compiler.cfg.parallel-copy ;
+USING: accessors assocs combinators compiler.cfg
+compiler.cfg.instructions compiler.cfg.parallel-copy
+compiler.cfg.registers compiler.cfg.stacks.height kernel make
+math math.order namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.cfg.stacks.local
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: math sequences kernel namespaces accessors biassocs compiler.cfg
-compiler.cfg.instructions compiler.cfg.registers compiler.cfg.hats
-compiler.cfg.predecessors compiler.cfg.stacks.local
-compiler.cfg.stacks.height compiler.cfg.stacks.global
-compiler.cfg.stacks.finalize ;
+USING: accessors biassocs compiler.cfg compiler.cfg.registers
+compiler.cfg.stacks.finalize compiler.cfg.stacks.global
+compiler.cfg.stacks.height compiler.cfg.stacks.local kernel math
+namespaces sequences ;
IN: compiler.cfg.stacks
: begin-stack-analysis ( -- )
-USING: accessors arrays assocs classes.tuple compiler.cfg.dataflow-analysis
-compiler.cfg.instructions compiler.cfg.registers fry kernel math math.order
-sequences sets ;
+USING: accessors arrays compiler.cfg.dataflow-analysis
+compiler.cfg.instructions compiler.cfg.registers fry kernel math
+math.order sequences sets ;
IN: compiler.cfg.stacks.vacant
! Utils
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators.short-circuit kernel math
-namespaces sequences fry combinators
-compiler.utilities
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.hats
-compiler.cfg.instructions
-compiler.cfg.utilities ;
+USING: accessors combinators combinators.short-circuit
+compiler.cfg compiler.cfg.instructions compiler.cfg.rpo
+compiler.cfg.utilities compiler.utilities fry kernel math
+namespaces sequences ;
IN: compiler.cfg.tco
! Tail call optimization.
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences math combinators
-combinators.short-circuit vectors compiler.cfg
+USING: accessors combinators.short-circuit compiler.cfg
compiler.cfg.instructions compiler.cfg.rpo
-compiler.cfg.utilities ;
+compiler.cfg.utilities kernel sequences vectors ;
IN: compiler.cfg.useless-conditionals
: delete-conditional? ( bb -- ? )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators combinators.short-circuit
-cpu.architecture kernel layouts locals make math namespaces sequences
-sets vectors fry arrays compiler.cfg compiler.cfg.instructions
-compiler.cfg.rpo compiler.utilities ;
+USING: accessors assocs combinators.short-circuit compiler.cfg
+compiler.cfg.instructions compiler.cfg.rpo cpu.architecture fry
+kernel locals make math namespaces sequences sets ;
IN: compiler.cfg.utilities
: block>cfg ( bb -- cfg )
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators combinators.short-circuit fry
-kernel make math sequences
-cpu.architecture
-compiler.cfg.hats
-compiler.cfg.utilities
-compiler.cfg.registers
-compiler.cfg.instructions
+USING: accessors combinators combinators.short-circuit
+compiler.cfg.hats compiler.cfg.instructions
+compiler.cfg.utilities compiler.cfg.value-numbering.graph
compiler.cfg.value-numbering.math
-compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture fry kernel
+make math sequences ;
IN: compiler.cfg.value-numbering.alien
M: ##box-displaced-alien rewrite
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators kernel math math.order namespaces
-sequences vectors combinators.short-circuit
-cpu.architecture
-compiler.cfg
-compiler.cfg.comparisons
-compiler.cfg.instructions
-compiler.cfg.registers
+USING: accessors combinators combinators.short-circuit
+compiler.cfg compiler.cfg.comparisons compiler.cfg.instructions
+compiler.cfg.registers compiler.cfg.value-numbering.graph
compiler.cfg.value-numbering.math
-compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture kernel
+math math.order namespaces sequences vectors ;
IN: compiler.cfg.value-numbering.comparisons
! Optimizations performed here:
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays classes classes.algebra combinators fry
-generic.parser kernel math namespaces quotations sequences slots
-words make sets
-compiler.cfg.instructions
-compiler.cfg.instructions.syntax
-compiler.cfg.value-numbering.graph ;
+USING: accessors arrays classes.algebra combinators
+compiler.cfg.instructions compiler.cfg.instructions.syntax
+compiler.cfg.value-numbering.graph generic.parser kernel make
+math namespaces quotations sequences sets slots words ;
FROM: sequences.private => set-array-nth ;
IN: compiler.cfg.value-numbering.expressions
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel layouts math math.bitwise
-compiler.cfg.instructions
+USING: accessors compiler.cfg.instructions
compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite kernel layouts math
+math.bitwise ;
IN: compiler.cfg.value-numbering.folding
: binary-constant-fold? ( insn -- ? )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel math namespaces assocs ;
+USING: assocs kernel namespaces ;
IN: compiler.cfg.value-numbering.graph
SYMBOL: input-expr-counter
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors combinators combinators.short-circuit
-cpu.architecture fry kernel layouts locals make math sequences
-compiler.cfg.instructions
-compiler.cfg.registers
-compiler.cfg.utilities
-compiler.cfg.value-numbering.folding
+compiler.cfg.instructions compiler.cfg.registers
+compiler.cfg.utilities compiler.cfg.value-numbering.folding
compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture fry kernel
+layouts locals make math ;
IN: compiler.cfg.value-numbering.math
: f-insn? ( insn -- ? )
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors cpu.architecture kernel
-compiler.cfg.instructions
+USING: accessors compiler.cfg.instructions
compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture kernel ;
IN: compiler.cfg.value-numbering.misc
M: ##replace rewrite
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators combinators.short-circuit kernel
-layouts math cpu.architecture
-compiler.cfg.instructions
-compiler.cfg.value-numbering.graph ;
+USING: accessors combinators combinators.short-circuit
+compiler.cfg.instructions compiler.cfg.value-numbering.graph
+cpu.architecture kernel layouts math ;
IN: compiler.cfg.value-numbering.rewrite
! Outputs f to mean no change
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators combinators.short-circuit arrays
-fry kernel layouts math namespaces sequences cpu.architecture
-math.bitwise math.order classes generalizations
-locals make alien.c-types io.binary grouping
-math.vectors.simd.intrinsics
-compiler.cfg
-compiler.cfg.registers
-compiler.cfg.utilities
-compiler.cfg.comparisons
-compiler.cfg.instructions
+USING: accessors alien.c-types combinators
+combinators.short-circuit compiler.cfg.instructions
+compiler.cfg.utilities compiler.cfg.value-numbering.graph
compiler.cfg.value-numbering.math
-compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture
+generalizations grouping io.binary kernel locals make math
+sequences ;
IN: compiler.cfg.value-numbering.simd
! Some lame constant folding for SIMD intrinsics. Eventually this
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators.short-circuit cpu.architecture fry
-kernel math
-compiler.cfg.instructions
+USING: accessors compiler.cfg.instructions
compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite ;
+compiler.cfg.value-numbering.rewrite cpu.architecture fry kernel
+math ;
IN: compiler.cfg.value-numbering.slots
: simplify-slot-addressing? ( insn -- ? )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs
-compiler.cfg
-compiler.cfg.rpo
-compiler.cfg.def-use
-compiler.cfg.utilities
-compiler.cfg.instructions
-compiler.cfg.value-numbering.alien
-compiler.cfg.value-numbering.comparisons
-compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.math
-compiler.cfg.value-numbering.rewrite
-compiler.cfg.value-numbering.slots
-compiler.cfg.value-numbering.misc
-compiler.cfg.value-numbering.expressions
-cpu.architecture kernel locals namespaces sequences sequences.deep sets
-sorting ;
+USING: accessors arrays assocs compiler.cfg compiler.cfg.def-use
+compiler.cfg.instructions compiler.cfg.rpo
+compiler.cfg.utilities kernel locals namespaces sequences
+sequences.deep ;
+
+USE: compiler.cfg.value-numbering.alien
+USE: compiler.cfg.value-numbering.comparisons
+USE: compiler.cfg.value-numbering.expressions
+USE: compiler.cfg.value-numbering.folding
+USE: compiler.cfg.value-numbering.graph
+USE: compiler.cfg.value-numbering.math
+USE: compiler.cfg.value-numbering.misc
+USE: compiler.cfg.value-numbering.rewrite
+USE: compiler.cfg.value-numbering.slots
+
IN: compiler.cfg.value-numbering
GENERIC: process-instruction ( insn -- insn' )
! Copyright (C) 2008, 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: byte-arrays namespaces make math math.order math.parser
-sequences accessors kernel layouts assocs words summary arrays
-combinators sets continuations.private fry
-cpu.architecture classes classes.struct locals slots parser
-generic.parser strings quotations hashtables
-sequences.generalizations
-compiler.constants
-compiler.cfg
-compiler.cfg.linearization
-compiler.cfg.instructions
-compiler.cfg.comparisons
-compiler.cfg.stack-frame
-compiler.cfg.registers
-compiler.cfg.builder
-compiler.codegen.gc-maps
-compiler.codegen.labels
-compiler.codegen.relocation
-compiler.utilities ;
+USING: accessors arrays assocs byte-arrays classes combinators
+compiler.cfg compiler.cfg.comparisons compiler.cfg.instructions
+compiler.cfg.linearization compiler.cfg.stack-frame
+compiler.codegen.gc-maps compiler.codegen.labels
+compiler.codegen.relocation compiler.constants cpu.architecture
+fry generic.parser kernel layouts locals make math namespaces
+parser quotations sequences sequences.generalizations slots
+words ;
FROM: namespaces => set ;
IN: compiler.codegen
! Copyright (C) 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs bit-arrays classes.tuple combinators
-combinators.short-circuit compiler.cfg.instructions
-compiler.codegen.relocation cpu.architecture fry kernel layouts
-make math math.order namespaces sequences sequences.generalizations ;
+USING: accessors arrays assocs bit-arrays classes.tuple
+combinators compiler.codegen.relocation cpu.architecture fry
+kernel layouts make math math.order namespaces sequences
+sequences.generalizations ;
IN: compiler.codegen.gc-maps
SYMBOLS: return-addresses gc-maps ;
! Copyright (C) 2004, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel namespaces arrays sequences io words fry
-continuations vocabs assocs definitions math graphs generic
-generic.single combinators macros make source-files.errors
-combinators.short-circuit classes.algebra vocabs.loader
-sets
-
-stack-checker stack-checker.dependencies stack-checker.inlining
-stack-checker.errors
-
-compiler.errors compiler.units compiler.utilities compiler.crossref
-
-compiler.tree.builder
-compiler.tree.optimizer
-
-compiler.cfg
-compiler.cfg.builder
-compiler.cfg.builder.alien
-compiler.cfg.optimizer
-compiler.cfg.finalization
-
-compiler.codegen ;
+USING: accessors assocs classes.algebra combinators
+combinators.short-circuit compiler.cfg compiler.cfg.builder
+compiler.cfg.finalization compiler.cfg.optimizer
+compiler.codegen compiler.crossref compiler.errors
+compiler.tree.builder compiler.tree.optimizer compiler.units
+compiler.utilities continuations definitions fry generic
+generic.single io kernel macros make namespaces sequences sets
+stack-checker.dependencies stack-checker.errors
+stack-checker.inlining vocabs.loader words ;
IN: compiler
SYMBOL: compiled
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: math kernel layouts system strings words quotations byte-arrays
-alien arrays literals sequences ;
+USING: alien arrays byte-arrays kernel layouts literals math
+quotations sequences strings words ;
IN: compiler.constants
! These constants must match vm/memory.h
! Copyright (C) 2009, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs classes.algebra compiler.units definitions
-graphs grouping kernel namespaces sequences words fry
-stack-checker.dependencies combinators sets ;
+USING: assocs combinators fry graphs grouping kernel namespaces
+sequences sets stack-checker.dependencies words ;
IN: compiler.crossref
SYMBOL: compiled-crossref
! Copyright (C) 2007, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors source-files.errors kernel namespaces assocs fry
-summary command-line ;
+USING: accessors assocs command-line fry kernel namespaces
+source-files.errors summary ;
IN: compiler.errors
SYMBOL: +compiler-error+
! Copyright (C) 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays compiler.units kernel stack-checker
-sequences vocabs words tools.test tools.test.private ;
+USING: accessors arrays compiler.units kernel sequences
+stack-checker tools.test vocabs words ;
IN: compiler.test
: decompile ( word -- )
! Copyright (C) 2011 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.private compiler.utilities kernel namespaces
-stack-checker.alien threads threads.private ;
+stack-checker.alien threads threads.private ;
IN: compiler.threads
[ yield ] yield-hook set-global
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry locals accessors quotations kernel sequences namespaces
-assocs words arrays vectors hints combinators continuations
-effects compiler.tree
-stack-checker
-stack-checker.state
-stack-checker.errors
-stack-checker.visitor
-stack-checker.backend
-stack-checker.recursive-state ;
+USING: accessors combinators compiler.tree continuations hints
+kernel locals namespaces quotations sequences
+stack-checker.backend stack-checker.errors
+stack-checker.recursive-state stack-checker.state
+stack-checker.visitor vectors words ;
IN: compiler.tree.builder
<PRIVATE
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences kernel sets namespaces accessors assocs
-arrays combinators continuations columns math vectors
-grouping stack-checker.branches
-compiler.tree
-compiler.tree.def-use
-compiler.tree.recursive
-compiler.tree.combinators ;
+USING: accessors arrays assocs columns combinators compiler.tree
+compiler.tree.combinators compiler.tree.def-use
+compiler.tree.recursive continuations grouping kernel math
+namespaces sequences sets vectors ;
FROM: namespaces => set ;
IN: compiler.tree.checker
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences combinators fry
-classes.algebra namespaces assocs words math math.private
-math.partial-dispatch math.intervals classes classes.tuple
-classes.tuple.private layouts definitions stack-checker.dependencies
-stack-checker.branches
-compiler.utilities
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.info
-compiler.tree.propagation.branches ;
+USING: accessors classes classes.algebra combinators
+compiler.tree compiler.tree.combinators
+compiler.tree.propagation.branches
+compiler.tree.propagation.info compiler.utilities fry kernel
+layouts math math.intervals math.partial-dispatch math.private
+namespaces sequences stack-checker.branches
+stack-checker.dependencies words ;
IN: compiler.tree.cleanup
GENERIC: delete-node ( node -- )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs combinators combinators.short-circuit fry kernel
-locals accessors sequences compiler.utilities arrays
-stack-checker.inlining namespaces compiler.tree math.order ;
+USING: accessors assocs combinators combinators.short-circuit
+compiler.tree compiler.utilities kernel locals namespaces
+sequences stack-checker.inlining ;
IN: compiler.tree.combinators
:: each-node ( ... nodes quot: ( ... node -- ... ) -- ... )
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.order math.intervals assocs combinators ;
+USING: assocs combinators math math.intervals math.order ;
IN: compiler.tree.comparisons
! Some utilities for working with comparison operations.
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences namespaces kernel accessors assocs sets fry
-arrays combinators columns stack-checker.backend
-stack-checker.branches compiler.tree compiler.tree.combinators
-compiler.tree.dead-code.liveness compiler.tree.dead-code.simple ;
+USING: accessors assocs columns combinators compiler.tree
+compiler.tree.dead-code.liveness compiler.tree.dead-code.simple
+fry kernel namespaces sequences stack-checker.backend
+stack-checker.branches ;
FROM: namespaces => set ;
IN: compiler.tree.dead-code.branches
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry accessors namespaces assocs deques search-deques
-dlists kernel sequences compiler.utilities words sets
-stack-checker.branches compiler.tree compiler.tree.def-use
-compiler.tree.combinators ;
+USING: accessors assocs compiler.tree compiler.tree.combinators
+compiler.tree.def-use compiler.utilities deques dlists kernel
+namespaces sets stack-checker.branches ;
FROM: namespaces => set ;
IN: compiler.tree.dead-code.liveness
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs sequences kernel locals fry
-combinators stack-checker.backend
-compiler.tree
-compiler.tree.recursive
+USING: accessors arrays compiler.tree
compiler.tree.dead-code.branches
-compiler.tree.dead-code.liveness
-compiler.tree.dead-code.simple ;
+compiler.tree.dead-code.liveness compiler.tree.dead-code.simple
+compiler.tree.recursive kernel locals sequences
+stack-checker.backend ;
IN: compiler.tree.dead-code.recursive
M: #enter-recursive compute-live-values*
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors words assocs sequences arrays namespaces
-fry locals definitions classes classes.algebra generic math
-combinators math.private
-stack-checker.dependencies
-stack-checker.backend
-compiler.tree
-compiler.tree.propagation.info
-compiler.tree.dead-code.liveness ;
+USING: accessors arrays assocs classes.algebra combinators
+compiler.tree compiler.tree.dead-code.liveness
+compiler.tree.propagation.info fry kernel locals math
+math.private namespaces sequences stack-checker.backend
+stack-checker.dependencies words ;
IN: compiler.tree.dead-code.simple
: flushable-call? ( #call -- ? )
! Copyright (C) 2006, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel assocs match fry accessors namespaces make effects
-sequences sequences.private quotations generic macros arrays
-prettyprint prettyprint.backend prettyprint.config
-prettyprint.custom prettyprint.sections math words combinators
-combinators.short-circuit io sorting hints sets
-compiler.tree
-compiler.tree.recursive
-compiler.tree.normalization
-compiler.tree.cleanup
-compiler.tree.propagation
-compiler.tree.propagation.info
-compiler.tree.escape-analysis
-compiler.tree.tuple-unboxing
-compiler.tree.def-use
-compiler.tree.builder
-compiler.tree.optimizer
-compiler.tree.combinators
-compiler.tree.checker
-compiler.tree.identities
-compiler.tree.dead-code
-compiler.tree.modular-arithmetic ;
+USING: accessors arrays assocs combinators
+combinators.short-circuit compiler.tree compiler.tree.builder
+compiler.tree.checker compiler.tree.cleanup
+compiler.tree.combinators compiler.tree.dead-code
+compiler.tree.def-use compiler.tree.escape-analysis
+compiler.tree.identities compiler.tree.modular-arithmetic
+compiler.tree.normalization compiler.tree.optimizer
+compiler.tree.propagation compiler.tree.propagation.info
+compiler.tree.recursive compiler.tree.tuple-unboxing effects fry
+generic hints io kernel macros make match math namespaces
+prettyprint prettyprint.config prettyprint.custom
+prettyprint.sections quotations sequences sequences.private sets
+sorting words ;
FROM: fry => _ ;
FROM: namespaces => set ;
RENAME: _ match => __
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays fry namespaces sequences kernel generic assocs
-classes vectors accessors combinators sets
-stack-checker.state
-stack-checker.branches
-compiler.tree
-compiler.tree.combinators ;
+USING: accessors assocs compiler.tree compiler.tree.combinators
+fry kernel namespaces sequences stack-checker.branches ;
FROM: namespaces => set ;
FROM: sets => members ;
IN: compiler.tree.def-use
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences kernel fry vectors accessors namespaces assocs sets
-stack-checker.branches compiler.tree compiler.tree.def-use ;
+USING: accessors compiler.tree compiler.tree.def-use kernel
+namespaces sequences sets stack-checker.branches ;
FROM: namespaces => set ;
IN: compiler.tree.def-use.simplified
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs namespaces sequences kernel math
-combinators sets disjoint-sets fry stack-checker.values ;
+USING: accessors assocs combinators disjoint-sets fry kernel
+namespaces sequences stack-checker.values ;
FROM: namespaces => set ;
IN: compiler.tree.escape-analysis.allocations
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel namespaces sequences sets fry columns
-grouping stack-checker.branches
-compiler.tree
-compiler.tree.propagation.branches
+USING: accessors compiler.tree
+compiler.tree.escape-analysis.allocations
compiler.tree.escape-analysis.nodes
-compiler.tree.escape-analysis.allocations ;
+compiler.tree.propagation.branches grouping kernel sequences
+stack-checker.branches ;
IN: compiler.tree.escape-analysis.branches
M: #branch escape-analysis*
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: classes classes.tuple math math.private accessors sequences
-combinators.short-circuit kernel compiler.tree
-compiler.tree.combinators compiler.tree.propagation.info ;
+USING: accessors classes classes.tuple combinators.short-circuit
+compiler.tree compiler.tree.propagation.info kernel math
+sequences ;
IN: compiler.tree.escape-analysis.check
GENERIC: run-escape-analysis* ( node -- ? )
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel namespaces assocs fry sequences
-compiler.tree
-compiler.tree.escape-analysis.allocations
-compiler.tree.escape-analysis.recursive
-compiler.tree.escape-analysis.branches
-compiler.tree.escape-analysis.nodes
-compiler.tree.escape-analysis.simple ;
+USING: compiler.tree.escape-analysis.allocations
+compiler.tree.escape-analysis.nodes kernel namespaces ;
+
+USE: compiler.tree.escape-analysis.recursive
+USE: compiler.tree.escape-analysis.branches
+USE: compiler.tree.escape-analysis.simple
+
IN: compiler.tree.escape-analysis
! This pass must run after propagation
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel sequences fry math namespaces
-compiler.tree
-compiler.tree.def-use
-compiler.tree.escape-analysis.allocations ;
+USING: compiler.tree.def-use
+compiler.tree.escape-analysis.allocations fry kernel math
+namespaces sequences ;
IN: compiler.tree.escape-analysis.nodes
GENERIC: escape-analysis* ( node -- )
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel sequences math combinators accessors namespaces
-fry disjoint-sets
-compiler.tree
-compiler.tree.recursive
+USING: accessors combinators compiler.tree
compiler.tree.combinators
-compiler.tree.escape-analysis.nodes
+compiler.tree.escape-analysis.allocations
compiler.tree.escape-analysis.branches
-compiler.tree.escape-analysis.allocations ;
+compiler.tree.escape-analysis.nodes compiler.tree.recursive
+disjoint-sets fry kernel namespaces sequences ;
IN: compiler.tree.escape-analysis.recursive
: congruent? ( alloc1 alloc2 -- ? )
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences classes.tuple
-classes.tuple.private arrays math math.private slots.private
-combinators deques search-deques namespaces fry classes
-classes.algebra assocs stack-checker.state
-compiler.tree
-compiler.tree.propagation.info
+USING: accessors arrays assocs classes classes.tuple
+classes.tuple.private combinators compiler.tree
+compiler.tree.escape-analysis.allocations
compiler.tree.escape-analysis.nodes
-compiler.tree.escape-analysis.allocations ;
+compiler.tree.propagation.info kernel math namespaces sequences
+slots.private ;
IN: compiler.tree.escape-analysis.simple
M: #declare escape-analysis* drop ;
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel accessors sequences words memoize combinators
-classes classes.builtin classes.tuple classes.singleton
-math.partial-dispatch fry assocs combinators.short-circuit
-stack-checker.dependencies
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.info
-compiler.tree.late-optimizations ;
+USING: accessors assocs classes classes.builtin
+classes.singleton classes.tuple combinators
+combinators.short-circuit compiler.tree
+compiler.tree.combinators compiler.tree.late-optimizations fry
+kernel math.partial-dispatch memoize sequences
+stack-checker.dependencies words ;
IN: compiler.tree.finalization
! This is a late-stage optimization.
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel sequences fry words math
-math.partial-dispatch combinators arrays hashtables
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.info ;
+USING: accessors arrays combinators compiler.tree
+compiler.tree.combinators compiler.tree.propagation.info fry
+hashtables kernel math math.partial-dispatch sequences words ;
IN: compiler.tree.identities
: define-identities ( word identities -- )
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences namespaces compiler.tree.builder
-compiler.tree.recursive
-compiler.tree.normalization
-compiler.tree.propagation
-compiler.tree.propagation.info
-compiler.tree.cleanup
-compiler.tree.def-use
-compiler.tree.dead-code ;
+USING: compiler.tree.builder compiler.tree.cleanup
+compiler.tree.dead-code compiler.tree.def-use
+compiler.tree.normalization compiler.tree.propagation
+compiler.tree.recursive namespaces sequences ;
IN: compiler.tree.late-optimizations
! Late optimizations modify the tree such that stack flow
: splice-quot ( quot -- nodes )
[
build-tree
- analyze-recursive
+ analyze-recursive
normalize
propagate
cleanup
! Copyright (C) 2008, 2009 Slava Pestov, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.intervals math.private math.partial-dispatch
-namespaces sequences sets accessors assocs words kernel memoize fry
-combinators combinators.short-circuit layouts alien.accessors
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.info
-compiler.tree.def-use
-compiler.tree.def-use.simplified
-compiler.tree.late-optimizations ;
+USING: accessors alien.accessors assocs combinators
+combinators.short-circuit compiler.tree
+compiler.tree.combinators compiler.tree.def-use.simplified
+compiler.tree.late-optimizations compiler.tree.propagation.info
+fry kernel layouts math math.intervals math.partial-dispatch
+math.private memoize namespaces sequences sets words ;
FROM: namespaces => set ;
FROM: assocs => change-at ;
IN: compiler.tree.modular-arithmetic
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces sequences accessors math kernel
-compiler.tree math.order ;
+USING: accessors compiler.tree kernel math math.order namespaces
+sequences ;
IN: compiler.tree.normalization.introductions
SYMBOL: introductions
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry namespaces sequences math math.order accessors kernel arrays
-combinators assocs
-stack-checker.backend
-stack-checker.branches
-stack-checker.inlining
-compiler.utilities
-compiler.tree
-compiler.tree.combinators
+USING: accessors arrays assocs combinators compiler.tree
compiler.tree.normalization.introductions
-compiler.tree.normalization.renaming ;
+compiler.tree.normalization.renaming compiler.utilities fry
+kernel math math.order namespaces sequences
+stack-checker.backend stack-checker.branches ;
IN: compiler.tree.normalization
! A transform pass done before optimization can begin to
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces assocs kernel accessors sequences fry
-compiler.tree compiler.tree.combinators ;
+USING: accessors assocs compiler.tree compiler.tree.combinators
+fry kernel namespaces sequences ;
IN: compiler.tree.normalization.renaming
SYMBOL: rename-map
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry kernel sequences assocs accessors
-math.intervals arrays classes.algebra combinators columns
-stack-checker.branches locals math namespaces
-compiler.utilities
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.info
-compiler.tree.propagation.nodes
-compiler.tree.propagation.simple
-compiler.tree.propagation.constraints ;
+USING: accessors arrays assocs combinators compiler.tree
+compiler.tree.combinators compiler.tree.propagation.constraints
+compiler.tree.propagation.info compiler.tree.propagation.nodes
+compiler.tree.propagation.simple fry kernel locals math
+namespaces sequences stack-checker.branches ;
FROM: sets => union ;
FROM: assocs => change-at ;
IN: compiler.tree.propagation.branches
! Copyright (C) 2009, 2010 Slava Pestov, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays combinators combinators.private effects
-fry kernel kernel.private make namespaces sequences continuations
-quotations words math stack-checker stack-checker.dependencies
-combinators.short-circuit stack-checker.transforms
-compiler.tree.propagation.info
-compiler.tree.propagation.inlining compiler.units ;
+USING: accessors combinators combinators.private
+combinators.short-circuit compiler.tree.propagation.info
+compiler.tree.propagation.inlining compiler.units continuations
+effects fry kernel kernel.private namespaces quotations
+sequences stack-checker stack-checker.dependencies
+stack-checker.transforms words ;
IN: compiler.tree.propagation.call-effect
! call( and execute( have complex expansions.
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs math math.intervals kernel accessors
-sequences namespaces classes classes.algebra
-combinators words combinators.short-circuit
-compiler.tree
-compiler.tree.propagation.info
-compiler.tree.propagation.copy ;
+USING: accessors arrays assocs classes.algebra
+compiler.tree.propagation.copy compiler.tree.propagation.info
+kernel namespaces sequences ;
IN: compiler.tree.propagation.constraints
! A constraint is a statement about a value.
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces sequences assocs math kernel accessors fry
-combinators sets locals columns grouping
-stack-checker.branches
-compiler.tree
-compiler.tree.def-use
-compiler.tree.combinators
-compiler.utilities ;
+USING: accessors assocs compiler.tree compiler.tree.def-use
+compiler.utilities grouping kernel namespaces sequences sets
+stack-checker.branches ;
IN: compiler.tree.propagation.copy
! Two values are copy-equivalent if they are always identical
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs classes classes.algebra classes.tuple
-classes.tuple.private classes.singleton kernel accessors math
-math.intervals namespaces sequences sequences.private words
-combinators memoize combinators.short-circuit byte-arrays
-strings arrays layouts cpu.architecture
-compiler.tree.propagation.copy ;
+USING: accessors arrays assocs byte-arrays classes
+classes.algebra classes.singleton classes.tuple
+classes.tuple.private combinators combinators.short-circuit
+compiler.tree.propagation.copy kernel layouts math
+math.intervals namespaces sequences sequences.private strings
+words ;
IN: compiler.tree.propagation.info
: false-class? ( class -- ? ) \ f class<= ;
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel arrays sequences math math.order
-math.partial-dispatch generic generic.standard generic.single generic.math
-classes.algebra classes.union sets quotations assocs combinators
-combinators.short-circuit words namespaces continuations classes
-fry hints locals
-compiler.tree
-compiler.tree.builder
-compiler.tree.recursive
-compiler.tree.combinators
-compiler.tree.normalization
-compiler.tree.propagation.info
-compiler.tree.propagation.nodes ;
+USING: accessors arrays assocs classes.algebra combinators
+combinators.short-circuit compiler.tree compiler.tree.builder
+compiler.tree.normalization compiler.tree.propagation.info
+compiler.tree.propagation.nodes compiler.tree.recursive generic
+generic.math generic.single generic.standard kernel locals math
+math.partial-dispatch namespaces quotations sequences words ;
IN: compiler.tree.propagation.inlining
! Splicing nodes
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: effects accessors kernel kernel.private layouts math
-math.private math.integers.private math.floats.private
-math.partial-dispatch math.intervals math.parser math.order
-math.functions math.libm math.ratios namespaces words sequences
-sequences.private arrays assocs classes classes.algebra
-combinators generic.math splitting fry locals classes.tuple
-alien.accessors classes.tuple.private slots.private definitions
-strings.private vectors hashtables generic quotations alien
-alien.data alien.data.private
-strings sbufs byte-arrays byte-vectors
-stack-checker.dependencies
-compiler.tree.comparisons
-compiler.tree.propagation.info
-compiler.tree.propagation.nodes
-compiler.tree.propagation.slots
-compiler.tree.propagation.simple
-compiler.tree.propagation.constraints
-compiler.tree.propagation.call-effect
-compiler.tree.propagation.transforms ;
+USING: accessors alien alien.accessors alien.data.private arrays
+assocs byte-arrays byte-vectors classes classes.algebra
+classes.tuple classes.tuple.private combinators
+compiler.tree.comparisons compiler.tree.propagation.constraints
+compiler.tree.propagation.info compiler.tree.propagation.simple
+compiler.tree.propagation.slots fry generic.math hashtables
+kernel kernel.private layouts locals math math.floats.private
+math.functions math.integers.private math.intervals math.libm
+math.parser math.partial-dispatch math.private namespaces sbufs
+sequences slots.private splitting strings strings.private
+vectors words ;
FROM: alien.c-types => (signed-interval) (unsigned-interval) ;
IN: compiler.tree.propagation.known-words
! Copyright (C) 2004, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: sequences accessors kernel assocs
-compiler.tree
-compiler.tree.propagation.copy
-compiler.tree.propagation.info ;
+USING: accessors assocs compiler.tree
+compiler.tree.propagation.copy compiler.tree.propagation.info
+kernel sequences ;
IN: compiler.tree.propagation.nodes
SYMBOL: loop-nesting
! Copyright (C) 2004, 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel sequences namespaces hashtables arrays
+USING: arrays
compiler.tree
+compiler.tree.propagation.branches
+compiler.tree.propagation.call-effect
+compiler.tree.propagation.constraints
compiler.tree.propagation.copy
compiler.tree.propagation.info
-compiler.tree.propagation.nodes
-compiler.tree.propagation.simple
compiler.tree.propagation.inlining
-compiler.tree.propagation.branches
+compiler.tree.propagation.known-words
+compiler.tree.propagation.nodes
compiler.tree.propagation.recursive
-compiler.tree.propagation.constraints
-compiler.tree.propagation.known-words ;
+compiler.tree.propagation.simple
+compiler.tree.propagation.transforms
+kernel namespaces ;
IN: compiler.tree.propagation
! This pass must run after normalization
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel classes.algebra sequences accessors arrays fry
-math math.intervals layouts combinators namespaces locals
-stack-checker.inlining
-compiler.tree
-compiler.tree.combinators
-compiler.tree.propagation.copy
-compiler.tree.propagation.info
-compiler.tree.propagation.nodes
-compiler.tree.propagation.simple
-compiler.tree.propagation.branches
-compiler.tree.propagation.constraints ;
+USING: accessors classes.algebra combinators compiler.tree
+compiler.tree.combinators compiler.tree.propagation.constraints
+compiler.tree.propagation.copy compiler.tree.propagation.info
+compiler.tree.propagation.nodes compiler.tree.propagation.simple
+kernel locals math math.intervals namespaces sequences ;
FROM: sequences.private => array-capacity ;
IN: compiler.tree.propagation.recursive
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs byte-arrays combinators compiler.cfg.builder
-continuations fry sequences compiler.tree.propagation.info
-compiler.tree.propagation.nodes cpu.architecture kernel layouts words
-make math math.intervals math.vectors.simd.intrinsics namespaces ;
+USING: accessors byte-arrays combinators compiler.cfg.builder
+compiler.tree.propagation.info compiler.tree.propagation.nodes
+continuations cpu.architecture fry kernel layouts math
+math.intervals math.vectors.simd.intrinsics namespaces sequences
+words ;
IN: compiler.tree.propagation.simd
CONSTANT: vector>vector-intrinsics
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry accessors kernel sequences sequences.private assocs
-words namespaces classes.algebra combinators
-combinators.short-circuit classes classes.tuple
-classes.tuple.private continuations arrays alien.c-types math
-math.private slots generic definitions stack-checker.dependencies
-classes.maybe classes.algebra.private
-compiler.tree
+USING: accessors alien.c-types arrays assocs classes
+classes.algebra classes.algebra.private classes.maybe
+classes.tuple.private combinators combinators.short-circuit
+compiler.tree compiler.tree.propagation.constraints
compiler.tree.propagation.info
-compiler.tree.propagation.nodes
-compiler.tree.propagation.slots
compiler.tree.propagation.inlining
-compiler.tree.propagation.constraints ;
+compiler.tree.propagation.nodes compiler.tree.propagation.slots
+continuations fry kernel sequences stack-checker.dependencies
+words ;
IN: compiler.tree.propagation.simple
! Propagation for straight-line code.
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry assocs arrays byte-arrays strings accessors sequences
-kernel slots classes.algebra classes.tuple classes.tuple.private
-combinators.short-circuit words math math.private combinators
-sequences.private namespaces slots.private classes
-compiler.tree.propagation.info ;
+USING: accessors arrays assocs byte-arrays classes
+classes.algebra classes.tuple classes.tuple.private combinators
+combinators.short-circuit compiler.tree.propagation.info kernel
+math sequences slots.private strings ;
IN: compiler.tree.propagation.slots
! Propagation of immutable slots and array lengths
! Copyright (C) 2008, 2011 Slava Pestov, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types kernel sequences words fry generic
-generic.single accessors classes.tuple classes classes.algebra
-definitions stack-checker.dependencies quotations
-classes.tuple.private math math.partial-dispatch math.private
-math.intervals sets.private math.floats.private
-math.integers.private layouts math.order vectors hashtables
-combinators effects generalizations sequences.generalizations
-assocs sets combinators.short-circuit sequences.private locals
-growable stack-checker namespaces compiler.tree.propagation.info
-hash-sets arrays hashtables.private ;
+USING: accessors alien.c-types assocs classes classes.algebra
+classes.tuple classes.tuple.private combinators
+combinators.short-circuit compiler.tree.propagation.info effects
+fry generalizations generic generic.single growable hash-sets
+hashtables kernel layouts locals math math.integers.private
+math.intervals math.order math.partial-dispatch math.private
+namespaces quotations sequences sequences.generalizations
+sequences.private sets sets.private stack-checker
+stack-checker.dependencies vectors words ;
FROM: math => float ;
FROM: sets => set members ;
IN: compiler.tree.propagation.transforms
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel assocs arrays namespaces accessors sequences deques fry
-search-deques dlists combinators.short-circuit make sets compiler.tree ;
+USING: accessors combinators.short-circuit compiler.tree fry
+kernel namespaces sequences sets ;
FROM: namespaces => set ;
IN: compiler.tree.recursive
! Copyright (C) 2004, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry arrays generic assocs kernel math namespaces parser
-sequences words vectors math.intervals classes
-accessors combinators stack-checker.state stack-checker.visitor
-stack-checker.inlining ;
+USING: accessors arrays assocs kernel namespaces sequences
+stack-checker.visitor vectors ;
IN: compiler.tree
! High-level tree SSA form.
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: namespaces assocs accessors kernel kernel.private combinators
-classes.algebra sequences slots.private fry vectors
-classes.tuple.private math math.private arrays
-stack-checker.branches stack-checker.values
-compiler.utilities
-compiler.tree
-compiler.tree.builder
-compiler.tree.cleanup
-compiler.tree.combinators
-compiler.tree.propagation
-compiler.tree.propagation.info
-compiler.tree.escape-analysis.simple
-compiler.tree.escape-analysis.allocations ;
+USING: accessors arrays assocs classes.tuple.private combinators
+compiler.tree compiler.tree.builder compiler.tree.combinators
+compiler.tree.escape-analysis.allocations
+compiler.tree.escape-analysis.simple compiler.tree.propagation
+compiler.utilities fry kernel kernel.private math namespaces
+sequences slots.private stack-checker.branches
+stack-checker.values vectors ;
IN: compiler.tree.tuple-unboxing
! This pass must run after escape analysis
! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel sequences sequences.private arrays vectors fry
-math math.order namespaces assocs locals ;
+USING: arrays assocs fry kernel locals math math.order
+namespaces sequences vectors ;
IN: compiler.utilities
: flattener ( seq quot -- seq vector quot' )