Commit graph

20 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
3994456543 Implemented a type propagation phase 2010-05-26 22:01:55 +02:00
Juan Jose Garcia Ripoll
0a0175d98a Move DELETE-C1FORMS to cmpforms.lsp 2010-05-25 22:16:59 +02:00
Juan Jose Garcia Ripoll
7457f9524d Minor fixes in the inference of C1FORM types 2010-05-23 16:32:36 +02:00
Juan Jose Garcia Ripoll
8a29b98f94 C1FORM-REPLACE-WITH now replaces entirely the form, not just creating a VALUES proxy. 2010-05-19 15:20:59 +02:00
Juan Jose Garcia Ripoll
ef797cb513 Management of variable references, read and set nodes, and type updates is now done through the functions in cmpvar.lsp. 2010-05-19 14:20:17 +02:00
Juan Jose Garcia Ripoll
ae8090a67f When traversing a C1FORM, pay attention to non-cons, non-c1form objects 2010-05-16 17:31:22 +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
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
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
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
ffecddc3b9 In principle LET forms can also be moved around 2010-05-13 11:30:11 +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
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
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
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
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