1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//! Raw `FieldPtr` structures for the `FieldPtr` metadata table.
//!
//! This module provides the [`crate::metadata::tables::fieldptr::raw::FieldPtrRaw`] struct for reading field pointer data
//! directly from metadata tables before index resolution. The `FieldPtr` table provides
//! an indirection mechanism for Field table access when logical and physical field
//! ordering differs.
//!
//! # Table Structure
//! The `FieldPtr` table (`TableId` = 0x03) contains a single column:
//! - `Field`: Index into Field table for the actual field definition
//!
//! # Indirection Purpose
//! The `FieldPtr` table enables field access optimization:
//! - **Field reordering**: Physical layout differs from logical declaration order
//! - **Metadata optimization**: Strategic field organization to reduce metadata size
//! - **Edit-and-continue**: Supporting field additions without breaking references
//! - **Incremental compilation**: Maintaining stable field references
//! - **Platform optimization**: Field ordering based on target characteristics
//!
//! # ECMA-335 Reference
//! See ECMA-335, Partition II, §22.18 for the `FieldPtr` table specification.
use Arc;
use crate::;
/// Raw field pointer data read directly from the `FieldPtr` metadata table.
///
/// This structure represents a field pointer entry before index resolution and
/// processing. Field pointers provide indirection for field access when the
/// logical field order differs from the physical storage order in metadata.
///
/// # Binary Format
/// Each row in the `FieldPtr` table has this layout:
/// ```text
/// Offset | Size | Field | Description
/// -------|------|-------|----------------------------------
/// 0 | 2/4 | Field | Field table index
/// ```
///
/// The Field index size depends on the number of entries in the Field table.
///
/// # Indirection Mechanism
/// The `FieldPtr` table provides a mapping layer:
/// - **Logical index**: The RID of the `FieldPtr` entry (used in references)
/// - **Physical index**: The Field value pointing to actual Field table entry
/// - **Resolution**: `FieldPtr[logical] → Field[physical]`
///
/// # ECMA-335 Reference
/// See ECMA-335, Partition II, §22.18 for the complete `FieldPtr` table specification.