Commit graph

1381 commits

Author SHA1 Message Date
Daniel Kochmański
a04b6ff8b8 cmp: mapcar: evaluate function only once
When function is a closure, all lexical environment were reinitialized
on each function call, because it was expanded multiple times. Do it
only once and use result in funcall. Fixes #17.

Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-07-16 07:52:52 +02: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
Daniel Kochmański
ff865d1c59 cmplet: Remove invalid declaration. Fixes #28. 2015-04-07 21:34:01 +02:00
Daniel Kochmański
7229cfefc9 compilator: fixes issue #3 (regression on package :lapack).
cmptype-arith.lsp: problem introduced in commit
c0b23555c6 which added empty &optional
clause and &allow-other-keys capability to typespec for values.

Problem was, that multiple &optional keywords in typespec it
considered error, while

'(VALUES &OPTIONAL T &OPTIONAL T)

should return as optional part, list (T &optional T) - even if it
looks weird.
2015-03-05 23:45:22 +01:00
Daniel Kochmański
0d97f64c60 cmpc-machine.lsp: --with-sse=yes build failure fix. Closes #301.
Typo in rewriting cmpc-machine in order to enable cross-compilation for ecl.
Related ticket: https://sourceforge.net/p/ecls/bugs/301/
2015-02-26 15:48:58 +01:00
Stas Boukarev
3f0ce7f7d4 Fix VALUES declaration processing.
A change to C::SPLIT-VALUES-TYPE got the order reversed.

Fixes #275.
2014-03-02 21:45:45 +01:00
Stas Boukarev
e2e53dc679 Fix FTYPE declaration to X from being applied to (SETF X).
C1LAMBDA-EXPR used the block-name to get declarations, but BLOCK name
is a symbol, and for a function named (SETF X) the block would have
the name X, resulting in wrong declarations.

Fixes #262.
2014-03-02 21:36:56 +01:00
Juanjo Garcia-Ripoll
c8a4d98da6 (INTEGER *) and other type names made of lists are now allowed as declaration names. 2013-10-29 22:25:42 +01:00
Juanjo Garcia-Ripoll
db2925daf6 Fixed the routines that deal with VALUES types, extracting primary types, splitting them, etc 2013-10-10 23:45:37 +02:00
Juanjo Garcia-Ripoll
c0b23555c6 SPLIT-VALUES-TYPE and VALUES-TYPE-PRIMARY-TYPE redesigned to work with &allow-other-keys and empty &optional 2013-10-10 22:47:56 +02:00
Juanjo Garcia-Ripoll
e7daee08e8 Fixed wrong proclamation for ensure-directories-exist. 2013-10-09 21:41:57 +02:00
Juan Jose Garcia Ripoll
44c86e083c Implemented FFI:C-PROGN 2013-07-03 17:08:59 +02:00
Juan Jose Garcia Ripoll
c503bfa99b APPLY should not be inlined when using frame arguments. 2013-07-03 16:58:27 +02:00
Juan Jose Garcia Ripoll
a40c1907cf Added the special form FFI:C-PROGN 2013-06-27 23:09:37 +02:00
Juan Jose Garcia Ripoll
08594e60a9 Clean-up COERCE-LOCS 2013-06-23 00:15:09 +02:00
Juan Jose Garcia Ripoll
a84cf0df47 Introduced C-type declarations in the compiler. 2013-06-22 21:55:51 +02:00
Juan Jose Garcia Ripoll
6ffd74aa05 Slight simplification in the detection of alien declarations 2013-06-22 20:41:28 +02:00
Juan Jose Garcia Ripoll
914ce253d1 FSET only can work specially when it is a toplevel form 2013-06-19 22:13:48 +02:00
Juan Jose Garcia Ripoll
5b82b34f5c Fixed order of loading files 2013-06-08 22:24:14 -07:00
Juan Jose Garcia Ripoll
63640b0a79 Added newlines to the C templates. 2013-06-08 22:04:06 -07: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
2798c5caea Remove unused lines. 2013-06-02 10:06:42 +02:00
Juan Jose Garcia Ripoll
5bbb85fd7f When type propagation errors happen, show the function context. 2013-05-26 11:09:53 +02:00
Juan Jose Garcia Ripoll
3662e43229 The value of *env-lvl* was not saved in cmptop.lsp 2013-05-25 00:59:18 +02:00
Juan Jose Garcia Ripoll
2bbc16ac33 Fixed different uses of *volatile*, which indented wrong or placed it in the wrong place 2013-05-23 13:47:38 +02:00
Juan Jose Garcia Ripoll
d1030a643c Improve slightly the indentation of the C code generated by FLET, removing spurious variable assignments. 2013-05-23 12:39:55 +02:00
Juan Jose Garcia Ripoll
92054ae38c The declaration of CLV variables had too many newlines. 2013-05-23 11:16:49 +02:00
Juan Jose Garcia Ripoll
d90e3c0e90 The definition of env0 missed a newline character before it. 2013-05-23 11:13:25 +02:00
Juan Jose Garcia Ripoll
94e04b5484 Fix the order of statements in the compiler macro expansion of DPB and LDB. 2013-04-17 23:45:55 +02:00
Juan Jose Garcia Ripoll
3c0a911ebf HASH-TABLE-COUNT now updates the list of live entries in weak hash tables 2013-04-16 23:11:01 +02:00
Juan Jose Garcia Ripoll
e0e9eb731e Don't create extra strings on platforms without limitation on the string size. 2013-04-14 22:27:21 +02:00
Juan Jose Garcia Ripoll
c603e57ef3 In *.data we have to add a final newline character to ensure that the compiler does not complain. 2013-04-14 21:47:17 +02:00
Juan Jose Garcia Ripoll
03a38affeb The length of the string that stores compiled data was off by 1 character 2013-04-13 22:59:18 +02:00
Juan Jose Garcia Ripoll
fff744af79 Removed empty line from *.data 2013-04-13 00:15:40 +02:00
Juan Jose Garcia Ripoll
b47b1869c6 New way of creating lisp data, using an array of string streams 2013-04-07 13:50:07 +02:00
Juan Jose Garcia Ripoll
51d0dcaaa3 Fixed type coercion in system() 2013-04-02 23:11:38 +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
5e177e07de cl_fixnum/cl_index lose priority vs long/unsigned long when representing integers. This avoids confusion when the argument fits in cl_fixnum but is a bignum. 2013-01-13 23:40:23 +01:00
Juan Jose Garcia Ripoll
c7016018aa *,+,-,/ now convert their operands to the largest C number type that fits the arguments and the output 2013-01-13 23:31:00 +01:00
Juan Jose Garcia Ripoll
89a8201b0b New functions RATIOP, {SINGLE,SHORT,DOUBLE,LONG}-FLOAT-P help avoid consing in TYPEP 2013-01-12 21:15:35 +01:00
Juan Jose Garcia Ripoll
e0cfa8028d Remove a statement that prevented TYPEP from being optimized for SATISFIES and other complicated types (S. Boukarev) 2013-01-12 19:49:10 +01:00
Juan Jose Garcia Ripoll
54372deb73 CONSTANT-FORM-VALUE and CONSTANTP-INNER cannot be referenced as C functions because they must change, depending on the compiler 2013-01-11 23:52:18 +01:00
Juan Jose Garcia Ripoll
86a90f5ef9 Restore a WITH-CLEAN-SYMBOLS wapping the expansion of an array bounds check. 2013-01-11 23:50:37 +01:00
Juan Jose Garcia Ripoll
d1ee053ccd Fix further uses of CONSTANTP+EVAL, replacing them with CONSTANT-FORM-VALUE and using the environment. 2013-01-11 22:55:49 +01:00
Juan Jose Garcia Ripoll
271df28de1 CONSTANT-VALUE-FORM and CONSTANTP-INNER's environment value is now optional 2013-01-11 22:53:53 +01:00
Juan Jose Garcia Ripoll
4f00e74ca0 No optional type check generated for constant values. 2013-01-10 10:03:33 +01:00
Juan Jose Garcia Ripoll
3da57e381a In the compiler LET transforms constant variables (tagged by :READ-ONLY) that take constant forms into SYMBOL-MACROLET 2013-01-10 10:03:33 +01:00
Juan Jose Garcia Ripoll
faa39d2f50 CONSTANT-EXPRESSION-P now checks whether the 1-form is pure before checking the arguments. 2013-01-10 00:54:08 +01:00
Juan Jose Garcia Ripoll
67c76f0ad4 CONSTANT-VALUE-P and friends now use the (compiler) environment. 2013-01-10 00:49:32 +01:00
Juan Jose Garcia Ripoll
f1fede5264 C1COMPILER-TYPECASE now handles constant values as well as variables. 2013-01-10 00:48:58 +01:00