| 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);
 | 
|  }
 | 
|  
 | 
| 
 |