Index: runtime/vm/simulator_dbc.cc |
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc |
index 81a4f32cdb3408716baa34d610af5ad7cf16429a..16d8ea0491a6a8b79cc3e92e4896842caa243b84 100644 |
--- a/runtime/vm/simulator_dbc.cc |
+++ b/runtime/vm/simulator_dbc.cc |
@@ -1979,6 +1979,18 @@ RawObject* Simulator::Call(const Code& code, |
} |
{ |
+ BYTECODE(LoadIndexed8Float64, A_B_C); |
+ ASSERT(RawObject::IsTypedDataClassId(FP[rB]->GetClassId())); |
+ RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rB]); |
+ RawSmi* index = RAW_CAST(Smi, FP[rC]); |
+ ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
+ const int64_t value = |
+ reinterpret_cast<int64_t*>(array->ptr()->data())[Smi::Value(index)]; |
+ FP[rA] = reinterpret_cast<RawObject*>(value); |
+ DISPATCH(); |
+ } |
+ |
+ { |
BYTECODE(StoreIndexedFloat64, A_B_C); |
uint8_t* data = SimulatorHelpers::GetTypedData(FP[rA], FP[rB], 3); |
*reinterpret_cast<uint64_t*>(data) = reinterpret_cast<uint64_t>(FP[rC]); |
@@ -1986,6 +1998,17 @@ RawObject* Simulator::Call(const Code& code, |
} |
{ |
+ BYTECODE(StoreIndexed8Float64, A_B_C); |
+ ASSERT(RawObject::IsTypedDataClassId(FP[rA]->GetClassId())); |
+ RawTypedData* array = reinterpret_cast<RawTypedData*>(FP[rA]); |
+ RawSmi* index = RAW_CAST(Smi, FP[rB]); |
+ ASSERT(SimulatorHelpers::CheckIndex(index, array->ptr()->length_)); |
+ const int64_t value = reinterpret_cast<int64_t>(FP[rC]); |
+ reinterpret_cast<int64_t*>(array->ptr()->data())[Smi::Value(index)] = value; |
+ DISPATCH(); |
+ } |
+ |
+ { |
BYTECODE(BoxInt32, A_D); |
// Casts sign-extend high 32 bits from low 32 bits. |
const intptr_t value = reinterpret_cast<intptr_t>(FP[rD]); |
@@ -2112,12 +2135,24 @@ RawObject* Simulator::Call(const Code& code, |
} |
{ |
+ BYTECODE(LoadIndexed8Float64, A_B_C); |
+ UNREACHABLE(); |
+ DISPATCH(); |
+ } |
+ |
+ { |
BYTECODE(StoreIndexedFloat64, A_B_C); |
UNREACHABLE(); |
DISPATCH(); |
} |
{ |
+ BYTECODE(StoreIndexed8Float64, A_B_C); |
+ UNREACHABLE(); |
+ DISPATCH(); |
+ } |
+ |
+ { |
BYTECODE(BoxInt32, A_D); |
UNREACHABLE(); |
DISPATCH(); |