| Index: runtime/vm/object.h
|
| diff --git a/runtime/vm/object.h b/runtime/vm/object.h
|
| index 2510404a9de0d8e11a38dc484b0630e2b28bad16..4f38f4700caa7ccbef95ca6ef0eaee7c3713685b 100644
|
| --- a/runtime/vm/object.h
|
| +++ b/runtime/vm/object.h
|
| @@ -1775,6 +1775,39 @@ class Field : public Object {
|
| raw_ptr()->kind_bits_));
|
| }
|
|
|
| + intptr_t GuardedCid() const {
|
| + if (is_nullable() && guarded_cid() != kNullCid) {
|
| + return kDynamicCid;
|
| + }
|
| + return raw_ptr()->guarded_cid_;
|
| + }
|
| +
|
| + intptr_t guarded_cid() const { return raw_ptr()->guarded_cid_; }
|
| + void set_guarded_cid(intptr_t cid) const {
|
| + raw_ptr()->guarded_cid_ = cid;
|
| + }
|
| + static intptr_t guarded_cid_offset() {
|
| + return OFFSET_OF(RawField, guarded_cid_);
|
| + }
|
| +
|
| + bool is_nullable() const {
|
| + return raw_ptr()->is_nullable_ == kNullCid;
|
| + }
|
| + void set_is_nullable(bool val) const {
|
| + raw_ptr()->is_nullable_ = val ? kNullCid : kIllegalCid;
|
| + }
|
| + static intptr_t is_nullable_offset() {
|
| + return OFFSET_OF(RawField, is_nullable_);
|
| + }
|
| +
|
| + RawArray* dependent_code() const;
|
| + void set_dependent_code(const Array& array) const;
|
| + void RegisterDependentCode(const Code& code) const;
|
| + void UnregisterDependentCode(const Code& code) const;
|
| + void DeoptimizeDependentCode() const;
|
| + void UpdateCid(intptr_t cid) const;
|
| +
|
| +
|
| // Constructs getter and setter names for fields and vice versa.
|
| static RawString* GetterName(const String& field_name);
|
| static RawString* GetterSymbol(const String& field_name);
|
| @@ -2786,6 +2819,9 @@ class Code : public Object {
|
| void ExtractUncalledStaticCallDeoptIds(
|
| GrowableArray<intptr_t>* deopt_ids) const;
|
|
|
| + RawArray* guarded_fields() const;
|
| + void set_guarded_fields(const Array& guarded_fields) const;
|
| +
|
| private:
|
| // An object finder visitor interface.
|
| class FindRawCodeVisitor : public FindObjectVisitor {
|
| @@ -4650,6 +4686,9 @@ class Array : public Instance {
|
| }
|
| static intptr_t length_offset() { return OFFSET_OF(RawArray, length_); }
|
| static intptr_t data_offset() { return length_offset() + kWordSize; }
|
| + static intptr_t element_offset(intptr_t index) {
|
| + return data_offset() + kWordSize * index;
|
| + }
|
|
|
| RawObject* At(intptr_t index) const {
|
| return *ObjectAddr(index);
|
|
|