| Index: src/x64/stub-cache-x64.cc
|
| ===================================================================
|
| --- src/x64/stub-cache-x64.cc (revision 3528)
|
| +++ src/x64/stub-cache-x64.cc (working copy)
|
| @@ -1827,17 +1827,15 @@
|
| // depending on the this.x = ...; assignment in the function.
|
| for (int i = 0; i < shared->this_property_assignments_count(); i++) {
|
| if (shared->IsThisPropertyAssignmentArgument(i)) {
|
| - Label not_passed;
|
| - // Set the property to undefined.
|
| - __ movq(Operand(r9, i * kPointerSize), r8);
|
| // Check if the argument assigned to the property is actually passed.
|
| + // If argument is not passed the property is set to undefined,
|
| + // otherwise find it on the stack.
|
| int arg_number = shared->GetThisPropertyAssignmentArgument(i);
|
| + __ movq(rbx, r8);
|
| __ cmpq(rax, Immediate(arg_number));
|
| - __ j(below_equal, ¬_passed);
|
| - // Argument passed - find it on the stack.
|
| - __ movq(rbx, Operand(rcx, arg_number * -kPointerSize));
|
| + __ cmovq(above, rbx, Operand(rcx, arg_number * -kPointerSize));
|
| + // Store value in the property.
|
| __ movq(Operand(r9, i * kPointerSize), rbx);
|
| - __ bind(¬_passed);
|
| } else {
|
| // Set the property to the constant value.
|
| Handle<Object> constant(shared->GetThisPropertyAssignmentConstant(i));
|
|
|