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

Unified Diff: runtime/vm/intermediate_language_mips.cc

Issue 254723003: Remember all deopt reasons in ic_data, not just the last one. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 8 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/intermediate_language_ia32.cc ('k') | runtime/vm/intermediate_language_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intermediate_language_mips.cc
===================================================================
--- runtime/vm/intermediate_language_mips.cc (revision 35455)
+++ runtime/vm/intermediate_language_mips.cc (working copy)
@@ -675,7 +675,7 @@
Register cid_reg = locs()->temp(0).reg();
Label* deopt = CanDeoptimize() ?
- compiler->AddDeoptStub(deopt_id(), kDeoptTestCids) : NULL;
+ compiler->AddDeoptStub(deopt_id(), ICData::kDeoptTestCids) : NULL;
const intptr_t true_result = (kind() == Token::kIS) ? 1 : 0;
const ZoneGrowableArray<intptr_t>& data = cid_results();
@@ -1176,7 +1176,8 @@
__ SmiTag(result);
break;
case kTypedDataInt32ArrayCid: {
- Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptInt32Load);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(),
+ ICData::kDeoptInt32Load);
__ lw(result, element_address);
// Verify that the signed value in 'result' can fit inside a Smi.
__ BranchSignedLess(result, 0xC0000000, deopt);
@@ -1184,7 +1185,8 @@
}
break;
case kTypedDataUint32ArrayCid: {
- Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptUint32Load);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(),
+ ICData::kDeoptUint32Load);
__ lw(result, element_address);
// Verify that the unsigned value in 'result' can fit inside a Smi.
__ LoadImmediate(TMP, 0xC0000000);
@@ -1473,7 +1475,7 @@
Label ok, fail_label;
Label* deopt = compiler->is_optimizing() ?
- compiler->AddDeoptStub(deopt_id(), kDeoptGuardField) : NULL;
+ compiler->AddDeoptStub(deopt_id(), ICData::kDeoptGuardField) : NULL;
Label* fail = (deopt != NULL) ? deopt : &fail_label;
@@ -2484,7 +2486,8 @@
Register left = locs.in(0).reg();
Register result = locs.out(0).reg();
Label* deopt = shift_left->CanDeoptimize() ?
- compiler->AddDeoptStub(shift_left->deopt_id(), kDeoptBinarySmiOp) : NULL;
+ compiler->AddDeoptStub(shift_left->deopt_id(), ICData::kDeoptBinarySmiOp)
+ : NULL;
__ TraceSimMsg("EmitSmiShiftLeft");
@@ -2644,7 +2647,7 @@
Register result = locs()->out(0).reg();
Label* deopt = NULL;
if (CanDeoptimize()) {
- deopt = compiler->AddDeoptStub(deopt_id(), kDeoptBinarySmiOp);
+ deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinarySmiOp);
}
if (locs()->in(1).IsConstant()) {
@@ -2953,7 +2956,8 @@
void CheckEitherNonSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptBinaryDoubleOp);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(),
+ ICData::kDeoptBinaryDoubleOp);
intptr_t left_cid = left()->Type()->ToCid();
intptr_t right_cid = right()->Type()->ToCid();
Register left = locs()->in(0).reg();
@@ -3027,7 +3031,8 @@
__ mtc1(value, STMP1);
__ cvtdw(result, STMP1);
} else {
- Label* deopt = compiler->AddDeoptStub(deopt_id_, kDeoptBinaryDoubleOp);
+ Label* deopt = compiler->AddDeoptStub(deopt_id_,
+ ICData::kDeoptBinaryDoubleOp);
Label is_smi, done;
__ andi(CMPRES1, value, Immediate(kSmiTagMask));
@@ -3613,8 +3618,7 @@
Register result = locs()->out(0).reg();
switch (op_kind()) {
case Token::kNEGATE: {
- Label* deopt = compiler->AddDeoptStub(deopt_id(),
- kDeoptUnaryOp);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnaryOp);
__ SubuDetectOverflow(result, ZR, value, CMPRES1);
__ bltz(CMPRES1, deopt);
break;
@@ -3732,7 +3736,7 @@
void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptDoubleToSmi);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptDoubleToSmi);
Register result = locs()->out(0).reg();
DRegister value = locs()->in(0).fpu_reg();
__ cvtwd(STMP1, value);
@@ -3954,7 +3958,7 @@
void MergedMathInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
Label* deopt = NULL;
if (CanDeoptimize()) {
- deopt = compiler->AddDeoptStub(deopt_id(), kDeoptBinarySmiOp);
+ deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinarySmiOp);
}
if (kind() == MergedMathInstr::kTruncDivMod) {
Register left = locs()->in(0).reg();
@@ -4018,14 +4022,14 @@
void PolymorphicInstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- Label* deopt = compiler->AddDeoptStub(deopt_id(),
- kDeoptPolymorphicInstanceCallTestFail);
+ Label* deopt = compiler->AddDeoptStub(
+ deopt_id(), ICData::kDeoptPolymorphicInstanceCallTestFail);
__ TraceSimMsg("PolymorphicInstanceCallInstr");
if (ic_data().NumberOfChecks() == 0) {
__ b(deopt);
return;
}
- ASSERT(ic_data().num_args_tested() == 1);
+ ASSERT(ic_data().NumArgsTested() == 1);
if (!with_checks()) {
ASSERT(ic_data().HasOneTarget());
const Function& target = Function::ZoneHandle(ic_data().GetTargetAt(0));
@@ -4083,8 +4087,8 @@
void CheckClassInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- const DeoptReasonId deopt_reason =
- licm_hoisted_ ? kDeoptHoistedCheckClass : kDeoptCheckClass;
+ const ICData::DeoptReasonId deopt_reason = licm_hoisted_ ?
+ ICData::kDeoptHoistedCheckClass : ICData::kDeoptCheckClass;
if (IsNullCheck()) {
Label* deopt = compiler->AddDeoptStub(deopt_id(), deopt_reason);
__ BranchEqual(locs()->in(0).reg(),
@@ -4136,8 +4140,7 @@
void CheckSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TraceSimMsg("CheckSmiInstr");
Register value = locs()->in(0).reg();
- Label* deopt = compiler->AddDeoptStub(deopt_id(),
- kDeoptCheckSmi);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckSmi);
__ andi(CMPRES1, value, Immediate(kSmiTagMask));
__ bne(CMPRES1, ZR, deopt);
}
@@ -4155,7 +4158,8 @@
void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
- Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptCheckArrayBound);
+ Label* deopt = compiler->AddDeoptStub(deopt_id(),
+ ICData::kDeoptCheckArrayBound);
Location length_loc = locs()->in(kLengthPos);
Location index_loc = locs()->in(kIndexPos);
« no previous file with comments | « runtime/vm/intermediate_language_ia32.cc ('k') | runtime/vm/intermediate_language_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698