#include "mini.h"
#include "image-writer.h"
#include "dwarfwriter.h"
+#include "mini-gc.h"
#if !defined(DISABLE_AOT) && !defined(DISABLE_JIT)
} else if (str_begins_with (arg, "info")) {
printf ("AOT target setup: %s.\n", AOT_TARGET_STR);
exit (0);
+ } else if (str_begins_with (arg, "gc-maps")) {
+ mini_gc_enable_gc_maps_for_aot ();
} else if (str_begins_with (arg, "help") || str_begins_with (arg, "?")) {
printf ("Supported options for --aot:\n");
printf (" outfile=\n");
printf (" tool-prefix=\n");
printf (" readonly-value=\n");
printf (" soft-debug\n");
+ printf (" gc-maps\n");
printf (" print-skipped\n");
printf (" stats\n");
printf (" info\n");
static FILE *logfile;
+static gboolean enable_gc_maps_for_aot;
+
+void
+mini_gc_enable_gc_maps_for_aot (void)
+{
+ enable_gc_maps_for_aot = TRUE;
+}
+
// FIXME: Move these to a shared place
static inline void
if (!mono_gc_is_moving ())
return;
- if (!cfg->compile_aot && !mono_gc_precise_stack_mark_enabled ())
+ if (cfg->compile_aot) {
+ if (!enable_gc_maps_for_aot)
+ return;
+ } else if (!mono_gc_precise_stack_mark_enabled ())
return;
#if 1
void mini_gc_init_cfg (MonoCompile *cfg) MONO_INTERNAL;
+void mini_gc_enable_gc_maps_for_aot (void) MONO_INTERNAL;
+
void mini_gc_create_gc_map (MonoCompile *cfg) MONO_INTERNAL;
void mini_gc_set_slot_type_from_fp (MonoCompile *cfg, int slot_offset, GCSlotType type) MONO_INTERNAL;