Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Side by Side Diff: src/objects.cc

Issue 101413006: Implement in-heap backing store for typed arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Platform ports Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 1660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1671 ExternalUnsignedIntArray::cast(this)->length()); 1671 ExternalUnsignedIntArray::cast(this)->length());
1672 break; 1672 break;
1673 case EXTERNAL_FLOAT_ARRAY_TYPE: 1673 case EXTERNAL_FLOAT_ARRAY_TYPE:
1674 accumulator->Add("<ExternalFloatArray[%u]>", 1674 accumulator->Add("<ExternalFloatArray[%u]>",
1675 ExternalFloatArray::cast(this)->length()); 1675 ExternalFloatArray::cast(this)->length());
1676 break; 1676 break;
1677 case EXTERNAL_DOUBLE_ARRAY_TYPE: 1677 case EXTERNAL_DOUBLE_ARRAY_TYPE:
1678 accumulator->Add("<ExternalDoubleArray[%u]>", 1678 accumulator->Add("<ExternalDoubleArray[%u]>",
1679 ExternalDoubleArray::cast(this)->length()); 1679 ExternalDoubleArray::cast(this)->length());
1680 break; 1680 break;
1681 case FIXED_UINT8_ARRAY_TYPE:
1682 accumulator->Add("<FixedUint8Array[%u]>",
1683 FixedUint8Array::cast(this)->length());
1684 break;
1681 case SHARED_FUNCTION_INFO_TYPE: { 1685 case SHARED_FUNCTION_INFO_TYPE: {
1682 SharedFunctionInfo* shared = SharedFunctionInfo::cast(this); 1686 SharedFunctionInfo* shared = SharedFunctionInfo::cast(this);
1683 SmartArrayPointer<char> debug_name = 1687 SmartArrayPointer<char> debug_name =
1684 shared->DebugName()->ToCString(); 1688 shared->DebugName()->ToCString();
1685 if (debug_name[0] != 0) { 1689 if (debug_name[0] != 0) {
1686 accumulator->Add("<SharedFunctionInfo %s>", debug_name.get()); 1690 accumulator->Add("<SharedFunctionInfo %s>", debug_name.get());
1687 } else { 1691 } else {
1688 accumulator->Add("<SharedFunctionInfo>"); 1692 accumulator->Add("<SharedFunctionInfo>");
1689 } 1693 }
1690 break; 1694 break;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1860 case FREE_SPACE_TYPE: 1864 case FREE_SPACE_TYPE:
1861 case EXTERNAL_PIXEL_ARRAY_TYPE: 1865 case EXTERNAL_PIXEL_ARRAY_TYPE:
1862 case EXTERNAL_BYTE_ARRAY_TYPE: 1866 case EXTERNAL_BYTE_ARRAY_TYPE:
1863 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 1867 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE:
1864 case EXTERNAL_SHORT_ARRAY_TYPE: 1868 case EXTERNAL_SHORT_ARRAY_TYPE:
1865 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 1869 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE:
1866 case EXTERNAL_INT_ARRAY_TYPE: 1870 case EXTERNAL_INT_ARRAY_TYPE:
1867 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 1871 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE:
1868 case EXTERNAL_FLOAT_ARRAY_TYPE: 1872 case EXTERNAL_FLOAT_ARRAY_TYPE:
1869 case EXTERNAL_DOUBLE_ARRAY_TYPE: 1873 case EXTERNAL_DOUBLE_ARRAY_TYPE:
1874 case FIXED_INT8_ARRAY_TYPE:
1875 case FIXED_UINT8_ARRAY_TYPE:
1876 case FIXED_INT16_ARRAY_TYPE:
1877 case FIXED_UINT16_ARRAY_TYPE:
1878 case FIXED_INT32_ARRAY_TYPE:
1879 case FIXED_UINT32_ARRAY_TYPE:
1880 case FIXED_FLOAT32_ARRAY_TYPE:
1881 case FIXED_FLOAT64_ARRAY_TYPE:
1882 case FIXED_UINT8_CLAMPED_ARRAY_TYPE:
1870 break; 1883 break;
1871 case SHARED_FUNCTION_INFO_TYPE: { 1884 case SHARED_FUNCTION_INFO_TYPE: {
1872 SharedFunctionInfo::BodyDescriptor::IterateBody(this, v); 1885 SharedFunctionInfo::BodyDescriptor::IterateBody(this, v);
1873 break; 1886 break;
1874 } 1887 }
1875 1888
1876 #define MAKE_STRUCT_CASE(NAME, Name, name) \ 1889 #define MAKE_STRUCT_CASE(NAME, Name, name) \
1877 case NAME##_TYPE: 1890 case NAME##_TYPE:
1878 STRUCT_LIST(MAKE_STRUCT_CASE) 1891 STRUCT_LIST(MAKE_STRUCT_CASE)
1879 #undef MAKE_STRUCT_CASE 1892 #undef MAKE_STRUCT_CASE
(...skipping 3491 matching lines...) Expand 10 before | Expand all | Expand 10 after
5371 case EXTERNAL_BYTE_ELEMENTS: 5384 case EXTERNAL_BYTE_ELEMENTS:
5372 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 5385 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
5373 case EXTERNAL_SHORT_ELEMENTS: 5386 case EXTERNAL_SHORT_ELEMENTS:
5374 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 5387 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
5375 case EXTERNAL_INT_ELEMENTS: 5388 case EXTERNAL_INT_ELEMENTS:
5376 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 5389 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
5377 case EXTERNAL_FLOAT_ELEMENTS: 5390 case EXTERNAL_FLOAT_ELEMENTS:
5378 case EXTERNAL_DOUBLE_ELEMENTS: 5391 case EXTERNAL_DOUBLE_ELEMENTS:
5379 case FAST_DOUBLE_ELEMENTS: 5392 case FAST_DOUBLE_ELEMENTS:
5380 case FAST_HOLEY_DOUBLE_ELEMENTS: 5393 case FAST_HOLEY_DOUBLE_ELEMENTS:
5394 case UINT8_ELEMENTS:
5395 case INT8_ELEMENTS:
5396 case UINT16_ELEMENTS:
5397 case INT16_ELEMENTS:
5398 case UINT32_ELEMENTS:
5399 case INT32_ELEMENTS:
5400 case FLOAT32_ELEMENTS:
5401 case FLOAT64_ELEMENTS:
5402 case UINT8_CLAMPED_ELEMENTS:
5381 // Raw pixels and external arrays do not reference other 5403 // Raw pixels and external arrays do not reference other
5382 // objects. 5404 // objects.
5383 break; 5405 break;
5384 case FAST_SMI_ELEMENTS: 5406 case FAST_SMI_ELEMENTS:
5385 case FAST_HOLEY_SMI_ELEMENTS: 5407 case FAST_HOLEY_SMI_ELEMENTS:
5386 break; 5408 break;
5387 case FAST_ELEMENTS: 5409 case FAST_ELEMENTS:
5388 case FAST_HOLEY_ELEMENTS: 5410 case FAST_HOLEY_ELEMENTS:
5389 case DICTIONARY_ELEMENTS: { 5411 case DICTIONARY_ELEMENTS: {
5390 FixedArray* elements = FixedArray::cast(this->elements()); 5412 FixedArray* elements = FixedArray::cast(this->elements());
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
5863 case EXTERNAL_BYTE_ELEMENTS: 5885 case EXTERNAL_BYTE_ELEMENTS:
5864 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 5886 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
5865 case EXTERNAL_SHORT_ELEMENTS: 5887 case EXTERNAL_SHORT_ELEMENTS:
5866 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 5888 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
5867 case EXTERNAL_INT_ELEMENTS: 5889 case EXTERNAL_INT_ELEMENTS:
5868 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 5890 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
5869 case EXTERNAL_FLOAT_ELEMENTS: 5891 case EXTERNAL_FLOAT_ELEMENTS:
5870 case EXTERNAL_DOUBLE_ELEMENTS: 5892 case EXTERNAL_DOUBLE_ELEMENTS:
5871 case FAST_DOUBLE_ELEMENTS: 5893 case FAST_DOUBLE_ELEMENTS:
5872 case FAST_HOLEY_DOUBLE_ELEMENTS: 5894 case FAST_HOLEY_DOUBLE_ELEMENTS:
5895 case UINT8_ELEMENTS:
5896 case INT8_ELEMENTS:
5897 case UINT16_ELEMENTS:
5898 case INT16_ELEMENTS:
5899 case UINT32_ELEMENTS:
5900 case INT32_ELEMENTS:
5901 case FLOAT32_ELEMENTS:
5902 case FLOAT64_ELEMENTS:
5903 case UINT8_CLAMPED_ELEMENTS:
5873 // No contained objects, nothing to do. 5904 // No contained objects, nothing to do.
5874 break; 5905 break;
5875 } 5906 }
5876 } 5907 }
5877 5908
5878 return copy; 5909 return copy;
5879 } 5910 }
5880 5911
5881 5912
5882 Handle<JSObject> JSObject::DeepWalk( 5913 Handle<JSObject> JSObject::DeepWalk(
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
6082 break; 6113 break;
6083 case EXTERNAL_PIXEL_ELEMENTS: 6114 case EXTERNAL_PIXEL_ELEMENTS:
6084 case EXTERNAL_BYTE_ELEMENTS: 6115 case EXTERNAL_BYTE_ELEMENTS:
6085 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 6116 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
6086 case EXTERNAL_SHORT_ELEMENTS: 6117 case EXTERNAL_SHORT_ELEMENTS:
6087 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 6118 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
6088 case EXTERNAL_INT_ELEMENTS: 6119 case EXTERNAL_INT_ELEMENTS:
6089 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 6120 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
6090 case EXTERNAL_FLOAT_ELEMENTS: 6121 case EXTERNAL_FLOAT_ELEMENTS:
6091 case EXTERNAL_DOUBLE_ELEMENTS: 6122 case EXTERNAL_DOUBLE_ELEMENTS:
6123 case UINT8_ELEMENTS:
6124 case INT8_ELEMENTS:
6125 case UINT16_ELEMENTS:
6126 case INT16_ELEMENTS:
6127 case UINT32_ELEMENTS:
6128 case INT32_ELEMENTS:
6129 case FLOAT32_ELEMENTS:
6130 case FLOAT64_ELEMENTS:
6131 case UINT8_CLAMPED_ELEMENTS:
6092 // Ignore getters and setters on pixel and external array elements. 6132 // Ignore getters and setters on pixel and external array elements.
6093 return; 6133 return;
6094 case DICTIONARY_ELEMENTS: 6134 case DICTIONARY_ELEMENTS:
6095 if (UpdateGetterSetterInDictionary(object->element_dictionary(), 6135 if (UpdateGetterSetterInDictionary(object->element_dictionary(),
6096 index, 6136 index,
6097 *getter, 6137 *getter,
6098 *setter, 6138 *setter,
6099 attributes)) { 6139 attributes)) {
6100 return; 6140 return;
6101 } 6141 }
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
6540 break; 6580 break;
6541 case EXTERNAL_PIXEL_ELEMENTS: 6581 case EXTERNAL_PIXEL_ELEMENTS:
6542 case EXTERNAL_BYTE_ELEMENTS: 6582 case EXTERNAL_BYTE_ELEMENTS:
6543 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 6583 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
6544 case EXTERNAL_SHORT_ELEMENTS: 6584 case EXTERNAL_SHORT_ELEMENTS:
6545 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 6585 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
6546 case EXTERNAL_INT_ELEMENTS: 6586 case EXTERNAL_INT_ELEMENTS:
6547 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 6587 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
6548 case EXTERNAL_FLOAT_ELEMENTS: 6588 case EXTERNAL_FLOAT_ELEMENTS:
6549 case EXTERNAL_DOUBLE_ELEMENTS: 6589 case EXTERNAL_DOUBLE_ELEMENTS:
6590 case UINT8_ELEMENTS:
6591 case INT8_ELEMENTS:
6592 case UINT16_ELEMENTS:
6593 case INT16_ELEMENTS:
6594 case UINT32_ELEMENTS:
6595 case INT32_ELEMENTS:
6596 case FLOAT32_ELEMENTS:
6597 case FLOAT64_ELEMENTS:
6598 case UINT8_CLAMPED_ELEMENTS:
6550 // Ignore getters and setters on pixel and external array 6599 // Ignore getters and setters on pixel and external array
6551 // elements. 6600 // elements.
6552 return factory->undefined_value(); 6601 return factory->undefined_value();
6553 case DICTIONARY_ELEMENTS: 6602 case DICTIONARY_ELEMENTS:
6554 break; 6603 break;
6555 case NON_STRICT_ARGUMENTS_ELEMENTS: 6604 case NON_STRICT_ARGUMENTS_ELEMENTS:
6556 UNIMPLEMENTED(); 6605 UNIMPLEMENTED();
6557 break; 6606 break;
6558 } 6607 }
6559 6608
(...skipping 6155 matching lines...) Expand 10 before | Expand all | Expand 10 after
12715 case EXTERNAL_FLOAT_ELEMENTS: { 12764 case EXTERNAL_FLOAT_ELEMENTS: {
12716 Handle<ExternalFloatArray> array( 12765 Handle<ExternalFloatArray> array(
12717 ExternalFloatArray::cast(object->elements())); 12766 ExternalFloatArray::cast(object->elements()));
12718 return ExternalFloatArray::SetValue(array, index, value); 12767 return ExternalFloatArray::SetValue(array, index, value);
12719 } 12768 }
12720 case EXTERNAL_DOUBLE_ELEMENTS: { 12769 case EXTERNAL_DOUBLE_ELEMENTS: {
12721 Handle<ExternalDoubleArray> array( 12770 Handle<ExternalDoubleArray> array(
12722 ExternalDoubleArray::cast(object->elements())); 12771 ExternalDoubleArray::cast(object->elements()));
12723 return ExternalDoubleArray::SetValue(array, index, value); 12772 return ExternalDoubleArray::SetValue(array, index, value);
12724 } 12773 }
12774 case UINT8_ELEMENTS: {
12775 Handle<FixedUint8Array> array(
12776 FixedUint8Array::cast(object->elements()));
12777 return FixedUint8Array::SetValue(array, index, value);
12778 }
12779 case UINT8_CLAMPED_ELEMENTS: {
12780 Handle<FixedUint8ClampedArray> array(
12781 FixedUint8ClampedArray::cast(object->elements()));
12782 return FixedUint8ClampedArray::SetValue(array, index, value);
12783 }
12784 case INT8_ELEMENTS: {
12785 Handle<FixedInt8Array> array(
12786 FixedInt8Array::cast(object->elements()));
12787 return FixedInt8Array::SetValue(array, index, value);
12788 }
12789 case UINT16_ELEMENTS: {
12790 Handle<FixedUint16Array> array(
12791 FixedUint16Array::cast(object->elements()));
12792 return FixedUint16Array::SetValue(array, index, value);
12793 }
12794 case INT16_ELEMENTS: {
12795 Handle<FixedInt16Array> array(
12796 FixedInt16Array::cast(object->elements()));
12797 return FixedInt16Array::SetValue(array, index, value);
12798 }
12799 case UINT32_ELEMENTS: {
12800 Handle<FixedUint32Array> array(
12801 FixedUint32Array::cast(object->elements()));
12802 return FixedUint32Array::SetValue(array, index, value);
12803 }
12804 case INT32_ELEMENTS: {
12805 Handle<FixedInt32Array> array(
12806 FixedInt32Array::cast(object->elements()));
12807 return FixedInt32Array::SetValue(array, index, value);
12808 }
12809 case FLOAT32_ELEMENTS: {
12810 Handle<FixedFloat32Array> array(
12811 FixedFloat32Array::cast(object->elements()));
12812 return FixedFloat32Array::SetValue(array, index, value);
12813 }
12814 case FLOAT64_ELEMENTS: {
12815 Handle<FixedFloat64Array> array(
12816 FixedFloat64Array::cast(object->elements()));
12817 return FixedFloat64Array::SetValue(array, index, value);
12818 }
12725 case DICTIONARY_ELEMENTS: 12819 case DICTIONARY_ELEMENTS:
12726 return SetDictionaryElement(object, index, value, attributes, strict_mode, 12820 return SetDictionaryElement(object, index, value, attributes, strict_mode,
12727 check_prototype, 12821 check_prototype,
12728 set_mode); 12822 set_mode);
12729 case NON_STRICT_ARGUMENTS_ELEMENTS: { 12823 case NON_STRICT_ARGUMENTS_ELEMENTS: {
12730 Handle<FixedArray> parameter_map(FixedArray::cast(object->elements())); 12824 Handle<FixedArray> parameter_map(FixedArray::cast(object->elements()));
12731 uint32_t length = parameter_map->length(); 12825 uint32_t length = parameter_map->length();
12732 Handle<Object> probe = index < length - 2 ? 12826 Handle<Object> probe = index < length - 2 ?
12733 Handle<Object>(parameter_map->get(index + 2), isolate) : 12827 Handle<Object>(parameter_map->get(index + 2), isolate) :
12734 Handle<Object>(); 12828 Handle<Object>();
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
13109 } 13203 }
13110 case EXTERNAL_BYTE_ELEMENTS: 13204 case EXTERNAL_BYTE_ELEMENTS:
13111 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 13205 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
13112 case EXTERNAL_SHORT_ELEMENTS: 13206 case EXTERNAL_SHORT_ELEMENTS:
13113 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 13207 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
13114 case EXTERNAL_INT_ELEMENTS: 13208 case EXTERNAL_INT_ELEMENTS:
13115 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 13209 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
13116 case EXTERNAL_FLOAT_ELEMENTS: 13210 case EXTERNAL_FLOAT_ELEMENTS:
13117 case EXTERNAL_DOUBLE_ELEMENTS: 13211 case EXTERNAL_DOUBLE_ELEMENTS:
13118 case EXTERNAL_PIXEL_ELEMENTS: 13212 case EXTERNAL_PIXEL_ELEMENTS:
13213 case UINT8_ELEMENTS:
13214 case INT8_ELEMENTS:
13215 case UINT16_ELEMENTS:
13216 case INT16_ELEMENTS:
13217 case UINT32_ELEMENTS:
13218 case INT32_ELEMENTS:
13219 case FLOAT32_ELEMENTS:
13220 case FLOAT64_ELEMENTS:
13221 case UINT8_CLAMPED_ELEMENTS: {
13119 // External arrays are considered 100% used. 13222 // External arrays are considered 100% used.
13120 ExternalArray* external_array = ExternalArray::cast(elements()); 13223 FixedArrayBase* external_array = FixedArrayBase::cast(elements());
13121 *capacity = external_array->length(); 13224 *capacity = external_array->length();
13122 *used = external_array->length(); 13225 *used = external_array->length();
13123 break; 13226 break;
13227 }
13124 } 13228 }
13125 } 13229 }
13126 13230
13127 13231
13128 bool JSObject::ShouldConvertToSlowElements(int new_capacity) { 13232 bool JSObject::ShouldConvertToSlowElements(int new_capacity) {
13129 STATIC_ASSERT(kMaxUncheckedOldFastElementsLength <= 13233 STATIC_ASSERT(kMaxUncheckedOldFastElementsLength <=
13130 kMaxUncheckedFastElementsLength); 13234 kMaxUncheckedFastElementsLength);
13131 if (new_capacity <= kMaxUncheckedOldFastElementsLength || 13235 if (new_capacity <= kMaxUncheckedOldFastElementsLength ||
13132 (new_capacity <= kMaxUncheckedFastElementsLength && 13236 (new_capacity <= kMaxUncheckedFastElementsLength &&
13133 GetHeap()->InNewSpace(this))) { 13237 GetHeap()->InNewSpace(this))) {
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
13621 ASSERT(!storage || storage->length() >= counter); 13725 ASSERT(!storage || storage->length() >= counter);
13622 break; 13726 break;
13623 } 13727 }
13624 case EXTERNAL_BYTE_ELEMENTS: 13728 case EXTERNAL_BYTE_ELEMENTS:
13625 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 13729 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
13626 case EXTERNAL_SHORT_ELEMENTS: 13730 case EXTERNAL_SHORT_ELEMENTS:
13627 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 13731 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
13628 case EXTERNAL_INT_ELEMENTS: 13732 case EXTERNAL_INT_ELEMENTS:
13629 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 13733 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
13630 case EXTERNAL_FLOAT_ELEMENTS: 13734 case EXTERNAL_FLOAT_ELEMENTS:
13631 case EXTERNAL_DOUBLE_ELEMENTS: { 13735 case EXTERNAL_DOUBLE_ELEMENTS:
13632 int length = ExternalArray::cast(elements())->length(); 13736 case UINT8_ELEMENTS:
13737 case INT8_ELEMENTS:
13738 case UINT16_ELEMENTS:
13739 case INT16_ELEMENTS:
13740 case UINT32_ELEMENTS:
13741 case INT32_ELEMENTS:
13742 case FLOAT32_ELEMENTS:
13743 case FLOAT64_ELEMENTS:
13744 case UINT8_CLAMPED_ELEMENTS: {
13745 int length = FixedArrayBase::cast(elements())->length();
13633 while (counter < length) { 13746 while (counter < length) {
13634 if (storage != NULL) { 13747 if (storage != NULL) {
13635 storage->set(counter, Smi::FromInt(counter)); 13748 storage->set(counter, Smi::FromInt(counter));
13636 } 13749 }
13637 counter++; 13750 counter++;
13638 } 13751 }
13639 ASSERT(!storage || storage->length() >= counter); 13752 ASSERT(!storage || storage->length() >= counter);
13640 break; 13753 break;
13641 } 13754 }
13642 case DICTIONARY_ELEMENTS: { 13755 case DICTIONARY_ELEMENTS: {
(...skipping 2997 matching lines...) Expand 10 before | Expand all | Expand 10 after
16640 #define ERROR_MESSAGES_TEXTS(C, T) T, 16753 #define ERROR_MESSAGES_TEXTS(C, T) T,
16641 static const char* error_messages_[] = { 16754 static const char* error_messages_[] = {
16642 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16755 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16643 }; 16756 };
16644 #undef ERROR_MESSAGES_TEXTS 16757 #undef ERROR_MESSAGES_TEXTS
16645 return error_messages_[reason]; 16758 return error_messages_[reason];
16646 } 16759 }
16647 16760
16648 16761
16649 } } // namespace v8::internal 16762 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698