singrdk/base/Interfaces/Bartok/StackHeight.csi

65 lines
2.4 KiB
Plaintext
Raw Normal View History

2008-03-05 09:52:00 -05:00
//
2008-11-17 18:29:00 -05:00
// Copyright (c) Microsoft Corporation. All rights reserved.
2008-03-05 09:52:00 -05:00
//
using System.GCs;
using System.Runtime.CompilerServices;
2008-11-17 18:29:00 -05:00
namespace System
{
2008-03-05 09:52:00 -05:00
/// <summary>
/// Abstraction for information about the stack height. This is currently
/// only used by the logging undo code for determining if a pointer write
/// occurred in stack space allocated after the tryall section began.
///
/// StackHeight does not record information about the call stack.
///
/// The current implementation is hardwired to a stack model where the stack
/// is a single contiguous piece of memory that grows by putting smaller
/// values into the stack pointer.
/// </summary>
[RequiredByBartok]
public struct StackHeight {
/// <summary>
/// Interpret the pointer as a stack pointer to determine the stack
/// height.
/// </summary>
/// <param name="stackPointer">Pointer into the stack.</param>
/// <returns>The stack height of the location pointed to by the
/// argument.</returns>
public StackHeight(UIntPtr stackPointer);
/// <summary>
/// Interpret the pointer as a stack pointer to determine the stack
/// height.
/// </summary>
/// <param name="stackPointer">Pointer into the stack.</param>
/// <returns>The stack height of the location pointed to by the
/// argument.</returns>
public static explicit operator StackHeight(UIntPtr stackPointer);
/// <summary>
/// Get the current stack height.
/// </summary>
/// <returns>The current stack height.</returns>
//[Intrinsic]
// [MethodImplAttribute(MethodImplOptions.PublicCall)]
public static StackHeight GetStackHeight();
/// <summary>
/// Check if the first stack height represents a deeper location on the
/// stack.
/// </summary>
/// <param name="first">The first stack height to compare.</param>
/// <param name="second">The second stack height to compare.</param>
/// <returns>True iff the first height is deeper in the stack than the
/// second height.</returns>
public static bool Deeper(StackHeight first, StackHeight second);
/// <summary>
/// The value of the stack pointer when the stack height was taken.
/// </summary>
private UIntPtr stackPointer;
}
}