Commit graph

55 commits

Author SHA1 Message Date
Marius Gerbershagen
9227f4e342 fix #409: order of evaluation of values forms
the fix for #330 is unaffected
2017-12-29 16:58:27 +01:00
Daniel Kochmanski
15640a79e4 cmp: refactor: qualify package of *-prop interface
Usage was mixed, once it is si:put-sysprop, once just put-sysprop. Add
full package qualifiers to put-sysprop/get-sysprop/rem-sysprop.
2017-04-28 11:48:15 +02:00
Daniel Kochmański
0cd581d08b cosmetic indent fix 2017-04-28 11:24:41 +02:00
Fabrizio Fabbri
96e5780d91 fix #330 - Order of evaluation of VALUES forms was incorrect in compiled code 2017-01-31 21:51:25 +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
e92f8c418f Added a 'machine' object that represents the features of a cross compilation target in the compiler. Inline forms now are created with one such machine on mind, and recreated if the machine changes. 2013-06-02 22:49:54 +02:00
Juan Jose Garcia Ripoll
8fddfe4076 c::emit-inlined-values did not contemplate the empty values form (values) 2013-03-30 22:50:40 +01:00
Juan Jose Garcia Ripoll
ccc4df0f06 Inline blocks now use open/close-brace 2012-12-01 00:48:51 +01:00
Juan Jose Garcia Ripoll
1c95758108 Use the new brace routines in BLOCK, TAGBODY, CATCH, UNWIND-PROTECT, multiple values 2012-12-01 00:10:07 +01:00
Juan Jose Garcia Ripoll
f0641407e8 New routines to open/close braces in the C code 2012-11-30 23:41:47 +01:00
Juan Jose Garcia Ripoll
31b8b8f73a Implemented type inliners for arithmetic operations 2010-05-28 15:49:36 +02:00
Juan Jose Garcia Ripoll
1ca77df9bc Changed the way INLINE-ARGUMENTS works: temporary variables are now created based on the representation type of the inlined value, not on its expected types. Furthermore, expected types are no longer an argument to INLINE-ARGUMENTS. 2010-05-27 23:49:47 +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
bb3eeabf74 Reimplemented C2LET without REPLACEd variables and eliminated this kind from the rest of the compiler. 2010-05-25 19:43:31 +02:00
Juan Jose Garcia Ripoll
0389fe11be When inlining, set the environment to that of the inlined form, to properly capture things like speed / safety optimizations. 2010-05-14 16:08:03 +02:00
Juan Jose Garcia Ripoll
02bdb9df00 The inliner for VALUES forms was not used 2010-05-13 13:38:04 +02:00
Juan Jose Garcia Ripoll
f6bddc7b0b VALUES forms are more efficiently inlined. 2010-05-13 10:04:37 +02:00
Juan Jose Garcia Ripoll
37d13228a0 INLINE-ARGS would not optimize PROGN forms 2010-05-12 23:41:59 +02:00
Juan Jose Garcia Ripoll
3689a77759 Remove unused function NEED-TO-PROTECT 2010-05-11 16:12:08 +02:00
Juan Jose Garcia Ripoll
6c245096be In the database of C1FORMs, store information about side effects and use the field C1FORM-SIDE-EFFECTS to speed up computation of those. 2010-05-11 16:04:28 +02:00
Juan Jose Garcia Ripoll
b8ce2506ed When inlining to save intermediate computations, the temporary variables are created with a C type that matches the value, not the expected destination of that value. 2010-05-07 17:09:51 +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
322064aacb ECL can build again itself using a C++ compiler (--with-cxx thus works). 2010-03-19 22:04:27 +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
d4c9460c32 Fix the criteria for using inlined expansions from sysfun.lsp. 2009-03-06 23:51:17 +01: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
Juan Jose Garcia Ripoll
21ab17c30b During compilation of function calls, the NARG parameter is useless, since it can be calculated. 2009-02-15 20:05:53 +01:00
Juan Jose Garcia Ripoll
6d1fafc608 Minor correction in comments. 2009-02-15 19:48:07 +01:00
jgarcia
f3b1febf4e Merged in changes from sealed_slot branch 2008-05-09 09:48:29 +00:00
jgarcia
a59f90871a Emacs modelines for better editing 2008-02-02 19:14:05 +00:00
jgarcia
8a7114e142 Fixed inline expansion of DIGIT-CHAR-P and added a flag :ONE-LINER to the DEF-INLINE (not yet used, though) 2007-12-13 19:23:14 +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
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
9052752e65 Reorganized the list of inliners and inline information, storing it in more detailed structures 2005-08-08 08:09:25 +00:00
jjgarcia
b1d6df4894 C-INLINE forms can now output multiple values 2005-03-15 14:21:42 +00:00
jjgarcia
a2e2990440 Introducing sequence iterators. Fixes in the reader regarding *read-suppress* and reading of vectors. 2005-01-24 08:57:46 +00:00
jjgarcia
e4fa9f4e73 Merged in the new compiler structure doubly linked list. 2004-12-16 15:56:54 +00:00
jjgarcia
a85c392142 Several fixes. Functions are now created only with C1COMPILE-FUNCTION. 2004-08-13 13:31:24 +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
7afef75f7f Local variables can be changed by a local function 2004-04-21 13:47:02 +00:00
jjgarcia
403511c488 The portable CLX library has been incorporated. 2004-03-25 09:02:27 +00:00
jjgarcia
b30b43ce17 (VALUES form) now truncates the number of values output by 'form' to one. 2004-01-19 17:54:10 +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
a381a7ee09 Merge NEW_COMPILER 25.05.03 2003-05-26 09:49:50 +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
41c0868469 Bunch of fixes. See CHANGELOG. 2003-03-17 10:39:08 +00:00