diff options
author | flywind <xzsflywind@gmail.com> | 2021-04-21 11:05:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-21 11:05:16 +0800 |
commit | 603af22b7ca46ac566f8c7c15402028f3f976a4e (patch) | |
tree | 1203829a81748b1ca4d959c454848faa62cd97ca | |
parent | eb221dcc27b7f8f11ec34046e3165508acdf8beb (diff) | |
download | Nim-603af22b7ca46ac566f8c7c15402028f3f976a4e.tar.gz |
[std/tasks]add gcsafe pragmas (#17799)
* [std/tasks]add gcsafe pragmas * Update tasks.nim
-rw-r--r-- | lib/std/tasks.nim | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/std/tasks.nim b/lib/std/tasks.nim index aed36f985..97c4df3f7 100644 --- a/lib/std/tasks.nim +++ b/lib/std/tasks.nim @@ -59,7 +59,7 @@ when compileOption("threads"): type Task* = object ## `Task` contains the callback and its arguments. - callback: proc (args: pointer) {.nimcall.} + callback: proc (args: pointer) {.nimcall, gcsafe.} args: pointer destroy: proc (args: pointer) {.nimcall.} @@ -73,7 +73,7 @@ proc `=destroy`*(t: var Task) {.inline.} = t.destroy(t.args) c_free(t.args) -proc invoke*(task: Task) {.inline.} = +proc invoke*(task: Task) {.inline, gcsafe.} = ## Invokes the `task`. assert task.callback != nil task.callback(task.args) @@ -215,7 +215,7 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC result = quote do: `stmtList` - proc `funcName`(args: pointer) {.nimcall.} = + proc `funcName`(args: pointer) {.gcsafe, nimcall.} = let `objTemp` = cast[ptr `scratchObjType`](args) `functionStmtList` @@ -229,7 +229,7 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC let funcName = genSym(nskProc, e[0].strVal) result = quote do: - proc `funcName`(args: pointer) {.nimcall.} = + proc `funcName`(args: pointer) {.gcsafe, nimcall.} = `funcCall` Task(callback: `funcName`, args: nil) |