зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1214562 part 1 - SetElementCache no longer needs a byteop register on x86. r=bhackett
This commit is contained in:
Родитель
3668e5a573
Коммит
453c4e0dd3
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче