- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 
                        #if HAVE(MERGESORT)
    if (isSortingPrimitiveValues)
        qsort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
    else
        mergesort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#else
    // FIXME: The qsort library function is likely to not be a stable sort.
    // ECMAScript-262 does not specify a stable sort, but in practice, browsers perform a stable sort.
    qsort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#endif
                                 
        
            Из какой-то древней версии Webkit. Про устойчивость сортировки. Ну типа вот хоть в ECMAScript-262 нихрена не написано про то, что сортировка должна быть устойчивой, мы сделаем ее устойчивой потому что так принято (а то сломаем еще ненароком чей-то говнокод на JS)
вот еще
https://bugs.chromium.org/p/v8/issues/detail?id=90
https://habrahabr.ru/post/303748/
        
        
Stable sort погугли.
достаточно вирта почитать "структуры и олгоритмы"
стыдно не читать!
как можно дожить до седых мудей и не знать что такое stable sort и не stable sort?
если у тебя есть foo и bar, и bar == foo, то стабильная сортировка никогда их не поменяет местами, а нестабильная -- может.
Например в жобе для сортировки примитивов используется нестабильная (потому что 2 и 2 можно менять местами скок угодно) а для объектов стабильная потому что если foo.equals(bar), то совсем не факт что это один и тот же объект