Bug 944398: Inline Math.fround even if its returned value hasn't ever been observed; r=bhackett

This commit is contained in:
Benjamin Bouvier 2013-12-19 16:09:42 +01:00
parent b8918e11e2
commit aab6c86de0

View File

@ -894,9 +894,17 @@ IonBuilder::inlineMathFRound(CallInfo &callInfo)
// MIRType can't be Float32, as this point, as getInlineReturnType uses JSVal types // MIRType can't be Float32, as this point, as getInlineReturnType uses JSVal types
// to infer the returned MIR type. // to infer the returned MIR type.
MIRType returnType = getInlineReturnType(); types::TemporaryTypeSet *returned = getInlineReturnTypeSet();
if (!IsNumberType(returnType)) if (returned->empty()) {
return InliningStatus_NotInlined; // As there's only one possible returned type, just add it to the observed
// returned typeset
if (!returned->addType(types::Type::DoubleType(), alloc_->lifoAlloc()))
return InliningStatus_Error;
} else {
MIRType returnType = getInlineReturnType();
if (!IsNumberType(returnType))
return InliningStatus_NotInlined;
}
MIRType arg = callInfo.getArg(0)->type(); MIRType arg = callInfo.getArg(0)->type();
if (!IsNumberType(arg)) if (!IsNumberType(arg))