Commit graph

48 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
c2e2171dc0 Avoid recursive invocation of C1EXPR by allowing the C1 processors to act like macros, returning new forms to be processed. Remove also the CATCH for compiler errors, since we now rely on conditions for signal handling. 2011-12-27 12:36:52 +01:00
Juan Jose Garcia Ripoll
2feea55b31 Propagate the type of a function when invoked through APPLY 2011-12-26 23:16:13 +01:00
Juan Jose Garcia Ripoll
9a10cd1767 Removed obsolete optimizers for PRINC and TERPRI 2011-11-05 20:18:02 +01:00
Juan Jose Garcia Ripoll
080dae918c Remove old optimizer for rplacd. Added type propagators for PROGV, WITH-STACKS, STACK-PUSH-VALUES, PSETQ, STRUCTURE-SET 2011-04-10 09:48:24 +02:00
Juan Jose Garcia Ripoll
910e79852e Instead of using system property lists, create dispatch tables for handling the C1, T1, C2 forms and others. 2010-05-26 12:12:57 +02:00
Juan Jose Garcia Ripoll
5f1b459879 Move ASSOC from a C1 OPTIMIZED form to a compiler macro 2010-05-13 23:03:53 +02:00
Juan Jose Garcia Ripoll
34233787c6 Replaced the C1 special form for MEMBER with a compiler macro. 2010-05-13 22:34:04 +02:00
Juan Jose Garcia Ripoll
01574b68bb Replace the C1 processor for COERCE with a compiler macro that is now activated, and in this case add a new coercion function for simple arrays. 2010-05-13 20:45:42 +02:00
Juan Jose Garcia Ripoll
2dfa8d2dff Replace C1RPLACA with a compiler macro 2010-05-13 19:04:37 +02:00
Juan Jose Garcia Ripoll
17790c4770 Remove the function TYPE-FILTER and deal with the whole set of Common Lisp types in the compiler. 2010-05-09 22:20:47 +02:00
Juan Jose Garcia Ripoll
d7aff31c8a Use ecl_unlikely() in the expansion of RPLACA/D 2010-02-27 20:01:05 +01:00
Juan Jose Garcia Ripoll
0ea425866c Organize the code in INLINE-ARGS, factoring out parts that can be used in call-global-loc and allowing the use of temporary variables which are not of type :cl-object. 2009-07-04 17:17:50 +02:00
Juan Jose Garcia Ripoll
a475d5bcba Simplified c2call-global by taking the type propagation for (SETF AREF)/AREF into separate functions 2009-02-15 23:53:03 +01:00
jgarcia
8f28327ddf Simplifed MAKE-ARRAY. Deactivated the old garbage collector. New optimizers for MAKE-ARRAY and VECTOR-PUSH*. Declarations are now held in *cmp-env* instead of in global variables. 2008-05-18 20:08:39 +00:00
jgarcia
8800b254f5 Committed the changes to implement small conses 2008-04-30 14:24:20 +00:00
jgarcia
a59f90871a Emacs modelines for better editing 2008-02-02 19:14:05 +00:00
jgarcia
081fea1111 Removed inliner for ASH, as well as for C-INLINE forms, which are now a braced statement 2007-10-12 20:55:18 +00:00
jgarcia
aa3dfe4058 Prefix most functions with 'ecl_' to avoid name collisions when embedding ECL in other libraries 2007-01-18 11:46:07 +00:00
jgarcia
078bd05352 The slot accessors for structures with type VECTOR or LIST now rely on the standard function ELT, instead of si:list-nth and si:rplaca-nthcdr. 2006-11-06 20:43:53 +00:00
jgarcia
a8ba6f5c01 Initital support for long double and immediate short floats. 2006-10-13 17:28:51 +00:00
jgarcia
12799c7305 Move from short/long-float to single/double-float (by L. Brinkhoff) 2006-09-01 15:15:57 +00:00
jjgarcia
6055075b78 Separate temporary and permanent data in a compiled file 2006-02-16 11:04:55 +00:00
jjgarcia
9052752e65 Reorganized the list of inliners and inline information, storing it in more detailed structures 2005-08-08 08:09:25 +00:00
jjgarcia
92757131b4 Several improvements related to inline of logical and cons functions, hardcoding frequently used symbols and a smaller version of TIME 2005-07-28 14:05:40 +00:00
jjgarcia
4d88711624 Implemented our version of Gray streams. 2005-03-17 16:47:53 +00:00
jjgarcia
b1d6df4894 C-INLINE forms can now output multiple values 2005-03-15 14:21:42 +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
f494e7140c Fixes in optimizer 2004-04-21 13:46:33 +00:00
jjgarcia
403511c488 The portable CLX library has been incorporated. 2004-03-25 09:02:27 +00:00
jjgarcia
9157c73a9e The optimizer for BOOLE had not been updated when the new C1FORM structures were introduced. 2003-12-19 11:15:58 +00:00
jjgarcia
630bfdf4f4 Clean up the package CL from non-standard symbols and move them into the EXT package, which is a nickname for SYSTEM. 2003-12-11 17:16:48 +00:00
jjgarcia
9292714179 LDB1 did not get inlined if the expected output was not a fixnum. 2003-11-06 08:35:17 +00:00
jjgarcia
540e4140f4 Forms are now stored as structures. 2003-10-16 07:38:17 +00:00
jjgarcia
018224ae87 Fixed typo 2003-09-22 07:51:34 +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
3b861d5e3b Second version of the inliner for LAMBDA forms. 2003-06-09 12:40:46 +00:00
jjgarcia
9ff486f0ba Implemented inlining of LAMBDA expressions when they appear in the place of a function, such as the beginning of a list, or as a first argument to APPLY and FUNCALL. We can now safely remove the mechanism CALL-LAMBDA which inlines LAMBDA forms when the C code is being produced. 2003-06-09 12:19:39 +00:00
jjgarcia
a381a7ee09 Merge NEW_COMPILER 25.05.03 2003-05-26 09:49:50 +00:00
jjgarcia
35040b43ef In closures and local functions, the environment and the lexical variables
should not count as arguments. Not a fix, but makes code more readable.
2003-05-03 17:20:42 +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
151cf73044 Fix the names of the optimizers for SHIFT<< and SHIFT>>. 2002-12-05 09:42:58 +00:00
jjgarcia
2e6482b0a1 Rewrite the checking of # of arguments, so that the error message gets the name of the function whenever possible. 2002-11-18 11:29:21 +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
c714dc74ca Optimizer for SCHAR + SYMBOL-NAME makes no longer sense. 2001-07-23 07:55:38 +00:00
jjgarcia
8563a1fc1c Fix the compiler so that when it finds LOCALLY, MACROLET or SYMBOL-MACROLET
at the top level, it processes their bodies as top level forms as well. For
instance, (LOCALLY (EVAL-WHEN (:COMPILE-TOPLEVEL) (PRINT "HELLO"))), now works.
2001-07-19 15:33:46 +00:00
jjgarcia
f2da18a591 Add a name mangler to the lisp runtime. Use this mangler in the compiler to
optimize access to symbols and functions which are defined in the C runtime.
2001-07-05 10:08:52 +00:00
jjgarcia
2d8d0cd44b Initial revision 2001-06-26 17:14:44 +00:00