Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 14121006: ARM: Small copy optimization. Copying 64bits at a time. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4430 matching lines...) Expand 10 before | Expand all | Expand 10 after
4441 __ Allocate(r1, r0, r2, r3, &runtime, 4441 __ Allocate(r1, r0, r2, r3, &runtime,
4442 static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS)); 4442 static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS));
4443 4443
4444 // Get the arguments boilerplate from the current native context. 4444 // Get the arguments boilerplate from the current native context.
4445 __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 4445 __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
4446 __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); 4446 __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset));
4447 __ ldr(r4, MemOperand(r4, Context::SlotOffset( 4447 __ ldr(r4, MemOperand(r4, Context::SlotOffset(
4448 Context::STRICT_MODE_ARGUMENTS_BOILERPLATE_INDEX))); 4448 Context::STRICT_MODE_ARGUMENTS_BOILERPLATE_INDEX)));
4449 4449
4450 // Copy the JS object part. 4450 // Copy the JS object part.
4451 __ CopyFields(r0, r4, r3.bit(), JSObject::kHeaderSize / kPointerSize); 4451 __ CopyFields(r0, r4, d0, s0, JSObject::kHeaderSize / kPointerSize);
4452 4452
4453 // Get the length (smi tagged) and set that as an in-object property too. 4453 // Get the length (smi tagged) and set that as an in-object property too.
4454 STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0); 4454 STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0);
4455 __ ldr(r1, MemOperand(sp, 0 * kPointerSize)); 4455 __ ldr(r1, MemOperand(sp, 0 * kPointerSize));
4456 __ str(r1, FieldMemOperand(r0, JSObject::kHeaderSize + 4456 __ str(r1, FieldMemOperand(r0, JSObject::kHeaderSize +
4457 Heap::kArgumentsLengthIndex * kPointerSize)); 4457 Heap::kArgumentsLengthIndex * kPointerSize));
4458 4458
4459 // If there are no actual arguments, we're done. 4459 // If there are no actual arguments, we're done.
4460 Label done; 4460 Label done;
4461 __ cmp(r1, Operand::Zero()); 4461 __ cmp(r1, Operand::Zero());
(...skipping 3056 matching lines...) Expand 10 before | Expand all | Expand 10 after
7518 7518
7519 __ Pop(lr, r5, r1); 7519 __ Pop(lr, r5, r1);
7520 __ Ret(); 7520 __ Ret();
7521 } 7521 }
7522 7522
7523 #undef __ 7523 #undef __
7524 7524
7525 } } // namespace v8::internal 7525 } } // namespace v8::internal
7526 7526
7527 #endif // V8_TARGET_ARCH_ARM 7527 #endif // V8_TARGET_ARCH_ARM
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698