Xref: utzoo comp.lang.lisp:2443 comp.sys.ti.explorer:150 Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!pt.cs.cmu.edu!spice.cs.cmu.edu!jwz From: jwz@spice.cs.cmu.edu (Jamie Zawinski) Newsgroups: comp.lang.lisp,comp.sys.ti.explorer Subject: inlining Message-ID: <7077@pt.cs.cmu.edu> Date: 23 Nov 89 20:28:59 GMT Reply-To: Jamie Zawinski Organization: Carnegie-Mellon University, CS/RI Lines: 18 On the Explorer, it's not possible to compile a function inline unless it's source code is around. That is, if function A wants to declare function B inline, the code will not appear inline unless function A is compiled in the compilation environment of function B. If function B was loaded from a compiled file, recompiling function A will not inline function B. Is there a good reason for this? I assume by this behavior that (on the Explorer) inlining a function involves a source-level transformation and recompilation; but it seems to me that it should be possible to just splice in a code vector, after some trivial disassembly to move the jump pointers. One way around this problem is to use DEFSUBST instead, but this has a few problems, being 1: it's not common lisp, 2: Defsubst doesn't spawn a new lexical environment, encouraging obscure bugs, and 3: the Explorer defsubst expansion code is a little buggy. -- Jamie