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