[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue: COMPILE-ENVIRONMENT-CONSISTENCY (Version 3)



>    From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
>    Date: Wed, 25 Jan 89 09:16:50 MST
>    Item 2c (block compilation) has been more controversial -- KCL does
>    this, but many people seem to think that this should not be the
>    default behavior of the compiler.

Some Common Lisps do self-tail calls without going through the
SYMBOL-FUNCTION.

What KCL does is this.  A Lisp rpocedure is compiled as a C procedure.
For calls across files, KCL compiles compiles code that gets the
function definition from that symbol that is its name.  For calls
within the same file, KCL just emits a call to the C procedure
directly.  So, redefinitions at the Lisp level have no effect on such
calls.  However, it is possible to change this behavior by using
OPTIMIZE and NOTINLINE declarations.

KCL does block compilation in a sense, but what KCL doesn't do is to
make any of the procedures inaccessible.  They can be called by
procedures outside the file.