| Index: src/arm/full-codegen-arm.cc
|
| diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
|
| index bad1003eea687a33725cb734c1c5fb0cc0c07f9e..8672ccbe030994f99a532e62b2b5c63982e834f7 100644
|
| --- a/src/arm/full-codegen-arm.cc
|
| +++ b/src/arm/full-codegen-arm.cc
|
| @@ -131,6 +131,8 @@ void FullCodeGenerator::Generate() {
|
| handler_table_ =
|
| isolate()->factory()->NewFixedArray(function()->handler_count(), TENURED);
|
|
|
| + InitializeFeedbackVector();
|
| +
|
| profiling_counter_ = isolate()->factory()->NewCell(
|
| Handle<Smi>(Smi::FromInt(FLAG_interrupt_budget), isolate()));
|
| SetFunctionPosition(function());
|
| @@ -1164,8 +1166,12 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| Label non_proxy;
|
| __ bind(&fixed_array);
|
|
|
| + Handle<Object> feedback = Handle<Object>(
|
| + Smi::FromInt(TypeFeedbackInfo::kForInFastCaseMarker),
|
| + isolate());
|
| + StoreFeedbackVectorSlot(slot, feedback);
|
| __ Move(r1, FeedbackVector());
|
| - __ mov(r2, Operand(TypeFeedbackInfo::MegamorphicSentinel(isolate())));
|
| + __ mov(r2, Operand(Smi::FromInt(TypeFeedbackInfo::kForInSlowCaseMarker)));
|
| __ str(r2, FieldMemOperand(r1, FixedArray::OffsetOfElementAt(slot)));
|
|
|
| __ mov(r1, Operand(Smi::FromInt(1))); // Smi indicates slow check
|
| @@ -2705,6 +2711,9 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr) {
|
| // Record source position for debugger.
|
| SetSourcePosition(expr->position());
|
|
|
| + Handle<Object> uninitialized =
|
| + TypeFeedbackInfo::UninitializedSentinel(isolate());
|
| + StoreFeedbackVectorSlot(expr->CallFeedbackSlot(), uninitialized);
|
| __ Move(r2, FeedbackVector());
|
| __ mov(r3, Operand(Smi::FromInt(expr->CallFeedbackSlot())));
|
|
|
| @@ -2891,6 +2900,9 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) {
|
| __ ldr(r1, MemOperand(sp, arg_count * kPointerSize));
|
|
|
| // Record call targets in unoptimized code.
|
| + Handle<Object> uninitialized =
|
| + TypeFeedbackInfo::UninitializedSentinel(isolate());
|
| + StoreFeedbackVectorSlot(expr->CallNewFeedbackSlot(), uninitialized);
|
| __ Move(r2, FeedbackVector());
|
| __ mov(r3, Operand(Smi::FromInt(expr->CallNewFeedbackSlot())));
|
|
|
|
|