diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/posix/posix.nim | 6 | ||||
-rw-r--r-- | lib/pure/times.nim | 2 | ||||
-rw-r--r-- | lib/system.nim | 11 | ||||
-rw-r--r-- | lib/system/jssys.nim | 7 | ||||
-rw-r--r-- | lib/system/reprjs.nim | 4 |
5 files changed, 21 insertions, 9 deletions
diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim index 0c66aa2b9..175f6a61d 100644 --- a/lib/posix/posix.nim +++ b/lib/posix/posix.nim @@ -823,6 +823,12 @@ proc CMSG_NXTHDR*(mhdr: ptr Tmsghdr, cmsg: ptr Tcmsghdr): ptr Tcmsghdr {. proc CMSG_FIRSTHDR*(mhdr: ptr Tmsghdr): ptr Tcmsghdr {. importc, header: "<sys/socket.h>".} +proc CMSG_SPACE*(len: csize): csize {. + importc, header: "<sys/socket.h>".} + +proc CMSG_LEN*(len: csize): csize {. + importc, header: "<sys/socket.h>".} + const INVALID_SOCKET* = SocketHandle(-1) diff --git a/lib/pure/times.nim b/lib/pure/times.nim index 71934a466..010551b5a 100644 --- a/lib/pure/times.nim +++ b/lib/pure/times.nim @@ -22,7 +22,7 @@ let time = cpuTime() sleep(100) # replace this with something to be timed - echo "Time taken: ",cpuTime() - time + echo "Time taken: ", cpuTime() - time echo "My formatted time: ", format(now(), "d MMMM yyyy HH:mm") echo "Using predefined formats: ", getClockStr(), " ", getDateStr() diff --git a/lib/system.nim b/lib/system.nim index 9111ddd86..0bb53d9df 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2522,12 +2522,13 @@ proc `==`*[T](x, y: seq[T]): bool {.noSideEffect.} = when not defined(JS): proc seqToPtr[T](x: seq[T]): pointer {.inline, nosideeffect.} = result = cast[pointer](x) - else: - proc seqToPtr[T](x: seq[T]): pointer {.asmNoStackFrame, nosideeffect.} = - asm """return `x`""" - if seqToPtr(x) == seqToPtr(y): - return true + if seqToPtr(x) == seqToPtr(y): + return true + else: + var sameObject = false + asm """`sameObject` = `x` === `y`""" + if sameObject: return true when not defined(nimNoNil): if x.isNil or y.isNil: diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 5ac0ca8b2..8be19e5b8 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -519,8 +519,11 @@ proc nimCopyAux(dest, src: JSRef, n: ptr TNimNode) {.compilerproc.} = `dest`[`n`.offset] = nimCopy(`dest`[`n`.offset], `src`[`n`.offset], `n`.typ); """ of nkList: - for i in 0..n.len-1: - nimCopyAux(dest, src, n.sons[i]) + asm """ + for (var i = 0; i < `n`.sons.length; i++) { + nimCopyAux(`dest`, `src`, `n`.sons[i]); + } + """ of nkCase: asm """ `dest`[`n`.offset] = nimCopy(`dest`[`n`.offset], `src`[`n`.offset], `n`.typ); diff --git a/lib/system/reprjs.nim b/lib/system/reprjs.nim index 7cb25a252..fb231bbed 100644 --- a/lib/system/reprjs.nim +++ b/lib/system/reprjs.nim @@ -64,7 +64,9 @@ proc reprStrAux(result: var string, s: cstring, len: int) = proc reprStr(s: string): string {.compilerRtl.} = result = "" - if cast[pointer](s).isNil: + var sIsNil = false + asm """`sIsNil` = `s` === null""" + if sIsNil: # cast[pointer](s).isNil: # Handle nil strings here because they don't have a length field in js # TODO: check for null/undefined before generating call to length in js? # Also: c backend repr of a nil string is <pointer>"", but repr of an |