Minor robusifications

slava 2006-11-24 09:50:25 +00:00
parent 2be3433cef
commit 2d1c7f5e0f
6 changed files with 33 additions and 25 deletions

View File

@ -4,15 +4,25 @@
- list operations: what if nothing is selected? - list operations: what if nothing is selected?
- slider needs to be modelized - slider needs to be modelized
- overhaul models, set-model* is crap - overhaul models, set-model* is crap
- color picker example
- variable width word wrap - variable width word wrap
- graphical crossref tool - graphical crossref tool
- http://paste.lisp.org/display/30426 - http://paste.lisp.org/display/30426
- robustify stepper -- see if step back past a throw works
- listener: if partial parse, RETURN should insert newline
- some way of intercepting all gestures
- compiled call traces:
- should be independent of whenever the runtime was built with
-fomit-frame-pointer or not
- doesn't show #labels
- we don't know if signal handlers run with the same stack or not
- modules: core/ libs/ apps/
+ 0.88:
- menu Command: quots look dumb - menu Command: quots look dumb
- top level window positioning on ms windows - top level window positioning on ms windows
- crashes: - crashes:
- windows gcc issue
- robustify stepper -- see if step back past a throw works
- callback scheduling issue - callback scheduling issue
- httpd crash - httpd crash
- fep when closing window - fep when closing window
@ -31,16 +41,15 @@
- cross-word type inference - cross-word type inference
- ui docs - ui docs
- some kind of declarative wiring framework for ui - some kind of declarative wiring framework for ui
- compiled call traces: - if we're printing a block on multiple lines, break at some words like
- should be independent of whenever the runtime was built with set off on % # , ... and assembler opcodes
-fomit-frame-pointer or not - don't end lines with literals, shuffle words or symbols?
- doesn't show #labels - see should try to not show ; on a line by itself
- we don't know if signal handlers run with the same stack or not - IN: on its own line if the entire 'see' form doesn't fit
- growable data heap
+ ui: + ui:
- listener: if partial parse, RETURN should insert newline
- some way of intercepting all gestures
- how do we refer to command shortcuts in the docs? - how do we refer to command shortcuts in the docs?
- editor: - editor:
- autoscroll - autoscroll
@ -51,7 +60,6 @@
+ module system: + module system:
- modules: core/ libs/ apps/
- track a list of assets loaded from each module's file - track a list of assets loaded from each module's file
- C types should be words - C types should be words
- TYPEDEF: float { ... } { ... } ; ==> \ float T{ c-type ... } "c-type" swp - TYPEDEF: float { ... } { ... } ; ==> \ float T{ c-type ... } "c-type" swp
@ -76,22 +84,13 @@
- C functions returning structs by value - C functions returning structs by value
- compiled continuations - compiled continuations
+ prettyprinter:
- clean it up
- if we're printing a block on multiple lines, break at some words like
set off on % # , ... and assembler opcodes
- don't end lines with literals, shuffle words or symbols?
- see should try to not show ; on a line by itself
- IN: on its own line if the entire 'see' form doesn't fit
- don't build entire tree to print first
+ misc: + misc:
- prettyprinter: clean it up
- prettyprinter: don't build entire tree to print first
- automatic help/effects for slot accessors - automatic help/effects for slot accessors
- tuple shape changes - tuple shape changes
- should be possible to reload any source file in library - should be possible to reload any source file in library
- growable data heap
- minor GC takes too long now, we should card mark code heap - minor GC takes too long now, we should card mark code heap
- buffer-ptr should be an alien - buffer-ptr should be an alien
- swap nappend ==> nappend - swap nappend ==> nappend

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
IN: sequences IN: sequences
USING: generic kernel kernel-internals math namespaces USING: generic kernel kernel-internals math namespaces
strings vectors ; strings vectors errors ;
: head-slice ( seq n -- slice ) 0 swap rot <slice> ; : head-slice ( seq n -- slice ) 0 swap rot <slice> ;
@ -66,7 +66,9 @@ strings vectors ;
dupd (cut) >r , r> (group) dupd (cut) >r , r> (group)
] if ; ] if ;
: group ( seq n -- groups ) [ swap (group) ] { } make ; : group ( seq n -- groups )
dup 0 <= [ "Invalid group count" throw ] when
[ swap (group) ] { } make ;
: start-step ( subseq seq n -- subseq slice ) : start-step ( subseq seq n -- subseq slice )
pick length dupd + rot <slice> ; pick length dupd + rot <slice> ;

View File

@ -46,6 +46,7 @@ M: object digit> drop f ;
dup 10 < [ CHAR: 0 + ] [ 10 - CHAR: a + ] if ; dup 10 < [ CHAR: 0 + ] [ 10 - CHAR: a + ] if ;
: integer, ( num radix -- ) : integer, ( num radix -- )
dup 1 <= [ "Invalid radix" throw ] when
dup >r /mod >digit , dup 0 > dup >r /mod >digit , dup 0 >
[ r> integer, ] [ r> 2drop ] if ; [ r> integer, ] [ r> 2drop ] if ;

View File

@ -202,8 +202,6 @@ unit-test
[ 1 ] [ 1/2 { 1 2 3 } nth ] unit-test [ 1 ] [ 1/2 { 1 2 3 } nth ] unit-test
[ { } ] [ { } 0 group ] unit-test
! Pathological case ! Pathological case
[ "ihbye" ] [ "hi" <reversed> "bye" append ] unit-test [ "ihbye" ] [ "hi" <reversed> "bye" append ] unit-test
@ -223,3 +221,5 @@ unit-test
[ { 1 4 7 } ] [ "seq" get 0 <column> >array ] unit-test [ { 1 4 7 } ] [ "seq" get 0 <column> >array ] unit-test
[ ] [ "seq" get 1 <column> [ sq ] inject ] unit-test [ ] [ "seq" get 1 <column> [ sq ] inject ] unit-test
[ { 4 25 64 } ] [ "seq" get 1 <column> >array ] unit-test [ { 4 25 64 } ] [ "seq" get 1 <column> >array ] unit-test
[ { 1 2 3 } 0 group ] unit-test-fails

View File

@ -120,3 +120,7 @@ unit-test
! { 1.0/0.0 -1.0/0.0 0.0/0.0 } ! { 1.0/0.0 -1.0/0.0 0.0/0.0 }
! [ dup number>string string>number = ] all? ! [ dup number>string string>number = ] all?
! ] unit-test ! ] unit-test
[ 1 1 >base ] unit-test-fails
[ 1 0 >base ] unit-test-fails
[ 1 -1 >base ] unit-test-fails

View File

@ -252,6 +252,8 @@ INLINE void maybe_gc(CELL a)
{ {
if(nursery.here + a + ALLOT_BUFFER_ZONE > nursery.limit) if(nursery.here + a + ALLOT_BUFFER_ZONE > nursery.limit)
garbage_collection(NURSERY,false); garbage_collection(NURSERY,false);
if(nursery.here + a + ALLOT_BUFFER_ZONE > nursery.limit)
critical_error("Out of memory in maybe_gc",0);
} }
INLINE void *allot(CELL a) INLINE void *allot(CELL a)