Bug 786294 - Don't use emit-at-uses for double constants on x64. r=dvander

This commit is contained in:
Jan de Mooij 2012-08-31 10:39:05 +02:00
parent a6f201cecc
commit 1d404045da
3 changed files with 12 additions and 9 deletions

View File

@ -39,9 +39,6 @@ LIRGeneratorARM::lowerConstantDouble(double d, MInstruction *mir)
bool
LIRGeneratorARM::visitConstant(MConstant *ins)
{
if (ins->canEmitAtUses() && ins->type() != MIRType_Double)
return emitAtUses(ins);
if (ins->type() == MIRType_Double) {
uint32 index;
if (!lirGraph_.addConstantToPool(ins->value(), &index))
@ -50,6 +47,10 @@ LIRGeneratorARM::visitConstant(MConstant *ins)
return define(lir, ins);
}
// Emit non-double constants at their uses.
if (ins->canEmitAtUses())
return emitAtUses(ins);
return LIRGeneratorShared::visitConstant(ins);
}

View File

@ -34,12 +34,13 @@ LIRGeneratorX64::lowerConstantDouble(double d, MInstruction *mir)
bool
LIRGeneratorX64::visitConstant(MConstant *ins)
{
if (ins->canEmitAtUses())
return emitAtUses(ins);
if (ins->type() == MIRType_Double)
return lowerConstantDouble(ins->value().toDouble(), ins);
// Emit non-double constants at their uses.
if (ins->canEmitAtUses())
return emitAtUses(ins);
return LIRGeneratorShared::visitConstant(ins);
}

View File

@ -40,9 +40,6 @@ LIRGeneratorX86::lowerConstantDouble(double d, MInstruction *mir)
bool
LIRGeneratorX86::visitConstant(MConstant *ins)
{
if (ins->canEmitAtUses() && ins->type() != MIRType_Double)
return emitAtUses(ins);
if (ins->type() == MIRType_Double) {
uint32 index;
if (!lirGraph_.addConstantToPool(ins->value(), &index))
@ -51,6 +48,10 @@ LIRGeneratorX86::visitConstant(MConstant *ins)
return define(lir, ins);
}
// Emit non-double constants at their uses.
if (ins->canEmitAtUses())
return emitAtUses(ins);
return LIRGeneratorShared::visitConstant(ins);
}