| Index: src/x64/regexp-macro-assembler-x64.cc
|
| diff --git a/src/x64/regexp-macro-assembler-x64.cc b/src/x64/regexp-macro-assembler-x64.cc
|
| index 012dcc8b624b60324bb21d7ca4431ff3b659fab9..4a4a84e8024ed258f7531ae7d6d94c697bfdd8ed 100644
|
| --- a/src/x64/regexp-macro-assembler-x64.cc
|
| +++ b/src/x64/regexp-macro-assembler-x64.cc
|
| @@ -226,101 +226,6 @@ void RegExpMacroAssemblerX64::CheckCharacterLT(uc16 limit, Label* on_less) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerX64::CheckCharacters(Vector<const uc16> str,
|
| - int cp_offset,
|
| - Label* on_failure,
|
| - bool check_end_of_string) {
|
| -#ifdef DEBUG
|
| - // If input is ASCII, don't even bother calling here if the string to
|
| - // match contains a non-ASCII character.
|
| - if (mode_ == ASCII) {
|
| - ASSERT(String::IsOneByte(str.start(), str.length()));
|
| - }
|
| -#endif
|
| - int byte_length = str.length() * char_size();
|
| - int byte_offset = cp_offset * char_size();
|
| - if (check_end_of_string) {
|
| - // Check that there are at least str.length() characters left in the input.
|
| - __ cmpl(rdi, Immediate(-(byte_offset + byte_length)));
|
| - BranchOrBacktrack(greater, on_failure);
|
| - }
|
| -
|
| - if (on_failure == NULL) {
|
| - // Instead of inlining a backtrack, (re)use the global backtrack target.
|
| - on_failure = &backtrack_label_;
|
| - }
|
| -
|
| - // Do one character test first to minimize loading for the case that
|
| - // we don't match at all (loading more than one character introduces that
|
| - // chance of reading unaligned and reading across cache boundaries).
|
| - // If the first character matches, expect a larger chance of matching the
|
| - // string, and start loading more characters at a time.
|
| - if (mode_ == ASCII) {
|
| - __ cmpb(Operand(rsi, rdi, times_1, byte_offset),
|
| - Immediate(static_cast<int8_t>(str[0])));
|
| - } else {
|
| - // Don't use 16-bit immediate. The size changing prefix throws off
|
| - // pre-decoding.
|
| - __ movzxwl(rax,
|
| - Operand(rsi, rdi, times_1, byte_offset));
|
| - __ cmpl(rax, Immediate(static_cast<int32_t>(str[0])));
|
| - }
|
| - BranchOrBacktrack(not_equal, on_failure);
|
| -
|
| - __ lea(rbx, Operand(rsi, rdi, times_1, 0));
|
| - for (int i = 1, n = str.length(); i < n; ) {
|
| - if (mode_ == ASCII) {
|
| - if (i + 8 <= n) {
|
| - uint64_t combined_chars =
|
| - (static_cast<uint64_t>(str[i + 0]) << 0) ||
|
| - (static_cast<uint64_t>(str[i + 1]) << 8) ||
|
| - (static_cast<uint64_t>(str[i + 2]) << 16) ||
|
| - (static_cast<uint64_t>(str[i + 3]) << 24) ||
|
| - (static_cast<uint64_t>(str[i + 4]) << 32) ||
|
| - (static_cast<uint64_t>(str[i + 5]) << 40) ||
|
| - (static_cast<uint64_t>(str[i + 6]) << 48) ||
|
| - (static_cast<uint64_t>(str[i + 7]) << 56);
|
| - __ movq(rax, combined_chars, RelocInfo::NONE64);
|
| - __ cmpq(rax, Operand(rbx, byte_offset + i));
|
| - i += 8;
|
| - } else if (i + 4 <= n) {
|
| - uint32_t combined_chars =
|
| - (static_cast<uint32_t>(str[i + 0]) << 0) ||
|
| - (static_cast<uint32_t>(str[i + 1]) << 8) ||
|
| - (static_cast<uint32_t>(str[i + 2]) << 16) ||
|
| - (static_cast<uint32_t>(str[i + 3]) << 24);
|
| - __ cmpl(Operand(rbx, byte_offset + i), Immediate(combined_chars));
|
| - i += 4;
|
| - } else {
|
| - __ cmpb(Operand(rbx, byte_offset + i),
|
| - Immediate(static_cast<int8_t>(str[i])));
|
| - i++;
|
| - }
|
| - } else {
|
| - ASSERT(mode_ == UC16);
|
| - if (i + 4 <= n) {
|
| - uint64_t combined_chars = *reinterpret_cast<const uint64_t*>(&str[i]);
|
| - __ movq(rax, combined_chars, RelocInfo::NONE64);
|
| - __ cmpq(rax,
|
| - Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)));
|
| - i += 4;
|
| - } else if (i + 2 <= n) {
|
| - uint32_t combined_chars = *reinterpret_cast<const uint32_t*>(&str[i]);
|
| - __ cmpl(Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)),
|
| - Immediate(combined_chars));
|
| - i += 2;
|
| - } else {
|
| - __ movzxwl(rax,
|
| - Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)));
|
| - __ cmpl(rax, Immediate(str[i]));
|
| - i++;
|
| - }
|
| - }
|
| - BranchOrBacktrack(not_equal, on_failure);
|
| - }
|
| -}
|
| -
|
| -
|
| void RegExpMacroAssemblerX64::CheckGreedyLoop(Label* on_equal) {
|
| Label fallthrough;
|
| __ cmpl(rdi, Operand(backtrack_stackpointer(), 0));
|
|
|