Commit 2205ab3a authored by Gus Caplan's avatar Gus Caplan Committed by Commit Bot

[Torque] port Array.isArray to torque

Bug: v8:9891
Change-Id: I5a9600b44c2363cc9681976e4ed2b86eccf35830
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1869581
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64493}
parent 331922ff
...@@ -928,6 +928,7 @@ torque_files = [ ...@@ -928,6 +928,7 @@ torque_files = [
"src/builtins/array-find.tq", "src/builtins/array-find.tq",
"src/builtins/array-findindex.tq", "src/builtins/array-findindex.tq",
"src/builtins/array-foreach.tq", "src/builtins/array-foreach.tq",
"src/builtins/array-isarray.tq",
"src/builtins/array-join.tq", "src/builtins/array-join.tq",
"src/builtins/array-lastindexof.tq", "src/builtins/array-lastindexof.tq",
"src/builtins/array-map.tq", "src/builtins/array-map.tq",
......
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
namespace runtime {
extern runtime ArrayIsArray(implicit context: Context)(JSAny): JSAny;
} // namespace runtime
namespace array {
// ES #sec-array.isarray
javascript builtin ArrayIsArray(js-implicit context: Context)(arg: JSAny):
JSAny {
// 1. Return ? IsArray(arg).
typeswitch (arg) {
case (JSArray): {
return True;
}
case (JSProxy): {
// TODO(verwaest): Handle proxies in-place
return runtime::ArrayIsArray(arg);
}
case (JSAny): {
return False;
}
}
}
} // namespace array
...@@ -774,31 +774,6 @@ TF_BUILTIN(TypedArrayPrototypeMap, ArrayBuiltinsAssembler) { ...@@ -774,31 +774,6 @@ TF_BUILTIN(TypedArrayPrototypeMap, ArrayBuiltinsAssembler) {
&ArrayBuiltinsAssembler::TypedArrayMapProcessor); &ArrayBuiltinsAssembler::TypedArrayMapProcessor);
} }
TF_BUILTIN(ArrayIsArray, CodeStubAssembler) {
TNode<Object> object = CAST(Parameter(Descriptor::kArg));
TNode<Context> context = CAST(Parameter(Descriptor::kContext));
Label call_runtime(this), return_true(this), return_false(this);
GotoIf(TaggedIsSmi(object), &return_false);
TNode<Uint16T> instance_type = LoadInstanceType(CAST(object));
GotoIf(InstanceTypeEqual(instance_type, JS_ARRAY_TYPE), &return_true);
// TODO(verwaest): Handle proxies in-place.
Branch(InstanceTypeEqual(instance_type, JS_PROXY_TYPE), &call_runtime,
&return_false);
BIND(&return_true);
Return(TrueConstant());
BIND(&return_false);
Return(FalseConstant());
BIND(&call_runtime);
Return(CallRuntime(Runtime::kArrayIsArray, context, object));
}
class ArrayIncludesIndexofAssembler : public CodeStubAssembler { class ArrayIncludesIndexofAssembler : public CodeStubAssembler {
public: public:
explicit ArrayIncludesIndexofAssembler(compiler::CodeAssemblerState* state) explicit ArrayIncludesIndexofAssembler(compiler::CodeAssemblerState* state)
......
...@@ -313,8 +313,6 @@ namespace internal { ...@@ -313,8 +313,6 @@ namespace internal {
ArraySingleArgumentConstructor) \ ArraySingleArgumentConstructor) \
TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor) \ TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor) \
CPP(ArrayConcat) \ CPP(ArrayConcat) \
/* ES6 #sec-array.isarray */ \
TFJ(ArrayIsArray, 1, kReceiver, kArg) \
/* ES6 #sec-array.prototype.fill */ \ /* ES6 #sec-array.prototype.fill */ \
CPP(ArrayPrototypeFill) \ CPP(ArrayPrototypeFill) \
/* ES6 #sec-array.from */ \ /* ES6 #sec-array.from */ \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment