Index: runtime/vm/object.cc |
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
index 5003e7e1123010340703167e50e3252ce2356933..b1b54c419f33fe3519d737d37e1513f86435cfa0 100644 |
--- a/runtime/vm/object.cc |
+++ b/runtime/vm/object.cc |
@@ -12558,6 +12558,17 @@ void ICData::AddDeoptReason(DeoptReasonId reason) const { |
} |
+void ICData::SetIsStaticCall(bool static_call) const { |
+ StoreNonPointer(&raw_ptr()->state_bits_, |
+ StaticCallBit::update(static_call, raw_ptr()->state_bits_)); |
+} |
+ |
+ |
+bool ICData::is_static_call() const { |
+ return StaticCallBit::decode(raw_ptr()->state_bits_); |
+} |
+ |
+ |
void ICData::set_state_bits(uint32_t bits) const { |
StoreNonPointer(&raw_ptr()->state_bits_, bits); |
} |
@@ -13461,6 +13472,8 @@ RawICData* ICData::NewFrom(const ICData& from, intptr_t num_args_tested) { |
num_args_tested)); |
// Copy deoptimization reasons. |
result.SetDeoptReasons(from.DeoptReasons()); |
+ // Copy whether or not this is a static call. |
+ result.SetIsStaticCall(from.is_static_call()); |
return result.raw(); |
} |
@@ -13484,6 +13497,7 @@ RawICData* ICData::Clone(const ICData& from) { |
obj = from_array.At(i); |
cloned_array.SetAt(i, obj); |
} |
+ result.SetIsStaticCall(from.is_static_call()); |
result.set_ic_data_array(cloned_array); |
// Copy deoptimization reasons. |
result.SetDeoptReasons(from.DeoptReasons()); |