| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index a97590ae69dccd09c35868ce7c3c6a1a632a7603..e20d0da8ba06586d050db22aa116449482db6f1d 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -7284,7 +7284,7 @@ bool String::MarkAsUndetectable() {
|
| }
|
|
|
|
|
| -bool String::IsEqualTo(Vector<const char> str) {
|
| +bool String::IsUtf8EqualTo(Vector<const char> str) {
|
| int slen = length();
|
| // Can't check exact length equality, but we can check bounds.
|
| int str_len = str.length();
|
| @@ -7313,12 +7313,12 @@ bool String::IsEqualTo(Vector<const char> str) {
|
| }
|
|
|
|
|
| -bool String::IsAsciiEqualTo(Vector<const char> str) {
|
| +bool String::IsOneByteEqualTo(Vector<const uint8_t> str) {
|
| int slen = length();
|
| if (str.length() != slen) return false;
|
| FlatContent content = GetFlatContent();
|
| if (content.IsAscii()) {
|
| - return CompareChars(content.ToAsciiVector().start(),
|
| + return CompareChars(content.ToOneByteVector().start(),
|
| str.start(), slen) == 0;
|
| }
|
| for (int i = 0; i < slen; i++) {
|
| @@ -11387,7 +11387,7 @@ class Utf8SymbolKey : public HashTableKey {
|
| : string_(string), hash_field_(0), seed_(seed) { }
|
|
|
| bool IsMatch(Object* string) {
|
| - return String::cast(string)->IsEqualTo(string_);
|
| + return String::cast(string)->IsUtf8EqualTo(string_);
|
| }
|
|
|
| uint32_t Hash() {
|
| @@ -11404,7 +11404,7 @@ class Utf8SymbolKey : public HashTableKey {
|
|
|
| MaybeObject* AsObject() {
|
| if (hash_field_ == 0) Hash();
|
| - return Isolate::Current()->heap()->AllocateSymbol(
|
| + return Isolate::Current()->heap()->AllocateSymbolFromUtf8(
|
| string_, chars_, hash_field_);
|
| }
|
|
|
| @@ -11443,25 +11443,25 @@ class SequentialSymbolKey : public HashTableKey {
|
|
|
|
|
|
|
| -class AsciiSymbolKey : public SequentialSymbolKey<char> {
|
| +class OneByteSymbolKey : public SequentialSymbolKey<uint8_t> {
|
| public:
|
| - AsciiSymbolKey(Vector<const char> str, uint32_t seed)
|
| - : SequentialSymbolKey<char>(str, seed) { }
|
| + OneByteSymbolKey(Vector<const uint8_t> str, uint32_t seed)
|
| + : SequentialSymbolKey<uint8_t>(str, seed) { }
|
|
|
| bool IsMatch(Object* string) {
|
| - return String::cast(string)->IsAsciiEqualTo(string_);
|
| + return String::cast(string)->IsOneByteEqualTo(string_);
|
| }
|
|
|
| MaybeObject* AsObject() {
|
| if (hash_field_ == 0) Hash();
|
| - return HEAP->AllocateAsciiSymbol(string_, hash_field_);
|
| + return HEAP->AllocateOneByteSymbol(string_, hash_field_);
|
| }
|
| };
|
|
|
|
|
| -class SubStringAsciiSymbolKey : public HashTableKey {
|
| +class SubStringOneByteSymbolKey : public HashTableKey {
|
| public:
|
| - explicit SubStringAsciiSymbolKey(Handle<SeqOneByteString> string,
|
| + explicit SubStringOneByteSymbolKey(Handle<SeqOneByteString> string,
|
| int from,
|
| int length)
|
| : string_(string), from_(from), length_(length) { }
|
| @@ -11483,14 +11483,16 @@ class SubStringAsciiSymbolKey : public HashTableKey {
|
| }
|
|
|
| bool IsMatch(Object* string) {
|
| - Vector<const char> chars(string_->GetChars() + from_, length_);
|
| - return String::cast(string)->IsAsciiEqualTo(chars);
|
| + Vector<const uint8_t> chars(string_->GetCharsU() + from_, length_);
|
| + return String::cast(string)->IsOneByteEqualTo(chars);
|
| }
|
|
|
| MaybeObject* AsObject() {
|
| if (hash_field_ == 0) Hash();
|
| - Vector<const char> chars(string_->GetChars() + from_, length_);
|
| - return HEAP->AllocateAsciiSymbol(chars, hash_field_);
|
| + Vector<const uint8_t> chars(
|
| + reinterpret_cast<uint8_t*>(string_->GetChars()) + from_,
|
| + length_);
|
| + return HEAP->AllocateOneByteSymbol(chars, hash_field_);
|
| }
|
|
|
| private:
|
| @@ -12410,9 +12412,9 @@ MaybeObject* SymbolTable::LookupUtf8Symbol(Vector<const char> str,
|
| }
|
|
|
|
|
| -MaybeObject* SymbolTable::LookupOneByteSymbol(Vector<const char> str,
|
| +MaybeObject* SymbolTable::LookupOneByteSymbol(Vector<const uint8_t> str,
|
| Object** s) {
|
| - AsciiSymbolKey key(str, GetHeap()->HashSeed());
|
| + OneByteSymbolKey key(str, GetHeap()->HashSeed());
|
| return LookupKey(&key, s);
|
| }
|
|
|
| @@ -12422,7 +12424,7 @@ MaybeObject* SymbolTable::LookupSubStringOneByteSymbol(
|
| int from,
|
| int length,
|
| Object** s) {
|
| - SubStringAsciiSymbolKey key(str, from, length);
|
| + SubStringOneByteSymbolKey key(str, from, length);
|
| return LookupKey(&key, s);
|
| }
|
|
|
|
|