Skip to main content

forma_ir/
fmir_constants.rs

1// Generated by scripts/generate-fmir-constants.mjs from fmir-constants.json. Do not edit.
2/// FMIR v3 signature.
3pub const SIGNATURE: [u8; 8] = [137, 70, 77, 73, 13, 10, 26, 10];
4/// Shared layout: HEADER_SIZE.
5pub const HEADER_SIZE: usize = 24;
6/// Shared layout: TABLE_PREFIX_SIZE.
7pub const TABLE_PREFIX_SIZE: usize = 4;
8/// Shared layout: SECTION_ENTRY_SIZE.
9pub const SECTION_ENTRY_SIZE: usize = 12;
10/// Shared layout: IR_VERSION.
11pub const IR_VERSION: u16 = 3;
12/// Shared limits: MAX_MODULE_SIZE.
13pub const MAX_MODULE_SIZE: usize = 16777216;
14/// Shared limits: MAX_SECTIONS.
15pub const MAX_SECTIONS: usize = 64;
16/// Shared limits: MAX_STRINGS.
17pub const MAX_STRINGS: usize = 1048576;
18/// Shared limits: MAX_SLOTS.
19pub const MAX_SLOTS: usize = 65535;
20/// Shared limits: MAX_ISLANDS.
21pub const MAX_ISLANDS: usize = 4096;
22/// Shared limits: MAX_SCHEMA_ITEMS.
23pub const MAX_SCHEMA_ITEMS: usize = 1024;
24/// Shared limits: MAX_TYPE_DEPTH.
25pub const MAX_TYPE_DEPTH: usize = 16;
26/// Shared limits: MAX_KEY_SEGMENTS.
27pub const MAX_KEY_SEGMENTS: usize = 32;
28/// Shared limits: MAX_CONTROL_DEPTH.
29pub const MAX_CONTROL_DEPTH: usize = 64;
30/// Shared limits: MAX_LIST_DEPTH.
31pub const MAX_LIST_DEPTH: usize = 4;
32/// Shared limits: MAX_CONTRACT_BYTES.
33pub const MAX_CONTRACT_BYTES: usize = 1048576;
34/// Shared limits: MAX_BINDING_RECORDS.
35pub const MAX_BINDING_RECORDS: usize = 65535;
36/// Shared limits: MAX_VALUE_DEPTH.
37pub const MAX_VALUE_DEPTH: usize = 64;
38/// Shared limits: MAX_PROP_PATH_SEGMENTS.
39pub const MAX_PROP_PATH_SEGMENTS: usize = 1024;
40/// Shared limits: MAX_CONSTANT_NODES.
41pub const MAX_CONSTANT_NODES: usize = 65535;
42/// Shared limits: MAX_CONSTANT_DEPTH.
43pub const MAX_CONSTANT_DEPTH: usize = 1024;
44/// Shared limits: MAX_CONSTANT_ARRAY_ELEMENTS.
45pub const MAX_CONSTANT_ARRAY_ELEMENTS: usize = 65535;
46/// Shared limits: MAX_ISLAND_STATE_BYTES.
47pub const MAX_ISLAND_STATE_BYTES: usize = 1048576;
48/// Shared crc: CRC_POLYNOMIAL.
49pub const CRC_POLYNOMIAL: u32 = 3988292384;
50/// Shared crc: CRC_CHECK_VALUE.
51pub const CRC_CHECK_VALUE: u32 = 3421780262;
52/// Shared sections: SECTION_BYTECODE.
53pub const SECTION_BYTECODE: u16 = 1;
54/// Shared sections: SECTION_STRINGS.
55pub const SECTION_STRINGS: u16 = 2;
56/// Shared sections: SECTION_SLOTS.
57pub const SECTION_SLOTS: u16 = 3;
58/// Shared sections: SECTION_ISLANDS.
59pub const SECTION_ISLANDS: u16 = 4;
60/// Shared sections: SECTION_PROPS_SCHEMA.
61pub const SECTION_PROPS_SCHEMA: u16 = 5;
62/// Shared sections: SECTION_KEY_PATHS.
63pub const SECTION_KEY_PATHS: u16 = 6;
64/// Shared sections: SECTION_SOURCE_POSITIONS.
65pub const SECTION_SOURCE_POSITIONS: u16 = 7;
66/// Shared sections: SECTION_BUILD_IDENTITY.
67pub const SECTION_BUILD_IDENTITY: u16 = 8;
68/// Shared sections: SECTION_DEPLOYMENT.
69pub const SECTION_DEPLOYMENT: u16 = 9;
70/// Shared sections: SECTION_ISLAND_CONTRACTS.
71pub const SECTION_ISLAND_CONTRACTS: u16 = 10;
72/// Shared flags: SECTION_REQUIRED.
73pub const SECTION_REQUIRED: u16 = 1;
74/// Shared slot types: SLOT_TYPE_TEXT.
75pub const SLOT_TYPE_TEXT: u8 = 1;
76/// Shared slot types: SLOT_TYPE_BOOL.
77pub const SLOT_TYPE_BOOL: u8 = 2;
78/// Shared slot types: SLOT_TYPE_NUMBER.
79pub const SLOT_TYPE_NUMBER: u8 = 3;
80/// Shared slot types: SLOT_TYPE_ARRAY.
81pub const SLOT_TYPE_ARRAY: u8 = 4;
82/// Shared slot types: SLOT_TYPE_OBJECT.
83pub const SLOT_TYPE_OBJECT: u8 = 5;
84/// Shared slot sources: SLOT_SOURCE_SERVER.
85pub const SLOT_SOURCE_SERVER: u8 = 0;
86/// Shared slot sources: SLOT_SOURCE_CLIENT.
87pub const SLOT_SOURCE_CLIENT: u8 = 1;
88/// Shared island triggers: TRIGGER_LOAD.
89pub const TRIGGER_LOAD: u8 = 1;
90/// Shared island triggers: TRIGGER_VISIBLE.
91pub const TRIGGER_VISIBLE: u8 = 2;
92/// Shared island triggers: TRIGGER_INTERACTION.
93pub const TRIGGER_INTERACTION: u8 = 3;
94/// Shared island triggers: TRIGGER_IDLE.
95pub const TRIGGER_IDLE: u8 = 4;
96/// Shared schema types: SCHEMA_BOOLEAN.
97pub const SCHEMA_BOOLEAN: u8 = 1;
98/// Shared schema types: SCHEMA_STRING.
99pub const SCHEMA_STRING: u8 = 2;
100/// Shared schema types: SCHEMA_NUMBER.
101pub const SCHEMA_NUMBER: u8 = 3;
102/// Shared schema types: SCHEMA_DATE.
103pub const SCHEMA_DATE: u8 = 4;
104/// Shared schema types: SCHEMA_ENUM.
105pub const SCHEMA_ENUM: u8 = 5;
106/// Shared schema types: SCHEMA_ARRAY.
107pub const SCHEMA_ARRAY: u8 = 6;
108/// Shared schema types: SCHEMA_OPTIONAL.
109pub const SCHEMA_OPTIONAL: u8 = 7;
110/// Shared schema types: SCHEMA_OBJECT.
111pub const SCHEMA_OBJECT: u8 = 8;
112/// Shared load codes: LOAD_101.
113pub const LOAD_101: &str = "LOAD-101";
114/// Shared load codes: LOAD_102.
115pub const LOAD_102: &str = "LOAD-102";
116/// Shared load codes: LOAD_103.
117pub const LOAD_103: &str = "LOAD-103";
118/// Shared load codes: LOAD_104.
119pub const LOAD_104: &str = "LOAD-104";
120/// Shared load codes: LOAD_105.
121pub const LOAD_105: &str = "LOAD-105";
122/// Shared load codes: LOAD_106.
123pub const LOAD_106: &str = "LOAD-106";
124/// Shared load codes: LOAD_107.
125pub const LOAD_107: &str = "LOAD-107";
126/// Shared load codes: LOAD_108.
127pub const LOAD_108: &str = "LOAD-108";
128/// str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[].
129pub const OP_OPEN_TAG: u8 = 1;
130/// str_idx:u32.
131pub const OP_CLOSE_TAG: u8 = 2;
132/// str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[].
133pub const OP_VOID_TAG: u8 = 3;
134/// str_idx:u32.
135pub const OP_TEXT: u8 = 4;
136/// slot_id:u16 marker_id:u16.
137pub const OP_DYN_TEXT: u8 = 5;
138/// attr_str_idx:u32 slot_id:u16.
139pub const OP_DYN_ATTR: u8 = 6;
140/// slot_id:u16 then_len:u32 else_len:u32 then:bytes SHOW_ELSE else:bytes.
141pub const OP_SHOW_IF: u8 = 7;
142/// No operands.
143pub const OP_SHOW_ELSE: u8 = 8;
144/// slot_id:u16 item_slot_id:u16 body_len:u32 body:bytes.
145pub const OP_LIST: u8 = 10;
146/// island_id:u16.
147pub const OP_ISLAND_START: u8 = 11;
148/// island_id:u16.
149pub const OP_ISLAND_END: u8 = 12;
150/// src_slot_id:u16 prop_str_idx:u32 target_slot_id:u16.
151pub const OP_PROP: u8 = 18;
152/// source_slot:u16 fallback_slot:u16 destination_slot:u16.
153pub const OP_COALESCE: u8 = 19;
154/// Operand shapes for the assigned opcodes.
155pub const OPCODE_OPERANDS: &[(u8, &str)] = &[
156    (1, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
157    (2, "str_idx:u32"),
158    (3, "str_idx:u32 attr_count:u16 attrs:(key:u32,val:u32)[]"),
159    (4, "str_idx:u32"),
160    (5, "slot_id:u16 marker_id:u16"),
161    (6, "attr_str_idx:u32 slot_id:u16"),
162    (7, "slot_id:u16 then_len:u32 else_len:u32 then:bytes SHOW_ELSE else:bytes"),
163    (8, ""),
164    (10, "slot_id:u16 item_slot_id:u16 body_len:u32 body:bytes"),
165    (11, "island_id:u16"),
166    (12, "island_id:u16"),
167    (18, "src_slot_id:u16 prop_str_idx:u32 target_slot_id:u16"),
168    (19, "source_slot:u16 fallback_slot:u16 destination_slot:u16"),
169];
170/// Reserved opcode bytes, never reassigned.
171pub const RESERVED_OPCODES: [u8; 6] = [9, 13, 14, 15, 16, 17];