[movitz-cvs] CVS update: movitz/image.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Sun Aug 21 12:11:49 UTC 2005


Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv24532

Modified Files:
	image.lisp 
Log Message:
Added movitz-disassemble-method, and use it in movitz-mode.el.

Date: Sun Aug 21 14:11:48 2005
Author: ffjeld

Index: movitz/image.lisp
diff -u movitz/image.lisp:1.102 movitz/image.lisp:1.103
--- movitz/image.lisp:1.102	Sat Aug 20 22:31:05 2005
+++ movitz/image.lisp	Sun Aug 21 14:11:41 2005
@@ -9,7 +9,7 @@
 ;;;; Created at:    Sun Oct 22 00:22:43 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: image.lisp,v 1.102 2005/08/20 20:31:05 ffjeld Exp $
+;;;; $Id: image.lisp,v 1.103 2005/08/21 12:11:41 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -1299,6 +1299,26 @@
     (assert funobj (module)
       "No load funobj found for module ~S." module)
     (movitz-disassemble-funobj funobj :name module)))
+
+(defun movitz-disassemble-method (name lambda-list &optional qualifiers)
+  (let* ((gf (or (movitz-env-named-function name)
+		 (error "No function named ~S." name)))
+	 (specializing-lambda-list
+	  (subseq lambda-list 0
+		  (position-if (lambda (x)
+				 (and (symbolp x)
+				      (char= #\& (char (string x) 0))))
+			       lambda-list)))
+	 (specializers (mapcar #'muerte::find-specializer
+			       (mapcar (lambda (x)
+					 (if (consp x)
+					     (second x)
+					   'muerte.cl::t))
+				       specializing-lambda-list)))
+	 (method (muerte::movitz-find-method gf qualifiers specializers))
+	 (funobj (muerte::movitz-slot-value method 'muerte::function))
+	 (*print-base* 16))
+    (movitz-disassemble-funobj funobj)))
 
 (defparameter *recursive-disassemble-remember-funobjs* nil)
 




More information about the Movitz-cvs mailing list