Merge branch 'master' of git://factorcode.org/git/factor
commit
5ccf7bc99f
|
@ -52,9 +52,12 @@ M: insn rewrite ;
|
||||||
[ src2>> tag-mask get bitand 0 = ]
|
[ src2>> tag-mask get bitand 0 = ]
|
||||||
} 1&& ; inline
|
} 1&& ; inline
|
||||||
|
|
||||||
|
: tagged>constant ( n -- n' )
|
||||||
|
tag-bits get neg shift ; inline
|
||||||
|
|
||||||
: (rewrite-tagged-comparison) ( insn -- src1 src2 cc )
|
: (rewrite-tagged-comparison) ( insn -- src1 src2 cc )
|
||||||
[ src1>> vreg>expr in1>> vn>vreg ]
|
[ src1>> vreg>expr in1>> vn>vreg ]
|
||||||
[ src2>> tag-bits get neg shift ]
|
[ src2>> tagged>constant ]
|
||||||
[ cc>> ]
|
[ cc>> ]
|
||||||
tri ; inline
|
tri ; inline
|
||||||
|
|
||||||
|
@ -206,15 +209,20 @@ M: ##or-imm rewrite [ bitor ] \ ##or-imm combine-imm ;
|
||||||
|
|
||||||
M: ##xor-imm rewrite [ bitxor ] \ ##xor-imm combine-imm ;
|
M: ##xor-imm rewrite [ bitxor ] \ ##xor-imm combine-imm ;
|
||||||
|
|
||||||
: rewrite-add? ( insn -- ? )
|
: new-arithmetic ( obj op -- )
|
||||||
src2>> vreg-small-constant? ;
|
[
|
||||||
|
|
||||||
M: ##add rewrite
|
|
||||||
dup rewrite-add? [
|
|
||||||
[ dst>> ]
|
[ dst>> ]
|
||||||
[ src1>> ]
|
[ src1>> ]
|
||||||
[ src2>> vreg>constant ] tri \ ##add-imm new-insn
|
[ src2>> vreg>constant ] tri
|
||||||
dup number-values
|
] dip new-insn dup number-values ; inline
|
||||||
] when ;
|
|
||||||
|
|
||||||
M: ##sub rewrite constant-fold ;
|
: rewrite-arithmetic ( insn op -- ? )
|
||||||
|
over src2>> vreg-small-constant? [
|
||||||
|
new-arithmetic constant-fold
|
||||||
|
] [
|
||||||
|
drop
|
||||||
|
] if ; inline
|
||||||
|
|
||||||
|
M: ##add rewrite \ ##add-imm rewrite-arithmetic ;
|
||||||
|
|
||||||
|
M: ##sub rewrite \ ##sub-imm rewrite-arithmetic ;
|
||||||
|
|
|
@ -120,7 +120,7 @@ IN: math.matrices
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: cross ( vec1 vec2 -- vec3 ) [ i ] [ j ] [ k ] 2tri 3array ;
|
: cross ( vec1 vec2 -- vec3 ) [ [ i ] [ j ] [ k ] 2tri ] keep 3sequence ;
|
||||||
|
|
||||||
: proj ( v u -- w )
|
: proj ( v u -- w )
|
||||||
[ [ v. ] [ norm-sq ] bi / ] keep n*v ;
|
[ [ v. ] [ norm-sq ] bi / ] keep n*v ;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (C) 2008, 2009 Slava Pestov.
|
! Copyright (C) 2008, 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: functors sequences sequences.private growable
|
USING: accessors alien.c-types functors sequences sequences.private growable
|
||||||
prettyprint.custom kernel words classes math parser ;
|
prettyprint.custom kernel words classes math parser ;
|
||||||
QUALIFIED: vectors.functor
|
QUALIFIED: vectors.functor
|
||||||
IN: specialized-vectors.functor
|
IN: specialized-vectors.functor
|
||||||
|
@ -21,6 +21,8 @@ V A <A> vectors.functor:define-vector
|
||||||
|
|
||||||
M: V contract 2drop ;
|
M: V contract 2drop ;
|
||||||
|
|
||||||
|
M: V byte-length underlying>> byte-length ;
|
||||||
|
|
||||||
M: V pprint-delims drop \ V{ \ } ;
|
M: V pprint-delims drop \ V{ \ } ;
|
||||||
|
|
||||||
M: V >pprint-sequence ;
|
M: V >pprint-sequence ;
|
||||||
|
|
|
@ -163,9 +163,11 @@ M: world resize-world
|
||||||
M: world (>>dim)
|
M: world (>>dim)
|
||||||
[ call-next-method ]
|
[ call-next-method ]
|
||||||
[
|
[
|
||||||
dup handle>>
|
dup active?>> [
|
||||||
[ [ set-gl-context ] [ resize-world ] bi ]
|
dup handle>>
|
||||||
[ drop ] if
|
[ [ set-gl-context ] [ resize-world ] bi ]
|
||||||
|
[ drop ] if
|
||||||
|
] [ drop ] if
|
||||||
] bi ;
|
] bi ;
|
||||||
|
|
||||||
GENERIC: draw-world* ( world -- )
|
GENERIC: draw-world* ( world -- )
|
||||||
|
|
Loading…
Reference in New Issue