| Index: src/ia32/codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/codegen-ia32.cc (revision 5846)
|
| +++ src/ia32/codegen-ia32.cc (working copy)
|
| @@ -154,7 +154,7 @@
|
| safe_int32_mode_enabled_(true),
|
| function_return_is_shadowed_(false),
|
| in_spilled_code_(false),
|
| - jit_cookie_((FLAG_mask_constants_with_cookie) ? V8::Random() : 0) {
|
| + jit_cookie_((FLAG_mask_constants_with_cookie) ? V8::RandomPrivate() : 0) {
|
| }
|
|
|
|
|
| @@ -686,10 +686,10 @@
|
|
|
| void CodeGenerator::LoadGlobal() {
|
| if (in_spilled_code()) {
|
| - frame_->EmitPush(GlobalObject());
|
| + frame_->EmitPush(GlobalObjectOperand());
|
| } else {
|
| Result temp = allocator_->Allocate();
|
| - __ mov(temp.reg(), GlobalObject());
|
| + __ mov(temp.reg(), GlobalObjectOperand());
|
| frame_->Push(&temp);
|
| }
|
| }
|
| @@ -698,7 +698,7 @@
|
| void CodeGenerator::LoadGlobalReceiver() {
|
| Result temp = allocator_->Allocate();
|
| Register reg = temp.reg();
|
| - __ mov(reg, GlobalObject());
|
| + __ mov(reg, GlobalObjectOperand());
|
| __ mov(reg, FieldOperand(reg, GlobalObject::kGlobalReceiverOffset));
|
| frame_->Push(&temp);
|
| }
|
| @@ -6294,6 +6294,18 @@
|
| // Push the receiver onto the frame.
|
| Load(property->obj());
|
|
|
| + // Load the name of the function.
|
| + Load(property->key());
|
| +
|
| + // Swap the name of the function and the receiver on the stack to follow
|
| + // the calling convention for call ICs.
|
| + Result key = frame_->Pop();
|
| + Result receiver = frame_->Pop();
|
| + frame_->Push(&key);
|
| + frame_->Push(&receiver);
|
| + key.Unuse();
|
| + receiver.Unuse();
|
| +
|
| // Load the arguments.
|
| int arg_count = args->length();
|
| for (int i = 0; i < arg_count; i++) {
|
| @@ -6301,15 +6313,14 @@
|
| frame_->SpillTop();
|
| }
|
|
|
| - // Load the name of the function.
|
| - Load(property->key());
|
| -
|
| - // Call the IC initialization code.
|
| + // Place the key on top of stack and call the IC initialization code.
|
| + frame_->PushElementAt(arg_count + 1);
|
| CodeForSourcePosition(node->position());
|
| Result result =
|
| frame_->CallKeyedCallIC(RelocInfo::CODE_TARGET,
|
| arg_count,
|
| loop_nesting());
|
| + frame_->Drop(); // Drop the key still on the stack.
|
| frame_->RestoreContextRegister();
|
| frame_->Push(&result);
|
| }
|
| @@ -6778,8 +6789,8 @@
|
| __ mov(scratch2_,
|
| FieldOperand(scratch2_, GlobalObject::kGlobalContextOffset));
|
| __ cmp(scratch1_,
|
| - CodeGenerator::ContextOperand(
|
| - scratch2_, Context::STRING_FUNCTION_PROTOTYPE_MAP_INDEX));
|
| + ContextOperand(scratch2_,
|
| + Context::STRING_FUNCTION_PROTOTYPE_MAP_INDEX));
|
| __ j(not_equal, &false_result);
|
| // Set the bit in the map to indicate that it has been checked safe for
|
| // default valueOf and set true result.
|
| @@ -7934,7 +7945,7 @@
|
| // Push the builtins object found in the current global object.
|
| Result temp = allocator()->Allocate();
|
| ASSERT(temp.is_valid());
|
| - __ mov(temp.reg(), GlobalObject());
|
| + __ mov(temp.reg(), GlobalObjectOperand());
|
| __ mov(temp.reg(), FieldOperand(temp.reg(), GlobalObject::kBuiltinsOffset));
|
| frame_->Push(&temp);
|
| }
|
|
|