summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-typedarray.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-typedarray.cc')
-rw-r--r--deps/v8/src/builtins/builtins-typedarray.cc80
1 files changed, 4 insertions, 76 deletions
diff --git a/deps/v8/src/builtins/builtins-typedarray.cc b/deps/v8/src/builtins/builtins-typedarray.cc
index 73e739fcbd..773e5480ac 100644
--- a/deps/v8/src/builtins/builtins-typedarray.cc
+++ b/deps/v8/src/builtins/builtins-typedarray.cc
@@ -17,7 +17,8 @@ namespace internal {
// ES6 section 22.2.3.1 get %TypedArray%.prototype.buffer
BUILTIN(TypedArrayPrototypeBuffer) {
HandleScope scope(isolate);
- CHECK_RECEIVER(JSTypedArray, typed_array, "get TypedArray.prototype.buffer");
+ CHECK_RECEIVER(JSTypedArray, typed_array,
+ "get %TypedArray%.prototype.buffer");
return *typed_array->GetBuffer();
}
@@ -41,81 +42,14 @@ int64_t CapRelativeIndex(Handle<Object> num, int64_t minimum, int64_t maximum) {
: std::min<int64_t>(relative, maximum);
}
-// ES7 section 22.2.4.6 TypedArrayCreate ( constructor, argumentList )
-MaybeHandle<JSTypedArray> TypedArrayCreate(Isolate* isolate,
- Handle<JSFunction> default_ctor,
- int argc, Handle<Object>* argv,
- const char* method_name) {
- // 1. Let newTypedArray be ? Construct(constructor, argumentList).
- Handle<Object> new_obj;
- ASSIGN_RETURN_ON_EXCEPTION(
- isolate, new_obj, Execution::New(default_ctor, argc, argv), JSTypedArray);
-
- // 2. Perform ? ValidateTypedArray(newTypedArray).
- Handle<JSTypedArray> new_array;
- ASSIGN_RETURN_ON_EXCEPTION(
- isolate, new_array, JSTypedArray::Validate(isolate, new_obj, method_name),
- JSTypedArray);
-
- // 3. If argumentList is a List of a single Number, then
- // If newTypedArray.[[ArrayLength]] < size, throw a TypeError exception.
- DCHECK_IMPLIES(argc == 1, argv[0]->IsSmi());
- if (argc == 1 && new_array->length_value() < argv[0]->Number()) {
- const MessageTemplate::Template message =
- MessageTemplate::kTypedArrayTooShort;
- THROW_NEW_ERROR(isolate, NewTypeError(message), JSTypedArray);
- }
-
- // 4. Return newTypedArray.
- return new_array;
-}
-
-// ES7 section 22.2.4.7 TypedArraySpeciesCreate ( exemplar, argumentList )
-MaybeHandle<JSTypedArray> TypedArraySpeciesCreate(Isolate* isolate,
- Handle<JSTypedArray> exemplar,
- int argc,
- Handle<Object>* argv,
- const char* method_name) {
- // 1. Assert: exemplar is an Object that has a [[TypedArrayName]] internal
- // slot.
- DCHECK(exemplar->IsJSTypedArray());
-
- // 2. Let defaultConstructor be the intrinsic object listed in column one of
- // Table 51 for exemplar.[[TypedArrayName]].
- Handle<JSFunction> default_ctor = isolate->uint8_array_fun();
- switch (exemplar->type()) {
-#define TYPED_ARRAY_CTOR(Type, type, TYPE, ctype, size) \
- case kExternal##Type##Array: { \
- default_ctor = isolate->type##_array_fun(); \
- break; \
- }
-
- TYPED_ARRAYS(TYPED_ARRAY_CTOR)
-#undef TYPED_ARRAY_CTOR
- default:
- UNREACHABLE();
- }
-
- // 3. Let constructor be ? SpeciesConstructor(exemplar, defaultConstructor).
- Handle<Object> ctor;
- ASSIGN_RETURN_ON_EXCEPTION(
- isolate, ctor,
- Object::SpeciesConstructor(isolate, exemplar, default_ctor),
- JSTypedArray);
-
- // 4. Return ? TypedArrayCreate(constructor, argumentList).
- return TypedArrayCreate(isolate, Handle<JSFunction>::cast(ctor), argc, argv,
- method_name);
-}
-
MaybeHandle<JSTypedArray> TypedArraySpeciesCreateByLength(
Isolate* isolate, Handle<JSTypedArray> exemplar, const char* method_name,
int64_t length) {
const int argc = 1;
ScopedVector<Handle<Object>> argv(argc);
argv[0] = isolate->factory()->NewNumberFromInt64(length);
- return TypedArraySpeciesCreate(isolate, exemplar, argc, argv.start(),
- method_name);
+ return JSTypedArray::SpeciesCreate(isolate, exemplar, argc, argv.start(),
+ method_name);
}
} // namespace
@@ -128,8 +62,6 @@ BUILTIN(TypedArrayPrototypeCopyWithin) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, array, JSTypedArray::Validate(isolate, args.receiver(), method));
- if (V8_UNLIKELY(array->WasNeutered())) return *array;
-
int64_t len = array->length_value();
int64_t to = 0;
int64_t from = 0;
@@ -193,8 +125,6 @@ BUILTIN(TypedArrayPrototypeFill) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, array, JSTypedArray::Validate(isolate, args.receiver(), method));
- if (V8_UNLIKELY(array->WasNeutered())) return *array;
-
Handle<Object> obj_value = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, obj_value, Object::ToNumber(obj_value));
@@ -342,8 +272,6 @@ BUILTIN(TypedArrayPrototypeReverse) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, array, JSTypedArray::Validate(isolate, args.receiver(), method));
- if (V8_UNLIKELY(array->WasNeutered())) return *array;
-
ElementsAccessor* elements = array->GetElementsAccessor();
elements->Reverse(*array);
return *array;