Did you know ... Search Documentation:
Pack wam_common_lisp -- prolog/wam_cl/src/doc/todo.txt
  • 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.