Commit graph

43 commits

Author SHA1 Message Date
Daniel Kochmański
e4988d1f7c cmp: don't USE the package EXT 2023-02-21 14:34:11 +01:00
Daniel Kochmański
e74826b9cd cmp: be explicit about symbol packages
In dispatch tables and other places where the symbol is a token of some
processing we try to be explicit about its home package (CL, SI, FFI, MP).
2023-02-21 14:34:11 +01:00
Daniel Kochmański
edb19dcf75 cmp: cleanup: remove unused special variables
It is worth noting that *active-protection* and *pending-actions* are generally
not used too (because *pending-actions* are never modified), but if we want to
add some useful semantics to with-compilation-unit one day then we'll need both.
2023-02-21 14:34:11 +01:00
Marius Gerbershagen
3db6ad91ff cmp: fix infinite loop for files containing lists with the same circular structure
Closes #630.
2022-08-14 17:17:57 +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
Daniel Kochmański
68b15cde5b cmp: add a few c-local declarations 2017-04-28 11:15:21 +02:00
Daniel Kochmański
9b82583884 newcmp: remove obsolete newcmp package 2016-03-11 16:06:45 +01: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
fcf8bc3d72 Local variables are now created with the name of the lisp variable they come from 2012-12-08 00:35:04 +01:00
Juan Jose Garcia Ripoll
6899ee68d8 Do not always generate one label in maybe-next-label 2012-12-01 12:03:09 +01:00
Juan Jose Garcia Ripoll
82fbede619 Improve the C code generated for WHEN forms. 2012-12-01 12:01:51 +01:00
Juan Jose Garcia Ripoll
6eb0a9daf8 Understanding labels, we come to realize that c2if generates one too many. 2012-12-01 11:20:55 +01:00
Juan Jose Garcia Ripoll
3ef45fbf10 Last uses of braces outside IF and some in IFs updated to the new model 2012-12-01 10:49:05 +01:00
Juan Jose Garcia Ripoll
61e4cdb065 with-clean-symbols moved to cmuutil.lsp and used in iolib.lsp 2012-11-29 22:50:19 +01:00
Juan Jose Garcia Ripoll
ca0222fd19 Implemented EXT:TRULY-THE and made THE expand to either EXT:TRULY-THE or EXT:CHECKED-VALUE depending on the optimization settings. 2011-12-31 19:37:13 +01:00
Juan Jose Garcia Ripoll
4496a85039 More fixes to remove warnings about unused variables 2011-12-23 22:36:32 +01:00
Juan Jose Garcia Ripoll
7a2d30770b Add IGNORE declarations and remove some unused variables. 2011-12-23 15:38:37 +01:00
Juan Jose Garcia Ripoll
ad4d31cde9 New macro, RECKLESS, for unsafe operations 2010-05-14 16:08:27 +02:00
Juan Jose Garcia Ripoll
1b808f2290 Compiler macros that open code AREF/ASET using cheap checks written in C 2010-05-05 23:52:25 +02:00
Juan Jose Garcia Ripoll
6a91d3b45a Refactored code so that it is shared by cmp and new-cmp:
* Use the new proclamations/sysfun.lsp files from the new compiler.
* We split src/cmp/cmpdefs.lsp into cmpdefs, cmppackage, cmptypes and cmpglobals
* Split cmpform.lsp out of cmpmac.lsp
* Merged in {cmp,new-cmp}/cmpc-wt.lsp some of the cmpmac wt routines
* Use functions instead of macros for the WT-* operations
* Split out from *cmp/cmpenv.lsp a file cmppolicy.lsp
* A single file, cmpenv-api.lsp for the manipulation of environments.
* The type comparison functions go into cmptype-arith.lsp and are cached.
* The code that propagates types in function calls goes into cmptype-prop.lsp.
* The remainings of cmpenv go into cmpenv-{declare,proclaim,declaim}.

Associated fixes:
* Fixed typo and wrong proclamation for SI:GET-SYSPROP.
* Fixed typo in SIMPLIFY-ARITHMETIC.
* Explicitely set the debug level when building ECL
* All declarations are stored in the compiler environment.
* Each function and form stores the compilation environment.
* Declaration POLICY-DEBUG-IHS-FRAME is acts only on the function environment.
* Make the definition if ihs_env only happen when it is used.
* Eliminated *notinline*, *inline-functions*  and *function-declarations*
* Slightly more efficient creation of accessors in kernel.lsp
* Remove the proxy C2DECL-BODY
* Fix the order of declarations in SI:PROCESS-DECLARATIONS
* Reimplemented C1BODY using SI:PROCESS-DECLARATIONS
* DECLAIM's proclamation do not propagate beyond the compiled file.
2010-05-05 17:36:19 +02:00
Juan Jose Garcia Ripoll
96c8e09112 In compiler messages, print the actual toplevel form, not the macroexpanded version 2010-02-07 11:57:34 +01:00
Juan Jose Garcia Ripoll
b3b61b59b2 At several places in the compiler only the primary type of an expression was needed, but we retrieved the full values type. 2009-07-08 21:31:20 +02:00
Juan Jose Garcia Ripoll
aebe505993 Use the new routines for multiple values type to implement c1form-primary-type 2009-07-05 09:44:28 +02:00
Juan Jose Garcia Ripoll
d1fc852e15 File positions and forms were not recorded for c1forms created with make-c1form*. Use that information during the c2 phase 2009-06-25 23:31:09 +02:00
Juan Jose Garcia Ripoll
d73d12ae35 Replaced some calls to ERROR with CMPERR so that they can be trapped by the user. Changed the implementation of WITH-COMPILER-ENV to avoid that all COMPILER-ERRORs are re-signaled as compiler internal errors. 2009-06-25 11:01:41 +02:00
Juan Jose Garcia Ripoll
d169863877 The compiler can now generate some Lisp constants as static C expressions (based on patches by JC Beaudoin) 2009-06-07 18:18:27 +02:00
Juan Jose Garcia Ripoll
747652ed34 Compiled functions now carry information about their source file (based on code by JC Beaudoin) 2009-06-07 14:24:49 +02: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
a59f90871a Emacs modelines for better editing 2008-02-02 19:14:05 +00:00
jgarcia
1c6e75f287 Volatile declaration are now produced for all variables and argument of a function that uses setjmp. 2007-12-21 20:10:12 +00:00
jgarcia
5e31168db1 Improved identification of wrong declarations. Simplified code for that. 2006-04-24 08:44:44 +00:00
jjgarcia
e4fa9f4e73 Merged in the new compiler structure doubly linked list. 2004-12-16 15:56:54 +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
3e1a75f49e Unify the routines that emit calls to functions, so that they work with function objects and handle functions with fixed and variable number of arguments 2004-05-13 16:28:13 +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
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
c2aa136143 Various minor fixes, and an important set of changes to teach the compiler
and the interpreter to understand (SETF fname) function names, and to handle
them without creating auxiliary symbols.
2003-04-28 15:55:22 +00:00
jjgarcia
3d968c077a ffi::definline has a bogus definition in ffi.lsp. 2002-02-12 16:06:18 +00:00
jjgarcia
c9b91f9618 Minimal patches for C++ compatibility 2001-12-20 09:17:51 +00:00
jjgarcia
2d8d0cd44b Initial revision 2001-06-26 17:14:44 +00:00