Bug 1214562 part 1 - SetElementCache no longer needs a byteop register on x86. r=bhackett

This commit is contained in:
Jan de Mooij 2015-10-15 15:52:47 +02:00
Родитель 3668e5a573
Коммит 453c4e0dd3
1 изменённых файлов: 2 добавлений и 6 удалений

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

@ -3525,21 +3525,17 @@ LIRGenerator::visitSetElementCache(MSetElementCache* ins)
gen->setPerformsCall(); // See visitSetPropertyCache.
// Due to lack of registers on x86, we reuse the object register as a
// temporary. This register may be used in a 1-byte store, which on x86
// again has constraints; thus the use of |useByteOpRegister| over
// |useRegister| below.
LInstruction* lir;
if (ins->value()->type() == MIRType_Value) {
LDefinition tempF32 = hasUnaliasedDouble() ? tempFloat32() : LDefinition::BogusTemp();
lir = new(alloc()) LSetElementCacheV(useByteOpRegister(ins->object()), tempToUnbox(),
lir = new(alloc()) LSetElementCacheV(useRegister(ins->object()), tempToUnbox(),
temp(), tempDouble(), tempF32);
useBox(lir, LSetElementCacheV::Index, ins->index());
useBox(lir, LSetElementCacheV::Value, ins->value());
} else {
LDefinition tempF32 = hasUnaliasedDouble() ? tempFloat32() : LDefinition::BogusTemp();
lir = new(alloc()) LSetElementCacheT(useByteOpRegister(ins->object()),
lir = new(alloc()) LSetElementCacheT(useRegister(ins->object()),
useRegisterOrConstant(ins->value()),
tempToUnbox(), temp(), tempDouble(),
tempF32);