Class ClosedMetadataFormat
A VTable-based metadata format based on the closed-world assumption, that is, the set of all members is known at compile time and will not change.
Inherited Members
Namespace: Flame.Llvm
Assembly: Flame.Llvm.dll
Syntax
public sealed class ClosedMetadataFormat : MetadataFormat
Constructors
| Improve this Doc View SourceClosedMetadataFormat(IEnumerable<IType>, IEnumerable<ITypeMember>)
Creates a metadata format description.
Declaration
public ClosedMetadataFormat(IEnumerable<IType> types, IEnumerable<ITypeMember> typeMembers)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<IType> | types | All types that are to be included in the metadata. |
System.Collections.Generic.IEnumerable<ITypeMember> | typeMembers | All type members that are to be included in the metadata. |
Properties
| Improve this Doc View SourceTypesWithMetadata
Gets a sequence containing all types that have metadata emitted into the module.
Declaration
public override IEnumerable<IType> TypesWithMetadata { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<IType> | A sequence of types. |
Overrides
Methods
| Improve this Doc View SourceEmitIsSubtype(LLVMValueRef, IType, ModuleBuilder, IRBuilder, String)
Emits LLVM IR instructions that test if the type corresponding to a type metadata handle is a subtype of another type.
Declaration
public override LLVMValueRef EmitIsSubtype(LLVMValueRef subtypeMetadata, IType supertype, ModuleBuilder module, IRBuilder builder, string name)
Parameters
Type | Name | Description |
---|---|---|
LLVMSharp.LLVMValueRef | subtypeMetadata | A type metadata handle of a potential subtype. |
IType | supertype | A potential supertype. |
ModuleBuilder | module | The LLVM module to generate the instructions in. |
LLVMSharp.IRBuilder | builder | An instruction builder to use for emitting instructions. |
System.String | name | A suggested name for the resulting Boolean value. |
Returns
Type | Description |
---|---|
LLVMSharp.LLVMValueRef | A Boolean value that is |
Overrides
| Improve this Doc View SourceEmitMethodAddress(IMethod, LLVMValueRef, ModuleBuilder, IRBuilder, String)
Builds LLVM IR instructions that perform a virtual method lookup: loads the address of the implementation of a virtual method given a type metadata pointer for the 'this' type.
Declaration
public override LLVMValueRef EmitMethodAddress(IMethod callee, LLVMValueRef metadataPointer, ModuleBuilder module, IRBuilder builder, string name)
Parameters
Type | Name | Description |
---|---|---|
IMethod | callee | A virtual method to find an implementation for. |
LLVMSharp.LLVMValueRef | metadataPointer | |
ModuleBuilder | module | The LLVM module to generate the instructions in. |
LLVMSharp.IRBuilder | builder | An instruction builder to use for emitting instructions. |
System.String | name | A suggested name for the value that refers to the method implementation address. |
Returns
Type | Description |
---|---|
LLVMSharp.LLVMValueRef | A pointer to a method implementation. |
Overrides
| Improve this Doc View SourceGetMetadata(IType, ModuleBuilder)
Builds LLVM IR instructions that get a handle to the metadata for a particular type.
Declaration
public override LLVMValueRef GetMetadata(IType type, ModuleBuilder module)
Parameters
Type | Name | Description |
---|---|---|
IType | type | The type whose metadata is to be inspected. |
ModuleBuilder | module | The LLVM module to generate the metadata in. |
Returns
Type | Description |
---|---|
LLVMSharp.LLVMValueRef | A metadata pointer. |
Overrides
| Improve this Doc View SourceGetMetadataType(ModuleBuilder)
Gets the type of a type metadata handle.
Declaration
public override LLVMTypeRef GetMetadataType(ModuleBuilder module)
Parameters
Type | Name | Description |
---|---|---|
ModuleBuilder | module | A module. |
Returns
Type | Description |
---|---|
LLVMSharp.LLVMTypeRef | The type of a type metadata handle. |