projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use --relocation-model=pic for llvm on ios.
[mono.git]
/
mono
/
mini
/
mini-gc.c
diff --git
a/mono/mini/mini-gc.c
b/mono/mini/mini-gc.c
index 5bbd3751710e6a6495335902352ad49b09ed8b4f..0d439acc63618b64b2c2904b25cab84699fa8ef2 100644
(file)
--- a/
mono/mini/mini-gc.c
+++ b/
mono/mini/mini-gc.c
@@
-603,8
+603,12
@@
thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
} else {
tls->unwind_state.unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
if (sigctx) {
} else {
tls->unwind_state.unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
if (sigctx) {
+#ifdef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
mono_arch_sigctx_to_monoctx (sigctx, &tls->unwind_state.ctx);
tls->unwind_state.valid = TRUE;
mono_arch_sigctx_to_monoctx (sigctx, &tls->unwind_state.ctx);
tls->unwind_state.valid = TRUE;
+#else
+ tls->unwind_state.valid = FALSE;
+#endif
} else if (ctx) {
memcpy (&tls->unwind_state.ctx, ctx, sizeof (MonoContext));
tls->unwind_state.valid = TRUE;
} else if (ctx) {
memcpy (&tls->unwind_state.ctx, ctx, sizeof (MonoContext));
tls->unwind_state.valid = TRUE;
@@
-1211,6
+1215,8
@@
thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gb
precise_pass (tls, stack_start, stack_end);
}
precise_pass (tls, stack_start, stack_end);
}
+#ifndef DISABLE_JIT
+
static void
mini_gc_init_gc_map (MonoCompile *cfg)
{
static void
mini_gc_init_gc_map (MonoCompile *cfg)
{
@@
-1716,11
+1722,13
@@
process_variables (MonoCompile *cfg)
* before the liveness pass. We emit OP_GC_LIVENESS_DEF instructions for
* them during VZERO decomposition.
*/
* before the liveness pass. We emit OP_GC_LIVENESS_DEF instructions for
* them during VZERO decomposition.
*/
- if (!pc_offsets [vmv->vreg])
- pin = TRUE;
+ if (!is_arg) {
+ if (!pc_offsets [vmv->vreg])
+ pin = TRUE;
- if (ins->backend.is_pinvoke)
- pin = TRUE;
+ if (ins->backend.is_pinvoke)
+ pin = TRUE;
+ }
if (bitmap) {
for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
if (bitmap) {
for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
@@
-2426,6
+2434,8
@@
mini_gc_create_gc_map (MonoCompile *cfg)
create_map (cfg);
}
create_map (cfg);
}
+#endif /* DISABLE_JIT */
+
static void
parse_debug_options (void)
{
static void
parse_debug_options (void)
{
@@
-2507,11
+2517,18
@@
mini_gc_init (void)
#else
#else
+void
+mini_gc_enable_gc_maps_for_aot (void)
+{
+}
+
void
mini_gc_init (void)
{
}
void
mini_gc_init (void)
{
}
+#ifndef DISABLE_JIT
+
static void
mini_gc_init_gc_map (MonoCompile *cfg)
{
static void
mini_gc_init_gc_map (MonoCompile *cfg)
{
@@
-2532,8
+2549,12
@@
mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType ty
{
}
{
}
+#endif /* DISABLE_JIT */
+
#endif
#endif
+#ifndef DISABLE_JIT
+
/*
* mini_gc_init_cfg:
*
/*
* mini_gc_init_cfg:
*
@@
-2550,6
+2571,8
@@
mini_gc_init_cfg (MonoCompile *cfg)
mini_gc_init_gc_map (cfg);
}
mini_gc_init_gc_map (cfg);
}
+#endif /* DISABLE_JIT */
+
/*
* Problems with the current code:
* - the stack walk is slow
/*
* Problems with the current code:
* - the stack walk is slow