Index: src/code-stub-assembler.cc |
diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc |
index ad0dd093eafa0fd8c629bdbd854504c596dff425..018d882c75f58e06b1410314deb823e59895cfad 100644 |
--- a/src/code-stub-assembler.cc |
+++ b/src/code-stub-assembler.cc |
@@ -3732,73 +3732,6 @@ Node* CodeStubAssembler::StringAdd(Node* context, Node* left, Node* right, |
return result.value(); |
} |
-Node* CodeStubAssembler::StringIndexOfChar(Node* context, Node* string, |
- Node* needle_char, Node* from) { |
- CSA_ASSERT(this, IsString(string)); |
- Variable var_result(this, MachineRepresentation::kTagged); |
- |
- Label out(this), runtime(this, Label::kDeferred); |
- |
- // Let runtime handle non-one-byte {needle_char}. |
- |
- Node* const one_byte_char_mask = Int32Constant(0xFF); |
- GotoUnless( |
- Word32Equal(Word32And(needle_char, one_byte_char_mask), needle_char), |
- &runtime); |
- |
- // TODO(jgruber): Handle external and two-byte strings. |
- |
- Node* const one_byte_seq_mask = Int32Constant( |
- kIsIndirectStringMask | kExternalStringTag | kStringEncodingMask); |
- Node* const expected_masked = Int32Constant(kOneByteStringTag); |
- |
- Node* const string_instance_type = LoadInstanceType(string); |
- GotoUnless(Word32Equal(Word32And(string_instance_type, one_byte_seq_mask), |
- expected_masked), |
- &runtime); |
- |
- // If we reach this, {string} is a non-indirect, non-external one-byte string. |
- |
- Node* const length = LoadStringLength(string); |
- Node* const search_range_length = SmiUntag(SmiSub(length, from)); |
- |
- const int offset = SeqOneByteString::kHeaderSize - kHeapObjectTag; |
- Node* const begin = IntPtrConstant(offset); |
- Node* const cursor = IntPtrAdd(begin, SmiUntag(from)); |
- Node* const end = IntPtrAdd(cursor, search_range_length); |
- |
- var_result.Bind(SmiConstant(Smi::FromInt(-1))); |
- |
- BuildFastLoop( |
- cursor, end, |
- [this, string, needle_char, begin, &var_result, &out](Node* cursor) { |
- Label next(this); |
- Node* value = Load(MachineType::Uint8(), string, cursor); |
- GotoUnless(Word32Equal(value, needle_char), &next); |
- |
- // Found a match. |
- Node* index = SmiTag(IntPtrSub(cursor, begin)); |
- var_result.Bind(index); |
- Goto(&out); |
- |
- Bind(&next); |
- }, |
- 1, INTPTR_PARAMETERS, IndexAdvanceMode::kPost); |
- Goto(&out); |
- |
- Bind(&runtime); |
- { |
- Node* const pattern = StringFromCharCode(needle_char); |
- Node* const result = |
- CallRuntime(Runtime::kStringIndexOf, context, string, pattern, from); |
- var_result.Bind(result); |
- Goto(&out); |
- } |
- |
- Bind(&out); |
- return var_result.value(); |
-} |
- |
Node* CodeStubAssembler::StringFromCodePoint(Node* codepoint, |
UnicodeEncoding encoding) { |
Variable var_result(this, MachineRepresentation::kTagged, |