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

Side by Side Diff: src/harmony-typedarray.js

Issue 1390023003: Use simple/fast macro version of MinMax in JS (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: avoid debug directory Created 5 years, 2 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 (function(global, utils) { 5 (function(global, utils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
(...skipping 30 matching lines...) Expand all
41 var InnerArrayFindIndex; 41 var InnerArrayFindIndex;
42 var InnerArrayForEach; 42 var InnerArrayForEach;
43 var InnerArrayIndexOf; 43 var InnerArrayIndexOf;
44 var InnerArrayJoin; 44 var InnerArrayJoin;
45 var InnerArrayLastIndexOf; 45 var InnerArrayLastIndexOf;
46 var InnerArrayMap; 46 var InnerArrayMap;
47 var InnerArraySome; 47 var InnerArraySome;
48 var InnerArraySort; 48 var InnerArraySort;
49 var InnerArrayToLocaleString; 49 var InnerArrayToLocaleString;
50 var IsNaN; 50 var IsNaN;
51 var MathMax;
52 var MathMin;
53 var PackedArrayReverse; 51 var PackedArrayReverse;
54 52
55 utils.Import(function(from) { 53 utils.Import(function(from) {
56 ArrayFrom = from.ArrayFrom; 54 ArrayFrom = from.ArrayFrom;
57 ArrayToString = from.ArrayToString; 55 ArrayToString = from.ArrayToString;
58 InnerArrayCopyWithin = from.InnerArrayCopyWithin; 56 InnerArrayCopyWithin = from.InnerArrayCopyWithin;
59 InnerArrayEvery = from.InnerArrayEvery; 57 InnerArrayEvery = from.InnerArrayEvery;
60 InnerArrayFill = from.InnerArrayFill; 58 InnerArrayFill = from.InnerArrayFill;
61 InnerArrayFilter = from.InnerArrayFilter; 59 InnerArrayFilter = from.InnerArrayFilter;
62 InnerArrayFind = from.InnerArrayFind; 60 InnerArrayFind = from.InnerArrayFind;
63 InnerArrayFindIndex = from.InnerArrayFindIndex; 61 InnerArrayFindIndex = from.InnerArrayFindIndex;
64 InnerArrayForEach = from.InnerArrayForEach; 62 InnerArrayForEach = from.InnerArrayForEach;
65 InnerArrayIndexOf = from.InnerArrayIndexOf; 63 InnerArrayIndexOf = from.InnerArrayIndexOf;
66 InnerArrayJoin = from.InnerArrayJoin; 64 InnerArrayJoin = from.InnerArrayJoin;
67 InnerArrayLastIndexOf = from.InnerArrayLastIndexOf; 65 InnerArrayLastIndexOf = from.InnerArrayLastIndexOf;
68 InnerArrayMap = from.InnerArrayMap; 66 InnerArrayMap = from.InnerArrayMap;
69 InnerArrayReduce = from.InnerArrayReduce; 67 InnerArrayReduce = from.InnerArrayReduce;
70 InnerArrayReduceRight = from.InnerArrayReduceRight; 68 InnerArrayReduceRight = from.InnerArrayReduceRight;
71 InnerArraySome = from.InnerArraySome; 69 InnerArraySome = from.InnerArraySome;
72 InnerArraySort = from.InnerArraySort; 70 InnerArraySort = from.InnerArraySort;
73 InnerArrayToLocaleString = from.InnerArrayToLocaleString; 71 InnerArrayToLocaleString = from.InnerArrayToLocaleString;
74 IsNaN = from.IsNaN; 72 IsNaN = from.IsNaN;
75 MathMax = from.MathMax;
76 MathMin = from.MathMin;
77 PackedArrayReverse = from.PackedArrayReverse; 73 PackedArrayReverse = from.PackedArrayReverse;
78 }); 74 });
79 75
80 // ------------------------------------------------------------------- 76 // -------------------------------------------------------------------
81 77
82 function ConstructTypedArray(constructor, arg) { 78 function ConstructTypedArray(constructor, arg) {
83 // TODO(littledan): This is an approximation of the spec, which requires 79 // TODO(littledan): This is an approximation of the spec, which requires
84 // that only real TypedArray classes should be accepted (22.2.2.1.1) 80 // that only real TypedArray classes should be accepted (22.2.2.1.1)
85 if (!%IsConstructor(constructor) || IS_UNDEFINED(constructor.prototype) || 81 if (!%IsConstructor(constructor) || IS_UNDEFINED(constructor.prototype) ||
86 !%HasOwnProperty(constructor.prototype, "BYTES_PER_ELEMENT")) { 82 !%HasOwnProperty(constructor.prototype, "BYTES_PER_ELEMENT")) {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 308
313 309
314 function TypedArraySlice(start, end) { 310 function TypedArraySlice(start, end) {
315 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); 311 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray);
316 var len = %_TypedArrayGetLength(this); 312 var len = %_TypedArrayGetLength(this);
317 313
318 var relativeStart = TO_INTEGER(start); 314 var relativeStart = TO_INTEGER(start);
319 315
320 var k; 316 var k;
321 if (relativeStart < 0) { 317 if (relativeStart < 0) {
322 k = MathMax(len + relativeStart, 0); 318 k = MAX_SIMPLE(len + relativeStart, 0);
323 } else { 319 } else {
324 k = MathMin(relativeStart, len); 320 k = MIN_SIMPLE(relativeStart, len);
325 } 321 }
326 322
327 var relativeEnd; 323 var relativeEnd;
328 if (IS_UNDEFINED(end)) { 324 if (IS_UNDEFINED(end)) {
329 relativeEnd = len; 325 relativeEnd = len;
330 } else { 326 } else {
331 relativeEnd = TO_INTEGER(end); 327 relativeEnd = TO_INTEGER(end);
332 } 328 }
333 329
334 var final; 330 var final;
335 if (relativeEnd < 0) { 331 if (relativeEnd < 0) {
336 final = MathMax(len + relativeEnd, 0); 332 final = MAX_SIMPLE(len + relativeEnd, 0);
337 } else { 333 } else {
338 final = MathMin(relativeEnd, len); 334 final = MIN_SIMPLE(relativeEnd, len);
339 } 335 }
340 336
341 var count = MathMax(final - k, 0); 337 var count = MAX_SIMPLE(final - k, 0);
342 var array = ConstructTypedArrayLike(this, count); 338 var array = ConstructTypedArrayLike(this, count);
343 // The code below is the 'then' branch; the 'else' branch species 339 // The code below is the 'then' branch; the 'else' branch species
344 // a memcpy. Because V8 doesn't canonicalize NaN, the difference is 340 // a memcpy. Because V8 doesn't canonicalize NaN, the difference is
345 // unobservable. 341 // unobservable.
346 var n = 0; 342 var n = 0;
347 while (k < final) { 343 while (k < final) {
348 var kValue = this[k]; 344 var kValue = this[k];
349 // TODO(littledan): The spec says to throw on an error in setting; 345 // TODO(littledan): The spec says to throw on an error in setting;
350 // does this throw? 346 // does this throw?
351 array[n] = kValue; 347 array[n] = kValue;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 "some", TypedArraySome, 399 "some", TypedArraySome,
404 "sort", TypedArraySort, 400 "sort", TypedArraySort,
405 "toString", TypedArrayToString, 401 "toString", TypedArrayToString,
406 "toLocaleString", TypedArrayToLocaleString 402 "toLocaleString", TypedArrayToLocaleString
407 ]); 403 ]);
408 endmacro 404 endmacro
409 405
410 TYPED_ARRAYS(EXTEND_TYPED_ARRAY) 406 TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
411 407
412 }) 408 })
OLDNEW
« src/harmony-atomics.js ('K') | « src/harmony-atomics.js ('k') | src/json.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698