@@ -448,18 +448,14 @@ static const NativeType* CompoundFromPragma(Zone* zone,
448448 const auto & clazz = Class::Handle (zone, struct_layout.clazz ());
449449 ASSERT (String::Handle (zone, clazz.UserVisibleName ())
450450 .Equals (Symbols::FfiStructLayout ()));
451- const auto & struct_layout_fields = Array::Handle (zone, clazz.fields ());
452- ASSERT (struct_layout_fields.Length () == 2 );
453- const auto & types_field =
454- Field::Handle (zone, Field::RawCast (struct_layout_fields.At (0 )));
455- ASSERT (String::Handle (zone, types_field.name ())
456- .Equals (Symbols::FfiFieldTypes ()));
451+ const auto & types_field = Field::Handle (
452+ zone, clazz.LookupFieldAllowPrivate (Symbols::FfiFieldTypes ()));
453+ ASSERT (!types_field.IsNull ());
457454 const auto & field_types =
458455 Array::Handle (zone, Array::RawCast (struct_layout.GetField (types_field)));
459- const auto & packed_field =
460- Field::Handle (zone, Field::RawCast (struct_layout_fields.At (1 )));
461- ASSERT (String::Handle (zone, packed_field.name ())
462- .Equals (Symbols::FfiFieldPacking ()));
456+ const auto & packed_field = Field::Handle (
457+ zone, clazz.LookupFieldAllowPrivate (Symbols::FfiFieldPacking ()));
458+ ASSERT (!packed_field.IsNull ());
463459 const auto & packed_value = Integer::Handle (
464460 zone, Integer::RawCast (struct_layout.GetField (packed_field)));
465461 const intptr_t member_packing =
@@ -486,18 +482,15 @@ static const NativeType* CompoundFromPragma(Zone* zone,
486482 Class::Handle (zone, field_instance.clazz ());
487483 ASSERT (String::Handle (zone, struct_layout_array_class.UserVisibleName ())
488484 .Equals (Symbols::FfiStructLayoutArray ()));
489- const auto & struct_layout_array_fields =
490- Array::Handle (zone, struct_layout_array_class.fields ());
491- ASSERT (struct_layout_array_fields.Length () == 3 );
492485 const auto & element_type_field =
493- Field::Handle (zone, Field::RawCast (struct_layout_array_fields. At ( 0 )));
494- ASSERT ( String::Handle (zone, element_type_field. UserVisibleName ())
495- . Equals ( Symbols::FfiElementType () ));
486+ Field::Handle (zone, struct_layout_array_class. LookupFieldAllowPrivate (
487+ Symbols::FfiElementType ()));
488+ ASSERT (!element_type_field. IsNull ( ));
496489 field_type ^= field_instance.GetField (element_type_field);
497- const auto & length_field =
498- Field::Handle ( zone, Field::RawCast (struct_layout_array_fields. At ( 1 )));
499- ASSERT ( String::Handle (zone, length_field. UserVisibleName ())
500- . Equals ( Symbols::Length () ));
490+ const auto & length_field = Field::Handle (
491+ zone,
492+ struct_layout_array_class. LookupFieldAllowPrivate ( Symbols::Length ()));
493+ ASSERT (!length_field. IsNull ( ));
501494 const auto & length = Smi::Handle (
502495 zone, Smi::RawCast (field_instance.GetField (length_field)));
503496 const auto element_type =
@@ -508,9 +501,9 @@ static const NativeType* CompoundFromPragma(Zone* zone,
508501
509502#if defined(DEBUG)
510503 const auto & variable_length_field =
511- Field::Handle (zone, Field::RawCast (struct_layout_array_fields. At ( 2 )));
512- ASSERT ( String::Handle (zone, variable_length_field. UserVisibleName ())
513- . Equals ( Symbols::VariableLength () ));
504+ Field::Handle (zone, struct_layout_array_class. LookupFieldAllowPrivate (
505+ Symbols::VariableLength ()));
506+ ASSERT (!variable_length_field. IsNull ( ));
514507 const auto & variable_length = Bool::Handle (
515508 zone, Bool::RawCast (field_instance.GetField (variable_length_field)));
516509 ASSERT (variable_length.value () == true ||
@@ -536,12 +529,9 @@ static const NativeType* AbiSpecificFromPragma(Zone* zone,
536529 const Class& abi_specific_int,
537530 const char ** error) {
538531 const auto & clazz = Class::Handle (zone, pragma.clazz ());
539- const auto & fields = Array::Handle (zone, clazz.fields ());
540- ASSERT (fields.Length () == 1 );
541- const auto & native_types_field =
542- Field::Handle (zone, Field::RawCast (fields.At (0 )));
543- ASSERT (String::Handle (zone, native_types_field.name ())
544- .Equals (Symbols::FfiNativeTypes ()));
532+ const auto & native_types_field = Field::Handle (
533+ zone, clazz.LookupFieldAllowPrivate (Symbols::FfiNativeTypes ()));
534+ ASSERT (!native_types_field.IsNull ());
545535 const auto & native_types =
546536 Array::Handle (zone, Array::RawCast (pragma.GetField (native_types_field)));
547537
0 commit comments