internal reorganization of bytecode compiler and other bytecode tasks
--- organize by task instead of (weakly) by bytecode form; source files are smaller with fewer global functions and datatypes
This commit is contained in:
parent
153d23ecf0
commit
01193652b0
|
@ -45,6 +45,8 @@ OBJS = salloc.@LTO@ \
|
|||
bool.@LTO@ \
|
||||
builtin.@LTO@ \
|
||||
char.@LTO@ \
|
||||
compenv.@LTO@ \
|
||||
compile.@LTO@ \
|
||||
complex.@LTO@ \
|
||||
dynext.@LTO@ \
|
||||
env.@LTO@ \
|
||||
|
@ -60,9 +62,11 @@ OBJS = salloc.@LTO@ \
|
|||
jitcall.@LTO@ \
|
||||
jitcommon.@LTO@ \
|
||||
jitinline.@LTO@ \
|
||||
jitprep.@LTO@ \
|
||||
jitstack.@LTO@ \
|
||||
jitstate.@LTO@ \
|
||||
list.@LTO@ \
|
||||
marshal.@LTO@ \
|
||||
module.@LTO@ \
|
||||
mzrt.@LTO@ \
|
||||
network.@LTO@ \
|
||||
|
@ -70,22 +74,25 @@ OBJS = salloc.@LTO@ \
|
|||
number.@LTO@ \
|
||||
numcomp.@LTO@ \
|
||||
numstr.@LTO@ \
|
||||
places.@LTO@ \
|
||||
optimize.@LTO@ \
|
||||
place.@LTO@ \
|
||||
port.@LTO@ \
|
||||
portfun.@LTO@ \
|
||||
print.@LTO@ \
|
||||
rational.@LTO@ \
|
||||
read.@LTO@ \
|
||||
regexp.@LTO@ \
|
||||
resolve.@LTO@ \
|
||||
sema.@LTO@ \
|
||||
setjmpup.@LTO@ \
|
||||
sfs.@LTO@ \
|
||||
string.@LTO@ \
|
||||
struct.@LTO@ \
|
||||
stxobj.@LTO@ \
|
||||
symbol.@LTO@ \
|
||||
syntax.@LTO@ \
|
||||
thread.@LTO@ \
|
||||
type.@LTO@ \
|
||||
validate.@LTO@ \
|
||||
vector.@LTO@ \
|
||||
$(@FOREIGN_IF_USED@_OBJ)
|
||||
|
||||
|
@ -97,6 +104,8 @@ XSRCS = $(XSRCDIR)/salloc.c \
|
|||
$(XSRCDIR)/bool.c \
|
||||
$(XSRCDIR)/builtin.c \
|
||||
$(XSRCDIR)/char.c \
|
||||
$(XSRCDIR)/compenv.c \
|
||||
$(XSRCDIR)/compile.c \
|
||||
$(XSRCDIR)/complex.c \
|
||||
$(XSRCDIR)/dynext.c \
|
||||
$(XSRCDIR)/env.c \
|
||||
|
@ -112,31 +121,36 @@ XSRCS = $(XSRCDIR)/salloc.c \
|
|||
$(XSRCDIR)/jitcall.c \
|
||||
$(XSRCDIR)/jitcommon.c \
|
||||
$(XSRCDIR)/jitinline.c \
|
||||
$(XSRCDIR)/jitprep.c \
|
||||
$(XSRCDIR)/jitstack.c \
|
||||
$(XSRCDIR)/jitstate.c \
|
||||
$(XSRCDIR)/list.c \
|
||||
$(XSRCDIR)/marshal.c \
|
||||
$(XSRCDIR)/module.c \
|
||||
$(XSRCDIR)/network.c \
|
||||
$(XSRCDIR)/numarith.c \
|
||||
$(XSRCDIR)/numcomp.c \
|
||||
$(XSRCDIR)/number.c \
|
||||
$(XSRCDIR)/numstr.c \
|
||||
$(XSRCDIR)/places.c \
|
||||
$(XSRCDIR)/optimize.c \
|
||||
$(XSRCDIR)/place.c \
|
||||
$(XSRCDIR)/port.c \
|
||||
$(XSRCDIR)/portfun.c \
|
||||
$(XSRCDIR)/print.c \
|
||||
$(XSRCDIR)/rational.c \
|
||||
$(XSRCDIR)/read.c \
|
||||
$(XSRCDIR)/regexp.c \
|
||||
$(XSRCDIR)/resolve.c \
|
||||
$(XSRCDIR)/sema.c \
|
||||
$(XSRCDIR)/setjmpup.c \
|
||||
$(XSRCDIR)/sfs.c \
|
||||
$(XSRCDIR)/string.c \
|
||||
$(XSRCDIR)/struct.c \
|
||||
$(XSRCDIR)/stxobj.c \
|
||||
$(XSRCDIR)/symbol.c \
|
||||
$(XSRCDIR)/syntax.c \
|
||||
$(XSRCDIR)/thread.c \
|
||||
$(XSRCDIR)/type.c \
|
||||
$(XSRCDIR)/validate.c \
|
||||
$(XSRCDIR)/vector.c \
|
||||
$(@FOREIGN_IFUSED@_C) \
|
||||
$(XSRCDIR)/main.c
|
||||
|
@ -183,6 +197,10 @@ $(XSRCDIR)/builtin.c: ../src/builtin.@LTO@ $(XFORMDEP)
|
|||
$(XFORM) $(XSRCDIR)/builtin.c $(SRCDIR)/builtin.c
|
||||
$(XSRCDIR)/char.c: ../src/char.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/char.c $(SRCDIR)/char.c
|
||||
$(XSRCDIR)/compenv.c: ../src/compenv.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/compenv.c $(SRCDIR)/compenv.c
|
||||
$(XSRCDIR)/compile.c: ../src/compile.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/compile.c $(SRCDIR)/compile.c
|
||||
$(XSRCDIR)/complex.c: ../src/complex.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/complex.c $(SRCDIR)/complex.c
|
||||
$(XSRCDIR)/dynext.c: ../src/dynext.@LTO@ $(XFORMDEP)
|
||||
|
@ -213,10 +231,14 @@ $(XSRCDIR)/jitcommon.c: ../src/jitcommon.@LTO@ $(XFORMDEP) $(LIGHTNINGDEP)
|
|||
$(XFORM) $(XSRCDIR)/jitcommon.c $(SRCDIR)/jitcommon.c
|
||||
$(XSRCDIR)/jitinline.c: ../src/jitinline.@LTO@ $(XFORMDEP) $(LIGHTNINGDEP)
|
||||
$(XFORM) $(XSRCDIR)/jitinline.c $(SRCDIR)/jitinline.c
|
||||
$(XSRCDIR)/jitprep.c: ../src/jitprep.@LTO@ $(XFORMDEP) $(LIGHTNINGDEP)
|
||||
$(XFORM) $(XSRCDIR)/jitprep.c $(SRCDIR)/jitprep.c
|
||||
$(XSRCDIR)/jitstack.c: ../src/jitstack.@LTO@ $(XFORMDEP) $(LIGHTNINGDEP)
|
||||
$(XFORM) $(XSRCDIR)/jitstack.c $(SRCDIR)/jitstack.c
|
||||
$(XSRCDIR)/jitstate.c: ../src/jitstate.@LTO@ $(XFORMDEP) $(LIGHTNINGDEP)
|
||||
$(XFORM) $(XSRCDIR)/jitstate.c $(SRCDIR)/jitstate.c
|
||||
$(XSRCDIR)/marshal.c: ../src/marshal.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/marshal.c $(SRCDIR)/marshal.c
|
||||
$(XSRCDIR)/module.c: ../src/module.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/module.c $(SRCDIR)/module.c
|
||||
$(XSRCDIR)/list.c: ../src/list.@LTO@ $(XFORMDEP)
|
||||
|
@ -231,8 +253,10 @@ $(XSRCDIR)/numcomp.c: ../src/numcomp.@LTO@ $(XFORMDEP)
|
|||
$(XFORM) $(XSRCDIR)/numcomp.c $(SRCDIR)/numcomp.c
|
||||
$(XSRCDIR)/numstr.c: ../src/numstr.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/numstr.c $(SRCDIR)/numstr.c
|
||||
$(XSRCDIR)/places.c: ../src/places.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/places.c $(SRCDIR)/places.c
|
||||
$(XSRCDIR)/optimize.c: ../src/optimize.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/optimize.c $(SRCDIR)/optimize.c
|
||||
$(XSRCDIR)/place.c: ../src/place.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/place.c $(SRCDIR)/place.c
|
||||
$(XSRCDIR)/port.c: ../src/port.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/port.c $(SRCDIR)/port.c
|
||||
$(XSRCDIR)/portfun.c: ../src/portfun.@LTO@ $(XFORMDEP)
|
||||
|
@ -245,16 +269,18 @@ $(XSRCDIR)/read.c: ../src/read.@LTO@ $(XFORMDEP)
|
|||
$(XFORM) $(XSRCDIR)/read.c $(SRCDIR)/read.c
|
||||
$(XSRCDIR)/regexp.c: ../src/regexp.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/regexp.c $(SRCDIR)/regexp.c
|
||||
$(XSRCDIR)/resolve.c: ../src/resolve.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/resolve.c $(SRCDIR)/resolve.c
|
||||
$(XSRCDIR)/sema.c: ../src/sema.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/sema.c $(SRCDIR)/sema.c
|
||||
$(XSRCDIR)/setjmpup.c: ../src/setjmpup.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/setjmpup.c $(SRCDIR)/setjmpup.c
|
||||
$(XSRCDIR)/sfs.c: ../src/sfs.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/sfs.c $(SRCDIR)/sfs.c
|
||||
$(XSRCDIR)/string.c: ../src/string.@LTO@ $(XFORMDEP)
|
||||
$(XFORM_SETUP) --cpp "$(CPP) -I../src $(CPPFLAGS)" -o $(XSRCDIR)/string.c $(SRCDIR)/string.c
|
||||
$(XSRCDIR)/struct.c: ../src/struct.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/struct.c $(SRCDIR)/struct.c
|
||||
$(XSRCDIR)/stxobj.c: ../src/stxobj.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/stxobj.c $(SRCDIR)/stxobj.c
|
||||
$(XSRCDIR)/symbol.c: ../src/symbol.@LTO@ $(XFORMDEP) $(SRCDIR)/mzrt.h
|
||||
$(XFORM) $(XSRCDIR)/symbol.c $(SRCDIR)/symbol.c
|
||||
$(XSRCDIR)/syntax.c: ../src/syntax.@LTO@ $(XFORMDEP)
|
||||
|
@ -263,6 +289,8 @@ $(XSRCDIR)/thread.c: ../src/thread.@LTO@ $(XFORMDEP)
|
|||
$(XFORM) $(XSRCDIR)/thread.c $(SRCDIR)/thread.c
|
||||
$(XSRCDIR)/type.c: ../src/type.@LTO@ $(XFORMDEP) $(MZCLPFDEP)
|
||||
$(XFORM) $(XSRCDIR)/type.c $(SRCDIR)/type.c
|
||||
$(XSRCDIR)/validate.c: ../src/validate.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/validate.c $(SRCDIR)/validate.c
|
||||
$(XSRCDIR)/vector.c: ../src/vector.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(XSRCDIR)/vector.c $(SRCDIR)/vector.c
|
||||
$(XSRCDIR)/foreign.c: ../../foreign/foreign.@LTO@ $(XFORMDEP)
|
||||
|
@ -280,6 +308,10 @@ builtin.@LTO@: $(XSRCDIR)/builtin.c
|
|||
$(CC) $(CFLAGS) -c $(XSRCDIR)/builtin.c -o builtin.@LTO@
|
||||
char.@LTO@: $(XSRCDIR)/char.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/char.c -o char.@LTO@
|
||||
compenv.@LTO@: $(XSRCDIR)/compenv.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/compenv.c -o compenv.@LTO@
|
||||
compile.@LTO@: $(XSRCDIR)/compile.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/compile.c -o compile.@LTO@
|
||||
complex.@LTO@: $(XSRCDIR)/complex.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/complex.c -o complex.@LTO@
|
||||
dynext.@LTO@: $(XSRCDIR)/dynext.c
|
||||
|
@ -310,12 +342,16 @@ jitcommon.@LTO@: $(XSRCDIR)/jitcommon.c
|
|||
$(CC) $(CFLAGS) -c $(XSRCDIR)/jitcommon.c -o jitcommon.@LTO@
|
||||
jitinline.@LTO@: $(XSRCDIR)/jitinline.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/jitinline.c -o jitinline.@LTO@
|
||||
jitprep.@LTO@: $(XSRCDIR)/jitprep.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/jitprep.c -o jitprep.@LTO@
|
||||
jitstack.@LTO@: $(XSRCDIR)/jitstack.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/jitstack.c -o jitstack.@LTO@
|
||||
jitstate.@LTO@: $(XSRCDIR)/jitstate.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/jitstate.c -o jitstate.@LTO@
|
||||
list.@LTO@: $(XSRCDIR)/list.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/list.c -o list.@LTO@
|
||||
marshal.@LTO@: $(XSRCDIR)/marshal.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/marshal.c -o marshal.@LTO@
|
||||
module.@LTO@: $(XSRCDIR)/module.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/module.c -o module.@LTO@
|
||||
mzrt.@LTO@: $(SRCDIR)/mzrt.c $(SRCDIR)/mzrt.h $(XFORMDEP)
|
||||
|
@ -330,8 +366,10 @@ numcomp.@LTO@: $(XSRCDIR)/numcomp.c
|
|||
$(CC) $(CFLAGS) -c $(XSRCDIR)/numcomp.c -o numcomp.@LTO@
|
||||
numstr.@LTO@: $(XSRCDIR)/numstr.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/numstr.c -o numstr.@LTO@
|
||||
places.@LTO@: $(XSRCDIR)/places.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/places.c -o places.@LTO@
|
||||
optimize.@LTO@: $(XSRCDIR)/optimize.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/optimize.c -o optimize.@LTO@
|
||||
place.@LTO@: $(XSRCDIR)/place.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/place.c -o place.@LTO@
|
||||
port.@LTO@: $(XSRCDIR)/port.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/port.c -o port.@LTO@
|
||||
portfun.@LTO@: $(XSRCDIR)/portfun.c
|
||||
|
@ -344,16 +382,18 @@ read.@LTO@: $(XSRCDIR)/read.c
|
|||
$(CC) $(CFLAGS) -c $(XSRCDIR)/read.c -o read.@LTO@
|
||||
regexp.@LTO@: $(XSRCDIR)/regexp.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/regexp.c -o regexp.@LTO@
|
||||
resolve.@LTO@: $(XSRCDIR)/resolve.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/resolve.c -o resolve.@LTO@
|
||||
sema.@LTO@: $(XSRCDIR)/sema.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/sema.c -o sema.@LTO@
|
||||
setjmpup.@LTO@: $(XSRCDIR)/setjmpup.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/setjmpup.c -o setjmpup.@LTO@
|
||||
sfs.@LTO@: $(XSRCDIR)/sfs.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/sfs.c -o sfs.@LTO@
|
||||
string.@LTO@: $(XSRCDIR)/string.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/string.c -o string.@LTO@
|
||||
struct.@LTO@: $(XSRCDIR)/struct.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/struct.c -o struct.@LTO@
|
||||
stxobj.@LTO@: $(XSRCDIR)/stxobj.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/stxobj.c -o stxobj.@LTO@
|
||||
symbol.@LTO@: $(XSRCDIR)/symbol.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/symbol.c -o symbol.@LTO@
|
||||
syntax.@LTO@: $(XSRCDIR)/syntax.c
|
||||
|
@ -362,6 +402,8 @@ thread.@LTO@: $(XSRCDIR)/thread.c
|
|||
$(CC) $(CFLAGS) -c $(XSRCDIR)/thread.c -o thread.@LTO@
|
||||
type.@LTO@: $(XSRCDIR)/type.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/type.c -o type.@LTO@
|
||||
validate.@LTO@: $(XSRCDIR)/validate.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/validate.c -o validate.@LTO@
|
||||
vector.@LTO@: $(XSRCDIR)/vector.c
|
||||
$(CC) $(CFLAGS) -c $(XSRCDIR)/vector.c -o vector.@LTO@
|
||||
foreign.@LTO@: $(XSRCDIR)/foreign.c
|
||||
|
|
|
@ -16,6 +16,8 @@ OBJS = salloc.@LTO@ \
|
|||
bool.@LTO@ \
|
||||
builtin.@LTO@ \
|
||||
char.@LTO@ \
|
||||
compenv.@LTO@ \
|
||||
compile.@LTO@ \
|
||||
complex.@LTO@ \
|
||||
dynext.@LTO@ \
|
||||
env.@LTO@ \
|
||||
|
@ -32,9 +34,11 @@ OBJS = salloc.@LTO@ \
|
|||
jitcall.@LTO@ \
|
||||
jitcommon.@LTO@ \
|
||||
jitinline.@LTO@ \
|
||||
jitprep.@LTO@ \
|
||||
jitstack.@LTO@ \
|
||||
jitstate.@LTO@ \
|
||||
list.@LTO@ \
|
||||
marshal.@LTO@ \
|
||||
module.@LTO@ \
|
||||
mzrt.@LTO@ \
|
||||
network.@LTO@ \
|
||||
|
@ -42,23 +46,26 @@ OBJS = salloc.@LTO@ \
|
|||
number.@LTO@ \
|
||||
numcomp.@LTO@ \
|
||||
numstr.@LTO@ \
|
||||
places.@LTO@ \
|
||||
optimize.@LTO@ \
|
||||
place.@LTO@ \
|
||||
port.@LTO@ \
|
||||
portfun.@LTO@ \
|
||||
print.@LTO@ \
|
||||
rational.@LTO@ \
|
||||
read.@LTO@ \
|
||||
regexp.@LTO@ \
|
||||
resolve.@LTO@ \
|
||||
sema.@LTO@ \
|
||||
setjmpup.@LTO@ \
|
||||
sfs.@LTO@ \
|
||||
string.@LTO@ \
|
||||
struct.@LTO@ \
|
||||
stxobj.@LTO@ \
|
||||
symbol.@LTO@ \
|
||||
syntax.@LTO@ \
|
||||
thread.@LTO@ \
|
||||
type.@LTO@ \
|
||||
unwind.@LTO@ \
|
||||
validate.@LTO@ \
|
||||
vector.@LTO@ @EXTRA_GMP_OBJ@
|
||||
|
||||
SRCS = $(srcdir)/salloc.c \
|
||||
|
@ -66,6 +73,8 @@ SRCS = $(srcdir)/salloc.c \
|
|||
$(srcdir)/bool.c \
|
||||
$(srcdir)/builtin.c \
|
||||
$(srcdir)/char.c \
|
||||
$(srcdir)/compenv.c \
|
||||
$(srcdir)/compile.c \
|
||||
$(srcdir)/complex.c \
|
||||
$(srcdir)/dynext.c \
|
||||
$(srcdir)/env.c \
|
||||
|
@ -82,9 +91,11 @@ SRCS = $(srcdir)/salloc.c \
|
|||
$(srcdir)/jitcall.c \
|
||||
$(srcdir)/jitcommon.c \
|
||||
$(srcdir)/jitinline.c \
|
||||
$(srcdir)/jitprep.c \
|
||||
$(srcdir)/jitstack.c \
|
||||
$(srcdir)/jitstate.c \
|
||||
$(srcdir)/list.c \
|
||||
$(srcdir)/marshal.c \
|
||||
$(srcdir)/module.c \
|
||||
$(srcdir)/mzrt.c \
|
||||
$(srcdir)/network.c \
|
||||
|
@ -92,23 +103,26 @@ SRCS = $(srcdir)/salloc.c \
|
|||
$(srcdir)/number.c \
|
||||
$(srcdir)/numcomp.c \
|
||||
$(srcdir)/numstr.c \
|
||||
$(srcdir)/places.c \
|
||||
$(srcdir)/optimize.c \
|
||||
$(srcdir)/place.c \
|
||||
$(srcdir)/port.c \
|
||||
$(srcdir)/portfun.c \
|
||||
$(srcdir)/print.c \
|
||||
$(srcdir)/rational.c \
|
||||
$(srcdir)/read.c \
|
||||
$(srcdir)/regexp.c \
|
||||
$(srcdir)/resolve.c \
|
||||
$(srcdir)/sema.c \
|
||||
$(srcdir)/setjmpup.c \
|
||||
$(srcdir)/sfs.c \
|
||||
$(srcdir)/string.c \
|
||||
$(srcdir)/struct.c \
|
||||
$(srcdir)/stxobj.c \
|
||||
$(srcdir)/symbol.c \
|
||||
$(srcdir)/syntax.c \
|
||||
$(srcdir)/thread.c \
|
||||
$(srcdir)/type.c \
|
||||
$(srcdir)/unwind/libunwind.c \
|
||||
$(srcdir)/validate.c \
|
||||
$(srcdir)/vector.c
|
||||
|
||||
wrong:
|
||||
|
@ -167,6 +181,10 @@ builtin.@LTO@: $(srcdir)/builtin.c
|
|||
$(CC) $(CFLAGS) -c $(srcdir)/builtin.c -o builtin.@LTO@
|
||||
char.@LTO@: $(srcdir)/char.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/char.c -o char.@LTO@
|
||||
compenv.@LTO@: $(srcdir)/compenv.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/compenv.c -o compenv.@LTO@
|
||||
compile.@LTO@: $(srcdir)/compile.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/compile.c -o compile.@LTO@
|
||||
complex.@LTO@: $(srcdir)/complex.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/complex.c -o complex.@LTO@
|
||||
dynext.@LTO@: $(srcdir)/dynext.c
|
||||
|
@ -199,12 +217,16 @@ jitcommon.@LTO@: $(srcdir)/jitcommon.c
|
|||
$(CC) $(CFLAGS) -c $(srcdir)/jitcommon.c -o jitcommon.@LTO@
|
||||
jitinline.@LTO@: $(srcdir)/jitinline.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/jitinline.c -o jitinline.@LTO@
|
||||
jitprep.@LTO@: $(srcdir)/jitprep.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/jitprep.c -o jitprep.@LTO@
|
||||
jitstack.@LTO@: $(srcdir)/jitstack.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/jitstack.c -o jitstack.@LTO@
|
||||
jitstate.@LTO@: $(srcdir)/jitstate.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/jitstate.c -o jitstate.@LTO@
|
||||
list.@LTO@: $(srcdir)/list.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/list.c -o list.@LTO@
|
||||
marshal.@LTO@: $(srcdir)/marshal.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/marshal.c -o marshal.@LTO@
|
||||
module.@LTO@: $(srcdir)/module.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/module.c -o module.@LTO@
|
||||
mzrt.@LTO@: $(srcdir)/mzrt.c
|
||||
|
@ -219,8 +241,10 @@ numcomp.@LTO@: $(srcdir)/numcomp.c
|
|||
$(CC) $(CFLAGS) -c $(srcdir)/numcomp.c -o numcomp.@LTO@
|
||||
numstr.@LTO@: $(srcdir)/numstr.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/numstr.c -o numstr.@LTO@
|
||||
places.@LTO@: $(srcdir)/places.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/places.c -o places.@LTO@
|
||||
optimize.@LTO@: $(srcdir)/optimize.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/optimize.c -o optimize.@LTO@
|
||||
place.@LTO@: $(srcdir)/place.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/place.c -o place.@LTO@
|
||||
port.@LTO@: $(srcdir)/port.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/port.c -o port.@LTO@
|
||||
portfun.@LTO@: $(srcdir)/portfun.c
|
||||
|
@ -233,16 +257,18 @@ read.@LTO@: $(srcdir)/read.c
|
|||
$(CC) $(CFLAGS) -c $(srcdir)/read.c -o read.@LTO@
|
||||
regexp.@LTO@: $(srcdir)/regexp.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/regexp.c -o regexp.@LTO@
|
||||
resolve.@LTO@: $(srcdir)/resolve.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/resolve.c -o resolve.@LTO@
|
||||
sema.@LTO@: $(srcdir)/sema.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/sema.c -o sema.@LTO@
|
||||
setjmpup.@LTO@: $(srcdir)/setjmpup.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/setjmpup.c -o setjmpup.@LTO@
|
||||
sfs.@LTO@: $(srcdir)/sfs.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/sfs.c -o sfs.@LTO@
|
||||
string.@LTO@: $(srcdir)/string.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/string.c -I. -o string.@LTO@
|
||||
struct.@LTO@: $(srcdir)/struct.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/struct.c -o struct.@LTO@
|
||||
stxobj.@LTO@: $(srcdir)/stxobj.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/stxobj.c -o stxobj.@LTO@
|
||||
symbol.@LTO@: $(srcdir)/symbol.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/symbol.c -o symbol.@LTO@
|
||||
syntax.@LTO@: $(srcdir)/syntax.c
|
||||
|
@ -253,6 +279,8 @@ type.@LTO@: $(srcdir)/type.c
|
|||
$(CC) $(CFLAGS) -c $(srcdir)/type.c -o type.@LTO@
|
||||
unwind.@LTO@: $(srcdir)/unwind/libunwind.c $(srcdir)/unwind/libunwind.h $(srcdir)/unwind/libunwind_i.h
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/unwind/libunwind.c -o unwind.@LTO@
|
||||
validate.@LTO@: $(srcdir)/validate.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/validate.c -o validate.@LTO@
|
||||
vector.@LTO@: $(srcdir)/vector.c
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/vector.c -o vector.@LTO@
|
||||
|
||||
|
@ -287,6 +315,10 @@ builtin.@LTO@: $(COMMON_HEADERS) \
|
|||
$(srcdir)/../src/stypes.h $(srcdir)/schminc.h $(srcdir)/startup.inc $(srcdir)/cstartup.inc
|
||||
char.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schuchar.inc
|
||||
compenv.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
compile.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
complex.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
dynext.@LTO@: $(COMMON_HEADERS) \
|
||||
|
@ -316,10 +348,14 @@ jitarith.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS)
|
|||
jitcall.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS)
|
||||
jitcommon.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS)
|
||||
jitinline.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS)
|
||||
jitprep.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
jitstack.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS) $(srcdir)/codetab.inc
|
||||
jitstate.@LTO@: $(COMMON_HEADERS) $(JIT_HEADERS)
|
||||
list.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
marshal.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
module.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c
|
||||
mzrt.@LTO@: $(COMMON_HEADERS)
|
||||
|
@ -333,7 +369,9 @@ numcomp.@LTO@: $(COMMON_HEADERS) \
|
|||
$(srcdir)/../src/stypes.h $(srcdir)/nummacs.h
|
||||
numstr.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/random.inc $(srcdir)/newrandom.inc
|
||||
places.@LTO@: $(COMMON_HEADERS) \
|
||||
optimize.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
place.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c
|
||||
port.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c
|
||||
|
@ -350,22 +388,26 @@ read.@LTO@: $(COMMON_HEADERS) \
|
|||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
regexp.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c $(srcdir)/schrx.h
|
||||
resolve.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
setjmpup.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schmach.h
|
||||
sfs.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
string.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schvers.h $(srcdir)/mzmark.c $(srcdir)/strops.inc \
|
||||
$(srcdir)/schustr.inc
|
||||
struct.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
stxobj.@LTO@: $(COMMON_HEADERS) \
|
||||
syntax.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c
|
||||
symbol.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
syntax.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
sema.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
type.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h $(srcdir)/mzmark.c
|
||||
vector.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
vadliate.@LTO@: $(COMMON_HEADERS) \
|
||||
$(srcdir)/../src/stypes.h
|
||||
|
|
2462
src/racket/src/compenv.c
Normal file
2462
src/racket/src/compenv.c
Normal file
File diff suppressed because it is too large
Load Diff
5446
src/racket/src/compile.c
Normal file
5446
src/racket/src/compile.c
Normal file
File diff suppressed because it is too large
Load Diff
3628
src/racket/src/env.c
3628
src/racket/src/env.c
File diff suppressed because it is too large
Load Diff
10024
src/racket/src/eval.c
10024
src/racket/src/eval.c
File diff suppressed because it is too large
Load Diff
1451
src/racket/src/fun.c
1451
src/racket/src/fun.c
File diff suppressed because it is too large
Load Diff
644
src/racket/src/jitprep.c
Normal file
644
src/racket/src/jitprep.c
Normal file
|
@ -0,0 +1,644 @@
|
|||
/*
|
||||
Racket
|
||||
Copyright (c) 2004-2011 PLT Scheme Inc.
|
||||
Copyright (c) 1995-2001 Matthew Flatt
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301 USA.
|
||||
|
||||
libscheme
|
||||
Copyright (c) 1994 Brent Benson
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
/* This file implements a bytecode pass to insert hook that trigger
|
||||
JIT compilation. This pass is performed after bytecode is marshaled
|
||||
or unmarshaled.
|
||||
|
||||
See "eval.c" for an overview of compilation passes and JIT
|
||||
prepraration. */
|
||||
|
||||
#include "schpriv.h"
|
||||
#include "schrunst.h"
|
||||
|
||||
#ifdef MZ_USE_JIT
|
||||
|
||||
static Scheme_Object *jit_application(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Object *orig, *naya = NULL;
|
||||
Scheme_App_Rec *app, *app2;
|
||||
int i, n, size;
|
||||
|
||||
app = (Scheme_App_Rec *)o;
|
||||
n = app->num_args + 1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
orig = app->args[i];
|
||||
naya = scheme_jit_expr(orig);
|
||||
if (!SAME_OBJ(orig, naya))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= n)
|
||||
return o;
|
||||
|
||||
size = (sizeof(Scheme_App_Rec)
|
||||
+ ((n - 1) * sizeof(Scheme_Object *))
|
||||
+ n * sizeof(char));
|
||||
app2 = (Scheme_App_Rec *)scheme_malloc_tagged(size);
|
||||
memcpy(app2, app, size);
|
||||
app2->args[i] = naya;
|
||||
|
||||
for (i++; i < n; i++) {
|
||||
orig = app2->args[i];
|
||||
naya = scheme_jit_expr(orig);
|
||||
app2->args[i] = naya;
|
||||
}
|
||||
|
||||
return (Scheme_Object *)app2;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_application2(Scheme_Object *o)
|
||||
{
|
||||
Scheme_App2_Rec *app;
|
||||
Scheme_Object *nrator, *nrand;
|
||||
|
||||
app = (Scheme_App2_Rec *)o;
|
||||
|
||||
nrator = scheme_jit_expr(app->rator);
|
||||
nrand = scheme_jit_expr(app->rand);
|
||||
|
||||
if (SAME_OBJ(nrator, app->rator)
|
||||
&& SAME_OBJ(nrand, app->rand))
|
||||
return o;
|
||||
|
||||
app = MALLOC_ONE_TAGGED(Scheme_App2_Rec);
|
||||
memcpy(app, o, sizeof(Scheme_App2_Rec));
|
||||
app->rator = nrator;
|
||||
app->rand = nrand;
|
||||
|
||||
return (Scheme_Object *)app;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_application3(Scheme_Object *o)
|
||||
{
|
||||
Scheme_App3_Rec *app;
|
||||
Scheme_Object *nrator, *nrand1, *nrand2;
|
||||
|
||||
app = (Scheme_App3_Rec *)o;
|
||||
|
||||
nrator = scheme_jit_expr(app->rator);
|
||||
nrand1 = scheme_jit_expr(app->rand1);
|
||||
nrand2 = scheme_jit_expr(app->rand2);
|
||||
|
||||
if (SAME_OBJ(nrator, app->rator)
|
||||
&& SAME_OBJ(nrand1, app->rand1)
|
||||
&& SAME_OBJ(nrand2, app->rand2))
|
||||
return o;
|
||||
|
||||
app = MALLOC_ONE_TAGGED(Scheme_App3_Rec);
|
||||
memcpy(app, o, sizeof(Scheme_App3_Rec));
|
||||
app->rator = nrator;
|
||||
app->rand1 = nrand1;
|
||||
app->rand2 = nrand2;
|
||||
|
||||
return (Scheme_Object *)app;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_sequence(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Object *orig, *naya = NULL;
|
||||
Scheme_Sequence *seq, *seq2;
|
||||
int i, n, size;
|
||||
|
||||
seq = (Scheme_Sequence *)o;
|
||||
n = seq->count;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
orig = seq->array[i];
|
||||
naya = scheme_jit_expr(orig);
|
||||
if (!SAME_OBJ(orig, naya))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= n)
|
||||
return o;
|
||||
|
||||
size = (sizeof(Scheme_Sequence)
|
||||
+ ((n - 1) * sizeof(Scheme_Object *)));
|
||||
seq2 = (Scheme_Sequence *)scheme_malloc_tagged(size);
|
||||
memcpy(seq2, seq, size);
|
||||
seq2->array[i] = naya;
|
||||
|
||||
for (i++; i < n; i++) {
|
||||
orig = seq2->array[i];
|
||||
naya = scheme_jit_expr(orig);
|
||||
seq2->array[i] = naya;
|
||||
}
|
||||
|
||||
return (Scheme_Object *)seq2;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_branch(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Branch_Rec *b;
|
||||
Scheme_Object *t, *tb, *fb;
|
||||
|
||||
b = (Scheme_Branch_Rec *)o;
|
||||
|
||||
t = scheme_jit_expr(b->test);
|
||||
tb = scheme_jit_expr(b->tbranch);
|
||||
fb = scheme_jit_expr(b->fbranch);
|
||||
|
||||
if (SAME_OBJ(t, b->test)
|
||||
&& SAME_OBJ(tb, b->tbranch)
|
||||
&& SAME_OBJ(fb, b->fbranch))
|
||||
return o;
|
||||
|
||||
b = MALLOC_ONE_TAGGED(Scheme_Branch_Rec);
|
||||
memcpy(b, o, sizeof(Scheme_Branch_Rec));
|
||||
b->test = t;
|
||||
b->tbranch = tb;
|
||||
b->fbranch = fb;
|
||||
|
||||
return (Scheme_Object *)b;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_let_value(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Let_Value *lv = (Scheme_Let_Value *)o;
|
||||
Scheme_Object *body, *rhs;
|
||||
|
||||
rhs = scheme_jit_expr(lv->value);
|
||||
body = scheme_jit_expr(lv->body);
|
||||
|
||||
if (SAME_OBJ(rhs, lv->value)
|
||||
&& SAME_OBJ(body, lv->body))
|
||||
return o;
|
||||
|
||||
lv = MALLOC_ONE_TAGGED(Scheme_Let_Value);
|
||||
memcpy(lv, o, sizeof(Scheme_Let_Value));
|
||||
lv->value = rhs;
|
||||
lv->body = body;
|
||||
|
||||
return (Scheme_Object *)lv;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_let_one(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Let_One *lo = (Scheme_Let_One *)o;
|
||||
Scheme_Object *body, *rhs;
|
||||
|
||||
rhs = scheme_jit_expr(lo->value);
|
||||
body = scheme_jit_expr(lo->body);
|
||||
|
||||
if (SAME_OBJ(rhs, lo->value)
|
||||
&& SAME_OBJ(body, lo->body))
|
||||
return o;
|
||||
|
||||
lo = MALLOC_ONE_TAGGED(Scheme_Let_One);
|
||||
memcpy(lo, o, sizeof(Scheme_Let_One));
|
||||
lo->value = rhs;
|
||||
lo->body = body;
|
||||
|
||||
return (Scheme_Object *)lo;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_let_void(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Let_Void *lv = (Scheme_Let_Void *)o;
|
||||
Scheme_Object *body;
|
||||
|
||||
body = scheme_jit_expr(lv->body);
|
||||
|
||||
if (SAME_OBJ(body, lv->body))
|
||||
return o;
|
||||
|
||||
lv = MALLOC_ONE_TAGGED(Scheme_Let_Void);
|
||||
memcpy(lv, o, sizeof(Scheme_Let_Void));
|
||||
lv->body = body;
|
||||
|
||||
return (Scheme_Object *)lv;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_letrec(Scheme_Object *o)
|
||||
{
|
||||
Scheme_Letrec *lr = (Scheme_Letrec *)o, *lr2;
|
||||
Scheme_Object **procs, **procs2, *v;
|
||||
int i, count;
|
||||
|
||||
count = lr->count;
|
||||
|
||||
lr2 = MALLOC_ONE_TAGGED(Scheme_Letrec);
|
||||
memcpy(lr2, lr, sizeof(Scheme_Letrec));
|
||||
|
||||
procs = lr->procs;
|
||||
procs2 = MALLOC_N(Scheme_Object *, count);
|
||||
lr2->procs = procs2;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
v = scheme_jit_closure(procs[i], (Scheme_Object *)lr2);
|
||||
procs2[i] = v;
|
||||
}
|
||||
|
||||
v = scheme_jit_expr(lr->body);
|
||||
lr2->body = v;
|
||||
|
||||
return (Scheme_Object *)lr2;
|
||||
}
|
||||
|
||||
static Scheme_Object *jit_wcm(Scheme_Object *o)
|
||||
{
|
||||
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)o;
|
||||
Scheme_Object *k, *v, *b;
|
||||
|
||||
k = scheme_jit_expr(wcm->key);
|
||||
v = scheme_jit_expr(wcm->val);
|
||||
b = scheme_jit_expr(wcm->body);
|
||||
if (SAME_OBJ(wcm->key, k)
|
||||
&& SAME_OBJ(wcm->val, v)
|
||||
&& SAME_OBJ(wcm->body, b))
|
||||
return o;
|
||||
|
||||
wcm = MALLOC_ONE_TAGGED(Scheme_With_Continuation_Mark);
|
||||
memcpy(wcm, o, sizeof(Scheme_With_Continuation_Mark));
|
||||
|
||||
wcm->key = k;
|
||||
wcm->val = v;
|
||||
wcm->body = b;
|
||||
|
||||
return (Scheme_Object *)wcm;
|
||||
}
|
||||
|
||||
/*========================================================================*/
|
||||
/* other syntax */
|
||||
/*========================================================================*/
|
||||
|
||||
static Scheme_Object *define_values_jit(Scheme_Object *data)
|
||||
{
|
||||
Scheme_Object *orig = SCHEME_VEC_ELS(data)[0], *naya;
|
||||
|
||||
if (SAME_TYPE(SCHEME_TYPE(orig), scheme_unclosed_procedure_type)
|
||||
&& (SCHEME_VEC_SIZE(data) == 2))
|
||||
naya = scheme_jit_closure(orig, SCHEME_VEC_ELS(data)[1]);
|
||||
else
|
||||
naya = scheme_jit_expr(orig);
|
||||
|
||||
if (SAME_OBJ(naya, orig))
|
||||
return data;
|
||||
else {
|
||||
orig = naya;
|
||||
naya = scheme_clone_vector(data, 0, 1);
|
||||
SCHEME_VEC_ELS(naya)[0] = orig;
|
||||
return naya;
|
||||
}
|
||||
}
|
||||
|
||||
static Scheme_Object *set_jit(Scheme_Object *data)
|
||||
{
|
||||
Scheme_Set_Bang *sb = (Scheme_Set_Bang *)data, *naya;
|
||||
Scheme_Object *orig_val, *naya_val;
|
||||
|
||||
orig_val = sb->val;
|
||||
|
||||
naya_val = scheme_jit_expr(orig_val);
|
||||
|
||||
if (SAME_OBJ(naya_val, orig_val))
|
||||
return data;
|
||||
else {
|
||||
naya = MALLOC_ONE_TAGGED(Scheme_Set_Bang);
|
||||
memcpy(naya, sb, sizeof(Scheme_Set_Bang));
|
||||
naya->val = naya_val;
|
||||
return (Scheme_Object *)naya;
|
||||
}
|
||||
}
|
||||
|
||||
static Scheme_Object *ref_jit(Scheme_Object *data)
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
static Scheme_Object *apply_values_jit(Scheme_Object *data)
|
||||
{
|
||||
Scheme_Object *f, *e;
|
||||
|
||||
f = scheme_jit_expr(SCHEME_PTR1_VAL(data));
|
||||
e = scheme_jit_expr(SCHEME_PTR2_VAL(data));
|
||||
|
||||
if (SAME_OBJ(f, SCHEME_PTR1_VAL(data))
|
||||
&& SAME_OBJ(e, SCHEME_PTR2_VAL(data)))
|
||||
return data;
|
||||
else {
|
||||
data = scheme_alloc_object();
|
||||
data->type = scheme_apply_values_type;
|
||||
SCHEME_PTR1_VAL(data) = f;
|
||||
SCHEME_PTR2_VAL(data) = e;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_case_lambda_jit(Scheme_Object *expr)
|
||||
{
|
||||
#ifdef MZ_USE_JIT
|
||||
Scheme_Case_Lambda *seqin = (Scheme_Case_Lambda *)expr;
|
||||
|
||||
if (!seqin->native_code) {
|
||||
Scheme_Case_Lambda *seqout;
|
||||
Scheme_Native_Closure_Data *ndata;
|
||||
Scheme_Object *val, *name;
|
||||
int i, cnt, size, all_closed = 1;
|
||||
|
||||
cnt = seqin->count;
|
||||
|
||||
size = sizeof(Scheme_Case_Lambda) + ((cnt - 1) * sizeof(Scheme_Object *));
|
||||
|
||||
seqout = (Scheme_Case_Lambda *)scheme_malloc_tagged(size);
|
||||
memcpy(seqout, seqin, size);
|
||||
|
||||
name = seqin->name;
|
||||
if (name && SCHEME_BOXP(name))
|
||||
name = SCHEME_BOX_VAL(name);
|
||||
|
||||
for (i = 0; i < cnt; i++) {
|
||||
val = seqout->array[i];
|
||||
if (SCHEME_PROCP(val)) {
|
||||
/* Undo creation of empty closure */
|
||||
val = (Scheme_Object *)((Scheme_Closure *)val)->code;
|
||||
seqout->array[i] = val;
|
||||
}
|
||||
((Scheme_Closure_Data *)val)->name = name;
|
||||
if (((Scheme_Closure_Data *)val)->closure_size)
|
||||
all_closed = 0;
|
||||
}
|
||||
|
||||
/* Generating the code may cause empty closures to be formed: */
|
||||
ndata = scheme_generate_case_lambda(seqout);
|
||||
seqout->native_code = ndata;
|
||||
|
||||
if (all_closed) {
|
||||
/* Native closures do not refer back to the original bytecode,
|
||||
so no need to worry about clearing the reference. */
|
||||
Scheme_Native_Closure *nc;
|
||||
nc = (Scheme_Native_Closure *)scheme_make_native_case_closure(ndata);
|
||||
for (i = 0; i < cnt; i++) {
|
||||
val = seqout->array[i];
|
||||
if (!SCHEME_PROCP(val)) {
|
||||
val = scheme_make_native_closure(((Scheme_Closure_Data *)val)->u.native_code);
|
||||
}
|
||||
nc->vals[i] = val;
|
||||
}
|
||||
return (Scheme_Object *)nc;
|
||||
} else {
|
||||
/* The case-lambda data must point to the original closure-data
|
||||
record, because that's where the closure maps are kept. But
|
||||
we don't need the bytecode, anymore. So clone the
|
||||
closure-data record and drop the bytecode in thte clone. */
|
||||
for (i = 0; i < cnt; i++) {
|
||||
val = seqout->array[i];
|
||||
if (!SCHEME_PROCP(val)) {
|
||||
Scheme_Closure_Data *data;
|
||||
data = MALLOC_ONE_TAGGED(Scheme_Closure_Data);
|
||||
memcpy(data, val, sizeof(Scheme_Closure_Data));
|
||||
data->code = NULL;
|
||||
seqout->array[i] = (Scheme_Object *)data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (Scheme_Object *)seqout;
|
||||
}
|
||||
#endif
|
||||
|
||||
return expr;
|
||||
}
|
||||
|
||||
static Scheme_Object *bangboxenv_jit(Scheme_Object *data)
|
||||
{
|
||||
Scheme_Object *orig, *naya, *new_data;
|
||||
|
||||
orig = SCHEME_PTR2_VAL(data);
|
||||
naya = scheme_jit_expr(orig);
|
||||
if (SAME_OBJ(naya, orig))
|
||||
return data;
|
||||
else {
|
||||
new_data = scheme_alloc_object();
|
||||
new_data->type = scheme_boxenv_type;
|
||||
SCHEME_PTR1_VAL(new_data) = SCHEME_PTR1_VAL(data);
|
||||
SCHEME_PTR2_VAL(new_data) = naya;
|
||||
return new_data;
|
||||
}
|
||||
}
|
||||
|
||||
static Scheme_Object *begin0_jit(Scheme_Object *data)
|
||||
{
|
||||
Scheme_Sequence *seq = (Scheme_Sequence *)data, *seq2;
|
||||
Scheme_Object *old, *naya = NULL;
|
||||
int i, j, count;
|
||||
|
||||
count = seq->count;
|
||||
for (i = 0; i < count; i++) {
|
||||
old = seq->array[i];
|
||||
naya = scheme_jit_expr(old);
|
||||
if (!SAME_OBJ(old, naya))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= count)
|
||||
return data;
|
||||
|
||||
seq2 = (Scheme_Sequence *)scheme_malloc_tagged(sizeof(Scheme_Sequence)
|
||||
+ (count - 1)
|
||||
* sizeof(Scheme_Object *));
|
||||
seq2->so.type = scheme_begin0_sequence_type;
|
||||
seq2->count = count;
|
||||
for (j = 0; j < i; j++) {
|
||||
seq2->array[j] = seq->array[j];
|
||||
}
|
||||
seq2->array[i] = naya;
|
||||
for (i++; i < count; i++) {
|
||||
old = seq->array[i];
|
||||
naya = scheme_jit_expr(old);
|
||||
seq2->array[i] = naya;
|
||||
}
|
||||
|
||||
return (Scheme_Object *)seq2;
|
||||
}
|
||||
|
||||
static Scheme_Object *do_define_syntaxes_jit(Scheme_Object *expr, int jit)
|
||||
{
|
||||
Resolve_Prefix *rp, *orig_rp;
|
||||
Scheme_Object *naya, *rhs;
|
||||
|
||||
rhs = SCHEME_VEC_ELS(expr)[0];
|
||||
if (jit)
|
||||
naya = scheme_jit_expr(rhs);
|
||||
else
|
||||
naya = rhs;
|
||||
|
||||
orig_rp = (Resolve_Prefix *)SCHEME_VEC_ELS(expr)[1];
|
||||
rp = scheme_prefix_eval_clone(orig_rp);
|
||||
|
||||
if (SAME_OBJ(naya, rhs)
|
||||
&& SAME_OBJ(orig_rp, rp))
|
||||
return expr;
|
||||
else {
|
||||
expr = scheme_clone_vector(expr, 0, 1);
|
||||
SCHEME_VEC_ELS(expr)[0] = naya;
|
||||
SCHEME_VEC_ELS(expr)[1] = (Scheme_Object *)rp;
|
||||
return expr;
|
||||
}
|
||||
}
|
||||
|
||||
static Scheme_Object *define_syntaxes_jit(Scheme_Object *expr)
|
||||
{
|
||||
return do_define_syntaxes_jit(expr, 1);
|
||||
}
|
||||
|
||||
static Scheme_Object *define_for_syntaxes_jit(Scheme_Object *expr)
|
||||
{
|
||||
return do_define_syntaxes_jit(expr, 1);
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_syntaxes_eval_clone(Scheme_Object *expr)
|
||||
{
|
||||
return do_define_syntaxes_jit(expr, 0);
|
||||
}
|
||||
|
||||
/*========================================================================*/
|
||||
/* closures */
|
||||
/*========================================================================*/
|
||||
|
||||
Scheme_Object *scheme_jit_closure(Scheme_Object *code, Scheme_Object *context)
|
||||
/* If lr is supplied as a letrec binding this closure, it may be used
|
||||
for JIT compilation. */
|
||||
{
|
||||
#ifdef MZ_USE_JIT
|
||||
Scheme_Closure_Data *data = (Scheme_Closure_Data *)code, *data2;
|
||||
|
||||
/* We need to cache clones to support multiple references
|
||||
to a zero-sized closure in bytecode. We need either a clone
|
||||
or native code, and context determines which field is relevant,
|
||||
so we put the two possibilities in a union `u'. */
|
||||
|
||||
if (!context)
|
||||
data2 = data->u.jit_clone;
|
||||
else
|
||||
data2 = NULL;
|
||||
|
||||
if (!data2) {
|
||||
Scheme_Native_Closure_Data *ndata;
|
||||
|
||||
data2 = MALLOC_ONE_TAGGED(Scheme_Closure_Data);
|
||||
memcpy(data2, code, sizeof(Scheme_Closure_Data));
|
||||
|
||||
data2->context = context;
|
||||
|
||||
ndata = scheme_generate_lambda(data2, 1, NULL);
|
||||
data2->u.native_code = ndata;
|
||||
|
||||
if (!context)
|
||||
data->u.jit_clone = data2;
|
||||
}
|
||||
|
||||
/* If it's zero-sized, then create closure now */
|
||||
if (!data2->closure_size)
|
||||
return scheme_make_native_closure(data2->u.native_code);
|
||||
|
||||
return (Scheme_Object *)data2;
|
||||
#endif
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
/*========================================================================*/
|
||||
/* expressions */
|
||||
/*========================================================================*/
|
||||
|
||||
Scheme_Object *scheme_jit_expr(Scheme_Object *expr)
|
||||
{
|
||||
Scheme_Type type = SCHEME_TYPE(expr);
|
||||
|
||||
switch (type) {
|
||||
case scheme_application_type:
|
||||
return jit_application(expr);
|
||||
case scheme_application2_type:
|
||||
return jit_application2(expr);
|
||||
case scheme_application3_type:
|
||||
return jit_application3(expr);
|
||||
case scheme_sequence_type:
|
||||
case scheme_splice_sequence_type:
|
||||
return jit_sequence(expr);
|
||||
case scheme_branch_type:
|
||||
return jit_branch(expr);
|
||||
case scheme_with_cont_mark_type:
|
||||
return jit_wcm(expr);
|
||||
case scheme_unclosed_procedure_type:
|
||||
return scheme_jit_closure(expr, NULL);
|
||||
case scheme_let_value_type:
|
||||
return jit_let_value(expr);
|
||||
case scheme_let_void_type:
|
||||
return jit_let_void(expr);
|
||||
case scheme_letrec_type:
|
||||
return jit_letrec(expr);
|
||||
case scheme_let_one_type:
|
||||
return jit_let_one(expr);
|
||||
case scheme_closure_type:
|
||||
{
|
||||
Scheme_Closure *c = (Scheme_Closure *)expr;
|
||||
if (ZERO_SIZED_CLOSUREP(c)) {
|
||||
/* JIT the closure body, producing a native closure: */
|
||||
return scheme_jit_closure((Scheme_Object *)c->code, NULL);
|
||||
} else
|
||||
return expr;
|
||||
}
|
||||
case scheme_case_closure_type:
|
||||
{
|
||||
return scheme_unclose_case_lambda(expr, 1);
|
||||
}
|
||||
case scheme_define_values_type:
|
||||
return define_values_jit(expr);
|
||||
case scheme_define_syntaxes_type:
|
||||
return define_syntaxes_jit(expr);
|
||||
case scheme_define_for_syntax_type:
|
||||
return define_for_syntaxes_jit(expr);
|
||||
case scheme_set_bang_type:
|
||||
return set_jit(expr);
|
||||
case scheme_boxenv_type:
|
||||
return bangboxenv_jit(expr);
|
||||
case scheme_begin0_sequence_type:
|
||||
return begin0_jit(expr);
|
||||
case scheme_require_form_type:
|
||||
return scheme_top_level_require_jit(expr);
|
||||
case scheme_varref_form_type:
|
||||
return ref_jit(expr);
|
||||
case scheme_apply_values_type:
|
||||
return apply_values_jit(expr);
|
||||
case scheme_case_lambda_sequence_type:
|
||||
return scheme_case_lambda_jit(expr);
|
||||
case scheme_module_type:
|
||||
return scheme_module_jit(expr);
|
||||
default:
|
||||
return expr;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
Scheme_Object *scheme_jit_expr(Scheme_Object *expr)
|
||||
{
|
||||
return expr;
|
||||
}
|
||||
|
||||
#endif
|
1716
src/racket/src/marshal.c
Normal file
1716
src/racket/src/marshal.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2922,8 +2922,16 @@ static int engine_val_FIXUP(void *p, struct NewGC *gc) {
|
|||
|
||||
#endif /* ENGINE */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_ENV_C
|
||||
|
||||
#endif /* ENV */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_COMPENV_C
|
||||
|
||||
static int mark_comp_env_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Full_Comp_Env));
|
||||
|
@ -2989,6 +2997,12 @@ static int mark_comp_env_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_comp_env_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* COMPENV */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_RESOLVE_C
|
||||
|
||||
static int mark_resolve_info_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Resolve_Info));
|
||||
|
@ -3034,6 +3048,49 @@ static int mark_resolve_info_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_resolve_info_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* RESOLVE */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_SFS_C
|
||||
|
||||
static int mark_sfs_info_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
static int mark_sfs_info_MARK(void *p, struct NewGC *gc) {
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcMARK2(i->max_used, gc);
|
||||
gcMARK2(i->max_calls, gc);
|
||||
gcMARK2(i->saved, gc);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
static int mark_sfs_info_FIXUP(void *p, struct NewGC *gc) {
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcFIXUP2(i->max_used, gc);
|
||||
gcFIXUP2(i->max_calls, gc);
|
||||
gcFIXUP2(i->saved, gc);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
#define mark_sfs_info_IS_ATOMIC 0
|
||||
#define mark_sfs_info_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* SFS */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_OPTIMIZE_C
|
||||
|
||||
static int mark_optimize_info_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Optimize_Info));
|
||||
|
@ -3077,37 +3134,6 @@ static int mark_optimize_info_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_optimize_info_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
static int mark_sfs_info_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
static int mark_sfs_info_MARK(void *p, struct NewGC *gc) {
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcMARK2(i->max_used, gc);
|
||||
gcMARK2(i->max_calls, gc);
|
||||
gcMARK2(i->saved, gc);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
static int mark_sfs_info_FIXUP(void *p, struct NewGC *gc) {
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcFIXUP2(i->max_used, gc);
|
||||
gcFIXUP2(i->max_calls, gc);
|
||||
gcFIXUP2(i->saved, gc);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
#define mark_sfs_info_IS_ATOMIC 0
|
||||
#define mark_sfs_info_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
static int mark_once_used_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Once_Used));
|
||||
|
@ -3135,7 +3161,7 @@ static int mark_once_used_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_once_used_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* ENV */
|
||||
#endif /* OPTIMIZE */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -3201,6 +3227,12 @@ static int mark_saved_stack_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_saved_stack_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* EVAL */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_VALIDATE_C
|
||||
|
||||
static int mark_validate_clearing_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Validate_Clearing));
|
||||
|
@ -3230,7 +3262,7 @@ static int mark_validate_clearing_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define mark_validate_clearing_IS_CONST_SIZE 1
|
||||
|
||||
|
||||
#endif /* EVAL */
|
||||
#endif /* VALIDATE */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -5076,9 +5108,9 @@ static int mark_chaperone_FIXUP(void *p, struct NewGC *gc) {
|
|||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_SYNTAX_C
|
||||
#ifdef MARKS_FOR_COMPILE_C
|
||||
|
||||
#endif /* SYNTAX */
|
||||
#endif /* COMPILE */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -5380,7 +5412,7 @@ static int mark_string_convert_FIXUP(void *p, struct NewGC *gc) {
|
|||
|
||||
/**********************************************************************/
|
||||
|
||||
#ifdef MARKS_FOR_STXOBJ_C
|
||||
#ifdef MARKS_FOR_SYNTAX_C
|
||||
|
||||
static int mark_rename_table_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
|
@ -5601,7 +5633,7 @@ static int mark_free_id_info_FIXUP(void *p, struct NewGC *gc) {
|
|||
|
||||
|
||||
|
||||
#endif /* STXOBJ */
|
||||
#endif /* SYNTAX */
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
|
|
@ -1175,8 +1175,16 @@ engine_val {
|
|||
|
||||
END engine;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START env;
|
||||
|
||||
END env;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START compenv;
|
||||
|
||||
mark_comp_env {
|
||||
mark:
|
||||
Scheme_Full_Comp_Env *e = (Scheme_Full_Comp_Env *)p;
|
||||
|
@ -1206,6 +1214,12 @@ mark_comp_env {
|
|||
gcBYTES_TO_WORDS(sizeof(Scheme_Full_Comp_Env));
|
||||
}
|
||||
|
||||
END compenv;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START resolve;
|
||||
|
||||
mark_resolve_info {
|
||||
mark:
|
||||
Resolve_Info *i = (Resolve_Info *)p;
|
||||
|
@ -1225,6 +1239,30 @@ mark_resolve_info {
|
|||
gcBYTES_TO_WORDS(sizeof(Resolve_Info));
|
||||
}
|
||||
|
||||
END resolve;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START sfs;
|
||||
|
||||
mark_sfs_info {
|
||||
mark:
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcMARK2(i->max_used, gc);
|
||||
gcMARK2(i->max_calls, gc);
|
||||
gcMARK2(i->saved, gc);
|
||||
|
||||
size:
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
END sfs;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START optimize;
|
||||
|
||||
mark_optimize_info {
|
||||
mark:
|
||||
Optimize_Info *i = (Optimize_Info *)p;
|
||||
|
@ -1243,18 +1281,6 @@ mark_optimize_info {
|
|||
gcBYTES_TO_WORDS(sizeof(Optimize_Info));
|
||||
}
|
||||
|
||||
mark_sfs_info {
|
||||
mark:
|
||||
SFS_Info *i = (SFS_Info *)p;
|
||||
|
||||
gcMARK2(i->max_used, gc);
|
||||
gcMARK2(i->max_calls, gc);
|
||||
gcMARK2(i->saved, gc);
|
||||
|
||||
size:
|
||||
gcBYTES_TO_WORDS(sizeof(SFS_Info));
|
||||
}
|
||||
|
||||
mark_once_used {
|
||||
mark:
|
||||
Scheme_Once_Used *o = (Scheme_Once_Used *)p;
|
||||
|
@ -1265,7 +1291,7 @@ mark_once_used {
|
|||
gcBYTES_TO_WORDS(sizeof(Scheme_Once_Used));
|
||||
}
|
||||
|
||||
END env;
|
||||
END optimize;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -1294,6 +1320,12 @@ mark_saved_stack {
|
|||
gcBYTES_TO_WORDS(sizeof(Scheme_Saved_Stack));
|
||||
}
|
||||
|
||||
END eval;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
START validate;
|
||||
|
||||
mark_validate_clearing {
|
||||
mark:
|
||||
Validate_Clearing *vc = (Validate_Clearing *)p;
|
||||
|
@ -1305,7 +1337,7 @@ mark_validate_clearing {
|
|||
gcBYTES_TO_WORDS(sizeof(Validate_Clearing));
|
||||
}
|
||||
|
||||
END eval;
|
||||
END validate;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -2079,9 +2111,9 @@ END struct;
|
|||
|
||||
/**********************************************************************/
|
||||
|
||||
START syntax;
|
||||
START compile;
|
||||
|
||||
END syntax;
|
||||
END compile;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
@ -2211,7 +2243,7 @@ END string;
|
|||
|
||||
/**********************************************************************/
|
||||
|
||||
START stxobj;
|
||||
START syntax;
|
||||
|
||||
mark_rename_table {
|
||||
mark:
|
||||
|
@ -2298,7 +2330,7 @@ mark_free_id_info {
|
|||
|
||||
|
||||
|
||||
END stxobj;
|
||||
END syntax;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
|
5823
src/racket/src/optimize.c
Normal file
5823
src/racket/src/optimize.c
Normal file
File diff suppressed because it is too large
Load Diff
2908
src/racket/src/resolve.c
Normal file
2908
src/racket/src/resolve.c
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -190,6 +190,11 @@ void scheme_init_symbol_type(Scheme_Env *env);
|
|||
void scheme_init_type();
|
||||
void scheme_init_custodian_extractors();
|
||||
void scheme_init_bignum();
|
||||
void scheme_init_compenv();
|
||||
void scheme_init_optimize();
|
||||
void scheme_init_resolve();
|
||||
void scheme_init_sfs();
|
||||
void scheme_init_validate();
|
||||
void scheme_init_list(Scheme_Env *env);
|
||||
void scheme_init_unsafe_list(Scheme_Env *env);
|
||||
void scheme_init_stx(Scheme_Env *env);
|
||||
|
@ -222,6 +227,7 @@ void scheme_init_symbol(Scheme_Env *env);
|
|||
void scheme_init_char(Scheme_Env *env);
|
||||
void scheme_init_bool(Scheme_Env *env);
|
||||
void scheme_init_syntax(Scheme_Env *env);
|
||||
void scheme_init_marshal(Scheme_Env *env);
|
||||
void scheme_init_error(Scheme_Env *env);
|
||||
#ifndef NO_SCHEME_EXNS
|
||||
void scheme_init_exn(Scheme_Env *env);
|
||||
|
@ -504,6 +510,12 @@ void scheme_zero_unneeded_rands(Scheme_Thread *p);
|
|||
|
||||
int scheme_can_break(Scheme_Thread *p);
|
||||
|
||||
# define DO_CHECK_FOR_BREAK(p, e) \
|
||||
if (DECREMENT_FUEL(scheme_fuel_counter, 1) <= 0) { \
|
||||
e scheme_thread_block(0); \
|
||||
(p)->ran_some = 1; \
|
||||
}
|
||||
|
||||
THREAD_LOCAL_DECL(extern int scheme_overflow_count);
|
||||
|
||||
#define MZTHREADELEM(p, x) scheme_ ## x
|
||||
|
@ -1062,6 +1074,16 @@ typedef struct {
|
|||
/* After array of f & args, array of chars for eval type */
|
||||
} Scheme_App_Rec;
|
||||
|
||||
/* Lookahead types for evaluating application arguments. */
|
||||
/* 4 cases + else => magic number for some compilers doing a switch? */
|
||||
enum {
|
||||
SCHEME_EVAL_CONSTANT = 0,
|
||||
SCHEME_EVAL_GLOBAL,
|
||||
SCHEME_EVAL_LOCAL,
|
||||
SCHEME_EVAL_LOCAL_UNBOX,
|
||||
SCHEME_EVAL_GENERAL
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Scheme_Inclhash_Object iso; /* keyex used for flags */
|
||||
Scheme_Object *rator;
|
||||
|
@ -2158,25 +2180,21 @@ typedef struct Resolve_Prefix
|
|||
Scheme_Object *uses_unsafe; /* non-NULL => inspector or hashtree of inspectors for accessing #%unsafe bindings */
|
||||
} Resolve_Prefix;
|
||||
|
||||
typedef struct Resolve_Info
|
||||
{
|
||||
typedef struct Resolve_Info Resolve_Info;
|
||||
|
||||
/* Closure_Info is used to store extra closure information
|
||||
before a closure mapping is resolved. */
|
||||
typedef struct {
|
||||
MZTAG_IF_REQUIRED
|
||||
char use_jit, in_module, in_proc, enforce_const;
|
||||
int size, oldsize, count, pos;
|
||||
int max_let_depth; /* filled in by sub-expressions */
|
||||
Resolve_Prefix *prefix;
|
||||
Scheme_Hash_Table *stx_map; /* compile offset => resolve offset; prunes prefix-recored stxes */
|
||||
mzshort toplevel_pos; /* -1 means consult `next' */
|
||||
void *tl_map; /* fixnum or bit array (as array of `int's) indicating which globals+lifts in prefix are used */
|
||||
mzshort *old_pos;
|
||||
mzshort *new_pos;
|
||||
int stx_count;
|
||||
mzshort *old_stx_pos; /* NULL => consult next; new pos is index in array */
|
||||
int *flags;
|
||||
Scheme_Object **lifted; /* maps bindings to lifts */
|
||||
Scheme_Object *lifts; /* accumulates lift info */
|
||||
struct Resolve_Info *next;
|
||||
} Resolve_Info;
|
||||
int *local_flags; /* for arguments from compile pass, flonum info updated in optimize pass */
|
||||
mzshort base_closure_size; /* doesn't include top-level (if any) */
|
||||
mzshort *base_closure_map;
|
||||
char *flonum_map; /* NULL when has_flomap set => no flonums */
|
||||
char has_tl, has_flomap, has_nonleaf;
|
||||
int body_size, body_psize;
|
||||
} Closure_Info;
|
||||
|
||||
typedef struct Optimize_Info Optimize_Info;
|
||||
|
||||
typedef struct Scheme_Object *
|
||||
(Scheme_Syntax)(struct Scheme_Object *form, struct Scheme_Comp_Env *env,
|
||||
|
@ -2186,41 +2204,6 @@ typedef struct Scheme_Object *
|
|||
(Scheme_Syntax_Expander)(struct Scheme_Object *form, struct Scheme_Comp_Env *env,
|
||||
Scheme_Expand_Info *rec, int drec);
|
||||
|
||||
typedef struct Scheme_Object *(*Scheme_Syntax_Resolver)(Scheme_Object *data, Resolve_Info *info);
|
||||
|
||||
typedef struct Optimize_Info
|
||||
{
|
||||
MZTAG_IF_REQUIRED
|
||||
short flags;
|
||||
struct Optimize_Info *next;
|
||||
int original_frame, new_frame;
|
||||
Scheme_Object *consts;
|
||||
|
||||
/* Propagated up and down the chain: */
|
||||
int size, vclock, psize;
|
||||
short inline_fuel;
|
||||
char letrec_not_twice, enforce_const, use_psize, has_nonleaf;
|
||||
Scheme_Hash_Table *top_level_consts;
|
||||
|
||||
/* Set by expression optimization: */
|
||||
int single_result, preserves_marks; /* negative means "tentative", due to fixpoint in progress */
|
||||
|
||||
char **stat_dists; /* (pos, depth) => used? */
|
||||
int *sd_depths;
|
||||
int used_toplevel;
|
||||
char *use;
|
||||
|
||||
int transitive_use_pos; /* set to pos + 1 when optimizing a letrec-bound procedure */
|
||||
mzshort **transitive_use;
|
||||
int *transitive_use_len;
|
||||
|
||||
Scheme_Object *context; /* for logging */
|
||||
} Optimize_Info;
|
||||
|
||||
typedef struct Scheme_Object *(*Scheme_Syntax_Optimizer)(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
typedef struct Scheme_Object *(*Scheme_Syntax_Cloner)(int dup_ok, Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth);
|
||||
typedef struct Scheme_Object *(*Scheme_Syntax_Shifter)(Scheme_Object *data, int delta, int after_depth);
|
||||
|
||||
typedef struct CPort Mz_CPort;
|
||||
|
||||
typedef mzshort **Validate_TLS;
|
||||
|
@ -2366,9 +2349,38 @@ int scheme_push_marks_from_lightweight_continuation(Scheme_Lightweight_Continuat
|
|||
#define scheme_get_frame_settable(f) ((f)->basic.has_set_bang)
|
||||
#define scheme_get_binding(f, n) ((f)->values[n])
|
||||
|
||||
int scheme_is_module_begin_env(Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_make_toplevel(mzshort depth, int position, int resolved, int flags);
|
||||
|
||||
#define MAX_CONST_LOCAL_POS 64
|
||||
#define MAX_CONST_LOCAL_TYPES 2
|
||||
#define MAX_CONST_LOCAL_FLAG_VAL 3
|
||||
#define SCHEME_LOCAL_FLAGS_MASK 0x3
|
||||
|
||||
#define MAX_CONST_TOPLEVEL_DEPTH 16
|
||||
#define MAX_CONST_TOPLEVEL_POS 16
|
||||
#define SCHEME_TOPLEVEL_FLAGS_MASK 0x3
|
||||
|
||||
#define ASSERT_IS_VARIABLE_BUCKET(b) /* if (((Scheme_Object *)b)->type != scheme_variable_type) abort() */
|
||||
|
||||
Scheme_Comp_Env *scheme_new_comp_env(Scheme_Env *genv, Scheme_Object *insp, int flags);
|
||||
Scheme_Comp_Env *scheme_new_expand_env(Scheme_Env *genv, Scheme_Object *insp, int flags);
|
||||
|
||||
Scheme_Object *scheme_namespace_lookup_value(Scheme_Object *sym, Scheme_Env *genv,
|
||||
Scheme_Object **_id, int *_use_map);
|
||||
Scheme_Object *scheme_find_local_shadower(Scheme_Object *sym, Scheme_Object *sym_marks,
|
||||
Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_do_local_lift_expr(const char *who, int stx_pos,
|
||||
int argc, Scheme_Object *argv[]);
|
||||
Scheme_Object *scheme_local_lift_context(Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_local_lift_end_statement(Scheme_Object *expr, Scheme_Object *local_mark,
|
||||
Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_local_lift_require(Scheme_Object *form, Scheme_Object *orig_form,
|
||||
intptr_t phase, Scheme_Object *local_mark,
|
||||
Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_local_lift_provide(Scheme_Object *form, Scheme_Object *local_mark,
|
||||
Scheme_Comp_Env *env);
|
||||
|
||||
void scheme_check_identifier(const char *formname, Scheme_Object *id,
|
||||
const char *where,
|
||||
Scheme_Comp_Env *env,
|
||||
|
@ -2436,6 +2448,8 @@ void scheme_add_local_syntax(int cnt, Scheme_Comp_Env *env);
|
|||
void scheme_set_local_syntax(int pos, Scheme_Object *name, Scheme_Object *val,
|
||||
Scheme_Comp_Env *env);
|
||||
|
||||
Scheme_Object *scheme_clone_vector(Scheme_Object *data, int skip, int set_type);
|
||||
|
||||
Scheme_Object *scheme_make_closure(Scheme_Thread *p,
|
||||
Scheme_Object *compiled_code,
|
||||
int close);
|
||||
|
@ -2445,6 +2459,7 @@ Scheme_Object *scheme_make_native_closure(Scheme_Native_Closure_Data *code);
|
|||
Scheme_Object *scheme_make_native_case_closure(Scheme_Native_Closure_Data *code);
|
||||
|
||||
void scheme_reset_app2_eval_type(Scheme_App2_Rec *app);
|
||||
void scheme_reset_app3_eval_type(Scheme_App3_Rec *app);
|
||||
|
||||
Scheme_Native_Closure_Data *scheme_generate_case_lambda(Scheme_Case_Lambda *cl);
|
||||
|
||||
|
@ -2485,7 +2500,6 @@ typedef struct SFS_Info {
|
|||
SFS_Info *scheme_new_sfs_info(int depth);
|
||||
Scheme_Object *scheme_sfs(Scheme_Object *expr, SFS_Info *info, int max_let_depth);
|
||||
Scheme_Object *scheme_sfs_expr(Scheme_Object *expr, SFS_Info *si, int self_pos);
|
||||
Scheme_Object *scheme_sfs_closure(Scheme_Object *expr, SFS_Info *si, int self_pos);
|
||||
|
||||
void scheme_sfs_used(SFS_Info *info, int pos);
|
||||
void scheme_sfs_push(SFS_Info *info, int count, int track);
|
||||
|
@ -2501,21 +2515,6 @@ typedef struct Scheme_Set_Bang {
|
|||
Scheme_Object *var, *val;
|
||||
} Scheme_Set_Bang;
|
||||
|
||||
/* Resolving & linking */
|
||||
#define DEFINE_VALUES_EXPD 0
|
||||
#define DEFINE_SYNTAX_EXPD 1
|
||||
#define SET_EXPD 2
|
||||
#define CASE_LAMBDA_EXPD 3
|
||||
#define BEGIN0_EXPD 4
|
||||
#define BOXENV_EXPD 5
|
||||
#define MODULE_EXPD 6
|
||||
#define REQUIRE_EXPD 7
|
||||
#define DEFINE_FOR_SYNTAX_EXPD 8
|
||||
#define REF_EXPD 9
|
||||
#define APPVALS_EXPD 10
|
||||
#define SPLICE_EXPD 11
|
||||
#define _COUNT_EXPD_ 12
|
||||
|
||||
Scheme_Object *scheme_protect_quote(Scheme_Object *expr);
|
||||
|
||||
#define IS_COMPILED_PROC(vals_expr) (SAME_TYPE(SCHEME_TYPE(vals_expr), scheme_compiled_unclosed_procedure_type) \
|
||||
|
@ -2553,25 +2552,17 @@ Resolve_Prefix *scheme_resolve_prefix(int phase, Comp_Prefix *cp, int simplify);
|
|||
Resolve_Prefix *scheme_remap_prefix(Resolve_Prefix *rp, Resolve_Info *ri);
|
||||
|
||||
Resolve_Info *scheme_resolve_info_create(Resolve_Prefix *rp);
|
||||
Resolve_Info *scheme_resolve_info_extend(Resolve_Info *info, int size, int oldsize, int mapcount);
|
||||
void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted);
|
||||
void scheme_resolve_info_adjust_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted);
|
||||
int scheme_resolve_info_flags(Resolve_Info *info, int pos, Scheme_Object **lifted);
|
||||
int scheme_resolve_info_lookup(Resolve_Info *resolve, int pos, int *flags, Scheme_Object **lifted, int convert_shift);
|
||||
int scheme_optimize_info_is_ready(Optimize_Info *info, int pos);
|
||||
void scheme_resolve_info_set_toplevel_pos(Resolve_Info *info, int pos);
|
||||
void scheme_merge_resolve_tl_map(Resolve_Info *info, Resolve_Info *new_info);
|
||||
void *scheme_merge_tl_map(void *tl_map, void *new_tl_map);
|
||||
void scheme_resolve_info_enforce_const(Resolve_Info *, int enforce_const);
|
||||
int scheme_resolve_info_max_let_depth(Resolve_Info *ri);
|
||||
int scheme_resolve_info_use_jit(Resolve_Info *ri);
|
||||
|
||||
void scheme_enable_expression_resolve_lifts(Resolve_Info *ri);
|
||||
Scheme_Object *scheme_merge_expression_resolve_lifts(Scheme_Object *expr, Resolve_Prefix *rp, Resolve_Info *ri);
|
||||
|
||||
Optimize_Info *scheme_optimize_info_create(void);
|
||||
|
||||
void scheme_optimize_propagate(Optimize_Info *info, int pos, Scheme_Object *value, int single_use);
|
||||
Scheme_Object *scheme_optimize_info_lookup(Optimize_Info *info, int pos, int *closure_offset, int *single_use,
|
||||
int once_used_ok, int context, int *potential_size);
|
||||
void scheme_optimize_info_used_top(Optimize_Info *info);
|
||||
void scheme_optimize_info_enforce_const(Optimize_Info *, int enforce_const);
|
||||
void scheme_optimize_info_set_context(Optimize_Info *, Scheme_Object *ctx);
|
||||
void scheme_optimize_info_never_inline(Optimize_Info *);
|
||||
|
||||
/* Controls for inlining algorithm: */
|
||||
#define OPT_ESTIMATE_FUTURE_SIZES 1
|
||||
|
@ -2582,73 +2573,21 @@ void scheme_optimize_info_used_top(Optimize_Info *info);
|
|||
Scheme_Object *scheme_estimate_closure_size(Scheme_Object *e);
|
||||
Scheme_Object *scheme_no_potential_size(Scheme_Object *value);
|
||||
|
||||
void scheme_optimize_mutated(Optimize_Info *info, int pos);
|
||||
void scheme_optimize_produces_flonum(Optimize_Info *info, int pos);
|
||||
Scheme_Object *scheme_optimize_reverse(Optimize_Info *info, int pos, int unless_mutated);
|
||||
int scheme_optimize_is_used(Optimize_Info *info, int pos);
|
||||
int scheme_optimize_any_uses(Optimize_Info *info, int start_pos, int end_pos);
|
||||
int scheme_optimize_is_mutated(Optimize_Info *info, int pos);
|
||||
int scheme_optimize_is_flonum_arg(Optimize_Info *info, int pos, int depth);
|
||||
int scheme_optimize_is_flonum_valued(Optimize_Info *info, int pos);
|
||||
|
||||
int scheme_is_flonum_expression(Scheme_Object *expr, Optimize_Info *info);
|
||||
char *scheme_get_closure_flonum_map(Scheme_Closure_Data *data, int arg_n, int *ok);
|
||||
void scheme_set_closure_flonum_map(Scheme_Closure_Data *data, char *flonum_map);
|
||||
void scheme_merge_closure_flonum_map(Scheme_Closure_Data *data1, Scheme_Closure_Data *data2);
|
||||
|
||||
Scheme_Object *scheme_optimize_clone(int dup_ok, Scheme_Object *obj, Optimize_Info *info, int delta, int closure_depth);
|
||||
Scheme_Object *scheme_optimize_shift(Scheme_Object *obj, int delta, int after_depth);
|
||||
Scheme_Object *scheme_clone_closure_compilation(int dup_ok, Scheme_Object *obj, Optimize_Info *info, int delta, int closure_depth);
|
||||
Scheme_Object *scheme_shift_closure_compilation(Scheme_Object *obj, int delta, int after_depth);
|
||||
|
||||
int scheme_closure_body_size(Scheme_Closure_Data *closure_data, int check_assign, Optimize_Info *info, int *is_leaf);
|
||||
int scheme_closure_argument_flags(Scheme_Closure_Data *closure_data, int i);
|
||||
int scheme_closure_has_top_level(Scheme_Closure_Data *data);
|
||||
|
||||
Optimize_Info *scheme_optimize_info_add_frame(Optimize_Info *info, int orig, int current, int flags);
|
||||
int scheme_optimize_info_get_shift(Optimize_Info *info, int pos);
|
||||
void scheme_optimize_info_done(Optimize_Info *info);
|
||||
|
||||
Scheme_Object *scheme_toplevel_to_flagged_toplevel(Scheme_Object *tl, int flags);
|
||||
|
||||
void scheme_env_make_closure_map(Optimize_Info *frame, mzshort *size, mzshort **map);
|
||||
int scheme_env_uses_toplevel(Optimize_Info *frame);
|
||||
|
||||
int scheme_wants_flonum_arguments(Scheme_Object *rator, int argpos, int rotate_mode);
|
||||
int scheme_expr_produces_flonum(Scheme_Object *expr);
|
||||
|
||||
typedef struct Scheme_Once_Used {
|
||||
Scheme_Object so;
|
||||
Scheme_Object *expr;
|
||||
int pos;
|
||||
int vclock;
|
||||
|
||||
int used;
|
||||
int delta;
|
||||
Optimize_Info *info;
|
||||
|
||||
struct Scheme_Once_Used *next;
|
||||
} Scheme_Once_Used;
|
||||
|
||||
Scheme_Once_Used *scheme_make_once_used(Scheme_Object *val, int pos, int vclock, Scheme_Once_Used *prev);
|
||||
|
||||
int scheme_resolve_toplevel_pos(Resolve_Info *info);
|
||||
int scheme_resolve_is_toplevel_available(Resolve_Info *info);
|
||||
int scheme_resolve_quote_syntax_offset(int i, Resolve_Info *info);
|
||||
int scheme_resolve_quote_syntax_pos(Resolve_Info *info);
|
||||
Scheme_Object *scheme_resolve_toplevel(Resolve_Info *info, Scheme_Object *expr, int keep_ready);
|
||||
Scheme_Object *scheme_resolve_invent_toplevel(Resolve_Info *info);
|
||||
Scheme_Object *scheme_resolve_invented_toplevel_to_defn(Resolve_Info *info, Scheme_Object *tl);
|
||||
Scheme_Object *scheme_shift_toplevel(Scheme_Object *expr, int delta);
|
||||
Scheme_Object *scheme_resolve_generate_stub_lift(void);
|
||||
int scheme_resolve_quote_syntax(Resolve_Info *info, int oldpos);
|
||||
int scheme_resolving_in_procedure(Resolve_Info *info);
|
||||
|
||||
void scheme_resolve_lift_definition(Resolve_Info *info, Scheme_Object *var, Scheme_Object *rhs);
|
||||
|
||||
Scheme_Object *scheme_make_compiled_syntax(Scheme_Syntax *syntax,
|
||||
Scheme_Syntax_Expander *exp);
|
||||
|
||||
Scheme_Object *scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env,
|
||||
Scheme_Compile_Expand_Info *rec, int drec,
|
||||
int app_position);
|
||||
|
||||
Scheme_Object *scheme_compile_expr(Scheme_Object *form, Scheme_Comp_Env *env,
|
||||
Scheme_Compile_Info *rec, int drec);
|
||||
Scheme_Object *scheme_compile_sequence(Scheme_Object *forms, Scheme_Comp_Env *env,
|
||||
|
@ -2663,6 +2602,13 @@ Scheme_Object *scheme_compile_list(Scheme_Object *form, Scheme_Comp_Env *env,
|
|||
Scheme_Object *scheme_compile_expr_lift_to_let(Scheme_Object *form, Scheme_Comp_Env *env,
|
||||
Scheme_Compile_Info *rec, int drec);
|
||||
|
||||
Scheme_Object *scheme_pair_lifted(Scheme_Object *_ip, Scheme_Object **_ids, Scheme_Object *expr,
|
||||
Scheme_Comp_Env *env);
|
||||
Scheme_Object *scheme_add_lifts_as_let(Scheme_Object *obj, Scheme_Object *l, Scheme_Comp_Env *env,
|
||||
Scheme_Object *orig_form, int comp_rev);
|
||||
|
||||
void scheme_add_core_stop_form(int pos, Scheme_Object *sym, Scheme_Comp_Env *env);
|
||||
|
||||
void scheme_default_compile_rec(Scheme_Compile_Info *src, int drec);
|
||||
void scheme_compile_rec_done_local(Scheme_Compile_Info *src, int drec);
|
||||
void scheme_init_compile_recs(Scheme_Compile_Info *src, int drec,
|
||||
|
@ -2680,20 +2626,14 @@ void scheme_init_expand_recs(Scheme_Expand_Info *src, int drec,
|
|||
|
||||
void scheme_rec_add_certs(Scheme_Compile_Expand_Info *src, int drec, Scheme_Object *stx);
|
||||
|
||||
Scheme_Object *scheme_make_closure_compilation(Scheme_Comp_Env *env,
|
||||
Scheme_Object *uncompiled_code,
|
||||
Scheme_Compile_Info *rec, int drec);
|
||||
Scheme_Object *scheme_make_sequence_compilation(Scheme_Object *compiled_list,
|
||||
int strip_values);
|
||||
|
||||
Scheme_Object *scheme_optimize_closure_compilation(Scheme_Object *_data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info,
|
||||
int can_lift, int convert, int just_compute_lift,
|
||||
Scheme_Object *precomputed_lift);
|
||||
|
||||
Scheme_App_Rec *scheme_malloc_application(int n);
|
||||
void scheme_finish_application(Scheme_App_Rec *app);
|
||||
|
||||
Scheme_Sequence *scheme_malloc_sequence(int count);
|
||||
|
||||
Scheme_Object *scheme_jit_expr(Scheme_Object *);
|
||||
Scheme_Object *scheme_jit_closure(Scheme_Object *, Scheme_Object *context);
|
||||
void scheme_jit_fill_threadlocal_table();
|
||||
|
@ -2810,11 +2750,16 @@ int scheme_used_ever(Scheme_Comp_Env *env, int which);
|
|||
|
||||
int scheme_omittable_expr(Scheme_Object *o, int vals, int fuel, int resolved,
|
||||
Optimize_Info *warn_info, int deeper_than);
|
||||
int scheme_might_invoke_call_cc(Scheme_Object *value);
|
||||
int scheme_is_liftable(Scheme_Object *o, int bind_count, int fuel, int as_rator);
|
||||
|
||||
int scheme_is_env_variable_boxed(Scheme_Comp_Env *env, int which);
|
||||
|
||||
int scheme_get_eval_type(Scheme_Object *obj);
|
||||
|
||||
Scheme_Object *scheme_make_application(Scheme_Object *v);
|
||||
Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Object *context);
|
||||
|
||||
Scheme_Object *scheme_get_stop_expander(void);
|
||||
|
||||
void scheme_define_parse(Scheme_Object *form,
|
||||
|
@ -2853,13 +2798,6 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr,
|
|||
Scheme_Object *app_rator, int proc_with_refs_ok,
|
||||
int result_ignored, struct Validate_Clearing *vc,
|
||||
int tailpos, int need_flonum, Scheme_Hash_Tree *procs);
|
||||
void scheme_validate_toplevel(Scheme_Object *expr, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts, void *tl_use_map,
|
||||
int skip_refs_check);
|
||||
void scheme_validate_boxenv(int pos, Mz_CPort *port,
|
||||
char *stack, int depth, int delta, int letlimit);
|
||||
|
||||
int scheme_validate_rator_wants_box(Scheme_Object *app_rator, int pos,
|
||||
int hope,
|
||||
|
@ -2936,152 +2874,12 @@ Scheme_Object *scheme_rename_transformer_id(Scheme_Object *o);
|
|||
int scheme_is_set_transformer(Scheme_Object *o);
|
||||
Scheme_Object *scheme_set_transformer_proc(Scheme_Object *o);
|
||||
|
||||
Scheme_Object *scheme_define_values_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_ref_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_set_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_define_syntaxes_execute(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_define_for_syntaxes_execute(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_case_lambda_execute(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_begin0_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_apply_values_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_splice_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_bangboxenv_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_top_level_require_execute(Scheme_Object *data);
|
||||
Scheme_Object *scheme_case_lambda_execute(Scheme_Object *expr);
|
||||
|
||||
Scheme_Object *scheme_define_values_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_ref_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_set_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_define_syntaxes_optimize(Scheme_Object *expr, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_define_for_syntaxes_optimize(Scheme_Object *expr, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_case_lambda_optimize(Scheme_Object *expr, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_begin0_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_apply_values_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_module_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
Scheme_Object *scheme_top_level_require_optimize(Scheme_Object *data, Optimize_Info *info, int context);
|
||||
|
||||
Scheme_Object *scheme_begin0_clone(int dup_ok, Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth);
|
||||
Scheme_Object *scheme_set_clone(int dup_ok, Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth);
|
||||
Scheme_Object *scheme_apply_values_clone(int dup_ok, Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth);
|
||||
Scheme_Object *scheme_case_lambda_clone(int dup_ok, Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth);
|
||||
|
||||
Scheme_Object *scheme_begin0_shift(Scheme_Object *data, int delta, int after_depth);
|
||||
Scheme_Object *scheme_set_shift(Scheme_Object *data, int delta, int after_depth);
|
||||
Scheme_Object *scheme_ref_shift(Scheme_Object *data, int delta, int after_depth);
|
||||
Scheme_Object *scheme_case_lambda_shift(Scheme_Object *data, int delta, int after_depth);
|
||||
Scheme_Object *scheme_apply_values_shift(Scheme_Object *data, int delta, int after_depth);
|
||||
|
||||
Scheme_Object *scheme_define_values_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_ref_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_set_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_define_syntaxes_resolve(Scheme_Object *expr, Resolve_Info *info);
|
||||
Scheme_Object *scheme_define_for_syntaxes_resolve(Scheme_Object *expr, Resolve_Info *info);
|
||||
Scheme_Object *scheme_case_lambda_resolve(Scheme_Object *expr, Resolve_Info *info);
|
||||
Scheme_Object *scheme_begin0_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_apply_values_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_module_expr_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
Scheme_Object *scheme_top_level_require_resolve(Scheme_Object *data, Resolve_Info *info);
|
||||
|
||||
Scheme_Object *scheme_define_values_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_ref_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_set_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_define_syntaxes_sfs(Scheme_Object *expr, SFS_Info *info);
|
||||
Scheme_Object *scheme_define_for_syntaxes_sfs(Scheme_Object *expr, SFS_Info *info);
|
||||
Scheme_Object *scheme_case_lambda_sfs(Scheme_Object *expr, SFS_Info *info);
|
||||
Scheme_Object *scheme_begin0_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_apply_values_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_bangboxenv_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_module_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
Scheme_Object *scheme_top_level_require_sfs(Scheme_Object *data, SFS_Info *info);
|
||||
|
||||
void scheme_define_values_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_ref_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_set_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_define_for_syntaxes_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_case_lambda_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_begin0_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_apply_values_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_bangboxenv_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_module_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
void scheme_top_level_require_validate(Scheme_Object *data, Mz_CPort *port,
|
||||
char *stack, Validate_TLS tls,
|
||||
int depth, int letlimit, int delta,
|
||||
int num_toplevels, int num_stxes, int num_lifts,
|
||||
void *tl_use_map, int result_ignored,
|
||||
struct Validate_Clearing *vc, int tailpos,
|
||||
Scheme_Hash_Tree *procs);
|
||||
|
||||
Scheme_Object *scheme_define_values_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_ref_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_set_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_define_syntaxes_jit(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_define_for_syntaxes_jit(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_case_lambda_jit(Scheme_Object *expr);
|
||||
Scheme_Object *scheme_begin0_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_apply_values_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_bangboxenv_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_module_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_top_level_require_jit(Scheme_Object *data);
|
||||
Scheme_Object *scheme_case_lambda_jit(Scheme_Object *expr);
|
||||
|
||||
/*========================================================================*/
|
||||
/* namespaces and modules */
|
||||
|
@ -3306,6 +3104,8 @@ void scheme_module_force_lazy(Scheme_Env *env, int previous);
|
|||
|
||||
int scheme_module_export_position(Scheme_Object *modname, Scheme_Env *env, Scheme_Object *varname);
|
||||
|
||||
Scheme_Module_Exports *scheme_make_module_exports();
|
||||
|
||||
Scheme_Object *scheme_check_accessible_in_module(Scheme_Env *env, Scheme_Object *prot_insp, Scheme_Object *in_modidx,
|
||||
Scheme_Object *symbol, Scheme_Object *stx,
|
||||
Scheme_Object *certs, Scheme_Object *unexp_insp,
|
||||
|
|
1272
src/racket/src/sfs.c
Normal file
1272
src/racket/src/sfs.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
16246
src/racket/src/syntax.c
16246
src/racket/src/syntax.c
File diff suppressed because it is too large
Load Diff
1563
src/racket/src/validate.c
Normal file
1563
src/racket/src/validate.c
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -32,6 +32,8 @@
|
|||
"bool"
|
||||
"builtin"
|
||||
"char"
|
||||
"compenv"
|
||||
"compile"
|
||||
"complex"
|
||||
"dynext"
|
||||
"env"
|
||||
|
@ -47,9 +49,11 @@
|
|||
"jitcall"
|
||||
"jitcommon"
|
||||
"jitinline"
|
||||
"jitprep"
|
||||
"jitstack"
|
||||
"jitstate"
|
||||
"list"
|
||||
"marshal"
|
||||
"module"
|
||||
"mzrt"
|
||||
"network"
|
||||
|
@ -57,22 +61,25 @@
|
|||
"number"
|
||||
"numcomp"
|
||||
"numstr"
|
||||
"places"
|
||||
"optimize"
|
||||
"place"
|
||||
"port"
|
||||
"portfun"
|
||||
"print"
|
||||
"rational"
|
||||
"read"
|
||||
"regexp"
|
||||
"resolve"
|
||||
"sema"
|
||||
"setjmpup"
|
||||
"sfs"
|
||||
"string"
|
||||
"struct"
|
||||
"symbol"
|
||||
"syntax"
|
||||
"stxobj"
|
||||
"thread"
|
||||
"type"
|
||||
"validate"
|
||||
"vector"))
|
||||
|
||||
(define common-cpp-defs " /D _CRT_SECURE_NO_DEPRECATE /D _USE_DECLSPECS_FOR_SAL=0 /D _USE_ATTRIBUTES_FOR_SAL=0 ")
|
||||
|
|
|
@ -561,6 +561,14 @@
|
|||
RelativePath="..\..\Racket\Src\Char.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\Compenv.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\Compile.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\Complex.c"
|
||||
>
|
||||
|
@ -629,6 +637,10 @@
|
|||
RelativePath="..\..\Racket\Src\jitinline.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\jitprep.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\jitstack.c"
|
||||
>
|
||||
|
@ -645,6 +657,10 @@
|
|||
RelativePath="..\..\Racket\Src\module.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\marshal.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\mzrt.c"
|
||||
>
|
||||
|
@ -674,7 +690,11 @@
|
|||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\places.c"
|
||||
RelativePath="..\..\Racket\Src\optimize.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\place.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
@ -701,6 +721,10 @@
|
|||
RelativePath="..\..\Racket\Src\Regexp.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\resolve.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\Salloc.c"
|
||||
>
|
||||
|
@ -713,6 +737,10 @@
|
|||
RelativePath="..\..\Racket\Src\Setjmpup.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\sfs.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\String.c"
|
||||
>
|
||||
|
@ -721,10 +749,6 @@
|
|||
RelativePath="..\..\Racket\Src\Struct.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\stxobj.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\Symbol.c"
|
||||
>
|
||||
|
@ -741,6 +765,10 @@
|
|||
RelativePath="..\..\Racket\Src\Type.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\validate.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Racket\Src\vector.c"
|
||||
>
|
||||
|
|
|
@ -187,6 +187,8 @@
|
|||
<ClCompile Include="..\..\Racket\Src\Bool.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\builtin.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Char.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Compenv.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Compile.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Complex.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Dynext.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Env.c" />
|
||||
|
@ -204,9 +206,11 @@
|
|||
<ClCompile Include="..\..\Racket\Src\jitcall.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\jitcommon.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\jitinline.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\jitprep.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\jitstack.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\jitstate.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\List.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\marshal.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\module.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\mzrt.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\mzsj86.c" />
|
||||
|
@ -215,23 +219,26 @@
|
|||
<ClCompile Include="..\..\Racket\Src\Number.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\numcomp.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\numstr.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\places.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\optimize.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\place.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Port.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\portfun.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Print.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Rational.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Read.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Regexp.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\resolve.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Salloc.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Sema.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Setjmpup.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\sfs.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\String.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Struct.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\stxobj.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Symbol.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Syntax.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\thread.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\Type.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\validate.c" />
|
||||
<ClCompile Include="..\..\Racket\Src\vector.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
Loading…
Reference in New Issue
Block a user