Open Bug 1263500 Opened 4 years ago Updated 4 years ago

Replace std::stable_sort in CSSAnimationBuilder::BuildAnimationFrames with a move-constructable wrapper that provides stable-sorting semantics

Categories

(Core :: CSS Parsing and Computation, defect)

defect
Not set

Tracking

()

Tracking Status
firefox48 --- affected

People

(Reporter: birtles, Unassigned)

References

Details

In bug 1260655 we add CSSAnimationBuilder::BuildAnimationFrames which needs to perform a stable sort to preserve the source order of keyframes. However, on Mac/Android, std::stable_sort appears to call the copy constructor and copy assignment operator. This is undesirable since we'd like to avoid copying nsCSSValue objects.

Instead, we should could create a move-constructible wrapper that stores a Keyframe and its source index and sort on that. At the end of the function (or immediately after the sort) we'd need to extract the objects from their wrapper objects but we should be able to do this without copying.

Or perhaps there's another way altogether?
Would fixing bug 1147091 solve this problem?
(In reply to Mats Palmgren (:mats) from comment #1)
> Would fixing bug 1147091 solve this problem?

Yes, assuming our implementation uses move semantics.
You need to log in before you can comment on or make changes to this bug.