Commit graph

52 commits

Author SHA1 Message Date
jgarcia
6edcd2cfeb Fixed typo. 2007-12-02 13:53:02 +00:00
jgarcia
e0f5c66ebe Improved code for handling function proclamations. 2007-11-30 23:49:25 +00:00
jgarcia
71cf239d31 Declaration SI::C-EXPORT-FNAME allows specifying the C name of the function 2007-01-06 16:07:15 +00:00
jgarcia
f21de12a27 Reimplement C1MACROLET using the facilities from the bytecodes compiler. 2006-06-17 16:05:26 +00:00
jgarcia
a2fdf244f7 Make MACROLET a bit safer -- a least in the C compiler. 2006-06-17 16:01:04 +00:00
jgarcia
fd3aeae14a MACROLET functions are created in an environment that contains enclosing MACROLET and SYMBOL-MACRO DEFINITIONS. 2006-06-17 16:00:08 +00:00
jgarcia
022fda6f95 Integrated variables into the compiler environment. Variable *VARS* disappears. 2006-06-12 08:52:28 +00:00
jgarcia
7305f018b3 Incorporate tags in the environment. 2006-06-12 08:52:06 +00:00
jgarcia
d7c23c3ad5 Additional functions for the environment. 2006-06-12 08:52:02 +00:00
jgarcia
b03e07bd12 Replaced global variable *funs* by the new compiler environment. 2006-06-12 08:51:56 +00:00
jgarcia
6b406c1d83 Now the compiler can externalize constants with circular references 2006-05-17 15:17:29 +00:00
jgarcia
ee50a03ea4 Use MAKE-LOAD-FORM to compile constants that do not have a readable printed representation (Brian Spilsbury) 2006-05-16 16:18:39 +00:00
jgarcia
d544ad51f4 Remove list. The test with valid-type-specifier suffices and is almost as fast. 2006-04-24 08:44:56 +00:00
jgarcia
5e31168db1 Improved identification of wrong declarations. Simplified code for that. 2006-04-24 08:44:44 +00:00
jjgarcia
6055075b78 Separate temporary and permanent data in a compiled file 2006-02-16 11:04:55 +00:00
jjgarcia
c6df05f4d8 Remove unused function and variable 2006-02-06 10:11:01 +00:00
jjgarcia
4c146bc8c1 Simple implementation of callbacks, much like CFFI does. 2005-10-11 09:01:25 +00:00
japhie
14864f4b6d - Bugfix: make C::GET-RETURN-TYPE return function's return type, not
argument type list.
2005-09-14 11:57:40 +00:00
jjgarcia
7b762a99c4 New functions for performing type inference.
Arithmetic operators *,+,/,- now have simple optimizers.
Fixed several "bugs" in the C code to let ECL compile with GCC 4.0
2005-08-12 15:23:10 +00:00
jjgarcia
f76c1888c6 - The T1 and T3 forms of the compiler have been almost removed. Now, handling of
DEFUN as a toplevel form is made via some new declaration C-GLOBAL and some
  magic both in the optimizer for FSET and in the compiler C1COMPILE-FUNCTION.
- CLINES is now handled with a macro and all lines from CLINES are written
  together in the header.
- It is now illegal to have SI::C-LOCAL inside a macro function.
2005-07-04 09:20:24 +00:00
jjgarcia
85815eb157 DECLARATION names cannot be type names and viceversa 2005-06-09 08:05:17 +00:00
japhie
ef15c97154 Generated C functions now have readable names corresponding to
appropriate Lisp function names (makes gdb backtraces much more
readable).
2005-05-29 15:23:47 +00:00
jjgarcia
127d575ade The special declarations of &aux variables were ignored. Example:
(defun f1 (x &aux y)
  (declare (special y))
  (list (f2 x) y))

(defun f2 (x)
  (declare (special y))
  (setq y 'y)
  (list x y))
2005-05-18 12:13:57 +00:00
jjgarcia
1dd06c78a8 Do not preserve the special proclamations between compiler sessions 2005-05-12 15:45:02 +00:00
jjgarcia
172351b72f Fix typo 2005-01-11 18:04:59 +00:00
jjgarcia
e4aa8f5df0 Allow (SETF ...) function names to appear in proclamations 2005-01-11 17:43:34 +00:00
jjgarcia
ea7b544af3 Xmas fixes. See CHANGELOG for list of changes. 2005-01-07 11:51:23 +00:00
jjgarcia
e4fa9f4e73 Merged in the new compiler structure doubly linked list. 2004-12-16 15:56:54 +00:00
jjgarcia
24688d57f8 Teach the compiler how to produce C functions with a fixed number of arguments when the corresponding lisp function does not have any &optional, &rest, &key. Teach it also how to produce slimmer code for MULTIPLE-VALUE-SETQ/BIND. The type of a C1FORM can now be a (VALUES ...) expression, the first value being obtained with C1FORM-PRIMARY-TYPE. 2004-05-17 07:32:52 +00:00
jjgarcia
3e1a75f49e Unify the routines that emit calls to functions, so that they work with function objects and handle functions with fixed and variable number of arguments 2004-05-13 16:28:13 +00:00
jjgarcia
403511c488 The portable CLX library has been incorporated. 2004-03-25 09:02:27 +00:00
jjgarcia
630bfdf4f4 Clean up the package CL from non-standard symbols and move them into the EXT package, which is a nickname for SYSTEM. 2003-12-11 17:16:48 +00:00
jjgarcia
158997357b In the compiling process, we differentiate between registration of a constant, and dumping of the database of constants. The later being improved with support for a common storage space. Also, complex numbers may now be read that use #n# and #n=. 2003-11-03 08:57:01 +00:00
jjgarcia
fc8deffa71 src/c 2003-10-22 07:27:44 +00:00
jjgarcia
540e4140f4 Forms are now stored as structures. 2003-10-16 07:38:17 +00:00
jjgarcia
df97ca1b92 Fixed bug that prevented compilation under windows. ECL is now built as a single shared library on systems which support it. The compiler is being rewritten using higher level, more expressive functions. 2003-09-08 16:53:29 +00:00
jjgarcia
3af358280a Do not coalesce constants using #'EQUALP because it does not distinguish between #\c and #\C. 2003-08-07 13:51:49 +00:00
jjgarcia
fed2994f14 Fixed processing of FTYPE declarations/proclamations 2003-08-07 12:24:03 +00:00
jjgarcia
a381a7ee09 Merge NEW_COMPILER 25.05.03 2003-05-26 09:49:50 +00:00
jjgarcia
c2aa136143 Various minor fixes, and an important set of changes to teach the compiler
and the interpreter to understand (SETF fname) function names, and to handle
them without creating auxiliary symbols.
2003-04-28 15:55:22 +00:00
jjgarcia
6b76d155ee Create new functions SI::{GET,PUT,REM}-SYSPROP to handle vital information
about functions, SETF forms, DEFTYPEs, etc. Property lists are no longer
used for this task.
2003-03-21 14:18:56 +00:00
jjgarcia
9771e91572 + New implementation of DESTRUCTURING-BIND
+ The bytecodes compiler now alloes a lambda list with &key and no keywords
+ WITH-HASHTABLE-ITERATOR implemented
+ QUIT is now silent
+ In MAKE-PATHNAME, values supplied with a value of NIL would be overwritten
  by the content of :DEFAULTS.
2003-03-04 16:35:03 +00:00
jjgarcia
d21a1fd389 Previous fixed removed. Hopefully this time I got FTYPE declarations
correct: they are restricted to (FTYPE (FUNCTION (arg-types*) ret-type*) name*)
2002-12-17 09:53:04 +00:00
jjgarcia
8852166529 FTYPE should accept two types of declarations: the ones with a formal type
(FTYPE (FUNCTION (T T) T) MY-FUN1 MY-FUN2)
and the abbreviated ones
	(FTYPE MY-FUN1 (T T) T)
2002-12-17 09:15:37 +00:00
jjgarcia
912a7fb03c The declaration specifier for functions is FTYPE, not FUNCTION. 2002-12-14 15:37:29 +00:00
jjgarcia
b0ce08d0ea Changes towards 0.7b comprise naming and calling conventions. See CHANGELOG. 2002-11-04 14:08:24 +00:00
jjgarcia
c479d71051 Reader macro #, is now unsupported. Instead we have implemented
LOAD-TIME-VALUE both in the interpreter and in the compiler. Type error
messages from the compiler have been also improved.
2001-10-07 20:01:50 +00:00
jjgarcia
2c35fb9a2c (DECLARE (OPTIMIZE DEBUG)) is ignored, but no warning is issued. 2001-09-29 11:02:40 +00:00
jjgarcia
8563a1fc1c Fix the compiler so that when it finds LOCALLY, MACROLET or SYMBOL-MACROLET
at the top level, it processes their bodies as top level forms as well. For
instance, (LOCALLY (EVAL-WHEN (:COMPILE-TOPLEVEL) (PRINT "HELLO"))), now works.
2001-07-19 15:33:46 +00:00
jjgarcia
ea010dee34 Add new declaration, si::c-export-fname, which produces lisp compiled files with
meaningful names for the exported functions. For instance,
	(proclaim '(si::c-export-fname union))
is used to produce a C function with name clLunion, which can be directly used
in other compiled files. This feature has been applied to almost all functions
in the Lisp runtime.
2001-07-12 16:32:15 +00:00