- error-set can be eliminated, as well as FRS_CATCHALL fr_class and
Kcatchall keyword.
- Removed call
(wt-data nil)
before loop (dolist (x linking-calls) ..) in ctop-write.
Created inconsistency in size of data vector in cfun.
What was it for?
- For local entry functions the binding for args which are special
should be done after the label TTL: has been emitted.
- From triang-mod.cl. The following:
(setf (aref board (aref a i)) 0)
compiles to:
{object V3;
object V4;
V3= (VV[10]->s.s_dbind);
V4= MAKE_FIXNUM(((VV[15]->s.s_dbind))->fixa.fixa_self[V1]);
((V3))->fixa.fixa_self[
fix((V4))
]= 0;
}
even though:
(proclaim '(type (vector fixnum) board sequence a b c))
- When compiling do/do* references to variables in test forms should
be considered multiple.
- The mechanism for printing circular structure fails on sun when
size exceeds PRINTcircleSIZE.
- disassemble does not behave as in help.doc.
- c1apply-optimize could emit code for testing whether there are
sufficient elements in the list
- Update code to use constants in <limits.h>
- The mechanism of local/global entries in cmptop.lsp is worth while
only if all arguments are unboxed.
- Lavori piu' impegnativi:
- Rifare il trattamento di ihs
- introdurre dichiarazione :dynamic-extent
- aggiungere agli ottimizzatori i flags usati da Sherlis
- Completare la modifica di print-doc (describe.lsp) per stampare
intestazioni ripetute per quei simboli (list, *, etc.) che hanno
documentazione multipla.
- Completare l'aggiunta di nomi di caratteri:
#\F1, ... , #\F12, #\C-F1, .. , #\C-F12, #\M-F1, .. , #\M-F12
#\Up, #\Down, #\Left, #\Right, #\C-Up, #\C-Down, #\C-Left, #\C-Right
#\PgUp, #\PgDn, #\Home, #\End, #\C-PgUp, #\C-PgDn, #\C-Home, #\C-End
- verificare se usando una VAR come destination
(let* ((kind (var-kind var))
(lcl (next-lcl))
(temp (list 'VAR (make-var :kind kind :loc lcl))))
(wt-nl "{" volatile (rep-type kind)) (wt-lcl lcl) (wt ";")
(let ((destination temp)) (c2expr* form))
si puo' semplificare inline-args evitando l'uso di coerce-loc.
- questa clausola di cmpinline.lsp
((or (eq (var-kind var) 'LEXICAL)
(eq (var-kind var) 'OBJECT))
(let ((lcl-loc (list 'LCL (next-lcl))))
(wt-nl "{object " lcl-loc "= "
(wt-lcl (var-loc var)) (wt ";")
(push (coerce-loc lcl-loc type) locs)
(incf inline-blocks))))
e' dubbia: (wt-lcl (var-loc var)) per un LEXICAL?
- parameter closure-p in t3local-fun could be eliminated: it is present
in (fun-closure fun).
- All loops of the kind:
for (i = 0; i < maxpage; i++) {
in gbc.c, could be changed to i = minpage, where:
minpage =
page(heap_end)
;
just after
heap_end = core_end = sbrk(0)
;
in alloc.c
- In macro_expand1:
(lex_env[1] == OBJNULL) ? Cnil :
dovrebbe forse essere
(lex_env[1] == Cnil) ? Cnil :
- trattamento or non soddisfacente:
(let ((dir (or (and output-file
(pathname-directory output-file))
(pathname-directory input-pathname)))
if((V2)==Cnil)
{
VALUES(0) = Cnil;
goto L42;}
Lpathname_directory(1,(V2)) /* PATHNAME-DIRECTORY*/;
L42:
if(VALUES(0)==Cnil)goto L41;
V11= VALUES(0);
goto L40;
L41:
Lpathname_directory(1,(V1)) /* PATHNAME-DIRECTORY*/;
V11= VALUES(0);
L40:
if((V2)==Cnil)
{
VALUES(0) = Cnil;
goto L45;}
Lpathname_name(1,(V2)) /* PATHNAME-NAME */;
L45:
if(VALUES(0)==Cnil)goto L44;
V12= VALUES(0);
goto L43;
L44:
Lpathname_name(1,(V1)) /* PATHNAME-NAME */;
V12= VALUES(0);
L43:
- in sysfun, scambiare never-change-special-var-p con
change-special-var-p per evitare creazione di troppe plist
- (setq spec (pop vl)) produces:
{object V12; /* G4356 */
V12= CAR((V1));
V1= CDR((V1));
V2= (V12);
}
- (or (and (foo)
(listp args))
...
if(VALUES(0)!=Cnil){
goto L21;}
VALUES(0) = Cnil;
goto L20;
L21:
VALUES(0) = (
type_of((V2))
==t_cons||(V2)==Cnil?Ct:Cnil);
L20:
if(VALUES(0)==Cnil)goto L19;
potrebbe essere migliorata. c2or dovrebbe chiamare c2expr con
JUMP-TRUE come destination, ma dovrebbe sapere in quale
locazione unwind-exit mette il risultato facendoselo ritornare.
- cambiare vref1 perche' ritorni solo var anziche' (var)
- (min (* step-level 2) 20) produce
(number_compare(number_times((VV[58]->s.s_dbind),MAKE_FIXNUM(2)),MAKE_FIXNUM(20))<=0?number_times((VV[58]->s.s_dbind),MAKE_FIXNUM(2)):MAKE_FIXNUM(20))
- Aggiungere ottimizzazione travel_push_type in print.d per
la stampa ciclica, come AKCL.
- Rimettere #. in default-init in cmptype.lsp (finito bootstrap
da AKCL)
- ricorsione diretta in c2call-global (utile per labels)
da' problemi a flet.
- unwind-exit caso FRAME considera SIMPLE-FUNCALL. Deve considerare
anche FUN-VAL?
- (let ((start start) (end end))
(declare (fixnum start end))
puo' evitare di creare variabili object e poi relative unboxed
- scambiare ordine argomenti di si:putprop per facilitare (setf get).
- aggiungere funzioni di lwp.d in cmp/sysfun.lsp
- Rewrite setjmp.s so that PC is stored in slot 0 of buf, consistently
with _setjmp.
- Change lex.h and elsewhere so that:
lex-var: (symbol value) ; for local binding
(.... or ....)
symbol ; for special binding
lex-fd: (fun-name 'FUNCTION' . function)
(.... or ...)
(macro-name 'MACRO' . expansion-function)
lex-tag: (tag 'TAG' . frame-id)
(.... or ....)
(block-name 'BLOCK' . frame-id)
- Funzione directory non funziona sotto DOS: la free chiamata
da setbuf fallisce.