jjgarcia
|
da0452752b
|
Failure in checking for integer constants.
|
2008-06-19 16:41:15 +00:00 |
|
jjgarcia
|
7a1fd864e1
|
Update IHS environment also when using optimized function calls in interpreter
|
2008-06-19 16:26:48 +00:00 |
|
jjgarcia
|
cea621fc7a
|
Tag changes to the interpreter
|
2008-06-19 15:10:10 +00:00 |
|
jjgarcia
|
d003cc91fc
|
More consistent undoing of variable bindings in compiler.
|
2008-06-19 15:09:28 +00:00 |
|
jjgarcia
|
38bbf43237
|
Opcodes for small integers
|
2008-06-19 15:09:12 +00:00 |
|
jjgarcia
|
3654ccf8b4
|
Replace ecl_apply_{lambda|bclosure} with calls to ecl_interpret.
|
2008-06-19 15:08:52 +00:00 |
|
jjgarcia
|
e65ebd076c
|
Simplify the interpreter code for calling functions
|
2008-06-19 15:08:38 +00:00 |
|
jjgarcia
|
aa50e7ef4c
|
Separate lisp objects for functions with fixed and variable # arguments
|
2008-06-19 15:08:03 +00:00 |
|
jjgarcia
|
4475760597
|
Fixed typo.
|
2008-06-19 15:07:50 +00:00 |
|
jjgarcia
|
7732ada63b
|
Avoid using FORMAT when it has not been defined.
|
2008-06-19 15:07:37 +00:00 |
|
jjgarcia
|
aa920784b4
|
Turn the macros in bytecodes.h into standalone forms that output no value. This restriction allows us to have more complex code in them.
|
2008-06-19 15:07:24 +00:00 |
|
jjgarcia
|
8ad5c52f70
|
Split OP_MSETQ into OP_VSETQ and OP_VSETQS.
|
2008-06-19 15:07:10 +00:00 |
|
jjgarcia
|
8bdaba7f11
|
Implement bytecodes for calling functions with 1 and 2 arguments.
|
2008-06-19 15:06:57 +00:00 |
|
jjgarcia
|
a2b260c24d
|
Optimize some common lisp functions
|
2008-06-19 15:06:43 +00:00 |
|
jjgarcia
|
d8122d6c61
|
Eliminate all direct references to stack_top
|
2008-06-19 15:06:31 +00:00 |
|
jjgarcia
|
12986c134c
|
The interpreter now keeps VALUES(0) always in REG0
|
2008-06-19 15:06:16 +00:00 |
|
jjgarcia
|
28eb316b88
|
Avoid using STACK_PUSH in loops
|
2008-06-19 15:05:51 +00:00 |
|
jjgarcia
|
665505205e
|
Inline stack_pop operation
|
2008-06-19 15:05:36 +00:00 |
|
jjgarcia
|
108a76ed13
|
OP_MSETQ does not use the VALUES register
|
2008-06-19 15:05:21 +00:00 |
|
jjgarcia
|
71ed18e2db
|
Inline funcalls and fix problem with multiple-value-prog1 and macrolet + declarations
|
2008-06-19 15:05:08 +00:00 |
|
jjgarcia
|
90370c96d0
|
Fixed typo in COMPILED-FUNCTION-NAME.
|
2008-06-19 15:04:54 +00:00 |
|
jjgarcia
|
9a5f1a7751
|
Introduce bytecode closure objects to save space in FLET/LABELS forms
|
2008-06-19 15:04:27 +00:00 |
|
jjgarcia
|
77d53061eb
|
Revert to the old code for multiple-value-setq
|
2008-06-19 15:04:12 +00:00 |
|
jjgarcia
|
b2d1a996b3
|
More compact format for bytecodes OP_FLET/LABELS
|
2008-06-19 15:03:56 +00:00 |
|
jjgarcia
|
590129c767
|
No need to check when searching environments
|
2008-06-19 15:03:40 +00:00 |
|
jjgarcia
|
271d33ee3f
|
Slightly leaner code for searching environment
|
2008-06-19 15:03:28 +00:00 |
|
jjgarcia
|
83c35e01c2
|
SETQS does not check whether argument is constant, just as in SBCL.
|
2008-06-19 15:03:12 +00:00 |
|
jjgarcia
|
ce724349c5
|
Split operator MSETQ into VSETQ and VSETQS.
|
2008-06-19 15:02:58 +00:00 |
|
jjgarcia
|
5aa07e402d
|
Only use OP_VBIND[S] for values other than 0-th
|
2008-06-19 15:02:40 +00:00 |
|
jjgarcia
|
0c3af3fbc8
|
ecl_interpret returns the first value
|
2008-06-19 15:02:27 +00:00 |
|
jjgarcia
|
311995ae4f
|
Inline the stack push operation
|
2008-06-19 15:02:12 +00:00 |
|
jjgarcia
|
9dcff352d7
|
Save a pointer to the current environment in the interpreter.
|
2008-06-19 15:01:59 +00:00 |
|
jjgarcia
|
f5b4ff25af
|
COND and PROG1 now operate using only REG0 and the stack
|
2008-06-19 15:01:47 +00:00 |
|
jjgarcia
|
8fca58aec5
|
OP_JT/JNIL need not set NVALUES
|
2008-06-19 15:01:35 +00:00 |
|
jjgarcia
|
ecd1053c26
|
Allow COND forms to use REG0 to store computations, instead of forcing use of VALUES.
|
2008-06-19 15:01:23 +00:00 |
|
jjgarcia
|
37022df5d6
|
Since OP_JT/JNIL check reg0, we can simplify the bytecodes for WHILE
|
2008-06-19 15:01:05 +00:00 |
|
jjgarcia
|
64ca376393
|
Given that reg0 contains always VALUES(0), we can simplify OP_JT and OP_JNIL.
|
2008-06-19 15:00:50 +00:00 |
|
jjgarcia
|
aa6b20fad1
|
Simplify bytecodes compiler by rewriting IF as a COND.
|
2008-06-19 15:00:20 +00:00 |
|
jjgarcia
|
8e2237108e
|
Use the local IHS frame for storing the lexical environment.
|
2008-06-19 15:00:01 +00:00 |
|
jjgarcia
|
5668d23f2b
|
Inline OP_PROGV.
|
2008-06-19 14:59:49 +00:00 |
|
jjgarcia
|
9d3d2b34fe
|
The IHS record is not created in apply lambda but in ecl_interpret
|
2008-06-19 14:59:37 +00:00 |
|
jjgarcia
|
6870a9753f
|
The lexical environment of a function is stored in the same IHS record as its name.
|
2008-06-19 14:59:24 +00:00 |
|
jjgarcia
|
c1f08a04e6
|
Removed global environment field cl_env.lex_env
|
2008-06-19 14:59:11 +00:00 |
|
jjgarcia
|
8ae45ee30e
|
Remove useless field frs_lex from the frame stack records.
|
2008-06-19 14:58:57 +00:00 |
|
jjgarcia
|
200ec27464
|
Inline OP_MSETQ
|
2008-06-19 14:58:44 +00:00 |
|
jjgarcia
|
327b6b9640
|
Inline OP_FLET/LABELS and let them access cl_env.lex_env less often.
|
2008-06-19 14:58:32 +00:00 |
|
jjgarcia
|
ff083d3511
|
OP_PROTECT also pushes the environment onto the stack.
|
2008-06-19 14:58:20 +00:00 |
|
jjgarcia
|
45b24c328e
|
OP_TAGBODY also pushes the environment to be saved
|
2008-06-19 14:58:07 +00:00 |
|
jjgarcia
|
2c3a2f33a6
|
Avoid using field lex_env in frame stack records, at least for blocks
|
2008-06-19 14:57:45 +00:00 |
|
jjgarcia
|
33a53695cf
|
ecl_interpret() now takes an explicit lexical environment argument.
|
2008-06-19 14:57:12 +00:00 |
|