@@ -227,6 +227,12 @@ bool Pointer::isInitialized() const {
227
227
if (isIntegralPointer ())
228
228
return true ;
229
229
230
+ if (isRoot () && PointeeStorage.BS .Base == sizeof (GlobalInlineDescriptor)) {
231
+ const GlobalInlineDescriptor &GD =
232
+ *reinterpret_cast <const GlobalInlineDescriptor *>(block ()->rawData ());
233
+ return GD.InitState == GlobalInitState::Initialized;
234
+ }
235
+
230
236
assert (PointeeStorage.BS .Pointee &&
231
237
" Cannot check if null pointer was initialized" );
232
238
const Descriptor *Desc = getFieldDesc ();
@@ -249,12 +255,6 @@ bool Pointer::isInitialized() const {
249
255
if (asBlockPointer ().Base == 0 )
250
256
return true ;
251
257
252
- if (isRoot () && PointeeStorage.BS .Base == sizeof (GlobalInlineDescriptor)) {
253
- const GlobalInlineDescriptor &GD =
254
- *reinterpret_cast <const GlobalInlineDescriptor *>(block ()->rawData ());
255
- return GD.InitState == GlobalInitState::Initialized;
256
- }
257
-
258
258
// Field has its bit in an inline descriptor.
259
259
return getInlineDesc ()->IsInitialized ;
260
260
}
@@ -266,6 +266,13 @@ void Pointer::initialize() const {
266
266
assert (PointeeStorage.BS .Pointee && " Cannot initialize null pointer" );
267
267
const Descriptor *Desc = getFieldDesc ();
268
268
269
+ if (isRoot () && PointeeStorage.BS .Base == sizeof (GlobalInlineDescriptor)) {
270
+ GlobalInlineDescriptor &GD = *reinterpret_cast <GlobalInlineDescriptor *>(
271
+ asBlockPointer ().Pointee ->rawData ());
272
+ GD.InitState = GlobalInitState::Initialized;
273
+ return ;
274
+ }
275
+
269
276
assert (Desc);
270
277
if (Desc->isPrimitiveArray ()) {
271
278
// Primitive global arrays don't have an initmap.
@@ -294,13 +301,6 @@ void Pointer::initialize() const {
294
301
return ;
295
302
}
296
303
297
- if (isRoot () && PointeeStorage.BS .Base == sizeof (GlobalInlineDescriptor)) {
298
- GlobalInlineDescriptor &GD = *reinterpret_cast <GlobalInlineDescriptor *>(
299
- asBlockPointer ().Pointee ->rawData ());
300
- GD.InitState = GlobalInitState::Initialized;
301
- return ;
302
- }
303
-
304
304
// Field has its bit in an inline descriptor.
305
305
assert (PointeeStorage.BS .Base != 0 &&
306
306
" Only composite fields can be initialised" );
0 commit comments