Lines Matching full:fields
21 static void checkValidLayout(ArrayRef<Field> Fields, uint64_t Size, in checkValidLayout() argument
25 for (auto &Field : Fields) { in checkValidLayout()
43 llvm::performOptimizedStructLayout(MutableArrayRef<Field> Fields) { in performOptimizedStructLayout() argument
49 for (auto &Field : Fields) { in performOptimizedStructLayout()
53 "fixed-offset fields are not a strict prefix of array"); in performOptimizedStructLayout()
55 "fixed-offset fields overlap or are not in order"); in performOptimizedStructLayout()
66 // Do an initial pass over the fields. in performOptimizedStructLayout()
70 auto FirstFlexible = Fields.begin(), E = Fields.end(); in performOptimizedStructLayout()
76 // If there are no flexible fields, we're done. in performOptimizedStructLayout()
79 if (!Fields.empty()) in performOptimizedStructLayout()
80 Size = Fields.back().getEndOffset(); in performOptimizedStructLayout()
83 checkValidLayout(Fields, Size, MaxAlign); in performOptimizedStructLayout()
88 // Walk over the flexible-offset fields, tracking MaxAlign and in performOptimizedStructLayout()
127 // fixed-layout fields have no interior padding, and they end at a in performOptimizedStructLayout()
128 // sufficiently-aligned offset for all the flexible-layout fields, in performOptimizedStructLayout()
129 // and the flexible-layout fields all have sizes that are multiples in performOptimizedStructLayout()
135 // Walk the fixed-offset fields. in performOptimizedStructLayout()
136 for (auto I = Fields.begin(); I != FirstFlexible; ++I) { in performOptimizedStructLayout()
145 // Walk the flexible-offset fields, optimistically assigning fixed in performOptimizedStructLayout()
147 // fixed-offset and flexible-offset fields, so if we end up in performOptimizedStructLayout()
165 checkValidLayout(Fields, LastEnd, MaxAlign); in performOptimizedStructLayout()
173 // Consider the padding gaps between fixed-offset fields in ascending in performOptimizedStructLayout()
183 // last fixed-offset field, or 0 if there are no fixed-offset fields. in performOptimizedStructLayout()
184 // While there are flexible-offset fields remaining, find the "best" in performOptimizedStructLayout()
192 // - When filling a gap betweeen fields, the field must fit. in performOptimizedStructLayout()
199 // entirely. Preferring more-aligned fields is an attempt to eliminate in performOptimizedStructLayout()
203 // layout in the "C-style" case. Preferring larger fields tends to take in performOptimizedStructLayout()
213 // O_j be the object sizes; add fixed-offset fields such that the gaps in performOptimizedStructLayout()
214 // between them have size B_i, and add flexible-offset fields with in performOptimizedStructLayout()
220 // scanning the list of remaining fields looking for the best, which in performOptimizedStructLayout()
227 // filling a gap between fixed-offset fields, which doesn't happen very in performOptimizedStructLayout()
233 // Start by organizing the flexible-offset fields into bins according to in performOptimizedStructLayout()
320 // Do layout into a local array. Doing this in-place on Fields is in performOptimizedStructLayout()
323 Layout.reserve(Fields.size()); in performOptimizedStructLayout()
421 // Phase 1: fill the gaps between fixed-offset fields with the best in performOptimizedStructLayout()
423 for (auto I = Fields.begin(); I != FirstFlexible; ++I) { in performOptimizedStructLayout()
446 assert(Layout.size() == Fields.size()); in performOptimizedStructLayout()
447 memcpy(Fields.data(), Layout.data(), in performOptimizedStructLayout()
448 Fields.size() * sizeof(OptimizedStructLayoutField)); in performOptimizedStructLayout()
452 checkValidLayout(Fields, LastEnd, MaxAlign); in performOptimizedStructLayout()