Merge branch 'master' of factorcode.org:/git/factor into native-image-loader

db4
Joe Groff 2010-07-07 14:38:34 -07:00
commit 785907543f
4 changed files with 34 additions and 6 deletions

View File

@ -5,7 +5,7 @@ quotations classes classes.algebra classes.tuple.private
continuations growable namespaces hints alien.accessors continuations growable namespaces hints alien.accessors
compiler.tree.builder compiler.tree.optimizer sequences.deep compiler.tree.builder compiler.tree.optimizer sequences.deep
compiler.test definitions generic.single shuffle math.order compiler.test definitions generic.single shuffle math.order
compiler.cfg.debugger ; compiler.cfg.debugger classes.struct alien.syntax alien.data ;
IN: compiler.tests.optimizer IN: compiler.tests.optimizer
GENERIC: xyz ( obj -- obj ) GENERIC: xyz ( obj -- obj )
@ -447,3 +447,14 @@ TUPLE: grid-mesh-tuple { length read-only } { step read-only } ;
GENERIC: bad-push-test-case ( a -- b ) GENERIC: bad-push-test-case ( a -- b )
M: object bad-push-test-case "foo" throw ; inline M: object bad-push-test-case "foo" throw ; inline
[ { 1 } "bar" ] [ { 1 } [ [ [ [ bad-push-test-case ] [ "bar" throw ] recover ] attempt-all f ] [ ] recover ] compile-call ] unit-test [ { 1 } "bar" ] [ { 1 } [ [ [ [ bad-push-test-case ] [ "bar" throw ] recover ] attempt-all f ] [ ] recover ] compile-call ] unit-test
STRUCT: BitmapData { Scan0 void* } ;
[ ALIEN: 123 ] [
[
{ BitmapData }
[ BitmapData memory>struct ALIEN: 123 >>Scan0 drop ]
[ clone ]
with-out-parameters Scan0>>
] compile-call
] unit-test

View File

@ -288,14 +288,12 @@ generic-comparison-ops [
literal>> dup tuple-class? [ drop tuple ] unless <class-info> literal>> dup tuple-class? [ drop tuple ] unless <class-info>
] "outputs" set-word-prop ] "outputs" set-word-prop
! the output of clone has the same type as the input ! the output of (clone) has the same type as the input
: cloned-value-info ( value-info -- value-info' ) : cloned-value-info ( value-info -- value-info' )
clone f >>literal f >>literal? clone f >>literal f >>literal?
[ [ dup [ cloned-value-info ] when ] map ] change-slots ; [ [ dup [ cloned-value-info ] when ] map ] change-slots ;
{ clone (clone) } [ \ (clone) [ cloned-value-info ] "outputs" set-word-prop
[ cloned-value-info ] "outputs" set-word-prop
] each
\ slot [ \ slot [
dup literal?>> dup literal?>>

View File

@ -4,7 +4,8 @@ USING: math kernel io sequences io.buffers io.timeouts generic
byte-vectors system io.encodings math.order io.backend byte-vectors system io.encodings math.order io.backend
continuations classes byte-arrays namespaces splitting grouping continuations classes byte-arrays namespaces splitting grouping
dlists alien alien.c-types assocs io.encodings.binary summary dlists alien alien.c-types assocs io.encodings.binary summary
accessors destructors combinators fry specialized-arrays ; accessors destructors combinators fry specialized-arrays
locals ;
SPECIALIZED-ARRAY: uchar SPECIALIZED-ARRAY: uchar
IN: io.ports IN: io.ports
@ -148,12 +149,21 @@ M: output-port stream-tell ( stream -- n )
[ check-disposed ] [ check-disposed ]
[ [ handle>> tell-handle ] [ buffer>> buffer-length ] bi + ] bi ; [ [ handle>> tell-handle ] [ buffer>> buffer-length ] bi + ] bi ;
:: do-seek-relative ( n seek-type stream -- n seek-type stream )
! seek-relative needs special handling here, because of the
! buffer.
seek-type seek-relative eq?
[ n stream stream-tell + seek-absolute ] [ n seek-type ] if
stream ;
M: input-port stream-seek ( n seek-type stream -- ) M: input-port stream-seek ( n seek-type stream -- )
do-seek-relative
[ check-disposed ] [ check-disposed ]
[ buffer>> 0 swap buffer-reset ] [ buffer>> 0 swap buffer-reset ]
[ handle>> seek-handle ] tri ; [ handle>> seek-handle ] tri ;
M: output-port stream-seek ( n seek-type stream -- ) M: output-port stream-seek ( n seek-type stream -- )
do-seek-relative
[ check-disposed ] [ check-disposed ]
[ stream-flush ] [ stream-flush ]
[ handle>> seek-handle ] tri ; [ handle>> seek-handle ] tri ;

View File

@ -245,6 +245,15 @@ CONSTANT: pt-array-1
] with-file-reader ] with-file-reader
] must-fail ] must-fail
[ ] [
"resource:misc/icons/Factor_48x48.png" binary [
44 read drop
tell-input 44 assert=
-44 seek-relative seek-input
tell-input 0 assert=
] with-file-reader
] unit-test
[ [
"non-string-error" unique-file ascii [ "non-string-error" unique-file ascii [
{ } write { } write