tiny.choir.ir
Defined in tiny.choir.
API (108)
Actions
Public operations.
Mapping.deinitMapping.initMapping.lookupBlockMapping.lookupOperationMapping.lookupOrDefaultBlockMapping.lookupOrDefaultOperationMapping.lookupOrDefaultValueMapping.lookupValueMapping.mapBlockMapping.mapOperationMapping.mapValueOpOperand.attachOpOperand.detachOpOperand.setValueOperationFixedStorage.Capacity.deriveOperationFixedStorage.activateOperationFixedStorage.deinitOperationFixedStorage.initOperationFixedStorage.statusinterfaceIdinterfaceIdRuntimeregionKindregionMayHaveSSADominancesingleAttributePropertiesModeltraitIdtraitIdRuntimeverifyBlockverifyBlockStructureverifyOperationverifyOperationStructureverifyRegionverifyRegionStructureverifyRegisteredOperationRequiredAttributesverifyRegisteredOperationShapeverifyRegisteredOperationTypeConstraintsverifyValue
Types and contracts
Public types and contracts.
AttributeAttributeRegistryBlockContextCountRangeDialectInterfaceEntryInterfaceIdLocationMappingNamedAttributeNamedAttributeListOpOperandOperationOperationBuilderOperationEquivalenceOperationFixedStorageOperationFixedStorage.CapacityOperationFixedStorage.LimitsOperationFixedStorage.SegmentOperationInfoOperationPropertiesModelOperationRegistryOperationShapeOperationTraitsOperationTypeConstraintRegionRegionKindRegionKindInterfaceSymbolTableSymbolTableErrorSymbolUseSymbolUseRangeSymbolUserMapThreadingExecutionGuardThreadingExecutionStateThreadingOptionsTraitEntryTraitIdTraitRegistryTraitVTableTypeTypeInfoTypeRegistryValueVerifyErrorVerifyOpInterfaceVerifyOptionsVerifyRegionOpInterfaceWalkOptionsWalkOrderWalkResultbuiltin_attr_names
Namespaces
Public namespaces.
attributeattrscfgcontextdialectsdumpequivalenceformatinspectioninterfacesopsparserewritesymbolsthreadingtraitstypesverify
Values and defaults
Public values and defaults.
Source
Source: lib/choir/src/core/mapping.zig:6
zig
pub const Mapping = struct { allocator: std.mem.Allocator, values: std.AutoHashMapUnmanaged(*const Value, *Value) = .{}, blocks: std.AutoHashMapUnmanaged(*const Block, *Block) = .{}, operations: std.AutoHashMapUnmanaged(*const Operation, *Operation) = .{}, pub fn init(allocator: std.mem.Allocator) Mapping { return .{ .allocator = allocator }; } pub fn deinit(self: *Mapping) void { self.values.deinit(self.allocator); self.blocks.deinit(self.allocator); self.operations.deinit(self.allocator); } pub fn mapValue(self: *Mapping, source: *const Value, dest: *Value) !void { try self.values.put(self.allocator, source, dest); } pub fn lookupValue(self: *const Mapping, source: *const Value) ?*Value { return self.values.get(source); } pub fn lookupOrDefaultValue(self: *const Mapping, source: *Value) *Value { return self.lookupValue(source) orelse source; } pub fn mapBlock(self: *Mapping, source: *const Block, dest: *Block) !void { try self.blocks.put(self.allocator, source, dest); } pub fn lookupBlock(self: *const Mapping, source: *const Block) ?*Block { return self.blocks.get(source); } pub fn lookupOrDefaultBlock(self: *const Mapping, source: *Block) *Block { return self.lookupBlock(source) orelse source; } pub fn mapOperation(self: *Mapping, source: *const Operation, dest: *Operation) !void { try self.operations.put(self.allocator, source, dest); } pub fn lookupOperation(self: *const Mapping, source: *const Operation) ?*Operation { return self.operations.get(source); } pub fn lookupOrDefaultOperation(self: *const Mapping, source: *Operation) *Operation { return self.lookupOperation(source) orelse source; }};Source: lib/choir/src/core/operation/storage.zig:21
zig
pub const Storage = struct { pub const claim: alloc_phase.capacity.Declaration = .{ .source = .{ .id = "choir.operation_fixed_storage", .kind = .phase_static, .limit_source = .caller, .storage = .{ .covered = &.{ .{ .id = "one_exact_operation_header_with_context_tracking_li_8dbfeaab8a9b", .lifetime = .steady, .detail = "one exact Operation header with context tracking links and initial structural region", }, .{ .id = "initial_operand_values_result_types_use_records_val_dfde1e9abc4c", .lifetime = .steady, .detail = "initial operand values, result types, use records, values, regions, and successors", }, .{ .id = "exact_registered_property_bytes_embedded_in_the_str_4e71d9c026ef", .lifetime = .steady, .detail = "exact registered property bytes embedded in the structural region", }, }, .excluded = &.{ "attributes, nested property allocations, blocks, and region contents", "later operand and successor replacement spill storage", "profiling instrumentation and allocator implementation state", }, }, .capacity = .{ .inputs = &.{}, .type_selectors = &.{}, .nodes = &.{ .{ .constant = 0 }, }, .assertions = &.{.{ .scope = .closure_total, .measure = .retained, .relation = .exact, .expression = 0, }}, }, .overload = .{ .kind = .reject_before_seal, .detail = "capacity arithmetic or allocation failure returns before the Operation header is initialized or storage is sealed", }, .risks = .{ .transitive = .{ .status = .open, .detail = "the parent mutable Operation retains allocator authority for explicitly excluded attributes, nested owners, and later spills", }, .foreign = .{ .status = .open, .detail = "dialect property hooks may traverse state outside the embedded property byte region", }, }, .obligations = &.{ .{ .key = "choir_operation_storage_capacity", .role = .capacity_model }, .{ .key = "choir_operation_storage_acquisition", .role = .custom }, .{ .key = "choir_operation_storage_boundary", .role = .overload }, .{ .key = "choir_operation_storage_oom", .role = .overload }, .{ .key = "choir_operation_storage_integration", .role = .custom }, .{ .key = "choir_operation_tracking_static", .role = .custom }, .{ .key = "choir_operation_storage_spill", .role = .custom }, }, }, .bindings = .{ .owner = @This(), .seal = .{ .family = alloc_phase.capacity.selector(@This().activate), .premise = .{ .class = .checked_semantic_fact, .authority = .checker, }, }, .teardown = .{ .family = alloc_phase.capacity.selector(@This().deinit), .premise = .{ .class = .checked_semantic_fact, .authority = .checker, }, }, }, }; pub const Segment = struct { count: usize, element_bytes: usize, alignment: std.mem.Alignment, }; pub const Limits = struct { segments: [segment_count]Segment, }; pub const Capacity = struct { total_bytes: usize, allocation_alignment: std.mem.Alignment, pub fn derive(limits: Limits) error{CapacityOverflow}!Capacity { var cursor: usize = 0; var alignment: usize = 1; for (limits.segments) |segment| { const bytes = std.math.mul( usize, segment.count, segment.element_bytes, ) catch return error.CapacityOverflow; _ = try placeBytes( bytes, segment.alignment.toByteUnits(), &cursor, &alignment, ); } return .{ .total_bytes = cursor, .allocation_alignment = .fromByteUnits(alignment), }; } }; phase: alloc_phase.capacity.Phase, capacity: Capacity, bytes: [*]u8, pub fn init(allocator: Allocator, limits: Limits) !Storage { const capacity = try Capacity.derive(limits); const bytes = allocator.rawAlloc( capacity.total_bytes, capacity.allocation_alignment, @returnAddress(), ) orelse return error.OutOfMemory; return .{ .phase = .initialization, .capacity = capacity, .bytes = bytes, }; } pub fn activate(self: *Storage) void { std.debug.assert(self.phase == .initialization); self.phase = .steady; } pub fn status(self: *const Storage) alloc_phase.capacity.Phase { return self.phase; } pub fn deinit(self: *Storage, allocator: Allocator) void { std.debug.assert(self.phase != .teardown); self.phase = .teardown; var handle = self.storageHandle(); handle.deinit(allocator); self.* = undefined; } fn storageHandle(self: *const Storage) Handle { return .{ .bytes = self.bytes, .len = self.capacity.total_bytes, .alignment = self.capacity.allocation_alignment, }; }};Source: lib/choir/src/core/value.zig:214
zig
pub const OpOperand = struct { value: *Value, owner: *anyopaque, operand_number: u32, operand_value_slot: ?**Value, next_use: ?*OpOperand, back: ?*?*OpOperand = null, pub fn attach(self: *OpOperand) void { self.value.addUse(self); } pub fn detach(self: *OpOperand) void { const back = self.back orelse return; back.* = self.next_use; if (self.next_use) |next| { next.back = back; } self.back = null; self.next_use = null; } pub fn setValue(self: *OpOperand, new_value: *Value) void { if (self.value == new_value) return; self.detach(); self.value = new_value; self.attach(); if (self.operand_value_slot) |slot| { slot.* = new_value; } }};Source: lib/choir/src/core/root.zig
zig
pub const Type = @import("type.zig").Type;pub const attribute = @import("attribute.zig");pub const Attribute = attribute.Attribute;pub const NamedAttribute = attribute.NamedAttribute;pub const NamedAttributeList = attribute.NamedAttributeList;pub const builtin_attr_names = attribute.builtin_attr_names;pub const Value = @import("value.zig").Value;pub const OpOperand = @import("value.zig").OpOperand;pub const Mapping = @import("mapping.zig").Mapping;pub const cfg = @import("cfg.zig");pub const Operation = @import("operation/root.zig").Operation;pub const WalkOrder = Operation.WalkOrder;pub const WalkResult = Operation.WalkResult;pub const WalkOptions = Operation.WalkOptions;pub const equivalence = @import("equivalence.zig");pub const OperationEquivalence = equivalence.OperationEquivalence;pub const OperationBuilder = @import("builder.zig").OperationBuilder;pub const ops = @import("ops.zig");pub const Block = @import("block.zig").Block;pub const Region = @import("region.zig").Region;pub const Location = @import("location.zig").Location;pub const context = @import("context/root.zig");pub const Context = context.Context;pub const Dialect = context.Dialect;pub const symbols = @import("symbols.zig");pub const SymbolTable = symbols.SymbolTable;pub const SymbolTableError = symbols.SymbolTableError;pub const SymbolUse = symbols.SymbolUse;pub const SymbolUseRange = symbols.SymbolUseRange;pub const SymbolUserMap = symbols.SymbolUserMap;pub const format = @import("format.zig");pub const dump = @import("dump.zig");pub const parse = @import("parse.zig");pub const inspection = @import("inspection.zig");pub const traits = @import("traits.zig");pub const dialects = @import("dialects/root.zig");pub const types = @import("types.zig");pub const attrs = @import("attrs.zig");pub const threading = @import("threading.zig");pub const ThreadingOptions = threading.Options;pub const ThreadingExecutionState = threading.ExecutionState;pub const ThreadingExecutionGuard = threading.ExecutionGuard;pub const verify = @import("verify.zig");pub const VerifyError = verify.VerifyError;pub const VerifyOptions = verify.VerifyOptions;pub const VerifyOpInterface = verify.VerifyOpInterface;pub const VerifyRegionOpInterface = verify.VerifyRegionOpInterface;pub const verifyOperation = verify.verifyOperation;pub const verifyBlock = verify.verifyBlock;pub const verifyRegion = verify.verifyRegion;pub const verifyOperationStructure = verify.verifyOperationStructure;pub const verifyBlockStructure = verify.verifyBlockStructure;pub const verifyRegionStructure = verify.verifyRegionStructure;pub const verifyRegisteredOperationShape = verify.verifyRegisteredOperationShape;pub const verifyRegisteredOperationRequiredAttributes = verify.verifyRegisteredOperationRequiredAttributes;pub const verifyRegisteredOperationTypeConstraints = verify.verifyRegisteredOperationTypeConstraints;pub const verifyValue = verify.verifyValue;pub const regionKind = verify.regionKind;pub const regionMayHaveSSADominance = verify.regionMayHaveSSADominance;pub const interfaces = @import("interfaces/root.zig");pub const InterfaceId = interfaces.InterfaceId;pub const InterfaceEntry = interfaces.InterfaceEntry;pub const OperationTraits = interfaces.OperationTraits;pub const RegionKind = interfaces.RegionKind;pub const RegionKindInterface = interfaces.RegionKindInterface;pub const CountRange = interfaces.CountRange;pub const OperationShape = interfaces.OperationShape;pub const OperationTypeConstraint = interfaces.OperationTypeConstraint;pub const TraitId = interfaces.TraitId;pub const OperationInfo = interfaces.OperationInfo;pub const OperationPropertiesModel = interfaces.OperationPropertiesModel;pub const singleAttributePropertiesModel = interfaces.singleAttributePropertiesModel;pub const OperationRegistry = interfaces.OperationRegistry;pub const TypeInfo = interfaces.TypeInfo;pub const TypeRegistry = interfaces.TypeRegistry;pub const AttributeRegistry = interfaces.AttributeRegistry;pub const TraitEntry = interfaces.TraitEntry;pub const TraitRegistry = interfaces.TraitRegistry;pub const TraitVTable = interfaces.TraitVTable;pub const interfaceId = interfaces.interfaceId;pub const interfaceIdRuntime = interfaces.interfaceIdRuntime;pub const traitId = interfaces.traitId;pub const traitIdRuntime = interfaces.traitIdRuntime;pub const OperationFixedStorage = @import("operation/root.zig").OperationFixedStorage;pub const rewrite = @import("rewrite/root.zig");Source: lib/choir/src/root.zig:13
zig
pub const ir = @import("core/root.zig");Also reachable as
backends.wasm.emission.module_encoding.common.ir.
Audit
| Definitions | 27 |
|---|---|
| Public names | 54 |
| Members | 19 |
| Version | 26.7.0 |
| Revision | daab053ee433 |