Commit graph

3619 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
554c43ab67 When in unsafe mode, do not use the checked functions to perform C<->Lisp type coercions 2010-05-15 16:56:53 +02:00
Juan Jose Garcia Ripoll
371ca30dbb Safer and more efficient version of seq-iterator 'methods' 2010-05-15 16:48:48 +02:00
Juan Jose Garcia Ripoll
f942da1533 Fix proclamation for LENGTH acting on vectors 2010-05-15 16:48:24 +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
6c8926c1bf Unused compiler macros for seq-iterator methods 2010-05-15 16:47:40 +02:00
Juan Jose Garcia Ripoll
761f144872 Inline expander for FIND 2010-05-14 18:32:21 +02:00
Juan Jose Garcia Ripoll
ef6c5dab48 The compiler macro for ASSOC also works for general test/keyword arguments. 2010-05-14 16:49:38 +02:00
Juan Jose Garcia Ripoll
3681bcd018 The compiler macro for MEMBER also works for general test/keyword arguments. 2010-05-14 16:30:21 +02:00
Juan Jose Garcia Ripoll
fe38ab3039 Macros for unsafe car/cdr access 2010-05-14 16:30:18 +02:00
Juan Jose Garcia Ripoll
ad4d31cde9 New macro, RECKLESS, for unsafe operations 2010-05-14 16:08:27 +02:00
Juan Jose Garcia Ripoll
0389fe11be When inlining, set the environment to that of the inlined form, to properly capture things like speed / safety optimizations. 2010-05-14 16:08:03 +02:00
Juan Jose Garcia Ripoll
744818d8e9 Commit file cmpopt-seq.lsp missing from previous uploads 2010-05-14 09:26:44 +02:00
Juan Jose Garcia Ripoll
5f1b459879 Move ASSOC from a C1 OPTIMIZED form to a compiler macro 2010-05-13 23:03:53 +02:00
Juan Jose Garcia Ripoll
34233787c6 Replaced the C1 special form for MEMBER with a compiler macro. 2010-05-13 22:34:04 +02:00
Juan Jose Garcia Ripoll
ebefa89d55 Added a compiler macro for optional type checks 2010-05-13 22:32:19 +02:00
Juan Jose Garcia Ripoll
18928c0b1f Activate the compiler macro expansion for TYPEP 2010-05-13 21:08:15 +02:00
Juan Jose Garcia Ripoll
892870a9d8 Proclaim SI:COERCE-TO-VECTOR to save the cl_narg argument 2010-05-13 21:08:04 +02:00
Juan Jose Garcia Ripoll
01574b68bb Replace the C1 processor for COERCE with a compiler macro that is now activated, and in this case add a new coercion function for simple arrays. 2010-05-13 20:45:42 +02:00
Juan Jose Garcia Ripoll
807a1c3417 More informative BABOON error messages in cmpenv-api.lsp 2010-05-13 19:20:23 +02:00
Juan Jose Garcia Ripoll
2dfa8d2dff Replace C1RPLACA with a compiler macro 2010-05-13 19:04:37 +02:00
Juan Jose Garcia Ripoll
e15a517fc3 Misuse of C2EXPR* in the expander for VALUES 2010-05-13 18:18:56 +02:00
Juan Jose Garcia Ripoll
2e3b7b0d6b When replacing variables with their values uses VALUES to extract the first value 2010-05-13 18:18:29 +02:00
Juan Jose Garcia Ripoll
feafc6bd77 (VALUES x) can be optimized whenever the destination is not RETURN/VALUES 2010-05-13 17:55:30 +02:00
Juan Jose Garcia Ripoll
aca68e9fc6 Improve the code generated for VALUES eliminating the intermediate variable when there is only one output value 2010-05-13 17:24:27 +02:00
Juan Jose Garcia Ripoll
7c92b0fc8c The function C1FORM-VALUES-NUMBER is now factored and grouped with the other C1FORM functions in cmpform. 2010-05-13 17:03:28 +02:00
Juan Jose Garcia Ripoll
82898a7e0f We can also replace variables with values that are 'pure' or unmodified by the forms after it 2010-05-13 14:12:15 +02:00
Juan Jose Garcia Ripoll
02bdb9df00 The inliner for VALUES forms was not used 2010-05-13 13:38:04 +02:00
Juan Jose Garcia Ripoll
edfdf47d22 BABOON ignored the actual error message from the compiler 2010-05-13 13:37:44 +02:00
Juan Jose Garcia Ripoll
eed2ba9c05 A LET/LET* with special variables is no longer considered to have side effects by default 2010-05-13 11:31:01 +02:00
Juan Jose Garcia Ripoll
ffecddc3b9 In principle LET forms can also be moved around 2010-05-13 11:30:11 +02:00
Juan Jose Garcia Ripoll
6f9321e3b0 C-INLINE forms get the side effects field from its expansion 2010-05-13 11:29:50 +02:00
Juan Jose Garcia Ripoll
7a9253ebad Removed unused function OPTIMIZE-C1LET* 2010-05-13 10:38:57 +02:00
Juan Jose Garcia Ripoll
9f842084bc When replacing a variable with a form, only the first value is used 2010-05-13 10:04:54 +02:00
Juan Jose Garcia Ripoll
f6bddc7b0b VALUES forms are more efficiently inlined. 2010-05-13 10:04:37 +02:00
Juan Jose Garcia Ripoll
dbf16619eb Merge the optimizers for LET and LET* adding a new function for unregistering variables from discarded C1FORMs. 2010-05-13 00:24:27 +02:00
Juan Jose Garcia Ripoll
124e0427ec New function for deciding when and how to replace LET/LET* variables with their values. 2010-05-12 23:44:07 +02:00
Juan Jose Garcia Ripoll
37d13228a0 INLINE-ARGS would not optimize PROGN forms 2010-05-12 23:41:59 +02:00
Juan Jose Garcia Ripoll
73f81381be *CURRENT-FORM* was not properly updated by C1EVAL 2010-05-12 23:41:09 +02:00
Juan Jose Garcia Ripoll
d8dac21c8f The c1form-parents field is now a list of the nodes above the current one. We provide functions to rewrite the list when moving the node and speed up FIND-NODE-IN-LIST using this list. 2010-05-11 17:25:16 +02:00
Juan Jose Garcia Ripoll
854349437f Constants are always produced as fresh new locations so that we do not overwrite the parent and other fields 2010-05-11 16:45:12 +02:00
Juan Jose Garcia Ripoll
3689a77759 Remove unused function NEED-TO-PROTECT 2010-05-11 16:12:08 +02:00
Juan Jose Garcia Ripoll
6c245096be In the database of C1FORMs, store information about side effects and use the field C1FORM-SIDE-EFFECTS to speed up computation of those. 2010-05-11 16:04:28 +02:00
Juan Jose Garcia Ripoll
db84803241 Create a database of C1FORM types 2010-05-11 15:08:53 +02:00
Juan Jose Garcia Ripoll
5fcb3c8d22 Split the C1LET optimizer into three reusable components 2010-05-11 14:18:19 +02:00
Juan Jose Garcia Ripoll
f07de591f3 New function GLOBAL-VAR-P 2010-05-11 14:18:04 +02:00
Juan Jose Garcia Ripoll
61d4c99781 Further simplify the C1LET/LET* code 2010-05-11 00:29:13 +02:00
Juan Jose Garcia Ripoll
45daa8e911 Merge the components for C1LET* and C1LET 2010-05-11 00:18:21 +02:00
Juan Jose Garcia Ripoll
d86a9a482f Factor also C1LET* into smaller components 2010-05-11 00:09:25 +02:00
Juan Jose Garcia Ripoll
4c303d8d41 Factor DO-C1LET into smaller components 2010-05-10 23:17:56 +02:00
Juan Jose Garcia Ripoll
b38dd74ce6 C1LET uses C1LOCALLY or C1LET* when the list of bindings is small. 2010-05-10 22:09:18 +02:00