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