Commit graph

52 commits

Author SHA1 Message Date
jjgarcia
3654ccf8b4 Replace ecl_apply_{lambda|bclosure} with calls to ecl_interpret. 2008-06-19 15:08:52 +00:00
jjgarcia
aa50e7ef4c Separate lisp objects for functions with fixed and variable # arguments 2008-06-19 15:08:03 +00:00
jjgarcia
9a5f1a7751 Introduce bytecode closure objects to save space in FLET/LABELS forms 2008-06-19 15:04:27 +00:00
jgarcia
ad6f1f7f10 In cl_va_start(), factor the code for the worst case (narg > 64) in a separate function, so that the default case does not reference cl_env 2008-05-12 08:13:53 +00:00
jgarcia
bd09f93e3c Modify call frames to keep pointers and let cl_funcall() share frames among calls 2008-05-12 08:11:37 +00:00
jgarcia
60485cbbe3 Inline the code for handling cl_va_list 2008-05-12 08:10:27 +00:00
jgarcia
aed7dd61b1 _ecl_link_call would not restore the stack after invoking a generic function 2008-05-08 08:56:22 +00:00
jgarcia
8800b254f5 Committed the changes to implement small conses 2008-04-30 14:24:20 +00:00
jgarcia
52f4df1901 Merged the new function call code 2008-02-16 10:28:32 +00:00
jgarcia
5ef5d32e74 Enforce indent and mode conditions on files 2008-01-26 10:30:41 +00:00
jgarcia
aa3dfe4058 Prefix most functions with 'ecl_' to avoid name collisions when embedding ECL in other libraries 2007-01-18 11:46:07 +00:00
jgarcia
8724c18d3c Function cl_va_end() is now a macro. 2006-10-27 22:20:32 +00:00
jgarcia
aee133c4b5 Remove ad-hoc limit in the number of strings SI:BASE-STRING-CONCATENATE can handle. New macros for copying and finishing arguments lists. 2006-10-27 22:16:45 +00:00
jgarcia
49fb08f443 Allow user defined dispatch functions in funcallable objects (Inspired from B. Spilsbury) 2006-05-20 22:12:36 +00:00
jjgarcia
936b7fb6f6 Header files are now kept in a directory named 'ecl', so as to avoid name clashes with other headers. 2006-02-28 14:05:47 +00:00
jjgarcia
770f071318 New implementation of SAFE-EVAL, cooperates better with the current condition system and can call TOP-LEVEL. 2006-02-06 10:07:16 +00:00
jjgarcia
8de21d278a Implemented standard behavior of NO-APPLICABLE-METHOD. 2006-01-09 09:15:42 +00:00
jjgarcia
a5b4834caf Simplified the frame stack by replacing the frame class with a particular tag. 2005-08-30 14:38:04 +00:00
jjgarcia
9302a9e175 Various ANSI compatibility fixes 2005-05-26 19:17:53 +00:00
jjgarcia
e6632b5ab5 Reorder the fields in the symbol structure, so that cons.cdr overlaps with symbol.gfdef, and now we are allowed to set property lists of NIL. 2005-05-12 15:45:22 +00:00
jjgarcia
b8ab417619 Minor cast errors 2005-03-15 14:26:32 +00:00
jjgarcia
860dbd69ec Fixes due to type sizes, updates of the old garbage collector and the terrible bug with hash tables merged into main trunk 2004-02-29 15:47:01 +00:00
jjgarcia
72a90f9e90 Stepper implemented 2003-11-26 08:51:52 +00:00
jjgarcia
4eac79774e Preliminary support for POSIX threads. 2003-11-18 11:23:07 +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
a8e972d96a Try to initialize variables and constants in all_symbols.d. 2003-08-06 13:23:22 +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
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
8bb27d3094 Remove public function putprop(); use si_putprop() instead.
Removed public functions FEtype_error_plist().
Low level function getf() and get() renamed as ecl_get[f]().
Simplified the loops which deal with property lists.
Assertions ASSERT and CHECK-TYPE moved from conditions.lisp to assert.lisp; old definitions removed.
2003-03-21 09:24:37 +00:00
jjgarcia
aabafc3c6c Remove public functions remf() and remprop(). 2003-03-20 15:47:44 +00:00
jjgarcia
41c0868469 Bunch of fixes. See CHANGELOG. 2003-03-17 10:39:08 +00:00
jjgarcia
5f6f65b407 Bunch of fixes inspired by the ANSI test suite of GCL. 2003-03-10 09:10:13 +00:00
jjgarcia
c9fb52f320 In APPLY, FUNCALL, etc, check whether the input argument is OBJNULL. This
way, when, in low-safety mode, we funcall a symbol which is unbound, the
right error is signaled.
2002-12-14 16:03:44 +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
32db83b88a The stack pointer in args[0].sp should point to the first value which
is not passed on the C stack.
2002-10-22 07:09:17 +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
3c7fe4535b Instead of having gcall() work like funcall(), create a function
[va_]compute_method() which computes the method we really want to call,
and use this function inside funcall(), apply(), etc.
2002-10-13 16:05:26 +00:00
jjgarcia
59a26b4751 Use same link_call() with and without CLOS. The use of static variables is
not thread safe.
2002-10-13 16:03:36 +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
7ce6a0d4c2 Avoid recreating symbols when assigning value to constants. 2002-09-22 12:08:05 +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
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
f6858838f4 Refer allocation, not to a fixed DATA_START, which could change any time,
but to the dynamically determined "heap_start".
Define pointer types and macros to handle pointer arithmetic properly.
Replace calls to clLfuncall in interpreted code with OP_FCALL/OP_PFCALL.
Fix OP_PFCALL/OP_FCALL so that it looks for symbols in the global environment.
Take care of stack growth direction in mark_stack_conservative().
2001-08-12 14:49:14 +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
e537b5fe36 Use lisp integers, not just fixnums, to store addresses. 2001-07-23 08:43:48 +00:00