mono_arch_cpu_init (void)
{
guint32 dummy;
- mono_arch_cpu_optimizazions(&dummy);
+ mono_arch_cpu_optimizations(&dummy);
}
/*
* This function returns the optimizations supported on this cpu.
*/
guint32
-mono_arch_cpu_optimizazions (guint32 *exclude_mask)
+mono_arch_cpu_optimizations (guint32 *exclude_mask)
{
guint32 opts = 0;
*exclude_mask = 0;
return opts;
}
+/*
+ * This function test for all SIMD functions supported.
+ *
+ * Returns a bitmask corresponding to all supported versions.
+ *
+ */
+guint32
+mono_arch_cpu_enumerate_simd_versions (void)
+{
+ /* SIMD is currently unimplemented */
+ return 0;
+}
+
void
mono_arch_flush_icache (guint8 *code, gint size)
{
case MONO_TYPE_VALUETYPE:
if (type->data.klass->enumtype) {
- type = type->data.klass->enum_basetype;
+ type = mono_class_enum_basetype (type->data.klass);
goto handle_enum;
}
/* Fall through */
DEBUG_FUNC_ENTER();
m->flags |= MONO_CFG_HAS_SPILLUP;
- header = mono_method_get_header (m->method);
+ header = m->header;
sig = mono_method_signature (m->method);
DEBUG (printf ("Allocating locals - incoming params:\n"));
* Determine the vtable slot used by a virtual call.
*/
gpointer*
-mono_arch_get_vcall_slot_addr (guint8 *code8, gpointer *regs)
+mono_arch_get_vcall_slot_addr (guint8 *code8, mgreg_t *regs)
{
guint32 *code = (guint32*)((unsigned long)code8 & ~3);
} while (0)
#define EMIT_COND_BRANCH_FLAGS(ins,r1,r2,b0,b1) do {\
- if (ins->flags & MONO_INST_BRLABEL) { \
- mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_LABEL, ins->inst_i0); \
- if (b0) \
- hppa_combt (code, r1, r2, b1, 0); \
- else \
- hppa_combf (code, r1, r2, b1, 0); \
- } else { \
- if (b0) \
- hppa_combf (code, r1, r2, b1, 2); \
- else \
- hppa_combt (code, r1, r2, b1, 2); \
- hppa_nop (code); \
- mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_BB, ins->inst_true_bb); \
- hppa_bl (code, 0, hppa_r0); \
- } \
+ if (b0) \
+ hppa_combf (code, r1, r2, b1, 2); \
+ else \
+ hppa_combt (code, r1, r2, b1, 2); \
+ hppa_nop (code); \
+ mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_BB, ins->inst_true_bb); \
+ hppa_bl (code, 0, hppa_r0); \
hppa_nop (code); \
} while (0)
#define EMIT_FLOAT_COND_BRANCH_FLAGS(ins,r1,r2,b0) do {\
hppa_fcmp (code, HPPA_FP_FMT_DBL, b0, r1, r2); \
hppa_ftest (code, 0); \
- if (ins->flags & MONO_INST_BRLABEL) \
- mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_LABEL, ins->inst_i0); \
- else \
- mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_BB, ins->inst_true_bb); \
+ mono_add_patch_info (cfg, (guint8*)code - cfg->native_code, MONO_PATCH_INFO_BB, ins->inst_true_bb); \
hppa_bl (code, 8, hppa_r0); \
hppa_nop (code); \
} while (0)
cfg->code_size *= 2;
cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
code = (guint32*)(cfg->native_code + offset);
- mono_jit_stats.code_reallocs++;
+ cfg->stat_code_reallocs++;
}
code_start = (guint8*)code;
// if (ins->cil_code)
case OP_BR: {
guint32 target;
DEBUG (printf ("target: %p, next: %p, curr: %p, last: %p\n", ins->inst_target_bb, bb->next_bb, ins, bb->last_ins));
- if (ins->flags & MONO_INST_BRLABEL) {
- mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_LABEL, ins->inst_i0);
- } else {
- mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_BB, ins->inst_target_bb);
- }
+ mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_BB, ins->inst_target_bb);
hppa_bl (code, 8, hppa_r0);
/* TODO: if the branch is too long, we may need to
* use a long-branch sequence:
}
void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
+mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
{
MonoJumpInfo *patch_info;
};
void*
-mono_arch_instrument_epilog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments)
+mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments, gboolean preserve_argument_registers)
{
guint32 *code = (guint32*)p;
DEBUG_FUNC_ENTER();
while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) {
cfg->code_size *= 2;
cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
- mono_jit_stats.code_reallocs++;
+ cfg->stat_code_reallocs++;
}
code = (guint32*)(cfg->native_code + cfg->code_len);
while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) {
cfg->code_size *= 2;
cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
- mono_jit_stats.code_reallocs++;
+ cfg->stat_code_reallocs++;
}
code = cfg->native_code + cfg->code_len;
#endif
void
-mono_arch_setup_jit_tls_data (MonoJitTlsData *tls)
+mono_arch_finish_init (void)
{
}
return NULL;
}
-MonoInst* mono_arch_get_thread_intrinsic (MonoCompile* cfg)
-{
- return NULL;
-}
-
gpointer
mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
{