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

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: GC fixes 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
« no previous file with comments | « src/objects.h ('k') | src/objects-debug.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 ExternalUnsignedIntArray::cast(this)->length()); 1670 ExternalUnsignedIntArray::cast(this)->length());
1671 break; 1671 break;
1672 case EXTERNAL_FLOAT_ARRAY_TYPE: 1672 case EXTERNAL_FLOAT_ARRAY_TYPE:
1673 accumulator->Add("<ExternalFloatArray[%u]>", 1673 accumulator->Add("<ExternalFloatArray[%u]>",
1674 ExternalFloatArray::cast(this)->length()); 1674 ExternalFloatArray::cast(this)->length());
1675 break; 1675 break;
1676 case EXTERNAL_DOUBLE_ARRAY_TYPE: 1676 case EXTERNAL_DOUBLE_ARRAY_TYPE:
1677 accumulator->Add("<ExternalDoubleArray[%u]>", 1677 accumulator->Add("<ExternalDoubleArray[%u]>",
1678 ExternalDoubleArray::cast(this)->length()); 1678 ExternalDoubleArray::cast(this)->length());
1679 break; 1679 break;
1680 case FIXED_UINT8_ARRAY_TYPE:
1681 accumulator->Add("<FixedUint8Array[%u]>",
1682 FixedUint8Array::cast(this)->length());
1683 break;
1680 case SHARED_FUNCTION_INFO_TYPE: { 1684 case SHARED_FUNCTION_INFO_TYPE: {
1681 SharedFunctionInfo* shared = SharedFunctionInfo::cast(this); 1685 SharedFunctionInfo* shared = SharedFunctionInfo::cast(this);
1682 SmartArrayPointer<char> debug_name = 1686 SmartArrayPointer<char> debug_name =
1683 shared->DebugName()->ToCString(); 1687 shared->DebugName()->ToCString();
1684 if (debug_name[0] != 0) { 1688 if (debug_name[0] != 0) {
1685 accumulator->Add("<SharedFunctionInfo %s>", debug_name.get()); 1689 accumulator->Add("<SharedFunctionInfo %s>", debug_name.get());
1686 } else { 1690 } else {
1687 accumulator->Add("<SharedFunctionInfo>"); 1691 accumulator->Add("<SharedFunctionInfo>");
1688 } 1692 }
1689 break; 1693 break;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1859 case FREE_SPACE_TYPE: 1863 case FREE_SPACE_TYPE:
1860 case EXTERNAL_PIXEL_ARRAY_TYPE: 1864 case EXTERNAL_PIXEL_ARRAY_TYPE:
1861 case EXTERNAL_BYTE_ARRAY_TYPE: 1865 case EXTERNAL_BYTE_ARRAY_TYPE:
1862 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 1866 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE:
1863 case EXTERNAL_SHORT_ARRAY_TYPE: 1867 case EXTERNAL_SHORT_ARRAY_TYPE:
1864 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 1868 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE:
1865 case EXTERNAL_INT_ARRAY_TYPE: 1869 case EXTERNAL_INT_ARRAY_TYPE:
1866 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 1870 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE:
1867 case EXTERNAL_FLOAT_ARRAY_TYPE: 1871 case EXTERNAL_FLOAT_ARRAY_TYPE:
1868 case EXTERNAL_DOUBLE_ARRAY_TYPE: 1872 case EXTERNAL_DOUBLE_ARRAY_TYPE:
1873 case FIXED_INT8_ARRAY_TYPE:
1874 case FIXED_UINT8_ARRAY_TYPE:
1875 case FIXED_INT16_ARRAY_TYPE:
1876 case FIXED_UINT16_ARRAY_TYPE:
1877 case FIXED_INT32_ARRAY_TYPE:
1878 case FIXED_UINT32_ARRAY_TYPE:
1879 case FIXED_FLOAT32_ARRAY_TYPE:
1880 case FIXED_FLOAT64_ARRAY_TYPE:
1881 case FIXED_UINT8_CLAMPED_ARRAY_TYPE:
1869 break; 1882 break;
1870 case SHARED_FUNCTION_INFO_TYPE: { 1883 case SHARED_FUNCTION_INFO_TYPE: {
1871 SharedFunctionInfo::BodyDescriptor::IterateBody(this, v); 1884 SharedFunctionInfo::BodyDescriptor::IterateBody(this, v);
1872 break; 1885 break;
1873 } 1886 }
1874 1887
1875 #define MAKE_STRUCT_CASE(NAME, Name, name) \ 1888 #define MAKE_STRUCT_CASE(NAME, Name, name) \
1876 case NAME##_TYPE: 1889 case NAME##_TYPE:
1877 STRUCT_LIST(MAKE_STRUCT_CASE) 1890 STRUCT_LIST(MAKE_STRUCT_CASE)
1878 #undef MAKE_STRUCT_CASE 1891 #undef MAKE_STRUCT_CASE
(...skipping 3491 matching lines...) Expand 10 before | Expand all | Expand 10 after
5370 case EXTERNAL_BYTE_ELEMENTS: 5383 case EXTERNAL_BYTE_ELEMENTS:
5371 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 5384 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
5372 case EXTERNAL_SHORT_ELEMENTS: 5385 case EXTERNAL_SHORT_ELEMENTS:
5373 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 5386 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
5374 case EXTERNAL_INT_ELEMENTS: 5387 case EXTERNAL_INT_ELEMENTS:
5375 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 5388 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
5376 case EXTERNAL_FLOAT_ELEMENTS: 5389 case EXTERNAL_FLOAT_ELEMENTS:
5377 case EXTERNAL_DOUBLE_ELEMENTS: 5390 case EXTERNAL_DOUBLE_ELEMENTS:
5378 case FAST_DOUBLE_ELEMENTS: 5391 case FAST_DOUBLE_ELEMENTS:
5379 case FAST_HOLEY_DOUBLE_ELEMENTS: 5392 case FAST_HOLEY_DOUBLE_ELEMENTS:
5393 case UINT8_ELEMENTS:
5394 case INT8_ELEMENTS:
5395 case UINT16_ELEMENTS:
5396 case INT16_ELEMENTS:
5397 case UINT32_ELEMENTS:
5398 case INT32_ELEMENTS:
5399 case FLOAT32_ELEMENTS:
5400 case FLOAT64_ELEMENTS:
5401 case UINT8_CLAMPED_ELEMENTS:
5380 // Raw pixels and external arrays do not reference other 5402 // Raw pixels and external arrays do not reference other
5381 // objects. 5403 // objects.
5382 break; 5404 break;
5383 case FAST_SMI_ELEMENTS: 5405 case FAST_SMI_ELEMENTS:
5384 case FAST_HOLEY_SMI_ELEMENTS: 5406 case FAST_HOLEY_SMI_ELEMENTS:
5385 break; 5407 break;
5386 case FAST_ELEMENTS: 5408 case FAST_ELEMENTS:
5387 case FAST_HOLEY_ELEMENTS: 5409 case FAST_HOLEY_ELEMENTS:
5388 case DICTIONARY_ELEMENTS: { 5410 case DICTIONARY_ELEMENTS: {
5389 FixedArray* elements = FixedArray::cast(this->elements()); 5411 FixedArray* elements = FixedArray::cast(this->elements());
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
5862 case EXTERNAL_BYTE_ELEMENTS: 5884 case EXTERNAL_BYTE_ELEMENTS:
5863 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 5885 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
5864 case EXTERNAL_SHORT_ELEMENTS: 5886 case EXTERNAL_SHORT_ELEMENTS:
5865 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 5887 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
5866 case EXTERNAL_INT_ELEMENTS: 5888 case EXTERNAL_INT_ELEMENTS:
5867 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 5889 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
5868 case EXTERNAL_FLOAT_ELEMENTS: 5890 case EXTERNAL_FLOAT_ELEMENTS:
5869 case EXTERNAL_DOUBLE_ELEMENTS: 5891 case EXTERNAL_DOUBLE_ELEMENTS:
5870 case FAST_DOUBLE_ELEMENTS: 5892 case FAST_DOUBLE_ELEMENTS:
5871 case FAST_HOLEY_DOUBLE_ELEMENTS: 5893 case FAST_HOLEY_DOUBLE_ELEMENTS:
5894 case UINT8_ELEMENTS:
5895 case INT8_ELEMENTS:
5896 case UINT16_ELEMENTS:
5897 case INT16_ELEMENTS:
5898 case UINT32_ELEMENTS:
5899 case INT32_ELEMENTS:
5900 case FLOAT32_ELEMENTS:
5901 case FLOAT64_ELEMENTS:
5902 case UINT8_CLAMPED_ELEMENTS:
5872 // No contained objects, nothing to do. 5903 // No contained objects, nothing to do.
5873 break; 5904 break;
5874 } 5905 }
5875 } 5906 }
5876 5907
5877 return copy; 5908 return copy;
5878 } 5909 }
5879 5910
5880 5911
5881 Handle<JSObject> JSObject::DeepWalk( 5912 Handle<JSObject> JSObject::DeepWalk(
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
6099 break; 6130 break;
6100 case EXTERNAL_PIXEL_ELEMENTS: 6131 case EXTERNAL_PIXEL_ELEMENTS:
6101 case EXTERNAL_BYTE_ELEMENTS: 6132 case EXTERNAL_BYTE_ELEMENTS:
6102 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 6133 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
6103 case EXTERNAL_SHORT_ELEMENTS: 6134 case EXTERNAL_SHORT_ELEMENTS:
6104 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 6135 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
6105 case EXTERNAL_INT_ELEMENTS: 6136 case EXTERNAL_INT_ELEMENTS:
6106 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 6137 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
6107 case EXTERNAL_FLOAT_ELEMENTS: 6138 case EXTERNAL_FLOAT_ELEMENTS:
6108 case EXTERNAL_DOUBLE_ELEMENTS: 6139 case EXTERNAL_DOUBLE_ELEMENTS:
6140 case UINT8_ELEMENTS:
6141 case INT8_ELEMENTS:
6142 case UINT16_ELEMENTS:
6143 case INT16_ELEMENTS:
6144 case UINT32_ELEMENTS:
6145 case INT32_ELEMENTS:
6146 case FLOAT32_ELEMENTS:
6147 case FLOAT64_ELEMENTS:
6148 case UINT8_CLAMPED_ELEMENTS:
6109 // Ignore getters and setters on pixel and external array elements. 6149 // Ignore getters and setters on pixel and external array elements.
6110 return; 6150 return;
6111 case DICTIONARY_ELEMENTS: 6151 case DICTIONARY_ELEMENTS:
6112 if (UpdateGetterSetterInDictionary(object->element_dictionary(), 6152 if (UpdateGetterSetterInDictionary(object->element_dictionary(),
6113 index, 6153 index,
6114 *getter, 6154 *getter,
6115 *setter, 6155 *setter,
6116 attributes)) { 6156 attributes)) {
6117 return; 6157 return;
6118 } 6158 }
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
6557 break; 6597 break;
6558 case EXTERNAL_PIXEL_ELEMENTS: 6598 case EXTERNAL_PIXEL_ELEMENTS:
6559 case EXTERNAL_BYTE_ELEMENTS: 6599 case EXTERNAL_BYTE_ELEMENTS:
6560 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 6600 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
6561 case EXTERNAL_SHORT_ELEMENTS: 6601 case EXTERNAL_SHORT_ELEMENTS:
6562 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 6602 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
6563 case EXTERNAL_INT_ELEMENTS: 6603 case EXTERNAL_INT_ELEMENTS:
6564 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 6604 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
6565 case EXTERNAL_FLOAT_ELEMENTS: 6605 case EXTERNAL_FLOAT_ELEMENTS:
6566 case EXTERNAL_DOUBLE_ELEMENTS: 6606 case EXTERNAL_DOUBLE_ELEMENTS:
6607 case UINT8_ELEMENTS:
6608 case INT8_ELEMENTS:
6609 case UINT16_ELEMENTS:
6610 case INT16_ELEMENTS:
6611 case UINT32_ELEMENTS:
6612 case INT32_ELEMENTS:
6613 case FLOAT32_ELEMENTS:
6614 case FLOAT64_ELEMENTS:
6615 case UINT8_CLAMPED_ELEMENTS:
6567 // Ignore getters and setters on pixel and external array 6616 // Ignore getters and setters on pixel and external array
6568 // elements. 6617 // elements.
6569 return factory->undefined_value(); 6618 return factory->undefined_value();
6570 case DICTIONARY_ELEMENTS: 6619 case DICTIONARY_ELEMENTS:
6571 break; 6620 break;
6572 case NON_STRICT_ARGUMENTS_ELEMENTS: 6621 case NON_STRICT_ARGUMENTS_ELEMENTS:
6573 UNIMPLEMENTED(); 6622 UNIMPLEMENTED();
6574 break; 6623 break;
6575 } 6624 }
6576 6625
(...skipping 6137 matching lines...) Expand 10 before | Expand all | Expand 10 after
12714 case EXTERNAL_FLOAT_ELEMENTS: { 12763 case EXTERNAL_FLOAT_ELEMENTS: {
12715 Handle<ExternalFloatArray> array( 12764 Handle<ExternalFloatArray> array(
12716 ExternalFloatArray::cast(object->elements())); 12765 ExternalFloatArray::cast(object->elements()));
12717 return ExternalFloatArray::SetValue(array, index, value); 12766 return ExternalFloatArray::SetValue(array, index, value);
12718 } 12767 }
12719 case EXTERNAL_DOUBLE_ELEMENTS: { 12768 case EXTERNAL_DOUBLE_ELEMENTS: {
12720 Handle<ExternalDoubleArray> array( 12769 Handle<ExternalDoubleArray> array(
12721 ExternalDoubleArray::cast(object->elements())); 12770 ExternalDoubleArray::cast(object->elements()));
12722 return ExternalDoubleArray::SetValue(array, index, value); 12771 return ExternalDoubleArray::SetValue(array, index, value);
12723 } 12772 }
12773 case UINT8_ELEMENTS: {
12774 Handle<FixedUint8Array> array(
12775 FixedUint8Array::cast(object->elements()));
12776 return FixedUint8Array::SetValue(array, index, value);
12777 }
12778 case UINT8_CLAMPED_ELEMENTS: {
12779 Handle<FixedUint8ClampedArray> array(
12780 FixedUint8ClampedArray::cast(object->elements()));
12781 return FixedUint8ClampedArray::SetValue(array, index, value);
12782 }
12783 case INT8_ELEMENTS: {
12784 Handle<FixedInt8Array> array(
12785 FixedInt8Array::cast(object->elements()));
12786 return FixedInt8Array::SetValue(array, index, value);
12787 }
12788 case UINT16_ELEMENTS: {
12789 Handle<FixedUint16Array> array(
12790 FixedUint16Array::cast(object->elements()));
12791 return FixedUint16Array::SetValue(array, index, value);
12792 }
12793 case INT16_ELEMENTS: {
12794 Handle<FixedInt16Array> array(
12795 FixedInt16Array::cast(object->elements()));
12796 return FixedInt16Array::SetValue(array, index, value);
12797 }
12798 case UINT32_ELEMENTS: {
12799 Handle<FixedUint32Array> array(
12800 FixedUint32Array::cast(object->elements()));
12801 return FixedUint32Array::SetValue(array, index, value);
12802 }
12803 case INT32_ELEMENTS: {
12804 Handle<FixedInt32Array> array(
12805 FixedInt32Array::cast(object->elements()));
12806 return FixedInt32Array::SetValue(array, index, value);
12807 }
12808 case FLOAT32_ELEMENTS: {
12809 Handle<FixedFloat32Array> array(
12810 FixedFloat32Array::cast(object->elements()));
12811 return FixedFloat32Array::SetValue(array, index, value);
12812 }
12813 case FLOAT64_ELEMENTS: {
12814 Handle<FixedFloat64Array> array(
12815 FixedFloat64Array::cast(object->elements()));
12816 return FixedFloat64Array::SetValue(array, index, value);
12817 }
12724 case DICTIONARY_ELEMENTS: 12818 case DICTIONARY_ELEMENTS:
12725 return SetDictionaryElement(object, index, value, attributes, strict_mode, 12819 return SetDictionaryElement(object, index, value, attributes, strict_mode,
12726 check_prototype, 12820 check_prototype,
12727 set_mode); 12821 set_mode);
12728 case NON_STRICT_ARGUMENTS_ELEMENTS: { 12822 case NON_STRICT_ARGUMENTS_ELEMENTS: {
12729 Handle<FixedArray> parameter_map(FixedArray::cast(object->elements())); 12823 Handle<FixedArray> parameter_map(FixedArray::cast(object->elements()));
12730 uint32_t length = parameter_map->length(); 12824 uint32_t length = parameter_map->length();
12731 Handle<Object> probe = index < length - 2 ? 12825 Handle<Object> probe = index < length - 2 ?
12732 Handle<Object>(parameter_map->get(index + 2), isolate) : 12826 Handle<Object>(parameter_map->get(index + 2), isolate) :
12733 Handle<Object>(); 12827 Handle<Object>();
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
13125 } 13219 }
13126 case EXTERNAL_BYTE_ELEMENTS: 13220 case EXTERNAL_BYTE_ELEMENTS:
13127 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 13221 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
13128 case EXTERNAL_SHORT_ELEMENTS: 13222 case EXTERNAL_SHORT_ELEMENTS:
13129 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 13223 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
13130 case EXTERNAL_INT_ELEMENTS: 13224 case EXTERNAL_INT_ELEMENTS:
13131 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 13225 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
13132 case EXTERNAL_FLOAT_ELEMENTS: 13226 case EXTERNAL_FLOAT_ELEMENTS:
13133 case EXTERNAL_DOUBLE_ELEMENTS: 13227 case EXTERNAL_DOUBLE_ELEMENTS:
13134 case EXTERNAL_PIXEL_ELEMENTS: 13228 case EXTERNAL_PIXEL_ELEMENTS:
13229 case UINT8_ELEMENTS:
13230 case INT8_ELEMENTS:
13231 case UINT16_ELEMENTS:
13232 case INT16_ELEMENTS:
13233 case UINT32_ELEMENTS:
13234 case INT32_ELEMENTS:
13235 case FLOAT32_ELEMENTS:
13236 case FLOAT64_ELEMENTS:
13237 case UINT8_CLAMPED_ELEMENTS: {
13135 // External arrays are considered 100% used. 13238 // External arrays are considered 100% used.
13136 ExternalArray* external_array = ExternalArray::cast(elements()); 13239 FixedArrayBase* external_array = FixedArrayBase::cast(elements());
13137 *capacity = external_array->length(); 13240 *capacity = external_array->length();
13138 *used = external_array->length(); 13241 *used = external_array->length();
13139 break; 13242 break;
13243 }
13140 } 13244 }
13141 } 13245 }
13142 13246
13143 13247
13144 bool JSObject::ShouldConvertToSlowElements(int new_capacity) { 13248 bool JSObject::ShouldConvertToSlowElements(int new_capacity) {
13145 STATIC_ASSERT(kMaxUncheckedOldFastElementsLength <= 13249 STATIC_ASSERT(kMaxUncheckedOldFastElementsLength <=
13146 kMaxUncheckedFastElementsLength); 13250 kMaxUncheckedFastElementsLength);
13147 if (new_capacity <= kMaxUncheckedOldFastElementsLength || 13251 if (new_capacity <= kMaxUncheckedOldFastElementsLength ||
13148 (new_capacity <= kMaxUncheckedFastElementsLength && 13252 (new_capacity <= kMaxUncheckedFastElementsLength &&
13149 GetHeap()->InNewSpace(this))) { 13253 GetHeap()->InNewSpace(this))) {
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
13637 ASSERT(!storage || storage->length() >= counter); 13741 ASSERT(!storage || storage->length() >= counter);
13638 break; 13742 break;
13639 } 13743 }
13640 case EXTERNAL_BYTE_ELEMENTS: 13744 case EXTERNAL_BYTE_ELEMENTS:
13641 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 13745 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
13642 case EXTERNAL_SHORT_ELEMENTS: 13746 case EXTERNAL_SHORT_ELEMENTS:
13643 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 13747 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
13644 case EXTERNAL_INT_ELEMENTS: 13748 case EXTERNAL_INT_ELEMENTS:
13645 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 13749 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
13646 case EXTERNAL_FLOAT_ELEMENTS: 13750 case EXTERNAL_FLOAT_ELEMENTS:
13647 case EXTERNAL_DOUBLE_ELEMENTS: { 13751 case EXTERNAL_DOUBLE_ELEMENTS:
13648 int length = ExternalArray::cast(elements())->length(); 13752 case UINT8_ELEMENTS:
13753 case INT8_ELEMENTS:
13754 case UINT16_ELEMENTS:
13755 case INT16_ELEMENTS:
13756 case UINT32_ELEMENTS:
13757 case INT32_ELEMENTS:
13758 case FLOAT32_ELEMENTS:
13759 case FLOAT64_ELEMENTS:
13760 case UINT8_CLAMPED_ELEMENTS: {
13761 int length = FixedArrayBase::cast(elements())->length();
13649 while (counter < length) { 13762 while (counter < length) {
13650 if (storage != NULL) { 13763 if (storage != NULL) {
13651 storage->set(counter, Smi::FromInt(counter)); 13764 storage->set(counter, Smi::FromInt(counter));
13652 } 13765 }
13653 counter++; 13766 counter++;
13654 } 13767 }
13655 ASSERT(!storage || storage->length() >= counter); 13768 ASSERT(!storage || storage->length() >= counter);
13656 break; 13769 break;
13657 } 13770 }
13658 case DICTIONARY_ELEMENTS: { 13771 case DICTIONARY_ELEMENTS: {
(...skipping 2988 matching lines...) Expand 10 before | Expand all | Expand 10 after
16647 #define ERROR_MESSAGES_TEXTS(C, T) T, 16760 #define ERROR_MESSAGES_TEXTS(C, T) T,
16648 static const char* error_messages_[] = { 16761 static const char* error_messages_[] = {
16649 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16762 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16650 }; 16763 };
16651 #undef ERROR_MESSAGES_TEXTS 16764 #undef ERROR_MESSAGES_TEXTS
16652 return error_messages_[reason]; 16765 return error_messages_[reason];
16653 } 16766 }
16654 16767
16655 16768
16656 } } // namespace v8::internal 16769 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698