cs: convert Rumble though expander to boot file
Loading as a boot file saves time later on major GCs.
This commit is contained in:
parent
f2a7405dda
commit
3e9196ab5c
|
@ -110,16 +110,19 @@ $(SCHEME_BIN):
|
|||
cd @SCHEME_SRC@ && ./configure @SCHEME_CONFIG_ARGS@
|
||||
cd @SCHEME_SRC@ && make
|
||||
|
||||
racket.boot: racket.so
|
||||
$(SCHEME) --script $(srcdir)/convert-to-boot.ss @COMPRESS_COMP@ racket.so racket.boot
|
||||
|
||||
# ----------------------------------------
|
||||
# Unix
|
||||
|
||||
EMBED_DEPS = $(srcdir)/embed-boot.rkt
|
||||
|
||||
racketcs@NOT_OSX@: raw_racketcs racket.so $(EMBED_DEPS)
|
||||
$(RACKET) $(srcdir)/embed-boot.rkt @COMPRESS_COMP@ raw_racketcs racketcs $(SCHEME_INC) racket.so
|
||||
$(RACKET) $(srcdir)/embed-boot.rkt @COMPRESS_COMP@ raw_racketcs racketcs $(SCHEME_INC) racket.boot
|
||||
|
||||
gracketcs@NOT_OSX@: raw_gracketcs racket.so $(EMBED_DEPS)
|
||||
$(RACKET) $(srcdir)/embed-boot.rkt @COMPRESS_COMP@ raw_gracketcs gracketcs $(SCHEME_INC) racket.so
|
||||
$(RACKET) $(srcdir)/embed-boot.rkt @COMPRESS_COMP@ raw_gracketcs gracketcs $(SCHEME_INC) racket.boot
|
||||
|
||||
BOOT_OBJS = boot.o $(SCHEME_INC)/kernel.o rktio/librktio.a
|
||||
|
||||
|
@ -152,7 +155,7 @@ $(GRACKET_BIN): grmain.o $(RKTFW) $(GRAPPSKEL)
|
|||
$(GRAPPSKEL): $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../../racket/src/schvers.h $(srcdir)/../../mac/icon/GRacket.icns
|
||||
env $(RACKET) $(srcdir)/../../mac/osx_appl.rkt $(srcdir)/../.. "CS"
|
||||
|
||||
BOOT_FILES = $(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot racket.so
|
||||
BOOT_FILES = $(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot racket.boot
|
||||
FW_BOOT_DEST = Racket.framework/Versions/$(FWVERSION)_CS/boot
|
||||
|
||||
$(RKTFW): $(BOOT_OBJS) $(BOOT_FILES)
|
||||
|
@ -162,8 +165,8 @@ $(RKTFW): $(BOOT_OBJS) $(BOOT_FILES)
|
|||
ln -s Versions/$(FWVERSION)_CS/Racket Racket.framework/Racket
|
||||
mkdir -p Racket.framework/Versions/$(FWVERSION)_CS/boot
|
||||
cp $(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot $(FW_BOOT_DEST)
|
||||
cp racket.so $(FW_BOOT_DEST)
|
||||
$(RACKET) $(srcdir)/adjust-compress.rkt @COMPRESS_COMP@ $(FW_BOOT_DEST)/petite.boot $(FW_BOOT_DEST)/scheme.boot $(FW_BOOT_DEST)/racket.so
|
||||
cp racket.boot $(FW_BOOT_DEST)
|
||||
$(RACKET) $(srcdir)/adjust-compress.rkt @COMPRESS_COMP@ $(FW_BOOT_DEST)/petite.boot $(FW_BOOT_DEST)/scheme.boot $(FW_BOOT_DEST)/racket.boot
|
||||
|
||||
# ----------------------------------------
|
||||
# Common
|
||||
|
@ -222,7 +225,7 @@ macos-install:
|
|||
mkdir -p $(DESTDIR)"$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot"
|
||||
cp $(RKTFWDIR)/boot/petite.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
|
||||
cp $(RKTFWDIR)/boot/scheme.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
|
||||
cp $(RKTFWDIR)/boot/racket.so $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
|
||||
cp $(RKTFWDIR)/boot/racket.boot $(DESTDIR)$(RKTFWDEST)/Versions/$(FWVERSION)_CS/boot/
|
||||
/usr/bin/install_name_tool -change "@executable_path/Racket.framework/Versions/$(FWVERSION)_CS/Racket" "@FRAMEWORK_PREFIX@Racket.framework/Versions/$(FWVERSION)_CS/Racket" $(DESTDIR)"$(bindir)/racket$(CS_GR_INSTALLED)"
|
||||
rm -rf $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app"
|
||||
$(ICP) -r "GRacketCS.app" $(DESTDIR)"$(libpltdir)/GRacket$(CS_GR_INSTALLED).app"
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
#include "rktio.h"
|
||||
#include "boot.h"
|
||||
|
||||
#define RACKET_AS_BOOT
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
# define BOOT_O_BINARY O_BINARY
|
||||
#endif
|
||||
|
@ -70,13 +72,21 @@ static void racket_exit(int v)
|
|||
exit(v);
|
||||
}
|
||||
|
||||
static void init_foreign()
|
||||
{
|
||||
# include "rktio.inc"
|
||||
Sforeign_symbol("racket_exit", (void *)racket_exit);
|
||||
}
|
||||
|
||||
void racket_boot(int argc, char **argv, char *self, long segment_offset,
|
||||
char *coldir, char *configdir,
|
||||
int pos1, int pos2, int pos3,
|
||||
int is_gui)
|
||||
/* exe argument already stripped from argv */
|
||||
{
|
||||
int fd;
|
||||
#if !defined(RACKET_USE_FRAMEWORK) || !defined(RACKET_AS_BOOT)
|
||||
int fd;
|
||||
#endif
|
||||
#ifdef RACKET_USE_FRAMEWORK
|
||||
const char *fw_path;
|
||||
#endif
|
||||
|
@ -87,6 +97,9 @@ void racket_boot(int argc, char **argv, char *self, long segment_offset,
|
|||
fw_path = get_framework_path();
|
||||
Sregister_boot_file(path_append(fw_path, "petite.boot"));
|
||||
Sregister_boot_file(path_append(fw_path, "scheme.boot"));
|
||||
# ifdef RACKET_AS_BOOT
|
||||
Sregister_boot_file(path_append(fw_path, "racket.boot"));
|
||||
# endif
|
||||
#else
|
||||
fd = open(self, O_RDONLY | BOOT_O_BINARY);
|
||||
|
||||
|
@ -100,13 +113,16 @@ void racket_boot(int argc, char **argv, char *self, long segment_offset,
|
|||
fd2 = open(self, O_RDONLY | BOOT_O_BINARY);
|
||||
lseek(fd2, pos2, SEEK_SET);
|
||||
Sregister_boot_file_fd("scheme", fd2);
|
||||
|
||||
# ifdef RACKET_AS_BOOT
|
||||
fd = open(self, O_RDONLY | BOOT_O_BINARY);
|
||||
lseek(fd, pos3, SEEK_SET);
|
||||
Sregister_boot_file_fd("racket", fd);
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
Sbuild_heap(NULL, NULL);
|
||||
|
||||
# include "rktio.inc"
|
||||
Sforeign_symbol("racket_exit", (void *)racket_exit);
|
||||
Sbuild_heap(NULL, init_foreign);
|
||||
|
||||
{
|
||||
ptr l = Snil;
|
||||
|
@ -122,13 +138,25 @@ void racket_boot(int argc, char **argv, char *self, long segment_offset,
|
|||
l = Scons(Sbytevector(configdir), l);
|
||||
l = Scons(Sbytevector(coldir), l);
|
||||
l = Scons(Sbytevector(self), l);
|
||||
|
||||
#ifdef RACKET_AS_BOOT
|
||||
{
|
||||
ptr c, start, apply;
|
||||
c = Stop_level_value(Sstring_to_symbol("scheme-start"));
|
||||
start = Scall0(c);
|
||||
apply = Stop_level_value(Sstring_to_symbol("apply"));
|
||||
Scall2(apply, start, l);
|
||||
}
|
||||
#else
|
||||
Sset_top_level_value(Sstring_to_symbol("bytes-command-line-arguments"), l);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RACKET_USE_FRAMEWORK
|
||||
#ifndef RACKET_AS_BOOT
|
||||
# ifdef RACKET_USE_FRAMEWORK
|
||||
fd = open(path_append(fw_path, "racket.so"), O_RDONLY);
|
||||
pos3 = 0;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
{
|
||||
ptr c, p;
|
||||
|
@ -143,4 +171,5 @@ void racket_boot(int argc, char **argv, char *self, long segment_offset,
|
|||
c = Stop_level_value(Sstring_to_symbol("load-compiled-from-port"));
|
||||
Scall1(c, p);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
17
racket/src/cs/c/convert-to-boot.ss
Normal file
17
racket/src/cs/c/convert-to-boot.ss
Normal file
|
@ -0,0 +1,17 @@
|
|||
(compile-compressed #f)
|
||||
|
||||
(define-values (src dest)
|
||||
(let loop ([args (command-line-arguments)])
|
||||
(cond
|
||||
[(and (pair? args)
|
||||
(equal? (car args) "--compress"))
|
||||
(compile-compressed #t)
|
||||
(loop (cdr args))]
|
||||
[(null? args)
|
||||
(error 'convert-to-boot "missing file arguments")]
|
||||
[(and (pair? (cdr args)) (null? (cddr args)))
|
||||
(values (car args) (cadr args))]
|
||||
[else
|
||||
(error 'convert-to-boot "extra arguments after files")])))
|
||||
|
||||
(make-boot-file dest '("petite" "scheme") src)
|
|
@ -9,11 +9,11 @@
|
|||
#:once-each
|
||||
[("--compress") "Leave compiled code files as compressed"
|
||||
(enable-compress!)]
|
||||
#:args (src-file dest-file boot-dir racket.so)
|
||||
#:args (src-file dest-file boot-dir racket.boot)
|
||||
|
||||
(define bstr1 (adjust-compress (file->bytes (build-path boot-dir "petite.boot"))))
|
||||
(define bstr2 (adjust-compress (file->bytes (build-path boot-dir "scheme.boot"))))
|
||||
(define bstr3 (adjust-compress (file->bytes racket.so)))
|
||||
(define bstr3 (adjust-compress (file->bytes racket.boot)))
|
||||
|
||||
(with-handlers ([exn? (lambda (x)
|
||||
(when (file-exists? dest-file)
|
||||
|
|
|
@ -42,7 +42,13 @@
|
|||
|
||||
(define-syntax seq (syntax-rules () [(_ expr ...) (define dummy (let () expr ... (void)))]))
|
||||
|
||||
(define (run the-command-line-arguments)
|
||||
(define (run the-command-line-arguments/maybe-bytes)
|
||||
(define the-command-line-arguments
|
||||
(map (lambda (s) (if (bytes? s)
|
||||
(bytes->string/locale s #\?)
|
||||
s))
|
||||
the-command-line-arguments/maybe-bytes))
|
||||
|
||||
(seq
|
||||
(unless (>= (length the-command-line-arguments) 5)
|
||||
(error 'racket "expected `self`, `collects`, and `libs` paths plus `segment-offset` and `is-gui?` to start"))
|
||||
|
@ -518,8 +524,7 @@
|
|||
|
||||
(define the-command-line-arguments
|
||||
(or (and (top-level-bound? 'bytes-command-line-arguments)
|
||||
(map (lambda (s) (bytes->string/locale s #\?))
|
||||
(top-level-value 'bytes-command-line-arguments)))
|
||||
(top-level-value 'bytes-command-line-arguments))
|
||||
(command-line-arguments)))
|
||||
|
||||
(if (null? the-command-line-arguments)
|
||||
|
|
BIN
racket/src/cs/racket.boot
Normal file
BIN
racket/src/cs/racket.boot
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user