Merge branch 'master' of http://factorcode.org/git/factor into db

db4
Doug Coleman 2009-03-25 23:01:05 -05:00
commit 6ca02e9b37
12 changed files with 90 additions and 28 deletions

View File

@ -1,5 +1,5 @@
IN: compiler.tree.debugger.tests IN: compiler.tree.debugger.tests
USING: compiler.tree.debugger tools.test sorting sequences io ; USING: compiler.tree.debugger tools.test sorting sequences io math.order ;
\ optimized. must-infer \ optimized. must-infer
\ optimizer-report. must-infer \ optimizer-report. must-infer

View File

@ -1 +0,0 @@
Slava Pestov

View File

@ -1,16 +0,0 @@
USING: dlists ui.gadgets ui.gadgets.private
kernel ui namespaces io.streams.string io ;
IN: tools.test.ui
! We can't print to output-stream here because that might be a pane
! stream, and our graft-queue rebinding here would be captured
! by code adding children to the pane...
: with-grafted-gadget ( gadget quot -- )
[
<dlist> \ graft-queue [
over
graft notify-queued
dip
ungraft notify-queued
] with-variable
] with-string-writer print ;

View File

@ -2,9 +2,23 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays colors.constants combinators kernel USING: accessors arrays colors.constants combinators kernel
opengl sequences ui ui.baseline-alignment ui.gadgets opengl sequences ui ui.baseline-alignment ui.gadgets
ui.gadgets.buttons ui.gadgets.labels ui.pens ui.render ui.text ; ui.gadgets.buttons ui.gadgets.labels ui.pens ui.render ui.text
ui.gadgets.private dlists namespaces io.streams.string io ;
IN: ui.gadgets.debug IN: ui.gadgets.debug
! We can't print to output-stream here because that might be a pane
! stream, and our graft-queue rebinding here would be captured
! by code adding children to the pane...
: with-grafted-gadget ( gadget quot -- )
[
<dlist> \ graft-queue set
<dlist> \ layout-queue set
over
graft notify-queued
dip
ungraft notify-queued
] with-string-writer print ; inline
TUPLE: baseline-gadget < gadget baseline cap-height ; TUPLE: baseline-gadget < gadget baseline cap-height ;
M: baseline-gadget baseline baseline>> ; M: baseline-gadget baseline baseline>> ;

View File

@ -1,6 +1,6 @@
USING: accessors ui.gadgets.editors tools.test kernel io USING: accessors ui.gadgets.editors tools.test kernel io
io.streams.plain definitions namespaces ui.gadgets io.streams.plain definitions namespaces ui.gadgets
ui.gadgets.grids prettyprint documents ui.gestures tools.test.ui ui.gadgets.grids prettyprint documents ui.gestures ui.gadgets.debug
models documents.elements ui.gadgets.scrollers ui.gadgets.line-support models documents.elements ui.gadgets.scrollers ui.gadgets.line-support
sequences ; sequences ;
IN: ui.gadgets.editors.tests IN: ui.gadgets.editors.tests

View File

@ -135,9 +135,7 @@ SYMBOL: ui-notify-flag
: forget-pref-dim ( gadget -- ) f >>pref-dim drop ; : forget-pref-dim ( gadget -- ) f >>pref-dim drop ;
: ui-state ( symbol -- value ) get [ "UI not running" throw ] unless* ; : layout-queue ( -- queue ) \ layout-queue get ;
: layout-queue ( -- queue ) \ layout-queue ui-state ;
: layout-later ( gadget -- ) : layout-later ( gadget -- )
#! When unit testing gadgets without the UI running, the #! When unit testing gadgets without the UI running, the
@ -216,7 +214,8 @@ M: gadget ungraft* drop ;
<PRIVATE <PRIVATE
: graft-queue ( -- dlist ) \ graft-queue ui-state ; : graft-queue ( -- dlist )
\ graft-queue get [ "UI not running" throw ] unless* ;
: unqueue-graft ( gadget -- ) : unqueue-graft ( gadget -- )
[ graft-node>> graft-queue delete-node ] [ graft-node>> graft-queue delete-node ]

View File

@ -1,7 +1,7 @@
USING: alien ui.gadgets.panes ui.gadgets namespaces USING: alien ui.gadgets.panes ui.gadgets namespaces
kernel sequences io io.styles io.streams.string tools.test kernel sequences io io.styles io.streams.string tools.test
prettyprint definitions help help.syntax help.markup prettyprint definitions help help.syntax help.markup
help.stylesheet splitting tools.test.ui models math summary help.stylesheet splitting ui.gadgets.debug models math summary
inspector accessors help.topics see ; inspector accessors help.topics see ;
IN: ui.gadgets.panes.tests IN: ui.gadgets.panes.tests

View File

@ -1,7 +1,7 @@
USING: ui.gadgets ui.gadgets.scrollers namespaces tools.test USING: ui.gadgets ui.gadgets.scrollers namespaces tools.test
kernel models models.product models.range ui.gadgets.viewports kernel models models.product models.range ui.gadgets.viewports
ui.gadgets.labels ui.gadgets.grids ui.gadgets.sliders math ui.gadgets.labels ui.gadgets.grids ui.gadgets.sliders math
math.vectors arrays sequences tools.test.ui math.rectangles math.vectors arrays sequences ui.gadgets.debug math.rectangles
accessors ui.gadgets.buttons ui.gadgets.packs accessors ui.gadgets.buttons ui.gadgets.packs
ui.gadgets.scrollers.private ; ui.gadgets.scrollers.private ;
IN: ui.gadgets.scrollers.tests IN: ui.gadgets.scrollers.tests

View File

@ -1,5 +1,5 @@
IN: ui.tools.browser.tests IN: ui.tools.browser.tests
USING: tools.test tools.test.ui ui.tools.browser math ; USING: tools.test ui.gadgets.debug ui.tools.browser math ;
\ <browser-gadget> must-infer \ <browser-gadget> must-infer
[ ] [ \ + <browser-gadget> [ ] with-grafted-gadget ] unit-test [ ] [ \ + <browser-gadget> [ ] with-grafted-gadget ] unit-test

View File

@ -1,7 +1,7 @@
USING: continuations documents USING: continuations documents
ui.tools.listener hashtables kernel namespaces parser sequences ui.tools.listener hashtables kernel namespaces parser sequences
tools.test ui.commands ui.gadgets ui.gadgets.editors tools.test ui.commands ui.gadgets ui.gadgets.editors
ui.gadgets.panes vocabs words tools.test.ui slots.private ui.gadgets.panes vocabs words ui.gadgets.debug slots.private
threads arrays generic threads accessors listener math threads arrays generic threads accessors listener math
calendar concurrency.promises io ui.tools.common ; calendar concurrency.promises io ui.tools.common ;
IN: ui.tools.listener.tests IN: ui.tools.listener.tests

View File

@ -0,0 +1 @@
Slava Pestov

View File

@ -0,0 +1,65 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: slides help.markup ;
IN: chicago-talk
CONSTANT: chicago-slides
{
{ $slide "factor"
{ $url "http://factorcode.org" }
}
{ $slide "goals"
"high level language"
"expressive and extensible"
"reasonable performance"
"interactive development with arbitrary redefinition"
"standalone app deployment (strip out compiler and REPL)"
}
{ $slide "challenges"
"higher-order functions"
"dynamic typing"
"memory allocation"
"float boxing/unboxing"
"integer overflow checks"
"user-defined abstractions"
}
{ $slide "implementation"
"VM: 12 kloc of C, library: >100 kloc of Factor"
"generational copying garbage collection, card marking write barrier"
"full continuations, tail calls"
"simple non-optimizing “bootstrap” compiler"
"optimizing compiler"
}
{ $slide "optimizing compiler"
"about 12,000 lines of Factor code"
"targets x86-32, x86-64, PowerPC"
"factor code ⇒ high-level SSA ⇒ low-level SSA ⇒ machine code"
}
{ $slide "high-level optimizer"
"macro expansion, defunctionalization"
"type and interval inference, sparse conditional constant propagation, method inlining"
"escape analysis and tuple unboxing"
}
{ $slide "low-level optimizer"
"alias analysis, value numbering, write barrier elimination"
"linear scan register allocation"
}
}
: chicago-talk ( -- ) chicago-slides slides-window ;
MAIN: chicago-talk