5#ifndef RUNTIME_VM_FIELD_TABLE_H_
6#define RUNTIME_VM_FIELD_TABLE_H_
21class FieldInvalidator;
32 isolate_group_(isolate_group),
33 is_ready_to_use_(isolate == nullptr) {}
41 intptr_t
Capacity()
const {
return capacity_; }
50 bool IsValidIndex(intptr_t index)
const {
return index >= 0 && index < top_; }
54 bool Register(
const Field& field, intptr_t expected_field_id = -1);
60 void Free(intptr_t index);
62 ObjectPtr At(intptr_t index,
bool concurrent_use =
false)
const {
78 bool concurrent_use =
false) {
100 void Grow(intptr_t new_capacity);
122 bool is_ready_to_use_ =
false;
static constexpr int kInitialCapacity
bool Register(const Field &field, intptr_t expected_field_id=-1)
void Free(intptr_t index)
void SetAt(intptr_t index, ObjectPtr raw_instance, bool concurrent_use=false)
ObjectPtr At(intptr_t index, bool concurrent_use=false) const
void AllocateIndex(intptr_t index)
bool IsReadyToUse() const
intptr_t NumFieldIds() const
bool IsValidIndex(intptr_t index) const
static constexpr int kCapacityIncrement
static intptr_t FieldOffsetFor(intptr_t field_id)
intptr_t Capacity() const
FieldTable * Clone(Isolate *for_isolate, IsolateGroup *for_isolate_group=nullptr)
FieldTable(Isolate *isolate, IsolateGroup *isolate_group=nullptr)
void VisitObjectPointers(ObjectPointerVisitor *visitor)