| 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 6032 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6043         return Smi::FromInt(value); | 6043         return Smi::FromInt(value); | 
| 6044       } | 6044       } | 
| 6045       break; | 6045       break; | 
| 6046     } | 6046     } | 
| 6047     case EXTERNAL_BYTE_ELEMENTS: { | 6047     case EXTERNAL_BYTE_ELEMENTS: { | 
| 6048       ExternalByteArray* array = ExternalByteArray::cast(elements()); | 6048       ExternalByteArray* array = ExternalByteArray::cast(elements()); | 
| 6049       if (index < static_cast<uint32_t>(array->length())) { | 6049       if (index < static_cast<uint32_t>(array->length())) { | 
| 6050         int8_t value = array->get(index); | 6050         int8_t value = array->get(index); | 
| 6051         return Smi::FromInt(value); | 6051         return Smi::FromInt(value); | 
| 6052       } | 6052       } | 
| 6053       return Top::Throw(*Factory::NewIndexError(index)); | 6053       break; | 
| 6054     } | 6054     } | 
| 6055     case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { | 6055     case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { | 
| 6056       ExternalUnsignedByteArray* array = | 6056       ExternalUnsignedByteArray* array = | 
| 6057           ExternalUnsignedByteArray::cast(elements()); | 6057           ExternalUnsignedByteArray::cast(elements()); | 
| 6058       if (index < static_cast<uint32_t>(array->length())) { | 6058       if (index < static_cast<uint32_t>(array->length())) { | 
| 6059         uint8_t value = array->get(index); | 6059         uint8_t value = array->get(index); | 
| 6060         return Smi::FromInt(value); | 6060         return Smi::FromInt(value); | 
| 6061       } | 6061       } | 
| 6062       return Top::Throw(*Factory::NewIndexError(index)); | 6062       break; | 
| 6063     } | 6063     } | 
| 6064     case EXTERNAL_SHORT_ELEMENTS: { | 6064     case EXTERNAL_SHORT_ELEMENTS: { | 
| 6065       ExternalShortArray* array = ExternalShortArray::cast(elements()); | 6065       ExternalShortArray* array = ExternalShortArray::cast(elements()); | 
| 6066       if (index < static_cast<uint32_t>(array->length())) { | 6066       if (index < static_cast<uint32_t>(array->length())) { | 
| 6067         int16_t value = array->get(index); | 6067         int16_t value = array->get(index); | 
| 6068         return Smi::FromInt(value); | 6068         return Smi::FromInt(value); | 
| 6069       } | 6069       } | 
| 6070       return Top::Throw(*Factory::NewIndexError(index)); | 6070       break; | 
| 6071     } | 6071     } | 
| 6072     case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: { | 6072     case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: { | 
| 6073       ExternalUnsignedShortArray* array = | 6073       ExternalUnsignedShortArray* array = | 
| 6074           ExternalUnsignedShortArray::cast(elements()); | 6074           ExternalUnsignedShortArray::cast(elements()); | 
| 6075       if (index < static_cast<uint32_t>(array->length())) { | 6075       if (index < static_cast<uint32_t>(array->length())) { | 
| 6076         uint16_t value = array->get(index); | 6076         uint16_t value = array->get(index); | 
| 6077         return Smi::FromInt(value); | 6077         return Smi::FromInt(value); | 
| 6078       } | 6078       } | 
| 6079       return Top::Throw(*Factory::NewIndexError(index)); | 6079       break; | 
| 6080     } | 6080     } | 
| 6081     case EXTERNAL_INT_ELEMENTS: { | 6081     case EXTERNAL_INT_ELEMENTS: { | 
| 6082       ExternalIntArray* array = ExternalIntArray::cast(elements()); | 6082       ExternalIntArray* array = ExternalIntArray::cast(elements()); | 
| 6083       if (index < static_cast<uint32_t>(array->length())) { | 6083       if (index < static_cast<uint32_t>(array->length())) { | 
| 6084         int32_t value = array->get(index); | 6084         int32_t value = array->get(index); | 
| 6085         return Heap::NumberFromInt32(value); | 6085         return Heap::NumberFromInt32(value); | 
| 6086       } | 6086       } | 
| 6087       return Top::Throw(*Factory::NewIndexError(index)); | 6087       break; | 
| 6088     } | 6088     } | 
| 6089     case EXTERNAL_UNSIGNED_INT_ELEMENTS: { | 6089     case EXTERNAL_UNSIGNED_INT_ELEMENTS: { | 
| 6090       ExternalUnsignedIntArray* array = | 6090       ExternalUnsignedIntArray* array = | 
| 6091           ExternalUnsignedIntArray::cast(elements()); | 6091           ExternalUnsignedIntArray::cast(elements()); | 
| 6092       if (index < static_cast<uint32_t>(array->length())) { | 6092       if (index < static_cast<uint32_t>(array->length())) { | 
| 6093         uint32_t value = array->get(index); | 6093         uint32_t value = array->get(index); | 
| 6094         return Heap::NumberFromUint32(value); | 6094         return Heap::NumberFromUint32(value); | 
| 6095       } | 6095       } | 
| 6096       return Top::Throw(*Factory::NewIndexError(index)); | 6096       break; | 
| 6097     } | 6097     } | 
| 6098     case EXTERNAL_FLOAT_ELEMENTS: { | 6098     case EXTERNAL_FLOAT_ELEMENTS: { | 
| 6099       ExternalFloatArray* array = ExternalFloatArray::cast(elements()); | 6099       ExternalFloatArray* array = ExternalFloatArray::cast(elements()); | 
| 6100       if (index < static_cast<uint32_t>(array->length())) { | 6100       if (index < static_cast<uint32_t>(array->length())) { | 
| 6101         float value = array->get(index); | 6101         float value = array->get(index); | 
| 6102         return Heap::AllocateHeapNumber(value); | 6102         return Heap::AllocateHeapNumber(value); | 
| 6103       } | 6103       } | 
| 6104       return Top::Throw(*Factory::NewIndexError(index)); | 6104       break; | 
| 6105     } | 6105     } | 
| 6106     case DICTIONARY_ELEMENTS: { | 6106     case DICTIONARY_ELEMENTS: { | 
| 6107       NumberDictionary* dictionary = element_dictionary(); | 6107       NumberDictionary* dictionary = element_dictionary(); | 
| 6108       int entry = dictionary->FindEntry(index); | 6108       int entry = dictionary->FindEntry(index); | 
| 6109       if (entry != NumberDictionary::kNotFound) { | 6109       if (entry != NumberDictionary::kNotFound) { | 
| 6110         Object* element = dictionary->ValueAt(entry); | 6110         Object* element = dictionary->ValueAt(entry); | 
| 6111         PropertyDetails details = dictionary->DetailsAt(entry); | 6111         PropertyDetails details = dictionary->DetailsAt(entry); | 
| 6112         if (details.type() == CALLBACKS) { | 6112         if (details.type() == CALLBACKS) { | 
| 6113           // Only accessors allowed as elements. | 6113           // Only accessors allowed as elements. | 
| 6114           FixedArray* structure = FixedArray::cast(element); | 6114           FixedArray* structure = FixedArray::cast(element); | 
| (...skipping 1198 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7313       cast_value = static_cast<ValueType>(int_value); | 7313       cast_value = static_cast<ValueType>(int_value); | 
| 7314     } else if (value->IsHeapNumber()) { | 7314     } else if (value->IsHeapNumber()) { | 
| 7315       double double_value = HeapNumber::cast(value)->value(); | 7315       double double_value = HeapNumber::cast(value)->value(); | 
| 7316       cast_value = static_cast<ValueType>(DoubleToInt32(double_value)); | 7316       cast_value = static_cast<ValueType>(DoubleToInt32(double_value)); | 
| 7317     } else { | 7317     } else { | 
| 7318       // Clamp undefined to zero (default). All other types have been | 7318       // Clamp undefined to zero (default). All other types have been | 
| 7319       // converted to a number type further up in the call chain. | 7319       // converted to a number type further up in the call chain. | 
| 7320       ASSERT(value->IsUndefined()); | 7320       ASSERT(value->IsUndefined()); | 
| 7321     } | 7321     } | 
| 7322     receiver->set(index, cast_value); | 7322     receiver->set(index, cast_value); | 
| 7323   } else { |  | 
| 7324     return Top::Throw(*Factory::NewIndexError(index)); |  | 
| 7325   } | 7323   } | 
| 7326   return Heap::NumberFromInt32(cast_value); | 7324   return Heap::NumberFromInt32(cast_value); | 
| 7327 } | 7325 } | 
| 7328 | 7326 | 
| 7329 | 7327 | 
| 7330 Object* ExternalByteArray::SetValue(uint32_t index, Object* value) { | 7328 Object* ExternalByteArray::SetValue(uint32_t index, Object* value) { | 
| 7331   return ExternalArrayIntSetter<ExternalByteArray, int8_t> | 7329   return ExternalArrayIntSetter<ExternalByteArray, int8_t> | 
| 7332       (this, index, value); | 7330       (this, index, value); | 
| 7333 } | 7331 } | 
| 7334 | 7332 | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 7365       cast_value = static_cast<uint32_t>(int_value); | 7363       cast_value = static_cast<uint32_t>(int_value); | 
| 7366     } else if (value->IsHeapNumber()) { | 7364     } else if (value->IsHeapNumber()) { | 
| 7367       double double_value = HeapNumber::cast(value)->value(); | 7365       double double_value = HeapNumber::cast(value)->value(); | 
| 7368       cast_value = static_cast<uint32_t>(DoubleToUint32(double_value)); | 7366       cast_value = static_cast<uint32_t>(DoubleToUint32(double_value)); | 
| 7369     } else { | 7367     } else { | 
| 7370       // Clamp undefined to zero (default). All other types have been | 7368       // Clamp undefined to zero (default). All other types have been | 
| 7371       // converted to a number type further up in the call chain. | 7369       // converted to a number type further up in the call chain. | 
| 7372       ASSERT(value->IsUndefined()); | 7370       ASSERT(value->IsUndefined()); | 
| 7373     } | 7371     } | 
| 7374     set(index, cast_value); | 7372     set(index, cast_value); | 
| 7375   } else { |  | 
| 7376     return Top::Throw(*Factory::NewIndexError(index)); |  | 
| 7377   } | 7373   } | 
| 7378   return Heap::NumberFromUint32(cast_value); | 7374   return Heap::NumberFromUint32(cast_value); | 
| 7379 } | 7375 } | 
| 7380 | 7376 | 
| 7381 | 7377 | 
| 7382 Object* ExternalFloatArray::SetValue(uint32_t index, Object* value) { | 7378 Object* ExternalFloatArray::SetValue(uint32_t index, Object* value) { | 
| 7383   float cast_value = 0; | 7379   float cast_value = 0; | 
| 7384   if (index < static_cast<uint32_t>(length())) { | 7380   if (index < static_cast<uint32_t>(length())) { | 
| 7385     if (value->IsSmi()) { | 7381     if (value->IsSmi()) { | 
| 7386       int int_value = Smi::cast(value)->value(); | 7382       int int_value = Smi::cast(value)->value(); | 
| 7387       cast_value = static_cast<float>(int_value); | 7383       cast_value = static_cast<float>(int_value); | 
| 7388     } else if (value->IsHeapNumber()) { | 7384     } else if (value->IsHeapNumber()) { | 
| 7389       double double_value = HeapNumber::cast(value)->value(); | 7385       double double_value = HeapNumber::cast(value)->value(); | 
| 7390       cast_value = static_cast<float>(double_value); | 7386       cast_value = static_cast<float>(double_value); | 
| 7391     } else { | 7387     } else { | 
| 7392       // Clamp undefined to zero (default). All other types have been | 7388       // Clamp undefined to zero (default). All other types have been | 
| 7393       // converted to a number type further up in the call chain. | 7389       // converted to a number type further up in the call chain. | 
| 7394       ASSERT(value->IsUndefined()); | 7390       ASSERT(value->IsUndefined()); | 
| 7395     } | 7391     } | 
| 7396     set(index, cast_value); | 7392     set(index, cast_value); | 
| 7397   } else { |  | 
| 7398     return Top::Throw(*Factory::NewIndexError(index)); |  | 
| 7399   } | 7393   } | 
| 7400   return Heap::AllocateHeapNumber(cast_value); | 7394   return Heap::AllocateHeapNumber(cast_value); | 
| 7401 } | 7395 } | 
| 7402 | 7396 | 
| 7403 | 7397 | 
| 7404 Object* GlobalObject::GetPropertyCell(LookupResult* result) { | 7398 Object* GlobalObject::GetPropertyCell(LookupResult* result) { | 
| 7405   ASSERT(!HasFastProperties()); | 7399   ASSERT(!HasFastProperties()); | 
| 7406   Object* value = property_dictionary()->ValueAt(result->GetDictionaryEntry()); | 7400   Object* value = property_dictionary()->ValueAt(result->GetDictionaryEntry()); | 
| 7407   ASSERT(value->IsJSGlobalPropertyCell()); | 7401   ASSERT(value->IsJSGlobalPropertyCell()); | 
| 7408   return value; | 7402   return value; | 
| (...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8312   if (break_point_objects()->IsUndefined()) return 0; | 8306   if (break_point_objects()->IsUndefined()) return 0; | 
| 8313   // Single beak point. | 8307   // Single beak point. | 
| 8314   if (!break_point_objects()->IsFixedArray()) return 1; | 8308   if (!break_point_objects()->IsFixedArray()) return 1; | 
| 8315   // Multiple break points. | 8309   // Multiple break points. | 
| 8316   return FixedArray::cast(break_point_objects())->length(); | 8310   return FixedArray::cast(break_point_objects())->length(); | 
| 8317 } | 8311 } | 
| 8318 #endif | 8312 #endif | 
| 8319 | 8313 | 
| 8320 | 8314 | 
| 8321 } }  // namespace v8::internal | 8315 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|