Change custom NaN check to use isnan to fix pixel array

failures on ARM hardware.
Review URL: http://codereview.chromium.org/160269

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2557 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
kasperl@chromium.org 2009-07-28 12:50:58 +00:00
parent 516d47c73b
commit f68b31403c

View File

@ -7060,20 +7060,16 @@ Object* PixelArray::SetValue(uint32_t index, Object* value) {
if (value->IsSmi()) {
int_value = Smi::cast(value)->value();
} else if (value->IsHeapNumber()) {
static const DoubleRepresentation nan(OS::nan_value());
DoubleRepresentation double_value = HeapNumber::cast(value)->value();
if (nan.bits != double_value.bits) {
int_value = static_cast<int>(double_value.value + 0.5);
} else {
// NaN clamps to zero.
int_value = 0;
double double_value = HeapNumber::cast(value)->value();
if (!isnan(double_value)) {
// NaN clamps to zero (default). Other doubles are rounded to
// the nearest integer.
int_value = static_cast<int>(double_value + 0.5);
}
} else if (value->IsUndefined()) {
int_value = 0;
} else {
// All other types have been converted to a number type further up in the
// call chain.
UNREACHABLE();
// Clamp undefined to zero (default). All other types have been
// converted to a number type further up in the call chain.
ASSERT(value->IsUndefined());
}
if (int_value < 0) {
clamped_value = 0;