Lisp Machines never had sophisticated compilers. The compilers for the Lisp Machines were primitive in their capabilities. The compiled to a mostly stack architecture, where some speed was recovered in hardware from generic instructions. The work on better compilers for Lisp came most from other places: CMU for their Unix-based CMUCL, Franz with Allegro CL, Harlequin with LispWorks, Lucid had a very good compiler with Lucid CL, Dylan at Apple for early ARM, CLICC in Germany, SBCL as a clean up of CMUCL, Scieneer CL as a multi-core version of CMUCL, mocl as a version of CLICC for iOS/Android, ... plus a few special purpose compilers...
Once you add sophisticated compilation, dynamic languages implementations are no longer 'dynamic'.
This topic is pretty much solved for Lisp. On one extreme we have fully dynamic interpreters + then dynamic AOT compiler based ones. For delivery there are static delivery modes available (for example with treeshakers as in LispWorks).
On the extreme side you get full program compilers like Stalin (for a subset of Scheme) or like mocl (a recent compiler for a static subset of Common Lisp, for iOS and Android).
Once you add sophisticated compilation, dynamic languages implementations are no longer 'dynamic'.
This topic is pretty much solved for Lisp. On one extreme we have fully dynamic interpreters + then dynamic AOT compiler based ones. For delivery there are static delivery modes available (for example with treeshakers as in LispWorks).
On the extreme side you get full program compilers like Stalin (for a subset of Scheme) or like mocl (a recent compiler for a static subset of Common Lisp, for iOS and Android).