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
jjgarcia
451ed9087d
When coercing the output of INLINE-ARGS, and found a (FIXNUM (T some-location)),
...
recognize that the "some-location" variable is NOT unboxed.
2002-12-05 09:52:07 +00:00
jjgarcia
b0ce08d0ea
Changes towards 0.7b comprise naming and calling conventions. See CHANGELOG.
2002-11-04 14:08:24 +00:00
jjgarcia
b979ad8b0b
Changes in the names of macros related to fixnums, characters and arrays.
2001-10-11 17:44:57 +00:00
jjgarcia
0dc4df6002
Add a name mangler to "dpp" so that it translates symbol names as
...
@'si:symbol-name' @'other-symbol*' into the appropiate C name. All
symbol names and function names have been rewritten using this convention.
2001-07-02 17:11:28 +00:00
jjgarcia
2d8d0cd44b
Initial revision
2001-06-26 17:14:44 +00:00