summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/array-reverse.tq
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2019-03-12 09:01:49 +0100
committerMichaël Zasso <targos@protonmail.com>2019-03-14 18:49:21 +0100
commit7b48713334469818661fe276cf571de9c7899f2d (patch)
tree4dbda49ac88db76ce09dc330a0cb587e68e139ba /deps/v8/src/builtins/array-reverse.tq
parent8549ac09b256666cf5275224ec58fab9939ff32e (diff)
downloadandroid-node-v8-7b48713334469818661fe276cf571de9c7899f2d.tar.gz
android-node-v8-7b48713334469818661fe276cf571de9c7899f2d.tar.bz2
android-node-v8-7b48713334469818661fe276cf571de9c7899f2d.zip
deps: update V8 to 7.3.492.25
PR-URL: https://github.com/nodejs/node/pull/25852 Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'deps/v8/src/builtins/array-reverse.tq')
-rw-r--r--deps/v8/src/builtins/array-reverse.tq63
1 files changed, 32 insertions, 31 deletions
diff --git a/deps/v8/src/builtins/array-reverse.tq b/deps/v8/src/builtins/array-reverse.tq
index 327ef12402..dddad7b42c 100644
--- a/deps/v8/src/builtins/array-reverse.tq
+++ b/deps/v8/src/builtins/array-reverse.tq
@@ -2,23 +2,23 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-module array {
+namespace array {
macro LoadElement<ElementsAccessor: type, T: type>(
elements: FixedArrayBase, index: Smi): T;
- LoadElement<FastPackedSmiElements, Smi>(
+ LoadElement<FastPackedSmiElements, Smi>(implicit context: Context)(
elements: FixedArrayBase, index: Smi): Smi {
const elems: FixedArray = UnsafeCast<FixedArray>(elements);
return UnsafeCast<Smi>(elems[index]);
}
- LoadElement<FastPackedObjectElements, Object>(
+ LoadElement<FastPackedObjectElements, Object>(implicit context: Context)(
elements: FixedArrayBase, index: Smi): Object {
const elems: FixedArray = UnsafeCast<FixedArray>(elements);
return elems[index];
}
- LoadElement<FastPackedDoubleElements, float64>(
+ LoadElement<FastPackedDoubleElements, float64>(implicit context: Context)(
elements: FixedArrayBase, index: Smi): float64 {
try {
const elems: FixedDoubleArray = UnsafeCast<FixedDoubleArray>(elements);
@@ -32,25 +32,24 @@ module array {
}
macro StoreElement<ElementsAccessor: type, T: type>(
- elements: FixedArrayBase, index: Smi, value: T);
+ implicit context:
+ Context)(elements: FixedArrayBase, index: Smi, value: T);
- StoreElement<FastPackedSmiElements, Smi>(
+ StoreElement<FastPackedSmiElements, Smi>(implicit context: Context)(
elements: FixedArrayBase, index: Smi, value: Smi) {
const elems: FixedArray = UnsafeCast<FixedArray>(elements);
StoreFixedArrayElementSmi(elems, index, value, SKIP_WRITE_BARRIER);
}
- StoreElement<FastPackedObjectElements, Object>(
+ StoreElement<FastPackedObjectElements, Object>(implicit context: Context)(
elements: FixedArrayBase, index: Smi, value: Object) {
const elems: FixedArray = UnsafeCast<FixedArray>(elements);
elems[index] = value;
}
- StoreElement<FastPackedDoubleElements, float64>(
+ StoreElement<FastPackedDoubleElements, float64>(implicit context: Context)(
elements: FixedArrayBase, index: Smi, value: float64) {
const elems: FixedDoubleArray = UnsafeCast<FixedDoubleArray>(elements);
-
- assert(value == Float64SilenceNaN(value));
StoreFixedDoubleArrayElementWithSmiIndex(elems, index, value);
}
@@ -58,26 +57,27 @@ module array {
// whether a property is present, so we can simply swap them using fast
// FixedArray loads/stores.
macro FastPackedArrayReverse<Accessor: type, T: type>(
- elements: FixedArrayBase, length: Smi) {
+ implicit context: Context)(elements: FixedArrayBase, length: Smi) {
let lower: Smi = 0;
let upper: Smi = length - 1;
while (lower < upper) {
const lowerValue: T = LoadElement<Accessor, T>(elements, lower);
const upperValue: T = LoadElement<Accessor, T>(elements, upper);
- StoreElement<Accessor, T>(elements, lower, upperValue);
- StoreElement<Accessor, T>(elements, upper, lowerValue);
+ StoreElement<Accessor>(elements, lower, upperValue);
+ StoreElement<Accessor>(elements, upper, lowerValue);
++lower;
--upper;
}
}
- macro GenericArrayReverse(context: Context, receiver: Object): Object {
+ transitioning macro GenericArrayReverse(context: Context, receiver: Object):
+ Object {
// 1. Let O be ? ToObject(this value).
const object: JSReceiver = ToObject_Inline(context, receiver);
// 2. Let len be ? ToLength(? Get(O, "length")).
- const length: Number = GetLengthProperty(context, object);
+ const length: Number = GetLengthProperty(object);
// 3. Let middle be floor(len / 2).
// 4. Let lower be 0.
@@ -96,42 +96,42 @@ module array {
// b. Let upperP be ! ToString(upper).
// c. Let lowerP be ! ToString(lower).
// d. Let lowerExists be ? HasProperty(O, lowerP).
- const lowerExists: Boolean = HasProperty(context, object, lower);
+ const lowerExists: Boolean = HasProperty(object, lower);
// e. If lowerExists is true, then.
if (lowerExists == True) {
// i. Let lowerValue be ? Get(O, lowerP).
- lowerValue = GetProperty(context, object, lower);
+ lowerValue = GetProperty(object, lower);
}
// f. Let upperExists be ? HasProperty(O, upperP).
- const upperExists: Boolean = HasProperty(context, object, upper);
+ const upperExists: Boolean = HasProperty(object, upper);
// g. If upperExists is true, then.
if (upperExists == True) {
// i. Let upperValue be ? Get(O, upperP).
- upperValue = GetProperty(context, object, upper);
+ upperValue = GetProperty(object, upper);
}
// h. If lowerExists is true and upperExists is true, then
if (lowerExists == True && upperExists == True) {
// i. Perform ? Set(O, lowerP, upperValue, true).
- SetProperty(context, object, lower, upperValue);
+ SetProperty(object, lower, upperValue);
// ii. Perform ? Set(O, upperP, lowerValue, true).
- SetProperty(context, object, upper, lowerValue);
+ SetProperty(object, upper, lowerValue);
} else if (lowerExists == False && upperExists == True) {
// i. Perform ? Set(O, lowerP, upperValue, true).
- SetProperty(context, object, lower, upperValue);
+ SetProperty(object, lower, upperValue);
// ii. Perform ? DeletePropertyOrThrow(O, upperP).
- DeleteProperty(context, object, upper, kStrict);
+ DeleteProperty(object, upper, kStrict);
} else if (lowerExists == True && upperExists == False) {
// i. Perform ? DeletePropertyOrThrow(O, lowerP).
- DeleteProperty(context, object, lower, kStrict);
+ DeleteProperty(object, lower, kStrict);
// ii. Perform ? Set(O, upperP, lowerValue, true).
- SetProperty(context, object, upper, lowerValue);
+ SetProperty(object, upper, lowerValue);
}
// l. Increase lower by 1.
@@ -143,28 +143,29 @@ module array {
return object;
}
- macro TryFastPackedArrayReverse(receiver: Object) labels Slow {
- const array: JSArray = Cast<JSArray>(receiver) otherwise Slow;
+ macro TryFastPackedArrayReverse(implicit context: Context)(receiver: Object)
+ labels Slow {
+ const array: FastJSArray = Cast<FastJSArray>(receiver) otherwise Slow;
const kind: ElementsKind = array.map.elements_kind;
if (kind == PACKED_SMI_ELEMENTS) {
EnsureWriteableFastElements(array);
FastPackedArrayReverse<FastPackedSmiElements, Smi>(
- array.elements, array.length_fast);
+ array.elements, array.length);
} else if (kind == PACKED_ELEMENTS) {
EnsureWriteableFastElements(array);
FastPackedArrayReverse<FastPackedObjectElements, Object>(
- array.elements, array.length_fast);
+ array.elements, array.length);
} else if (kind == PACKED_DOUBLE_ELEMENTS) {
FastPackedArrayReverse<FastPackedDoubleElements, float64>(
- array.elements, array.length_fast);
+ array.elements, array.length);
} else {
goto Slow;
}
}
// https://tc39.github.io/ecma262/#sec-array.prototype.reverse
- javascript builtin ArrayPrototypeReverse(
+ transitioning javascript builtin ArrayPrototypeReverse(
context: Context, receiver: Object, ...arguments): Object {
try {
TryFastPackedArrayReverse(receiver) otherwise Baseline;