Merge branch 'master' of git://factorcode.org/git/factor
commit
2d0483b3df
|
@ -49,9 +49,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
|
||||||
|
|
||||||
|
@ -203,15 +206,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 ;
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
USING: bson.reader bson.writer byte-arrays io.encodings.binary
|
||||||
|
io.streams.byte-array tools.test literals calendar kernel math ;
|
||||||
|
|
||||||
|
IN: bson.tests
|
||||||
|
|
||||||
|
: turnaround ( value -- value )
|
||||||
|
assoc>bv >byte-array binary [ H{ } stream>assoc ] with-byte-reader ;
|
||||||
|
|
||||||
|
M: timestamp equal? ( obj1 obj2 -- ? )
|
||||||
|
[ timestamp>millis ] bi@ = ;
|
||||||
|
|
||||||
|
[ H{ { "a" "a string" } } ] [ H{ { "a" "a string" } } turnaround ] unit-test
|
||||||
|
|
||||||
|
[ H{ { "a" "a string" } { "b" H{ { "a" "a string" } } } } ]
|
||||||
|
[ H{ { "a" "a string" } { "b" H{ { "a" "a string" } } } } turnaround ] unit-test
|
||||||
|
|
||||||
|
[ H{ { "a list" { 1 2.234 "hello world" } } } ]
|
||||||
|
[ H{ { "a list" { 1 2.234 "hello world" } } } turnaround ] unit-test
|
||||||
|
|
||||||
|
[ H{ { "a quotation" [ 1 2 + ] } } ]
|
||||||
|
[ H{ { "a quotation" [ 1 2 + ] } } turnaround ] unit-test
|
||||||
|
|
||||||
|
[ H{ { "a date" T{ timestamp { year 2009 }
|
||||||
|
{ month 7 }
|
||||||
|
{ day 11 }
|
||||||
|
{ hour 11 }
|
||||||
|
{ minute 8 }
|
||||||
|
{ second 40+15437/200000 }
|
||||||
|
{ gmt-offset T{ duration { hour 2 } } } } } }
|
||||||
|
]
|
||||||
|
[ H{ { "a date" T{ timestamp { year 2009 }
|
||||||
|
{ month 7 }
|
||||||
|
{ day 11 }
|
||||||
|
{ hour 11 }
|
||||||
|
{ minute 8 }
|
||||||
|
{ second 40+15437/200000 }
|
||||||
|
{ gmt-offset T{ duration { hour 2 } } } } } } turnaround
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ H{ { "nested" H{ { "a" "a string" } { "b" H{ { "a" "a string" } } } } }
|
||||||
|
{ "array" H{ { "a list" { 1 2.234 "hello world" } } } }
|
||||||
|
{ "quot" [ 1 2 + ] } }
|
||||||
|
]
|
||||||
|
[ H{ { "nested" H{ { "a" "a string" } { "b" H{ { "a" "a string" } } } } }
|
||||||
|
{ "array" H{ { "a list" { 1 2.234 "hello world" } } } }
|
||||||
|
{ "quot" [ 1 2 + ] } } turnaround ] unit-test
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue