From f0a6ca4f95a017c1697a8b696fad07e305940e1f Mon Sep 17 00:00:00 2001 From: Moonchild Date: Fri, 10 Jul 2020 16:15:00 +0000 Subject: [js] Get the class pointer from the ObjectGroup in NativeObject::slotSpan This changes NativeObject::slotSpan() to get the class from the object group rather than getting it from the base shape to avoid a race between Shape::ensureOwnBaseShape and background sweeping. --- js/src/vm/NativeObject.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'js/src') diff --git a/js/src/vm/NativeObject.h b/js/src/vm/NativeObject.h index 3a3e50244f..e9c59ff7cd 100644 --- a/js/src/vm/NativeObject.h +++ b/js/src/vm/NativeObject.h @@ -646,7 +646,10 @@ class NativeObject : public ShapedObject uint32_t slotSpan() const { if (inDictionaryMode()) return lastProperty()->base()->slotSpan(); - return lastProperty()->slotSpan(); + + // Get the class from the object group rather than the base shape to avoid a + // race between Shape::ensureOwnBaseShape and background sweeping. + return lastProperty()->slotSpan(getClass()); } /* Whether a slot is at a fixed offset from this object. */ -- cgit v1.2.3