Commit graph

66 commits

Author SHA1 Message Date
jjgarcia
451ed9087d When coercing the output of INLINE-ARGS, and found a (FIXNUM (T some-location)),
recognize that the "some-location" variable is NOT unboxed.
2002-12-05 09:52:07 +00:00
jjgarcia
f589ddf587 When compiling a (VALUES ...) form, put the result in VALUES; do not use
value0, because then the compiler assumes only one value is produced.
2002-12-05 09:48:52 +00:00
jjgarcia
de9f5afdaf In MAYBE-PUSH-ARGS, a C variable was used initialized. 2002-12-05 09:45:38 +00:00
jjgarcia
151cf73044 Fix the names of the optimizers for SHIFT<< and SHIFT>>. 2002-12-05 09:42:58 +00:00
jjgarcia
69712a6b5a More explicit error message at end of compilation time. 2002-11-28 09:43:19 +00:00
jjgarcia
7489558f2b Do not use linking-calls when compiling PCL, because it is a waste of space and time, due to the use of generic functions. 2002-11-18 12:57:14 +00:00
jjgarcia
63b1ed0e31 Move all si::c-export-fname proclamations to the sysfun.lsp file, because they are only required when compiling files. 2002-11-18 12:52:31 +00:00
jjgarcia
fcb923948d Removed si::clear-compiler-properties from the core library. It is defined later in the compiler. 2002-11-18 12:46:32 +00:00
jjgarcia
632312cfcb Removed si::*inhibit-macro-special*. 2002-11-18 12:45:41 +00:00
jjgarcia
6b408bad43 Remove pathname_match_p and symbol_name, which are redundant. Clean external.h, removing names of functions which do ot exist. 2002-11-18 11:30:56 +00:00
jjgarcia
2e6482b0a1 Rewrite the checking of # of arguments, so that the error message gets the name of the function whenever possible. 2002-11-18 11:29:21 +00:00
jjgarcia
541842cc98 When binding optional values, we use two calls to BIND. This means
'BDS-BIND is pushed twice on *unwind-exit*, which results in two calls
to bds_unwind1, which is wrong.
2002-11-15 19:26:50 +00:00
jjgarcia
8ddd9acbbd Fixed a typo. 2002-11-15 19:00:47 +00:00
jjgarcia
72ceea3d3c Fixed FILE-NAMESTRING, implemented ENSURE-DIRECTORIES-EXIST, and added a
WITH-COMPILATION-UNIT which does nothing.
2002-11-14 18:38:34 +00:00
jjgarcia
c3dbc31900 siSpretty_print_format does not exist. Use ADD-SYMBOL to refer to this
symbol and optimize run-time access via MANGLE-NAME.
2002-11-12 09:45:29 +00:00
jjgarcia
914f959599 1) Fix error in UNWIND-PROTECT forms: the destination frame nlj_fr has to
be saved, because it may be overwritten by a BLOCK or TAGBODY inside
the normal exit form.
2) Implement Invocation History Stack as a chain of stack-allocated records.
3) In compiled TAGBODY forms, replace tags with numbers to save space.
2002-11-11 12:57:21 +00:00
jjgarcia
569a5ef6f4 When compiling (function (lambda-block f (x) ...)), a block definition is missing. 2002-11-05 13:29:34 +00:00
jjgarcia
b0ce08d0ea Changes towards 0.7b comprise naming and calling conventions. See CHANGELOG. 2002-11-04 14:08:24 +00:00
jjgarcia
9f4a649747 Source code broke with last commit :-( 2002-10-22 12:28:22 +00:00
jjgarcia
a682c5accb Make MAYBE-PUSH-ARGS smaller. 2002-10-21 12:29:44 +00:00
jjgarcia
a9e4edf4d0 The calling conventions have been changed. SI::C-ARGUMENTS-LIMIT and
LAMBDA-PARAMETERS-LIMIT are both 64. Up to C-ARGUMENTS-LIMIT may be
passed to a function using C calling conventions. If the function is
to retrieve more arguments, (for instance through a &rest variable),
this can be done, but then the arguments have to be pushed on the lisp
stack. This method allows us to raise the CALL-ARGUMENTS-LIMIT up to
MOST-POSITIVE-FIXNUM. From a users point of view, there is no visible
change, excep the fact that a function may receive more arguments.

The function apply() has been replaced with cl_apply_from_stack().
The former took a pointer to the list of arguments. The latter assumes
that the last "narg" elements on the lisp stack are the arguments of
the function.
2002-10-21 09:27:58 +00:00
jjgarcia
a5aaa3edf3 Use abs_{srcdir,builddir,top_srcdir}, to avoid problems with latest autoconf. 2002-10-13 16:02:23 +00:00
jjgarcia
29734ae79b New functions SI:SAFE-EVAL and cl_safe_eval() allow the user to evaluate
code with errors without jumping into the debugger. Useful when embedding
ECL in other programs.
2002-10-08 17:40:22 +00:00
jjgarcia
308ca50f5d Export build-program as well. 2002-10-07 07:17:39 +00:00
jjgarcia
e6922fb76c Function SI:NANI has been removed. Its purpose was to provide an
object which could not be printed or readed so that it could be
used to mark unbound slots in classes. Now the function SI:UNBOUND
performs the same task
2002-05-22 13:40:38 +00:00
jjgarcia
37ff2b9644 Removed INT-CHAR. Use CODE-CHAR instead. 2002-05-13 13:52:45 +00:00
jjgarcia
6f10f3e925 Fix typo. 2002-05-13 07:24:10 +00:00
jjgarcia
6ec3b91890 Implement DEFINE-COMPILER-MACRO and COMPILER-MACRO-FUNCTION 2002-05-10 07:41:15 +00:00
jjgarcia
3d968c077a ffi::definline has a bogus definition in ffi.lsp. 2002-02-12 16:06:18 +00:00
jjgarcia
af0504410d Instead of producing a call to object_to_int, defCbody should call object_to_fixnum 2002-02-12 16:05:35 +00:00
jjgarcia
d5531d7a3f Add support for Mac OSX, which means
- Enable simple allocator to use mmap()
- Rewrite cmpwt.lsp so that it produces files with short lines and ANSI strings
- Fix mkdir so that it accepts a parameter for the mode
2001-12-25 16:13:18 +00:00
jjgarcia
c9b91f9618 Minimal patches for C++ compatibility 2001-12-20 09:17:51 +00:00
jjgarcia
851cd03941 The project name goes back to ECL. Therefore feature #+ECL returns and the
program and libraries are named ecl*. Finally the routine sys::build-ecls
has been renamed sys::build-program.
2001-11-21 08:07:30 +00:00
jjgarcia
9b4bd625f4 +The compiler produced wrong code for RETURN-FROM forms inside an UNWIND-PROTECT.
+Deftype BIT-VECTOR would not expand to a vector type.
+Each compiled file has an entry point whose name is either
 init_CODE() or another name based on the name of the source file.
 The algorithm for computing these names has been slightly changed
 so that the entry points of ECLS's own library do not conflict with
 user defined entry points.
+A LET/LET* form in which the initializers for a variable have not
 the expected type produce a warning, but the code is accepted. For
 instance (LET (V) (DECLARE (TYPE FIXNUM V)) (SETQ V 1)) now
 compiles.
+(SETF name), where name is a symbol, is now a valid function name in all
 contexts. It is accepted by DEFUN, FUNCTION, FBOUNDP, FMAKUNBOUND, etc,
 and it can be the on the function position in any form.
+New specialized arrays for (UNSIGNED-BYTE 8) and (SIGNED-BYTE 8).
2001-11-17 11:02:12 +00:00
jjgarcia
4a5ff5cb15 A bug in the compiler lead to wrong output for CATCH forms in which the tag is not constant. 2001-10-20 15:57:52 +00:00
jjgarcia
c63e81c4f5 Simplified compilation of &aux parameters in lambda lists.
Fixed bug in the compiler for MULTIPLE-VALUE-BIND: resulting code would not
undo bindings of special variables.
Optimized statements like (let ((*special-var* *special-var*)) ...) where
*special-var* is a special variable.
2001-10-19 22:16:49 +00:00
jjgarcia
8e29a86094 Symbolics' LOOP macro incorporated. 2001-10-17 18:42:44 +00:00
jjgarcia
101cddc1b1 When compiling PSETQ, the arguments would be evaluated in the wrong order. 2001-10-17 18:41:17 +00:00
jjgarcia
7957040185 New interface for building standalone programs and libraries. 2001-10-17 16:40:22 +00:00
jjgarcia
b2dd8e9e3a Documentation strings are stored in hash tables, not in property lists.
These hash tables can be dumped to help files which are understood by ECLS.
Most documentation strings have been moved back to the lisp source files
from which "SYS:help.doc" is built.
2001-10-15 16:44:04 +00:00
jjgarcia
b979ad8b0b Changes in the names of macros related to fixnums, characters and arrays. 2001-10-11 17:44:57 +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
0b8bb53770 Change the interface of C::BUILD-ECLS 2001-10-04 16:29:07 +00:00
jjgarcia
5f0dbbf1d1 - Remove function_entry_table.
- The value of *package* is correctly set and restored while loading
  compiled code. This way, 'ecls -eval "(print *package*)"' produces
  the expected result #<"COMMON-LISP-USER" package>
- COMPILE-FILE now outputs three values.
- The value of si::*keep-definitions* determines whether the
  interpreter keeps the source of defined functions, for later use
  with COMPILE and DISASSEMBLE. For instance,
	> (set si::*keep-definitions* t)
	> (defun foo (x) (1+ x))
	> (compile 'foo)
	> (foo 2)
	3
	> (compile 'foo)
	;;; Error ....
  These definitions are lost once the function is compiled, hence
  the second error message.
2001-10-03 16:30:15 +00:00
jjgarcia
2c35fb9a2c (DECLARE (OPTIMIZE DEBUG)) is ignored, but no warning is issued. 2001-09-29 11:02:40 +00:00
jjgarcia
8ab16a1af9 Commit port to Cygwin. 2001-09-08 17:06:38 +00:00
jjgarcia
9c09789e75 The interpreter, the printer and the compiler now share a common stack.
This stack is also used to build the Invocation History records, which keep
track of which functions are called and which are their local environments.
With these changes, the debugger now works to the extend that it inspecting
these Invocation History Records with :backtrace, :up, :down, :variables,
now output the rights values.
2001-09-05 18:09:20 +00:00
jjgarcia
e090dfbc86 Avoid passing files throug the preprocessor, as it corrupts paths. For
instance, when cross-compiling from FreeBSD to Linux, /compat/linux
gets converted into "/compat/ 1 " which is obviously bogus.
2001-08-18 10:55:10 +00:00
jjgarcia
8218528ffb Fixnum product would overflow.
Bit fiddling operations with negative fixnums now work.
Remove unportable code of the type va_list d = cs.
Simplify gathering of &rest and &key arguments in compiled code.
2001-08-06 22:14:31 +00:00
jjgarcia
16668c218d When using Boehm's GC, protect data in shared libraries from garbage collection. 2001-07-30 16:09:29 +00:00