>>>>> "ew" == Edi Weitz <[EMAIL PROTECTED]> writes:
ew> I have a long-running application on a web server which uses CMUCL and
ew> mod_lisp - I can get a Lisp listener via detachtty. Yesterday I had to
ew> make some changes to the application while it was running (which is of
ew> course one of the cool things about using Lisp). Specifically, I had
ew> to redefine a couple of :AROUND and :AFTER methods
ew> #<Standard-Method SLOT-UNBOUND :AROUND (T BET (EQL INVOLVEDP)) {4914655D}>
ew>
ew> Now, my question is: How do I compile this from the listener? Is this
ew> in fact possible? Which syntax do I have to use?
I'm not sure how things worked in CMUCL 18e, but in the current code
base (go Gerd!) you will find that the method is automatically
compiled even when entered at the listener.
In CVS CMUCL, you can use the following non-standard way of designating
the function object that corresponds to a specific method:
(function (pcl:fast-method method-name qualifiers specializers))
,----
| CL-USER> (disassemble (function (pcl:fast-method slot-unbound :around (t bet (eql
involvedp)))))
| 4877EC48: .entry (pcl:fast-method slot-unbound :around (t bet (eql
involvedp)))(pcl::.pv-cell. pcl::.next-method-call. class bet slot-name) ; (function
|
; (t ..))
| 60: pop dword ptr [ebp-8]
| 63: lea esp, [ebp-32]
| 66: mov edi, [ebp-16]
|
| 69: cmp ecx, 20
| 6C: jne L0
| 6E: mov [ebp-12], edi
| 71: mov edx, esp ; No-arg-parsing entry point
| 73: sub esp, 12
| 76: mov eax, [#x4877EC40] ; #<FDEFINITION object for
something-blabla>
| 7C: xor ecx, ecx
| 7E: mov [edx-4], ebp
| 81: mov ebp, edx
| 83: call dword ptr [eax+5]
`----
I wouldn't count on this being a stable interface, though.
--
Eric Marsden <URL:http://www.laas.fr/~emarsden/>