diff --git a/godot/godotinternal.nim b/godot/godotinternal.nim index fe253dc..c241d77 100644 --- a/godot/godotinternal.nim +++ b/godot/godotinternal.nim @@ -239,9 +239,6 @@ type ClassConstructor = proc (): ptr GodotObject {.noconv.} proc getClassConstructor*(className: cstring): ClassConstructor {. importc: "godot_get_class_constructor".} -proc godotStackBottom*(): pointer {. - importc: "godot_get_stack_bottom".} - proc deinit*(o: ptr GodotObject) {. importc: "godot_object_destroy".} diff --git a/godot/nim/godotnim.nim b/godot/nim/godotnim.nim index da3f2c6..bfb59c7 100644 --- a/godot/nim/godotnim.nim +++ b/godot/nim/godotnim.nim @@ -780,10 +780,10 @@ proc godot_nativescript_init(handle: pointer) {. cdecl, exportc, dynlib.} = nativeLibHandle = handle - let stackBottom = godotStackBottom() + var stackBottom {.volatile.}: pointer {.emit: """ NimMain(); - setStackBottom(`stackBottom`); + setStackBottom((void*)(&`stackBottom`)); """.} GC_fullCollect() GC_disable() @@ -798,6 +798,10 @@ proc godot_gdnative_terminate(options: ptr GodotNativeTerminateOptions) {. const nimGcStepLengthUs {.intdefine.} = 2000 proc godot_nativescript_frame() {.cdecl, exportc, dynlib.} = + var stackBottom {.volatile.}: pointer + {.emit: """ + setStackBottom((void*)(&`stackBottom`)); + """.} if asyncdispatch.hasPendingOperations(): poll(0) GC_step(nimGcStepLengthUs, true, 0)