summary refs log tree commit diff stats
path: root/compiler/vmgen.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-07-16 00:41:03 +0200
committerAraq <rumpf_a@web.de>2014-07-16 00:41:03 +0200
commita7911addf71fdfbf5008afd938b49116d462d908 (patch)
treed1ce9e4306882f722da587bce7992ebe632aab24 /compiler/vmgen.nim
parent396b5619fc72ccc4a2f2110fd59b21e0a8a7250e (diff)
downloadNim-a7911addf71fdfbf5008afd938b49116d462d908.tar.gz
parseBiggestFloat is now builtin
Diffstat (limited to 'compiler/vmgen.nim')
-rw-r--r--compiler/vmgen.nim18
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim
index c1ec637dd..fd0c3fc69 100644
--- a/compiler/vmgen.nim
+++ b/compiler/vmgen.nim
@@ -852,6 +852,24 @@ proc genMagic(c: PCtx; n: PNode; dest: var TDest) =
     c.freeTemp(tmp1)
     c.freeTemp(tmp2)
     c.freeTemp(tmp3)
+  of mParseBiggestFloat:
+    if dest < 0: dest = c.getTemp(n.typ)
+    var d2: TRegister
+    # skip 'nkHiddenAddr':
+    let d2AsNode = n.sons[2].sons[0]
+    if needsAsgnPatch(d2AsNode):
+      d2 = c.getTemp(getSysType(tyFloat))
+    else:
+      d2 = c.genx(d2AsNode)
+    var
+      tmp1 = c.genx(n.sons[1])
+      tmp3 = c.genx(n.sons[3])
+    c.gABC(n, opcParseFloat, dest, tmp1, d2)
+    c.gABC(n, opcParseFloat, tmp3)
+    c.freeTemp(tmp1)
+    c.freeTemp(tmp3)
+    c.genAsgnPatch(d2AsNode, d2)
+    c.freeTemp(d2)    
   of mReset:
     unused(n, dest)
     var d = c.genx(n.sons[1])