Commit graph

2202 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
8caa5d9d7d Do not use constants for OP_GO labels 2008-06-22 21:50:33 +02:00
Juan Jose Garcia Ripoll
96edd717f4 Simplify the lexical environment record for local functions 2008-06-22 19:55:11 +02:00
Juan Jose Garcia Ripoll
911f8402de Introduce bind_frame() abstraction 2008-06-22 19:40:18 +02:00
Juan Jose Garcia Ripoll
98b4e216e8 Split an opcode for actual frame creation from those for frame identification. 2008-06-22 16:44:34 +02:00
Juan Jose Garcia Ripoll
4f50a10647 BLOCK and TAGBODY share exit code 2008-06-22 12:42:11 +02:00
Juan Jose Garcia Ripoll
1b7ee7828b Restructure code so that OP_DO admits a location 2008-06-22 11:55:45 +02:00
Juan Jose Garcia Ripoll
4088f1f787 Remove useless bds_unwind statement from OP_EXIT_FRAME 2008-06-22 11:50:43 +02:00
Juan Jose Garcia Ripoll
38d4306a09 si::bc-disassemble did not know about OP_[P]INT 2008-06-22 11:13:54 +02:00
Juan Jose Garcia Ripoll
adc7141e33 Fixed two typos 2008-06-22 10:00:49 +02:00
Juan Jose Garcia Ripoll
1bf4f395a7 ECL_LONG_DOUBLE was not defined 2008-06-22 09:59:57 +02:00
Juan Jose Garcia Ripoll
08954ee28b More rigorous parsing of character names. 2008-06-22 09:57:44 +02: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
Juan Jose Garcia Ripoll
e400b3fb46 Simplify bytecodes compiler by rewriting IF as a COND. 2008-06-09 11:27:34 +02:00
Juan Jose Garcia Ripoll
027dae5686 Use the local IHS frame for storing the lexical environment. 2008-06-09 09:21:47 +02:00
Juan Jose Garcia Ripoll
6d1f4e8c15 Inline OP_PROGV. 2008-06-08 23:10:41 +02:00