internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow) { return(0); }
internal unsafe void ExpandDescriptor(OverflowFrameDescriptor *overflow, ref FrameDescriptor res) { }
bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow) { return(((overflow->mask >> Constants.FullPinnedPosFP) & (UIntPtr)0x1) != 0); }
bool HasTransitionRecord(OverflowFrameDescriptor *overflow) { return((overflow->mask & (UIntPtr)0x2) != 0); }
bool HasPinnedPointersNoFP(OverflowFrameDescriptor *overflow) { // Current bridge doesn't support omitting frame pointer. VTable.Assert(false, "Omit FP not supported."); return((overflow->mask & (UIntPtr)0x1) != 0); }
internal unsafe uint EntrySizeNoFP(OverflowFrameDescriptor *overflow) { // Current bridge doesn't support omitting frame pointer. VTable.Assert(false, "Omit FP not supported."); return(unchecked ((uint)((overflow->mask >> 1) & (UIntPtr)0x7))); }
internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow) { return(unchecked ((uint)((overflow->mask >> 23) & (UIntPtr)0x7))); }
bool HasTransitionRecord(OverflowFrameDescriptor *overflow) { return((overflow->mask & (UIntPtr)Constants.FullTransitionRecordMask) != 0); }
UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow) { return((overflow->mask >> 2) & (UIntPtr)0x7f); }
bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow) { return((overflow->mask & (UIntPtr)0x08000000) != 0); }
UIntPtr CalleeSaveValueMaskWithFP(OverflowFrameDescriptor *overflow) { return((overflow->mask >> 9) & (UIntPtr)0x3fff); }
internal unsafe int FrameSizeNoFP(OverflowFrameDescriptor *overflow) { return(unchecked ((int)(overflow->mask >> 38))); }
UIntPtr CalleeSaveValueMaskNoFP(OverflowFrameDescriptor *overflow) { return((overflow->mask >> 10) & (UIntPtr)0xffff); }
FrameDescriptor(CompressedFrameDescriptor smallDescriptor) { if (smallDescriptor.IsCompressed()) { this.argumentCount = smallDescriptor.StackArgSize(); this.hasPinnedVariables = false; this.hasTransitionRecord = smallDescriptor.HasTransitionRecord(); if (smallDescriptor.IsFramePointerOmitted()) { this.isFramePointerOmitted = true; this.argumentTag = COMPRESSED_MASK_TAG; this.argumentMaskOrTable = smallDescriptor.ArgumentMaskNoFP(); this.calleeSaveValueMask = smallDescriptor.CalleeSaveValueMaskNoFP(); this.calleeSaveMask = smallDescriptor.CalleeSaveMaskNoFP(); this.inBetweenSlotsAbove = smallDescriptor.InBetweenSlotsAboveNoFP(); this.inBetweenSlotsBelow = smallDescriptor.InBetweenSlotsBelowNoFP(); this.frameSize = smallDescriptor.FrameSizeNoFP(); } else { this.isFramePointerOmitted = false; this.argumentTag = COMPRESSED_MASK_TAG; this.argumentMaskOrTable = smallDescriptor.ArgumentMaskWithFP(); this.calleeSaveValueMask = smallDescriptor.CalleeSaveValueMaskWithFP(); this.calleeSaveMask = smallDescriptor.CalleeSaveMaskWithFP(); this.inBetweenSlotsAbove = smallDescriptor.InBetweenSlotsAboveWithFP(); this.inBetweenSlotsBelow = smallDescriptor.InBetweenSlotsBelowWithFP(); this.frameSize = 0; } } else { this.argumentCount = 0; OverflowFrameDescriptor *overflow = smallDescriptor.OverflowDescriptor(); this.hasTransitionRecord = smallDescriptor.HasTransitionRecord(overflow); if (smallDescriptor.IsFramePointerOmitted(overflow)) { this.isFramePointerOmitted = true; this.argumentTag = smallDescriptor.EntrySizeNoFP(overflow); this.argumentMaskOrTable = (UIntPtr) (&overflow->variableData); this.calleeSaveMask = smallDescriptor.CalleeSaveMaskNoFP(overflow); this.calleeSaveValueMask = smallDescriptor.CalleeSaveValueMaskNoFP(overflow); this.inBetweenSlotsAbove = 0; this.inBetweenSlotsBelow = 0; this.frameSize = smallDescriptor.FrameSizeNoFP(overflow); this.hasPinnedVariables = smallDescriptor.HasPinnedPointersNoFP(overflow); } else { this.isFramePointerOmitted = false; this.argumentTag = smallDescriptor.EntrySizeWithFP(overflow); this.argumentMaskOrTable = (UIntPtr) (&overflow->variableData); this.calleeSaveMask = smallDescriptor.CalleeSaveMaskWithFP(overflow); this.calleeSaveValueMask = smallDescriptor.CalleeSaveValueMaskWithFP(overflow); this.inBetweenSlotsAbove = 0; this.inBetweenSlotsBelow = 0; this.frameSize = 0; this.hasPinnedVariables = smallDescriptor.HasPinnedPointersWithFP(overflow); } } }
internal unsafe bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow) { return(true); }
bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow) { return((overflow->mask & (UIntPtr)Constants.FullOmitFPMask) != 0); }
internal unsafe bool HasTransitionRecord(OverflowFrameDescriptor *overflow) { return(true); }
UIntPtr CalleeSaveMaskNoFP(OverflowFrameDescriptor *overflow) { // Current bridge doesn't support omitting frame pointer. VTable.Assert(false, "Omit FP not supported."); return(this.CalleeSaveMaskNoFP()); }
internal unsafe int FrameSizeNoFP(OverflowFrameDescriptor *overflow) { return(0); }
internal unsafe int FrameSizeNoFP(OverflowFrameDescriptor *overflow) { // Current bridge doesn't support omitting frame pointer. VTable.Assert(false, "Omit FP not supported."); return(unchecked ((int)(overflow->mask >> 4))); }
internal unsafe UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow) { return(UIntPtr.Zero); }
UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow) { return((overflow->mask >> Constants.FullCalleeSaveStartFP) & (UIntPtr)Constants.FullCalleeSaveMaskFP); }
internal unsafe bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow) { return(true); }
internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow) { return(unchecked ((uint)((overflow->mask >> Constants.FullRecordSizePosFP) & (UIntPtr)Constants.FullRecordMask))); }
bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow) { return((overflow->mask & (UIntPtr)0x1) != 0); }