summaryrefslogtreecommitdiffstats
path: root/js/src/jsgc.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2020-02-23 19:43:47 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2020-02-23 19:43:47 +0100
commitecdeefc4dd5624e824e696ac1c492c0b103f4acd (patch)
tree406dfcb33f7771e44c664e5d718591925728579c /js/src/jsgc.cpp
parentdd57b9273c7c95a7cdabc94854c8dc63b0653f02 (diff)
downloadUXP-ecdeefc4dd5624e824e696ac1c492c0b103f4acd.tar
UXP-ecdeefc4dd5624e824e696ac1c492c0b103f4acd.tar.gz
UXP-ecdeefc4dd5624e824e696ac1c492c0b103f4acd.tar.lz
UXP-ecdeefc4dd5624e824e696ac1c492c0b103f4acd.tar.xz
UXP-ecdeefc4dd5624e824e696ac1c492c0b103f4acd.zip
Revert #1091 Remove unboxed object code phase 1 + extras.
This should be the last code backout for this. merging this branch should get us back to the way we were (+ additional code changes for later changes) as fasr as the unused unboxed code is concerned.
Diffstat (limited to 'js/src/jsgc.cpp')
-rw-r--r--js/src/jsgc.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp
index 3ad526f74..64573b55a 100644
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -6176,6 +6176,12 @@ gc::MergeCompartments(JSCompartment* source, JSCompartment* target)
for (auto group = source->zone()->cellIter<ObjectGroup>(); !group.done(); group.next()) {
group->setGeneration(target->zone()->types.generation);
group->compartment_ = target;
+
+ // Remove any unboxed layouts from the list in the off thread
+ // compartment. These do not need to be reinserted in the target
+ // compartment's list, as the list is not required to be complete.
+ if (UnboxedLayout* layout = group->maybeUnboxedLayoutDontCheckGeneration())
+ layout->detachFromCompartment();
}
// Fixup zone pointers in source's zone to refer to target's zone.