Remove unnecessary 'size' argument from TYPED_ARRAYS macro.
Use sizeof of the C type instead. Also fix a few #undef's that got reported after my changes. R=jarin@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I30a43b3d93e6df04fb9fb33050b52988edd7fdb1 Reviewed-on: https://chromium-review.googlesource.com/1155108 Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#54817}
This commit is contained in:
parent
c1994e688b
commit
6034d2f88f
@ -55,7 +55,7 @@ inline Local<To> Utils::Convert(v8::internal::Handle<From> obj) {
|
||||
return Convert<v8::internal::From, v8::To>(obj); \
|
||||
}
|
||||
|
||||
#define MAKE_TO_LOCAL_TYPED_ARRAY(Type, typeName, TYPE, ctype, size) \
|
||||
#define MAKE_TO_LOCAL_TYPED_ARRAY(Type, typeName, TYPE, ctype) \
|
||||
Local<v8::Type##Array> Utils::ToLocal##Type##Array( \
|
||||
v8::internal::Handle<v8::internal::JSTypedArray> obj) { \
|
||||
DCHECK(obj->type() == v8::internal::kExternal##Type##Array); \
|
||||
|
10
src/api.cc
10
src/api.cc
@ -3580,15 +3580,13 @@ bool Value::IsTypedArray() const {
|
||||
return Utils::OpenHandle(this)->IsJSTypedArray();
|
||||
}
|
||||
|
||||
|
||||
#define VALUE_IS_TYPED_ARRAY(Type, typeName, TYPE, ctype, size) \
|
||||
#define VALUE_IS_TYPED_ARRAY(Type, typeName, TYPE, ctype) \
|
||||
bool Value::Is##Type##Array() const { \
|
||||
i::Handle<i::Object> obj = Utils::OpenHandle(this); \
|
||||
return obj->IsJSTypedArray() && \
|
||||
i::JSTypedArray::cast(*obj)->type() == i::kExternal##Type##Array; \
|
||||
}
|
||||
|
||||
|
||||
TYPED_ARRAYS(VALUE_IS_TYPED_ARRAY)
|
||||
|
||||
#undef VALUE_IS_TYPED_ARRAY
|
||||
@ -4023,8 +4021,7 @@ void v8::TypedArray::CheckCast(Value* that) {
|
||||
"Could not convert to TypedArray");
|
||||
}
|
||||
|
||||
|
||||
#define CHECK_TYPED_ARRAY_CAST(Type, typeName, TYPE, ctype, size) \
|
||||
#define CHECK_TYPED_ARRAY_CAST(Type, typeName, TYPE, ctype) \
|
||||
void v8::Type##Array::CheckCast(Value* that) { \
|
||||
i::Handle<i::Object> obj = Utils::OpenHandle(that); \
|
||||
Utils::ApiCheck( \
|
||||
@ -4033,7 +4030,6 @@ void v8::TypedArray::CheckCast(Value* that) {
|
||||
"v8::" #Type "Array::Cast()", "Could not convert to " #Type "Array"); \
|
||||
}
|
||||
|
||||
|
||||
TYPED_ARRAYS(CHECK_TYPED_ARRAY_CAST)
|
||||
|
||||
#undef CHECK_TYPED_ARRAY_CAST
|
||||
@ -8014,7 +8010,7 @@ size_t v8::TypedArray::Length() {
|
||||
static_assert(v8::TypedArray::kMaxLength == i::Smi::kMaxValue,
|
||||
"v8::TypedArray::kMaxLength must match i::Smi::kMaxValue");
|
||||
|
||||
#define TYPED_ARRAY_NEW(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_NEW(Type, type, TYPE, ctype) \
|
||||
Local<Type##Array> Type##Array::New(Local<ArrayBuffer> array_buffer, \
|
||||
size_t byte_offset, size_t length) { \
|
||||
i::Isolate* isolate = Utils::OpenHandle(*array_buffer)->GetIsolate(); \
|
||||
|
@ -3137,7 +3137,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
}
|
||||
|
||||
{ // -- T y p e d A r r a y s
|
||||
#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
|
||||
#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype) \
|
||||
{ \
|
||||
Handle<JSFunction> fun = \
|
||||
InstallTypedArray(#Type "Array", TYPE##_ELEMENTS); \
|
||||
|
@ -536,7 +536,7 @@ Node* ArrayBuiltinsAssembler::FindProcessor(Node* k_value, Node* k) {
|
||||
Unreachable();
|
||||
|
||||
std::vector<int32_t> instance_types = {
|
||||
#define INSTANCE_TYPE(Type, type, TYPE, ctype, size) FIXED_##TYPE##_ARRAY_TYPE,
|
||||
#define INSTANCE_TYPE(Type, type, TYPE, ctype) FIXED_##TYPE##_ARRAY_TYPE,
|
||||
TYPED_ARRAYS(INSTANCE_TYPE)
|
||||
#undef INSTANCE_TYPE
|
||||
};
|
||||
@ -643,8 +643,8 @@ Node* ArrayBuiltinsAssembler::FindProcessor(Node* k_value, Node* k) {
|
||||
ElementsKind ArrayBuiltinsAssembler::ElementsKindForInstanceType(
|
||||
InstanceType type) {
|
||||
switch (type) {
|
||||
#define INSTANCE_TYPE_TO_ELEMENTS_KIND(Type, type, TYPE, ctype, size) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
#define INSTANCE_TYPE_TO_ELEMENTS_KIND(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return TYPE##_ELEMENTS;
|
||||
|
||||
TYPED_ARRAYS(INSTANCE_TYPE_TO_ELEMENTS_KIND)
|
||||
@ -3682,18 +3682,17 @@ TF_BUILTIN(ArrayIteratorPrototypeNext, CodeStubAssembler) {
|
||||
|
||||
Label if_unknown_type(this, Label::kDeferred);
|
||||
int32_t elements_kinds[] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) TYPE##_ELEMENTS,
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) TYPE##_ELEMENTS,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
};
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
Label if_##type##array(this);
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) Label if_##type##array(this);
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
||||
Label* elements_kind_labels[] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) &if_##type##array,
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) &if_##type##array,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
};
|
||||
@ -3705,7 +3704,7 @@ TF_BUILTIN(ArrayIteratorPrototypeNext, CodeStubAssembler) {
|
||||
BIND(&if_unknown_type);
|
||||
Unreachable();
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
BIND(&if_##type##array); \
|
||||
{ \
|
||||
var_value.Bind(LoadFixedTypedArrayElementAsTagged( \
|
||||
|
@ -831,7 +831,7 @@ uint32_t EstimateElementCount(Isolate* isolate, Handle<JSArray> array) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -902,7 +902,7 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
|
||||
});
|
||||
break;
|
||||
}
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -1127,7 +1127,7 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver,
|
||||
}
|
||||
case NO_ELEMENTS:
|
||||
break;
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
return IterateElementsSlow(isolate, receiver, length, visitor);
|
||||
|
@ -1161,18 +1161,17 @@ void TypedArrayBuiltinsAssembler::DispatchTypedArrayByElementsKind(
|
||||
Label next(this), if_unknown_type(this, Label::kDeferred);
|
||||
|
||||
int32_t elements_kinds[] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) TYPE##_ELEMENTS,
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) TYPE##_ELEMENTS,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
};
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
Label if_##type##array(this);
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) Label if_##type##array(this);
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
||||
Label* elements_kind_labels[] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) &if_##type##array,
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) &if_##type##array,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
};
|
||||
@ -1181,11 +1180,12 @@ void TypedArrayBuiltinsAssembler::DispatchTypedArrayByElementsKind(
|
||||
Switch(elements_kind, &if_unknown_type, elements_kinds, elements_kind_labels,
|
||||
arraysize(elements_kinds));
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
BIND(&if_##type##array); \
|
||||
{ \
|
||||
case_function(TYPE##_ELEMENTS, size, Context::TYPE##_ARRAY_FUN_INDEX); \
|
||||
Goto(&next); \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
BIND(&if_##type##array); \
|
||||
{ \
|
||||
case_function(TYPE##_ELEMENTS, sizeof(ctype), \
|
||||
Context::TYPE##_ARRAY_FUN_INDEX); \
|
||||
Goto(&next); \
|
||||
}
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -1488,19 +1488,19 @@ TF_BUILTIN(TypedArrayPrototypeToStringTag, TypedArrayBuiltinsAssembler) {
|
||||
size_t const kTypedElementsKindCount = LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND -
|
||||
FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND +
|
||||
1;
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
Label return_##type##array(this); \
|
||||
BIND(&return_##type##array); \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
Label return_##type##array(this); \
|
||||
BIND(&return_##type##array); \
|
||||
Return(StringConstant(#Type "Array"));
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
Label* elements_kind_labels[kTypedElementsKindCount] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) &return_##type##array,
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) &return_##type##array,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
};
|
||||
int32_t elements_kinds[kTypedElementsKindCount] = {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
TYPE##_ELEMENTS - FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
@ -4972,9 +4972,9 @@ Reduction JSCallReducer::ReduceArrayIteratorPrototypeNext(Node* node) {
|
||||
|
||||
ExternalArrayType array_type = kExternalInt8Array;
|
||||
switch (elements_kind) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
array_type = kExternal##Type##Array; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
array_type = kExternal##Type##Array; \
|
||||
break;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
default:
|
||||
@ -6085,7 +6085,7 @@ Reduction JSCallReducer::ReduceTypedArrayPrototypeToStringTag(Node* node) {
|
||||
simplified()->NumberSubtract(), receiver_elements_kind,
|
||||
jsgraph()->Constant(FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND));
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
do { \
|
||||
Node* check = graph()->NewNode( \
|
||||
simplified()->NumberEqual(), receiver_elements_kind, \
|
||||
@ -6634,10 +6634,10 @@ Reduction JSCallReducer::ReduceArrayBufferViewAccessor(
|
||||
namespace {
|
||||
uint32_t ExternalArrayElementSize(const ExternalArrayType element_type) {
|
||||
switch (element_type) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
DCHECK_LE(size, 8); \
|
||||
return size;
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
DCHECK_LE(sizeof(ctype), 8); \
|
||||
return sizeof(ctype);
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
default:
|
||||
UNREACHABLE();
|
||||
|
@ -2185,8 +2185,8 @@ namespace {
|
||||
|
||||
ExternalArrayType GetArrayTypeFromElementsKind(ElementsKind kind) {
|
||||
switch (kind) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
return kExternal##Type##Array;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
@ -2048,8 +2048,8 @@ Type Typer::Visitor::TypeLoadElement(Node* node) {
|
||||
|
||||
Type Typer::Visitor::TypeLoadTypedElement(Node* node) {
|
||||
switch (ExternalArrayTypeOf(node->op())) {
|
||||
#define TYPED_ARRAY_CASE(ElemType, type, TYPE, ctype, size) \
|
||||
case kExternal##ElemType##Array: \
|
||||
#define TYPED_ARRAY_CASE(ElemType, type, TYPE, ctype) \
|
||||
case kExternal##ElemType##Array: \
|
||||
return typer_->cache_.k##ElemType;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -2059,8 +2059,8 @@ Type Typer::Visitor::TypeLoadTypedElement(Node* node) {
|
||||
|
||||
Type Typer::Visitor::TypeLoadDataViewElement(Node* node) {
|
||||
switch (ExternalArrayTypeOf(node->op())) {
|
||||
#define TYPED_ARRAY_CASE(ElemType, type, TYPE, ctype, size) \
|
||||
case kExternal##ElemType##Array: \
|
||||
#define TYPED_ARRAY_CASE(ElemType, type, TYPE, ctype) \
|
||||
case kExternal##ElemType##Array: \
|
||||
return typer_->cache_.k##ElemType;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
@ -306,7 +306,7 @@ Type::bitset BitsetType::Lub(HeapObjectType const& type) {
|
||||
// require bit set types, they should get kOtherInternal.
|
||||
case MUTABLE_HEAP_NUMBER_TYPE:
|
||||
case FREE_SPACE_TYPE:
|
||||
#define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE:
|
||||
|
||||
TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE)
|
||||
|
@ -11,19 +11,19 @@
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
// V has parameters (Type, type, TYPE, C type, element_size)
|
||||
#define TYPED_ARRAYS(V) \
|
||||
V(Uint8, uint8, UINT8, uint8_t, 1) \
|
||||
V(Int8, int8, INT8, int8_t, 1) \
|
||||
V(Uint16, uint16, UINT16, uint16_t, 2) \
|
||||
V(Int16, int16, INT16, int16_t, 2) \
|
||||
V(Uint32, uint32, UINT32, uint32_t, 4) \
|
||||
V(Int32, int32, INT32, int32_t, 4) \
|
||||
V(Float32, float32, FLOAT32, float, 4) \
|
||||
V(Float64, float64, FLOAT64, double, 8) \
|
||||
V(Uint8Clamped, uint8_clamped, UINT8_CLAMPED, uint8_t, 1) \
|
||||
V(BigUint64, biguint64, BIGUINT64, uint64_t, 8) \
|
||||
V(BigInt64, bigint64, BIGINT64, int64_t, 8)
|
||||
// V has parameters (Type, type, TYPE, C type)
|
||||
#define TYPED_ARRAYS(V) \
|
||||
V(Uint8, uint8, UINT8, uint8_t) \
|
||||
V(Int8, int8, INT8, int8_t) \
|
||||
V(Uint16, uint16, UINT16, uint16_t) \
|
||||
V(Int16, int16, INT16, int16_t) \
|
||||
V(Uint32, uint32, UINT32, uint32_t) \
|
||||
V(Int32, int32, INT32, int32_t) \
|
||||
V(Float32, float32, FLOAT32, float) \
|
||||
V(Float64, float64, FLOAT64, double) \
|
||||
V(Uint8Clamped, uint8_clamped, UINT8_CLAMPED, uint8_t) \
|
||||
V(BigUint64, biguint64, BIGUINT64, uint64_t) \
|
||||
V(BigInt64, bigint64, BIGINT64, int64_t)
|
||||
|
||||
enum ElementsKind {
|
||||
// The "fast" kind for elements that only contain SMI values. Must be first
|
||||
@ -54,8 +54,7 @@ enum ElementsKind {
|
||||
SLOW_STRING_WRAPPER_ELEMENTS,
|
||||
|
||||
// Fixed typed arrays.
|
||||
#define TYPED_ARRAY_ELEMENTS_KIND(Type, type, TYPE, ctype, size) \
|
||||
TYPE##_ELEMENTS,
|
||||
#define TYPED_ARRAY_ELEMENTS_KIND(Type, type, TYPE, ctype) TYPE##_ELEMENTS,
|
||||
TYPED_ARRAYS(TYPED_ARRAY_ELEMENTS_KIND)
|
||||
#undef TYPED_ARRAY_ELEMENTS_KIND
|
||||
|
||||
|
@ -2682,8 +2682,8 @@ class FastSmiOrObjectElementsAccessor
|
||||
case SLOW_SLOPPY_ARGUMENTS_ELEMENTS:
|
||||
case FAST_STRING_WRAPPER_ELEMENTS:
|
||||
case SLOW_STRING_WRAPPER_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
// This function is currently only used for JSArrays with non-zero
|
||||
// length.
|
||||
@ -2854,8 +2854,8 @@ class FastDoubleElementsAccessor
|
||||
case FAST_STRING_WRAPPER_ELEMENTS:
|
||||
case SLOW_STRING_WRAPPER_ELEMENTS:
|
||||
case NO_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
// This function is currently only used for JSArrays with non-zero
|
||||
// length.
|
||||
@ -3309,7 +3309,7 @@ class TypedElementsAccessor
|
||||
}
|
||||
|
||||
switch (source->GetElementsKind()) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
CopyBetweenBackingStores<Type##ArrayTraits>(source_data, dest_elements, \
|
||||
count, 0); \
|
||||
@ -3395,7 +3395,7 @@ class TypedElementsAccessor
|
||||
}
|
||||
|
||||
switch (source->GetElementsKind()) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
CopyBetweenBackingStores<Type##ArrayTraits>( \
|
||||
source_data, destination_elements, length, offset); \
|
||||
@ -3614,8 +3614,8 @@ class TypedElementsAccessor
|
||||
}
|
||||
};
|
||||
|
||||
#define FIXED_ELEMENTS_ACCESSOR(Type, type, TYPE, ctype, size) \
|
||||
typedef TypedElementsAccessor<TYPE##_ELEMENTS, ctype> \
|
||||
#define FIXED_ELEMENTS_ACCESSOR(Type, type, TYPE, ctype) \
|
||||
typedef TypedElementsAccessor<TYPE##_ELEMENTS, ctype> \
|
||||
Fixed##Type##ElementsAccessor;
|
||||
|
||||
TYPED_ARRAYS(FIXED_ELEMENTS_ACCESSOR)
|
||||
@ -4568,7 +4568,7 @@ void CopyFastNumberJSArrayElementsToTypedArray(Context* context,
|
||||
DCHECK(destination->IsJSTypedArray());
|
||||
|
||||
switch (destination->GetElementsKind()) {
|
||||
#define TYPED_ARRAYS_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAYS_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
CHECK(Fixed##Type##ElementsAccessor::TryCopyElementsFastNumber( \
|
||||
context, source, destination, length, static_cast<uint32_t>(offset))); \
|
||||
@ -4584,7 +4584,7 @@ void CopyTypedArrayElementsToTypedArray(JSTypedArray* source,
|
||||
JSTypedArray* destination,
|
||||
uintptr_t length, uintptr_t offset) {
|
||||
switch (destination->GetElementsKind()) {
|
||||
#define TYPED_ARRAYS_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAYS_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
Fixed##Type##ElementsAccessor::CopyElementsFromTypedArray( \
|
||||
source, destination, length, static_cast<uint32_t>(offset)); \
|
||||
@ -4678,5 +4678,7 @@ Handle<JSArray> ElementsAccessor::Concat(Isolate* isolate, Arguments* args,
|
||||
}
|
||||
|
||||
ElementsAccessor** ElementsAccessor::elements_accessors_ = nullptr;
|
||||
|
||||
#undef ELEMENTS_LIST
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -3134,10 +3134,10 @@ void Factory::TypeAndSizeForElementsKind(ElementsKind kind,
|
||||
ExternalArrayType* array_type,
|
||||
size_t* element_size) {
|
||||
switch (kind) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
*array_type = kExternal##Type##Array; \
|
||||
*element_size = size; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
*array_type = kExternal##Type##Array; \
|
||||
*element_size = sizeof(ctype); \
|
||||
break;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -3153,10 +3153,10 @@ static void ForFixedTypedArray(ExternalArrayType array_type,
|
||||
size_t* element_size,
|
||||
ElementsKind* element_kind) {
|
||||
switch (array_type) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
*element_size = size; \
|
||||
*element_kind = TYPE##_ELEMENTS; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
*element_size = sizeof(ctype); \
|
||||
*element_kind = TYPE##_ELEMENTS; \
|
||||
return;
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -3168,8 +3168,8 @@ static void ForFixedTypedArray(ExternalArrayType array_type,
|
||||
JSFunction* GetTypedArrayFun(ExternalArrayType type, Isolate* isolate) {
|
||||
Context* native_context = isolate->context()->native_context();
|
||||
switch (type) {
|
||||
#define TYPED_ARRAY_FUN(Type, type, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_FUN(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return native_context->type##_array_fun();
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_FUN)
|
||||
@ -3181,8 +3181,8 @@ JSFunction* GetTypedArrayFun(ExternalArrayType type, Isolate* isolate) {
|
||||
JSFunction* GetTypedArrayFun(ElementsKind elements_kind, Isolate* isolate) {
|
||||
Context* native_context = isolate->context()->native_context();
|
||||
switch (elements_kind) {
|
||||
#define TYPED_ARRAY_FUN(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define TYPED_ARRAY_FUN(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
return native_context->type##_array_fun();
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_FUN)
|
||||
|
@ -2749,8 +2749,8 @@ namespace {
|
||||
|
||||
Heap::RootListIndex RootIndexForFixedTypedArray(ExternalArrayType array_type) {
|
||||
switch (array_type) {
|
||||
#define ARRAY_TYPE_TO_ROOT_INDEX(Type, type, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define ARRAY_TYPE_TO_ROOT_INDEX(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return Heap::kFixed##Type##ArrayMapRootIndex;
|
||||
|
||||
TYPED_ARRAYS(ARRAY_TYPE_TO_ROOT_INDEX)
|
||||
@ -2761,8 +2761,8 @@ Heap::RootListIndex RootIndexForFixedTypedArray(ExternalArrayType array_type) {
|
||||
|
||||
Heap::RootListIndex RootIndexForFixedTypedArray(ElementsKind elements_kind) {
|
||||
switch (elements_kind) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
return Heap::kFixed##Type##ArrayMapRootIndex;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
default:
|
||||
@ -2774,8 +2774,8 @@ Heap::RootListIndex RootIndexForFixedTypedArray(ElementsKind elements_kind) {
|
||||
Heap::RootListIndex RootIndexForEmptyFixedTypedArray(
|
||||
ElementsKind elements_kind) {
|
||||
switch (elements_kind) {
|
||||
#define ELEMENT_KIND_TO_ROOT_INDEX(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define ELEMENT_KIND_TO_ROOT_INDEX(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
return Heap::kEmptyFixed##Type##ArrayRootIndex;
|
||||
|
||||
TYPED_ARRAYS(ELEMENT_KIND_TO_ROOT_INDEX)
|
||||
|
@ -409,8 +409,8 @@ bool Heap::CreateInitialMaps() {
|
||||
ALLOCATE_VARSIZE_MAP(SMALL_ORDERED_HASH_MAP_TYPE, small_ordered_hash_map)
|
||||
ALLOCATE_VARSIZE_MAP(SMALL_ORDERED_HASH_SET_TYPE, small_ordered_hash_set)
|
||||
|
||||
#define ALLOCATE_FIXED_TYPED_ARRAY_MAP(Type, type, TYPE, ctype, size) \
|
||||
ALLOCATE_VARSIZE_MAP(FIXED_##TYPE##_ARRAY_TYPE, fixed_##type##_array)
|
||||
#define ALLOCATE_FIXED_TYPED_ARRAY_MAP(Type, type, TYPE, ctype) \
|
||||
ALLOCATE_VARSIZE_MAP(FIXED_##TYPE##_ARRAY_TYPE, fixed_##type##_array)
|
||||
|
||||
TYPED_ARRAYS(ALLOCATE_FIXED_TYPED_ARRAY_MAP)
|
||||
#undef ALLOCATE_FIXED_TYPED_ARRAY_MAP
|
||||
@ -556,7 +556,7 @@ bool Heap::CreateInitialMaps() {
|
||||
set_empty_property_array(PropertyArray::cast(obj));
|
||||
}
|
||||
|
||||
#define ALLOCATE_EMPTY_FIXED_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
|
||||
#define ALLOCATE_EMPTY_FIXED_TYPED_ARRAY(Type, type, TYPE, ctype) \
|
||||
{ \
|
||||
FixedTypedArrayBase* obj; \
|
||||
if (!AllocateEmptyFixedTypedArray(kExternal##Type##Array).To(&obj)) \
|
||||
|
@ -256,7 +256,7 @@ namespace {
|
||||
|
||||
bool IsTypedArrayFunctionInAnyContext(Isolate* isolate, JSReceiver* holder) {
|
||||
static uint32_t context_slots[] = {
|
||||
#define TYPED_ARRAY_CONTEXT_SLOTS(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CONTEXT_SLOTS(Type, type, TYPE, ctype) \
|
||||
Context::TYPE##_ARRAY_FUN_INDEX,
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CONTEXT_SLOTS)
|
||||
|
@ -794,7 +794,7 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) {
|
||||
case BIGINT_TYPE:
|
||||
return ReturnType();
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return Op::template apply<FixedTypedArrayBase::BodyDescriptor>(p1, p2, p3, \
|
||||
p4);
|
||||
|
@ -198,7 +198,7 @@ void HeapObject::HeapObjectVerify(Isolate* isolate) {
|
||||
FeedbackVector::cast(this)->FeedbackVectorVerify(isolate);
|
||||
break;
|
||||
|
||||
#define VERIFY_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
|
||||
#define VERIFY_TYPED_ARRAY(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
Fixed##Type##Array::cast(this)->FixedTypedArrayVerify(isolate); \
|
||||
break;
|
||||
@ -1935,16 +1935,16 @@ void JSObject::IncrementSpillStatistics(Isolate* isolate,
|
||||
break;
|
||||
}
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
{ info->number_of_objects_with_fast_elements_++;
|
||||
FixedArrayBase* e = FixedArrayBase::cast(elements());
|
||||
info->number_of_fast_used_elements_ += e->length();
|
||||
break;
|
||||
}
|
||||
{
|
||||
info->number_of_objects_with_fast_elements_++;
|
||||
FixedArrayBase* e = FixedArrayBase::cast(elements());
|
||||
info->number_of_fast_used_elements_ += e->length();
|
||||
break;
|
||||
}
|
||||
case DICTIONARY_ELEMENTS:
|
||||
case SLOW_STRING_WRAPPER_ELEMENTS: {
|
||||
NumberDictionary* dict = element_dictionary();
|
||||
|
@ -78,7 +78,7 @@ namespace InstanceTypeChecker {
|
||||
// Define type checkers for classes with single instance type.
|
||||
INSTANCE_TYPE_CHECKERS_SINGLE(INSTANCE_TYPE_CHECKER);
|
||||
|
||||
#define TYPED_ARRAY_INSTANCE_TYPE_CHECKER(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_INSTANCE_TYPE_CHECKER(Type, type, TYPE, ctype) \
|
||||
INSTANCE_TYPE_CHECKER(Fixed##Type##Array, FIXED_##TYPE##_ARRAY_TYPE)
|
||||
TYPED_ARRAYS(TYPED_ARRAY_INSTANCE_TYPE_CHECKER)
|
||||
#undef TYPED_ARRAY_INSTANCE_TYPE_CHECKER
|
||||
@ -123,7 +123,7 @@ V8_INLINE bool IsJSObject(InstanceType instance_type) {
|
||||
// pointer rather than looking up the instance type.
|
||||
INSTANCE_TYPE_CHECKERS(TYPE_CHECKER);
|
||||
|
||||
#define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_TYPE_CHECKER(Type, type, TYPE, ctype) \
|
||||
TYPE_CHECKER(Fixed##Type##Array)
|
||||
TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER)
|
||||
#undef TYPED_ARRAY_TYPE_CHECKER
|
||||
@ -2639,7 +2639,7 @@ bool JSObject::HasFixedTypedArrayElements() {
|
||||
return map()->has_fixed_typed_array_elements();
|
||||
}
|
||||
|
||||
#define FIXED_TYPED_ELEMENTS_CHECK(Type, type, TYPE, ctype, size) \
|
||||
#define FIXED_TYPED_ELEMENTS_CHECK(Type, type, TYPE, ctype) \
|
||||
bool JSObject::HasFixed##Type##Elements() { \
|
||||
HeapObject* array = elements(); \
|
||||
DCHECK_NOT_NULL(array); \
|
||||
|
@ -162,12 +162,12 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
|
||||
FreeSpace::cast(this)->FreeSpacePrint(os);
|
||||
break;
|
||||
|
||||
#define PRINT_FIXED_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
|
||||
case Fixed##Type##Array::kInstanceType: \
|
||||
Fixed##Type##Array::cast(this)->FixedTypedArrayPrint(os); \
|
||||
#define PRINT_FIXED_TYPED_ARRAY(Type, type, TYPE, ctype) \
|
||||
case Fixed##Type##Array::kInstanceType: \
|
||||
Fixed##Type##Array::cast(this)->FixedTypedArrayPrint(os); \
|
||||
break;
|
||||
|
||||
TYPED_ARRAYS(PRINT_FIXED_TYPED_ARRAY)
|
||||
TYPED_ARRAYS(PRINT_FIXED_TYPED_ARRAY)
|
||||
#undef PRINT_FIXED_TYPED_ARRAY
|
||||
|
||||
case FILLER_TYPE:
|
||||
@ -580,10 +580,10 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
|
||||
break;
|
||||
}
|
||||
|
||||
#define PRINT_ELEMENTS(Type, type, TYPE, elementType, size) \
|
||||
case TYPE##_ELEMENTS: { \
|
||||
DoPrintElements<Fixed##Type##Array>(os, elements()); \
|
||||
break; \
|
||||
#define PRINT_ELEMENTS(Type, type, TYPE, elementType) \
|
||||
case TYPE##_ELEMENTS: { \
|
||||
DoPrintElements<Fixed##Type##Array>(os, elements()); \
|
||||
break; \
|
||||
}
|
||||
TYPED_ARRAYS(PRINT_ELEMENTS)
|
||||
#undef PRINT_ELEMENTS
|
||||
|
@ -3458,13 +3458,13 @@ void HeapObject::HeapObjectShortPrint(std::ostream& os) { // NOLINT
|
||||
case FREE_SPACE_TYPE:
|
||||
os << "<FreeSpace[" << FreeSpace::cast(this)->size() << "]>";
|
||||
break;
|
||||
#define TYPED_ARRAY_SHORT_PRINT(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_SHORT_PRINT(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
os << "<Fixed" #Type "Array[" << Fixed##Type##Array::cast(this)->length() \
|
||||
<< "]>"; \
|
||||
break;
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_SHORT_PRINT)
|
||||
TYPED_ARRAYS(TYPED_ARRAY_SHORT_PRINT)
|
||||
#undef TYPED_ARRAY_SHORT_PRINT
|
||||
|
||||
case PRE_PARSED_SCOPE_DATA_TYPE: {
|
||||
@ -3701,7 +3701,7 @@ String* JSReceiver::class_name() {
|
||||
if (IsJSSet()) return roots.Set_string();
|
||||
if (IsJSSetIterator()) return roots.SetIterator_string();
|
||||
if (IsJSTypedArray()) {
|
||||
#define SWITCH_KIND(Type, type, TYPE, ctype, size) \
|
||||
#define SWITCH_KIND(Type, type, TYPE, ctype) \
|
||||
if (map()->elements_kind() == TYPE##_ELEMENTS) { \
|
||||
return roots.Type##Array_string(); \
|
||||
}
|
||||
@ -8095,9 +8095,9 @@ bool JSObject::ReferencesObject(Object* obj) {
|
||||
switch (kind) {
|
||||
// Raw pixels and external arrays do not reference other
|
||||
// objects.
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
break;
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
break;
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -8850,8 +8850,7 @@ bool JSObject::HasEnumerableElements() {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -16146,10 +16145,9 @@ int JSObject::GetFastElementsUsage() {
|
||||
case SLOW_STRING_WRAPPER_ELEMENTS:
|
||||
case DICTIONARY_ELEMENTS:
|
||||
case NO_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -17168,9 +17166,9 @@ Maybe<bool> JSTypedArray::DefineOwnProperty(Isolate* isolate,
|
||||
|
||||
ExternalArrayType JSTypedArray::type() {
|
||||
switch (elements()->map()->instance_type()) {
|
||||
#define INSTANCE_TYPE_TO_ARRAY_TYPE(Type, type, TYPE, ctype, size) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return kExternal##Type##Array;
|
||||
#define INSTANCE_TYPE_TO_ARRAY_TYPE(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return kExternal##Type##Array;
|
||||
|
||||
TYPED_ARRAYS(INSTANCE_TYPE_TO_ARRAY_TYPE)
|
||||
#undef INSTANCE_TYPE_TO_ARRAY_TYPE
|
||||
@ -17183,9 +17181,9 @@ ExternalArrayType JSTypedArray::type() {
|
||||
|
||||
size_t JSTypedArray::element_size() {
|
||||
switch (elements()->map()->instance_type()) {
|
||||
#define INSTANCE_TYPE_TO_ELEMENT_SIZE(Type, type, TYPE, ctype, size) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return size;
|
||||
#define INSTANCE_TYPE_TO_ELEMENT_SIZE(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
return sizeof(ctype);
|
||||
|
||||
TYPED_ARRAYS(INSTANCE_TYPE_TO_ELEMENT_SIZE)
|
||||
#undef INSTANCE_TYPE_TO_ELEMENT_SIZE
|
||||
|
@ -474,9 +474,9 @@ void* FixedTypedArrayBase::DataPtr() {
|
||||
int FixedTypedArrayBase::ElementSize(InstanceType type) {
|
||||
int element_size;
|
||||
switch (type) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
element_size = size; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case FIXED_##TYPE##_ARRAY_TYPE: \
|
||||
element_size = sizeof(ctype); \
|
||||
break;
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
|
@ -707,18 +707,18 @@ class FixedTypedArray : public FixedTypedArrayBase {
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray);
|
||||
};
|
||||
|
||||
#define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \
|
||||
STATIC_ASSERT(size <= FixedTypedArrayBase::kMaxElementSize); \
|
||||
class Type##ArrayTraits { \
|
||||
public: /* NOLINT */ \
|
||||
typedef elementType ElementType; \
|
||||
static const InstanceType kInstanceType = FIXED_##TYPE##_ARRAY_TYPE; \
|
||||
static const char* Designator() { return #type " array"; } \
|
||||
static inline Handle<Object> ToHandle(Isolate* isolate, \
|
||||
elementType scalar); \
|
||||
static inline elementType defaultValue(); \
|
||||
}; \
|
||||
\
|
||||
#define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType) \
|
||||
STATIC_ASSERT(sizeof(elementType) <= FixedTypedArrayBase::kMaxElementSize); \
|
||||
class Type##ArrayTraits { \
|
||||
public: /* NOLINT */ \
|
||||
typedef elementType ElementType; \
|
||||
static const InstanceType kInstanceType = FIXED_##TYPE##_ARRAY_TYPE; \
|
||||
static const char* Designator() { return #type " array"; } \
|
||||
static inline Handle<Object> ToHandle(Isolate* isolate, \
|
||||
elementType scalar); \
|
||||
static inline elementType defaultValue(); \
|
||||
}; \
|
||||
\
|
||||
typedef FixedTypedArray<Type##ArrayTraits> Fixed##Type##Array;
|
||||
|
||||
TYPED_ARRAYS(FIXED_TYPED_ARRAY_TRAITS)
|
||||
|
@ -109,7 +109,6 @@ ATOMIC_OPS(uint16_t, 16, short) /* NOLINT(runtime/int) */
|
||||
ATOMIC_OPS(int32_t, 32, long) /* NOLINT(runtime/int) */
|
||||
ATOMIC_OPS(uint32_t, 32, long) /* NOLINT(runtime/int) */
|
||||
|
||||
#undef ATOMIC_OPS_INTEGER
|
||||
#undef ATOMIC_OPS
|
||||
|
||||
#undef InterlockedExchange32
|
||||
@ -241,14 +240,14 @@ inline Object* DoXor(Isolate* isolate, void* buffer, size_t index,
|
||||
} // anonymous namespace
|
||||
|
||||
// Duplicated from objects.h
|
||||
// V has parameters (Type, type, TYPE, C type, element_size)
|
||||
#define INTEGER_TYPED_ARRAYS(V) \
|
||||
V(Uint8, uint8, UINT8, uint8_t, 1) \
|
||||
V(Int8, int8, INT8, int8_t, 1) \
|
||||
V(Uint16, uint16, UINT16, uint16_t, 2) \
|
||||
V(Int16, int16, INT16, int16_t, 2) \
|
||||
V(Uint32, uint32, UINT32, uint32_t, 4) \
|
||||
V(Int32, int32, INT32, int32_t, 4)
|
||||
// V has parameters (Type, type, TYPE, C type)
|
||||
#define INTEGER_TYPED_ARRAYS(V) \
|
||||
V(Uint8, uint8, UINT8, uint8_t) \
|
||||
V(Int8, int8, INT8, int8_t) \
|
||||
V(Uint16, uint16, UINT16, uint16_t) \
|
||||
V(Int16, int16, INT16, int16_t) \
|
||||
V(Uint32, uint32, UINT32, uint32_t) \
|
||||
V(Int32, int32, INT32, int32_t)
|
||||
|
||||
RUNTIME_FUNCTION(Runtime_AtomicsExchange) {
|
||||
HandleScope scope(isolate);
|
||||
@ -263,8 +262,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsExchange) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoExchange<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -291,8 +290,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsCompareExchange) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoCompareExchange<ctype>(isolate, source, index, oldobj, newobj);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -320,8 +319,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsAdd) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoAdd<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -349,8 +348,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsSub) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoSub<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -378,8 +377,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsAnd) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoAnd<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -407,8 +406,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsOr) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoOr<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -436,8 +435,8 @@ RUNTIME_FUNCTION(Runtime_AtomicsXor) {
|
||||
NumberToSize(sta->byte_offset());
|
||||
|
||||
switch (sta->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
return DoXor<ctype>(isolate, source, index, value);
|
||||
|
||||
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
@ -450,5 +449,7 @@ RUNTIME_FUNCTION(Runtime_AtomicsXor) {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
#undef INTEGER_TYPED_ARRAYS
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -121,8 +121,8 @@ namespace {
|
||||
|
||||
const char* ElementsKindToType(ElementsKind fixed_elements_kind) {
|
||||
switch (fixed_elements_kind) {
|
||||
#define ELEMENTS_KIND_CASE(Type, type, TYPE, ctype, size) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
#define ELEMENTS_KIND_CASE(Type, type, TYPE, ctype) \
|
||||
case TYPE##_ELEMENTS: \
|
||||
return #Type "Array";
|
||||
|
||||
TYPED_ARRAYS(ELEMENTS_KIND_CASE)
|
||||
|
@ -196,7 +196,7 @@ MaybeHandle<JSObject> JSObjectWalkVisitor<ContextObject>::StructureWalk(
|
||||
UNREACHABLE();
|
||||
break;
|
||||
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS:
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
@ -866,11 +866,10 @@ ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION(FastProperties)
|
||||
|
||||
#undef ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION
|
||||
|
||||
|
||||
#define FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION(Type, type, TYPE, ctype, s) \
|
||||
RUNTIME_FUNCTION(Runtime_HasFixed##Type##Elements) { \
|
||||
CONVERT_ARG_CHECKED(JSObject, obj, 0); \
|
||||
return isolate->heap()->ToBoolean(obj->HasFixed##Type##Elements()); \
|
||||
#define FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION(Type, type, TYPE, ctype) \
|
||||
RUNTIME_FUNCTION(Runtime_HasFixed##Type##Elements) { \
|
||||
CONVERT_ARG_CHECKED(JSObject, obj, 0); \
|
||||
return isolate->heap()->ToBoolean(obj->HasFixed##Type##Elements()); \
|
||||
}
|
||||
|
||||
TYPED_ARRAYS(FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION)
|
||||
|
@ -125,7 +125,7 @@ RUNTIME_FUNCTION(Runtime_TypedArraySortFast) {
|
||||
Handle<FixedTypedArrayBase> elements(
|
||||
FixedTypedArrayBase::cast(array->elements()), isolate);
|
||||
switch (array->type()) {
|
||||
#define TYPED_ARRAY_SORT(Type, type, TYPE, ctype, size) \
|
||||
#define TYPED_ARRAY_SORT(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: { \
|
||||
ctype* data = static_cast<ctype*>(elements->DataPtr()); \
|
||||
if (kExternal##Type##Array == kExternalFloat64Array || \
|
||||
|
@ -850,9 +850,9 @@ Maybe<bool> ValueSerializer::WriteJSArrayBufferView(JSArrayBufferView* view) {
|
||||
ArrayBufferViewTag tag = ArrayBufferViewTag::kInt8Array;
|
||||
if (view->IsJSTypedArray()) {
|
||||
switch (JSTypedArray::cast(view)->type()) {
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case kExternal##Type##Array: \
|
||||
tag = ArrayBufferViewTag::k##Type##Array; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case kExternal##Type##Array: \
|
||||
tag = ArrayBufferViewTag::k##Type##Array; \
|
||||
break;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
@ -1731,10 +1731,10 @@ MaybeHandle<JSArrayBufferView> ValueDeserializer::ReadJSArrayBufferView(
|
||||
AddObjectWithID(id, data_view);
|
||||
return data_view;
|
||||
}
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
|
||||
case ArrayBufferViewTag::k##Type##Array: \
|
||||
external_array_type = kExternal##Type##Array; \
|
||||
element_size = size; \
|
||||
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
|
||||
case ArrayBufferViewTag::k##Type##Array: \
|
||||
external_array_type = kExternal##Type##Array; \
|
||||
element_size = sizeof(ctype); \
|
||||
break;
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CASE)
|
||||
#undef TYPED_ARRAY_CASE
|
||||
|
@ -1148,7 +1148,7 @@ TEST(SubclassTypedArrayBuiltin) {
|
||||
CcTest::InitializeVM();
|
||||
v8::HandleScope scope(CcTest::isolate());
|
||||
|
||||
#define TYPED_ARRAY_TEST(Type, type, TYPE, elementType, size) \
|
||||
#define TYPED_ARRAY_TEST(Type, type, TYPE, elementType) \
|
||||
TestSubclassBuiltin("A" #Type, JS_TYPED_ARRAY_TYPE, #Type "Array", "42");
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_TEST)
|
||||
|
@ -91,7 +91,7 @@ void TestSpeciesProtector(char* code,
|
||||
v8::Isolate::CreateParams create_params;
|
||||
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
|
||||
std::string typed_array_constructors[] = {
|
||||
#define TYPED_ARRAY_CTOR(Type, type, TYPE, ctype, size) #Type "Array",
|
||||
#define TYPED_ARRAY_CTOR(Type, type, TYPE, ctype) #Type "Array",
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_CTOR)
|
||||
#undef TYPED_ARRAY_CTOR
|
||||
|
@ -1689,12 +1689,12 @@ TEST_F(ValueSerializerTest, RoundTripTypedArray) {
|
||||
// Check that the right type comes out the other side for every kind of typed
|
||||
// array.
|
||||
Local<Value> value;
|
||||
#define TYPED_ARRAY_ROUND_TRIP_TEST(Type, type, TYPE, ctype, size) \
|
||||
value = RoundTripTest("new " #Type "Array(2)"); \
|
||||
ASSERT_TRUE(value->Is##Type##Array()); \
|
||||
EXPECT_EQ(2u * size, TypedArray::Cast(*value)->ByteLength()); \
|
||||
EXPECT_EQ(2u, TypedArray::Cast(*value)->Length()); \
|
||||
ExpectScriptTrue("Object.getPrototypeOf(result) === " #Type \
|
||||
#define TYPED_ARRAY_ROUND_TRIP_TEST(Type, type, TYPE, ctype) \
|
||||
value = RoundTripTest("new " #Type "Array(2)"); \
|
||||
ASSERT_TRUE(value->Is##Type##Array()); \
|
||||
EXPECT_EQ(2u * sizeof(ctype), TypedArray::Cast(*value)->ByteLength()); \
|
||||
EXPECT_EQ(2u, TypedArray::Cast(*value)->Length()); \
|
||||
ExpectScriptTrue("Object.getPrototypeOf(result) === " #Type \
|
||||
"Array.prototype");
|
||||
|
||||
TYPED_ARRAYS(TYPED_ARRAY_ROUND_TRIP_TEST)
|
||||
|
Loading…
Reference in New Issue
Block a user