| Index: src/ia32/codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/codegen-ia32.cc (revision 4791)
|
| +++ src/ia32/codegen-ia32.cc (working copy)
|
| @@ -5949,18 +5949,31 @@
|
| ref.GetValue();
|
| // Use global object as receiver.
|
| LoadGlobalReceiver();
|
| + // Call the function.
|
| + CallWithArguments(args, RECEIVER_MIGHT_BE_VALUE, node->position());
|
| } else {
|
| + // Push the receiver onto the frame.
|
| Load(property->obj());
|
| - frame()->Dup();
|
| +
|
| + // Load the arguments.
|
| + int arg_count = args->length();
|
| + for (int i = 0; i < arg_count; i++) {
|
| + Load(args->at(i));
|
| + frame_->SpillTop();
|
| + }
|
| +
|
| + // Load the name of the function.
|
| Load(property->key());
|
| - Result function = EmitKeyedLoad();
|
| - Result receiver = frame_->Pop();
|
| - frame_->Push(&function);
|
| - frame_->Push(&receiver);
|
| +
|
| + // Call the IC initialization code.
|
| + CodeForSourcePosition(node->position());
|
| + Result result =
|
| + frame_->CallKeyedCallIC(RelocInfo::CODE_TARGET,
|
| + arg_count,
|
| + loop_nesting());
|
| + frame_->RestoreContextRegister();
|
| + frame_->Push(&result);
|
| }
|
| -
|
| - // Call the function.
|
| - CallWithArguments(args, RECEIVER_MIGHT_BE_VALUE, node->position());
|
| }
|
|
|
| } else {
|
|
|