| Index: src/arm/full-codegen-arm.cc
|
| diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
|
| index b787f69c50cb3a79bda22b3cd27de0dcb8c5ff03..68a8d70ecd27b63cb80b0ff62c0570e56b641994 100644
|
| --- a/src/arm/full-codegen-arm.cc
|
| +++ b/src/arm/full-codegen-arm.cc
|
| @@ -2659,7 +2659,7 @@ void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr,
|
| }
|
|
|
|
|
| -void FullCodeGenerator::EmitCallWithStub(Call* expr) {
|
| +void FullCodeGenerator::EmitCallWithStub(Call* expr, CallFunctionFlags flags) {
|
| // Code common for calls using the call stub.
|
| ZoneList<Expression*>* args = expr->arguments();
|
| int arg_count = args->length();
|
| @@ -2671,14 +2671,15 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr) {
|
| // Record source position for debugger.
|
| SetSourcePosition(expr->position());
|
|
|
| + // Record call targets in unoptimized code.
|
| + flags = static_cast<CallFunctionFlags>(flags | RECORD_CALL_TARGET);
|
| Handle<Object> uninitialized =
|
| TypeFeedbackCells::UninitializedSentinel(isolate());
|
| Handle<Cell> cell = isolate()->factory()->NewCell(uninitialized);
|
| RecordTypeFeedbackCell(expr->CallFeedbackId(), cell);
|
| __ mov(r2, Operand(cell));
|
|
|
| - // Record call targets in unoptimized code.
|
| - CallFunctionStub stub(arg_count, RECORD_CALL_TARGET);
|
| + CallFunctionStub stub(arg_count, flags);
|
| __ ldr(r1, MemOperand(sp, (arg_count + 1) * kPointerSize));
|
| __ CallStub(&stub, expr->CallFeedbackId());
|
| RecordJSReturnSite(expr);
|
| @@ -2805,7 +2806,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|
|
| // The receiver is either the global receiver or an object found
|
| // by LoadContextSlot.
|
| - EmitCallWithStub(expr);
|
| + EmitCallWithStub(expr, NO_CALL_FUNCTION_FLAGS);
|
| } else if (property != NULL) {
|
| { PreservePositionScope scope(masm()->positions_recorder());
|
| VisitForStackValue(property->obj());
|
| @@ -2825,7 +2826,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| __ LoadRoot(r1, Heap::kUndefinedValueRootIndex);
|
| __ push(r1);
|
| // Emit function call.
|
| - EmitCallWithStub(expr);
|
| + EmitCallWithStub(expr, NO_CALL_FUNCTION_FLAGS);
|
| }
|
|
|
| #ifdef DEBUG
|
|
|