diff --git a/tslang/include/TypeScript/gcwrapper.h b/tslang/include/TypeScript/gcwrapper.h index e9b66611..4f31f969 100644 --- a/tslang/include/TypeScript/gcwrapper.h +++ b/tslang/include/TypeScript/gcwrapper.h @@ -29,6 +29,12 @@ void *_mlir__GC_malloc_explicitly_typed(size_t size, int64_t descr); int64_t _mlir__GC_make_descriptor(const int64_t *descr, size_t size); +int _mlir__GC_general_register_disappearing_link(void **link, const void *obj); + +int _mlir__GC_unregister_disappearing_link(void **link); + +void _mlir__GC_gcollect(); + #ifdef __cplusplus } #endif diff --git a/tslang/lib/TypeScriptRuntime/TypeScriptRuntime.def b/tslang/lib/TypeScriptRuntime/TypeScriptRuntime.def index d4b3e579..ac1005e2 100644 --- a/tslang/lib/TypeScriptRuntime/TypeScriptRuntime.def +++ b/tslang/lib/TypeScriptRuntime/TypeScriptRuntime.def @@ -19,6 +19,9 @@ EXPORTS GC_remove_roots=_mlir__GC_remove_roots GC_malloc_explicitly_typed=_mlir__GC_malloc_explicitly_typed GC_make_descriptor=_mlir__GC_make_descriptor + GC_general_register_disappearing_link=_mlir__GC_general_register_disappearing_link + GC_unregister_disappearing_link=_mlir__GC_unregister_disappearing_link + GC_gcollect=_mlir__GC_gcollect ; --- memory runtime (MemRuntime.cpp, extern "C") --- _mlir_alloc=Alloc diff --git a/tslang/lib/TypeScriptRuntime/gc.cpp b/tslang/lib/TypeScriptRuntime/gc.cpp index e4132696..2c0681b2 100644 --- a/tslang/lib/TypeScriptRuntime/gc.cpp +++ b/tslang/lib/TypeScriptRuntime/gc.cpp @@ -83,4 +83,19 @@ void *_mlir__GC_malloc_explicitly_typed(size_t size, int64_t descr) int64_t _mlir__GC_make_descriptor(const int64_t *descr, size_t size) { return GC_make_descriptor(reinterpret_cast(descr), size); +} + +int _mlir__GC_general_register_disappearing_link(void **link, const void *obj) +{ + return GC_general_register_disappearing_link(link, obj); +} + +int _mlir__GC_unregister_disappearing_link(void **link) +{ + return GC_unregister_disappearing_link(link); +} + +void _mlir__GC_gcollect() +{ + GC_gcollect(); } \ No newline at end of file