diff options
author | dos-reis <gdr@axiomatics.org> | 2010-05-26 01:57:37 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-05-26 01:57:37 +0000 |
commit | 9584120cc4fd35f1ae0639430e07d5936f1ac39b (patch) | |
tree | 44557a4869fcafa28dabc5d7a848e905d60e809f | |
parent | 295cd96697ce969f81da05327d0120141ce2dcdc (diff) | |
download | open-axiom-9584120cc4fd35f1ae0639430e07d5936f1ac39b.tar.gz |
* interp/c-util.boot ($ClearBodyToken): New constant.
* interp/define.boot (compDefineCapsuleFunction): Use it in place
of special character.
(spadCompileOrSetq): Likewise.
* interp/i-map.boot (addMap): Likewise.
(getUserIdentifiersIn): Likewise.
* interp/wi1.boot (spadCompileOrSetq): Likewise.
-rw-r--r-- | src/ChangeLog | 10 | ||||
-rw-r--r-- | src/interp/c-util.boot | 4 | ||||
-rw-r--r-- | src/interp/define.boot | 4 | ||||
-rw-r--r-- | src/interp/i-map.boot | 8 | ||||
-rw-r--r-- | src/interp/pspad2.boot | 1 | ||||
-rw-r--r-- | src/interp/wi1.boot | 2 |
6 files changed, 21 insertions, 8 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 37880817..f8d78fc8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,15 @@ 2010-05-25 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/c-util.boot ($ClearBodyToken): New constant. + * interp/define.boot (compDefineCapsuleFunction): Use it in place + of special character. + (spadCompileOrSetq): Likewise. + * interp/i-map.boot (addMap): Likewise. + (getUserIdentifiersIn): Likewise. + * interp/wi1.boot (spadCompileOrSetq): Likewise. + +2010-05-25 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/g-util.boot: Add expanders for %lt, %le, %gt, %ge, %not, %and, %or, and %bind forms. * interp/c-util.boot (mutateToBackendCode): Handle LET and LET* forms. diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot index 552b007c..3e264d35 100644 --- a/src/interp/c-util.boot +++ b/src/interp/c-util.boot @@ -50,6 +50,10 @@ module c_-util where --% +++ Token to indicate that a function body should be ignored. +$ClearBodyToken == + KEYWORD::OpenAxiomClearBodyToken + ++ $ConstructorCache := hashTable 'EQ diff --git a/src/interp/define.boot b/src/interp/define.boot index b9dfc7af..cc247270 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -1020,7 +1020,7 @@ compDefineCapsuleFunction(df is ['DEF,form,signature,specialCases,body], noteCapsuleFunctionDefinition($op,signature', makePredicate $predl) T := CATCH('compCapsuleBody, compOrCroak(body,rettype,e)) - or ["",rettype,e] + or [$ClearBodyToken,rettype,e] NRTassignCapsuleFunctionSlot($op,signature') if $newCompCompare=true then SAY '"The old compiler generates:" @@ -1233,7 +1233,7 @@ compile u == spadCompileOrSetq (form is [nam,[lam,vl,body]]) == --bizarre hack to take account of the existence of "known" functions --good for performance (LISPLLIB size, BPI size, NILSEC) - CONTAINED("",body) => sayBrightly ['" ",:bright nam,'" not compiled"] + CONTAINED($ClearBodyToken,body) => sayBrightly ['" ",:bright nam,'" not compiled"] -- flag parameters needs to be made atomic, otherwise Lisp is confused. -- We try our best to preserve diff --git a/src/interp/i-map.boot b/src/interp/i-map.boot index bfc99b6d..10b64ceb 100644 --- a/src/interp/i-map.boot +++ b/src/interp/i-map.boot @@ -192,7 +192,7 @@ addMap(lhs,rhs,pred) == null newMap => sayRemoveFunctionOrValue op putHist(op,'alias,nil,$e) - "" -- clears value--- see return from addDefMap in tree2Atree1 + $ClearBodyToken --- see return from addDefMap in tree2Atree1 if get(op,'isInterpreterRule,$e) then type := ['RuleCalled,op] else type := ['FunctionCalled,op] recursive := @@ -204,10 +204,10 @@ addMap(lhs,rhs,pred) == augmentMap(op,args,pred,body,oldMap) == pattern:= makePattern(args,pred) newMap:=deleteMap(op,pattern,oldMap) - body="" => + body = $ClearBodyToken => if newMap=oldMap then sayMSG ['" Cannot find part of",:bright op,'"to delete."] - newMap --just delete rule if body is + newMap --just delete rule if body is $ClearBodyToken entry:= [pattern,:body] resultMap:= newMap is ["%Map",:tail] => ["%Map",:tail,entry] @@ -227,7 +227,7 @@ getUserIdentifiersIn body == null body => nil IDENTP body => isSharpVarWithNum body => nil - body="" => nil + body = $ClearBodyToken => nil [body] body is ["WRAPPED",:.] => nil body is [op,:itl,body1] and op in '(COLLECT REPEAT %collect) => diff --git a/src/interp/pspad2.boot b/src/interp/pspad2.boot index 4e11875a..23beaf0d 100644 --- a/src/interp/pspad2.boot +++ b/src/interp/pspad2.boot @@ -327,7 +327,6 @@ formatTail1 x == format ":" and formatConstructItem a and formatTail b format ":" and formatConstructItem x and format "]" --- x = "." => format "" formatConstructItem x == format x formatLET ["%LET",a,b] == diff --git a/src/interp/wi1.boot b/src/interp/wi1.boot index b2941ba7..7c47213c 100644 --- a/src/interp/wi1.boot +++ b/src/interp/wi1.boot @@ -853,7 +853,7 @@ spadCompileOrSetq form == --bizarre hack to take account of the existence of "known" functions --good for performance (LISPLLIB size, BPI size, NILSEC) [nam,[lam,vl,body]] := form - CONTAINED("",body) => sayBrightly ['" ",:bright nam,'" not compiled"] + CONTAINED($ClearBodyToken,body) => sayBrightly ['" ",:bright nam,'" not compiled"] if vl is [:vl',E] and body is [nam',: =vl'] then LAM_,EVALANDFILEACTQ ['PUT,MKQ nam,MKQ 'SPADreplace,MKQ nam'] sayBrightly ['" ",:bright nam,'"is replaced by",:bright nam'] |