* mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
* inssel.brg: Add `OP_HARD_NOP'.
* mini.h (MonoCompile): Added `keep_cil_nops' flag.
* mini.c (mono_method_to_ir): In `CEE_NOP': generate a
`OP_HARD_NOP' instruction when running inside the debugger.
* method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
`OP_HARD_NOP' instruction when running inside the debugger.
svn path=/trunk/mono/; revision=116007
* inssel.brg: Add `OP_HARD_NOP'.
- * mini.c: In `CEE_NOP': generate a `OP_HARD_NOP' instruction
- when running inside the debugger.
+ * mini.h (MonoCompile): Added `keep_cil_nops' flag.
+
+ * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
+ `OP_HARD_NOP' instruction when running inside the debugger.
+
+ * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
+ `OP_HARD_NOP' instruction when running inside the debugger.
2008-10-15 Rodrigo Kumpera <rkumpera@novell.com>
if (!dont_verify && mini_method_verify (cfg, method_definition))
goto exception_exit;
+ if (mono_debug_using_mono_debugger ())
+ cfg->keep_cil_nops = TRUE;
+
if (sig->is_inflated)
generic_context = mono_method_get_context (method);
else if (generic_container)
switch (*ip) {
case CEE_NOP:
+ if (cfg->keep_cil_nops)
+ MONO_INST_NEW (cfg, ins, OP_HARD_NOP);
+ else
+ MONO_INST_NEW (cfg, ins, OP_NOP);
+ ip++;
+ MONO_ADD_INS (bblock, ins);
+ break;
case CEE_BREAK:
- MONO_INST_NEW (cfg, ins, (*ip) == CEE_NOP ? OP_NOP : OP_BREAK);
+ MONO_INST_NEW (cfg, ins, OP_BREAK);
ip++;
MONO_ADD_INS (bblock, ins);
break;
MonoDeclSecurityActions actions;
GSList *class_inits = NULL;
gboolean dont_verify, dont_verify_stloc, readonly = FALSE;
- gboolean use_hard_nops = FALSE;
int context_used;
/* serialization and xdomain stuff may need access to private fields and methods */
goto exception_exit;
if (mono_debug_using_mono_debugger ())
- use_hard_nops = TRUE;
+ cfg->keep_cil_nops = TRUE;
if (sig->is_inflated)
generic_context = mono_method_get_context (method);
switch (*ip) {
case CEE_NOP:
- if (use_hard_nops)
+ if (cfg->keep_cil_nops)
MONO_INST_NEW (cfg, ins, OP_HARD_NOP);
else
MONO_INST_NEW (cfg, ins, OP_NOP);
guint uses_rgctx_reg : 1;
guint uses_vtable_reg : 1;
guint uses_simd_intrinsics : 1;
+ guint keep_cil_nops : 1;
gpointer debug_info;
guint32 lmf_offset;
guint16 *intvars;