[slime-devel] Patch for CLISP with `readtable-case' set to :invert.

Lars Rune Nøstdal larsnostdal at gmail.com
Sun Nov 26 17:16:46 UTC 2006

Ok, I'm probably the only one using `readtable-case' set to :invert .. but
just in case, here is a patch with changes I had to do to get latest Slime
and CLISP-2.41 to start Slime. It's tested with SBCL- also:

cvs diff: Diffing .
Index: metering.lisp
RCS file: /project/slime/cvsroot/slime/metering.lisp,v
retrieving revision 1.4
diff -u -r1.4 metering.lisp
--- metering.lisp       1 Apr 2005 20:16:35 -0000       1.4
+++ metering.lisp       26 Nov 2006 17:13:54 -0000
@@ -359,17 +359,17 @@
 ;;; For CLtL2 compatible lisps
-(defpackage "MONITOR" (:nicknames "MON") (:use "COMMON-LISP")
-          "WITH-MONITORING"
-          "MONITORED"
-          "REPORT"))
-(in-package "MONITOR")
+(defpackage :monitor (:nicknames :mon) (:use :cl)
+  (:export :*monitored-functions*
+           :monitor :monitor-all :unmonitor :monitor-form
+           :with-monitoring
+           :reset-monitoring-info :reset-all-monitoring
+           :monitored
+           :report-monitoring
+           :display-monitoring-results
+           :monitoring-encapsulate :monitoring-unencapsulate
+           :report))
+(in-package :monitor)
 ;;; Warn user if they're loading the source instead of compiling it first.
 (eval-when (eval)
@@ -594,16 +594,16 @@
 ;;; ********************************
 ;;; Global Variables ***************
 ;;; ********************************
+(defvar *monitor-time-overhead* nil
   "The amount of time an empty monitored function costs.")
+(defvar *monitor-cons-overhead* nil
   "The amount of cons an empty monitored function costs.")
-(defvar *TOTAL-TIME* 0
+(defvar *total-time* 0
   "Total amount of time monitored so far.")
-(defvar *TOTAL-CONS* 0
+(defvar *total-cons* 0
   "Total amount of consing monitored so far.")
-(defvar *TOTAL-CALLS* 0
+(defvar *total-calls* 0
   "Total number of calls monitored so far.")
 (proclaim '(type time-type *total-time*))
 (proclaim '(type consing-type *total-cons*))
@@ -614,7 +614,7 @@
 ;;; ********************************
 ;;; Perhaps the SYMBOLP should be FBOUNDP? I.e., what about variables
 ;;; containing closures.
-(defmacro PLACE-FUNCTION (function-place)
+(defmacro place-function (function-place)
   "Return the function found at FUNCTION-PLACE. Evals FUNCTION-PLACE
 if it isn't a symbol, to allow monitoring of closures located in
@@ -628,7 +628,7 @@
            (symbol-function ,function-place)
            (eval ,function-place))))
-(defsetf PLACE-FUNCTION (function-place) (function)
+(defsetf place-function (function-place) (function)
   "Set the function in FUNCTION-PLACE to FUNCTION."
   (if (fboundp 'fdefinition)
       ;; If we're conforming to CLtL2, use fdefinition here.
@@ -656,7 +656,7 @@
        (eval '(setf ,function-place ',function))))
-(defun PLACE-FBOUNDP (function-place)
+(defun place-fboundp (function-place)
   "Test to see if FUNCTION-PLACE is a function."
   ;; probably should be
   #|(or (and (symbolp function-place)(fboundp function-place))
@@ -665,7 +665,7 @@
       (fboundp function-place)
       (functionp (place-function function-place))))
-(defun PLACE-MACROP (function-place)
+(defun place-macrop (function-place)
   "Test to see if FUNCTION-PLACE is a macro."
   (when (symbolp function-place)
     (macro-function function-place)))
@@ -705,7 +705,7 @@
 (defsetf get-monitor-info (name) (info)
   `(setf (gethash ,name *monitor*) ,info))
-(defun MONITORED (function-place)
+(defun monitored (function-place)
   "Test to see if a FUNCTION-PLACE is monitored."
   (and (place-fboundp function-place)   ; this line necessary?
        (get-monitor-info function-place)))
@@ -933,7 +933,7 @@
 ;;; ********************************
 ;;; Main Monitoring Functions ******
 ;;; ********************************
-(defmacro MONITOR (&rest names)
+(defmacro monitor (&rest names)
   "Monitor the named functions. As in TRACE, the names are not evaluated.
    If a function is already monitored, then unmonitor and remonitor (useful
    to notice function redefinition). If a name is undefined, give a warning
@@ -943,13 +943,13 @@
      ,@(mapcar #'(lambda (name) `(monitoring-encapsulate ',name)) names)
-(defmacro UNMONITOR (&rest names)
+(defmacro unmonitor (&rest names)
   "Remove the monitoring on the named functions.
    Names defaults to the list of all currently monitored functions."
   `(dolist (name ,(if names `',names '*monitored-functions*) (values))
      (monitoring-unencapsulate name)))
-(defun MONITOR-ALL (&optional (package *package*))
+(defun monitor-all (&optional (package *package*))
   "Monitor all functions in the specified package."
   (let ((package (if (packagep package)
@@ -958,7 +958,7 @@
       (when (eq (symbol-package symbol) package)
         (monitoring-encapsulate symbol)))))
-(defmacro MONITOR-FORM (form
+(defmacro monitor-form (form
                         &optional (nested :exclusive) (threshold 0.01)
                         (key :percent-time))
   "Monitor the execution of all functions in the current package
@@ -973,7 +973,7 @@
            (report-monitoring :all ,nested ,threshold ,key :ignore-no-calls)))
-(defmacro WITH-MONITORING ((&rest functions)
+(defmacro with-monitoring ((&rest functions)
                            (&optional (nested :exclusive)
                                       (threshold 0.01)
                                       (key :percent-time))
@@ -995,12 +995,12 @@
   "Number of iterations over which the timing overhead is averaged.")
 ;;; Perhaps this should return something to frustrate clever compilers.
-(defun STUB-FUNCTION (x)
+(defun stub-function (x)
   (declare (ignore x))
 (proclaim '(notinline stub-function))
+(defun set-monitor-overhead ()
   "Determines the average overhead of monitoring by monitoring the execution
 of an empty function many times."
   (setq *monitor-time-overhead* 0
cvs diff: Diffing doc

Lars Rune Nøstdal

More information about the slime-devel mailing list