Commit graph

1711 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
3c8b734b61 Simplify ASSERT making it cheaper. 2010-05-27 20:04:58 +02:00
Juan Jose Garcia Ripoll
e33fb2f3c2 New special form EXT:COMPILER-TYPECASE used to create compiler macros that select code based on the types of expressions. 2010-05-25 22:16:46 +02:00
Juan Jose Garcia Ripoll
b5d5cacbde Use a hash to seek the compilation strategies in the interpreter 2010-05-25 19:42:44 +02:00
Juan Jose Garcia Ripoll
d4f96996e3 The CONS-CDR/CAR optimization was not working fully because the interpreter did not support it and because there were macros shadowing the actual functions. 2010-05-23 22:47:36 +02:00
Juan Jose Garcia Ripoll
c60112a470 New auxiliary functions CONS-CAR/CONS-CDR help in optimizing loops 2010-05-23 16:31:45 +02:00
Juan Jose Garcia Ripoll
5141fad5e0 SEQUENCE-START-END now returns also the length of the sequence 2010-05-21 23:27:49 +02:00
Juan Jose Garcia Ripoll
61b86312e4 Reimplemented REMOVE using specialized vector and list operations. 2010-05-21 21:05:22 +02:00
Juan Jose Garcia Ripoll
4be12cb2c0 New C functions for copy-seq and subseq 2010-05-21 11:24:17 +02:00
Juan Jose Garcia Ripoll
909ed7f1c5 Export the utility function SEQUENCE-COUNT 2010-05-20 23:33:16 +02:00
Juan Jose Garcia Ripoll
04f6b655d1 Fixed typos in error messages from sequence-start-end 2010-05-20 14:57:40 +02:00
Juan Jose Garcia Ripoll
ec0ddc1174 New function SEQUENCE-START-END 2010-05-20 12:30:52 +02:00
Juan Jose Garcia Ripoll
f7ad326bee Changed the order of arguments in ASET to simplify the resulting SETF forms 2010-05-19 10:22:38 +02:00
Juan Jose Garcia Ripoll
38d0b5fa47 New symbol COMPLEX-ARRAY needed by the type ladder 2010-05-18 12:24:54 +02:00
Juan Jose Garcia Ripoll
dbde7df2b7 Add SIGNAL-TYPE-ERROR also to symbols_list2 2010-05-16 17:31:55 +02:00
Juan Jose Garcia Ripoll
5b53ee01df New function SI:SIGNAL-TYPE-ERROR 2010-05-15 16:48:10 +02:00
Juan Jose Garcia Ripoll
1d4f8ac75d Define a new built-in type ANSI-STREAM in the EXT package and used it in predlib, builtin.lsp and in the Gray streams package 2010-05-09 22:19:22 +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
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
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
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
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
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
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
905a0bd4d8 Implemented SI:FOREIGN-DATA-P and used it to optimize (and inline) (TYPEP x 'SI:FOREIGN-DATA) 2010-04-23 20:07:48 +02:00
Juan Jose Garcia Ripoll
6a57070b93 ECL defines the feature :LONG-LONG when this type is in the C compiler 2010-04-23 19:39:58 +02:00
Juan Jose Garcia Ripoll
f058165214 GC now allows any number of arguments, ignoring them 2010-04-14 15:02:20 +02:00
Juan Jose Garcia Ripoll
d378f2aaaf Add .fasb as one of the file extensions understood by LOAD 2010-04-07 20:42:00 +02:00
Trail@.(none)
973090bc55 Use __MINGW32__ instead of mingw32 as preprocessor criterion of MinGW-ness. 2010-04-05 22:31:53 +02:00
Juan Jose Garcia Ripoll
0e2fc917f7 Complete previous fix for weak-pointer. 2010-04-03 15:07:12 +02:00
Juan Jose Garcia Ripoll
e5b22e51cc Weak pointers do not need finalization when the value is not a pointer. 2010-04-03 11:13:44 +02:00
Juan Jose Garcia Ripoll
525841e298 (SETF STREAM-EXTERNAL-FORMAT) inserted the wrong format type in some cases. 2010-03-29 00:03:43 +02:00
Juan Jose Garcia Ripoll
5844357864 Missing change in symbols_list2.h 2010-03-29 00:03:32 +02:00
Juan Jose Garcia Ripoll
1bb8d0c80d A new variable EXT:*DEFAULT-EXTERNAL-FORMAT* implements the actual encoding used with :DEFAULT 2010-03-28 22:24:55 +02:00
Juan Jose Garcia Ripoll
36e0122ae9 Add a keyword argument, :external-format, to LOAD 2010-03-28 22:24:33 +02:00
Juan Jose Garcia Ripoll
dbc354ac49 Remove the object finalization queue, now that the garbage collector provides one. 2010-03-20 15:48:59 +01:00
Juan Jose Garcia Ripoll
db9ecc6590 Remove debug statement. 2010-03-20 15:30:14 +01:00
Juan Jose Garcia Ripoll
28e1173507 In ecl_make_stream_from_fd(), complain if fdopen() fails. 2010-03-20 15:29:41 +01:00
Juan Jose Garcia Ripoll
dfa1ad5827 ecl_make_file_stream_from_fd() did not set the right mode in the stream structure 2010-03-20 15:14:30 +01:00
Juan Jose Garcia Ripoll
b540a6c0bb Fixed typo in the finalizer of weak pointers (A. Gavrilov) 2010-03-20 13:34:10 +01:00
Juan Jose Garcia Ripoll
cdc6ea3363 It is necessary to check that the right symbol is being processed by UNEXPORT2, because blindly proceeding causes slight corruption of the package structure and may result in quite cryptic error messages in loosely connected pieces of code (A. Gavrilov) 2010-03-20 12:12:48 +01:00
Juan Jose Garcia Ripoll
982199e6ee Introduced a new generic function GRAY:STREAM-FILE-DESCRIPTOR which used by SERVE-EVENT to wait for input on a stream (T. Rittweiler). 2010-03-19 19:55:12 +01:00
Juan Jose Garcia Ripoll
c43a6928e1 Allow SYMBOL-MACROLET be used inside a form that declares the symbol as special, and also allow special declarations inside the SYMBOL-MACROLET, as in
(let ((x :special))
    (declare (special x))
    (symbol-macrolet ((x :symbol-macro))
      (values x (locally (declare (special x)) x))))
2010-03-19 18:55:12 +01:00
Juan Jose Garcia Ripoll
82252f6868 The recursive implementation of DIRECTORY with wildcard inferiors forget all inner directories in (DIRECTORY "/foo/**/"). 2010-03-13 23:10:49 +01:00
Juan Jose Garcia Ripoll
be0459a37a Distinguish by name the signal servicing from the signal handling threads. 2010-03-11 00:11:30 +01:00