Index: src/objects-inl.h |
=================================================================== |
--- src/objects-inl.h (revision 2326) |
+++ src/objects-inl.h (working copy) |
@@ -1370,15 +1370,14 @@ |
} |
-bool Dictionary::requires_slow_elements() { |
+bool NumberDictionary::requires_slow_elements() { |
Object* max_index_object = get(kMaxNumberKeyIndex); |
if (!max_index_object->IsSmi()) return false; |
return 0 != |
(Smi::cast(max_index_object)->value() & kRequiresSlowElementsMask); |
} |
- |
-uint32_t Dictionary::max_number_key() { |
+uint32_t NumberDictionary::max_number_key() { |
ASSERT(!requires_slow_elements()); |
Object* max_index_object = get(kMaxNumberKeyIndex); |
if (!max_index_object->IsSmi()) return 0; |
@@ -1386,8 +1385,7 @@ |
return value >> kRequiresSlowElementsTagSize; |
} |
- |
-void Dictionary::set_requires_slow_elements() { |
+void NumberDictionary::set_requires_slow_elements() { |
set(kMaxNumberKeyIndex, |
Smi::FromInt(kRequiresSlowElementsMask), |
SKIP_WRITE_BARRIER); |
@@ -1400,7 +1398,6 @@ |
CAST_ACCESSOR(FixedArray) |
CAST_ACCESSOR(DescriptorArray) |
-CAST_ACCESSOR(Dictionary) |
CAST_ACCESSOR(SymbolTable) |
CAST_ACCESSOR(CompilationCacheTable) |
CAST_ACCESSOR(MapCache) |
@@ -1439,9 +1436,9 @@ |
STRUCT_LIST(MAKE_STRUCT_CAST) |
#undef MAKE_STRUCT_CAST |
-template <int prefix_size, int elem_size> |
-HashTable<prefix_size, elem_size>* HashTable<prefix_size, elem_size>::cast( |
- Object* obj) { |
+ |
+template <typename Shape, typename Key> |
+HashTable<Shape, Key>* HashTable<Shape, Key>::cast(Object* obj) { |
ASSERT(obj->IsHashTable()); |
return reinterpret_cast<HashTable*>(obj); |
} |
@@ -2468,15 +2465,15 @@ |
} |
-Dictionary* JSObject::property_dictionary() { |
+StringDictionary* JSObject::property_dictionary() { |
ASSERT(!HasFastProperties()); |
- return Dictionary::cast(properties()); |
+ return StringDictionary::cast(properties()); |
} |
-Dictionary* JSObject::element_dictionary() { |
+NumberDictionary* JSObject::element_dictionary() { |
ASSERT(!HasFastElements()); |
- return Dictionary::cast(elements()); |
+ return NumberDictionary::cast(elements()); |
} |
@@ -2640,16 +2637,17 @@ |
set_flag(Smi::FromInt(rest_value | AttributesField::encode(attributes))); |
} |
-void Dictionary::SetEntry(int entry, |
- Object* key, |
- Object* value, |
- PropertyDetails details) { |
- ASSERT(!key->IsString() || details.index() > 0); |
- int index = EntryToIndex(entry); |
- WriteBarrierMode mode = GetWriteBarrierMode(); |
- set(index, key, mode); |
- set(index+1, value, mode); |
- fast_set(this, index+2, details.AsSmi()); |
+template<typename Shape, typename Key> |
+void Dictionary<Shape, Key>::SetEntry(int entry, |
+ Object* key, |
+ Object* value, |
+ PropertyDetails details) { |
+ ASSERT(!Shape::kIsEnumerable || details.index() > 0); |
+ int index = HashTable<Shape, Key>::EntryToIndex(entry); |
+ WriteBarrierMode mode = FixedArray::GetWriteBarrierMode(); |
+ FixedArray::set(index, key, mode); |
+ FixedArray::set(index+1, value, mode); |
+ FixedArray::fast_set(this, index+2, details.AsSmi()); |
} |