Commit graph

2153 commits

Author SHA1 Message Date
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
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
jjgarcia
9788340759 Export a condition for detected user interrupts (SIGINT) 2008-06-05 12:45:02 +00:00
jjgarcia
9b050098f5 In methods function's type declarations, the type and the name were swapped 2008-06-05 12:44:31 +00:00
jjgarcia
7201e26e85 Import version 1.118 of ASDF 2008-06-05 12:44:07 +00:00
jjgarcia
376eef6143 We need sys/time.h for struct timeval. 2008-05-31 13:27:50 +00:00
jjgarcia
92152c66ee When using the generational garbage collector, do not use dlopen/dlclose wrapper
s, which deactivate the garbage collector. In this case, we need not explicit ca
lls to si_gc(Ct) in si_load_binary()
2008-05-31 13:14:05 +00:00
jjgarcia
f42ca59c92 Accessors for low-level socket timeout attributes (by G. Carncross). 2008-05-31 13:04:07 +00:00
jjgarcia
af6c551e80 When using the generational garbage collector, do not use dlopen/dlclose wrappers, which deactivate the garbage collector. In this case, we need not explicit calls to si_gc(Ct) in si_load_binary() 2008-05-31 12:58:01 +00:00