There's one thing I always wanted to understand about working with image-based system (like a lisp-machine o smalltalk VMs): when you change a class or a function, how do you manage the mismatch between the code you have just written and an already running version. For example: you change the definition of a function on a live system, and then you go home for the weekend. Monday morning you notice a background process running that uses that function; how do you check if the version used is the old one or the new one?
You check the stacktrace of the background process and see which function got called. How you do that depends on the implementation. If you have some handle to the called function, you can check that against the current definition. Functions are 'objects' and you can compare them for identity. In real implementations there also will be some id.
No, the two branches (Symbolics and Lisp Machines) ran their own Lisp Machine Lisp which was a fairly complex melange of MacLisp-derived CommonLisp-precursor constructs.