X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/a9cffac12f45d917ae632f4037991d7ba66091fb..c32aa709ec47cee02e46fc9e74e58eb6a9b430a6:/src/final.lisp?ds=sidebyside diff --git a/src/final.lisp b/src/final.lisp index dd8834f..7d4468e 100644 --- a/src/final.lisp +++ b/src/final.lisp @@ -7,7 +7,7 @@ ;;;----- Licensing notice --------------------------------------------------- ;;; -;;; This file is part of the Sensble Object Design, an object system for C. +;;; This file is part of the Sensible Object Design, an object system for C. ;;; ;;; SOD is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by @@ -25,6 +25,13 @@ (cl:in-package #:sod) +;;;-------------------------------------------------------------------------- +;;; Miscellaneous details. + +(export '*sod-version*) +(defparameter *sod-version* sod-sysdef:*version* + "The version of the SOD translator system, as a string.") + ;;;-------------------------------------------------------------------------- ;;; Debugging utilities. @@ -35,7 +42,6 @@ (export 'test-module) (defun test-module (path reason) "Reset the translator's state, read a module from PATH and output it with REASON, returning the result as a string." - (unless *builtin-module* (make-builtin-module)) (clear-the-decks) (setf *module-map* (make-hash-table :test #'equal)) (with-open-file (out *debugout-pathname* @@ -44,4 +50,28 @@ (defun test-module (path reason) :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 --------------------------------------------------