Index: runtime/vm/intermediate_language.cc |
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc |
index 052b3c73ca60b1d2c9839fa99845d881194b09f4..ed56e356a6d7ea6c6c299ec5ad41eb56ced3aeb0 100644 |
--- a/runtime/vm/intermediate_language.cc |
+++ b/runtime/vm/intermediate_language.cc |
@@ -42,6 +42,17 @@ Definition::Definition() |
} |
+ICData* Instruction::GetICData(const Array& ic_data_array) const { |
+ ICData& ic_data = ICData::ZoneHandle(); |
+ // The deopt_id can be outside the range of the IC data array for |
+ // computations added in the optimizing compiler. |
+ if (!ic_data_array.IsNull() && (deopt_id_ < ic_data_array.Length())) { |
+ ic_data ^= ic_data_array.At(deopt_id_); |
+ } |
+ return &ic_data; |
+} |
+ |
+ |
intptr_t Instruction::Hashcode() const { |
intptr_t result = tag(); |
for (intptr_t i = 0; i < InputCount(); ++i) { |