Milky2018/vcode/native_types does not have a README file

    AccessWidth

    pub(all) enum AccessWidth {
    W8
    W16
    W32
    W64
    W128
    } derive(Eq, Hash,
    Debug
    )

    AccessWidth::equal

    fn AccessWidth::equal(AccessWidth, AccessWidth) -> Bool

    AccessWidth::hash

    fn AccessWidth::hash(self : AccessWidth) -> Int

    AccessWidth::hash_combine

    fn AccessWidth::hash_combine(AccessWidth, Hasher) -> Unit

    AccessWidth::not_equal

    fn AccessWidth::not_equal(x : AccessWidth, y : AccessWidth) -> Bool

    CallBehavior

    pub(all) struct CallBehavior {
    memory : MemoryEffect
    may_trap : Bool
    may_unwind : Bool
    gc_safepoint : Bool
    cancellation_safepoint : Bool
    returns_twice : Bool
    } derive(Eq, Hash,
    Debug
    )

    Explicit call behavior. Protocol and callee identity never imply effects.

    CallBehavior::conservative

    fn CallBehavior::conservative() -> CallBehavior

    CallBehavior::equal

    CallBehavior::hash

    fn CallBehavior::hash(self : CallBehavior) -> Int

    CallBehavior::hash_combine

    fn CallBehavior::hash_combine(CallBehavior, Hasher) -> Unit

    CallBehavior::new

    fn CallBehavior::new(memory : MemoryEffect, may_trap : Bool, may_unwind : Bool, gc_safepoint : Bool, cancellation_safepoint : Bool, returns_twice? : Bool) -> CallBehavior

    CallBehavior::not_equal

    fn CallBehavior::not_equal(x : CallBehavior, y : CallBehavior) -> Bool

    CallBehavior::semantics

    CallProtocol

    pub(all) enum CallProtocol {
    Internal
    Platform
    } derive(Eq, Hash,
    Debug
    )

    CallProtocol::equal

    CallProtocol::hash

    fn CallProtocol::hash(self : CallProtocol) -> Int

    CallProtocol::hash_combine

    fn CallProtocol::hash_combine(CallProtocol, Hasher) -> Unit

    CallProtocol::not_equal

    fn CallProtocol::not_equal(x : CallProtocol, y : CallProtocol) -> Bool

    Callee

    pub(all) enum Callee {
    Internal(CodeSymbol)
    External(ExternalSymbol)
    Indirect
    } derive(Eq, Hash,
    Debug
    )

    Native call target selected during streaming lowering.

    Callee::equal

    fn Callee::equal(Callee, Callee) -> Bool

    Callee::hash

    fn Callee::hash(self : Callee) -> Int

    Callee::hash_combine

    fn Callee::hash_combine(Callee, Hasher) -> Unit

    Callee::not_equal

    fn Callee::not_equal(x : Callee, y : Callee) -> Bool

    Callee::to_repr

    CodeSymbol

    pub(all) struct CodeSymbol {
    name : String
    } derive(Eq, Hash,
    Debug
    )

    CodeSymbol::equal

    fn CodeSymbol::equal(CodeSymbol, CodeSymbol) -> Bool

    CodeSymbol::hash

    fn CodeSymbol::hash(self : CodeSymbol) -> Int

    CodeSymbol::hash_combine

    fn CodeSymbol::hash_combine(CodeSymbol, Hasher) -> Unit

    CodeSymbol::new

    fn CodeSymbol::new(name : String) -> CodeSymbol

    CodeSymbol::not_equal

    fn CodeSymbol::not_equal(x : CodeSymbol, y : CodeSymbol) -> Bool

    ConversionMode

    pub(all) enum ConversionMode {
    Trapping
    Saturating
    } derive(Eq, Hash,
    Debug
    )

    ConversionMode::equal

    ConversionMode::hash

    fn ConversionMode::hash(self : ConversionMode) -> Int

    ConversionMode::hash_combine

    fn ConversionMode::hash_combine(ConversionMode, Hasher) -> Unit

    ConversionMode::not_equal

    fn ConversionMode::not_equal(x : ConversionMode, y : ConversionMode) -> Bool

    DataSymbol

    pub(all) struct DataSymbol {
    name : String
    } derive(Eq, Hash,
    Debug
    )

    DataSymbol::equal

    fn DataSymbol::equal(DataSymbol, DataSymbol) -> Bool

    DataSymbol::hash

    fn DataSymbol::hash(self : DataSymbol) -> Int

    DataSymbol::hash_combine

    fn DataSymbol::hash_combine(DataSymbol, Hasher) -> Unit

    DataSymbol::new

    fn DataSymbol::new(name : String) -> DataSymbol

    DataSymbol::not_equal

    fn DataSymbol::not_equal(x : DataSymbol, y : DataSymbol) -> Bool

    Endianness

    pub(all) enum Endianness {
    Little
    Big
    } derive(Eq, Hash,
    Debug
    )

    Endianness::equal

    fn Endianness::equal(Endianness, Endianness) -> Bool

    Endianness::hash

    fn Endianness::hash(self : Endianness) -> Int

    Endianness::hash_combine

    fn Endianness::hash_combine(Endianness, Hasher) -> Unit

    Endianness::not_equal

    fn Endianness::not_equal(x : Endianness, y : Endianness) -> Bool

    EnvironmentField

    pub(all) struct EnvironmentField {
    name : String
    value_type : ValueType
    } derive(Eq, Hash,
    Debug
    )

    Opaque embedding-context field identity with its semantic value type.

    The identity carries no byte offset or target addressing mode. The embedding target environment resolves it during target lowering.

    EnvironmentField::equal

    EnvironmentField::hash

    fn EnvironmentField::hash(self : EnvironmentField) -> Int

    EnvironmentField::hash_combine

    fn EnvironmentField::hash_combine(EnvironmentField, Hasher) -> Unit

    EnvironmentField::new

    fn EnvironmentField::new(name : String, value_type : ValueType) -> EnvironmentField

    EnvironmentField::not_equal

    fn EnvironmentField::not_equal(x : EnvironmentField, y : EnvironmentField) -> Bool

    EnvironmentFieldStability

    pub(all) enum EnvironmentFieldStability {
    Stable
    Mutable
    } derive(Eq, Hash,
    Debug
    )

    Whether an embedding context field may be reused during one function invocation.

    Stable grants reuse permission for the invocation. Mutable requires each operation to observe the current field value. Target lowering may rematerialize either form.

    EnvironmentFieldStability::equal

    EnvironmentFieldStability::hash

    EnvironmentFieldStability::hash_combine

    EnvironmentFieldStability::not_equal

    ExternalSymbol

    pub(all) struct ExternalSymbol {
    name : String
    } derive(Eq, Hash,
    Debug
    )

    ExternalSymbol::equal

    ExternalSymbol::hash

    fn ExternalSymbol::hash(self : ExternalSymbol) -> Int

    ExternalSymbol::hash_combine

    fn ExternalSymbol::hash_combine(ExternalSymbol, Hasher) -> Unit

    ExternalSymbol::new

    fn ExternalSymbol::new(name : String) -> ExternalSymbol

    ExternalSymbol::not_equal

    fn ExternalSymbol::not_equal(x : ExternalSymbol, y : ExternalSymbol) -> Bool

    FloatType

    pub(all) enum FloatType {
    F32
    F64
    } derive(Eq, Hash,
    Debug
    )

    FloatType::equal

    fn FloatType::equal(FloatType, FloatType) -> Bool

    FloatType::hash

    fn FloatType::hash(self : FloatType) -> Int

    FloatType::hash_combine

    fn FloatType::hash_combine(FloatType, Hasher) -> Unit

    FloatType::not_equal

    fn FloatType::not_equal(x : FloatType, y : FloatType) -> Bool

    IntegerType

    pub(all) enum IntegerType {
    I32
    I64
    } derive(Eq, Hash,
    Debug
    )

    IntegerType::equal

    fn IntegerType::equal(IntegerType, IntegerType) -> Bool

    IntegerType::hash

    fn IntegerType::hash(self : IntegerType) -> Int

    IntegerType::hash_combine

    fn IntegerType::hash_combine(IntegerType, Hasher) -> Unit

    IntegerType::not_equal

    fn IntegerType::not_equal(x : IntegerType, y : IntegerType) -> Bool

    LoadExtension

    pub(all) enum LoadExtension {
    None
    Signed
    Unsigned
    } derive(Eq, Hash,
    Debug
    )

    LoadExtension::equal

    LoadExtension::hash

    fn LoadExtension::hash(self : LoadExtension) -> Int

    LoadExtension::hash_combine

    fn LoadExtension::hash_combine(LoadExtension, Hasher) -> Unit

    LoadExtension::not_equal

    fn LoadExtension::not_equal(x : LoadExtension, y : LoadExtension) -> Bool

    MemoryEffect

    pub(all) enum MemoryEffect {
    None
    Read
    Write
    ReadWrite
    } derive(Eq, Hash,
    Debug
    )

    MemoryEffect::equal

    MemoryEffect::hash

    fn MemoryEffect::hash(self : MemoryEffect) -> Int

    MemoryEffect::hash_combine

    fn MemoryEffect::hash_combine(MemoryEffect, Hasher) -> Unit

    MemoryEffect::not_equal

    fn MemoryEffect::not_equal(x : MemoryEffect, y : MemoryEffect) -> Bool

    NativeCall

    pub(all) struct NativeCall {
    callee : Callee
    signature : Signature
    protocol : CallProtocol
    behavior : CallBehavior
    } derive(Eq, Hash,
    Debug
    )

    Target-independent native call contract. This is ABI metadata, not an instruction or an intermediate representation node.

    NativeCall::copy

    fn NativeCall::copy(self : NativeCall) -> NativeCall

    NativeCall::equal

    fn NativeCall::equal(NativeCall, NativeCall) -> Bool

    NativeCall::hash

    fn NativeCall::hash(self : NativeCall) -> Int

    NativeCall::hash_combine

    fn NativeCall::hash_combine(NativeCall, Hasher) -> Unit

    NativeCall::new

    fn NativeCall::new(callee : Callee, signature : Signature, protocol : CallProtocol, behavior : CallBehavior) -> NativeCall

    NativeCall::not_equal

    fn NativeCall::not_equal(x : NativeCall, y : NativeCall) -> Bool

    OperationSemantics

    pub(all) struct OperationSemantics {
    memory : MemoryEffect
    may_trap : Bool
    may_unwind : Bool
    gc_safepoint : Bool
    cancellation_safepoint : Bool
    returns_twice : Bool
    } derive(Eq, Hash,
    Debug
    )

    Canonical observable behavior of one semantic operation.

    OperationSemantics::equal

    OperationSemantics::hash

    fn OperationSemantics::hash(self : OperationSemantics) -> Int

    OperationSemantics::hash_combine

    fn OperationSemantics::hash_combine(OperationSemantics, Hasher) -> Unit

    OperationSemantics::must_preserve_if_unused

    fn OperationSemantics::must_preserve_if_unused(self : OperationSemantics) -> Bool

    OperationSemantics::not_equal

    OperationSemantics::pure

    SafepointKind

    pub(all) enum SafepointKind {
    Gc
    Cancellation
    GcAndCancellation
    } derive(Eq, Hash,
    Debug
    )

    SafepointKind::equal

    SafepointKind::hash

    fn SafepointKind::hash(self : SafepointKind) -> Int

    SafepointKind::hash_combine

    fn SafepointKind::hash_combine(SafepointKind, Hasher) -> Unit

    SafepointKind::not_equal

    fn SafepointKind::not_equal(x : SafepointKind, y : SafepointKind) -> Bool

    Signature

    pub(all) struct Signature {
    params : Array[ValueType]
    results : Array[ValueType]
    } derive(Eq, Hash,
    Debug
    )

    Ordered logical parameters and results. ABI placement is intentionally absent.

    Signature::equal

    fn Signature::equal(Signature, Signature) -> Bool

    Signature::hash

    fn Signature::hash(self : Signature) -> Int

    Signature::hash_combine

    fn Signature::hash_combine(Signature, Hasher) -> Unit

    Signature::new

    fn Signature::new(params : Array[ValueType], results : Array[ValueType]) -> Signature

    Signature::not_equal

    fn Signature::not_equal(x : Signature, y : Signature) -> Bool

    Signedness

    pub(all) enum Signedness {
    Signed
    Unsigned
    } derive(Eq, Hash,
    Debug
    )

    Signedness::equal

    fn Signedness::equal(Signedness, Signedness) -> Bool

    Signedness::hash

    fn Signedness::hash(self : Signedness) -> Int

    Signedness::hash_combine

    fn Signedness::hash_combine(Signedness, Hasher) -> Unit

    Signedness::not_equal

    fn Signedness::not_equal(x : Signedness, y : Signedness) -> Bool

    SourceLocation

    pub(all) struct SourceLocation {
    file : String
    line : Int
    column : Int
    } derive(Eq, Hash,
    Debug
    )

    SourceLocation::equal

    SourceLocation::hash

    fn SourceLocation::hash(self : SourceLocation) -> Int

    SourceLocation::hash_combine

    fn SourceLocation::hash_combine(SourceLocation, Hasher) -> Unit

    SourceLocation::is_valid

    fn SourceLocation::is_valid(self : SourceLocation) -> Bool

    SourceLocation::new

    fn SourceLocation::new(file : String, line : Int, column : Int) -> SourceLocation

    SourceLocation::not_equal

    fn SourceLocation::not_equal(x : SourceLocation, y : SourceLocation) -> Bool

    StackMapMetadata

    pub(all) struct StackMapMetadata {
    id : Int
    argument_root_count : Int
    } derive(Eq,
    Debug
    )

    Embedding-visible stack-map identity and argument-root contract.

    StackMapMetadata::equal

    StackMapMetadata::new

    fn StackMapMetadata::new(id : Int, argument_root_count~ : Int) -> StackMapMetadata

    StackMapMetadata::not_equal

    fn StackMapMetadata::not_equal(x : StackMapMetadata, y : StackMapMetadata) -> Bool

    StackObject

    pub(all) struct StackObject {
    id : Int
    } derive(Eq, Hash,
    Debug
    )

    Function-local stack-object request used during native lowering. The id is interpreted only by the current target-lowering session.

    StackObject::equal

    fn StackObject::equal(StackObject, StackObject) -> Bool

    StackObject::hash

    fn StackObject::hash(self : StackObject) -> Int

    StackObject::hash_combine

    fn StackObject::hash_combine(StackObject, Hasher) -> Unit

    StackObject::not_equal

    fn StackObject::not_equal(x : StackObject, y : StackObject) -> Bool

    TrapReason

    pub(all) enum TrapReason {
    Unreachable
    IntegerDivisionByZero
    IntegerOverflow
    InvalidConversionToInteger
    MemoryOutOfBounds
    TableOutOfBounds
    IndirectCallTypeMismatch
    NullReference
    UnalignedAtomic
    UnsupportedOperation
    StackOverflow
    User(Int)
    } derive(Eq, Hash,
    Debug
    )

    TrapReason::equal

    fn TrapReason::equal(TrapReason, TrapReason) -> Bool

    TrapReason::hash

    fn TrapReason::hash(self : TrapReason) -> Int

    TrapReason::hash_combine

    fn TrapReason::hash_combine(TrapReason, Hasher) -> Unit

    TrapReason::not_equal

    fn TrapReason::not_equal(x : TrapReason, y : TrapReason) -> Bool

    ValueType

    pub(all) enum ValueType {
    I32
    I64
    F32
    F64
    V128
    Ptr64
    GcRef64
    } derive(Eq, Hash,
    Debug
    )

    Exact target-neutral value types shared by native lowering and target VCode.

    Ptr64 is an untraced address or opaque handle. GcRef64 is a nullable managed reference and must be reported as a root at GC safepoints.
    impl Show for ValueType

    ValueType::equal

    fn ValueType::equal(ValueType, ValueType) -> Bool

    ValueType::hash

    fn ValueType::hash(self : ValueType) -> Int

    ValueType::hash_combine

    fn ValueType::hash_combine(ValueType, Hasher) -> Unit

    ValueType::not_equal

    fn ValueType::not_equal(x : ValueType, y : ValueType) -> Bool

    ValueType::output

    fn ValueType::output(self : ValueType, logger : &Logger) -> Unit

    ValueType::to_string

    fn ValueType::to_string(self : ValueType) -> String