summaryrefslogtreecommitdiffstats
path: root/js/src/gc/Zone.h
diff options
context:
space:
mode:
authorwin7-7 <win7-7@users.noreply.github.com>2019-04-29 12:02:24 +0300
committerGitHub <noreply@github.com>2019-04-29 12:02:24 +0300
commit2cb4d2ee571b91ec2480d2fba17e600a3843ddba (patch)
tree2106b80863a090b37076542c1894eca076c2dd70 /js/src/gc/Zone.h
parent5a65d8739d0ad6ef446b278a25fd955f0c734fb1 (diff)
downloadUXP-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.h13
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