mono_compute_branches (cfg);
if (mono_jit_dump_asm) {
- char *id = g_strdup_printf ("%s_%s__%s", method->klass->name_space,
+ char *id = g_strdup_printf ("%s.%s_%s", method->klass->name_space,
method->klass->name, method->name);
mono_disassemble_code (cfg->start, cfg->code - cfg->start, id);
g_free (id);
static void (*restore_context) (struct sigcontext *);
static void (*call_finally) (struct sigcontext *, unsigned long);
+ g_assert (ctx != NULL);
+ g_assert (obj != NULL);
+
ji = mono_jit_info_table_find (mono_jit_info_table, ip);
if (!restore_context)
//#define DEBUG
-#ifdef DEBUG
-#define MEMCOPY debug_memcpy
-void *MEMCOPY (void *dest, const void *src, size_t n);
-
-#define PRINT_REG(text,reg) \
+#define REAL_PRINT_REG(text,reg) \
g_assert (reg >= 0); \
x86_push_reg (s->code, X86_EAX); \
x86_push_reg (s->code, X86_EDX); \
x86_pop_reg (s->code, X86_ECX); \
x86_pop_reg (s->code, X86_EDX); \
x86_pop_reg (s->code, X86_EAX);
+
+#ifdef DEBUG
+#define MEMCOPY debug_memcpy
+void *MEMCOPY (void *dest, const void *src, size_t n);
+
+#define PRINT_REG(text,reg) REAL_PRINT_REG(text,reg)
#else
#define MEMCOPY memcpy
}
# array support
-reg: LDLEN (reg) {
+reg: LDLEN (reg) {
+ x86_alu_reg_imm (s->code, X86_CMP, tree->left->reg1, 0);
+ EMIT_COND_EXCEPTION (X86_CC_NE, get_exception_null_reference ());
+
x86_mov_reg_membase (s->code, tree->reg1, tree->left->reg1,
G_STRUCT_OFFSET (MonoArray, bounds), 4);
x86_mov_reg_membase (s->code, tree->reg1, tree->reg1,
x86_fnstsw (s->code);
x86_alu_reg_imm (s->code, X86_AND, X86_EAX, 0x4500);
offset = 6 + s->code - s->start;
- x86_branch32 (s->code, X86_CC_EQ, tree->data.bb->addr - offset, TRUE);
+ x86_branch32 (s->code, X86_CC_EQ, tree->data.bb->addr - offset, FALSE);
}
stmt: BLT_UN (freg, freg) {
x86_fcompp (s->code);
x86_fnstsw (s->code);
x86_alu_reg_imm (s->code, X86_AND, X86_EAX, 0x4500);
+ x86_alu_reg_imm (s->code, X86_CMP, X86_EAX, 0x0100);
offset = 6 + s->code - s->start;
x86_branch32 (s->code, X86_CC_NE, tree->data.bb->addr - offset, FALSE);
}