Juan Jose Garcia Ripoll
4614a040d4
New function for detecting arbitrary constant expressions.
2010-05-15 20:28:42 +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
bb29cc908b
Changed the way toplevel macros are registered because we have no way to let MACROEXPAND know about the compiler *GLOBAL-MACROS* table
2010-05-09 23:05:13 +02:00
Juan Jose Garcia Ripoll
17790c4770
Remove the function TYPE-FILTER and deal with the whole set of Common Lisp types in the compiler.
2010-05-09 22:20:47 +02:00
Juan Jose Garcia Ripoll
9e46f3d357
Introduce policy aliases, interned some declaration names in EXT and replaced some of those names with more meaningful ones.
2010-05-09 19:41:04 +02:00
Juan Jose Garcia Ripoll
800ac7b46c
Remove redundant file new-cmp/cmptype.lsp
2010-05-09 19:15:24 +02:00
Juan Jose Garcia Ripoll
2495ae0b8e
Toplevel DEFMACRO forms are processed differently and stored by the compiler in a local table. These definitions do not propagate beyond the currently compiled file.
2010-05-07 22:20:14 +02:00
Juan Jose Garcia Ripoll
5dcb1f6ebc
New type assertion macros for lambdas, reused by both compilers.
2010-05-07 16:02:42 +02:00
Juan Jose Garcia Ripoll
154df113be
Removed file new-cmp/cmpopt.lsp whic is now equal to that in cmp/
2010-05-06 15:45:02 +02:00
Juan Jose Garcia Ripoll
1b808f2290
Compiler macros that open code AREF/ASET using cheap checks written in C
2010-05-05 23:52:25 +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
Juan Jose Garcia Ripoll
d400a096eb
Change of syntax in WITH-BACKEND.
...
Using (WITH-BACKEND :BYTECODES form :C/C++ form ...) allows us
to coalesce both possibilities without the output value of
one suppressed form hiding the other one
2010-04-25 14:33:09 +02:00
Juan Jose Garcia Ripoll
f3071cc41e
Implemented WITH-BACKEND and small interpreter fix.
...
- A new special form, EXT:WITH-BACKEND allows us to select the code depending
on whether it is going to be processed by the interpreter or by the C
compiler.
(defun example ()
(ext:with-backend (:bytecodes) (print 3))
(ext:with-backend (:c/c++) (print 2)))
The two currently available backends are :bytecodes and :c/c++. Note that
when the backend does not match the value, the form is replaced with (VALUES).
- Some forms, such as LIST, CONS, etc, when optimized by the interpreter,
compiled their arguments as toplevel forms, causing the right result,
but out of order evaluation.
2010-04-24 10:39:46 +02:00
Juan Jose Garcia Ripoll
905a0bd4d8
Implemented SI:FOREIGN-DATA-P and used it to optimize (and inline) (TYPEP x 'SI:FOREIGN-DATA)
2010-04-23 20:07:48 +02:00
Juan Jose Garcia Ripoll
035a52823c
Replaced many uses of type_of() with specialized macros (ECL_BIT_VECTOR_P, ECL_BASE_STRING_P, etc), now in the compiler as well.
2010-02-28 01:20:26 +01:00
Juan Jose Garcia Ripoll
48d816b039
Added the possibility of specifying a different name for the source location stored in compiled files.
2010-02-25 23:36:56 +01:00
Juan Jose Garcia Ripoll
0bd19734d7
Replaced most uses of FEtype_error_cons with FEwrong_type_*_arg
2010-02-25 17:17:00 +01:00
Juan Jose Garcia Ripoll
b3846425be
New declaration C::POLICY-DEBUG-IHS-FRAME
2010-02-24 16:38:49 +01:00
Juan Jose Garcia Ripoll
7f52387b73
Do not complain when a global function is closed over.
2010-02-23 16:52:01 +01:00
Juan Jose Garcia Ripoll
ec9727f9f5
Safer inline expansion for BOUNDP
2010-02-20 22:04:50 +01:00
Juan Jose Garcia Ripoll
d47c766a13
Add empty lines around messages at the beginning of COMPILE-FILE, also at the end, and after a note from SAFE-SYSTEM.
2010-02-19 17:24:04 +01:00
Juan Jose Garcia Ripoll
21057b19bd
The old and new compilers now share cmputil.lsp. Toplevel forms are stored both in macroexpanded and non-macroexpanded forms, and the compiler messages print only the innermost form that was not macroexpanded. Improve readability of compiler messages.
2010-02-19 17:16:32 +01:00
Juan Jose Garcia Ripoll
2ac581980b
src/cmp/cmpname is now shard by the old and new compilers.
2010-02-19 17:04:46 +01:00
Juan Jose Garcia Ripoll
337209512c
COMPILE-FILE-PATHNAME must also accept :EXTERNAL-FORMAT in src/new-cmp
2010-02-18 09:22:52 +01:00
Juan Jose Garcia Ripoll
32c75cd640
COMPILE-FILE admits the keyword argument :EXTERNAL-FORMAT.
2010-02-17 19:48:33 +01:00
Juan Jose Garcia Ripoll
cee6703602
COMPILE-FILE only outputs NIL when there were serious errors
2010-02-16 22:31:54 +01:00
Juan Jose Garcia Ripoll
c85f220a46
Remove bogus inline forms for FLOOR and TRUNCATE
2010-02-08 14:26:52 +01:00
Juan Jose Garcia Ripoll
9d1b7c8f7d
ECL accepts FTYPE proclamations for SETF-functions.
2010-02-08 11:47:30 +01:00
Juan Jose Garcia Ripoll
280d509ebd
Until we merge in the new code for type handling, we turn all warnings about types into notes.
2010-02-07 20:56:36 +01:00
Juan Jose Garcia Ripoll
e368e4279b
In compiler-debugger, do not muffle errors because they might be caused by user handlers. Ideally internal errors should have been already muffled by handle-compiler-internal-error
2010-02-07 16:31:06 +01:00
Juan Jose Garcia Ripoll
83eddf11f9
Intoduced _ecl_fix_times_fix, _ecl_big_ceiling and _ecl_big_floor.
2010-01-28 23:08:16 +01:00
Juan Jose Garcia Ripoll
a2b6887e83
Missing argument for a warning
2010-01-25 20:50:31 +01:00
Juan Jose Garcia Ripoll
65cf8c51f6
New function EXT:ENVIRON
2010-01-24 22:37:43 +01:00
Juan Jose Garcia Ripoll
49082430c8
Make the code in C2EMIT-CLOSURE-SCAN bit more clear.
2010-01-03 11:44:09 +01:00
Juan Jose Garcia Ripoll
ba1842f1e2
Fall back to a simpler C1IF to ensure correctness until ECL works.
2010-01-02 15:27:56 +01:00
Juan Jose Garcia Ripoll
d150cbd7b0
In new-cmp/cmpif.lsp, processing of IF forms with constant conditions did not work because the NIL case could be confused with the absence of c1forms.
2010-01-02 15:00:07 +01:00
Juan Jose Garcia Ripoll
7d40377ec0
When processing the externalizable data, places for data created with load-forms must not be eliminated.
2009-12-31 10:42:05 +01:00
Juan Jose Garcia Ripoll
b20cefe9ab
Remove debug statement from cmpname.lsp
2009-12-31 10:24:59 +01:00
Juan Jose Garcia Ripoll
475af14af3
Can not add objects during code emission
2009-12-30 22:31:16 +01:00
Juan Jose Garcia Ripoll
ba303538bb
Fixed errors in EXTRACT-STATIC-CONSTANTS
2009-12-30 22:28:04 +01:00
Juan Jose Garcia Ripoll
049edd4260
Missing package prefix
2009-12-30 21:56:14 +01:00
Juan Jose Garcia Ripoll
6e0393b696
The code for generating inline forms that use @(return) did not create the temporary variables
2009-12-30 21:55:45 +01:00
Juan Jose Garcia Ripoll
aa15c73809
In guess-init-name, the kind is not a keyword, but compulsory.
2009-12-30 21:54:19 +01:00
Juan Jose Garcia Ripoll
665660d4aa
Simplified the code for variable proclamation
2009-12-30 21:53:34 +01:00
Juan Jose Garcia Ripoll
1f5ee0e435
In cmpname, passed the wrong argument to guess-init-name
2009-12-30 21:52:58 +01:00
Juan Jose Garcia Ripoll
494a375aed
Remove unused function
2009-12-30 21:51:44 +01:00
Juan Jose Garcia Ripoll
44fddabd6e
Remove unused variable from cmpblock.
2009-12-30 21:51:31 +01:00
Juan Jose Garcia Ripoll
5ad3a473cc
Export LFUN from C-DATA so that it is recognized in all packages
2009-12-30 21:51:02 +01:00
Juan Jose Garcia Ripoll
53246cd07a
Removed debug statement.
2009-12-30 20:33:00 +01:00
Juan Jose Garcia Ripoll
53343cdb2f
Remove wrong commment in cmptranslate / UPDATE-DESTINATION-TYPE
2009-12-30 18:39:10 +01:00