Sign in

    jtenner/starshine/representation does not have a README file

    AccessFacts

    pub struct AccessFacts {
    in_bounds : Bool
    alignment_log2 : UInt?
    } derive(Eq, Hash,
    Debug
    )

    AccessFacts::new

    fn AccessFacts::new(in_bounds? : Bool, alignment_log2? : UInt?) -> AccessFacts

    AccessSiteFacts

    pub struct AccessSiteFacts {
    site : CodeSite
    facts : AccessFacts
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    AccessSiteFacts::new

    fn AccessSiteFacts::new(site : CodeSite, facts : AccessFacts, provenance? : SourceProvenance?) -> AccessSiteFacts

    AliasSource

    pub enum AliasSource {
    ParameterAlias(UInt)
    GlobalAlias(UInt)
    SiteAlias(ValueSite)
    } derive(Eq, Hash,
    Debug
    )

    AliasSource::global

    fn AliasSource::global(global : UInt) -> AliasSource

    AliasSource::parameter

    fn AliasSource::parameter(parameter : UInt) -> AliasSource

    AliasSource::site

    fn AliasSource::site(site : ValueSite) -> AliasSource

    AllocationFacts

    pub struct AllocationFacts {
    kind : AllocationKind
    escape_sinks : EscapeSinkMask?
    identity_unobserved : Bool
    thread_confined : Bool
    length : IntegerFacts?
    fields : Array[AllocationFieldFacts]
    } derive(Eq, Hash,
    Debug
    )

    AllocationFacts::new

    fn AllocationFacts::new(kind : AllocationKind, escape_sinks? : EscapeSinkMask?, identity_unobserved? : Bool, thread_confined? : Bool, length? : IntegerFacts?, fields? : Array[AllocationFieldFacts]) -> AllocationFacts

    AllocationFieldFacts

    pub struct AllocationFieldFacts {
    field : UInt
    no_post_init_writes : Bool
    stored_value : ValueFacts?
    } derive(Eq, Hash,
    Debug
    )

    AllocationFieldFacts::new

    fn AllocationFieldFacts::new(field : UInt, no_post_init_writes? : Bool, stored_value? : ValueFacts?) -> AllocationFieldFacts

    AllocationKind

    pub enum AllocationKind {
    StructAllocation(UInt)
    ArrayAllocation(UInt)
    ClosureAllocation(UInt)
    BoxAllocation(UInt)
    OtherGcAllocation(UInt)
    } derive(Eq, Hash,
    Debug
    )

    AllocationKind::array

    fn AllocationKind::array(type_ : UInt) -> AllocationKind

    AllocationKind::box

    fn AllocationKind::box(type_ : UInt) -> AllocationKind

    AllocationKind::closure

    fn AllocationKind::closure(type_ : UInt) -> AllocationKind

    AllocationKind::other_gc

    fn AllocationKind::other_gc(type_ : UInt) -> AllocationKind

    AllocationKind::struct_

    fn AllocationKind::struct_(type_ : UInt) -> AllocationKind

    AllocationSiteFacts

    pub struct AllocationSiteFacts {
    site : ValueSite
    facts : AllocationFacts
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    AllocationSiteFacts::new

    ArrayElementFacts

    pub struct ArrayElementFacts {
    view : TypeView
    stored_contents : ValueFacts?
    writes : WriteFacts?
    } derive(Eq, Hash,
    Debug
    )

    ArrayElementFacts::new

    fn ArrayElementFacts::new(view : TypeView, stored_contents? : ValueFacts?, writes? : WriteFacts?) -> ArrayElementFacts

    BranchFacts

    pub struct BranchFacts {
    site : CodeSite
    profile : BranchProfile?
    temperature : TemperatureHint?
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    BranchFacts::new

    fn BranchFacts::new(site : CodeSite, profile? : BranchProfile?, temperature? : TemperatureHint?, provenance? : SourceProvenance?) -> BranchFacts

    BranchProfile

    pub struct BranchProfile {
    taken : UInt64
    not_taken : UInt64
    } derive(Eq, Hash,
    Debug
    )

    BranchProfile::new

    fn BranchProfile::new(taken : UInt64, not_taken : UInt64) -> BranchProfile

    CallProfile

    pub struct CallProfile {
    count : UInt64?
    temperature : TemperatureHint?
    } derive(Eq, Hash,
    Debug
    )

    CallProfile::new

    fn CallProfile::new(count? : UInt64?, temperature? : TemperatureHint?) -> CallProfile

    CallSiteFacts

    pub struct CallSiteFacts {
    site : CodeSite
    direct_target : UInt?
    profile : CallProfile?
    inline_policy : InlinePolicy?
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    CallSiteFacts::new

    fn CallSiteFacts::new(site : CodeSite, direct_target? : UInt?, profile? : CallProfile?, inline_policy? : InlinePolicy?, provenance? : SourceProvenance?) -> CallSiteFacts

    ClosedAliasSet

    pub struct ClosedAliasSet(Array[AliasSource]) derive(Eq, Hash,
    Debug
    )

    ClosedAliasSet::new

    ClosedFunctionSet

    pub struct ClosedFunctionSet(Array[UInt]) derive(Eq, Hash,
    Debug
    )

    ClosedFunctionSet::new

    fn ClosedFunctionSet::new(values : Array[UInt]) -> ClosedFunctionSet

    ClosedGlobalSet

    pub struct ClosedGlobalSet(Array[UInt]) derive(Eq, Hash,
    Debug
    )

    ClosedGlobalSet::new

    fn ClosedGlobalSet::new(values : Array[UInt]) -> ClosedGlobalSet

    ClosedHeapTypeSet

    pub struct ClosedHeapTypeSet(Array[FactHeapType]) derive(Eq, Hash,
    Debug
    )

    ClosedHeapTypeSet::new

    ClosedMemorySet

    pub struct ClosedMemorySet(Array[UInt]) derive(Eq, Hash,
    Debug
    )

    ClosedMemorySet::new

    fn ClosedMemorySet::new(values : Array[UInt]) -> ClosedMemorySet

    ClosedTableSet

    pub struct ClosedTableSet(Array[UInt]) derive(Eq, Hash,
    Debug
    )

    ClosedTableSet::new

    fn ClosedTableSet::new(values : Array[UInt]) -> ClosedTableSet

    ClosedTypeViewSet

    pub struct ClosedTypeViewSet(Array[UInt]) derive(Eq, Hash,
    Debug
    )

    ClosedTypeViewSet::new

    fn ClosedTypeViewSet::new(values : Array[UInt]) -> ClosedTypeViewSet

    ClosedValueSet

    pub struct ClosedValueSet(Array[FactValue]) derive(Eq, Hash,
    Debug
    )

    Some(empty) means impossible; None means unknown.

    ClosedValueSet::new

    CodeSite

    pub struct CodeSite {
    function : UInt
    offset : UInt
    } derive(Eq, Hash,
    Debug
    )

    CodeSite::new

    fn CodeSite::new(function : UInt, offset : UInt) -> CodeSite

    CompilerFactCustomSection

    pub struct CompilerFactCustomSection {
    version : UInt
    module_fingerprint : Bytes?
    facts : OptimizationFactsSec
    } derive(Eq, Hash,
    Debug
    )

    chooses to trust semantic assertions after structural validation.

    CompilerFactCustomSection::new

    fn CompilerFactCustomSection::new(facts : OptimizationFactsSec, version? : UInt, module_fingerprint? : Bytes?) -> CompilerFactCustomSection

    EffectFacts

    pub struct EffectFacts {
    may : EffectMask
    read_globals : ClosedGlobalSet?
    written_globals : ClosedGlobalSet?
    read_memories : ClosedMemorySet?
    written_memories : ClosedMemorySet?
    read_tables : ClosedTableSet?
    written_tables : ClosedTableSet?
    read_heap_types : ClosedTypeViewSet?
    written_heap_types : ClosedTypeViewSet?
    direct_callees : ClosedFunctionSet?
    } derive(Eq, Hash,
    Debug
    )

    EffectFacts::new

    fn EffectFacts::new(may : EffectMask, read_globals? : ClosedGlobalSet?, written_globals? : ClosedGlobalSet?, read_memories? : ClosedMemorySet?, written_memories? : ClosedMemorySet?, read_tables? : ClosedTableSet?, written_tables? : ClosedTableSet?, read_heap_types? : ClosedTypeViewSet?, written_heap_types? : ClosedTypeViewSet?, direct_callees? : ClosedFunctionSet?) -> EffectFacts

    EffectMask

    pub struct EffectMask(UInt64) derive(Eq, Hash,
    Debug
    )

    when present; an absent set means unknown, never empty.

    EffectMask::allocation

    fn EffectMask::allocation() -> EffectMask

    EffectMask::bits

    fn EffectMask::bits(self : EffectMask) -> UInt64

    EffectMask::call

    fn EffectMask::call() -> EffectMask

    EffectMask::contains

    fn EffectMask::contains(self : EffectMask, other : EffectMask) -> Bool

    EffectMask::control

    fn EffectMask::control() -> EffectMask

    EffectMask::empty

    fn EffectMask::empty() -> EffectMask

    EffectMask::from_bits

    fn EffectMask::from_bits(bits : UInt64) -> EffectMask

    EffectMask::global_state

    fn EffectMask::global_state() -> EffectMask

    EffectMask::heap_read

    fn EffectMask::heap_read() -> EffectMask

    EffectMask::heap_write

    fn EffectMask::heap_write() -> EffectMask

    EffectMask::local_state

    fn EffectMask::local_state() -> EffectMask

    EffectMask::may_allocate_gc

    fn EffectMask::may_allocate_gc() -> EffectMask

    EffectMask::may_call_host_code

    fn EffectMask::may_call_host_code() -> EffectMask

    EffectMask::may_call_unknown_code

    fn EffectMask::may_call_unknown_code() -> EffectMask

    EffectMask::may_diverge

    fn EffectMask::may_diverge() -> EffectMask

    EffectMask::may_grow_memory

    fn EffectMask::may_grow_memory() -> EffectMask

    EffectMask::may_grow_table

    fn EffectMask::may_grow_table() -> EffectMask

    EffectMask::may_observe_reference_identity

    fn EffectMask::may_observe_reference_identity() -> EffectMask

    EffectMask::may_produce_nondeterministic_results

    fn EffectMask::may_produce_nondeterministic_results() -> EffectMask

    EffectMask::may_read_gc_heap

    fn EffectMask::may_read_gc_heap() -> EffectMask

    EffectMask::may_read_global

    fn EffectMask::may_read_global() -> EffectMask

    EffectMask::may_read_memory

    fn EffectMask::may_read_memory() -> EffectMask

    EffectMask::may_read_table

    fn EffectMask::may_read_table() -> EffectMask

    EffectMask::may_reenter

    fn EffectMask::may_reenter() -> EffectMask

    EffectMask::may_suspend

    fn EffectMask::may_suspend() -> EffectMask

    EffectMask::may_synchronize

    fn EffectMask::may_synchronize() -> EffectMask

    EffectMask::may_throw

    fn EffectMask::may_throw() -> EffectMask

    EffectMask::may_trap

    fn EffectMask::may_trap() -> EffectMask

    EffectMask::may_wait_or_notify

    fn EffectMask::may_wait_or_notify() -> EffectMask

    EffectMask::may_write_gc_heap

    fn EffectMask::may_write_gc_heap() -> EffectMask

    EffectMask::may_write_global

    fn EffectMask::may_write_global() -> EffectMask

    EffectMask::may_write_memory

    fn EffectMask::may_write_memory() -> EffectMask

    EffectMask::may_write_table

    fn EffectMask::may_write_table() -> EffectMask

    EffectMask::memory_read

    fn EffectMask::memory_read() -> EffectMask

    EffectMask::memory_write

    fn EffectMask::memory_write() -> EffectMask

    EffectMask::table_read

    fn EffectMask::table_read() -> EffectMask

    EffectMask::table_write

    fn EffectMask::table_write() -> EffectMask

    EffectMask::throw_

    fn EffectMask::throw_() -> EffectMask

    EffectMask::trap

    fn EffectMask::trap() -> EffectMask

    Compatibility conveniences for the pre-freeze API.

    EffectMask::union

    fn EffectMask::union(self : EffectMask, other : EffectMask) -> EffectMask

    EscapeSinkMask

    pub struct EscapeSinkMask(UInt64) derive(Eq, Hash,
    Debug
    )

    EscapeSinkMask::all_known

    fn EscapeSinkMask::all_known() -> EscapeSinkMask

    EscapeSinkMask::bits

    fn EscapeSinkMask::bits(self : EscapeSinkMask) -> UInt64

    EscapeSinkMask::call

    EscapeSinkMask::contains

    fn EscapeSinkMask::contains(self : EscapeSinkMask, other : EscapeSinkMask) -> Bool

    EscapeSinkMask::empty

    EscapeSinkMask::from_bits

    fn EscapeSinkMask::from_bits(bits : UInt64) -> EscapeSinkMask

    EscapeSinkMask::global

    EscapeSinkMask::heap

    EscapeSinkMask::host_unknown

    fn EscapeSinkMask::host_unknown() -> EscapeSinkMask

    EscapeSinkMask::memory

    EscapeSinkMask::return_

    EscapeSinkMask::table

    EscapeSinkMask::throw_

    EscapeSinkMask::union

    ExpressionFact

    pub struct ExpressionFact {
    value : ValueSite
    facts : ValueFacts
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    ExpressionFact::new

    fn ExpressionFact::new(value : ValueSite, facts : ValueFacts, provenance? : SourceProvenance?) -> ExpressionFact

    FactHeapType

    pub enum FactHeapType {
    TypeIndex(UInt)
    Any
    Eq
    Struct
    Array
    I31
    Func
    Extern
    Exn
    Cont
    String
    None
    NoFunc
    NoExtern
    NoExn
    NoCont
    } derive(Eq, Hash,
    Debug
    )

    FactHeapType::any

    FactHeapType::array

    fn FactHeapType::array() -> FactHeapType

    FactHeapType::cont

    FactHeapType::eq

    FactHeapType::exn

    FactHeapType::extern_

    fn FactHeapType::extern_() -> FactHeapType

    FactHeapType::func

    FactHeapType::i31

    FactHeapType::no_cont

    fn FactHeapType::no_cont() -> FactHeapType

    FactHeapType::no_exn

    fn FactHeapType::no_exn() -> FactHeapType

    FactHeapType::no_extern

    fn FactHeapType::no_extern() -> FactHeapType

    FactHeapType::no_func

    fn FactHeapType::no_func() -> FactHeapType

    FactHeapType::none

    FactHeapType::string

    fn FactHeapType::string() -> FactHeapType

    FactHeapType::struct_

    fn FactHeapType::struct_() -> FactHeapType

    FactHeapType::type_index

    fn FactHeapType::type_index(index : UInt) -> FactHeapType

    FactOperand

    pub enum FactOperand {
    ValueOperand(ValueRef)
    ConstantOperand(FactValue)
    } derive(Eq, Hash,
    Debug
    )

    FactOperand::constant

    fn FactOperand::constant(value : FactValue) -> FactOperand

    FactOperand::value

    fn FactOperand::value(value : ValueRef) -> FactOperand

    FactValue

    pub enum FactValue {
    IntegerValue(IntConstant)
    F32Bits(UInt)
    F64Bits(UInt64)
    V128Value(V128Bits)
    RefNullValue(FactHeapType)
    RefFuncValue(UInt)
    ImmutableGlobalValue(UInt)
    } derive(Eq, Hash,
    Debug
    )

    FactValue::f32_bits

    fn FactValue::f32_bits(bits : UInt) -> FactValue

    FactValue::f64_bits

    fn FactValue::f64_bits(bits : UInt64) -> FactValue

    FactValue::immutable_global

    fn FactValue::immutable_global(global : UInt) -> FactValue

    FactValue::integer

    fn FactValue::integer(value : IntConstant) -> FactValue

    FactValue::ref_func

    fn FactValue::ref_func(function : UInt) -> FactValue

    FactValue::ref_null

    fn FactValue::ref_null(heap : FactHeapType) -> FactValue

    FactValue::v128

    fn FactValue::v128(value : V128Bits) -> FactValue

    FieldFacts

    pub struct FieldFacts {
    view : TypeView
    field : UInt
    stored_contents : ValueFacts?
    writes : WriteFacts?
    usage : FieldUsageFacts?
    } derive(Eq, Hash,
    Debug
    )

    FieldFacts::new

    fn FieldFacts::new(view : TypeView, field : UInt, stored_contents? : ValueFacts?, writes? : WriteFacts?, usage? : FieldUsageFacts?) -> FieldFacts

    FieldUsageFacts

    pub struct FieldUsageFacts {
    never_read : Bool
    never_written_after_initialization : Bool
    } derive(Eq, Hash,
    Debug
    )

    FieldUsageFacts::new

    fn FieldUsageFacts::new(never_read? : Bool, never_written_after_initialization? : Bool) -> FieldUsageFacts

    FloatClassMask

    pub struct FloatClassMask(UInt) derive(Eq, Hash,
    Debug
    )

    FloatClassMask::all

    FloatClassMask::bits

    fn FloatClassMask::bits(self : FloatClassMask) -> UInt

    FloatClassMask::contains

    fn FloatClassMask::contains(self : FloatClassMask, other : FloatClassMask) -> Bool

    FloatClassMask::empty

    FloatClassMask::from_bits

    fn FloatClassMask::from_bits(bits : UInt) -> FloatClassMask

    FloatClassMask::nan

    FloatClassMask::negative_infinity

    fn FloatClassMask::negative_infinity() -> FloatClassMask

    FloatClassMask::negative_normal

    fn FloatClassMask::negative_normal() -> FloatClassMask

    FloatClassMask::negative_subnormal

    fn FloatClassMask::negative_subnormal() -> FloatClassMask

    FloatClassMask::negative_zero

    fn FloatClassMask::negative_zero() -> FloatClassMask

    FloatClassMask::positive_infinity

    fn FloatClassMask::positive_infinity() -> FloatClassMask

    FloatClassMask::positive_normal

    fn FloatClassMask::positive_normal() -> FloatClassMask

    FloatClassMask::positive_subnormal

    fn FloatClassMask::positive_subnormal() -> FloatClassMask

    FloatClassMask::positive_zero

    fn FloatClassMask::positive_zero() -> FloatClassMask

    FloatClassMask::union

    FloatFacts

    pub struct FloatFacts {
    width : FloatWidth
    possible_classes : FloatClassMask
    } derive(Eq, Hash,
    Debug
    )

    FloatFacts::new

    fn FloatFacts::new(width : FloatWidth, possible_classes : FloatClassMask) -> FloatFacts

    FloatWidth

    pub enum FloatWidth {
    Float32
    Float64
    } derive(Eq, Hash,
    Debug
    )

    FloatWidth::f32

    fn FloatWidth::f32() -> FloatWidth

    FloatWidth::f64

    fn FloatWidth::f64() -> FloatWidth

    FunctionBodyFacts

    pub struct FunctionBodyFacts {
    function : UInt
    sites : Array[ExpressionFact]
    relations : Array[ScopedRelationFacts]
    calls : Array[CallSiteFacts]
    branches : Array[BranchFacts]
    loops : Array[LoopFacts]
    allocations : Array[AllocationSiteFacts]
    accesses : Array[AccessSiteFacts]
    numeric_operations : Array[NumericOperationSiteFacts]
    } derive(Eq, Hash,
    Debug
    )

    FunctionBodyFacts::new

    fn FunctionBodyFacts::new(function : UInt, sites? : Array[ExpressionFact], relations? : Array[ScopedRelationFacts], calls? : Array[CallSiteFacts], branches? : Array[BranchFacts], loops? : Array[LoopFacts], allocations? : Array[AllocationSiteFacts], accesses? : Array[AccessSiteFacts], numeric_operations? : Array[NumericOperationSiteFacts]) -> FunctionBodyFacts

    FunctionBoundaryFacts

    pub struct FunctionBoundaryFacts {
    all_call_sites_known : Bool
    address_taken : Bool
    host_callable : Bool
    } derive(Eq, Hash,
    Debug
    )

    FunctionBoundaryFacts::new

    fn FunctionBoundaryFacts::new(all_call_sites_known : Bool, address_taken : Bool, host_callable : Bool) -> FunctionBoundaryFacts

    FunctionFacts

    pub struct FunctionFacts {
    function : UInt
    effects : EffectFacts?
    parameters : Array[ParameterFacts]
    results : Array[ResultFacts]
    boundary : FunctionBoundaryFacts?
    profile : FunctionProfile?
    inline_policy : InlinePolicy?
    } derive(Eq, Hash,
    Debug
    )

    FunctionFacts::new

    fn FunctionFacts::new(function : UInt, effects? : EffectFacts?, parameters? : Array[ParameterFacts], results? : Array[ResultFacts], boundary? : FunctionBoundaryFacts?, profile? : FunctionProfile?, inline_policy? : InlinePolicy?) -> FunctionFacts

    FunctionProfile

    pub struct FunctionProfile {
    entry_count : UInt64?
    temperature : TemperatureHint?
    } derive(Eq, Hash,
    Debug
    )

    FunctionProfile::new

    fn FunctionProfile::new(entry_count? : UInt64?, temperature? : TemperatureHint?) -> FunctionProfile

    FunctionResultRef

    pub struct FunctionResultRef {
    function : UInt
    result : UInt
    } derive(Eq, Hash,
    Debug
    )

    FunctionResultRef::new

    fn FunctionResultRef::new(function : UInt, result : UInt) -> FunctionResultRef

    GlobalFacts

    pub struct GlobalFacts {
    global : UInt
    initial_value : ValueFacts?
    steady_state_value : ValueFacts?
    mutation : MutationFacts?
    } derive(Eq, Hash,
    Debug
    )

    GlobalFacts::new

    fn GlobalFacts::new(global : UInt, initial_value? : ValueFacts?, steady_state_value? : ValueFacts?, mutation? : MutationFacts?) -> GlobalFacts

    HeapDomain

    pub enum HeapDomain {
    ExactRuntimeType(FactHeapType)
    SubtypesOf(FactHeapType)
    ClosedRuntimeTypes(ClosedHeapTypeSet)
    } derive(Eq, Hash,
    Debug
    )

    HeapDomain::closed_runtime_types

    fn HeapDomain::closed_runtime_types(types : ClosedHeapTypeSet) -> HeapDomain

    HeapDomain::exact_runtime_type

    fn HeapDomain::exact_runtime_type(type_ : FactHeapType) -> HeapDomain

    HeapDomain::subtypes_of

    fn HeapDomain::subtypes_of(type_ : FactHeapType) -> HeapDomain

    HintTarget

    pub enum HintTarget {
    FunctionHintTarget(UInt)
    SiteHintTarget(CodeSite)
    } derive(Eq, Hash,
    Debug
    )

    HintTarget::function

    fn HintTarget::function(function : UInt) -> HintTarget

    HintTarget::site

    fn HintTarget::site(site : CodeSite) -> HintTarget

    IndexedValueFacts

    pub struct IndexedValueFacts {
    index : UInt
    value : ValueFacts
    } derive(Eq, Hash,
    Debug
    )

    IndexedValueFacts::new

    fn IndexedValueFacts::new(index : UInt, value : ValueFacts) -> IndexedValueFacts

    InlinePolicy

    pub enum InlinePolicy {
    DefaultInlinePolicy
    NeverInline
    PreferInline
    AlwaysInline
    } derive(Eq, Hash,
    Debug
    )

    Profitability hints are never semantic requirements.

    InlinePolicy::always

    fn InlinePolicy::always() -> InlinePolicy

    InlinePolicy::default_

    fn InlinePolicy::default_() -> InlinePolicy

    InlinePolicy::never

    fn InlinePolicy::never() -> InlinePolicy

    InlinePolicy::prefer

    fn InlinePolicy::prefer() -> InlinePolicy

    IntConstant

    pub struct IntConstant {
    width : IntWidth
    bits : UInt64
    } derive(Eq, Hash,
    Debug
    )

    IntConstant::new

    fn IntConstant::new(width : IntWidth, bits : UInt64) -> IntConstant

    IntWidth

    pub enum IntWidth {
    Int8
    Int16
    Int32
    Int64
    } derive(Eq, Hash,
    Debug
    )

    IntWidth::bit_count

    fn IntWidth::bit_count(self : IntWidth) -> UInt

    IntWidth::i16

    fn IntWidth::i16() -> IntWidth

    IntWidth::i32

    fn IntWidth::i32() -> IntWidth

    IntWidth::i64

    fn IntWidth::i64() -> IntWidth

    IntWidth::i8

    fn IntWidth::i8() -> IntWidth

    IntegerFacts

    pub struct IntegerFacts {
    width : IntWidth
    unsigned_range : UnsignedRange?
    signed_range : SignedRange?
    known_bits : KnownBits?
    nonzero : Bool
    } derive(Eq, Hash,
    Debug
    )

    IntegerFacts::new

    fn IntegerFacts::new(width : IntWidth, unsigned_range? : UnsignedRange?, signed_range? : SignedRange?, known_bits? : KnownBits?, nonzero? : Bool) -> IntegerFacts

    KnownBits

    pub struct KnownBits {
    known_zero : UInt64
    known_one : UInt64
    } derive(Eq, Hash,
    Debug
    )

    KnownBits::new

    fn KnownBits::new(known_zero : UInt64, known_one : UInt64) -> KnownBits

    KnownV128Bits

    pub struct KnownV128Bits {
    known_zero : V128Bits
    known_one : V128Bits
    } derive(Eq, Hash,
    Debug
    )

    KnownV128Bits::new

    fn KnownV128Bits::new(known_zero : V128Bits, known_one : V128Bits) -> KnownV128Bits

    LoopFacts

    pub struct LoopFacts {
    site : CodeSite
    profile : LoopProfile?
    temperature : TemperatureHint?
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    LoopFacts::new

    fn LoopFacts::new(site : CodeSite, profile? : LoopProfile?, temperature? : TemperatureHint?, provenance? : SourceProvenance?) -> LoopFacts

    LoopProfile

    pub struct LoopProfile {
    backedge_count : UInt64?
    estimated_trip_count : UInt64?
    } derive(Eq, Hash,
    Debug
    )

    LoopProfile::new

    fn LoopProfile::new(backedge_count? : UInt64?, estimated_trip_count? : UInt64?) -> LoopProfile

    MutationFacts

    pub struct MutationFacts {
    latest_phase : MutationPhase
    sites : Array[CodeSite]?
    } derive(Eq, Hash,
    Debug
    )

    MutationFacts::new

    fn MutationFacts::new(latest_phase : MutationPhase, sites? : Array[CodeSite]?) -> MutationFacts

    MutationPhase

    pub enum MutationPhase {
    NeverMutated
    InitializationOnlyMutation
    RuntimeMutation
    } derive(Eq, Hash,
    Debug
    )

    MutationPhase::initialization_only

    fn MutationPhase::initialization_only() -> MutationPhase

    MutationPhase::never

    MutationPhase::runtime

    fn MutationPhase::runtime() -> MutationPhase

    NullabilityFacts

    pub enum NullabilityFacts {
    NullOnly
    NonNull
    } derive(Eq, Hash,
    Debug
    )

    NullabilityFacts::non_null

    NullabilityFacts::null_only

    NumericOperationFacts

    pub struct NumericOperationFacts {
    signed_no_wrap : Bool
    unsigned_no_wrap : Bool
    exact_division : Bool
    } derive(Eq, Hash,
    Debug
    )

    NumericOperationFacts::new

    fn NumericOperationFacts::new(signed_no_wrap? : Bool, unsigned_no_wrap? : Bool, exact_division? : Bool) -> NumericOperationFacts

    NumericOperationSiteFacts

    pub struct NumericOperationSiteFacts {
    site : ValueSite
    facts : NumericOperationFacts
    provenance : SourceProvenance?
    } derive(Eq, Hash,
    Debug
    )

    NumericOperationSiteFacts::new

    OptimizationFactsBuilder

    pub struct OptimizationFactsBuilder {
    producer : ProducerInfo?
    world : WorldFacts?
    functions : Array[FunctionFacts]
    signatures : Array[SignatureFacts]
    types : Array[TypeFacts]
    globals : Array[GlobalFacts]
    tables : Array[TableFacts]
    bodies : Array[FunctionBodyFacts]
    hints : Array[OptimizationHint]
    } derive(Eq, Hash,
    Debug
    )

    OptimizationFactsBuilder::add_body

    OptimizationFactsBuilder::add_function

    fn OptimizationFactsBuilder::add_function(self : OptimizationFactsBuilder, facts : FunctionFacts) -> Unit

    OptimizationFactsBuilder::add_global

    fn OptimizationFactsBuilder::add_global(self : OptimizationFactsBuilder, facts : GlobalFacts) -> Unit

    OptimizationFactsBuilder::add_hint

    OptimizationFactsBuilder::add_signature

    fn OptimizationFactsBuilder::add_signature(self : OptimizationFactsBuilder, facts : SignatureFacts) -> Unit

    OptimizationFactsBuilder::add_table

    fn OptimizationFactsBuilder::add_table(self : OptimizationFactsBuilder, facts : TableFacts) -> Unit

    OptimizationFactsBuilder::add_type

    fn OptimizationFactsBuilder::add_type(self : OptimizationFactsBuilder, facts : TypeFacts) -> Unit

    OptimizationFactsBuilder::finish

    OptimizationFactsBuilder::new

    OptimizationFactsBuilder::set_producer

    fn OptimizationFactsBuilder::set_producer(self : OptimizationFactsBuilder, producer : ProducerInfo) -> Unit

    OptimizationFactsBuilder::set_world

    fn OptimizationFactsBuilder::set_world(self : OptimizationFactsBuilder, world : WorldFacts) -> Unit

    OptimizationFactsSec

    pub struct OptimizationFactsSec {
    producer : ProducerInfo?
    world : WorldFacts?
    functions : Array[FunctionFacts]
    signatures : Array[SignatureFacts]
    types : Array[TypeFacts]
    globals : Array[GlobalFacts]
    tables : Array[TableFacts]
    bodies : Array[FunctionBodyFacts]
    hints : Array[OptimizationHint]
    } derive(Eq, Hash,
    Debug
    )

    OptimizationFactsSec::new

    fn OptimizationFactsSec::new(producer? : ProducerInfo?, world? : WorldFacts?, functions? : Array[FunctionFacts], signatures? : Array[SignatureFacts], types? : Array[TypeFacts], globals? : Array[GlobalFacts], tables? : Array[TableFacts], bodies? : Array[FunctionBodyFacts], hints? : Array[OptimizationHint]) -> OptimizationFactsSec

    OptimizationGoal

    pub enum OptimizationGoal {
    PreferSpeed
    Balanced
    PreferSize
    } derive(Eq, Hash,
    Debug
    )

    OptimizationGoal::balanced

    OptimizationGoal::prefer_size

    fn OptimizationGoal::prefer_size() -> OptimizationGoal

    OptimizationGoal::prefer_speed

    fn OptimizationGoal::prefer_speed() -> OptimizationGoal

    OptimizationHint

    pub enum OptimizationHint {
    HotnessHint(HintTarget, TemperatureHint)
    InlineHint(HintTarget, InlinePolicy)
    GoalHint(HintTarget, OptimizationGoal)
    BranchProbabilityHint(CodeSite, UInt)
    EstimatedLoopTripsHint(CodeSite, UInt64)
    LikelyCallTargetHint(CodeSite, UInt, UInt)
    LikelyHeapTypeHint(ValueSite, FactHeapType, UInt)
    } derive(Eq, Hash,
    Debug
    )

    Probability and confidence values use the inclusive integer domain 0..65535.

    OptimizationHint::branch_probability

    fn OptimizationHint::branch_probability(site : CodeSite, probability : UInt) -> OptimizationHint

    OptimizationHint::estimated_loop_trips

    fn OptimizationHint::estimated_loop_trips(site : CodeSite, trips : UInt64) -> OptimizationHint

    OptimizationHint::goal

    OptimizationHint::hotness

    fn OptimizationHint::hotness(target : HintTarget, temperature : TemperatureHint) -> OptimizationHint

    OptimizationHint::inline_

    fn OptimizationHint::inline_(target : HintTarget, policy : InlinePolicy) -> OptimizationHint

    OptimizationHint::likely_call_target

    fn OptimizationHint::likely_call_target(site : CodeSite, function : UInt, confidence : UInt) -> OptimizationHint

    OptimizationHint::likely_heap_type

    fn OptimizationHint::likely_heap_type(site : ValueSite, type_ : FactHeapType, confidence : UInt) -> OptimizationHint

    ParameterFacts

    pub struct ParameterFacts {
    parameter : UInt
    value : ValueFacts?
    uses : ParameterUseMask?
    escape_sinks : EscapeSinkMask?
    } derive(Eq, Hash,
    Debug
    )

    ParameterFacts::new

    fn ParameterFacts::new(parameter : UInt, value? : ValueFacts?, uses? : ParameterUseMask?, escape_sinks? : EscapeSinkMask?) -> ParameterFacts

    ParameterRef

    pub struct ParameterRef {
    function : UInt
    parameter : UInt
    } derive(Eq, Hash,
    Debug
    )

    ParameterRef::new

    fn ParameterRef::new(function : UInt, parameter : UInt) -> ParameterRef

    ParameterUseMask

    pub struct ParameterUseMask(UInt64) derive(Eq, Hash,
    Debug
    )

    ParameterUseMask::address_index

    fn ParameterUseMask::address_index() -> ParameterUseMask

    ParameterUseMask::all_known

    ParameterUseMask::bits

    fn ParameterUseMask::bits(self : ParameterUseMask) -> UInt64

    ParameterUseMask::call_argument

    fn ParameterUseMask::call_argument() -> ParameterUseMask

    ParameterUseMask::contains

    fn ParameterUseMask::contains(self : ParameterUseMask, other : ParameterUseMask) -> Bool

    ParameterUseMask::control

    ParameterUseMask::direct_computation

    fn ParameterUseMask::direct_computation() -> ParameterUseMask

    ParameterUseMask::empty

    ParameterUseMask::from_bits

    fn ParameterUseMask::from_bits(bits : UInt64) -> ParameterUseMask

    ParameterUseMask::identity_observing

    fn ParameterUseMask::identity_observing() -> ParameterUseMask

    ParameterUseMask::return_

    ParameterUseMask::stored_value

    fn ParameterUseMask::stored_value() -> ParameterUseMask

    ParameterUseMask::union

    ProducerInfo

    pub struct ProducerInfo {
    name : String
    version : String
    build_id : String?
    } derive(Eq, Hash,
    Debug
    )

    ProducerInfo::new

    fn ProducerInfo::new(name : String, version : String, build_id? : String?) -> ProducerInfo

    ReferenceFacts

    pub struct ReferenceFacts {
    nullability : NullabilityFacts?
    heap : HeapDomain?
    function_targets : ClosedFunctionSet?
    } derive(Eq, Hash,
    Debug
    )

    ReferenceFacts::new

    fn ReferenceFacts::new(nullability? : NullabilityFacts?, heap? : HeapDomain?, function_targets? : ClosedFunctionSet?) -> ReferenceFacts

    RelationKind

    pub enum RelationKind {
    Equal
    NotEqual
    SignedLessThan
    SignedLessOrEqual
    UnsignedLessThan
    UnsignedLessOrEqual
    SameReference
    DistinctReferences
    } derive(Eq, Hash,
    Debug
    )

    RelationKind::distinct_references

    fn RelationKind::distinct_references() -> RelationKind

    RelationKind::equal

    fn RelationKind::equal() -> RelationKind

    RelationKind::not_equal

    fn RelationKind::not_equal() -> RelationKind

    RelationKind::same_reference

    fn RelationKind::same_reference() -> RelationKind

    RelationKind::signed_less_or_equal

    fn RelationKind::signed_less_or_equal() -> RelationKind

    RelationKind::signed_less_than

    fn RelationKind::signed_less_than() -> RelationKind

    RelationKind::unsigned_less_or_equal

    fn RelationKind::unsigned_less_or_equal() -> RelationKind

    RelationKind::unsigned_less_than

    fn RelationKind::unsigned_less_than() -> RelationKind

    ResultFacts

    pub struct ResultFacts {
    result : UInt
    value : ValueFacts?
    identity : ResultIdentityFacts?
    } derive(Eq, Hash,
    Debug
    )

    ResultFacts::new

    fn ResultFacts::new(result : UInt, value? : ValueFacts?, identity? : ResultIdentityFacts?) -> ResultFacts

    ResultIdentityFacts

    pub enum ResultIdentityFacts {
    FreshReference
    ClosedAliases(ClosedAliasSet)
    } derive(Eq, Hash,
    Debug
    )

    ResultIdentityFacts::closed_aliases

    fn ResultIdentityFacts::closed_aliases(aliases : ClosedAliasSet) -> ResultIdentityFacts

    ResultIdentityFacts::fresh

    ResultIdentityFacts::same_as_global

    fn ResultIdentityFacts::same_as_global(global : UInt) -> ResultIdentityFacts

    ResultIdentityFacts::same_as_parameter

    fn ResultIdentityFacts::same_as_parameter(parameter : UInt) -> ResultIdentityFacts

    ScopedRelationFacts

    pub struct ScopedRelationFacts {
    at : CodeSite
    left : FactOperand
    kind : RelationKind
    right : FactOperand
    } derive(Eq, Hash,
    Debug
    )

    ScopedRelationFacts::new

    SignatureFacts

    pub struct SignatureFacts {
    signature : UInt
    parameters : Array[IndexedValueFacts]
    results : Array[IndexedValueFacts]
    call_sites_complete : Bool
    } derive(Eq, Hash,
    Debug
    )

    SignatureFacts::new

    fn SignatureFacts::new(signature : UInt, parameters? : Array[IndexedValueFacts], results? : Array[IndexedValueFacts], call_sites_complete? : Bool) -> SignatureFacts

    SignedRange

    pub struct SignedRange {
    min : Int64
    max : Int64
    } derive(Eq, Hash,
    Debug
    )

    SignedRange::new

    fn SignedRange::new(min : Int64, max : Int64) -> SignedRange

    SourceProvenance

    pub struct SourceProvenance {
    module_id : UInt64?
    declaration_id : UInt64?
    body_id : UInt64?
    expression_id : UInt64?
    source_offset : UInt64?
    specialization_id : UInt64?
    } derive(Eq, Hash,
    Debug
    )

    SourceProvenance::new

    fn SourceProvenance::new(module_id? : UInt64?, declaration_id? : UInt64?, body_id? : UInt64?, expression_id? : UInt64?, source_offset? : UInt64?, specialization_id? : UInt64?) -> SourceProvenance

    TableEntryFacts

    pub struct TableEntryFacts {
    index : UInt64
    value : ReferenceFacts
    } derive(Eq, Hash,
    Debug
    )

    TableEntryFacts::new

    fn TableEntryFacts::new(index : UInt64, value : ReferenceFacts) -> TableEntryFacts

    TableFacts

    pub struct TableFacts {
    table : UInt
    mutation : MutationFacts?
    may_grow : Bool?
    default_value : ReferenceFacts?
    entries : Array[TableEntryFacts]
    contents_complete : Bool
    } derive(Eq, Hash,
    Debug
    )

    TableFacts::new

    fn TableFacts::new(table : UInt, mutation? : MutationFacts?, may_grow? : Bool?, default_value? : ReferenceFacts?, entries? : Array[TableEntryFacts], contents_complete? : Bool) -> TableFacts

    TemperatureHint

    pub enum TemperatureHint {
    Cold
    Normal
    Hot
    } derive(Eq, Hash,
    Debug
    )

    TemperatureHint::cold

    TemperatureHint::hot

    TemperatureHint::normal

    TypeFacts

    pub struct TypeFacts {
    type_ : UInt
    population : TypePopulation?
    fields : Array[FieldFacts]
    array_element : ArrayElementFacts?
    } derive(Eq, Hash,
    Debug
    )

    TypeFacts::new

    fn TypeFacts::new(type_ : UInt, population? : TypePopulation?, fields? : Array[FieldFacts], array_element? : ArrayElementFacts?) -> TypeFacts

    TypePopulation

    pub enum TypePopulation {
    EmptyTypePopulation
    ClosedTypePopulation(ClosedHeapTypeSet)
    } derive(Eq, Hash,
    Debug
    )

    TypePopulation::closed

    TypePopulation::empty

    TypeView

    pub enum TypeView {
    ExactTypeView(UInt)
    SubtypeClosureView(UInt)
    } derive(Eq, Hash,
    Debug
    )

    TypeView::exact

    fn TypeView::exact(type_ : UInt) -> TypeView

    TypeView::subtype_closure

    fn TypeView::subtype_closure(type_ : UInt) -> TypeView

    UnsignedRange

    pub struct UnsignedRange {
    min : UInt64
    max : UInt64
    } derive(Eq, Hash,
    Debug
    )

    UnsignedRange::new

    fn UnsignedRange::new(min : UInt64, max : UInt64) -> UnsignedRange

    V128Bits

    pub struct V128Bits {
    low : UInt64
    high : UInt64
    } derive(Eq, Hash,
    Debug
    )

    V128Bits::new

    fn V128Bits::new(low : UInt64, high : UInt64) -> V128Bits

    ValueFacts

    pub struct ValueFacts {
    possible_values : ClosedValueSet?
    integer : IntegerFacts?
    float_ : FloatFacts?
    vector : VectorFacts?
    reference : ReferenceFacts?
    } derive(Eq, Hash,
    Debug
    )

    ValueFacts::exact_ref_func

    fn ValueFacts::exact_ref_func(function : UInt) -> ValueFacts

    ValueFacts::exact_value

    fn ValueFacts::exact_value(value : FactValue) -> ValueFacts

    ValueFacts::impossible

    fn ValueFacts::impossible() -> ValueFacts

    ValueFacts::new

    fn ValueFacts::new(possible_values? : ClosedValueSet?, integer? : IntegerFacts?, float_? : FloatFacts?, vector? : VectorFacts?, reference? : ReferenceFacts?) -> ValueFacts

    ValueFacts::nonnull

    fn ValueFacts::nonnull() -> ValueFacts

    ValueFacts::nonnull_exact_ref

    fn ValueFacts::nonnull_exact_ref(heap : FactHeapType) -> ValueFacts

    ValueFacts::signed_range

    fn ValueFacts::signed_range(min : Int64, max : Int64, width? : IntWidth) -> ValueFacts

    ValueFacts::unknown

    fn ValueFacts::unknown() -> ValueFacts

    ValueFacts::unsigned_range

    fn ValueFacts::unsigned_range(min : UInt64, max : UInt64, width? : IntWidth) -> ValueFacts

    ValueRef

    pub enum ValueRef {
    SiteValue(ValueSite)
    ParameterValue(ParameterRef)
    FunctionResultValue(FunctionResultRef)
    GlobalValue(UInt)
    } derive(Eq, Hash,
    Debug
    )

    ValueRef::function_result

    fn ValueRef::function_result(result : FunctionResultRef) -> ValueRef

    ValueRef::global

    fn ValueRef::global(global : UInt) -> ValueRef

    ValueRef::parameter

    fn ValueRef::parameter(parameter : ParameterRef) -> ValueRef

    ValueRef::site

    fn ValueRef::site(site : ValueSite) -> ValueRef

    ValueSite

    pub struct ValueSite {
    site : CodeSite
    result : UInt
    } derive(Eq, Hash,
    Debug
    )

    ValueSite::new

    fn ValueSite::new(site : CodeSite, result? : UInt) -> ValueSite

    VectorFacts

    pub struct VectorFacts {
    known_bits : KnownV128Bits?
    splat : FactValue?
    lane_shape : VectorLaneShape?
    } derive(Eq, Hash,
    Debug
    )

    VectorFacts::new

    fn VectorFacts::new(known_bits? : KnownV128Bits?, splat? : FactValue?, lane_shape? : VectorLaneShape?) -> VectorFacts

    VectorLaneShape

    pub enum VectorLaneShape {
    I8x16
    I16x8
    I32x4
    I64x2
    F32x4
    F64x2
    } derive(Eq, Hash,
    Debug
    )

    VectorLaneShape::f32x4

    VectorLaneShape::f64x2

    VectorLaneShape::i16x8

    VectorLaneShape::i32x4

    VectorLaneShape::i64x2

    VectorLaneShape::i8x16

    WorldFacts

    pub struct WorldFacts {
    mode : WorldMode
    host_can_call_exports : Bool
    host_can_mutate_exported_state : Bool
    } derive(Eq, Hash,
    Debug
    )

    WorldFacts::closed_module

    fn WorldFacts::closed_module(host_can_call_exports? : Bool, host_can_mutate_exported_state? : Bool) -> WorldFacts

    WorldFacts::closed_program

    fn WorldFacts::closed_program(host_can_call_exports? : Bool, host_can_mutate_exported_state? : Bool) -> WorldFacts

    WorldFacts::new

    fn WorldFacts::new(mode : WorldMode, host_can_call_exports : Bool, host_can_mutate_exported_state : Bool) -> WorldFacts

    WorldFacts::open_world

    fn WorldFacts::open_world(host_can_call_exports? : Bool, host_can_mutate_exported_state? : Bool) -> WorldFacts

    WorldMode

    pub enum WorldMode {
    OpenWorld
    ClosedModule
    ClosedProgram
    } derive(Eq, Hash,
    Debug
    )

    WorldMode::closed_module

    fn WorldMode::closed_module() -> WorldMode

    WorldMode::closed_program

    fn WorldMode::closed_program() -> WorldMode

    WorldMode::open_world

    fn WorldMode::open_world() -> WorldMode

    WriteFacts

    pub enum WriteFacts {
    NoWrites
    InitializationOnly
    ClosedWrites(Array[CodeSite])
    } derive(Eq, Hash,
    Debug
    )

    WriteFacts::closed

    fn WriteFacts::closed(sites : Array[CodeSite]) -> WriteFacts

    WriteFacts::initialization_only

    fn WriteFacts::initialization_only() -> WriteFacts

    WriteFacts::no_writes

    fn WriteFacts::no_writes() -> WriteFacts

    Source Files