@@ -83,14 +83,22 @@ TEST_F(WeakMapsTest, Weakness) {
8383 int32_t object_hash = object->GetOrCreateHash (isolate).value ();
8484 JSWeakCollection::Set (weakmap, object, smi, object_hash);
8585 }
86- CHECK_EQ (2 , EphemeronHashTable::cast (weakmap->table ()).NumberOfElements ());
86+ // Put a symbol key into weak map.
87+ {
88+ HandleScope inner_scope (isolate);
89+ Handle<Symbol> symbol = factory->NewSymbol ();
90+ Handle<Smi> smi (Smi::FromInt (23 ), isolate);
91+ JSWeakCollection::Set (weakmap, symbol, smi, symbol->hash ());
92+ }
93+ CHECK_EQ (3 , EphemeronHashTable::cast (weakmap->table ()).NumberOfElements ());
8794
8895 // Force a full GC.
8996 PreciseCollectAllGarbage ();
9097 CHECK_EQ (0 , NumberOfWeakCalls);
98+ // Symbol key should be deleted.
9199 CHECK_EQ (2 , EphemeronHashTable::cast (weakmap->table ()).NumberOfElements ());
92100 CHECK_EQ (
93- 0 , EphemeronHashTable::cast (weakmap->table ()).NumberOfDeletedElements ());
101+ 1 , EphemeronHashTable::cast (weakmap->table ()).NumberOfDeletedElements ());
94102
95103 // Make the global reference to the key weak.
96104 std::pair<Handle<Object>*, int > handle_and_id (&key, 1234 );
@@ -103,7 +111,7 @@ TEST_F(WeakMapsTest, Weakness) {
103111 CHECK_EQ (1 , NumberOfWeakCalls);
104112 CHECK_EQ (0 , EphemeronHashTable::cast (weakmap->table ()).NumberOfElements ());
105113 CHECK_EQ (
106- 2 , EphemeronHashTable::cast (weakmap->table ()).NumberOfDeletedElements ());
114+ 3 , EphemeronHashTable::cast (weakmap->table ()).NumberOfDeletedElements ());
107115}
108116
109117TEST_F (WeakMapsTest, Shrinking) {
0 commit comments