- type inference\r
- handle odd base cases, with code after ifte\r
- handle recursion with when, when* etc\r
-- alien-call need special nodes\r
\r
+ linearizer/generator:\r
\r
- save code in image\r
- compile word twice; no more 'cannot compile' error!\r
\r
-+ oop:
-
-- union metaclass
-- make M: order-independent
-- bootstrapping generic words
-- 2generic
-- move generic, 2generic from kernel vocabulary
-- generic = hashcode and math ops
-
++ oop:\r
+\r
+- union metaclass\r
+- make M: order-independent\r
+- bootstrapping generic words\r
+- 2generic\r
+- move generic, 2generic from kernel vocabulary\r
+- generic = hashcode and math ops\r
+\r
+ ffi:\r
\r
+- port ffi to new compiler\r
- is signed -vs- unsigned pointers an issue?\r
- bitfields in C structs\r
- SDL_Rect** type\r
+++ /dev/null
-! :folding=indent:collapseFolds=1:
-
-! $Id$
-!
-! Copyright (C) 2004 Slava Pestov.
-!
-! Redistribution and use in source and binary forms, with or without
-! modification, are permitted provided that the following conditions are met:
-!
-! 1. Redistributions of source code must retain the above copyright notice,
-! this list of conditions and the following disclaimer.
-!
-! 2. Redistributions in binary form must reproduce the above copyright notice,
-! this list of conditions and the following disclaimer in the documentation
-! and/or other materials provided with the distribution.
-!
-! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-IN: alien
-USE: compiler
-USE: kernel
-USE: lists
-USE: math
-USE: namespaces
-
-: SELF-CALL ( name -- )
- #! Call named C function in Factor interpreter executable.
- dlsym-self CALL JUMP-FIXUP ;
-
-: UNBOX ( name -- )
- #! Move top of datastack to C stack.
- SELF-CALL EAX PUSH-R ;
-
-: BOX ( name -- )
- #! Move EAX to datastack.
- EAX PUSH-R SELF-CALL 4 ESP R+I ;
-
-: PARAMETERS ( params -- count )
- #! Generate code for boxing a list of C types.
- #! Return amount stack must be unwound by.
- 0 swap [
- c-type [
- "unboxer" get UNBOX "width" get cell align +
- ] bind
- ] each ;
-
-: CLEANUP ( amount -- )
- dup 0 = [ drop ] [ ESP R+I ] ifte ;
-
-: RETURNS ( type -- )
- dup "void" = [
- drop
- ] [
- c-type [ "boxer" get ] bind BOX
- ] ifte ;
#! Jump table entries are absolute addresses.
compiled-offset 0 compile-cell 0 defer-xt
] "generator" set-word-property
+
+! TODO: to complete alien compilation, must provide generators
+! for #c-call, #box, #unbox and #cleanup.
+!
+! : UNBOX ( name -- )
+! #! Move top of datastack to C stack.
+! SELF-CALL EAX PUSH-R ;
+!
+! : BOX ( name -- )
+! #! Move EAX to datastack.
+! EAX PUSH-R SELF-CALL 4 ESP R+I ;
+!
+! : CLEANUP ( amount -- )
+! dup 0 = [ drop ] [ ESP R+I ] ifte ;