Created attachment 629476[details][diff][review]
patch
nsPresArena.h says:
enum ObjectID {
nsLineBox_id = nsQueryFrame::NON_FRAME_MARKER,
// The PresArena implementation uses this bit to distinguish objects
// allocated by size from objects allocated by type ID (that is, frames
// using AllocateByFrameID and other objects using AllocateByObjectID).
// It should not collide with any Object ID (above) or frame ID (in
// nsQueryFrame.h). It is not 0x80000000 to avoid the question of
// whether enumeration constants are signed.
NON_OBJECT_MARKER = 0x40000000
};
but the actual implementation of AllocateBySize wrongly uses nsQueryFrame::NON_FRAME_MARKER instead of NON_OBJECT_MARKER. (nsPresArena.cpp doesn't even use NON_OBJECT_MARKER currently.) If we were to add more ObjectIDs for better arena allocation statistics, we'd eventually run into problems, though it would take a while. Let's fix this.