PHP codegen improvements

This commit is contained in:
Andreas Rumpf 2016-05-12 03:02:39 +02:00
commit 746132d696
3 changed files with 6 additions and 3 deletions

View file

@ -981,7 +981,7 @@ proc genArrayAccess(p: PProc, n: PNode, r: var TCompRes) =
r.res = "nimAt($1, $2)" % [r.address, r.res] r.res = "nimAt($1, $2)" % [r.address, r.res]
elif ty.kind in {tyString, tyCString}: elif ty.kind in {tyString, tyCString}:
# XXX this needs to be more like substr($1,$2) # XXX this needs to be more like substr($1,$2)
r.res = "ord($1[$2])" % [r.address, r.res] r.res = "ord(@$1[$2])" % [r.address, r.res]
else: else:
r.res = "$1[$2]" % [r.address, r.res] r.res = "$1[$2]" % [r.address, r.res]
else: else:

View file

@ -2163,7 +2163,7 @@ proc `&` *[T](x: T, y: seq[T]): seq[T] {.noSideEffect.} =
result[i+1] = y[i] result[i+1] = y[i]
when not defined(nimscript): when not defined(nimscript):
when not defined(JS): when not defined(JS) or defined(nimphp):
proc seqToPtr[T](x: seq[T]): pointer {.inline, nosideeffect.} = proc seqToPtr[T](x: seq[T]): pointer {.inline, nosideeffect.} =
result = cast[pointer](x) result = cast[pointer](x)
else: else:

View file

@ -121,6 +121,9 @@ proc raiseException(e: ref Exception, ename: cstring) {.
when not defined(noUnhandledHandler): when not defined(noUnhandledHandler):
if excHandler == 0: if excHandler == 0:
unhandledException(e) unhandledException(e)
when defined(nimphp):
asm """throw new Exception($`e`["message"]);"""
else:
asm "throw `e`;" asm "throw `e`;"
proc reraiseException() {.compilerproc, asmNoStackFrame.} = proc reraiseException() {.compilerproc, asmNoStackFrame.} =