| OLD | NEW |
| 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 6967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6978 } | 6978 } |
| 6979 ASSERT_NE(NULL, result_double); | 6979 ASSERT_NE(NULL, result_double); |
| 6980 result_double->set_value(static_cast<double>(result)); | 6980 result_double->set_value(static_cast<double>(result)); |
| 6981 return result_double; | 6981 return result_double; |
| 6982 } | 6982 } |
| 6983 | 6983 |
| 6984 | 6984 |
| 6985 Object* PixelArray::SetValue(uint32_t index, Object* value) { | 6985 Object* PixelArray::SetValue(uint32_t index, Object* value) { |
| 6986 uint8_t clamped_value = 0; | 6986 uint8_t clamped_value = 0; |
| 6987 if (index < static_cast<uint32_t>(length())) { | 6987 if (index < static_cast<uint32_t>(length())) { |
| 6988 int int_value = 0; | |
| 6989 if (value->IsSmi()) { | 6988 if (value->IsSmi()) { |
| 6990 int_value = Smi::cast(value)->value(); | 6989 int int_value = Smi::cast(value)->value(); |
| 6990 if (int_value < 0) { |
| 6991 clamped_value = 0; |
| 6992 } else if (int_value > 255) { |
| 6993 clamped_value = 255; |
| 6994 } else { |
| 6995 clamped_value = static_cast<uint8_t>(int_value); |
| 6996 } |
| 6991 } else if (value->IsHeapNumber()) { | 6997 } else if (value->IsHeapNumber()) { |
| 6992 double double_value = HeapNumber::cast(value)->value(); | 6998 double double_value = HeapNumber::cast(value)->value(); |
| 6993 if (!isnan(double_value)) { | 6999 if (!(double_value > 0)) { |
| 6994 // NaN clamps to zero (default). Other doubles are rounded to | 7000 // NaN and less than zero clamp to zero. |
| 6995 // the nearest integer. | 7001 clamped_value = 0; |
| 6996 int_value = static_cast<int>(double_value + 0.5); | 7002 } else if (double_value > 255) { |
| 7003 // Greater than 255 clamp to 255. |
| 7004 clamped_value = 255; |
| 7005 } else { |
| 7006 // Other doubles are rounded to the nearest integer. |
| 7007 clamped_value = static_cast<uint8_t>(double_value + 0.5); |
| 6997 } | 7008 } |
| 6998 } else { | 7009 } else { |
| 6999 // Clamp undefined to zero (default). All other types have been | 7010 // Clamp undefined to zero (default). All other types have been |
| 7000 // converted to a number type further up in the call chain. | 7011 // converted to a number type further up in the call chain. |
| 7001 ASSERT(value->IsUndefined()); | 7012 ASSERT(value->IsUndefined()); |
| 7002 } | 7013 } |
| 7003 if (int_value < 0) { | |
| 7004 clamped_value = 0; | |
| 7005 } else if (int_value > 255) { | |
| 7006 clamped_value = 255; | |
| 7007 } else { | |
| 7008 clamped_value = static_cast<uint8_t>(int_value); | |
| 7009 } | |
| 7010 set(index, clamped_value); | 7014 set(index, clamped_value); |
| 7011 } | 7015 } |
| 7012 return Smi::FromInt(clamped_value); | 7016 return Smi::FromInt(clamped_value); |
| 7013 } | 7017 } |
| 7014 | 7018 |
| 7015 | 7019 |
| 7016 Object* GlobalObject::GetPropertyCell(LookupResult* result) { | 7020 Object* GlobalObject::GetPropertyCell(LookupResult* result) { |
| 7017 ASSERT(!HasFastProperties()); | 7021 ASSERT(!HasFastProperties()); |
| 7018 Object* value = property_dictionary()->ValueAt(result->GetDictionaryEntry()); | 7022 Object* value = property_dictionary()->ValueAt(result->GetDictionaryEntry()); |
| 7019 ASSERT(value->IsJSGlobalPropertyCell()); | 7023 ASSERT(value->IsJSGlobalPropertyCell()); |
| (...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7922 if (break_point_objects()->IsUndefined()) return 0; | 7926 if (break_point_objects()->IsUndefined()) return 0; |
| 7923 // Single beak point. | 7927 // Single beak point. |
| 7924 if (!break_point_objects()->IsFixedArray()) return 1; | 7928 if (!break_point_objects()->IsFixedArray()) return 1; |
| 7925 // Multiple break points. | 7929 // Multiple break points. |
| 7926 return FixedArray::cast(break_point_objects())->length(); | 7930 return FixedArray::cast(break_point_objects())->length(); |
| 7927 } | 7931 } |
| 7928 #endif | 7932 #endif |
| 7929 | 7933 |
| 7930 | 7934 |
| 7931 } } // namespace v8::internal | 7935 } } // namespace v8::internal |
| OLD | NEW |