Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index d025b2482339da3cef73acefe2b4d2507be05a5e..04657af4ad570676b750272a28d9cedbd4f046b3 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -994,6 +994,7 @@ template <class C> inline bool Is(Object* obj); |
V(WeakCell) \ |
V(ObjectHashTable) \ |
V(WeakHashTable) \ |
+ V(EmbeddedMapCache) \ |
V(OrderedHashTable) |
// Object is the abstract superclass for all classes in the |
@@ -3996,7 +3997,7 @@ class OrderedHashMap:public OrderedHashTable< |
template <int entrysize> |
-class WeakHashTableShape : public BaseShape<Handle<Object> > { |
+class HeapPointerShape : public BaseShape<Handle<Object> > { |
Hannes Payer (out of office)
2014/11/17 17:34:33
Why is that a good name?
|
public: |
static inline bool IsMatch(Handle<Object> key, Object* other); |
static inline uint32_t Hash(Handle<Object> key); |
@@ -4010,11 +4011,11 @@ class WeakHashTableShape : public BaseShape<Handle<Object> > { |
// WeakHashTable maps keys that are arbitrary objects to object values. |
// It is used for the global weak hash table that maps objects |
// embedded in optimized code to dependent code lists. |
-class WeakHashTable: public HashTable<WeakHashTable, |
- WeakHashTableShape<2>, |
- Handle<Object> > { |
- typedef HashTable< |
- WeakHashTable, WeakHashTableShape<2>, Handle<Object> > DerivedHashTable; |
+class WeakHashTable |
+ : public HashTable<WeakHashTable, HeapPointerShape<2>, Handle<Object> > { |
+ typedef HashTable<WeakHashTable, HeapPointerShape<2>, Handle<Object> > |
+ DerivedHashTable; |
+ |
public: |
DECLARE_CAST(WeakHashTable) |
@@ -4049,6 +4050,33 @@ class WeakHashTable: public HashTable<WeakHashTable, |
}; |
Hannes Payer (out of office)
2014/11/17 17:34:33
Please add a detailed description about what the E
|
+class EmbeddedMapCache |
+ : public HashTable<EmbeddedMapCache, HeapPointerShape<2>, Handle<Object> > { |
+ typedef HashTable<EmbeddedMapCache, HeapPointerShape<2>, Handle<Object> > |
+ DerivedHashTable; |
+ |
+ public: |
+ DECLARE_CAST(EmbeddedMapCache) |
+ |
+ MUST_USE_RESULT static Handle<EmbeddedMapCache> Put( |
+ Handle<EmbeddedMapCache> table, Handle<Map> key); |
+ |
+ void Age(); |
+ |
+ private: |
+ static const int kMaxAge = 5; |
+ |
+ friend class MarkCompactCollector; |
+ |
+ void AddEntry(int entry, Handle<Object> key, Handle<Object> value); |
+ |
+ // Returns the index to the value of an entry. |
+ static inline int EntryToValueIndex(int entry) { |
+ return EntryToIndex(entry) + 1; |
+ } |
+}; |
+ |
+ |
// JSFunctionResultCache caches results of some JSFunction invocation. |
// It is a fixed array with fixed structure: |
// [0]: factory function |