Commit graph

1186 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
aaf55b6a46 Fix for type propagation of EXPT 2012-02-06 21:18:52 +01:00
Juanjo Garcia-Ripoll
d24682b9fe Moved VECTOR-PUSH-EXTENT into the core because it is needed early in the bytecodes compiler 2012-02-06 17:06:04 +01:00
Juan Jose Garcia Ripoll
2bf38a92fc When a form had more than 63 arguments, it did not pass through the macro-expander. 2012-02-02 23:00:21 +01:00
Juan Jose Garcia Ripoll
10dea13a51 Unicode strings were not properly saved in C compiled code. 2012-01-15 19:54:06 +01:00
Juan Jose Garcia Ripoll
78b10d89ad *compiler-break-enable* was sset to T by FIX-READ-ONLY-VARIABLE-TYPE. 2012-01-15 11:18:04 +01:00
Juan Jose Garcia Ripoll
5743b5cbd4 Fixed circularities when printing comments in the compiler and when printing the TRACE 2012-01-02 23:12:17 +01:00
Juan Jose Garcia Ripoll
5d7410bf51 Replace most uses of fixint with ecl_to_fix/ecl_to_size 2012-01-01 23:49:37 +01:00
Juan Jose Garcia Ripoll
0102aed9f5 We introduce two functions, ecl_to_fix/ecl_to_size, which may be inlined and are more focused than fixint/fixnnint 2012-01-01 23:39:01 +01:00
Juan Jose Garcia Ripoll
fc0fb82757 Type inference for LOGAND 2012-01-01 19:32:50 +01:00
Juan Jose Garcia Ripoll
ca0222fd19 Implemented EXT:TRULY-THE and made THE expand to either EXT:TRULY-THE or EXT:CHECKED-VALUE depending on the optimization settings. 2011-12-31 19:37:13 +01:00
Juan Jose Garcia Ripoll
f109f94a91 Change the syntax of CHECKED-VALUE so that it matches the one of THE. 2011-12-31 18:46:01 +01:00
Juan Jose Garcia Ripoll
0e2095753a Fixed compiler macroexpander for STRUCTURE-SET 2011-12-30 21:59:34 +01:00
Juan Jose Garcia Ripoll
60825360ea Fixed compiler macroexpander for SETQ 2011-12-30 21:58:39 +01:00
Juan Jose Garcia Ripoll
cb66371cf2 Another expansion of DOLIST which uses unboxing. Seems to produce better code with the new model. 2011-12-30 12:40:06 +01:00
Juan Jose Garcia Ripoll
551b9b2e23 Simplfied c1setq so that it does not call c1setq1 but returns back to c1expr. 2011-12-30 12:40:06 +01:00
Juan Jose Garcia Ripoll
7d1447b040 Fixed various typos that led to infinite recursion of compiler macros in cmpstructures.lsp 2011-12-30 12:40:06 +01:00
Juan Jose Garcia Ripoll
c98e53a346 Added an inliner for 1+/1- to ecl_make_integer(), which does not dispatch on types. 2011-12-29 00:25:57 +01:00
Juan Jose Garcia Ripoll
c95d096662 The new policies can now take an argument, as in (DECLARE (TYPE-ASSERTIONS NIL)) 2011-12-28 23:24:13 +01:00
Juan Jose Garcia Ripoll
e63a78ce26 The EXT package is now used in the C package 2011-12-28 21:27:16 +01:00
Juan Jose Garcia Ripoll
857677f1ca Rewrite DOTIMES to adapt to the new type checking scheme. 2011-12-28 20:50:32 +01:00
Juan Jose Garcia Ripoll
d5fd199116 Added some IGNORE declarations and fixed some references to undefined variables. 2011-12-28 16:33:27 +01:00
Juan Jose Garcia Ripoll
d1b82f3e8d When extracting primary types from (VALUES), use NULL. 2011-12-28 16:32:48 +01:00
Juan Jose Garcia Ripoll
3f17b631a0 Replaced the macro expanders for the structure accessors. 2011-12-28 16:31:28 +01:00
Juan Jose Garcia Ripoll
a097641aff In C2CALL-GLOBAL use the form primary type as expected type. 2011-12-28 15:59:13 +01:00
Juan Jose Garcia Ripoll
6ac809efba Remove type propagators for structure-set/ref 2011-12-28 15:58:22 +01:00
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
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
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
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
4496a85039 More fixes to remove warnings about unused variables 2011-12-23 22:36:32 +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