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

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

Issue 1269323003: Cleanup unnecessary duplication of runtime functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Adapt test case. Created 5 years, 4 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
« no previous file with comments | « no previous file | src/arm64/code-stubs-arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 // Read the argument from the adaptor frame and return it. 1590 // Read the argument from the adaptor frame and return it.
1591 __ sub(r3, r0, r1); 1591 __ sub(r3, r0, r1);
1592 __ add(r3, r2, Operand::PointerOffsetFromSmiKey(r3)); 1592 __ add(r3, r2, Operand::PointerOffsetFromSmiKey(r3));
1593 __ ldr(r0, MemOperand(r3, kDisplacement)); 1593 __ ldr(r0, MemOperand(r3, kDisplacement));
1594 __ Jump(lr); 1594 __ Jump(lr);
1595 1595
1596 // Slow-case: Handle non-smi or out-of-bounds access to arguments 1596 // Slow-case: Handle non-smi or out-of-bounds access to arguments
1597 // by calling the runtime system. 1597 // by calling the runtime system.
1598 __ bind(&slow); 1598 __ bind(&slow);
1599 __ push(r1); 1599 __ push(r1);
1600 __ TailCallRuntime(Runtime::kGetArgumentsProperty, 1, 1); 1600 __ TailCallRuntime(Runtime::kArguments, 1, 1);
1601 } 1601 }
1602 1602
1603 1603
1604 void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) { 1604 void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
1605 // sp[0] : number of parameters 1605 // sp[0] : number of parameters
1606 // sp[4] : receiver displacement 1606 // sp[4] : receiver displacement
1607 // sp[8] : function 1607 // sp[8] : function
1608 1608
1609 // Check if the calling frame is an arguments adaptor frame. 1609 // Check if the calling frame is an arguments adaptor frame.
1610 Label runtime; 1610 Label runtime;
(...skipping 1694 matching lines...) Expand 10 before | Expand all | Expand 10 after
3305 masm, r1, r5, r2, r3, String::TWO_BYTE_ENCODING); 3305 masm, r1, r5, r2, r3, String::TWO_BYTE_ENCODING);
3306 3306
3307 __ bind(&return_r0); 3307 __ bind(&return_r0);
3308 Counters* counters = isolate()->counters(); 3308 Counters* counters = isolate()->counters();
3309 __ IncrementCounter(counters->sub_string_native(), 1, r3, r4); 3309 __ IncrementCounter(counters->sub_string_native(), 1, r3, r4);
3310 __ Drop(3); 3310 __ Drop(3);
3311 __ Ret(); 3311 __ Ret();
3312 3312
3313 // Just jump to runtime to create the sub string. 3313 // Just jump to runtime to create the sub string.
3314 __ bind(&runtime); 3314 __ bind(&runtime);
3315 __ TailCallRuntime(Runtime::kSubStringRT, 3, 1); 3315 __ TailCallRuntime(Runtime::kSubString, 3, 1);
3316 3316
3317 __ bind(&single_char); 3317 __ bind(&single_char);
3318 // r0: original string 3318 // r0: original string
3319 // r1: instance type 3319 // r1: instance type
3320 // r2: length 3320 // r2: length
3321 // r3: from index (untagged) 3321 // r3: from index (untagged)
3322 __ SmiTag(r3, r3); 3322 __ SmiTag(r3, r3);
3323 StringCharAtGenerator generator(r0, r3, r2, r0, &runtime, &runtime, &runtime, 3323 StringCharAtGenerator generator(r0, r3, r2, r0, &runtime, &runtime, &runtime,
3324 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); 3324 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING);
3325 generator.GenerateFast(masm); 3325 generator.GenerateFast(masm);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
3492 __ JumpIfNotBothSequentialOneByteStrings(r1, r0, r2, r3, &runtime); 3492 __ JumpIfNotBothSequentialOneByteStrings(r1, r0, r2, r3, &runtime);
3493 3493
3494 // Compare flat one-byte strings natively. Remove arguments from stack first. 3494 // Compare flat one-byte strings natively. Remove arguments from stack first.
3495 __ IncrementCounter(counters->string_compare_native(), 1, r2, r3); 3495 __ IncrementCounter(counters->string_compare_native(), 1, r2, r3);
3496 __ add(sp, sp, Operand(2 * kPointerSize)); 3496 __ add(sp, sp, Operand(2 * kPointerSize));
3497 StringHelper::GenerateCompareFlatOneByteStrings(masm, r1, r0, r2, r3, r4, r5); 3497 StringHelper::GenerateCompareFlatOneByteStrings(masm, r1, r0, r2, r3, r4, r5);
3498 3498
3499 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater) 3499 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater)
3500 // tagged as a small integer. 3500 // tagged as a small integer.
3501 __ bind(&runtime); 3501 __ bind(&runtime);
3502 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); 3502 __ TailCallRuntime(Runtime::kStringCompare, 2, 1);
3503 } 3503 }
3504 3504
3505 3505
3506 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) { 3506 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) {
3507 // ----------- S t a t e ------------- 3507 // ----------- S t a t e -------------
3508 // -- r1 : left 3508 // -- r1 : left
3509 // -- r0 : right 3509 // -- r0 : right
3510 // -- lr : return address 3510 // -- lr : return address
3511 // ----------------------------------- 3511 // -----------------------------------
3512 3512
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
3773 StringHelper::GenerateCompareFlatOneByteStrings(masm, left, right, tmp1, 3773 StringHelper::GenerateCompareFlatOneByteStrings(masm, left, right, tmp1,
3774 tmp2, tmp3, tmp4); 3774 tmp2, tmp3, tmp4);
3775 } 3775 }
3776 3776
3777 // Handle more complex cases in runtime. 3777 // Handle more complex cases in runtime.
3778 __ bind(&runtime); 3778 __ bind(&runtime);
3779 __ Push(left, right); 3779 __ Push(left, right);
3780 if (equality) { 3780 if (equality) {
3781 __ TailCallRuntime(Runtime::kStringEquals, 2, 1); 3781 __ TailCallRuntime(Runtime::kStringEquals, 2, 1);
3782 } else { 3782 } else {
3783 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); 3783 __ TailCallRuntime(Runtime::kStringCompare, 2, 1);
3784 } 3784 }
3785 3785
3786 __ bind(&miss); 3786 __ bind(&miss);
3787 GenerateMiss(masm); 3787 GenerateMiss(masm);
3788 } 3788 }
3789 3789
3790 3790
3791 void CompareICStub::GenerateObjects(MacroAssembler* masm) { 3791 void CompareICStub::GenerateObjects(MacroAssembler* masm) {
3792 DCHECK(state() == CompareICState::OBJECT); 3792 DCHECK(state() == CompareICState::OBJECT);
3793 Label miss; 3793 Label miss;
(...skipping 1740 matching lines...) Expand 10 before | Expand all | Expand 10 after
5534 MemOperand(fp, 6 * kPointerSize), NULL); 5534 MemOperand(fp, 6 * kPointerSize), NULL);
5535 } 5535 }
5536 5536
5537 5537
5538 #undef __ 5538 #undef __
5539 5539
5540 } // namespace internal 5540 } // namespace internal
5541 } // namespace v8 5541 } // namespace v8
5542 5542
5543 #endif // V8_TARGET_ARCH_ARM 5543 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm64/code-stubs-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698