Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index f629d9f19f52b122f9f71c838c787ab91314df5f..fb8f7ce974777f8f884cad4159f2a1d9c4dfc480 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -2649,6 +2649,32 @@ bool Name::Equals(Name* other) { |
| } |
| +static bool IsIdentifier(UnicodeCache* cache, Name* name) { |
|
Jakob Kummerow
2013/09/02 13:28:59
This seems a little large for -inl.h. Please move
|
| + // Checks whether the buffer contains an identifier (no escape). |
| + if (!name->IsString()) return false; |
| + String* string = String::cast(name); |
| + if (string->length() == 0) return false; |
| + ConsStringIteratorOp op; |
| + StringCharacterStream stream(string, &op); |
| + if (!cache->IsIdentifierStart(stream.GetNext())) { |
| + return false; |
| + } |
| + while (stream.HasMore()) { |
| + if (!cache->IsIdentifierPart(stream.GetNext())) { |
| + return false; |
| + } |
| + } |
| + return true; |
| +} |
| + |
| + |
| +bool Name::IsCacheable(Isolate* isolate) { |
| + return IsSymbol() || |
| + IsIdentifier(isolate->unicode_cache(), this) || |
| + this == isolate->heap()->hidden_string(); |
| +} |
| + |
| + |
| ACCESSORS(Symbol, name, Object, kNameOffset) |