Index: src/arm64/code-stubs-arm64.cc |
diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc |
index 6dc564da4a9d434a7643b1a3102f5d1dd0cfb6cb..37902e7b910421accf19f4fb78c40b3a0f02fdb6 100644 |
--- a/src/arm64/code-stubs-arm64.cc |
+++ b/src/arm64/code-stubs-arm64.cc |
@@ -2123,21 +2123,24 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { |
__ Ldr(args_offset, |
ContextMemOperand(global_ctx, |
- Context::SLOPPY_ARGUMENTS_BOILERPLATE_INDEX)); |
+ Context::SLOPPY_ARGUMENTS_MAP_INDEX)); |
__ Ldr(aliased_args_offset, |
ContextMemOperand(global_ctx, |
- Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX)); |
+ Context::ALIASED_ARGUMENTS_MAP_INDEX)); |
__ Cmp(mapped_params, 0); |
__ CmovX(args_offset, aliased_args_offset, ne); |
// Copy the JS object part. |
- __ CopyFields(alloc_obj, args_offset, CPURegList(x10, x12, x13), |
- JSObject::kHeaderSize / kPointerSize); |
+ __ Str(args_offset, FieldMemOperand(alloc_obj, JSObject::kMapOffset)); |
Igor Sheludko
2014/07/02 14:17:14
While you are here: args_offset and aliased_args_o
|
+ __ LoadRoot(x10, Heap::kEmptyFixedArrayRootIndex); |
+ __ Str(x10, FieldMemOperand(alloc_obj, JSObject::kPropertiesOffset)); |
+ __ Str(x10, FieldMemOperand(alloc_obj, JSObject::kElementsOffset)); |
// Set up the callee in-object property. |
STATIC_ASSERT(Heap::kArgumentsCalleeIndex == 1); |
const int kCalleeOffset = JSObject::kHeaderSize + |
Heap::kArgumentsCalleeIndex * kPointerSize; |
+ __ AssertNotSmi(function); |
__ Str(function, FieldMemOperand(alloc_obj, kCalleeOffset)); |
// Use the length and set that as an in-object property. |
@@ -2344,7 +2347,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { |
GlobalObject::kNativeContextOffset)); |
__ Ldr(args_offset, |
ContextMemOperand(global_ctx, |
- Context::STRICT_ARGUMENTS_BOILERPLATE_INDEX)); |
+ Context::STRICT_ARGUMENTS_MAP_INDEX)); |
// x0 alloc_obj pointer to allocated objects: parameter array and |
// arguments object |
@@ -2353,10 +2356,10 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { |
// x3 function function pointer |
// x4 args_offset offset to arguments boilerplate |
// x13 param_count number of parameters passed to function |
- |
- // Copy the JS object part. |
- __ CopyFields(alloc_obj, args_offset, CPURegList(x5, x6, x7), |
- JSObject::kHeaderSize / kPointerSize); |
+ __ Str(args_offset, FieldMemOperand(alloc_obj, JSObject::kMapOffset)); |
Igor Sheludko
2014/07/02 14:17:14
Same here: strict_args_map + outdated comment abou
|
+ __ LoadRoot(x5, Heap::kEmptyFixedArrayRootIndex); |
+ __ Str(x5, FieldMemOperand(alloc_obj, JSObject::kPropertiesOffset)); |
+ __ Str(x5, FieldMemOperand(alloc_obj, JSObject::kElementsOffset)); |
// Set the smi-tagged length as an in-object property. |
STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0); |