Commit graph

63 commits

Author SHA1 Message Date
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