Skip to content

Covert Frames to use an Enum intead of vptr #111875

@max-charlamb

Description

@max-charlamb

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions