Commit graph

3956 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
a8211519df The optimizers in cmparray distinguish between the policies for type assertions and and those for index bound checking 2010-05-09 20:28:54 +02:00
Juan Jose Garcia Ripoll
d92ba5052d New policy for emitting type assertions 2010-05-09 20:28:24 +02:00
Juan Jose Garcia Ripoll
6ae9d38bdb New type, ARRAY-INDEX, exported from EXT. 2010-05-09 20:28:01 +02:00
Juan Jose Garcia Ripoll
9e46f3d357 Introduce policy aliases, interned some declaration names in EXT and replaced some of those names with more meaningful ones. 2010-05-09 19:41:04 +02:00
Juan Jose Garcia Ripoll
800ac7b46c Remove redundant file new-cmp/cmptype.lsp 2010-05-09 19:15:24 +02:00
Juan Jose Garcia Ripoll
730f37e276 Lower safety levels of inner code in VECTOR-PUSH 2010-05-09 16:17:26 +02:00
Juan Jose Garcia Ripoll
8a72a6fb6e Do not filter types in declarations / proclamations 2010-05-09 16:17:19 +02:00
Juan Jose Garcia Ripoll
c79c014e31 Export declarations into the EXT package and remove debug statements. 2010-05-09 16:16:31 +02:00
Juan Jose Garcia Ripoll
d6f84775fb Optimization and policy levels are now bitmaps 2010-05-09 15:50:22 +02:00
Juan Jose Garcia Ripoll
b04a647c2e Replace cmp-env-optimization with compiler policies. 2010-05-09 09:59:53 +02:00
Juan Jose Garcia Ripoll
a701663b62 Compiler policies are now defined as flags 2010-05-08 13:31:40 +02:00
Juan Jose Garcia Ripoll
fb55d5151d The special form C-INLINE was destructively manipulating its arguments. 2010-05-08 00:35:18 +02:00
Juan Jose Garcia Ripoll
d8abf4d4b7 Use hash tables to store representation type properties. 2010-05-08 00:31:53 +02:00
Juan Jose Garcia Ripoll
f6893139ff Increase the safety settings of slot accessors so that they check the number of arguments they receive. 2010-05-07 23:53:19 +02:00
Juan Jose Garcia Ripoll
1d7ef44ed1 Optimize some internal functions with zero safety. 2010-05-07 23:52:53 +02:00
Juan Jose Garcia Ripoll
2495ae0b8e Toplevel DEFMACRO forms are processed differently and stored by the compiler in a local table. These definitions do not propagate beyond the currently compiled file. 2010-05-07 22:20:14 +02:00
Juan Jose Garcia Ripoll
e02ccb43bc Note the change by which *CMP-ENV* stores optimizations 2010-05-07 22:15:14 +02:00
Juan Jose Garcia Ripoll
fa57208c28 Compile PPRINT with low safety settings, except for the exported functions. 2010-05-07 22:13:55 +02:00
Juan Jose Garcia Ripoll
4ebd664c92 DECLARE was destructively modifying the compiler environment 2010-05-07 22:12:32 +02:00
Juan Jose Garcia Ripoll
b48bc21580 New function to create the root environment for each toplevel form 2010-05-07 21:18:50 +02:00
Juan Jose Garcia Ripoll
4d1d068edf With the new inline behavior we can make ASSERT-TYPE-IF-KNOWN more efficient by use of ecl_unlikely(). 2010-05-07 17:20:49 +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
5dcb1f6ebc New type assertion macros for lambdas, reused by both compilers. 2010-05-07 16:02:42 +02:00
Juan Jose Garcia Ripoll
73db1aacd9 Add a couple more uses of ecl_unlikely and remove a duplicate definition of cs_check in ecl-cmp 2010-05-07 13:11:35 +02:00
Juan Jose Garcia Ripoll
154df113be Removed file new-cmp/cmpopt.lsp whic is now equal to that in cmp/ 2010-05-06 15:45:02 +02:00
Juan Jose Garcia Ripoll
1a5444eb39 Removed debug statements from cmparray.lsp and fixed typo in ARRAY-DIMENSION-ACCESSOR 2010-05-06 08:41:19 +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
cf60cb2181 New function for testing whether a variable was declared special 2010-05-05 23:42:21 +02:00
Juan Jose Garcia Ripoll
c8c36d32b9 DECLAIM + SPECIAL did not work because ECL was not looking for special declarations in the compiler environment. 2010-05-05 23:27:43 +02:00
Juan Jose Garcia Ripoll
557474044f FEwrong_dimensions() did not invoke cl_make_list() with enough arguments. 2010-05-05 23:01:12 +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
77afbfd6da Slightly more compact format for proclamations / sysfun 2010-04-30 23:44:17 +02:00
Juan Jose Garcia Ripoll
840140d447 Remove from sysfun.lsp types which are already defined in proclamations.lsp. 2010-04-30 17:25:23 +02:00
Juan Jose Garcia Ripoll
8007ff56b4 The inline declarations were not properly inserted in the code. 2010-04-30 15:56:04 +02:00
Juan Jose Garcia Ripoll
8b7c9a7580 Merge sysfun.lsp and proclamations.lsp into the compiled file cmp.fas 2010-04-30 14:57:16 +02:00
Juan Jose Garcia Ripoll
89db75f763 MAKE-STRING-INPUT-STREAM accepted as start NIL, which is not valid. 2010-04-30 14:41:17 +02:00
Juan Jose Garcia Ripoll
3f0cda1ee3 Undo the previous change to SUBTYPEP and eliminate recursive types from proclamations.lsp 2010-04-30 14:41:17 +02:00
Juan Jose Garcia Ripoll
2f9e993603 Rewrite SUBTYPEP so that it ignores recursive type declarations using CONS 2010-04-30 14:41:17 +02:00
Juan Jose Garcia Ripoll
49ed81bbf3 Remove unused statement. 2010-04-30 14:41:17 +02:00
Juan Jose Garcia Ripoll
e8cecf9935 Declarations for all Common Lisp functions.
Split out a new file, proclamations.lsp, with the declarations oof the types of functions in the ANSI specification and in ECL's extensions.
2010-04-30 14:40:36 +02:00
Juan Jose Garcia Ripoll
ed1bdcb0fe Use C code to guess the alignment of different types. 2010-04-27 13:05:49 +02:00
Juan Jose Garcia Ripoll
71c4114af1 Missing break statements in ecl_foreign_data_set() 2010-04-26 15:40:14 +02:00
Juan Jose Garcia Ripoll
de2602da46 DEFCALLBACK was not properly compiled when the return type was :VOID 2010-04-26 14:52:02 +02:00
Juan Jose Garcia Ripoll
5b2a69c7ed Move FOREIGN-ELT-TYPE-P into ffi.d, because the list of types in ffi.lsp had become obsolete and difficult to maintain. 2010-04-26 14:17:47 +02:00
Juan Jose Garcia Ripoll
23d8509f6d EXT:MAKE-FOREIGN-DATA-FROM-ARRAY now supports all unboxed types. 2010-04-25 19:16:41 +02:00
Juan Jose Garcia Ripoll
d400a096eb Change of syntax in WITH-BACKEND.
Using (WITH-BACKEND :BYTECODES form :C/C++ form ...) allows us
to coalesce both possibilities without the output value of
one suppressed form hiding the other one
2010-04-25 14:33:09 +02:00
Juan Jose Garcia Ripoll
21073fd698 Upgrade version number to 10.4.2 2010-04-25 13:48:31 +02:00
Juan Jose Garcia Ripoll
f9c48b5d7f Add the latest change to CHANGELOG 2010-04-25 09:45:16 +02:00
Juan Jose Garcia Ripoll
f3071cc41e Implemented WITH-BACKEND and small interpreter fix.
- A new special form, EXT:WITH-BACKEND allows us to select the code depending
   on whether it is going to be processed by the interpreter or by the C
   compiler.
      (defun example ()
        (ext:with-backend (:bytecodes) (print 3))
        (ext:with-backend (:c/c++) (print 2)))
   The two currently available backends are :bytecodes and :c/c++. Note that
   when the backend does not match the value, the form is replaced with (VALUES).

 - Some forms, such as LIST, CONS, etc, when optimized by the interpreter,
   compiled their arguments as toplevel forms, causing the right result,
   but out of order evaluation.
2010-04-24 10:39:46 +02:00
Juan Jose Garcia Ripoll
a588dcb62c Callback functions must appear in the headers so that they can be called by other compiled functios. 2010-04-24 10:39:22 +02:00