Index: src/mips/full-codegen-mips.cc |
diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc |
index b042a3eca36cdf64d27c538519e300951852944e..d690ca3fcd0801d495436a97d71b9fc4ed999a8c 100644 |
--- a/src/mips/full-codegen-mips.cc |
+++ b/src/mips/full-codegen-mips.cc |
@@ -2042,8 +2042,9 @@ void FullCodeGenerator::EmitCallWithIC(Call* expr, |
// Record source position for debugger. |
SetSourcePosition(expr->position()); |
// Call the IC initialization code. |
+ InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP; |
Handle<Code> ic = |
- isolate()->stub_cache()->ComputeCallInitialize(arg_count, mode); |
+ isolate()->stub_cache()->ComputeCallInitialize(arg_count, in_loop, mode); |
__ Call(ic, mode, expr->id()); |
RecordJSReturnSite(expr); |
// Restore context register. |
@@ -2074,8 +2075,9 @@ void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr, |
// Record source position for debugger. |
SetSourcePosition(expr->position()); |
// Call the IC initialization code. |
+ InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP; |
Handle<Code> ic = |
- isolate()->stub_cache()->ComputeKeyedCallInitialize(arg_count); |
+ isolate()->stub_cache()->ComputeKeyedCallInitialize(arg_count, in_loop); |
__ lw(a2, MemOperand(sp, (arg_count + 1) * kPointerSize)); // Key. |
__ Call(ic, RelocInfo::CODE_TARGET, expr->id()); |
RecordJSReturnSite(expr); |
@@ -2096,7 +2098,8 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr, CallFunctionFlags flags) { |
} |
// Record source position for debugger. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, flags); |
+ InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP; |
+ CallFunctionStub stub(arg_count, in_loop, flags); |
__ CallStub(&stub); |
RecordJSReturnSite(expr); |
// Restore context register. |
@@ -2194,7 +2197,8 @@ void FullCodeGenerator::VisitCall(Call* expr) { |
} |
// Record source position for debugger. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, RECEIVER_MIGHT_BE_IMPLICIT); |
+ InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP; |
+ CallFunctionStub stub(arg_count, in_loop, RECEIVER_MIGHT_BE_IMPLICIT); |
__ CallStub(&stub); |
RecordJSReturnSite(expr); |
// Restore context register. |
@@ -3570,7 +3574,9 @@ void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) { |
__ li(a2, Operand(expr->name())); |
RelocInfo::Mode mode = RelocInfo::CODE_TARGET; |
Handle<Code> ic = |
- isolate()->stub_cache()->ComputeCallInitialize(arg_count, mode); |
+ isolate()->stub_cache()->ComputeCallInitialize(arg_count, |
+ NOT_IN_LOOP, |
+ mode); |
__ Call(ic, mode, expr->id()); |
// Restore context register. |
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); |