Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1664)

Unified Diff: runtime/vm/deopt_instructions.cc

Issue 626223002: Add unboxed Mint for X64 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/deopt_instructions.h ('k') | runtime/vm/flow_graph_compiler_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/deopt_instructions.cc
diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc
index 45315d3e53f8a373f7e24bad0f99fd95c6a956d0..ad3397791ecb908e9e070c3a5bf88b41ee6be2ae 100644
--- a/runtime/vm/deopt_instructions.cc
+++ b/runtime/vm/deopt_instructions.cc
@@ -190,6 +190,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:
@@ -575,6 +576,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,
@@ -904,6 +906,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:
@@ -948,6 +952,7 @@ const char* DeoptInstr::KindToCString(Kind kind) {
return "word";
case kDouble:
return "double";
+ case kMint:
case kMintPair:
return "mint";
case kInt32:
@@ -1130,11 +1135,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:
« no previous file with comments | « runtime/vm/deopt_instructions.h ('k') | runtime/vm/flow_graph_compiler_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698