-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
The runtime uses Vptrs to differentiate types of Frames. This is trivial to get at runtime, but awkward to fetch at compile time. In order to differentiate these in the cDAC, we need to pass the Vptr for each type of Frame through the datadescriptors. To not introduce runtime overhead, these must be a compile time constant. Therefore, we can convert the frames to use an enum with values known at compile time.
Many parts of the runtime rely on the exact sizing on the Frame objects. We will effectively replace the the Vptr with a pointer sized enum which should be a transparent change to all users.
Existing Virtual Methods
- dtor
- GcScanRoots
- EnumMemoryRegions
- GetFrameType
- GetFrameAttribs
- ExceptionUnwind
- NeedsUpdateRegDisplay
- IsTransitionToNativeFrame
- GetFunction
- GetAssembly
- GetIp
- GetReturnAddressPtr
- GetReturnAddress
- GetReturnExecutionContextAddr
- UpdateRegDisplay
- GetTransitionType
- GetInterception
- GetUnmanagedCallSite
- TraceFrame
- Protects
- GetFrameTypeName
- GetAddrOfSecurityDesc
- GetTransitionBlock
- SuppressParamTypeArg