diff options
author | win7-7 <win7-7@users.noreply.github.com> | 2019-04-29 12:02:24 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-29 12:02:24 +0300 |
commit | 2cb4d2ee571b91ec2480d2fba17e600a3843ddba (patch) | |
tree | 2106b80863a090b37076542c1894eca076c2dd70 /js/src/gc/Zone.h | |
parent | 5a65d8739d0ad6ef446b278a25fd955f0c734fb1 (diff) | |
download | UXP-2cb4d2ee571b91ec2480d2fba17e600a3843ddba.tar UXP-2cb4d2ee571b91ec2480d2fba17e600a3843ddba.tar.gz UXP-2cb4d2ee571b91ec2480d2fba17e600a3843ddba.tar.lz UXP-2cb4d2ee571b91ec2480d2fba17e600a3843ddba.tar.xz UXP-2cb4d2ee571b91ec2480d2fba17e600a3843ddba.zip |
Improve dead compartment collection js/src/gc
Diffstat (limited to 'js/src/gc/Zone.h')
-rw-r--r-- | js/src/gc/Zone.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h index 50d06319d..24f4648f7 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 @@ -734,4 +741,4 @@ class ZoneAllocPolicy } // namespace js -#endif // gc_Zone_h +#endif // gc_Zone_h
\ No newline at end of file |