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