+2009-02-18 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * aot-runtime.c:
+ * mini-amd64.c:
+ * mini-arm.c:
+ * mini-ia64.c:
+ * mini-mips.c:
+ * mini-ppc.c:
+ * mini-sparc.c:
+ * mini-trampolines.c:
+ * mini-x86.c:
+ * mini.c:
+ * tramp-alpha.c:
+ * tramp-amd64.c:
+ * tramp-arm.c:
+ * tramp-hppa.c:
+ * tramp-ia64.c:
+ * tramp-mips.c:
+ * tramp-ppc.c:
+ * tramp-s390.c:
+ * tramp-s390x.c:
+ * tramp-sparc.c:
+ * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
+
2009-02-18 Zoltan Varga <vargaz@gmail.com>
* mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
jinfo = decode_exception_debug_info (aot_module, domain, method, ex_info, code);
}
- mono_domain_lock (domain);
- code2 = mono_code_manager_reserve (domain->code_mp, jinfo->code_size);
- mono_domain_unlock (domain);
+ code2 = mono_domain_code_reserve (domain, jinfo->code_size);
memcpy (code2, code, jinfo->code_size);
mono_arch_flush_icache (code2, jinfo->code_size);
code = code2;
if (fail_tramp)
code = mono_method_alloc_generic_virtual_thunk (domain, size);
else
- code = mono_code_manager_reserve (domain->code_mp, size);
+ code = mono_domain_code_reserve (domain, size);
start = code;
for (i = 0; i < count; ++i) {
MonoIMTCheckItem *item = imt_entries [i];
pdata.found = 0;
mono_domain_lock (domain);
- mono_code_manager_foreach (domain->code_mp, search_thunk_slot, &pdata);
+ mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
if (!pdata.found) {
/* this uses the first available slot */
pdata.found = 2;
- mono_code_manager_foreach (domain->code_mp, search_thunk_slot, &pdata);
+ mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
}
mono_domain_unlock (domain);
if (large_offsets)
size += 4 * count; /* The ARM_ADD_REG_IMM to pop the stack */
- start = code = mono_code_manager_reserve (domain->code_mp, size);
+ start = code = mono_domain_code_reserve (domain, size);
#if DEBUG_IMT
printf ("building IMT thunk for class %s %s entries %d code size %d code at %p end %p vtable %p\n", vtable->klass->name_space, vtable->klass->name, count, size, start, ((guint8*)start) + size, vtable);
g_assert (code.buf - buf <= size);
size = code.buf - buf;
- start = mono_code_manager_reserve (domain->code_mp, size);
+ start = mono_domain_code_reserve (domain, size);
memcpy (start, buf, size);
mono_arch_flush_icache (start, size);
} else {
/* the initial load of the vtable address */
size += 8;
- code = mono_code_manager_reserve (domain->code_mp, size);
+ code = mono_domain_code_reserve (domain, size);
}
start = code;
if (!fail_tramp)
pdata.found = 0;
mono_domain_lock (domain);
- mono_code_manager_foreach (domain->code_mp, search_thunk_slot, &pdata);
+ mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
if (!pdata.found) {
/* this uses the first available slot */
pdata.found = 2;
- mono_code_manager_foreach (domain->code_mp, search_thunk_slot, &pdata);
+ mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
}
mono_domain_unlock (domain);
} else {
/* the initial load of the vtable address */
size += PPC_LOAD_SEQUENCE_LENGTH + LOADSTORE_SIZE;
- code = mono_code_manager_reserve (domain->code_mp, size);
+ code = mono_domain_code_reserve (domain, size);
}
start = code;
if (!fail_tramp) {
}
size += item->chunk_size;
}
- code = mono_code_manager_reserve (domain->code_mp, size * 4);
+ code = mono_domain_code_reserve (domain, size * 4);
start = code;
for (i = 0; i < count; ++i) {
MonoDomain *domain = mono_domain_get ();
guint8 *buf, *start;
- mono_domain_lock (domain);
- buf = start = mono_code_manager_reserve (domain->code_mp, 2 * sizeof (gpointer));
- mono_domain_unlock (domain);
+ buf = start = mono_domain_code_reserve (domain, 2 * sizeof (gpointer));
*(gpointer*)(gpointer)buf = image;
buf += sizeof (gpointer);
if (fail_tramp)
code = mono_method_alloc_generic_virtual_thunk (domain, size);
else
- code = mono_code_manager_reserve (domain->code_mp, size);
+ code = mono_domain_code_reserve (domain, size);
start = code;
for (i = 0; i < count; ++i) {
MonoIMTCheckItem *item = imt_entries [i];
if (mono_aot_only) {
jump_table = mono_domain_alloc (domain, sizeof (gpointer) * patch_info->data.table->table_size);
} else {
- mono_domain_lock (domain);
- jump_table = mono_code_manager_reserve (domain->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
- mono_domain_unlock (domain);
+ jump_table = mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
}
}
#ifdef MONO_ARCH_HAVE_UNWIND_TABLE
unwindlen = mono_arch_unwindinfo_get_size (cfg->arch.unwindinfo);
#endif
- mono_domain_lock (cfg->domain);
- code = mono_code_manager_reserve (cfg->domain->code_mp, cfg->code_size + unwindlen);
- mono_domain_unlock (cfg->domain);
+ code = mono_domain_code_reserve (cfg->domain, cfg->code_size + unwindlen);
}
memcpy (code, cfg->native_code, cfg->code_len);
if (cfg->method->dynamic) {
table = mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
} else {
- mono_domain_lock (cfg->domain);
- table = mono_code_manager_reserve (cfg->domain->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
- mono_domain_unlock (cfg->domain);
+ table = mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
}
for (i = 0; i < patch_info->data.table->table_size; i++) {
if (cfg->method->dynamic) {
mono_code_manager_commit (cfg->dynamic_info->code_mp, cfg->native_code, cfg->code_size, cfg->code_len);
} else {
- mono_domain_lock (cfg->domain);
- mono_code_manager_commit (cfg->domain->code_mp, cfg->native_code, cfg->code_size, cfg->code_len);
- mono_domain_unlock (cfg->domain);
+ mono_domain_code_commit (cfg->domain, cfg->native_code, cfg->code_size, cfg->code_len);
}
mono_arch_flush_icache (cfg->native_code, cfg->code_len);
alpha_jmp(code, alpha_zero, alpha_at, 0);
g_assert (((char *)code - (char *)buf) <= TRAMPOLINE_SIZE);
- mono_domain_lock (domain);
/*
* FIXME: Changing the size to code - buf causes strange crashes during
* mcs bootstrap.
*/
- real_code = mono_code_manager_reserve (domain->code_mp, TRAMPOLINE_SIZE);
+ real_code = mono_domain_code_reserve (domain, TRAMPOLINE_SIZE);
size = (char *)code - (char *)buf;
- mono_domain_unlock (domain);
memcpy (real_code, buf, size);
if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
this_reg = 17; //R17
- mono_domain_lock (domain);
- start_code = code = (unsigned int *)mono_code_manager_reserve (domain->code_mp, 32);
- mono_domain_unlock (domain);
+ start_code = code = (unsigned int *)mono_domain_code_reserve (domain, 32);
// Adjust this by size of MonoObject
alpha_addq_(code, this_reg, sizeof(MonoObject), this_reg); // 0
this_reg = mono_arch_get_this_arg_reg (mono_method_signature (m), gsctx, NULL);
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 20);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 20);
amd64_alu_reg_imm (code, X86_ADD, this_reg, sizeof (MonoObject));
/* FIXME: Optimize this */
else
size = 5 + 1 + 8;
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve_align (domain->code_mp, size, 1);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve_align (domain, size, 1);
amd64_call_code (code, tramp);
/* The trampoline code will obtain the argument from the instruction stream */
if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
this_pos = 1;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 16);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 16);
ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 4);
ARM_ADD_REG_IMM8 (code, this_pos, this_pos, sizeof (MonoObject));
tramp = mono_get_trampoline_code (tramp_type);
mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve_align (domain->code_mp, size, 4);
+ code = buf = mono_domain_code_reserve_align (domain, size, 4);
if ((short_branch = branch_for_target_reachable (code + 8, tramp))) {
size = 12;
- mono_code_manager_commit (domain->code_mp, code, SPEC_TRAMP_SIZE, size);
+ mono_domain_code_commit (domain, code, SPEC_TRAMP_SIZE, size);
}
mono_domain_unlock (domain);
if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
this_pos = hppa_r25;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 20);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 20);
hppa_set (code, addr, hppa_r1);
hppa_ldo (code, sizeof (MonoObject), this_pos, this_pos);
tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_CLASS_INIT);
/* This is the method-specific part of the trampoline. Its purpose is
to provide the generic part with the MonoMethod *method pointer. */
- mono_domain_lock (vtable->domain);
- code = buf = mono_code_manager_reserve (vtable->domain->code_mp, METHOD_TRAMPOLINE_SIZE);
- mono_domain_unlock (vtable->domain);
+ code = buf = mono_domain_code_reserve (vtable->domain, METHOD_TRAMPOLINE_SIZE);
hppa_stw (buf, hppa_r2, -20, hppa_sp);
hppa_copy (buf, hppa_r3, hppa_r1);
guint8 *code, *buf;
MonoJitInfo *ji;
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve (domain->code_mp, 20);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve (domain, 20);
/* Call trampoline, with the "method" pointer in r20 */
hppa_set (buf, tramp, hppa_r1);
func_addr = ((gpointer*)addr) [0];
func_gp = ((gpointer*)addr) [1];
- mono_domain_lock (domain);
- buf = mono_code_manager_reserve (domain->code_mp, 256);
- mono_domain_unlock (domain);
+ buf = mono_domain_code_reserve (domain, 256);
/* Since the this reg is a stacked register, its a bit hard to access it */
ia64_codegen_init (code, buf);
tramp = mono_get_trampoline_code (tramp_type);
- mono_domain_lock (domain);
- buf = mono_code_manager_reserve (domain->code_mp, TRAMPOLINE_SIZE);
- mono_domain_unlock (domain);
+ buf = mono_domain_code_reserve (domain, TRAMPOLINE_SIZE);
/* FIXME: Optimize this */
if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
this_pos = mips_a1;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 20);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 20);
mips_load (code, mips_t9, addr);
mips_addiu (code, this_pos, this_pos, sizeof (MonoObject));
tramp = mono_get_trampoline_code (tramp_type);
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve (domain->code_mp, 32);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve (domain, 32);
/* Prepare the jump to the generic trampoline code
* mono_arch_create_trampoline_code() knows we're putting this in t8
this_pos = 4;
mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, size);
+ start = code = mono_domain_code_reserve (domain, size);
code = mono_ppc_create_pre_code_ftnptr (code);
short_branch = branch_for_target_reachable (code + 4, addr);
if (short_branch)
- mono_code_manager_commit (domain->code_mp, code, size, 8);
+ mono_domain_code_commit (domain, code, size, 8);
mono_domain_unlock (domain);
if (short_branch) {
tramp = mono_get_trampoline_code (tramp_type);
mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve_align (domain->code_mp, TRAMPOLINE_SIZE, 4);
+ code = buf = mono_domain_code_reserve_align (domain, TRAMPOLINE_SIZE, 4);
short_branch = branch_for_target_reachable (code + MONO_PPC_32_64_CASE (8, 5*4), tramp);
#ifdef __mono_ppc64__
/* FIXME: make shorter if possible */
#else
if (short_branch)
- mono_code_manager_commit (domain->code_mp, code, TRAMPOLINE_SIZE, 12);
+ mono_domain_code_commit (domain, code, TRAMPOLINE_SIZE, 12);
#endif
mono_domain_unlock (domain);
if (MONO_TYPE_ISSTRUCT (mono_method_signature (method)->ret))
this_pos = s390_r3;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 28);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 28);
s390_basr (code, s390_r13, 0);
s390_j (code, 4);
/* purpose is to provide the generic part with the */
/* MonoMethod *method pointer. We'll use r1 to keep it. */
/*----------------------------------------------------------*/
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve (domain->code_mp, SPECIFIC_TRAMPOLINE_SIZE);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE);
s390_basr (buf, s390_r1, 0);
s390_j (buf, 4);
if (MONO_TYPE_ISSTRUCT (mono_method_signature (method)->ret))
this_pos = s390_r3;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 28);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 28);
s390_basr (code, s390_r1, 0);
s390_j (code, 6);
/* purpose is to provide the generic part with the */
/* MonoMethod *method pointer. We'll use r1 to keep it. */
/*----------------------------------------------------------*/
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve (domain->code_mp, SPECIFIC_TRAMPOLINE_SIZE);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE);
s390_basr (buf, s390_r1, 0);
s390_j (buf, 6);
tramp = mono_get_trampoline_code (tramp_type);
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve (domain->code_mp, TRAMPOLINE_SIZE * 4);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve (domain, TRAMPOLINE_SIZE * 4);
/* We have to use g5 here because there is no other free register */
sparc_set (code, tramp, sparc_g5);
if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
this_pos = 8;
- mono_domain_lock (domain);
- start = code = mono_code_manager_reserve (domain->code_mp, 16);
- mono_domain_unlock (domain);
+ start = code = mono_domain_code_reserve (domain, 16);
x86_alu_membase_imm (code, X86_ADD, X86_ESP, this_pos, sizeof (MonoObject));
x86_jump_code (code, addr);
tramp = mono_get_trampoline_code (tramp_type);
- mono_domain_lock (domain);
- code = buf = mono_code_manager_reserve_align (domain->code_mp, TRAMPOLINE_SIZE, 4);
- mono_domain_unlock (domain);
+ code = buf = mono_domain_code_reserve_align (domain, TRAMPOLINE_SIZE, 4);
x86_push_imm (buf, arg1);
x86_jump_code (buf, tramp);