From 76263e0ec3b3d0f39172ac4b84599b364d161d7a Mon Sep 17 00:00:00 2001 From: dos-reis Date: Mon, 28 Nov 2011 15:46:11 +0000 Subject: * interp/define.boot (encodeCatform): Handle $ here. * interp/nruncomp.boot (deltaTran): assocIndex now handles $. (getLocalIndex): Likewise. (NRTencode): Handle $ before calling assocIndex. (assocIndex): Handle $. --- src/ChangeLog | 8 ++++++++ src/interp/define.boot | 1 + src/interp/nruncomp.boot | 10 ++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 0bf199fb..c1f7a1ad 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2011-11-28 Gabriel Dos Reis + + * interp/define.boot (encodeCatform): Handle $ here. + * interp/nruncomp.boot (deltaTran): assocIndex now handles $. + (getLocalIndex): Likewise. + (NRTencode): Handle $ before calling assocIndex. + (assocIndex): Handle $. + 2011-11-27 Gabriel Dos Reis * interp/nruncomp.boot (genDeltaEntry): Replace Rep with its value diff --git a/src/interp/define.boot b/src/interp/define.boot index 7d60c85c..44ace682 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -486,6 +486,7 @@ NRTmakeCategoryAlist(db,e) == --NOTE: this is new form: old form satisfies vector? CDDR form encodeCatform(db,x) == + x is '$ => x k := assocIndex(db,x) => k x isnt [.,:.] or rest x isnt [.,:.] => x [first x,:[encodeCatform(db,y) for y in rest x]] diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot index b65f9cd8..353492f4 100644 --- a/src/interp/nruncomp.boot +++ b/src/interp/nruncomp.boot @@ -90,9 +90,7 @@ deltaTran(db,item,compItem) == [op,dc,:sig,kind] := item -- NOTE: sig is already in encoded form since it comes from dbUsedEntities; -- so we need only encode dc. -- gdr 2008-11-28. - dcCode := - dc is '$ => 0 - assocIndex(db,dc) or keyedSystemError("S2NR0004",[dc]) + dcCode := assocIndex(db,dc) or keyedSystemError("S2NR0004",[dc]) kindFlag:= (kind is 'CONST => 'CONST; nil) [sig,dcCode,op,:kindFlag] @@ -103,6 +101,7 @@ NRTreplaceAllLocalReferences(db,form) == NRTencode(db,x,y) == encode(db,x,y,true) where encode(db,x,compForm,firstTime) == --converts a domain form to a lazy domain form; everything other than --the operation name should be assigned a slot + x is "$" => x not firstTime and (k := assocIndex(db,x)) => k vector? x => systemErrorHere '"NRTencode" cons? x => @@ -120,7 +119,6 @@ NRTencode(db,x,y) == encode(db,x,y,true) where encode(db,x,compForm,firstTime) = v := $FormalMapVariableList.(symbolPosition(x,$formalArgList)) firstTime => ["local",v] v - x is "$" => x x is "$$" => x compForm is [.,:.] => ['%eval,NRTreplaceAllLocalReferences(db,copyTree simplifyVMForm compForm)] @@ -233,13 +231,13 @@ genDeltaEntry(op,mm,e) == ++ if `x' designates neither a domain nor a value (e.g. a modemap). assocIndex: (%Thing,%Form) -> %Maybe %Short assocIndex(db,x) == - null x => x + x = nil => x + x is '$ => 0 x = $NRTaddForm => 5 dbEntitySlot(db,['%domain,x]) getLocalIndex: (%Thing,%Form) -> %Short getLocalIndex(db,item) == - item is "$" => 0 item is "$$" => 2 k := assocIndex(db,item) => k item isnt [.,:.] and not symbolMember?(item,$formalArgList) => --give slots to atoms -- cgit v1.2.3