2005-04-23 19:34:06 -04:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
IN: compiler
|
|
|
|
USING: alien assembler inference kernel kernel-internals lists
|
|
|
|
math memory namespaces words ;
|
|
|
|
|
|
|
|
\ alien-invoke [
|
2005-05-07 22:39:00 -04:00
|
|
|
uncons load-library compile-c-call
|
2005-04-23 19:34:06 -04:00
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
\ alien-global [
|
2005-05-05 03:12:37 -04:00
|
|
|
uncons load-library 2dup dlsym EAX swap unit MOV f rel-dlsym
|
2005-04-23 19:34:06 -04:00
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#parameters [
|
|
|
|
drop
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-05-04 22:34:55 -04:00
|
|
|
: UNBOX cdr dup f dlsym CALL f t rel-dlsym ;
|
|
|
|
|
2005-04-23 19:34:06 -04:00
|
|
|
#unbox [
|
2005-05-04 22:34:55 -04:00
|
|
|
UNBOX EAX PUSH
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#unbox-float [
|
|
|
|
UNBOX ESP 4 SUB [ ESP ] FSTPS
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#unbox-double [
|
|
|
|
UNBOX ESP 8 SUB [ ESP ] FSTPL
|
2005-04-23 19:34:06 -04:00
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#parameter [
|
|
|
|
#! x86 does not pass parameters in registers
|
|
|
|
drop
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-05-04 22:34:55 -04:00
|
|
|
: BOX dup f dlsym CALL f t rel-dlsym EAX POP ;
|
|
|
|
|
2005-04-23 19:34:06 -04:00
|
|
|
#box [
|
2005-05-04 22:34:55 -04:00
|
|
|
EAX PUSH BOX
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#box-float [
|
|
|
|
ESP 4 SUB [ ESP ] FSTPS BOX
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#box-double [
|
|
|
|
ESP 8 SUB [ ESP ] FSTPL BOX ECX POP
|
2005-04-23 19:34:06 -04:00
|
|
|
] "generator" set-word-prop
|
|
|
|
|
|
|
|
#cleanup [
|
|
|
|
dup 0 = [ drop ] [ ESP swap ADD ] ifte
|
|
|
|
] "generator" set-word-prop
|