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 |
|
jjgarcia
|
6833a3cf0a
|
lambda_bind_var() now takes also a generic environment as argument
|
2008-06-19 14:56:59 +00:00 |
|
jjgarcia
|
734d3edadb
|
All functions that operate on the lexical environment take a generic environment as argument, not inspecting cl_env.
|
2008-06-19 14:56:47 +00:00 |
|
jjgarcia
|
980b6d68b4
|
The interpreter is rewritten using indirect threaded code
|
2008-06-19 14:56:24 +00:00 |
|
Juan Jose Garcia Ripoll
|
4982955838
|
Introduce location objects
|
2008-06-18 11:13:19 +02:00 |
|
Juan Jose Garcia Ripoll
|
29c45b2c89
|
Extend c_new_env as a step towards changing the lexical environments.
|
2008-06-18 10:43:34 +02:00 |
|
Juan Jose Garcia Ripoll
|
223a639c9a
|
More consistent undoing of variable bindings in compiler.
|
2008-06-17 22:47:26 +02:00 |
|
Juan Jose Garcia Ripoll
|
bf5852147b
|
Opcodes for small integers
|
2008-06-17 21:24:07 +02:00 |
|
Juan Jose Garcia Ripoll
|
1d06b7a46c
|
Replace ecl_apply_{lambda|bclosure} with calls to ecl_interpret.
|
2008-06-17 20:49:58 +02:00 |
|
Juan Jose Garcia Ripoll
|
a8c7c95ef0
|
Simplify the interpreter code for calling functions
|
2008-06-17 19:46:18 +02:00 |
|
Juan Jose Garcia Ripoll
|
cb9939d6c0
|
Separate lisp objects for functions with fixed and variable # arguments
|
2008-06-16 23:09:21 +02:00 |
|
Juan Jose Garcia Ripoll
|
0dbab7db8f
|
Fixed typo.
|
2008-06-15 23:10:57 +02:00 |
|
Juan Jose Garcia Ripoll
|
34c363cc9f
|
Avoid using FORMAT when it has not been defined.
|
2008-06-15 23:05:29 +02:00 |
|
Juan Jose Garcia Ripoll
|
5ef5df4135
|
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-15 19:17:42 +02:00 |
|
Juan Jose Garcia Ripoll
|
9e210529e8
|
Split OP_MSETQ into OP_VSETQ and OP_VSETQS.
|
2008-06-15 10:50:32 +02:00 |
|
Juan Jose Garcia Ripoll
|
846d79dce3
|
Implement bytecodes for calling functions with 1 and 2 arguments.
|
2008-06-15 00:35:21 +02:00 |
|
Juan Jose Garcia Ripoll
|
2020fe6966
|
Optimize some common lisp functions
|
2008-06-14 22:07:20 +02:00 |
|
Juan Jose Garcia Ripoll
|
3cdc648832
|
Eliminate all direct references to stack_top
|
2008-06-14 01:27:09 +02:00 |
|
Juan Jose Garcia Ripoll
|
2316f0492e
|
The interpreter now keeps VALUES(0) always in REG0
|
2008-06-13 18:37:47 +02:00 |
|
Juan Jose Garcia Ripoll
|
49efe3b96f
|
Avoid using STACK_PUSH in loops
|
2008-06-13 12:32:06 +02:00 |
|
Juan Jose Garcia Ripoll
|
99cfc87f96
|
Inline stack_pop operation
|
2008-06-13 00:55:23 +02:00 |
|
Juan Jose Garcia Ripoll
|
3c3a2699be
|
OP_MSETQ does not use the VALUES register
|
2008-06-13 00:41:03 +02:00 |
|
Juan Jose Garcia Ripoll
|
d4c36ab18f
|
Inline funcalls and fix problem with multiple-value-prog1 and macrolet + declarations
|
2008-06-12 20:00:30 +02:00 |
|
Juan Jose Garcia Ripoll
|
a5ab938485
|
Fixed typo in COMPILED-FUNCTION-NAME.
|
2008-06-12 14:37:31 +02:00 |
|
Juan Jose Garcia Ripoll
|
21fafd42dc
|
Introduce bytecode closure objects to save space in FLET/LABELS forms
|
2008-06-11 23:49:38 +02:00 |
|
Juan Jose Garcia Ripoll
|
b208e43f34
|
Revert to the old code for multiple-value-setq
|
2008-06-11 20:15:14 +02:00 |
|
Juan Jose Garcia Ripoll
|
3453e6d56c
|
More compact format for bytecodes OP_FLET/LABELS
|
2008-06-10 19:50:21 +02:00 |
|
Juan Jose Garcia Ripoll
|
900bb98f37
|
No need to check when searching environments
|
2008-06-10 18:57:14 +02:00 |
|
Juan Jose Garcia Ripoll
|
ad2c7d2825
|
Slightly leaner code for searching environment
|
2008-06-09 19:36:34 +02:00 |
|
Juan Jose Garcia Ripoll
|
da0f6a2e64
|
SETQS does not check whether argument is constant, just as in SBCL.
|
2008-06-09 19:20:43 +02:00 |
|
Juan Jose Garcia Ripoll
|
33861197f3
|
Split operator MSETQ into VSETQ and VSETQS.
|
2008-06-09 19:19:25 +02:00 |
|
Juan Jose Garcia Ripoll
|
93586f613c
|
Only use OP_VBIND[S] for values other than 0-th
|
2008-06-09 18:40:23 +02:00 |
|
Juan Jose Garcia Ripoll
|
7bdc8ce4cd
|
ecl_interpret returns the first value
|
2008-06-09 18:30:58 +02:00 |
|
Juan Jose Garcia Ripoll
|
a8ba969759
|
Inline the stack push operation
|
2008-06-09 16:20:02 +02:00 |
|
Juan Jose Garcia Ripoll
|
c782245fc6
|
Save a pointer to the current environment in the interpreter.
|
2008-06-09 16:00:51 +02:00 |
|
Juan Jose Garcia Ripoll
|
5c82dc7e80
|
COND and PROG1 now operate using only REG0 and the stack
|
2008-06-09 14:28:26 +02:00 |
|
Juan Jose Garcia Ripoll
|
2ff8435086
|
OP_JT/JNIL need not set NVALUES
|
2008-06-09 12:07:11 +02:00 |
|
Juan Jose Garcia Ripoll
|
bbf7c9dea6
|
Allow COND forms to use REG0 to store computations, instead of forcing use of VALUES.
|
2008-06-09 11:54:52 +02:00 |
|
Juan Jose Garcia Ripoll
|
ee88cc241e
|
Since OP_JT/JNIL check reg0, we can simplify the bytecodes for WHILE
|
2008-06-09 11:38:34 +02:00 |
|
Juan Jose Garcia Ripoll
|
abea2b728b
|
Given that reg0 contains always VALUES(0), we can simplify OP_JT and OP_JNIL.
|
2008-06-09 11:37:36 +02:00 |
|