ji = frame.ji;
// FIXME: For skipped frames, scan the param area of the parent frame conservatively ?
+ // FIXME: trampolines
if (frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
/*
int hreg;
GCSlotType slot_type;
- t = mini_type_get_underlying_type (NULL, t);
+ t = mini_get_underlying_type (t);
hreg = ins->dreg;
g_assert (hreg < MONO_MAX_IREGS);
if (byref)
slot_type = SLOT_PIN;
else
- slot_type = mini_type_is_reference (cfg, t) ? SLOT_REF : SLOT_NOREF;
+ slot_type = mini_type_is_reference (t) ? SLOT_REF : SLOT_NOREF;
if (slot_type == SLOT_PIN) {
/* These have no live interval, be conservative */
}
#endif
- t = mini_type_get_underlying_type (NULL, t);
+ t = mini_get_underlying_type (t);
- if (!mini_type_is_reference (cfg, t)) {
+ if (!mini_type_is_reference (t)) {
set_slot_everywhere (gcfg, pos, SLOT_NOREF);
if (cfg->verbose_level > 1)
printf ("\tnoref%s at %s0x%x(fp) (R%d, slot = %d): %s\n", (is_arg ? " arg" : ""), ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, vmv->vreg, pos, mono_type_full_name (ins->inst_vtype));
guint32 size;
if (MONO_TYPE_ISSTRUCT (t)) {
- size = mini_type_stack_size_full (cfg->generic_sharing_context, t, &align, FALSE);
+ size = mini_type_stack_size_full (t, &align, FALSE);
} else {
size = sizeof (mgreg_t);
}
if (ins->opcode == OP_REGOFFSET) {
int size, size_in_slots;
- size = mini_type_stack_size_full (cfg->generic_sharing_context, ins->inst_vtype, NULL, ins->backend.is_pinvoke);
+ size = mini_type_stack_size_full (ins->inst_vtype, NULL, ins->backend.is_pinvoke);
size_in_slots = ALIGN_TO (size, SIZEOF_SLOT) / SIZEOF_SLOT;
min_offset = MIN (min_offset, ins->inst_offset);