Marius Gerbershagen
f099a9082a
cmp: move proclamations from system-properties into a compiler specific storage
...
This allows us to switch out the proclamations when cross-compiling so
that target specific functions are declared correctly.
This was a problem for cross compilation with mismatching thread
support, so we can now allow that.
2025-11-22 16:25:42 +01:00
Daniel Kochmański
3e37843a33
cleanup: update license to lgpl-2.1+ in both headers and text
2024-01-14 12:22:27 +01:00
Daniel Kochmański
e54b944e7a
cmp: don't refer to module functions as local-funs
...
It is a historical baggage from before FSET. Functions stored in *local-funs*
are both local and global, so sipmly rename it to *functions*.
2023-11-25 18:48:56 +01:00
Daniel Kochmański
b7ad56faff
cmp: cleanup: remove a misleading comment for VAR-LOC
...
In the past VAR-LOC in the first pass could have a value 'CLB to indicate, that
it can't be allocated on the C stack. But somewhere along the way the structure
gained a separate slot REF-CLB that indicates that and VAR-LOC in the 1st pass
is /always/ OBJECT.
Update comments to reflect that fact and remove no-op assignments.
2023-11-23 08:02:38 +01:00
Daniel Kochmański
b70fac0112
cosmetic: minor fixes to the compiler
2023-11-17 11:21:21 +01:00
Daniel Kochmański
faebc7b266
cmp: enforce valid shape of si:function-block-name delcaration
...
Also fix a declaration in clos::make-raw-lambda function.
2023-09-25 13:13:27 +02:00
Daniel Kochmański
220b7c7363
cmpc: move constant and inlining c/c++ optimizations
...
Move appropriate files to the C/C++ backend.
2023-06-06 14:48:58 +02:00
Daniel Kochmański
e4fca7e8e7
cmp: separate fun/var ir functions from passes
...
Also provide better load grouping.
2021-07-01 14:11:33 +02:00
Daniel Kochmański
c8c59167d0
cmp: major cleanup, separate passes
...
- separate passes
The separation is not fine-grained but is a good starting point for further
cleanup. This is a preliminary requirement for multiple backends.
- use uninternet symbol in the package definition
- remove "execute" permission from all files
- remove a few unused functions
- rearrange loaded files
- less verbose compiler
Don't print "End of pass 1." message. This doesn't provide any valuable
information to the programmer.
2021-07-01 14:11:33 +02:00
Marius Gerbershagen
a9a63b1d50
cmp: small refactor of (funcall/apply (lambda ...) ...) handling
...
Unify handling of LAMBDA and LAMBDA-BLOCK in c1funcall and c1apply,
split off computation of let bindings and body in
optimize-funcall/apply-lambda into a separate function.
Preliminary work to fix inlining of local closures.
2020-07-18 15:07:04 +02:00
Daniel Kochmański
851dc899eb
boole: move compiler macro to cmpnum
2017-04-28 11:13:05 +02:00
Matthew Mondor
8f07cd58d8
The ECL code no longer uses tabulator characters, they were replaced
...
by spaces.
A custom script was used to insert/replace Emacs and ViM per-file editor
settings according to their type and the new ECL coding style.
2015-09-03 07:35:47 -04:00
Daniel Kochmański
4d19a27424
cosmetic: untabify
...
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-06-21 14:38:20 +02:00
Juan Jose Garcia Ripoll
c503bfa99b
APPLY should not be inlined when using frame arguments.
2013-07-03 16:58:27 +02:00
Juan Jose Garcia Ripoll
d1ee053ccd
Fix further uses of CONSTANTP+EVAL, replacing them with CONSTANT-FORM-VALUE and using the environment.
2013-01-11 22:55:49 +01:00
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