| Index: runtime/vm/deopt_instructions.cc
|
| diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc
|
| index 9fe4a33259a34b9859ea917ae71f7a0ecfd72c0a..4c87e37f31deaf35f82fb7e9390fc0aa3bd76c72 100644
|
| --- a/runtime/vm/deopt_instructions.cc
|
| +++ b/runtime/vm/deopt_instructions.cc
|
| @@ -193,6 +193,7 @@ static bool IsObjectInstruction(DeoptInstr::Kind kind) {
|
| case DeoptInstr::kFloat64x2:
|
| case DeoptInstr::kWord:
|
| case DeoptInstr::kDouble:
|
| + case DeoptInstr::kMint:
|
| case DeoptInstr::kMintPair:
|
| case DeoptInstr::kInt32:
|
| case DeoptInstr::kUint32:
|
| @@ -569,6 +570,7 @@ class DeoptIntInstr : public DeoptIntegerInstrBase {
|
|
|
| typedef DeoptIntInstr<DeoptInstr::kUint32, uint32_t> DeoptUint32Instr;
|
| typedef DeoptIntInstr<DeoptInstr::kInt32, int32_t> DeoptInt32Instr;
|
| +typedef DeoptIntInstr<DeoptInstr::kMint, int64_t> DeoptMintInstr;
|
|
|
|
|
| template<DeoptInstr::Kind K,
|
| @@ -898,6 +900,8 @@ DeoptInstr* DeoptInstr::Create(intptr_t kind_as_int, intptr_t source_index) {
|
| return new DeoptWordInstr(source_index);
|
| case kDouble:
|
| return new DeoptDoubleInstr(source_index);
|
| + case kMint:
|
| + return new DeoptMintInstr(source_index);
|
| case kMintPair:
|
| return new DeoptMintPairInstr(source_index);
|
| case kInt32:
|
| @@ -942,6 +946,7 @@ const char* DeoptInstr::KindToCString(Kind kind) {
|
| return "word";
|
| case kDouble:
|
| return "double";
|
| + case kMint:
|
| case kMintPair:
|
| return "mint";
|
| case kInt32:
|
| @@ -1124,11 +1129,16 @@ void DeoptInfoBuilder::AddCopy(Value* value,
|
| ToCpuRegisterSource(source_loc));
|
| break;
|
| case kUnboxedMint: {
|
| - ASSERT(source_loc.IsPairLocation());
|
| - PairLocation* pair = source_loc.AsPairLocation();
|
| - deopt_instr = new(isolate()) DeoptMintPairInstr(
|
| - ToCpuRegisterSource(pair->At(0)),
|
| - ToCpuRegisterSource(pair->At(1)));
|
| + if (source_loc.IsPairLocation()) {
|
| + PairLocation* pair = source_loc.AsPairLocation();
|
| + deopt_instr = new(isolate()) DeoptMintPairInstr(
|
| + ToCpuRegisterSource(pair->At(0)),
|
| + ToCpuRegisterSource(pair->At(1)));
|
| + } else {
|
| + ASSERT(!source_loc.IsPairLocation());
|
| + deopt_instr = new(isolate()) DeoptMintInstr(
|
| + ToCpuRegisterSource(source_loc));
|
| + }
|
| break;
|
| }
|
| case kUnboxedInt32:
|
|
|