Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: vm/symbols.cc

Issue 12052033: Added macros OBJECT_IMPLEMENTATION and FINAL_OBJECT_IMPLEMENTATION (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « vm/stub_code_ia32_test.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/symbols.cc
===================================================================
--- vm/symbols.cc (revision 17436)
+++ vm/symbols.cc (working copy)
@@ -65,7 +65,7 @@
// The symbol_table needs to be reloaded as it might have grown in the
// previous iteration.
symbol_table = object_store->symbol_table();
- String* str = reinterpret_cast<String*>(Dart::AllocateReadOnlyHandle());
+ String* str = String::ReadOnlyHandle(isolate);
*str = OneByteString::New(names[i], Heap::kOld);
Add(symbol_table, *str);
symbol_handles_[i] = str;
@@ -81,7 +81,7 @@
ASSERT(idx < kMaxPredefinedId);
ASSERT(Utf::IsLatin1(c));
uint8_t ch = static_cast<uint8_t>(c);
- String* str = reinterpret_cast<String*>(Dart::AllocateReadOnlyHandle());
+ String* str = String::ReadOnlyHandle(isolate);
*str = OneByteString::New(&ch, 1, Heap::kOld);
Add(symbol_table, *str);
predefined_[c] = str->raw();
@@ -110,7 +110,7 @@
isolate->object_store()->symbol_table());
intptr_t table_size_index = symbol_table.Length() - 1;
dart::Smi& used = Smi::Handle();
- used |= symbol_table.At(table_size_index);
+ used ^= symbol_table.At(table_size_index);
return used.Value();
}
@@ -182,14 +182,14 @@
// First check if a symbol exists in the vm isolate for these characters.
symbol_table = Dart::vm_isolate()->object_store()->symbol_table();
intptr_t index = FindIndex(symbol_table, characters, len, hash);
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
if (symbol.IsNull()) {
// Now try in the symbol table of the current isolate.
symbol_table = isolate->object_store()->symbol_table();
index = FindIndex(symbol_table, characters, len, hash);
// Since we leave enough room in the table to guarantee, that we find an
// empty spot, index is the insertion point if symbol is null.
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
if (symbol.IsNull()) {
// Allocate new result string.
symbol = (*new_string)(characters, len, Heap::kOld);
@@ -243,14 +243,14 @@
// First check if a symbol exists in the vm isolate for these characters.
symbol_table = Dart::vm_isolate()->object_store()->symbol_table();
intptr_t index = FindIndex(symbol_table, str, begin_index, len, hash);
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
if (symbol.IsNull()) {
// Now try in the symbol table of the current isolate.
symbol_table = isolate->object_store()->symbol_table();
index = FindIndex(symbol_table, str, begin_index, len, hash);
// Since we leave enough room in the table to guarantee, that we find an
// empty spot, index is the insertion point if symbol is null.
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
if (symbol.IsNull()) {
if (str.IsOld() && begin_index == 0 && len == str.Length()) {
// Reuse the incoming str as the symbol value.
@@ -285,14 +285,14 @@
// First dump VM symbol table stats.
symbol_table = Dart::vm_isolate()->object_store()->symbol_table();
table_size = symbol_table.Length() - 1;
- used |= symbol_table.At(table_size);
+ used ^= symbol_table.At(table_size);
OS::Print("VM Isolate: Number of symbols : %"Pd"\n", used.Value());
OS::Print("VM Isolate: Symbol table capacity : %"Pd"\n", table_size);
// Now dump regular isolate symbol table stats.
symbol_table = Isolate::Current()->object_store()->symbol_table();
table_size = symbol_table.Length() - 1;
- used |= symbol_table.At(table_size);
+ used ^= symbol_table.At(table_size);
OS::Print("Isolate: Number of symbols : %"Pd"\n", used.Value());
OS::Print("Isolate: Symbol table capacity : %"Pd"\n", table_size);
@@ -319,7 +319,7 @@
String& element = String::Handle();
dart::Object& new_element = Object::Handle();
for (intptr_t i = 0; i < table_size; i++) {
- element |= symbol_table.At(i);
+ element ^= symbol_table.At(i);
if (!element.IsNull()) {
intptr_t hash = element.Hash();
intptr_t index = hash % new_table_size;
@@ -354,7 +354,7 @@
symbol.SetCanonical(); // Mark object as being canonical.
symbol_table.SetAt(index, symbol); // Remember the new symbol.
dart::Smi& used = Smi::Handle();
- used |= symbol_table.At(table_size);
+ used ^= symbol_table.At(table_size);
intptr_t used_elements = used.Value() + 1; // One more element added.
used = Smi::New(used_elements);
symbol_table.SetAt(table_size, used); // Update used count.
@@ -377,10 +377,10 @@
intptr_t num_collisions = 0;
String& symbol = String::Handle();
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
while (!symbol.IsNull() && !symbol.Equals(characters, len)) {
index = (index + 1) % table_size; // Move to next element.
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
num_collisions += 1;
}
if (FLAG_dump_symbol_stats) {
@@ -418,10 +418,10 @@
intptr_t num_collisions = 0;
String& symbol = String::Handle();
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
while (!symbol.IsNull() && !symbol.Equals(str, begin_index, len)) {
index = (index + 1) % table_size; // Move to next element.
- symbol |= symbol_table.At(index);
+ symbol ^= symbol_table.At(index);
num_collisions += 1;
}
if (FLAG_dump_symbol_stats) {
« no previous file with comments | « vm/stub_code_ia32_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698