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

Side by Side Diff: src/elements.cc

Issue 90643003: Experimental implementation: Exposing SIMD instructions into JavaScript Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years 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/deoptimizer.cc ('k') | src/elements-kind.h » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 // - FastPackedDoubleElementsAccessor 49 // - FastPackedDoubleElementsAccessor
50 // - FastHoleyDoubleElementsAccessor 50 // - FastHoleyDoubleElementsAccessor
51 // - ExternalElementsAccessor (abstract) 51 // - ExternalElementsAccessor (abstract)
52 // - ExternalByteElementsAccessor 52 // - ExternalByteElementsAccessor
53 // - ExternalUnsignedByteElementsAccessor 53 // - ExternalUnsignedByteElementsAccessor
54 // - ExternalShortElementsAccessor 54 // - ExternalShortElementsAccessor
55 // - ExternalUnsignedShortElementsAccessor 55 // - ExternalUnsignedShortElementsAccessor
56 // - ExternalIntElementsAccessor 56 // - ExternalIntElementsAccessor
57 // - ExternalUnsignedIntElementsAccessor 57 // - ExternalUnsignedIntElementsAccessor
58 // - ExternalFloatElementsAccessor 58 // - ExternalFloatElementsAccessor
59 // - ExternalFloat32x4ElementsAccessor
59 // - ExternalDoubleElementsAccessor 60 // - ExternalDoubleElementsAccessor
60 // - PixelElementsAccessor 61 // - PixelElementsAccessor
61 // - DictionaryElementsAccessor 62 // - DictionaryElementsAccessor
62 // - NonStrictArgumentsElementsAccessor 63 // - NonStrictArgumentsElementsAccessor
63 64
64 65
65 namespace v8 { 66 namespace v8 {
66 namespace internal { 67 namespace internal {
67 68
68 69
(...skipping 26 matching lines...) Expand all
95 V(ExternalShortElementsAccessor, EXTERNAL_SHORT_ELEMENTS, \ 96 V(ExternalShortElementsAccessor, EXTERNAL_SHORT_ELEMENTS, \
96 ExternalShortArray) \ 97 ExternalShortArray) \
97 V(ExternalUnsignedShortElementsAccessor, \ 98 V(ExternalUnsignedShortElementsAccessor, \
98 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \ 99 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \
99 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \ 100 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \
100 ExternalIntArray) \ 101 ExternalIntArray) \
101 V(ExternalUnsignedIntElementsAccessor, \ 102 V(ExternalUnsignedIntElementsAccessor, \
102 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \ 103 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \
103 V(ExternalFloatElementsAccessor, \ 104 V(ExternalFloatElementsAccessor, \
104 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \ 105 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \
106 V(ExternalFloat32x4ElementsAccessor, \
107 EXTERNAL_FLOAT32x4_ELEMENTS, ExternalFloat32x4Array) \
108 V(ExternalInt32x4ElementsAccessor, \
109 EXTERNAL_INT32x4_ELEMENTS, ExternalInt32x4Array) \
105 V(ExternalDoubleElementsAccessor, \ 110 V(ExternalDoubleElementsAccessor, \
106 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \ 111 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \
107 V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) 112 V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray)
108 113
109 114
110 template<ElementsKind Kind> class ElementsKindTraits { 115 template<ElementsKind Kind> class ElementsKindTraits {
111 public: 116 public:
112 typedef FixedArrayBase BackingStore; 117 typedef FixedArrayBase BackingStore;
113 }; 118 };
114 119
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 case EXTERNAL_SHORT_ARRAY_TYPE: 1090 case EXTERNAL_SHORT_ARRAY_TYPE:
1086 return EXTERNAL_SHORT_ELEMENTS; 1091 return EXTERNAL_SHORT_ELEMENTS;
1087 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 1092 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE:
1088 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS; 1093 return EXTERNAL_UNSIGNED_SHORT_ELEMENTS;
1089 case EXTERNAL_INT_ARRAY_TYPE: 1094 case EXTERNAL_INT_ARRAY_TYPE:
1090 return EXTERNAL_INT_ELEMENTS; 1095 return EXTERNAL_INT_ELEMENTS;
1091 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 1096 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE:
1092 return EXTERNAL_UNSIGNED_INT_ELEMENTS; 1097 return EXTERNAL_UNSIGNED_INT_ELEMENTS;
1093 case EXTERNAL_FLOAT_ARRAY_TYPE: 1098 case EXTERNAL_FLOAT_ARRAY_TYPE:
1094 return EXTERNAL_FLOAT_ELEMENTS; 1099 return EXTERNAL_FLOAT_ELEMENTS;
1100 case EXTERNAL_FLOAT32x4_ARRAY_TYPE:
1101 return EXTERNAL_FLOAT32x4_ELEMENTS;
1102 case EXTERNAL_INT32x4_ARRAY_TYPE:
1103 return EXTERNAL_INT32x4_ELEMENTS;
1095 case EXTERNAL_DOUBLE_ARRAY_TYPE: 1104 case EXTERNAL_DOUBLE_ARRAY_TYPE:
1096 return EXTERNAL_DOUBLE_ELEMENTS; 1105 return EXTERNAL_DOUBLE_ELEMENTS;
1097 case EXTERNAL_PIXEL_ARRAY_TYPE: 1106 case EXTERNAL_PIXEL_ARRAY_TYPE:
1098 return EXTERNAL_PIXEL_ELEMENTS; 1107 return EXTERNAL_PIXEL_ELEMENTS;
1099 default: 1108 default:
1100 UNREACHABLE(); 1109 UNREACHABLE();
1101 } 1110 }
1102 return FAST_HOLEY_ELEMENTS; 1111 return FAST_HOLEY_ELEMENTS;
1103 } 1112 }
1104 1113
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 return CopyElementsImpl(arguments, from_start, to, from_kind, 1158 return CopyElementsImpl(arguments, from_start, to, from_kind,
1150 to_start, packed_size, copy_size); 1159 to_start, packed_size, copy_size);
1151 } 1160 }
1152 case EXTERNAL_BYTE_ELEMENTS: 1161 case EXTERNAL_BYTE_ELEMENTS:
1153 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 1162 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
1154 case EXTERNAL_SHORT_ELEMENTS: 1163 case EXTERNAL_SHORT_ELEMENTS:
1155 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 1164 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
1156 case EXTERNAL_INT_ELEMENTS: 1165 case EXTERNAL_INT_ELEMENTS:
1157 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 1166 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
1158 case EXTERNAL_FLOAT_ELEMENTS: 1167 case EXTERNAL_FLOAT_ELEMENTS:
1168 case EXTERNAL_FLOAT32x4_ELEMENTS:
1169 case EXTERNAL_INT32x4_ELEMENTS:
1159 case EXTERNAL_DOUBLE_ELEMENTS: 1170 case EXTERNAL_DOUBLE_ELEMENTS:
1160 case EXTERNAL_PIXEL_ELEMENTS: 1171 case EXTERNAL_PIXEL_ELEMENTS:
1161 UNREACHABLE(); 1172 UNREACHABLE();
1162 } 1173 }
1163 return NULL; 1174 return NULL;
1164 } 1175 }
1165 1176
1166 1177
1167 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, 1178 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj,
1168 uint32_t capacity, 1179 uint32_t capacity,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1274 from, from_start, to, to_start, copy_size); 1285 from, from_start, to, to_start, copy_size);
1275 break; 1286 break;
1276 case NON_STRICT_ARGUMENTS_ELEMENTS: 1287 case NON_STRICT_ARGUMENTS_ELEMENTS:
1277 case EXTERNAL_BYTE_ELEMENTS: 1288 case EXTERNAL_BYTE_ELEMENTS:
1278 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 1289 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
1279 case EXTERNAL_SHORT_ELEMENTS: 1290 case EXTERNAL_SHORT_ELEMENTS:
1280 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 1291 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
1281 case EXTERNAL_INT_ELEMENTS: 1292 case EXTERNAL_INT_ELEMENTS:
1282 case EXTERNAL_UNSIGNED_INT_ELEMENTS: 1293 case EXTERNAL_UNSIGNED_INT_ELEMENTS:
1283 case EXTERNAL_FLOAT_ELEMENTS: 1294 case EXTERNAL_FLOAT_ELEMENTS:
1295 case EXTERNAL_FLOAT32x4_ELEMENTS:
1296 case EXTERNAL_INT32x4_ELEMENTS:
1284 case EXTERNAL_DOUBLE_ELEMENTS: 1297 case EXTERNAL_DOUBLE_ELEMENTS:
1285 case EXTERNAL_PIXEL_ELEMENTS: 1298 case EXTERNAL_PIXEL_ELEMENTS:
1286 UNREACHABLE(); 1299 UNREACHABLE();
1287 } 1300 }
1288 return to->GetHeap()->undefined_value(); 1301 return to->GetHeap()->undefined_value();
1289 } 1302 }
1290 }; 1303 };
1291 1304
1292 1305
1293 class FastPackedDoubleElementsAccessor 1306 class FastPackedDoubleElementsAccessor
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 1468
1456 class ExternalFloatElementsAccessor 1469 class ExternalFloatElementsAccessor
1457 : public ExternalElementsAccessor<ExternalFloatElementsAccessor, 1470 : public ExternalElementsAccessor<ExternalFloatElementsAccessor,
1458 EXTERNAL_FLOAT_ELEMENTS> { 1471 EXTERNAL_FLOAT_ELEMENTS> {
1459 public: 1472 public:
1460 explicit ExternalFloatElementsAccessor(const char* name) 1473 explicit ExternalFloatElementsAccessor(const char* name)
1461 : ExternalElementsAccessor<ExternalFloatElementsAccessor, 1474 : ExternalElementsAccessor<ExternalFloatElementsAccessor,
1462 EXTERNAL_FLOAT_ELEMENTS>(name) {} 1475 EXTERNAL_FLOAT_ELEMENTS>(name) {}
1463 }; 1476 };
1464 1477
1478 class ExternalFloat32x4ElementsAccessor
1479 : public ExternalElementsAccessor<ExternalFloat32x4ElementsAccessor,
1480 EXTERNAL_FLOAT32x4_ELEMENTS> {
1481 public:
1482 explicit ExternalFloat32x4ElementsAccessor(const char* name)
1483 : ExternalElementsAccessor<ExternalFloat32x4ElementsAccessor,
1484 EXTERNAL_FLOAT32x4_ELEMENTS>(name) {}
1485 };
1486
1487
1488 class ExternalInt32x4ElementsAccessor
1489 : public ExternalElementsAccessor<ExternalInt32x4ElementsAccessor,
1490 EXTERNAL_INT32x4_ELEMENTS> {
1491 public:
1492 explicit ExternalInt32x4ElementsAccessor(const char* name)
1493 : ExternalElementsAccessor<ExternalInt32x4ElementsAccessor,
1494 EXTERNAL_INT32x4_ELEMENTS>(name) {}
1495 };
1496
1465 1497
1466 class ExternalDoubleElementsAccessor 1498 class ExternalDoubleElementsAccessor
1467 : public ExternalElementsAccessor<ExternalDoubleElementsAccessor, 1499 : public ExternalElementsAccessor<ExternalDoubleElementsAccessor,
1468 EXTERNAL_DOUBLE_ELEMENTS> { 1500 EXTERNAL_DOUBLE_ELEMENTS> {
1469 public: 1501 public:
1470 explicit ExternalDoubleElementsAccessor(const char* name) 1502 explicit ExternalDoubleElementsAccessor(const char* name)
1471 : ExternalElementsAccessor<ExternalDoubleElementsAccessor, 1503 : ExternalElementsAccessor<ExternalDoubleElementsAccessor,
1472 EXTERNAL_DOUBLE_ELEMENTS>(name) {} 1504 EXTERNAL_DOUBLE_ELEMENTS>(name) {}
1473 }; 1505 };
1474 1506
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
2058 UNREACHABLE(); 2090 UNREACHABLE();
2059 break; 2091 break;
2060 } 2092 }
2061 2093
2062 array->set_elements(elms); 2094 array->set_elements(elms);
2063 array->set_length(Smi::FromInt(number_of_elements)); 2095 array->set_length(Smi::FromInt(number_of_elements));
2064 return array; 2096 return array;
2065 } 2097 }
2066 2098
2067 } } // namespace v8::internal 2099 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/deoptimizer.cc ('k') | src/elements-kind.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698