summaryrefslogtreecommitdiff
path: root/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp')
-rw-r--r--graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp b/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp
new file mode 100644
index 0000000000..89163c1f78
--- /dev/null
+++ b/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp
@@ -0,0 +1,28 @@
+// Symbian-specific file.
+
+// INCLUDE FILES
+#include <e32def.h>
+
+#include "private/gcconfig.h"
+#include "gc.h"
+
+extern "C" {
+
+void GC_init_global_static_roots()
+{
+ ptr_t dataStart;
+ ptr_t dataEnd;
+# if defined (__WINS__)
+ extern int winscw_data_start, winscw_data_end;
+ dataStart = ((ptr_t)&winscw_data_start);
+ dataEnd = ((ptr_t)&winscw_data_end);
+# else
+ extern int Image$$RW$$Limit[], Image$$RW$$Base[];
+ dataStart = ((ptr_t)Image$$RW$$Base);
+ dataEnd = ((ptr_t)Image$$RW$$Limit);
+# endif
+
+ GC_add_roots(dataStart, dataEnd);
+}
+
+} /* extern "C" */