| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index bfa49d51d0ac4e3dfdd458f26e1bcc9d2f5fd86a..2897234977d0ace3dd3259635392277e7c9d02fb 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -130,9 +130,10 @@ static void InitializeArrayConstructorDescriptor(
|
| int constant_stack_parameter_count) {
|
| // register state
|
| // eax -- number of arguments
|
| + // edi -- function
|
| // ebx -- type info cell with elements kind
|
| - static Register registers[] = { ebx };
|
| - descriptor->register_param_count_ = 1;
|
| + static Register registers[] = { edi, ebx };
|
| + descriptor->register_param_count_ = 2;
|
|
|
| if (constant_stack_parameter_count != 0) {
|
| // stack param count needs (constructor pointer, and single argument)
|
| @@ -7921,15 +7922,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
|
| // Get the elements kind and case on that.
|
| __ cmp(ebx, Immediate(undefined_sentinel));
|
| __ j(equal, &no_info);
|
| - __ mov(edx, FieldOperand(ebx, kPointerSize));
|
| -
|
| - // There is no info if the call site went megamorphic either
|
| -
|
| - // TODO(mvstanton): Really? I thought if it was the array function that
|
| - // the cell wouldn't get stamped as megamorphic.
|
| - __ cmp(edx, Immediate(TypeFeedbackCells::MegamorphicSentinel(
|
| - masm->isolate())));
|
| - __ j(equal, &no_info);
|
| + __ mov(edx, FieldOperand(ebx, JSGlobalPropertyCell::kValueOffset));
|
| + __ JumpIfNotSmi(edx, &no_info);
|
| __ SmiUntag(edx);
|
| __ jmp(&switch_ready);
|
| __ bind(&no_info);
|
|
|