| Index: runtime/vm/symbols.cc
|
| diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc
|
| index 0f91fb696788ca2f380a66cb46a4f9db349cee70..0d952892b7abf7a96305f7f552509eabf76ce092 100644
|
| --- a/runtime/vm/symbols.cc
|
| +++ b/runtime/vm/symbols.cc
|
| @@ -21,38 +21,38 @@ RawString* Symbols::predefined_[Symbols::kNumberOfOneCharCodeSymbols];
|
| String* Symbols::symbol_handles_[Symbols::kMaxPredefinedId];
|
|
|
| static const char* names[] = {
|
| + // clang-format off
|
| NULL,
|
| -
|
| -#define DEFINE_SYMBOL_LITERAL(symbol, literal) \
|
| - literal,
|
| -PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_LITERAL)
|
| +#define DEFINE_SYMBOL_LITERAL(symbol, literal) literal,
|
| + PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_LITERAL)
|
| #undef DEFINE_SYMBOL_LITERAL
|
| -
|
| "", // matches kTokenTableStart.
|
| -
|
| -#define DEFINE_TOKEN_SYMBOL_INDEX(t, s, p, a) \
|
| - s,
|
| +#define DEFINE_TOKEN_SYMBOL_INDEX(t, s, p, a) s,
|
| DART_TOKEN_LIST(DEFINE_TOKEN_SYMBOL_INDEX)
|
| DART_KEYWORD_LIST(DEFINE_TOKEN_SYMBOL_INDEX)
|
| #undef DEFINE_TOKEN_SYMBOL_INDEX
|
| + // clang-format on
|
| };
|
|
|
| RawString* StringFrom(const uint8_t* data, intptr_t len, Heap::Space space) {
|
| return String::FromLatin1(data, len, space);
|
| }
|
| +
|
| +
|
| RawString* StringFrom(const uint16_t* data, intptr_t len, Heap::Space space) {
|
| return String::FromUTF16(data, len, space);
|
| }
|
| +
|
| +
|
| RawString* StringFrom(const int32_t* data, intptr_t len, Heap::Space space) {
|
| return String::FromUTF32(data, len, space);
|
| }
|
|
|
|
|
| -template<typename CharType>
|
| +template <typename CharType>
|
| class CharArray {
|
| public:
|
| - CharArray(const CharType* data, intptr_t len)
|
| - : data_(data), len_(len) {
|
| + CharArray(const CharType* data, intptr_t len) : data_(data), len_(len) {
|
| hash_ = String::Hash(data, len);
|
| }
|
| RawString* ToSymbol() const {
|
| @@ -69,6 +69,7 @@ class CharArray {
|
| return other.Equals(data_, len_);
|
| }
|
| intptr_t Hash() const { return hash_; }
|
| +
|
| private:
|
| const CharType* data_;
|
| intptr_t len_;
|
| @@ -94,6 +95,7 @@ class StringSlice {
|
| return other.Equals(str_, begin_index_, len_);
|
| }
|
| intptr_t Hash() const { return hash_; }
|
| +
|
| private:
|
| bool is_all() const { return begin_index_ == 0 && len_ == str_.Length(); }
|
| const String& str_;
|
| @@ -108,8 +110,8 @@ RawString* StringSlice::ToSymbol() const {
|
| str_.SetCanonical();
|
| return str_.raw();
|
| } else {
|
| - String& result = String::Handle(
|
| - String::SubString(str_, begin_index_, len_, Heap::kOld));
|
| + String& result =
|
| + String::Handle(String::SubString(str_, begin_index_, len_, Heap::kOld));
|
| result.SetCanonical();
|
| result.SetHash(hash_);
|
| return result.raw();
|
| @@ -130,6 +132,7 @@ class ConcatString {
|
| return other.EqualsConcat(str1_, str2_);
|
| }
|
| intptr_t Hash() const { return hash_; }
|
| +
|
| private:
|
| const String& str1_;
|
| const String& str2_;
|
| @@ -165,7 +168,7 @@ class SymbolTraits {
|
| // Use a comparison which does not consider the state of the canonical bit.
|
| return a_str.Equals(b_str, 0, a_len);
|
| }
|
| - template<typename CharType>
|
| + template <typename CharType>
|
| static bool IsMatch(const CharArray<CharType>& array, const Object& obj) {
|
| return array.Equals(String::Cast(obj));
|
| }
|
| @@ -175,20 +178,14 @@ class SymbolTraits {
|
| static bool IsMatch(const ConcatString& concat, const Object& obj) {
|
| return concat.Equals(String::Cast(obj));
|
| }
|
| - static uword Hash(const Object& key) {
|
| - return String::Cast(key).Hash();
|
| - }
|
| - template<typename CharType>
|
| + static uword Hash(const Object& key) { return String::Cast(key).Hash(); }
|
| + template <typename CharType>
|
| static uword Hash(const CharArray<CharType>& array) {
|
| return array.Hash();
|
| }
|
| - static uword Hash(const StringSlice& slice) {
|
| - return slice.Hash();
|
| - }
|
| - static uword Hash(const ConcatString& concat) {
|
| - return concat.Hash();
|
| - }
|
| - template<typename CharType>
|
| + static uword Hash(const StringSlice& slice) { return slice.Hash(); }
|
| + static uword Hash(const ConcatString& concat) { return concat.Hash(); }
|
| + template <typename CharType>
|
| static RawObject* NewKey(const CharArray<CharType>& array) {
|
| return array.ToSymbol();
|
| }
|
| @@ -310,8 +307,9 @@ void Symbols::SetupSymbolTable(Isolate* isolate) {
|
| ASSERT(isolate != NULL);
|
|
|
| // Setup the symbol table used within the String class.
|
| - const intptr_t initial_size = (isolate == Dart::vm_isolate()) ?
|
| - kInitialVMIsolateSymtabSize : kInitialSymtabSize;
|
| + const intptr_t initial_size = (isolate == Dart::vm_isolate())
|
| + ? kInitialVMIsolateSymtabSize
|
| + : kInitialSymtabSize;
|
| Array& array =
|
| Array::Handle(HashTables::New<SymbolTable>(initial_size, Heap::kOld));
|
| isolate->object_store()->set_symbol_table(array);
|
| @@ -330,8 +328,8 @@ RawArray* Symbols::UnifiedSymbolTable() {
|
| Dart::vm_isolate()->object_store()->symbol_table());
|
| SymbolTable table(zone, isolate->object_store()->symbol_table());
|
| intptr_t unified_size = vm_table.NumOccupied() + table.NumOccupied();
|
| - SymbolTable unified_table(zone, HashTables::New<SymbolTable>(unified_size,
|
| - Heap::kOld));
|
| + SymbolTable unified_table(
|
| + zone, HashTables::New<SymbolTable>(unified_size, Heap::kOld));
|
| String& symbol = String::Handle(zone);
|
|
|
| SymbolTable::Iterator vm_iter(&vm_table);
|
| @@ -369,10 +367,8 @@ void Symbols::Compact(Isolate* isolate) {
|
| GrowableArray<String*> symbols;
|
| class SymbolCollector : public ObjectVisitor {
|
| public:
|
| - SymbolCollector(Thread* thread,
|
| - GrowableArray<String*>* symbols)
|
| - : symbols_(symbols),
|
| - zone_(thread->zone()) {}
|
| + SymbolCollector(Thread* thread, GrowableArray<String*>* symbols)
|
| + : symbols_(symbols), zone_(thread->zone()) {}
|
|
|
| void VisitObject(RawObject* obj) {
|
| if (obj->IsCanonical() && obj->IsStringInstance()) {
|
| @@ -389,9 +385,8 @@ void Symbols::Compact(Isolate* isolate) {
|
| isolate->heap()->IterateObjects(&visitor);
|
|
|
| // 3. Build a new table from the surviving symbols.
|
| - Array& array =
|
| - Array::Handle(zone, HashTables::New<SymbolTable>(symbols.length() * 4 / 3,
|
| - Heap::kOld));
|
| + Array& array = Array::Handle(
|
| + zone, HashTables::New<SymbolTable>(symbols.length() * 4 / 3, Heap::kOld));
|
| SymbolTable table(zone, array.raw());
|
| for (intptr_t i = 0; i < symbols.length(); i++) {
|
| String& symbol = *symbols[i];
|
| @@ -402,7 +397,7 @@ void Symbols::Compact(Isolate* isolate) {
|
| }
|
| isolate->object_store()->set_symbol_table(table.Release());
|
| }
|
| -#endif // DART_PRECOMPILER
|
| +#endif // DART_PRECOMPILER
|
|
|
|
|
| void Symbols::GetStats(Isolate* isolate, intptr_t* size, intptr_t* capacity) {
|
| @@ -495,7 +490,8 @@ RawString* Symbols::FromDot(Thread* thread, const String& str) {
|
| // TODO(srdjan): If this becomes performance critical code, consider looking
|
| // up symbol from hash of pieces instead of concatenating them first into
|
| // a string.
|
| -RawString* Symbols::FromConcatAll(Thread* thread,
|
| +RawString* Symbols::FromConcatAll(
|
| + Thread* thread,
|
| const GrowableHandlePtrArray<const String>& strs) {
|
| const intptr_t strs_length = strs.length();
|
| GrowableArray<intptr_t> lengths(strs_length);
|
| @@ -527,9 +523,9 @@ RawString* Symbols::FromConcatAll(Thread* thread,
|
| if (str_len > 0) {
|
| const String& str = strs[i];
|
| ASSERT(str.IsOneByteString() || str.IsExternalOneByteString());
|
| - const uint8_t* src_p = str.IsOneByteString() ?
|
| - OneByteString::CharAddr(str, 0) :
|
| - ExternalOneByteString::CharAddr(str, 0);
|
| + const uint8_t* src_p = str.IsOneByteString()
|
| + ? OneByteString::CharAddr(str, 0)
|
| + : ExternalOneByteString::CharAddr(str, 0);
|
| memmove(buffer, src_p, str_len);
|
| buffer += str_len;
|
| }
|
| @@ -551,9 +547,9 @@ RawString* Symbols::FromConcatAll(Thread* thread,
|
| } else {
|
| // One-byte to two-byte string copy.
|
| ASSERT(str.IsOneByteString() || str.IsExternalOneByteString());
|
| - const uint8_t* src_p = str.IsOneByteString() ?
|
| - OneByteString::CharAddr(str, 0) :
|
| - ExternalOneByteString::CharAddr(str, 0);
|
| + const uint8_t* src_p = str.IsOneByteString()
|
| + ? OneByteString::CharAddr(str, 0)
|
| + : ExternalOneByteString::CharAddr(str, 0);
|
| for (int n = 0; n < str_len; n++) {
|
| buffer[n] = src_p[n];
|
| }
|
| @@ -568,7 +564,7 @@ RawString* Symbols::FromConcatAll(Thread* thread,
|
|
|
|
|
| // StringType can be StringSlice, ConcatString, or {Latin1,UTF16,UTF32}Array.
|
| -template<typename StringType>
|
| +template <typename StringType>
|
| RawString* Symbols::NewSymbol(Thread* thread, const StringType& str) {
|
| REUSABLE_OBJECT_HANDLESCOPE(thread);
|
| REUSABLE_SMI_HANDLESCOPE(thread);
|
| @@ -598,7 +594,7 @@ RawString* Symbols::NewSymbol(Thread* thread, const StringType& str) {
|
| }
|
|
|
|
|
| -template<typename StringType>
|
| +template <typename StringType>
|
| RawString* Symbols::Lookup(Thread* thread, const StringType& str) {
|
| REUSABLE_OBJECT_HANDLESCOPE(thread);
|
| REUSABLE_SMI_HANDLESCOPE(thread);
|
| @@ -628,8 +624,9 @@ RawString* Symbols::Lookup(Thread* thread, const StringType& str) {
|
| }
|
|
|
|
|
| -RawString* Symbols::LookupFromConcat(
|
| - Thread* thread, const String& str1, const String& str2) {
|
| +RawString* Symbols::LookupFromConcat(Thread* thread,
|
| + const String& str1,
|
| + const String& str2) {
|
| if (str1.Length() == 0) {
|
| return Lookup(thread, str2);
|
| } else if (str2.Length() == 0) {
|
| @@ -671,7 +668,6 @@ RawString* Symbols::New(Thread* thread,
|
| }
|
|
|
|
|
| -
|
| RawString* Symbols::NewFormatted(Thread* thread, const char* format, ...) {
|
| va_list args;
|
| va_start(args, format);
|
|
|