Commit graph

35 commits

Author SHA1 Message Date
jjgarcia
0290efd01c Implemented the class redefinition protocol, and forward referenced classes. 2003-12-15 08:54:10 +00:00
jjgarcia
6d1ec50d38 Fixed GCD. Implemented several stream functions. Fixed LCM. Fixed the inline expansions for ZEROP, PLUSP, MINUSP, ODDP and EVENP. Fixed the meaning and allowed values of REHASH-THRESHOLD. SXHASH now produces hash keys which are equal for EQUAL bitvectors. Implemented ARITHMETIC-ERROR-OPERANDS. Fixed a bug in hash table which duplicated the number of entries whenever the hash grew. 2003-12-12 08:26:29 +00:00
jjgarcia
789844e8d3 Use a lisp object to fill unbound slots rather than a null pointer which may end up causing SIGSEGV. 2003-12-11 12:56:38 +00:00
jjgarcia
c5ec810687 Division by integer 0 signal a DIVIDE-BY-ZERO error. (- (- MOST-NEGATIVE-FIXNUM)) now works. Fixed CEILING and FLOOR with arguments MOST-NEGATIVE-FIXNUM (- MOST-NEGATIVE-FIXNUM). (EXPT x y) now returns 1 coerced to the right type when (ZEROP y)=>T. 2003-12-09 09:34:33 +00:00
jjgarcia
cdff225681 Implemented locking on hash tables and packages. Fixed several floating point contagion bugs in +, -, /, *, and ROUND. 2003-11-24 11:27:28 +00:00
jjgarcia
eb8f202478 Change order in which threads are initialized. Improved (or let's say fixed) marking of thread objects. New own_process thread object 2003-11-21 17:11:06 +00:00
jjgarcia
01c6e8abff Use more lispy names for the thread objects, and add locks. 2003-11-19 15:07:18 +00:00
jjgarcia
4eac79774e Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
jjgarcia
dfe6fb3213 Most structure and enumeration types are renamed to avoid clashes with other libraries (most notably C++). 2003-10-22 07:56:36 +00:00
jjgarcia
f8487086bb Hash tables can now use EQUALP as a test 2003-10-22 07:26:43 +00:00
jjgarcia
e3473825d2 Bunch of fixes to allow loaded files to be garbage collected. New file naming conventions. 2003-10-06 09:40:32 +00:00
jjgarcia
ee391629b6 New bytecodes compiler and interpreter, which use 8-bits large bytecodes and
16-bits large arguments.
Macros are implemented as two-argument functions, leaving argument checking
to funcall() and apply() and thus saving space.
AND, WHEN and OR are plain macros. No optimizer is required in the bytecodes
compiler.
2003-08-05 10:01:57 +00:00
jjgarcia
e5072a82d9 Use user-supplied DPP to build the C files. machines.h is no longer required. 2003-07-23 13:09:37 +00:00
jjgarcia
5e56be36a8 ECL ported to Solaris/SPARC-32 2003-07-01 12:28:44 +00:00
jjgarcia
a381a7ee09 Merge NEW_COMPILER 25.05.03 2003-05-26 09:49:50 +00:00
jjgarcia
41c0868469 Bunch of fixes. See CHANGELOG. 2003-03-17 10:39:08 +00:00
jjgarcia
5478bbe21b DLLs and files have now termination procedures, which unload the DLL or close
the file, when these objects are garbage collected.
2003-03-12 10:05:42 +00:00
jjgarcia
62141f9f5d Replace int -> cl_fixnum, cl_index, to avoid problems with 64-bit archit.
Make sure that structure/instance slots may be indexed with a simple integer.
2002-12-09 12:10:33 +00:00
jjgarcia
cfb16c1920 + The tests for the type and size of cl_fixnum have been grouped.
FIXNUM_BITS and CHAR_BIT do not rely now on "char" being 8-bit
  large.
+ All configuration settings are now grouped in config.h. This file
  has two parts, and the second one, containing flags which are only
  needed during the build process, is deleted when installing ECL.
+ File critical.h merged into lwp.h.
2002-11-20 17:26:21 +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
b0ce08d0ea Changes towards 0.7b comprise naming and calling conventions. See CHANGELOG. 2002-11-04 14:08:24 +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
23ee878e59 All symbols belonging to the LISP package and to the C core, are
kept in a single array, "cl_symbols". The translator "dpp" and the
routine SI::MANGLE-NAME, output the right name for any symbol
which is in this array.
2002-09-15 13:29:05 +00:00
jjgarcia
356e6b9235 ECL now uses a hashtable to store objects when *PRINT-CIRCLE* is
on. This hashtable is not cleared when calling PRINT-OBJECT, so
that circularities are also detected inside these methods.
2002-09-14 11:30:17 +00:00
jjgarcia
098aa5bee4 Remove unused type intUobject. 2002-09-03 14:51:02 +00:00
jjgarcia
475c8627a6 Remove unused definitions. 2002-09-03 11:54:25 +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
b979ad8b0b Changes in the names of macros related to fixnums, characters and arrays. 2001-10-11 17:44:57 +00:00
jjgarcia
afc2bd70d3 Make the code more portable with respect to changes on the direction of
growth of the stack and in the way va_arg() arguments can be accessed.
Fix the bytecodes compiler so that it handles toplevel forms properly and
so that it understands LOCALLY.
Split configure.in into configure.in+aclocal.m4 and improve the resulting
tests.
2001-07-27 17:01:28 +00:00
jjgarcia
35a9b11d37 Rewrite the binary code loader to work with dlopen() instead of dld() 2001-07-23 08:49:01 +00:00
jjgarcia
0dc4df6002 Add a name mangler to "dpp" so that it translates symbol names as
@'si:symbol-name' @'other-symbol*' into the appropiate C name. All
symbol names and function names have been rewritten using this convention.
2001-07-02 17:11:28 +00:00
jjgarcia
2d8d0cd44b Initial revision 2001-06-26 17:14:44 +00:00