From 180bfa7ca8efeb1297a0bc3f0ff55b02b4e40f9b Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 30 Aug 2015 10:58:38 +0100 Subject: [PATCH] src/final.lisp, src/frontend.lisp: Compile methods before dumping. Exercise the method machinery so we don't have to run the compiler as much after dumping. --- src/final.lisp | 24 ++++++++++++++++++++++++ src/frontend.lisp | 1 + 2 files changed, 25 insertions(+) diff --git a/src/final.lisp b/src/final.lisp index dd8834f..12b6294 100644 --- a/src/final.lisp +++ b/src/final.lisp @@ -44,4 +44,28 @@ :if-does-not-exist :create) (output-module (read-module path) reason out))) +;;;-------------------------------------------------------------------------- +;;; Calisthenics. + +(export 'exercise) +(defun exercise () + "Exercise the pieces of the metaobject protocol. + + In some Lisps, the compiler is run the first time methods are called, to + do fancy just-in-time optimization things. This is great, only the + program doesn't actually run for very long and a lot of that work is + wasted because we're going to have to do it again next time the program + starts. Only, if we exercise the various methods, or at least a large + fraction of them, before we dump an image, then everything will be fast. + + That's the theory anyway. Call this function before you dump an image and + see what happens." + + (clear-the-decks) + (dolist (reason '(:h :c)) + (with-output-to-string (bitbucket) + (output-module *builtin-module* reason bitbucket))) + + (clear-the-decks)) + ;;;----- That's all, folks -------------------------------------------------- diff --git a/src/frontend.lisp b/src/frontend.lisp index e293f29..26afbfc 100644 --- a/src/frontend.lisp +++ b/src/frontend.lisp @@ -33,6 +33,7 @@ ;;; Preparation for dumping. (make-builtin-module) +(exercise) ;;;-------------------------------------------------------------------------- ;;; The main program. -- 2.11.0