mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-03 03:32:32 +00:00
Merge pull request #1178 from EXetoC/nostackframe
noStackFrame -> asmNoStackFrame
This commit is contained in:
@@ -2408,7 +2408,8 @@ Nimrod identifiers shall be enclosed in a special character which can be
|
||||
specified in the statement's pragmas. The default special character is ``'`'``:
|
||||
|
||||
.. code-block:: nimrod
|
||||
proc addInt(a, b: int): int {.noStackFrame.} =
|
||||
{.push stackTrace:off.}
|
||||
proc addInt(a, b: int): int =
|
||||
# a in eax, and b in edx
|
||||
asm """
|
||||
mov eax, `a`
|
||||
@@ -2417,6 +2418,7 @@ specified in the statement's pragmas. The default special character is ``'`'``:
|
||||
call `raiseOverflow`
|
||||
theEnd:
|
||||
"""
|
||||
{.pop.}
|
||||
|
||||
If the GNU assembler is used, quotes and newlines are inserted automatically:
|
||||
|
||||
|
||||
@@ -360,10 +360,12 @@ Example:
|
||||
static int cvariable = 420;
|
||||
""".}
|
||||
|
||||
proc embedsC() {.noStackFrame.} =
|
||||
{.push stackTrace:off.}
|
||||
proc embedsC() =
|
||||
var nimrodVar = 89
|
||||
# use backticks to access Nimrod symbols within an emit section:
|
||||
{.emit: """fprintf(stdout, "%d\n", cvariable + (int)`nimrodVar`);""".}
|
||||
{.pop.}
|
||||
|
||||
embedsC()
|
||||
|
||||
|
||||
@@ -800,8 +800,8 @@ elif not defined(useNimRtl):
|
||||
|
||||
proc startProcessAfterFork(data: ptr TStartProcessData) =
|
||||
# Warning: no GC here!
|
||||
# Or anythink that touches global structures - all called nimrod procs
|
||||
# must be marked with noStackFrame. Inspect C code after making changes.
|
||||
# Or anything that touches global structures - all called nimrod procs
|
||||
# must be marked with stackTrace:off. Inspect C code after making changes.
|
||||
if not data.optionPoParentStreams:
|
||||
discard close(data.pStdin[writeIdx])
|
||||
if dup2(data.pStdin[readIdx], readIdx) < 0:
|
||||
|
||||
Reference in New Issue
Block a user