/* The first part of the condition means an icall without a wrapper */
if ((!target_ji && m->addr) || mono_method_same_domain (ji, target_ji)) {
- gboolean do_patch = TRUE;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- if (RUNNING_ON_VALGRIND)
- do_patch = FALSE;
-#endif
-
- if (do_patch) {
+ if (!mono_running_on_valgrind ()) {
InterlockedExchange ((gint32*)(code + 2), (guint)addr - ((guint)code + 1) - 5);
#ifdef HAVE_VALGRIND_MEMCHECK_H
/* Tell valgrind to recompile the patched code */
- VALGRIND_DISCARD_TRANSLATIONS (code + 2, code + 6);
+ //VALGRIND_DISCARD_TRANSLATIONS (code + 2, code + 6);
#endif
}
}
code -= 5;
if (code [0] == 0xe8) {
- gboolean do_patch = TRUE;
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
- if (RUNNING_ON_VALGRIND)
- do_patch = FALSE;
-#endif
-
- if (do_patch) {
+ if (!mono_running_on_valgrind ()) {
guint32 ops;
/*
* Thread safe code patching using the algorithm from the paper
else
x86_push_membase (buf, X86_ESP, 16);
- x86_push_reg (buf, X86_EBX);
- x86_push_reg (buf, X86_EDI);
- x86_push_reg (buf, X86_ESI);
x86_push_reg (buf, X86_EBP);
+ x86_push_reg (buf, X86_ESI);
+ x86_push_reg (buf, X86_EDI);
+ x86_push_reg (buf, X86_EBX);
/* save method info */
x86_push_membase (buf, X86_ESP, 32);
/* discard method info */
x86_pop_reg (buf, X86_ESI);
/* restore caller saved regs */
- x86_pop_reg (buf, X86_EBP);
- x86_pop_reg (buf, X86_ESI);
- x86_pop_reg (buf, X86_EDI);
x86_pop_reg (buf, X86_EBX);
+ x86_pop_reg (buf, X86_EDI);
+ x86_pop_reg (buf, X86_ESI);
+ x86_pop_reg (buf, X86_EBP);
+
/* discard save IP */
x86_alu_reg_imm (buf, X86_ADD, X86_ESP, 4);
/* restore LMF end */