Commit graph

4978 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
3f3effd034 Fixes in how FTYPE proclamations are stored -- the return types were corrupted in previous implementations of DECLARE/PROCLAIM 2011-12-28 15:58:07 +01:00
Juan Jose Garcia Ripoll
04e08b5617 Replaced the special forms for structure-ref/set with compiler macros. 2011-12-28 15:56:55 +01:00
Juan Jose Garcia Ripoll
0deeac16cf Introduced a new location, THE, which makes a more precise estimate of the location lisp type. This allows the compiler to choose an unsafe cunction when coercing locations. 2011-12-28 12:57:52 +01:00
Juan Jose Garcia Ripoll
d9d6d6864d C2 functions now receive the C1FORM as an argument. 2011-12-28 12:00:01 +01:00
Juan Jose Garcia Ripoll
93c6b00878 MULTIPLE-VALUE-SETQ and PSETQ also introduce type checks. 2011-12-28 00:20:30 +01:00
Juan Jose Garcia Ripoll
e5b704e24f C1SETQ now performs checked assignments. 2011-12-27 16:59:56 +01:00
Juan Jose Garcia Ripoll
a25dfa49ac Change assignements in COMPILE so that the function does not violate the type declaration of its argument. 2011-12-27 16:59:09 +01:00
Juan Jose Garcia Ripoll
93f4e8638c C1CALL now checks the length of the argument list, dispatching to the unoptimized function call if needed. C1CALL-LOCAL is now only used from C1CALL when needed. 2011-12-27 16:18:03 +01:00
Juan Jose Garcia Ripoll
c2e2171dc0 Avoid recursive invocation of C1EXPR by allowing the C1 processors to act like macros, returning new forms to be processed. Remove also the CATCH for compiler errors, since we now rely on conditions for signal handling. 2011-12-27 12:36:52 +01:00
Juan Jose Garcia Ripoll
24c0b37d9a Interpret LET/LET* type declarations as assertions to be tested. 2011-12-27 00:06:17 +01:00
Juan Jose Garcia Ripoll
d71e202945 Replace some DO forms with LOOPs, thus also fixing some type declarations. 2011-12-27 00:05:57 +01:00
Juan Jose Garcia Ripoll
839d86628e Remove unused variable. 2011-12-26 23:59:10 +01:00
Juan Jose Garcia Ripoll
8e22061e57 The argument to DEFPACKAGE is a string designator, not (OR SYMBOL STRING) 2011-12-26 23:58:47 +01:00
Juan Jose Garcia Ripoll
2feea55b31 Propagate the type of a function when invoked through APPLY 2011-12-26 23:16:13 +01:00
Juan Jose Garcia Ripoll
92d1290de4 Turn CHECKED-VALUE into a special form to speed up a bit processing and also to generate less compiled forms. 2011-12-26 22:59:09 +01:00
Juan Jose Garcia Ripoll
7d7dcccef8 Only emit type checks for nontrivial types. 2011-12-26 22:10:01 +01:00
Juan Jose Garcia Ripoll
1a3d3cd2ce Optimize C1COMPILER-TYPECASE for the case in which the first form already satisfies the check in the first pass. 2011-12-26 21:58:16 +01:00
Juan Jose Garcia Ripoll
ecd9dd2470 Implemented type assertions using EXT:COMPILER-TYPECASE so that they can be optimized away. 2011-12-26 20:42:11 +01:00
Juan Jose Garcia Ripoll
281fe567d4 In "make mostlyclean", only enter those directories that exist. 2011-12-26 20:35:09 +01:00
Juan Jose Garcia Ripoll
24debdf161 Fix additional warnings about unused variables and variables which are assumed global in the compiler. 2011-12-26 17:59:16 +01:00
Juan Jose Garcia Ripoll
481302642f Fixed typo in various compiler macros (cmpopt-printer.lsp) 2011-12-26 16:58:35 +01:00
Juan Jose Garcia Ripoll
e360d9000c Coerce to string before calling FIND-SYMBOL. 2011-12-26 10:03:54 +01:00
Juan Jose Garcia Ripoll
d8a74f6357 Introduced compulsory and optional type assertions for arbitrary types, not only those known to the compiler. LAMBDA arguments type checks are rewritten in terms of those now. 2011-12-26 10:03:54 +01:00
Juan Jose Garcia Ripoll
ad0c81bff4 The macro expander for DOLIST in the compiler is now a compiler macro. It also uses an implicit TAGBODY around the body of the DOLIST. 2011-12-26 09:47:00 +01:00
Juan Jose Garcia Ripoll
3067537c33 When TYPEP receives an unknown type, or a contradictory type, it can not ignore it. 2011-12-24 17:04:58 +01:00
Juan Jose Garcia Ripoll
8658613e7d Change macro WITH-START-END to eliminate a warning about unused variables 2011-12-23 22:50:40 +01:00
Juan Jose Garcia Ripoll
7a0b3643a7 In OF-CLASS-P, remove warning about a variable type. 2011-12-23 22:40:25 +01:00
Juan Jose Garcia Ripoll
4496a85039 More fixes to remove warnings about unused variables 2011-12-23 22:36:32 +01:00
Juan Jose Garcia Ripoll
065dd6b59e TRAP-FPE is not needed in the core lisp library 2011-12-23 20:26:37 +01:00
Juan Jose Garcia Ripoll
02db89a9bc The macro expander for DOLIST uses only LET, not SETQ. This way the type declarations are not incompatible with the initial values of the loop. 2011-12-23 19:41:39 +01:00
Juan Jose Garcia Ripoll
a9a110f211 Improve the compiler message in C1SETQ1. 2011-12-23 19:29:13 +01:00
Juan Jose Garcia Ripoll
62ae818c04 Fixed typo in C1CALL-CONSTANT-FOLD 2011-12-23 16:05:18 +01:00
Juan Jose Garcia Ripoll
7a2d30770b Add IGNORE declarations and remove some unused variables. 2011-12-23 15:38:37 +01:00
Juan Jose Garcia Ripoll
169d2997df SI:ECASE-ERROR and ETYPECASE-ERROR are now exported. 2011-12-23 15:38:06 +01:00
Juan Jose Garcia Ripoll
24c658e918 Fixed proclamation for do-defsetf 2011-12-23 12:11:54 +01:00
Juan Jose Garcia Ripoll
cc578f6e3e The inlining of functions is now controlled by a global inline depth. 2011-12-23 12:11:32 +01:00
Juan Jose Garcia Ripoll
5fd965c6c3 Remove compiler debug messages when building ECL 2011-12-23 11:52:25 +01:00
Juan Jose Garcia Ripoll
c789d1ffc2 When safety level is above 2, calls to fdefinition and access to global variables is compiled even if the value is discarded. This is done for the side effect of checking whether the function or the variable is bound. 2011-12-23 11:37:54 +01:00
Juan Jose Garcia Ripoll
19f41cdd0f Constant fold only when the output is a simple constant. 2011-12-19 22:41:48 +01:00
Juan Jose Garcia Ripoll
e361ceada2 Check for NaNs among the compiled constants. 2011-12-19 22:41:11 +01:00
Juan Jose Garcia Ripoll
6b4dc0c182 Yet another iteration about where to store the inline form of a function: the storage has to be enclosed by an eval-when form so that it is never executed when the form is in a LET, LAMBDA, or other expression that can potentially create a closure. 2011-12-19 16:52:59 +01:00
Juan Jose Garcia Ripoll
6426a1def7 Inlining LAMBDA forms left out the &aux variables 2011-12-19 16:51:41 +01:00
Juan Jose Garcia Ripoll
9f992d3d32 Prevent MAPC from being expanded in DECLAIM. 2011-12-18 21:46:16 +01:00
Juan Jose Garcia Ripoll
ef963a7b18 (SETF ...) function names did not undergo the process of checking for compiler macros and inline forms. Now this all is unified under C1CALL 2011-12-18 21:31:40 +01:00
Juan Jose Garcia Ripoll
acf582cbd6 In src/cmp/cmpopt-clos.lsp, add missing references to the CLOS package. 2011-12-18 20:58:41 +01:00
Juan Jose Garcia Ripoll
2ca63fdbf8 Reorder the type checks in src/c/clos/accessor.d to achieve more compact code and faster access 2011-12-18 20:07:05 +01:00
Juan Jose Garcia Ripoll
db610de56b Note the changes regarding INLINE 2011-12-18 19:22:48 +01:00
Juan Jose Garcia Ripoll
f12e4933a1 Fixed typo in C:PROCLAIM-INLINE. 2011-12-18 19:11:46 +01:00
Juan Jose Garcia Ripoll
3e1fcb7a2c New functions DECLARED-{INLINE,NOTINLINE}-P introduce some clarity in the inline process. 2011-12-18 18:49:27 +01:00
Juan Jose Garcia Ripoll
d4f3d0d330 FLET and LABELS functions may now be inlined when they are declared so. 2011-12-18 18:33:10 +01:00