xmltree.<> macro works again
This commit is contained in:
parent
d828b0b96e
commit
f0a70c7aae
3 changed files with 12 additions and 10 deletions
|
|
@ -17,11 +17,11 @@ proc execute*(program: string) =
|
||||||
passes.gIncludeFile = includeModule
|
passes.gIncludeFile = includeModule
|
||||||
passes.gImportModule = importModule
|
passes.gImportModule = importModule
|
||||||
initDefines()
|
initDefines()
|
||||||
LoadConfigs(DefaultConfig)
|
loadConfigs(DefaultConfig)
|
||||||
|
|
||||||
initDefines()
|
initDefines()
|
||||||
DefineSymbol("nimrodvm")
|
defineSymbol("nimrodvm")
|
||||||
when hasFFI: DefineSymbol("nimffi")
|
when hasFFI: defineSymbol("nimffi")
|
||||||
registerPass(verbosePass)
|
registerPass(verbosePass)
|
||||||
registerPass(semPass)
|
registerPass(semPass)
|
||||||
registerPass(vmPass)
|
registerPass(vmPass)
|
||||||
|
|
@ -30,4 +30,4 @@ proc execute*(program: string) =
|
||||||
compileSystemModule()
|
compileSystemModule()
|
||||||
var m = makeStdinModule()
|
var m = makeStdinModule()
|
||||||
incl(m.flags, sfMainModule)
|
incl(m.flags, sfMainModule)
|
||||||
processModule(m, LLStreamOpen(program), nil)
|
processModule(m, llStreamOpen(program), nil)
|
||||||
|
|
|
||||||
|
|
@ -173,12 +173,14 @@ proc asgnComplex(x: var TFullReg, y: TFullReg) =
|
||||||
of rkRegisterAddr: x.regAddr = y.regAddr
|
of rkRegisterAddr: x.regAddr = y.regAddr
|
||||||
of rkNodeAddr: x.nodeAddr = y.nodeAddr
|
of rkNodeAddr: x.nodeAddr = y.nodeAddr
|
||||||
|
|
||||||
proc putIntoNode(n: PNode; x: TFullReg) =
|
proc putIntoNode(n: var PNode; x: TFullReg) =
|
||||||
case x.kind
|
case x.kind
|
||||||
of rkNone: discard
|
of rkNone: discard
|
||||||
of rkInt: n.intVal = x.intVal
|
of rkInt: n.intVal = x.intVal
|
||||||
of rkFloat: n.floatVal = x.floatVal
|
of rkFloat: n.floatVal = x.floatVal
|
||||||
of rkNode: n[] = x.node[]
|
of rkNode:
|
||||||
|
if nfIsRef in x.node.flags: n = x.node
|
||||||
|
else: n[] = x.node[]
|
||||||
of rkRegisterAddr: putIntoNode(n, x.regAddr[])
|
of rkRegisterAddr: putIntoNode(n, x.regAddr[])
|
||||||
of rkNodeAddr: n[] = x.nodeAddr[][]
|
of rkNodeAddr: n[] = x.nodeAddr[][]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1001,7 +1001,7 @@ proc genAsgn(c: PCtx; le, ri: PNode; requiresCopy: bool) =
|
||||||
c.gABC(left, opcWrObj, dest, idx, tmp)
|
c.gABC(left, opcWrObj, dest, idx, tmp)
|
||||||
c.freeTemp(tmp)
|
c.freeTemp(tmp)
|
||||||
of nkDerefExpr, nkHiddenDeref:
|
of nkDerefExpr, nkHiddenDeref:
|
||||||
let dest = c.genx(le, {gfAddrOf})
|
let dest = c.genx(le.sons[0], {gfAddrOf})
|
||||||
let tmp = c.genx(ri)
|
let tmp = c.genx(ri)
|
||||||
c.gABC(le, opcWrDeref, dest, tmp)
|
c.gABC(le, opcWrDeref, dest, tmp)
|
||||||
c.freeTemp(tmp)
|
c.freeTemp(tmp)
|
||||||
|
|
@ -1542,9 +1542,9 @@ proc genProc(c: PCtx; s: PSym): int =
|
||||||
c.gABC(body, opcEof, eofInstr.regA)
|
c.gABC(body, opcEof, eofInstr.regA)
|
||||||
c.optimizeJumps(result)
|
c.optimizeJumps(result)
|
||||||
s.offset = c.prc.maxSlots
|
s.offset = c.prc.maxSlots
|
||||||
#if s.name.s == "importImpl_forward" or s.name.s == "importImpl":
|
#if s.name.s == "xmlConstructor":
|
||||||
#c.echoCode(result)
|
|
||||||
# echo renderTree(body)
|
# echo renderTree(body)
|
||||||
|
# c.echoCode(result)
|
||||||
c.prc = oldPrc
|
c.prc = oldPrc
|
||||||
else:
|
else:
|
||||||
c.prc.maxSlots = s.offset
|
c.prc.maxSlots = s.offset
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue