Juan Jose Garcia Ripoll
7c5ab4f1fb
Some functions now take a cl_env_ptr argument, becoming better isolated.
2008-10-11 22:32:54 +02:00
jgarcia
52f4df1901
Merged the new function call code
2008-02-16 10:28:32 +00:00
jgarcia
a59f90871a
Emacs modelines for better editing
2008-02-02 19:14:05 +00:00
jgarcia
022fda6f95
Integrated variables into the compiler environment. Variable *VARS* disappears.
2006-06-12 08:52:28 +00:00
jgarcia
20ab0394db
New special forms for handling the lisp stack. These constructions are used for function calls with too many arguments, multiple-value-prog1, unwind-protect, etc
2006-05-29 08:53:53 +00:00
jgarcia
fd49f0fdbc
Some declarations in sysfun.lsp have return type *. Interpret this as (VALUES &REST).
2006-05-06 08:20:42 +00:00
jjgarcia
986198842f
Removed useless variable \*special-binding\*. C1ADD-GLOBAS is now properly renamed C1DECLARE-SPECIALS and does the right thing: to push the special variable declarations onto the \*VARS\* stack and not to add them to the global proclamations.
2005-05-13 11:43:22 +00:00
jjgarcia
b1d6df4894
C-INLINE forms can now output multiple values
2005-03-15 14:21:42 +00:00
jjgarcia
06b3047b1d
+ Fixes in the code for backquoted vectors `#(,a ,b ...)
...
+ Fixes in the compiler code for CATCH and VALUES
+ Slight improvement in the readability of compiled CATCH
+ Implemented lisp hooks for cleaning on exit.
+ Improvements in the help messages from "configure"
2005-02-14 10:26:29 +00:00
jjgarcia
e4fa9f4e73
Merged in the new compiler structure doubly linked list.
2004-12-16 15:56:54 +00:00
jjgarcia
c756aeb543
Discarded data is compiled with C2EXPR\*
2004-11-23 15:07:17 +00:00
jjgarcia
a85c392142
Several fixes. Functions are now created only with C1COMPILE-FUNCTION.
2004-08-13 13:31:24 +00:00
jjgarcia
c33431f02c
The list of variables could be shorter than the list of supplied values
2004-05-17 08:12:52 +00:00
jjgarcia
09922eb8d4
Remove debug statement
2004-05-17 07:44:08 +00:00
jjgarcia
24688d57f8
Teach the compiler how to produce C functions with a fixed number of arguments when the corresponding lisp function does not have any &optional, &rest, &key. Teach it also how to produce slimmer code for MULTIPLE-VALUE-SETQ/BIND. The type of a C1FORM can now be a (VALUES ...) expression, the first value being obtained with C1FORM-PRIMARY-TYPE.
2004-05-17 07:32:52 +00:00
jjgarcia
4e3189eddd
Big changes in the way functions are compiled, unifying the code that handles DEFUN, DEFMACRO and LAMBDA, and fixing an important bug in the optimizer for tail-recursive calls.
2004-05-05 08:38:07 +00:00
jjgarcia
403511c488
The portable CLX library has been incorporated.
2004-03-25 09:02:27 +00:00
jjgarcia
b30b43ce17
(VALUES form) now truncates the number of values output by 'form' to one.
2004-01-19 17:54:10 +00:00
jjgarcia
8d6ffa8edf
Warn the user about a type mismatch between the variables in M-V-S-Q and the
...
type that M-V-S-Q assumes (which is always 'T until we find a better method).
2003-12-19 10:08:45 +00:00
jjgarcia
b147bb43e8
Made the compilation of function calls simpler. Now only two routines, C1CALL-LOCAL and C1CALL-GLOBAL do handle the calling of symbols, and C1FUNCALL is left for the rest.
2003-12-09 09:34:21 +00:00
jjgarcia
4eac79774e
Preliminary support for POSIX threads.
2003-11-18 11:23:07 +00:00
jjgarcia
d45438dce9
Sending arguments via the lisp stack to a local function with lexical
...
and closure environments did not work. Example of failed code
(funcall
(compile nil
'(lambda (a b c)
(labels ((%f6 (f6-1 f6-2) c))
(multiple-value-call #'%f6 (values a c)))))
0 10 20)
2003-11-05 17:32:45 +00:00
jjgarcia
fc8deffa71
src/c
2003-10-22 07:27:44 +00:00
jjgarcia
540e4140f4
Forms are now stored as structures.
2003-10-16 07:38:17 +00:00
jjgarcia
df97ca1b92
Fixed bug that prevented compilation under windows. ECL is now built as a single shared library on systems which support it. The compiler is being rewritten using higher level, more expressive functions.
2003-09-08 16:53:29 +00:00
jjgarcia
a381a7ee09
Merge NEW_COMPILER 25.05.03
2003-05-26 09:49:50 +00:00
jjgarcia
6b76d155ee
Create new functions SI::{GET,PUT,REM}-SYSPROP to handle vital information
...
about functions, SETF forms, DEFTYPEs, etc. Property lists are no longer
used for this task.
2003-03-21 14:18:56 +00:00
jjgarcia
41c0868469
Bunch of fixes. See CHANGELOG.
2003-03-17 10:39:08 +00:00
jjgarcia
f589ddf587
When compiling a (VALUES ...) form, put the result in VALUES; do not use
...
value0, because then the compiler assumes only one value is produced.
2002-12-05 09:48:52 +00:00
jjgarcia
b0ce08d0ea
Changes towards 0.7b comprise naming and calling conventions. See CHANGELOG.
2002-11-04 14:08:24 +00:00
jjgarcia
a9e4edf4d0
The calling conventions have been changed. SI::C-ARGUMENTS-LIMIT and
...
LAMBDA-PARAMETERS-LIMIT are both 64. Up to C-ARGUMENTS-LIMIT may be
passed to a function using C calling conventions. If the function is
to retrieve more arguments, (for instance through a &rest variable),
this can be done, but then the arguments have to be pushed on the lisp
stack. This method allows us to raise the CALL-ARGUMENTS-LIMIT up to
MOST-POSITIVE-FIXNUM. From a users point of view, there is no visible
change, excep the fact that a function may receive more arguments.
The function apply() has been replaced with cl_apply_from_stack().
The former took a pointer to the list of arguments. The latter assumes
that the last "narg" elements on the lisp stack are the arguments of
the function.
2002-10-21 09:27:58 +00:00
jjgarcia
c63e81c4f5
Simplified compilation of &aux parameters in lambda lists.
...
Fixed bug in the compiler for MULTIPLE-VALUE-BIND: resulting code would not
undo bindings of special variables.
Optimized statements like (let ((*special-var* *special-var*)) ...) where
*special-var* is a special variable.
2001-10-19 22:16:49 +00:00
jjgarcia
2d8d0cd44b
Initial revision
2001-06-26 17:14:44 +00:00