summary refs log tree commit diff stats
path: root/lib/system/embedded.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-06-30 21:15:28 +0200
committerAraq <rumpf_a@web.de>2013-06-30 21:15:28 +0200
commit52851b722d072f1306d699cc245af033cf76519a (patch)
tree57e0c5e84b6af19ca1c7853be566f3831eedb756 /lib/system/embedded.nim
parent651103ff320ef6f2a132be0a102749cefce725c9 (diff)
downloadNim-52851b722d072f1306d699cc245af033cf76519a.tar.gz
--os:standalone works again
Diffstat (limited to 'lib/system/embedded.nim')
-rw-r--r--lib/system/embedded.nim71
1 files changed, 4 insertions, 67 deletions
diff --git a/lib/system/embedded.nim b/lib/system/embedded.nim
index aaa3befaa..fad9722c2 100644
--- a/lib/system/embedded.nim
+++ b/lib/system/embedded.nim
@@ -10,8 +10,6 @@
 
 # Bare-bones implementation of some things for embedded targets.
 
-proc writeToStdErr(msg: CString) = write(stdout, msg)
-
 proc chckIndx(i, a, b: int): int {.inline, compilerproc.}
 proc chckRange(i, a, b: int): int {.inline, compilerproc.}
 proc chckRangeF(x, a, b: float): float {.inline, compilerproc.}
@@ -35,72 +33,11 @@ proc quitOrDebug() {.inline.} =
   quit(1)
 
 proc raiseException(e: ref E_Base, ename: CString) {.compilerRtl.} =
-  writeToStdErr(ename)
- 
+  sysFatal(ENoExceptionToReraise, "exception handling is not available")
+
 proc reraiseException() {.compilerRtl.} =
-  writeToStdErr("reraise not supported")
+  sysFatal(ENoExceptionToReraise, "no exception to reraise")
 
 proc WriteStackTrace() = nil
 
-proc setControlCHook(hook: proc () {.noconv.}) =
-  # ugly cast, but should work on all architectures:
-  type TSignalHandler = proc (sig: cint) {.noconv.}
-  c_signal(SIGINT, cast[TSignalHandler](hook))
-
-proc raiseRangeError(val: biggestInt) {.compilerproc, noreturn, noinline.} =
-  writeToStdErr("value out of range")
-
-proc raiseIndexError() {.compilerproc, noreturn, noinline.} =
-  writeToStdErr("index out of bounds")
-
-proc raiseFieldError(f: string) {.compilerproc, noreturn, noinline.} =
-  writeToStdErr("field is not accessible")
-
-proc chckIndx(i, a, b: int): int =
-  if i >= a and i <= b:
-    return i
-  else:
-    raiseIndexError()
-
-proc chckRange(i, a, b: int): int =
-  if i >= a and i <= b:
-    return i
-  else:
-    raiseRangeError(i)
-
-proc chckRange64(i, a, b: int64): int64 {.compilerproc.} =
-  if i >= a and i <= b:
-    return i
-  else:
-    raiseRangeError(i)
-
-proc chckRangeF(x, a, b: float): float =
-  if x >= a and x <= b:
-    return x
-  else:
-    raise newException(EOutOfRange, "value " & $x & " out of range")
-
-proc chckNil(p: pointer) =
-  if p == nil: c_raise(SIGSEGV)
-
-proc chckObj(obj, subclass: PNimType) {.compilerproc.} =
-  # checks if obj is of type subclass:
-  var x = obj
-  if x == subclass: return # optimized fast path
-  while x != subclass:
-    if x == nil:
-      raise newException(EInvalidObjectConversion, "invalid object conversion")
-    x = x.base
-
-proc chckObjAsgn(a, b: PNimType) {.compilerproc, inline.} =
-  if a != b:
-    raise newException(EInvalidObjectAssignment, "invalid object assignment")
-
-proc isObj(obj, subclass: PNimType): bool {.compilerproc.} =
-  # checks if obj is of type subclass:
-  var x = obj
-  if x == subclass: return true # optimized fast path
-  while x != subclass:
-    if x == nil: return false
-    x = x.base
-  return true
+proc setControlCHook(hook: proc () {.noconv.}) = nil