diff options
author | Moonchild <mcwerewolf@wolfbeast.com> | 2019-04-30 14:11:17 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-30 14:11:17 +0000 |
commit | 871b926f635836d6a187534f6a6ad5b2bb30b27d (patch) | |
tree | 41f206fe01772ea8ed4379070e88ef94381599c8 /js/src/gc/Zone.h | |
parent | cd296c598a587b58a0e2a579c9be5aa255669829 (diff) | |
parent | 2ec2389d7f887d263b76e43af1d40e8b529db40e (diff) | |
download | UXP-871b926f635836d6a187534f6a6ad5b2bb30b27d.tar UXP-871b926f635836d6a187534f6a6ad5b2bb30b27d.tar.gz UXP-871b926f635836d6a187534f6a6ad5b2bb30b27d.tar.lz UXP-871b926f635836d6a187534f6a6ad5b2bb30b27d.tar.xz UXP-871b926f635836d6a187534f6a6ad5b2bb30b27d.zip |
Merge pull request #1065 from win7-7/Improve-dead-compartment-collection
Improve dead compartment collection
Diffstat (limited to 'js/src/gc/Zone.h')
-rw-r--r-- | js/src/gc/Zone.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h index 50d06319d..c8520ed55 100644 --- a/js/src/gc/Zone.h +++ b/js/src/gc/Zone.h @@ -349,10 +349,17 @@ struct Zone : public JS::shadow::Zone, // Keep track of all TypeDescr and related objects in this compartment. // This is used by the GC to trace them all first when compacting, since the // TypedObject trace hook may access these objects. - using TypeDescrObjectSet = js::GCHashSet<js::HeapPtr<JSObject*>, - js::MovableCellHasher<js::HeapPtr<JSObject*>>, + + // + // There are no barriers here - the set contains only tenured objects so no + // post-barrier is required, and these are weak references so no pre-barrier + // is required. + using TypeDescrObjectSet = js::GCHashSet<JSObject*, + js::MovableCellHasher<JSObject*>, js::SystemAllocPolicy>; JS::WeakCache<TypeDescrObjectSet> typeDescrObjects; + + bool addTypeDescrObject(JSContext* cx, HandleObject obj); // Malloc counter to measure memory pressure for GC scheduling. It runs from |