projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[amd64] Fix the tail call code after 4c0376d037e3cd5910a24b3e568c6e9ad5bb40d2.
[mono.git]
/
mono
/
mini
/
exceptions-mips.c
diff --git
a/mono/mini/exceptions-mips.c
b/mono/mini/exceptions-mips.c
index d3a854cd41cb9dd2ba36c1e4e3abe68c4cd44bb5..ea58f176176baf50b9be20ef4ddaca1837c268d7 100644
(file)
--- a/
mono/mini/exceptions-mips.c
+++ b/
mono/mini/exceptions-mips.c
@@
-174,7
+174,6
@@
mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
static void
throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean rethrow)
{
static void
throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean rethrow)
{
- static void (*restore_context) (MonoContext *);
MonoContext ctx;
#ifdef DEBUG_EXCEPTIONS
MonoContext ctx;
#ifdef DEBUG_EXCEPTIONS
@@
-182,9
+181,6
@@
throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean
exc, (void *)eip, (void *) esp, rethrow);
#endif
exc, (void *)eip, (void *) esp, rethrow);
#endif
- if (!restore_context)
- restore_context = mono_get_restore_context ();
-
/* adjust eip so that it point into the call instruction */
eip -= 8;
/* adjust eip so that it point into the call instruction */
eip -= 8;
@@
-207,7
+203,7
@@
throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean
(void *) ctx.sc_pc, (void *) ctx.sc_regs[mips_sp],
(void *) ctx.sc_regs[mips_fp], &ctx);
#endif
(void *) ctx.sc_pc, (void *) ctx.sc_regs[mips_sp],
(void *) ctx.sc_regs[mips_fp], &ctx);
#endif
- restore_context (&ctx);
+
mono_
restore_context (&ctx);
g_assert_not_reached ();
}
g_assert_not_reached ();
}
@@
-493,34
+489,19
@@
mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
void
mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
{
void
mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
{
- int i;
- struct sigcontext *ctx = (struct sigcontext *)sigctx;
-
- mctx->sc_pc = ctx->sc_pc;
- for (i = 0; i < 32; ++i) {
- mctx->sc_regs[i] = ctx->sc_regs[i];
- mctx->sc_fpregs[i] = ctx->sc_fpregs[i];
- }
+ mono_sigctx_to_monoctx (sigctx, mctx);
}
void
mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
{
}
void
mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
{
- int i;
- struct sigcontext *ctx = (struct sigcontext *)sigctx;
-
- ctx->sc_pc = mctx->sc_pc;
- for (i = 0; i < 32; ++i) {
- ctx->sc_regs[i] = mctx->sc_regs[i];
- ctx->sc_fpregs[i] = mctx->sc_fpregs[i];
- }
-}
+ mono_monoctx_to_sigctx (mctx, sigctx);
+}
gpointer
mono_arch_ip_from_context (void *sigctx)
{
gpointer
mono_arch_ip_from_context (void *sigctx)
{
- struct sigcontext *ctx = (struct sigcontext *)sigctx;
- return (gpointer)(guint32)ctx->sc_pc;
+ return (gpointer)UCONTEXT_REG_PC (sigctx);
}
/*
}
/*
@@
-533,16
+514,12
@@
handle_signal_exception (gpointer obj)
{
MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
MonoContext ctx;
{
MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
MonoContext ctx;
- static void (*restore_context) (MonoContext *);
-
- if (!restore_context)
- restore_context = mono_get_restore_context ();
memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
mono_handle_exception (&ctx, obj);
memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
mono_handle_exception (&ctx, obj);
- restore_context (&ctx);
+
mono_
restore_context (&ctx);
}
/*
}
/*