forked from racket/racket
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cs: new vfasl writer to support cross compilation
Replace the vfasl writer (which was in C) with a new implementation (in Scheme). The main result is that the vfasl writer can be used in cross-build mode. Racket uses the vfasl format for its boot images, because they can load faster --- cutting the Chez Scheme plus boot files startup time in half, which saves about 40msec on a typical machine. That's not enough to matter for something like DrRacket, but it can matter for small Racket scripts. Formerly, cross builds disabled vfasl generation. A vfasl file is roughly an image of code and data as it will appear in memory, and a relatively fast linking step makes the image work in a running process. The old implementation was in C because it reused GC structures and code, treating fasl creation as copying objects into a vfasl image instead of a new generation. The new implementation is more like a fasl reader, loading objects into a vfasl image instead of the live heap. The two implementations are about the same amount of code and both involve a certain amount of repeated implementation (i.e., imitating a collection or fasl load), but the Scheme implementation is more flexible and works for cross compilation.
- Loading branch information
Showing
36 changed files
with
1,687 additions
and
1,425 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.