From 2dfefb42eb965c3122e2b464163bc052f98deba2 Mon Sep 17 00:00:00 2001 From: "mvstanton@chromium.org" Date: Fri, 17 Oct 2014 16:23:31 +0000 Subject: [PATCH] ReceiverCheckMode needs to be utilized further. The parameter wasn't being passed appropriately, and there was an extra opportunity to use mode RECEIVER_IS_STRING in SubStringStub. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/657313005 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/code-stubs-arm.cc | 4 ++-- src/arm64/code-stubs-arm64.cc | 6 +++--- src/code-stubs.h | 2 +- src/ia32/code-stubs-ia32.cc | 7 +++---- src/mips/code-stubs-mips.cc | 4 ++-- src/x64/code-stubs-x64.cc | 5 +++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc index f857de6..45c0c5f 100644 --- a/src/arm/code-stubs-arm.cc +++ b/src/arm/code-stubs-arm.cc @@ -3167,8 +3167,8 @@ void SubStringStub::Generate(MacroAssembler* masm) { // r2: length // r3: from index (untagged) __ SmiTag(r3, r3); - StringCharAtGenerator generator( - r0, r3, r2, r0, &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER); + StringCharAtGenerator generator(r0, r3, r2, r0, &runtime, &runtime, &runtime, + STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); generator.GenerateFast(masm); __ Drop(3); __ Ret(); diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc index 9056772..ed951ae 100644 --- a/src/arm64/code-stubs-arm64.cc +++ b/src/arm64/code-stubs-arm64.cc @@ -3812,9 +3812,9 @@ void SubStringStub::Generate(MacroAssembler* masm) { // x12: input_type // x15: from (untagged) __ SmiTag(from); - StringCharAtGenerator generator( - input_string, from, result_length, x0, - &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER); + StringCharAtGenerator generator(input_string, from, result_length, x0, + &runtime, &runtime, &runtime, + STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); generator.GenerateFast(masm); __ Drop(3); __ Ret(); diff --git a/src/code-stubs.h b/src/code-stubs.h index 7fa9d61..a6b5436 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -1803,7 +1803,7 @@ class StringCharAtGenerator { ReceiverCheckMode check_mode = RECEIVER_IS_UNKNOWN) : char_code_at_generator_(object, index, scratch, receiver_not_string, index_not_number, index_out_of_range, - index_flags), + index_flags, check_mode), char_from_code_generator_(scratch, result) {} // Generates the fast case code. On the fallthrough path |result| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc index 35ea821..d642898 100644 --- a/src/ia32/code-stubs-ia32.cc +++ b/src/ia32/code-stubs-ia32.cc @@ -702,8 +702,6 @@ void LoadIndexedStringStub::Generate(MacroAssembler* masm) { Register result = eax; DCHECK(!result.is(scratch)); - // TODO(mvstanton): the generator doesn't need to verify that - // receiver is a string map, that is done outside the handler. StringCharAtGenerator char_at_generator(receiver, index, scratch, result, &miss, // When not a string. &miss, // When not a number. @@ -3159,8 +3157,9 @@ void SubStringStub::Generate(MacroAssembler* masm) { // ebx: instance type // ecx: sub string length (smi) // edx: from index (smi) - StringCharAtGenerator generator( - eax, edx, ecx, eax, &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER); + StringCharAtGenerator generator(eax, edx, ecx, eax, &runtime, &runtime, + &runtime, STRING_INDEX_IS_NUMBER, + RECEIVER_IS_STRING); generator.GenerateFast(masm); __ ret(3 * kPointerSize); generator.SkipSlow(masm, &runtime); diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index 407168a..0ebc0a4 100644 --- a/src/mips/code-stubs-mips.cc +++ b/src/mips/code-stubs-mips.cc @@ -3332,8 +3332,8 @@ void SubStringStub::Generate(MacroAssembler* masm) { // a2: length // a3: from index (untagged) __ SmiTag(a3, a3); - StringCharAtGenerator generator( - v0, a3, a2, v0, &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER); + StringCharAtGenerator generator(v0, a3, a2, v0, &runtime, &runtime, &runtime, + STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); generator.GenerateFast(masm); __ DropAndRet(3); generator.SkipSlow(masm, &runtime); diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc index 8e6fc44..0f26d3b 100644 --- a/src/x64/code-stubs-x64.cc +++ b/src/x64/code-stubs-x64.cc @@ -3106,8 +3106,9 @@ void SubStringStub::Generate(MacroAssembler* masm) { // rbx: instance type // rcx: sub string length (smi) // rdx: from index (smi) - StringCharAtGenerator generator( - rax, rdx, rcx, rax, &runtime, &runtime, &runtime, STRING_INDEX_IS_NUMBER); + StringCharAtGenerator generator(rax, rdx, rcx, rax, &runtime, &runtime, + &runtime, STRING_INDEX_IS_NUMBER, + RECEIVER_IS_STRING); generator.GenerateFast(masm); __ ret(SUB_STRING_ARGUMENT_COUNT * kPointerSize); generator.SkipSlow(masm, &runtime); -- 2.7.4