diff options
-rw-r--r-- | src/ChangeLog | 6 | ||||
-rw-r--r-- | src/interp/c-util.boot | 22 | ||||
-rw-r--r-- | src/interp/types.boot | 2 |
3 files changed, 18 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 92ebd761..db4f4e9e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2010-07-27 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * interp/types.boot (%Code): Include %Char. + * interp/c-util.boot (middleEndExpand): Temporarilty Comment out + signature. + 2010-07-26 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/g-opt.boot (optCond): Work harder at denesting nested diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot index 590c7766..d18c4dea 100644 --- a/src/interp/c-util.boot +++ b/src/interp/c-util.boot @@ -1092,7 +1092,7 @@ mutateLETFormWithUnaryFunction(form,fun) == $middleEndMacroList == '(COLLECT REPEAT SUCHTHATCLAUSE THETA THETA1 SPADREDUCE SPADDO) -middleEndExpand: %Form -> %Form +--middleEndExpand: %Form -> %Code middleEndExpand x == x = '%false or x = '%nil => 'NIL IDENTP x and (x' := x has %Rename) => x' @@ -1519,8 +1519,8 @@ ilTransformInsns form == --% ++ Replace every middle end sub-forms in `x' with Lisp code. -mutateToBackendCode: %Form -> %Void -mutateToBackendCode x == +massageBackendCode: %Code -> %Void +massageBackendCode x == IDENTP x and isLispSpecialVariable x => noteSpecialVariable x atomic? x => nil -- temporarily have TRACELET report MAKEPROPs. @@ -1533,7 +1533,7 @@ mutateToBackendCode x == x.first := "LETT" $TRACELETFLAG => x.first := "/TRACE-LET" u = "%LET" => x.first := "SPADLET" - mutateToBackendCode CDDR x + massageBackendCode CDDR x if not (u in '(SETQ RELET)) then IDENTP second x => pushLocalVariable second x second x is ["FLUID",:.] => @@ -1542,15 +1542,15 @@ mutateToBackendCode x == MAPC(function pushLocalVariable, LISTOFATOMS second x) IDENTP u and GET(u,"ILAM") ~= nil => x.first := eval u - mutateToBackendCode x + massageBackendCode x u in '(LET LET_*) => oldVars := $LocalVars vars := nil for [var,init] in second x repeat - mutateToBackendCode init + massageBackendCode init $LocalVars := [var,:$LocalVars] vars := [var,:vars] - mutateToBackendCode x.rest.rest + massageBackendCode x.rest.rest newVars := setDifference($LocalVars,setUnion(vars,oldVars)) $LocalVars := setUnion(oldVars,newVars) u in '(PROG LAMBDA) => @@ -1559,13 +1559,13 @@ mutateToBackendCode x == not (y in $LocalVars) => $LocalVars := [y,:$LocalVars] newBindings := [y,:newBindings] - res := mutateToBackendCode CDDR x + res := massageBackendCode CDDR x $LocalVars := REMOVE_-IF(function (y +-> y in newBindings), $LocalVars) [u,second x,:res] u = "DECLARE" => nil -- there is nothing to do convert there - mutateToBackendCode u - mutateToBackendCode rest x + massageBackendCode u + massageBackendCode rest x skipDeclarations: %List -> %List @@ -1611,7 +1611,7 @@ transformToBackendCode x == $LocalVars: fluid := nil $SpecialVars: fluid := nil x := middleEndExpand x - mutateToBackendCode CDDR x + massageBackendCode CDDR x body := skipDeclarations CDDR x -- Make it explicitly a sequence of statements if it is not a one liner. body := diff --git a/src/interp/types.boot b/src/interp/types.boot index 37c1d8e5..60139497 100644 --- a/src/interp/types.boot +++ b/src/interp/types.boot @@ -129,7 +129,7 @@ namespace BOOT %Instantiation <=> [%Constructor,:%Form] -- constructor instance %Env <=> %List -- compiling env %Mode <=> %Symbol or %String or %List -- type of forms -%Code <=> %Form -- generated code +%Code <=> %Form or %Char -- generated code %Triple <=> -- form + type + env [%Code,:[%Mode,:[%Env,:null]]] |