Chromium Code Reviews| Index: test/cctest/test-api.cc |
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
| index 97c5fba8a57a3f4e9e73cc8d25d90f153d44dfec..29e3748364c2422e3db2c3ee7cfe7b2a9564b3bd 100644 |
| --- a/test/cctest/test-api.cc |
| +++ b/test/cctest/test-api.cc |
| @@ -2553,6 +2553,14 @@ class ScopedArrayBufferContents { |
| const v8::ArrayBuffer::Contents contents_; |
| }; |
| +template <typename T> |
| +static void CheckInternalFields(v8::Handle<T> value) { |
|
titzer
2013/07/05 08:09:57
rename to CheckInternalFieldsAreZero?
Dmitry Lomov (no reviews)
2013/07/05 09:56:02
Done.
|
| + CHECK_EQ(T::kInternalFieldCount, value->InternalFieldCount()); |
| + for (int i = 0; i < value->InternalFieldCount(); i++) { |
| + CHECK_EQ(0, value->GetInternalField(i)->Int32Value()); |
| + } |
| +} |
| + |
| THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { |
| i::FLAG_harmony_array_buffer = true; |
| @@ -2563,6 +2571,7 @@ THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { |
| v8::HandleScope handle_scope(isolate); |
| Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(1024); |
| + CheckInternalFields<v8::ArrayBuffer>(ab); |
|
titzer
2013/07/05 08:09:57
Is C++ not able to infer the type argument <v8::Ar
Dmitry Lomov (no reviews)
2013/07/05 09:56:02
Done.
|
| CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); |
| CHECK(!ab->IsExternal()); |
| HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| @@ -2607,6 +2616,7 @@ THREADED_TEST(ArrayBuffer_JSInternalToExternal) { |
| "u8_a[0] = 0xAA;" |
| "u8_a[1] = 0xFF; u8_a.buffer"); |
| Local<v8::ArrayBuffer> ab1 = Local<v8::ArrayBuffer>::Cast(result); |
| + CheckInternalFields<v8::ArrayBuffer>(ab1); |
| CHECK_EQ(2, static_cast<int>(ab1->ByteLength())); |
| CHECK(!ab1->IsExternal()); |
| ScopedArrayBufferContents ab1_contents(ab1->Externalize()); |
| @@ -2647,6 +2657,7 @@ THREADED_TEST(ArrayBuffer_External) { |
| i::ScopedVector<uint8_t> my_data(100); |
| memset(my_data.start(), 0, 100); |
| Local<v8::ArrayBuffer> ab3 = v8::ArrayBuffer::New(my_data.start(), 100); |
| + CheckInternalFields<v8::ArrayBuffer>(ab3); |
| CHECK_EQ(100, static_cast<int>(ab3->ByteLength())); |
| CHECK(ab3->IsExternal()); |
| @@ -2699,6 +2710,7 @@ static Handle<TypedArray> CreateAndCheck(Handle<v8::ArrayBuffer> ab, |
| int byteOffset, |
| int length) { |
| v8::Handle<TypedArray> ta = TypedArray::New(ab, byteOffset, length); |
| + CheckInternalFields<v8::ArrayBufferView>(ta); |
| CHECK_EQ(byteOffset, static_cast<int>(ta->ByteOffset())); |
| CHECK_EQ(length, static_cast<int>(ta->Length())); |
| CHECK_EQ(length * kElementSize, static_cast<int>(ta->ByteLength())); |
| @@ -2736,6 +2748,7 @@ THREADED_TEST(ArrayBuffer_NeuteringApi) { |
| CreateAndCheck<v8::Float64Array, 8>(buffer, 8, 127); |
| v8::Handle<v8::DataView> dv = v8::DataView::New(buffer, 1, 1023); |
| + CheckInternalFields<v8::ArrayBufferView>(dv); |
| CHECK_EQ(1, static_cast<int>(dv->ByteOffset())); |
| CHECK_EQ(1023, static_cast<int>(dv->ByteLength())); |
| @@ -15734,6 +15747,7 @@ void TypedArrayTestHelper(v8::ExternalArrayType array_type, |
| backing_store.start(), (kElementCount+2)*sizeof(ElementType)); |
| Local<TypedArray> ta = |
| TypedArray::New(ab, 2*sizeof(ElementType), kElementCount); |
| + CheckInternalFields<v8::ArrayBufferView>(ta); |
| CHECK_EQ(kElementCount, static_cast<int>(ta->Length())); |
| CHECK_EQ(2*sizeof(ElementType), static_cast<int>(ta->ByteOffset())); |
| CHECK_EQ(kElementCount*sizeof(ElementType), |
| @@ -15819,6 +15833,7 @@ THREADED_TEST(DataView) { |
| backing_store.start(), 2 + kSize); |
| Local<v8::DataView> dv = |
| v8::DataView::New(ab, 2, kSize); |
| + CheckInternalFields<v8::ArrayBufferView>(dv); |
| CHECK_EQ(2, static_cast<int>(dv->ByteOffset())); |
| CHECK_EQ(kSize, static_cast<int>(dv->ByteLength())); |
| CHECK_EQ(ab, dv->Buffer()); |
| @@ -15838,6 +15853,7 @@ THREADED_TEST(DataView) { |
| "new " #View "(ab)"); \ |
| CHECK(result->IsArrayBufferView()); \ |
| CHECK(result->Is##View()); \ |
| + CheckInternalFields<v8::ArrayBufferView>(result.As<v8::View>()); \ |
| } |
| IS_ARRAY_BUFFER_VIEW_TEST(Uint8Array) |