| Index: runtime/vm/object.h
|
| diff --git a/runtime/vm/object.h b/runtime/vm/object.h
|
| index 984a718d1b86a73f2b9edda5a31e25d5de47eaaf..cd014a3092bd609a521f47dd0f8709aaf98f7841 100644
|
| --- a/runtime/vm/object.h
|
| +++ b/runtime/vm/object.h
|
| @@ -1842,7 +1842,7 @@ class ICData : public Object {
|
|
|
| bool IsImmutable() const;
|
|
|
| - void Reset(bool is_static_call) const;
|
| + void Reset() const;
|
| void ResetData() const;
|
|
|
| // Note: only deopts with reasons before Unknown in this list are recorded in
|
| @@ -2028,7 +2028,8 @@ class ICData : public Object {
|
| const String& target_name,
|
| const Array& arguments_descriptor,
|
| intptr_t deopt_id,
|
| - intptr_t num_args_tested);
|
| + intptr_t num_args_tested,
|
| + bool is_static_call);
|
| static RawICData* NewFrom(const ICData& from, intptr_t num_args_tested);
|
|
|
| // Generates a new ICData with descriptor and data array copied (deep clone).
|
| @@ -2146,6 +2147,9 @@ class ICData : public Object {
|
| intptr_t tag() const { return raw_ptr()->tag_; }
|
| #endif
|
|
|
| + void SetIsStaticCall(bool static_call) const;
|
| + bool is_static_call() const;
|
| +
|
| private:
|
| static RawICData* New();
|
|
|
| @@ -2167,7 +2171,9 @@ class ICData : public Object {
|
| kDeoptReasonPos = kNumArgsTestedPos + kNumArgsTestedSize,
|
| kDeoptReasonSize = kLastRecordedDeoptReason + 1,
|
| kRangeFeedbackPos = kDeoptReasonPos + kDeoptReasonSize,
|
| - kRangeFeedbackSize = kBitsPerRangeFeedback * kRangeFeedbackSlots
|
| + kRangeFeedbackSize = kBitsPerRangeFeedback * kRangeFeedbackSlots,
|
| + kStaticCallPos = kRangeFeedbackPos + kRangeFeedbackSize,
|
| + kStaticCallSize = 1,
|
| };
|
|
|
| class NumArgsTestedBits : public BitField<uint32_t,
|
| @@ -2183,6 +2189,10 @@ class ICData : public Object {
|
| ICData::kRangeFeedbackPos,
|
| ICData::kRangeFeedbackSize> {};
|
|
|
| + class StaticCallBit : public BitField<uint32_t,
|
| + bool,
|
| + ICData::kStaticCallPos,
|
| + ICData::kStaticCallSize> {};
|
| #if defined(DEBUG)
|
| // Used in asserts to verify that a check is not added twice.
|
| bool HasCheck(const GrowableArray<intptr_t>& cids) const;
|
| @@ -2196,7 +2206,8 @@ class ICData : public Object {
|
| const String& target_name,
|
| const Array& arguments_descriptor,
|
| intptr_t deopt_id,
|
| - intptr_t num_args_tested);
|
| + intptr_t num_args_tested,
|
| + bool is_static_call);
|
|
|
| static void WriteSentinel(const Array& data, intptr_t test_entry_length);
|
|
|
| @@ -2275,7 +2286,6 @@ class Function : public Object {
|
| // Reloading support:
|
| void Reparent(const Class& new_cls) const;
|
| void ZeroEdgeCounters() const;
|
| - void FillICDataWithSentinels(const Code& code) const;
|
|
|
| RawClass* Owner() const;
|
| RawClass* origin() const;
|
| @@ -4539,6 +4549,10 @@ class Code : public Object {
|
| StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw());
|
| }
|
|
|
| + // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas
|
| + // that are embedded inside the Code object.
|
| + void ResetICDatas() const;
|
| +
|
| TokenPosition GetTokenPositionAt(intptr_t offset) const;
|
|
|
| // Array of DeoptInfo objects.
|
|
|