Commit fada07ae authored by antonm@chromium.org's avatar antonm@chromium.org

Temporary backing out r3536 to see impact on DOM benchmarks.

TBR=kasperl@chromium.org



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent fdba1897
......@@ -6845,7 +6845,6 @@ Object* HashTable<Shape, Key>::Allocate(int at_least_space_for) {
Object* obj = Heap::AllocateHashTable(EntryToIndex(capacity));
if (!obj->IsFailure()) {
HashTable::cast(obj)->SetNumberOfElements(0);
HashTable::cast(obj)->SetNumberOfDeletedElements(0);
HashTable::cast(obj)->SetCapacity(capacity);
}
return obj;
......@@ -6873,12 +6872,8 @@ template<typename Shape, typename Key>
Object* HashTable<Shape, Key>::EnsureCapacity(int n, Key key) {
int capacity = Capacity();
int nof = NumberOfElements() + n;
int nod = NumberOfDeletedElements();
// Return if:
// 50% is still free after adding n elements and
// at most 50% of the free elements are deleted elements.
if ((nof + (nof >> 1) <= capacity) &&
(nod <= (capacity - nof) >> 1) ) return this;
// Make sure 50% is free
if (nof + (nof >> 1) <= capacity) return this;
Object* obj = Allocate(nof * 2);
if (obj->IsFailure()) return obj;
......@@ -6905,7 +6900,6 @@ Object* HashTable<Shape, Key>::EnsureCapacity(int n, Key key) {
}
}
table->SetNumberOfElements(NumberOfElements());
table->SetNumberOfDeletedElements(0);
return table;
}
......@@ -7706,7 +7700,7 @@ void NumberDictionary::RemoveNumberEntries(uint32_t from, uint32_t to) {
}
// Update the number of elements.
ElementsRemoved(removed_entries);
SetNumberOfElements(NumberOfElements() - removed_entries);
}
......
......@@ -1897,11 +1897,6 @@ class HashTable: public FixedArray {
return Smi::cast(get(kNumberOfElementsIndex))->value();
}
// Returns the number of deleted elements in the hash table.
int NumberOfDeletedElements() {
return Smi::cast(get(kNumberOfDeletedElementsIndex))->value();
}
// Returns the capacity of the hash table.
int Capacity() {
return Smi::cast(get(kCapacityIndex))->value();
......@@ -1913,14 +1908,8 @@ class HashTable: public FixedArray {
// ElementRemoved should be called whenever an element is removed from
// a hash table.
void ElementRemoved() {
SetNumberOfElements(NumberOfElements() - 1);
SetNumberOfDeletedElements(NumberOfDeletedElements() + 1);
}
void ElementsRemoved(int n) {
SetNumberOfElements(NumberOfElements() - n);
SetNumberOfDeletedElements(NumberOfDeletedElements() + n);
}
void ElementRemoved() { SetNumberOfElements(NumberOfElements() - 1); }
void ElementsRemoved(int n) { SetNumberOfElements(NumberOfElements() - n); }
// Returns a new HashTable object. Might return Failure.
static Object* Allocate(int at_least_space_for);
......@@ -1947,13 +1936,12 @@ class HashTable: public FixedArray {
}
static const int kNumberOfElementsIndex = 0;
static const int kNumberOfDeletedElementsIndex = 1;
static const int kCapacityIndex = 2;
static const int kPrefixStartIndex = 3;
static const int kElementsStartIndex =
static const int kCapacityIndex = 1;
static const int kPrefixStartIndex = 2;
static const int kElementsStartIndex =
kPrefixStartIndex + Shape::kPrefixSize;
static const int kEntrySize = Shape::kEntrySize;
static const int kElementsStartOffset =
static const int kEntrySize = Shape::kEntrySize;
static const int kElementsStartOffset =
kHeaderSize + kElementsStartIndex * kPointerSize;
// Constant used for denoting a absent entry.
......@@ -1984,11 +1972,6 @@ class HashTable: public FixedArray {
fast_set(this, kNumberOfElementsIndex, Smi::FromInt(nof));
}
// Update the number of deleted elements in the hash table.
void SetNumberOfDeletedElements(int nod) {
fast_set(this, kNumberOfDeletedElementsIndex, Smi::FromInt(nod));
}
// Sets the capacity of the hash table.
void SetCapacity(int capacity) {
// To scale a computed hash code to fit within the hash table, we
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment