Bug 1530844 - Make push/pop pair for ecx conditional on previous ecx content r=mgaudet

The ECX register must contain the SHIFT amount. Before this change, ECX will always be push/pop during a SHIFT operation. However, ECX should only be push/pop if it's original contents are going to be overwritten. We now only push/pop ECX if it contains some arbituary value and hence will be overwritten by the SHIFT operation.

Differential Revision: https://phabricator.services.mozilla.com/D22887

--HG--
extra : moz-landing-system : lando
This commit is contained in:
kellykc72 2019-03-12 13:11:19 +00:00
Родитель c92f0d2d4d
Коммит 26d5920802
1 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -328,7 +328,10 @@ inline void FlexibleShift32(MacroAssembler& masm, Register shift,
// Add registers we may clobber and want to ensure are restored as live, and
// remove what we definitely clobber (the destination)
LiveRegisterSet preserve;
preserve.add(ecx);
if (shift != ecx) {
preserve.add(ecx);
}
preserve.add(internalSrcDest);
preserve.takeUnchecked(srcDest);