• Home
  • Raw
  • Download

Lines Matching full:field

22 #include "runtime/include/field.h"
76 Span<Field> fields = class_ptr->GetFields(); in FreeClassData()
79 class_ptr->SetFields(Span<Field>(), 0); in FreeClassData()
310 explicit ClassDataAccessor(Span<Field> fields) : fields_(fields) {} in ClassDataAccessor()
315 for (const auto &field : fields_) { in EnumerateStaticFieldTypes() local
316 if (!field.IsStatic()) { in EnumerateStaticFieldTypes()
320 cb(field.GetType()); in EnumerateStaticFieldTypes()
330 Span<Field> fields_;
333 ClassLinker::ClassInfo ClassLinker::GetClassInfo(Span<Method> methods, Span<Field> fields, Class *b… in GetClassInfo()
480 Span<Field> fields {allocator_->AllocArray<Field>(num_fields), num_fields}; in LoadFields()
486Field *field = field_data_accessor.IsStatic() ? &fields[sfields_idx++] : &fields[ifields_idx++]; in LoadFields() local
487 …InitializeMemory(field, klass, field_data_accessor.GetFieldId(), field_data_accessor.GetAccessFlag… in LoadFields()
497 …ayoutFieldsWithoutAlignment(size_t size, size_t *offset, size_t *space, PandaList<Field *> *fields) in LayoutFieldsWithoutAlignment()
500 Field *field = fields->front(); in LayoutFieldsWithoutAlignment() local
504 field->SetOffset(*offset); in LayoutFieldsWithoutAlignment()
507 field->SetOffset(*offset); in LayoutFieldsWithoutAlignment()
517 static uint32_t LayoutReferenceFields(size_t size, size_t *offset, const PandaList<Field *> &fields) in LayoutReferenceFields()
521 for (auto *field : fields) { in LayoutReferenceFields() local
522 if (field->IsVolatile()) { in LayoutReferenceFields()
524 field->SetOffset(*offset); in LayoutReferenceFields()
528 for (auto *field : fields) { in LayoutReferenceFields() local
529 if (!field->IsVolatile()) { in LayoutReferenceFields()
530 field->SetOffset(*offset); in LayoutReferenceFields()
537 static size_t LayoutFieldsInBaseClassPadding(Class *klass, PandaList<Field *> *tagged_fields, in LayoutFieldsInBaseClassPadding()
538 … PandaList<Field *> *fields64, PandaList<Field *> *fields32, in LayoutFieldsInBaseClassPadding()
539 … PandaList<Field *> *fields16, PandaList<Field *> *fields8, in LayoutFieldsInBaseClassPadding()
540 PandaList<Field *> *ref_fields, bool is_static) in LayoutFieldsInBaseClassPadding()
576 static size_t LayoutFields(Class *klass, PandaList<Field *> *tagged_fields, PandaList<Field *> *fie… in LayoutFields()
577 … PandaList<Field *> *fields32, PandaList<Field *> *fields16, PandaList<Field *> *fields8, in LayoutFields()
578 PandaList<Field *> *ref_fields, bool is_static) in LayoutFields()
637 bool ClassLinker::LayoutFields(Class *klass, Span<Field> fields, bool is_static, in LayoutFields()
640 PandaList<Field *> tagged_fields; in LayoutFields()
641 PandaList<Field *> fields64; in LayoutFields()
642 PandaList<Field *> fields32; in LayoutFields()
643 PandaList<Field *> fields16; in LayoutFields()
644 PandaList<Field *> fields8; in LayoutFields()
645 PandaList<Field *> ref_fields; in LayoutFields()
647 for (auto &field : fields) { in LayoutFields() local
648 auto type = field.GetType(); in LayoutFields()
651 ref_fields.push_back(&field); in LayoutFields()
659 fields8.push_back(&field); in LayoutFields()
663 fields16.push_back(&field); in LayoutFields()
668 fields32.push_back(&field); in LayoutFields()
673 fields64.push_back(&field); in LayoutFields()
676 tagged_fields.push_back(&field); in LayoutFields()
975 … Span<Method> methods, Span<Field> fields, Class *base_class, Span<Class *> interfaces, in BuildClass()
1017 for (auto &field : fields) { in BuildClass() local
1018 field.SetClass(klass); in BuildClass()
1359 Field *ClassLinker::GetFieldById(Class *klass, const panda_file::FieldDataAccessor &field_data_acce… in GetFieldById()
1366 Field *field = is_static ? klass->FindStaticFieldById(id) : klass->FindInstanceFieldById(id); in GetFieldById() local
1368 if (field == nullptr) { in GetFieldById()
1370 …ss << "Cannot find field '" << pf.GetStringData(field_data_accessor.GetNameId()).data << "' in cla… in GetFieldById()
1376 pf.GetPandaCache()->SetFieldCache(id, field); in GetFieldById()
1377 return field; in GetFieldById()
1380 Field *ClassLinker::GetFieldBySignature(Class *klass, const panda_file::FieldDataAccessor &field_da… in GetFieldBySignature()
1387 Field *field = klass->FindField([&](const Field &fld) { in GetFieldBySignature() local
1393 // compare field class type in GetFieldBySignature()
1406 if (field == nullptr) { in GetFieldBySignature()
1408 ss << "Cannot find field '" << field_name.data << "' in class '" << klass->GetName() << "'"; in GetFieldBySignature()
1413 pf.GetPandaCache()->SetFieldCache(id, field); in GetFieldBySignature()
1414 return field; in GetFieldBySignature()
1417 Field *ClassLinker::GetField(const panda_file::File &pf, panda_file::File::EntityId id, in GetField()
1421 Field *field = pf.GetPandaCache()->GetFieldFromCache(id); in GetField() local
1422 if (field != nullptr) { in GetField()
1423 return field; in GetField()
1436 field = GetFieldById(klass, field_data_accessor, error_handler); in GetField()
1438 field = GetFieldBySignature(klass, field_data_accessor, error_handler); in GetField()
1440 return field; in GetField()
1486 Field *ClassLinker::GetField(const Method &caller, panda_file::File::EntityId id, in GetField()
1489 Field *field = caller.GetPandaFile()->GetPandaCache()->GetFieldFromCache(id); in GetField() local
1490 if (field != nullptr) { in GetField()
1491 return field; in GetField()
1494 field = GetField(*caller.GetPandaFile(), id, caller.GetClass()->GetLoadContext(), in GetField()
1496 if (LIKELY(field != nullptr)) { in GetField()
1497 caller.GetPandaFile()->GetPandaCache()->SetFieldCache(id, field); in GetField()
1499 return field; in GetField()