Closed Bug 945846 Opened 11 years ago Closed 11 years ago

GenerationalGC: Store buffer reentrancy assertion fails in browser builds

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla28

People

(Reporter: jonco, Assigned: jonco)

References

Details

(Whiteboard: [qa-])

Attachments

(2 files)

The work to stop barriers firing minor collection needs extending to the browser. It looks like there are only two cases, one in ctypes and one in XPConnect.
This is slightly unpleasant because we have to make a duplicate FieldInfo structure without the Heap<JSObject*>.
Attachment #8341851 - Flags: review?(terrence)
And here's a patch to fix the case in XPConnect.
Attachment #8341853 - Flags: review?(bobbyholley+bmo)
Comment on attachment 8341853 [details] [diff] [review] fix-xpconnect-barriers Review of attachment 8341853 [details] [diff] [review]: ----------------------------------------------------------------- I have no idea what this does. Andrew or one of the GC guys can review it.
Attachment #8341853 - Flags: review?(bobbyholley+bmo)
I vote for Terrence...
Attachment #8341853 - Flags: review?(terrence)
Comment on attachment 8341851 [details] [diff] [review] fix-ctypes-barriers Review of attachment 8341851 [details] [diff] [review]: ----------------------------------------------------------------- Great! Sorry about the delay; I thought I hit submit yesterday. Firefox has been lagging horribly for me lately, so I'm going to blame that. r=me ::: js/src/ctypes/CTypes.h @@ +224,5 @@ > + JSObject* mType; // CType of the field > + size_t mIndex; // index of the field in the struct (first is 0) > + size_t mOffset; // offset of the field in the struct, in bytes > +}; > +JS_STATIC_ASSERT(sizeof(UnbarrieredFieldInfo) == sizeof(FieldInfo)); We are using the C++11 static_assert now. Check gc/Heap.h for examples.
Attachment #8341851 - Flags: review?(terrence) → review+
Comment on attachment 8341853 [details] [diff] [review] fix-xpconnect-barriers Review of attachment 8341853 [details] [diff] [review]: ----------------------------------------------------------------- r=me ::: js/xpconnect/src/XPCMaps.h @@ +694,5 @@ > * This function is called during minor GCs for each key in the HashMap that > * has been moved. > */ > static void KeyMarkCallback(JSTracer *trc, void *k, void *d) { > + typedef js::HashMap<JSObject *, JSObject *, js::PointerHasher<JSObject *, 3>, It would be nice to have a comment here explaining this for the casual reader.
Attachment #8341853 - Flags: review?(terrence) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
Whiteboard: [qa-]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: