| OLD | NEW |
| 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_MIPS64 | 7 #if V8_TARGET_ARCH_MIPS64 |
| 8 | 8 |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 3435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3446 StringHelper::GenerateCopyCharacters( | 3446 StringHelper::GenerateCopyCharacters( |
| 3447 masm, a1, a5, a2, a3, String::TWO_BYTE_ENCODING); | 3447 masm, a1, a5, a2, a3, String::TWO_BYTE_ENCODING); |
| 3448 | 3448 |
| 3449 __ bind(&return_v0); | 3449 __ bind(&return_v0); |
| 3450 Counters* counters = isolate()->counters(); | 3450 Counters* counters = isolate()->counters(); |
| 3451 __ IncrementCounter(counters->sub_string_native(), 1, a3, a4); | 3451 __ IncrementCounter(counters->sub_string_native(), 1, a3, a4); |
| 3452 __ DropAndRet(3); | 3452 __ DropAndRet(3); |
| 3453 | 3453 |
| 3454 // Just jump to runtime to create the sub string. | 3454 // Just jump to runtime to create the sub string. |
| 3455 __ bind(&runtime); | 3455 __ bind(&runtime); |
| 3456 __ TailCallRuntime(Runtime::kSubString, 3, 1); | 3456 __ TailCallRuntime(Runtime::kSubStringRT, 3, 1); |
| 3457 | 3457 |
| 3458 __ bind(&single_char); | 3458 __ bind(&single_char); |
| 3459 // v0: original string | 3459 // v0: original string |
| 3460 // a1: instance type | 3460 // a1: instance type |
| 3461 // a2: length | 3461 // a2: length |
| 3462 // a3: from index (untagged) | 3462 // a3: from index (untagged) |
| 3463 StringCharAtGenerator generator(v0, a3, a2, v0, &runtime, &runtime, &runtime, | 3463 StringCharAtGenerator generator(v0, a3, a2, v0, &runtime, &runtime, &runtime, |
| 3464 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); | 3464 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); |
| 3465 generator.GenerateFast(masm); | 3465 generator.GenerateFast(masm); |
| 3466 __ DropAndRet(3); | 3466 __ DropAndRet(3); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3639 | 3639 |
| 3640 // Check that both objects are sequential one_byte strings. | 3640 // Check that both objects are sequential one_byte strings. |
| 3641 __ JumpIfNotBothSequentialOneByteStrings(a1, a0, a2, a3, &runtime); | 3641 __ JumpIfNotBothSequentialOneByteStrings(a1, a0, a2, a3, &runtime); |
| 3642 | 3642 |
| 3643 // Compare flat one_byte strings natively. Remove arguments from stack first. | 3643 // Compare flat one_byte strings natively. Remove arguments from stack first. |
| 3644 __ IncrementCounter(counters->string_compare_native(), 1, a2, a3); | 3644 __ IncrementCounter(counters->string_compare_native(), 1, a2, a3); |
| 3645 __ Daddu(sp, sp, Operand(2 * kPointerSize)); | 3645 __ Daddu(sp, sp, Operand(2 * kPointerSize)); |
| 3646 StringHelper::GenerateCompareFlatOneByteStrings(masm, a1, a0, a2, a3, a4, a5); | 3646 StringHelper::GenerateCompareFlatOneByteStrings(masm, a1, a0, a2, a3, a4, a5); |
| 3647 | 3647 |
| 3648 __ bind(&runtime); | 3648 __ bind(&runtime); |
| 3649 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); | 3649 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); |
| 3650 } | 3650 } |
| 3651 | 3651 |
| 3652 | 3652 |
| 3653 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) { | 3653 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) { |
| 3654 // ----------- S t a t e ------------- | 3654 // ----------- S t a t e ------------- |
| 3655 // -- a1 : left | 3655 // -- a1 : left |
| 3656 // -- a0 : right | 3656 // -- a0 : right |
| 3657 // -- ra : return address | 3657 // -- ra : return address |
| 3658 // ----------------------------------- | 3658 // ----------------------------------- |
| 3659 | 3659 |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3949 StringHelper::GenerateCompareFlatOneByteStrings(masm, left, right, tmp1, | 3949 StringHelper::GenerateCompareFlatOneByteStrings(masm, left, right, tmp1, |
| 3950 tmp2, tmp3, tmp4); | 3950 tmp2, tmp3, tmp4); |
| 3951 } | 3951 } |
| 3952 | 3952 |
| 3953 // Handle more complex cases in runtime. | 3953 // Handle more complex cases in runtime. |
| 3954 __ bind(&runtime); | 3954 __ bind(&runtime); |
| 3955 __ Push(left, right); | 3955 __ Push(left, right); |
| 3956 if (equality) { | 3956 if (equality) { |
| 3957 __ TailCallRuntime(Runtime::kStringEquals, 2, 1); | 3957 __ TailCallRuntime(Runtime::kStringEquals, 2, 1); |
| 3958 } else { | 3958 } else { |
| 3959 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); | 3959 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); |
| 3960 } | 3960 } |
| 3961 | 3961 |
| 3962 __ bind(&miss); | 3962 __ bind(&miss); |
| 3963 GenerateMiss(masm); | 3963 GenerateMiss(masm); |
| 3964 } | 3964 } |
| 3965 | 3965 |
| 3966 | 3966 |
| 3967 void CompareICStub::GenerateObjects(MacroAssembler* masm) { | 3967 void CompareICStub::GenerateObjects(MacroAssembler* masm) { |
| 3968 DCHECK(state() == CompareICState::OBJECT); | 3968 DCHECK(state() == CompareICState::OBJECT); |
| 3969 Label miss; | 3969 Label miss; |
| (...skipping 1338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5308 kStackUnwindSpace, kInvalidStackOffset, | 5308 kStackUnwindSpace, kInvalidStackOffset, |
| 5309 MemOperand(fp, 6 * kPointerSize), NULL); | 5309 MemOperand(fp, 6 * kPointerSize), NULL); |
| 5310 } | 5310 } |
| 5311 | 5311 |
| 5312 | 5312 |
| 5313 #undef __ | 5313 #undef __ |
| 5314 | 5314 |
| 5315 } } // namespace v8::internal | 5315 } } // namespace v8::internal |
| 5316 | 5316 |
| 5317 #endif // V8_TARGET_ARCH_MIPS64 | 5317 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |