コード例 #1
0
 internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow)
 {
     return(0);
 }
コード例 #2
0
 internal unsafe void ExpandDescriptor(OverflowFrameDescriptor *overflow, ref FrameDescriptor res)
 {
 }
コード例 #3
0
 bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow)
 {
     return(((overflow->mask >> Constants.FullPinnedPosFP) & (UIntPtr)0x1) != 0);
 }
コード例 #4
0
 bool HasTransitionRecord(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask & (UIntPtr)0x2) != 0);
 }
コード例 #5
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);
 }
コード例 #6
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)));
 }
コード例 #7
0
 internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow)
 {
     return(unchecked ((uint)((overflow->mask >> 23) & (UIntPtr)0x7)));
 }
コード例 #8
0
 bool HasTransitionRecord(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask & (UIntPtr)Constants.FullTransitionRecordMask) != 0);
 }
コード例 #9
0
 UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask >> 2) & (UIntPtr)0x7f);
 }
コード例 #10
0
 bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask & (UIntPtr)0x08000000) != 0);
 }
コード例 #11
0
 UIntPtr CalleeSaveValueMaskWithFP(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask >> 9) & (UIntPtr)0x3fff);
 }
コード例 #12
0
 internal unsafe int FrameSizeNoFP(OverflowFrameDescriptor *overflow)
 {
     return(unchecked ((int)(overflow->mask >> 38)));
 }
コード例 #13
0
 UIntPtr CalleeSaveValueMaskNoFP(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask >> 10) & (UIntPtr)0xffff);
 }
コード例 #14
0
 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);
         }
     }
 }
コード例 #15
0
 internal unsafe bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow)
 {
     return(true);
 }
コード例 #16
0
 bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask & (UIntPtr)Constants.FullOmitFPMask) != 0);
 }
コード例 #17
0
 internal unsafe bool HasTransitionRecord(OverflowFrameDescriptor *overflow)
 {
     return(true);
 }
コード例 #18
0
 UIntPtr CalleeSaveMaskNoFP(OverflowFrameDescriptor *overflow)
 {
     // Current bridge doesn't support omitting frame pointer.
     VTable.Assert(false, "Omit FP not supported.");
     return(this.CalleeSaveMaskNoFP());
 }
コード例 #19
0
 internal unsafe int FrameSizeNoFP(OverflowFrameDescriptor *overflow)
 {
     return(0);
 }
コード例 #20
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)));
 }
コード例 #21
0
 internal unsafe UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow)
 {
     return(UIntPtr.Zero);
 }
コード例 #22
0
 UIntPtr CalleeSaveMaskWithFP(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask >> Constants.FullCalleeSaveStartFP) & (UIntPtr)Constants.FullCalleeSaveMaskFP);
 }
コード例 #23
0
 internal unsafe bool HasPinnedPointersWithFP(OverflowFrameDescriptor *overflow)
 {
     return(true);
 }
コード例 #24
0
 internal unsafe uint EntrySizeWithFP(OverflowFrameDescriptor *overflow)
 {
     return(unchecked ((uint)((overflow->mask >> Constants.FullRecordSizePosFP) & (UIntPtr)Constants.FullRecordMask)));
 }
コード例 #25
0
 bool IsFramePointerOmitted(OverflowFrameDescriptor *overflow)
 {
     return((overflow->mask & (UIntPtr)0x1) != 0);
 }