| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index bdd06b40fc6fb313a73a308b735908507a28d854..afb1f488b14ebc55d3c4b1211654035ae4c446dd 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -16169,7 +16169,10 @@ Handle<WeakHashTable> WeakHashTable::Put(Handle<WeakHashTable> table,
|
| int entry = table->FindEntry(key);
|
| // Key is already in table, just overwrite value.
|
| if (entry != kNotFound) {
|
| - table->set(EntryToValueIndex(entry), *value);
|
| + // TODO(ulan): Skipping write barrier is a temporary solution to avoid
|
| + // memory leaks. Remove this once we have special visitor for weak fixed
|
| + // arrays.
|
| + table->set(EntryToValueIndex(entry), *value, SKIP_WRITE_BARRIER);
|
| return table;
|
| }
|
|
|
| @@ -16185,8 +16188,11 @@ void WeakHashTable::AddEntry(int entry,
|
| Handle<Object> key,
|
| Handle<Object> value) {
|
| DisallowHeapAllocation no_allocation;
|
| - set(EntryToIndex(entry), *key);
|
| - set(EntryToValueIndex(entry), *value);
|
| + // TODO(ulan): Skipping write barrier is a temporary solution to avoid
|
| + // memory leaks. Remove this once we have special visitor for weak fixed
|
| + // arrays.
|
| + set(EntryToIndex(entry), *key, SKIP_WRITE_BARRIER);
|
| + set(EntryToValueIndex(entry), *value, SKIP_WRITE_BARRIER);
|
| ElementAdded();
|
| }
|
|
|
|
|