Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: test/cctest/test-api.cc

Issue 145133013: External Array renaming and boilerplate scrapping (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 15687 matching lines...) Expand 10 before | Expand all | Expand 10 after
15698 } 15698 }
15699 15699
15700 15700
15701 THREADED_TEST(PixelArray) { 15701 THREADED_TEST(PixelArray) {
15702 LocalContext context; 15702 LocalContext context;
15703 i::Isolate* isolate = CcTest::i_isolate(); 15703 i::Isolate* isolate = CcTest::i_isolate();
15704 i::Factory* factory = isolate->factory(); 15704 i::Factory* factory = isolate->factory();
15705 v8::HandleScope scope(context->GetIsolate()); 15705 v8::HandleScope scope(context->GetIsolate());
15706 const int kElementCount = 260; 15706 const int kElementCount = 260;
15707 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); 15707 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount));
15708 i::Handle<i::ExternalPixelArray> pixels = 15708 i::Handle<i::ExternalUint8ClampedArray> pixels =
15709 i::Handle<i::ExternalPixelArray>::cast( 15709 i::Handle<i::ExternalUint8ClampedArray>::cast(
15710 factory->NewExternalArray(kElementCount, 15710 factory->NewExternalArray(kElementCount,
15711 v8::kExternalPixelArray, 15711 v8::kExternalUint8ClampedArray,
15712 pixel_data)); 15712 pixel_data));
15713 // Force GC to trigger verification. 15713 // Force GC to trigger verification.
15714 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); 15714 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags);
15715 for (int i = 0; i < kElementCount; i++) { 15715 for (int i = 0; i < kElementCount; i++) {
15716 pixels->set(i, i % 256); 15716 pixels->set(i, i % 256);
15717 } 15717 }
15718 // Force GC to trigger verification. 15718 // Force GC to trigger verification.
15719 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); 15719 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags);
15720 for (int i = 0; i < kElementCount; i++) { 15720 for (int i = 0; i < kElementCount; i++) {
15721 CHECK_EQ(i % 256, pixels->get_scalar(i)); 15721 CHECK_EQ(i % 256, pixels->get_scalar(i));
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
16112 } 16112 }
16113 16113
16114 16114
16115 THREADED_TEST(PixelArrayWithInterceptor) { 16115 THREADED_TEST(PixelArrayWithInterceptor) {
16116 LocalContext context; 16116 LocalContext context;
16117 i::Factory* factory = CcTest::i_isolate()->factory(); 16117 i::Factory* factory = CcTest::i_isolate()->factory();
16118 v8::Isolate* isolate = context->GetIsolate(); 16118 v8::Isolate* isolate = context->GetIsolate();
16119 v8::HandleScope scope(isolate); 16119 v8::HandleScope scope(isolate);
16120 const int kElementCount = 260; 16120 const int kElementCount = 260;
16121 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); 16121 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount));
16122 i::Handle<i::ExternalPixelArray> pixels = 16122 i::Handle<i::ExternalUint8ClampedArray> pixels =
16123 i::Handle<i::ExternalPixelArray>::cast( 16123 i::Handle<i::ExternalUint8ClampedArray>::cast(
16124 factory->NewExternalArray(kElementCount, 16124 factory->NewExternalArray(kElementCount,
16125 v8::kExternalPixelArray, 16125 v8::kExternalUint8ClampedArray,
16126 pixel_data)); 16126 pixel_data));
16127 for (int i = 0; i < kElementCount; i++) { 16127 for (int i = 0; i < kElementCount; i++) {
16128 pixels->set(i, i % 256); 16128 pixels->set(i, i % 256);
16129 } 16129 }
16130 v8::Handle<v8::ObjectTemplate> templ = 16130 v8::Handle<v8::ObjectTemplate> templ =
16131 v8::ObjectTemplate::New(context->GetIsolate()); 16131 v8::ObjectTemplate::New(context->GetIsolate());
16132 templ->SetIndexedPropertyHandler(NotHandledIndexedPropertyGetter, 16132 templ->SetIndexedPropertyHandler(NotHandledIndexedPropertyGetter,
16133 NotHandledIndexedPropertySetter); 16133 NotHandledIndexedPropertySetter);
16134 v8::Handle<v8::Object> obj = templ->NewInstance(); 16134 v8::Handle<v8::Object> obj = templ->NewInstance();
16135 obj->SetIndexedPropertiesToPixelData(pixel_data, kElementCount); 16135 obj->SetIndexedPropertiesToPixelData(pixel_data, kElementCount);
16136 context->Global()->Set(v8_str("pixels"), obj); 16136 context->Global()->Set(v8_str("pixels"), obj);
16137 v8::Handle<v8::Value> result = CompileRun("pixels[1]"); 16137 v8::Handle<v8::Value> result = CompileRun("pixels[1]");
16138 CHECK_EQ(1, result->Int32Value()); 16138 CHECK_EQ(1, result->Int32Value());
16139 result = CompileRun("var sum = 0;" 16139 result = CompileRun("var sum = 0;"
16140 "for (var i = 0; i < 8; i++) {" 16140 "for (var i = 0; i < 8; i++) {"
16141 " sum += pixels[i] = pixels[i] = -i;" 16141 " sum += pixels[i] = pixels[i] = -i;"
16142 "}" 16142 "}"
16143 "sum;"); 16143 "sum;");
16144 CHECK_EQ(-28, result->Int32Value()); 16144 CHECK_EQ(-28, result->Int32Value());
16145 result = CompileRun("pixels.hasOwnProperty('1')"); 16145 result = CompileRun("pixels.hasOwnProperty('1')");
16146 CHECK(result->BooleanValue()); 16146 CHECK(result->BooleanValue());
16147 free(pixel_data); 16147 free(pixel_data);
16148 } 16148 }
16149 16149
16150 16150
16151 static int ExternalArrayElementSize(v8::ExternalArrayType array_type) { 16151 static int ExternalArrayElementSize(v8::ExternalArrayType array_type) {
16152 switch (array_type) { 16152 switch (array_type) {
16153 case v8::kExternalByteArray: 16153 case v8::kExternalInt8Array:
16154 case v8::kExternalUnsignedByteArray: 16154 case v8::kExternalUint8Array:
16155 case v8::kExternalPixelArray: 16155 case v8::kExternalUint8ClampedArray:
16156 return 1; 16156 return 1;
16157 break; 16157 break;
16158 case v8::kExternalShortArray: 16158 case v8::kExternalInt16Array:
16159 case v8::kExternalUnsignedShortArray: 16159 case v8::kExternalUint16Array:
16160 return 2; 16160 return 2;
16161 break; 16161 break;
16162 case v8::kExternalIntArray: 16162 case v8::kExternalInt32Array:
16163 case v8::kExternalUnsignedIntArray: 16163 case v8::kExternalUint32Array:
16164 case v8::kExternalFloatArray: 16164 case v8::kExternalFloat32Array:
16165 return 4; 16165 return 4;
16166 break; 16166 break;
16167 case v8::kExternalDoubleArray: 16167 case v8::kExternalFloat64Array:
16168 return 8; 16168 return 8;
16169 break; 16169 break;
16170 default: 16170 default:
16171 UNREACHABLE(); 16171 UNREACHABLE();
16172 return -1; 16172 return -1;
16173 } 16173 }
16174 UNREACHABLE(); 16174 UNREACHABLE();
16175 return -1; 16175 return -1;
16176 } 16176 }
16177 16177
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
16319 element_count); 16319 element_count);
16320 result = CompileRun(test_buf.start()); 16320 result = CompileRun(test_buf.start());
16321 CHECK_EQ(false, result->BooleanValue()); 16321 CHECK_EQ(false, result->BooleanValue());
16322 16322
16323 // Check other boundary conditions, values and operations. 16323 // Check other boundary conditions, values and operations.
16324 result = CompileRun("for (var i = 0; i < 8; i++) {" 16324 result = CompileRun("for (var i = 0; i < 8; i++) {"
16325 " ext_array[7] = undefined;" 16325 " ext_array[7] = undefined;"
16326 "}" 16326 "}"
16327 "ext_array[7];"); 16327 "ext_array[7];");
16328 CHECK_EQ(0, result->Int32Value()); 16328 CHECK_EQ(0, result->Int32Value());
16329 if (array_type == v8::kExternalDoubleArray || 16329 if (array_type == v8::kExternalFloat64Array ||
16330 array_type == v8::kExternalFloatArray) { 16330 array_type == v8::kExternalFloat32Array) {
16331 CHECK_EQ(static_cast<int>(i::OS::nan_value()), 16331 CHECK_EQ(static_cast<int>(i::OS::nan_value()),
16332 static_cast<int>( 16332 static_cast<int>(
16333 jsobj->GetElement(isolate, 7)->ToObjectChecked()->Number())); 16333 jsobj->GetElement(isolate, 7)->ToObjectChecked()->Number()));
16334 } else { 16334 } else {
16335 CheckElementValue(isolate, 0, jsobj, 7); 16335 CheckElementValue(isolate, 0, jsobj, 7);
16336 } 16336 }
16337 16337
16338 result = CompileRun("for (var i = 0; i < 8; i++) {" 16338 result = CompileRun("for (var i = 0; i < 8; i++) {"
16339 " ext_array[6] = '2.3';" 16339 " ext_array[6] = '2.3';"
16340 "}" 16340 "}"
16341 "ext_array[6];"); 16341 "ext_array[6];");
16342 CHECK_EQ(2, result->Int32Value()); 16342 CHECK_EQ(2, result->Int32Value());
16343 CHECK_EQ(2, 16343 CHECK_EQ(2,
16344 static_cast<int>( 16344 static_cast<int>(
16345 jsobj->GetElement(isolate, 6)->ToObjectChecked()->Number())); 16345 jsobj->GetElement(isolate, 6)->ToObjectChecked()->Number()));
16346 16346
16347 if (array_type != v8::kExternalFloatArray && 16347 if (array_type != v8::kExternalFloat32Array &&
16348 array_type != v8::kExternalDoubleArray) { 16348 array_type != v8::kExternalFloat64Array) {
16349 // Though the specification doesn't state it, be explicit about 16349 // Though the specification doesn't state it, be explicit about
16350 // converting NaNs and +/-Infinity to zero. 16350 // converting NaNs and +/-Infinity to zero.
16351 result = CompileRun("for (var i = 0; i < 8; i++) {" 16351 result = CompileRun("for (var i = 0; i < 8; i++) {"
16352 " ext_array[i] = 5;" 16352 " ext_array[i] = 5;"
16353 "}" 16353 "}"
16354 "for (var i = 0; i < 8; i++) {" 16354 "for (var i = 0; i < 8; i++) {"
16355 " ext_array[i] = NaN;" 16355 " ext_array[i] = NaN;"
16356 "}" 16356 "}"
16357 "ext_array[5];"); 16357 "ext_array[5];");
16358 CHECK_EQ(0, result->Int32Value()); 16358 CHECK_EQ(0, result->Int32Value());
16359 CheckElementValue(isolate, 0, jsobj, 5); 16359 CheckElementValue(isolate, 0, jsobj, 5);
16360 16360
16361 result = CompileRun("for (var i = 0; i < 8; i++) {" 16361 result = CompileRun("for (var i = 0; i < 8; i++) {"
16362 " ext_array[i] = 5;" 16362 " ext_array[i] = 5;"
16363 "}" 16363 "}"
16364 "for (var i = 0; i < 8; i++) {" 16364 "for (var i = 0; i < 8; i++) {"
16365 " ext_array[i] = Infinity;" 16365 " ext_array[i] = Infinity;"
16366 "}" 16366 "}"
16367 "ext_array[5];"); 16367 "ext_array[5];");
16368 int expected_value = 16368 int expected_value =
16369 (array_type == v8::kExternalPixelArray) ? 255 : 0; 16369 (array_type == v8::kExternalUint8ClampedArray) ? 255 : 0;
16370 CHECK_EQ(expected_value, result->Int32Value()); 16370 CHECK_EQ(expected_value, result->Int32Value());
16371 CheckElementValue(isolate, expected_value, jsobj, 5); 16371 CheckElementValue(isolate, expected_value, jsobj, 5);
16372 16372
16373 result = CompileRun("for (var i = 0; i < 8; i++) {" 16373 result = CompileRun("for (var i = 0; i < 8; i++) {"
16374 " ext_array[i] = 5;" 16374 " ext_array[i] = 5;"
16375 "}" 16375 "}"
16376 "for (var i = 0; i < 8; i++) {" 16376 "for (var i = 0; i < 8; i++) {"
16377 " ext_array[i] = -Infinity;" 16377 " ext_array[i] = -Infinity;"
16378 "}" 16378 "}"
16379 "ext_array[5];"); 16379 "ext_array[5];");
16380 CHECK_EQ(0, result->Int32Value()); 16380 CHECK_EQ(0, result->Int32Value());
16381 CheckElementValue(isolate, 0, jsobj, 5); 16381 CheckElementValue(isolate, 0, jsobj, 5);
16382 16382
16383 // Check truncation behavior of integral arrays. 16383 // Check truncation behavior of integral arrays.
16384 const char* unsigned_data = 16384 const char* unsigned_data =
16385 "var source_data = [0.6, 10.6];" 16385 "var source_data = [0.6, 10.6];"
16386 "var expected_results = [0, 10];"; 16386 "var expected_results = [0, 10];";
16387 const char* signed_data = 16387 const char* signed_data =
16388 "var source_data = [0.6, 10.6, -0.6, -10.6];" 16388 "var source_data = [0.6, 10.6, -0.6, -10.6];"
16389 "var expected_results = [0, 10, 0, -10];"; 16389 "var expected_results = [0, 10, 0, -10];";
16390 const char* pixel_data = 16390 const char* pixel_data =
16391 "var source_data = [0.6, 10.6];" 16391 "var source_data = [0.6, 10.6];"
16392 "var expected_results = [1, 11];"; 16392 "var expected_results = [1, 11];";
16393 bool is_unsigned = 16393 bool is_unsigned =
16394 (array_type == v8::kExternalUnsignedByteArray || 16394 (array_type == v8::kExternalUint8Array ||
16395 array_type == v8::kExternalUnsignedShortArray || 16395 array_type == v8::kExternalUint16Array ||
16396 array_type == v8::kExternalUnsignedIntArray); 16396 array_type == v8::kExternalUint32Array);
16397 bool is_pixel_data = array_type == v8::kExternalPixelArray; 16397 bool is_pixel_data = array_type == v8::kExternalUint8ClampedArray;
16398 16398
16399 i::OS::SNPrintF(test_buf, 16399 i::OS::SNPrintF(test_buf,
16400 "%s" 16400 "%s"
16401 "var all_passed = true;" 16401 "var all_passed = true;"
16402 "for (var i = 0; i < source_data.length; i++) {" 16402 "for (var i = 0; i < source_data.length; i++) {"
16403 " for (var j = 0; j < 8; j++) {" 16403 " for (var j = 0; j < 8; j++) {"
16404 " ext_array[j] = source_data[i];" 16404 " ext_array[j] = source_data[i];"
16405 " }" 16405 " }"
16406 " all_passed = all_passed &&" 16406 " all_passed = all_passed &&"
16407 " (ext_array[5] == expected_results[i]);" 16407 " (ext_array[5] == expected_results[i]);"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
16517 16517
16518 ObjectWithExternalArrayTestHelper<FixedTypedArrayClass, ElementType>( 16518 ObjectWithExternalArrayTestHelper<FixedTypedArrayClass, ElementType>(
16519 context.local(), obj, kElementCount, array_type, 16519 context.local(), obj, kElementCount, array_type,
16520 static_cast<int64_t>(low), 16520 static_cast<int64_t>(low),
16521 static_cast<int64_t>(high)); 16521 static_cast<int64_t>(high));
16522 } 16522 }
16523 16523
16524 16524
16525 THREADED_TEST(FixedUint8Array) { 16525 THREADED_TEST(FixedUint8Array) {
16526 FixedTypedArrayTestHelper<i::FixedUint8Array, i::UINT8_ELEMENTS, uint8_t>( 16526 FixedTypedArrayTestHelper<i::FixedUint8Array, i::UINT8_ELEMENTS, uint8_t>(
16527 v8::kExternalUnsignedByteArray, 16527 v8::kExternalUint8Array,
16528 0x0, 0xFF); 16528 0x0, 0xFF);
16529 } 16529 }
16530 16530
16531 16531
16532 THREADED_TEST(FixedUint8ClampedArray) { 16532 THREADED_TEST(FixedUint8ClampedArray) {
16533 FixedTypedArrayTestHelper<i::FixedUint8ClampedArray, 16533 FixedTypedArrayTestHelper<i::FixedUint8ClampedArray,
16534 i::UINT8_CLAMPED_ELEMENTS, uint8_t>( 16534 i::UINT8_CLAMPED_ELEMENTS, uint8_t>(
16535 v8::kExternalPixelArray, 16535 v8::kExternalUint8ClampedArray,
16536 0x0, 0xFF); 16536 0x0, 0xFF);
16537 } 16537 }
16538 16538
16539 16539
16540 THREADED_TEST(FixedInt8Array) { 16540 THREADED_TEST(FixedInt8Array) {
16541 FixedTypedArrayTestHelper<i::FixedInt8Array, i::INT8_ELEMENTS, int8_t>( 16541 FixedTypedArrayTestHelper<i::FixedInt8Array, i::INT8_ELEMENTS, int8_t>(
16542 v8::kExternalByteArray, 16542 v8::kExternalInt8Array,
16543 -0x80, 0x7F); 16543 -0x80, 0x7F);
16544 } 16544 }
16545 16545
16546 16546
16547 THREADED_TEST(FixedUint16Array) { 16547 THREADED_TEST(FixedUint16Array) {
16548 FixedTypedArrayTestHelper<i::FixedUint16Array, i::UINT16_ELEMENTS, uint16_t>( 16548 FixedTypedArrayTestHelper<i::FixedUint16Array, i::UINT16_ELEMENTS, uint16_t>(
16549 v8::kExternalUnsignedShortArray, 16549 v8::kExternalUint16Array,
16550 0x0, 0xFFFF); 16550 0x0, 0xFFFF);
16551 } 16551 }
16552 16552
16553 16553
16554 THREADED_TEST(FixedInt16Array) { 16554 THREADED_TEST(FixedInt16Array) {
16555 FixedTypedArrayTestHelper<i::FixedInt16Array, i::INT16_ELEMENTS, int16_t>( 16555 FixedTypedArrayTestHelper<i::FixedInt16Array, i::INT16_ELEMENTS, int16_t>(
16556 v8::kExternalShortArray, 16556 v8::kExternalInt16Array,
16557 -0x8000, 0x7FFF); 16557 -0x8000, 0x7FFF);
16558 } 16558 }
16559 16559
16560 16560
16561 THREADED_TEST(FixedUint32Array) { 16561 THREADED_TEST(FixedUint32Array) {
16562 FixedTypedArrayTestHelper<i::FixedUint32Array, i::UINT32_ELEMENTS, uint32_t>( 16562 FixedTypedArrayTestHelper<i::FixedUint32Array, i::UINT32_ELEMENTS, uint32_t>(
16563 v8::kExternalUnsignedIntArray, 16563 v8::kExternalUint32Array,
16564 0x0, UINT_MAX); 16564 0x0, UINT_MAX);
16565 } 16565 }
16566 16566
16567 16567
16568 THREADED_TEST(FixedInt32Array) { 16568 THREADED_TEST(FixedInt32Array) {
16569 FixedTypedArrayTestHelper<i::FixedInt32Array, i::INT32_ELEMENTS, int32_t>( 16569 FixedTypedArrayTestHelper<i::FixedInt32Array, i::INT32_ELEMENTS, int32_t>(
16570 v8::kExternalIntArray, 16570 v8::kExternalInt32Array,
16571 INT_MIN, INT_MAX); 16571 INT_MIN, INT_MAX);
16572 } 16572 }
16573 16573
16574 16574
16575 THREADED_TEST(FixedFloat32Array) { 16575 THREADED_TEST(FixedFloat32Array) {
16576 FixedTypedArrayTestHelper<i::FixedFloat32Array, i::FLOAT32_ELEMENTS, float>( 16576 FixedTypedArrayTestHelper<i::FixedFloat32Array, i::FLOAT32_ELEMENTS, float>(
16577 v8::kExternalFloatArray, 16577 v8::kExternalFloat32Array,
16578 -500, 500); 16578 -500, 500);
16579 } 16579 }
16580 16580
16581 16581
16582 THREADED_TEST(FixedFloat64Array) { 16582 THREADED_TEST(FixedFloat64Array) {
16583 FixedTypedArrayTestHelper<i::FixedFloat64Array, i::FLOAT64_ELEMENTS, float>( 16583 FixedTypedArrayTestHelper<i::FixedFloat64Array, i::FLOAT64_ELEMENTS, float>(
16584 v8::kExternalDoubleArray, 16584 v8::kExternalFloat64Array,
16585 -500, 500); 16585 -500, 500);
16586 } 16586 }
16587 16587
16588 16588
16589 template <class ExternalArrayClass, class ElementType> 16589 template <class ExternalArrayClass, class ElementType>
16590 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, 16590 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
16591 int64_t low, 16591 int64_t low,
16592 int64_t high) { 16592 int64_t high) {
16593 LocalContext context; 16593 LocalContext context;
16594 i::Isolate* isolate = CcTest::i_isolate(); 16594 i::Isolate* isolate = CcTest::i_isolate();
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
16796 v8::Int32::New(context->GetIsolate(), 256)); 16796 v8::Int32::New(context->GetIsolate(), 256));
16797 context->Global()->Set(v8_str("ext_array"), obj2); 16797 context->Global()->Set(v8_str("ext_array"), obj2);
16798 result = CompileRun("ext_array[''] = function() {return 1503;};" 16798 result = CompileRun("ext_array[''] = function() {return 1503;};"
16799 "ext_array['']();"); 16799 "ext_array['']();");
16800 } 16800 }
16801 16801
16802 free(array_data); 16802 free(array_data);
16803 } 16803 }
16804 16804
16805 16805
16806 THREADED_TEST(ExternalByteArray) { 16806 THREADED_TEST(ExternalInt8Array) {
16807 ExternalArrayTestHelper<i::ExternalByteArray, int8_t>( 16807 ExternalArrayTestHelper<i::ExternalInt8Array, int8_t>(
16808 v8::kExternalByteArray, 16808 v8::kExternalInt8Array,
16809 -128, 16809 -128,
16810 127); 16810 127);
16811 } 16811 }
16812 16812
16813 16813
16814 THREADED_TEST(ExternalUnsignedByteArray) { 16814 THREADED_TEST(ExternalUint8Array) {
16815 ExternalArrayTestHelper<i::ExternalUnsignedByteArray, uint8_t>( 16815 ExternalArrayTestHelper<i::ExternalUint8Array, uint8_t>(
16816 v8::kExternalUnsignedByteArray, 16816 v8::kExternalUint8Array,
16817 0, 16817 0,
16818 255); 16818 255);
16819 } 16819 }
16820 16820
16821 16821
16822 THREADED_TEST(ExternalPixelArray) { 16822 THREADED_TEST(ExternalUint8ClampedArray) {
16823 ExternalArrayTestHelper<i::ExternalPixelArray, uint8_t>( 16823 ExternalArrayTestHelper<i::ExternalUint8ClampedArray, uint8_t>(
16824 v8::kExternalPixelArray, 16824 v8::kExternalUint8ClampedArray,
16825 0, 16825 0,
16826 255); 16826 255);
16827 } 16827 }
16828 16828
16829 16829
16830 THREADED_TEST(ExternalShortArray) { 16830 THREADED_TEST(ExternalInt16Array) {
16831 ExternalArrayTestHelper<i::ExternalShortArray, int16_t>( 16831 ExternalArrayTestHelper<i::ExternalInt16Array, int16_t>(
16832 v8::kExternalShortArray, 16832 v8::kExternalInt16Array,
16833 -32768, 16833 -32768,
16834 32767); 16834 32767);
16835 } 16835 }
16836 16836
16837 16837
16838 THREADED_TEST(ExternalUnsignedShortArray) { 16838 THREADED_TEST(ExternalUint16Array) {
16839 ExternalArrayTestHelper<i::ExternalUnsignedShortArray, uint16_t>( 16839 ExternalArrayTestHelper<i::ExternalUint16Array, uint16_t>(
16840 v8::kExternalUnsignedShortArray, 16840 v8::kExternalUint16Array,
16841 0, 16841 0,
16842 65535); 16842 65535);
16843 } 16843 }
16844 16844
16845 16845
16846 THREADED_TEST(ExternalIntArray) { 16846 THREADED_TEST(ExternalInt32Array) {
16847 ExternalArrayTestHelper<i::ExternalIntArray, int32_t>( 16847 ExternalArrayTestHelper<i::ExternalInt32Array, int32_t>(
16848 v8::kExternalIntArray, 16848 v8::kExternalInt32Array,
16849 INT_MIN, // -2147483648 16849 INT_MIN, // -2147483648
16850 INT_MAX); // 2147483647 16850 INT_MAX); // 2147483647
16851 } 16851 }
16852 16852
16853 16853
16854 THREADED_TEST(ExternalUnsignedIntArray) { 16854 THREADED_TEST(ExternalUint32Array) {
16855 ExternalArrayTestHelper<i::ExternalUnsignedIntArray, uint32_t>( 16855 ExternalArrayTestHelper<i::ExternalUint32Array, uint32_t>(
16856 v8::kExternalUnsignedIntArray, 16856 v8::kExternalUint32Array,
16857 0, 16857 0,
16858 UINT_MAX); // 4294967295 16858 UINT_MAX); // 4294967295
16859 } 16859 }
16860 16860
16861 16861
16862 THREADED_TEST(ExternalFloatArray) { 16862 THREADED_TEST(ExternalFloat32Array) {
16863 ExternalArrayTestHelper<i::ExternalFloatArray, float>( 16863 ExternalArrayTestHelper<i::ExternalFloat32Array, float>(
16864 v8::kExternalFloatArray, 16864 v8::kExternalFloat32Array,
16865 -500, 16865 -500,
16866 500); 16866 500);
16867 } 16867 }
16868 16868
16869 16869
16870 THREADED_TEST(ExternalDoubleArray) { 16870 THREADED_TEST(ExternalFloat64Array) {
16871 ExternalArrayTestHelper<i::ExternalDoubleArray, double>( 16871 ExternalArrayTestHelper<i::ExternalFloat64Array, double>(
16872 v8::kExternalDoubleArray, 16872 v8::kExternalFloat64Array,
16873 -500, 16873 -500,
16874 500); 16874 500);
16875 } 16875 }
16876 16876
16877 16877
16878 THREADED_TEST(ExternalArrays) { 16878 THREADED_TEST(ExternalArrays) {
16879 TestExternalByteArray(); 16879 TestExternalInt8Array();
16880 TestExternalUnsignedByteArray(); 16880 TestExternalUint8Array();
16881 TestExternalShortArray(); 16881 TestExternalInt16Array();
16882 TestExternalUnsignedShortArray(); 16882 TestExternalUint16Array();
16883 TestExternalIntArray(); 16883 TestExternalInt32Array();
16884 TestExternalUnsignedIntArray(); 16884 TestExternalUint32Array();
16885 TestExternalFloatArray(); 16885 TestExternalFloat32Array();
16886 } 16886 }
16887 16887
16888 16888
16889 void ExternalArrayInfoTestHelper(v8::ExternalArrayType array_type) { 16889 void ExternalArrayInfoTestHelper(v8::ExternalArrayType array_type) {
16890 LocalContext context; 16890 LocalContext context;
16891 v8::HandleScope scope(context->GetIsolate()); 16891 v8::HandleScope scope(context->GetIsolate());
16892 for (int size = 0; size < 100; size += 10) { 16892 for (int size = 0; size < 100; size += 10) {
16893 int element_size = ExternalArrayElementSize(array_type); 16893 int element_size = ExternalArrayElementSize(array_type);
16894 void* external_data = malloc(size * element_size); 16894 void* external_data = malloc(size * element_size);
16895 v8::Handle<v8::Object> obj = v8::Object::New(context->GetIsolate()); 16895 v8::Handle<v8::Object> obj = v8::Object::New(context->GetIsolate());
16896 obj->SetIndexedPropertiesToExternalArrayData( 16896 obj->SetIndexedPropertiesToExternalArrayData(
16897 external_data, array_type, size); 16897 external_data, array_type, size);
16898 CHECK(obj->HasIndexedPropertiesInExternalArrayData()); 16898 CHECK(obj->HasIndexedPropertiesInExternalArrayData());
16899 CHECK_EQ(external_data, obj->GetIndexedPropertiesExternalArrayData()); 16899 CHECK_EQ(external_data, obj->GetIndexedPropertiesExternalArrayData());
16900 CHECK_EQ(array_type, obj->GetIndexedPropertiesExternalArrayDataType()); 16900 CHECK_EQ(array_type, obj->GetIndexedPropertiesExternalArrayDataType());
16901 CHECK_EQ(size, obj->GetIndexedPropertiesExternalArrayDataLength()); 16901 CHECK_EQ(size, obj->GetIndexedPropertiesExternalArrayDataLength());
16902 free(external_data); 16902 free(external_data);
16903 } 16903 }
16904 } 16904 }
16905 16905
16906 16906
16907 THREADED_TEST(ExternalArrayInfo) { 16907 THREADED_TEST(ExternalArrayInfo) {
16908 ExternalArrayInfoTestHelper(v8::kExternalByteArray); 16908 ExternalArrayInfoTestHelper(v8::kExternalInt8Array);
16909 ExternalArrayInfoTestHelper(v8::kExternalUnsignedByteArray); 16909 ExternalArrayInfoTestHelper(v8::kExternalUint8Array);
16910 ExternalArrayInfoTestHelper(v8::kExternalShortArray); 16910 ExternalArrayInfoTestHelper(v8::kExternalInt16Array);
16911 ExternalArrayInfoTestHelper(v8::kExternalUnsignedShortArray); 16911 ExternalArrayInfoTestHelper(v8::kExternalUint16Array);
16912 ExternalArrayInfoTestHelper(v8::kExternalIntArray); 16912 ExternalArrayInfoTestHelper(v8::kExternalInt32Array);
16913 ExternalArrayInfoTestHelper(v8::kExternalUnsignedIntArray); 16913 ExternalArrayInfoTestHelper(v8::kExternalUint32Array);
16914 ExternalArrayInfoTestHelper(v8::kExternalFloatArray); 16914 ExternalArrayInfoTestHelper(v8::kExternalFloat32Array);
16915 ExternalArrayInfoTestHelper(v8::kExternalDoubleArray); 16915 ExternalArrayInfoTestHelper(v8::kExternalFloat64Array);
16916 ExternalArrayInfoTestHelper(v8::kExternalPixelArray); 16916 ExternalArrayInfoTestHelper(v8::kExternalUint8ClampedArray);
16917 } 16917 }
16918 16918
16919 16919
16920 void ExtArrayLimitsHelper(v8::Isolate* isolate, 16920 void ExtArrayLimitsHelper(v8::Isolate* isolate,
16921 v8::ExternalArrayType array_type, 16921 v8::ExternalArrayType array_type,
16922 int size) { 16922 int size) {
16923 v8::Handle<v8::Object> obj = v8::Object::New(isolate); 16923 v8::Handle<v8::Object> obj = v8::Object::New(isolate);
16924 v8::V8::SetFatalErrorHandler(StoringErrorCallback); 16924 v8::V8::SetFatalErrorHandler(StoringErrorCallback);
16925 last_location = last_message = NULL; 16925 last_location = last_message = NULL;
16926 obj->SetIndexedPropertiesToExternalArrayData(NULL, array_type, size); 16926 obj->SetIndexedPropertiesToExternalArrayData(NULL, array_type, size);
16927 CHECK(!obj->HasIndexedPropertiesInExternalArrayData()); 16927 CHECK(!obj->HasIndexedPropertiesInExternalArrayData());
16928 CHECK_NE(NULL, last_location); 16928 CHECK_NE(NULL, last_location);
16929 CHECK_NE(NULL, last_message); 16929 CHECK_NE(NULL, last_message);
16930 } 16930 }
16931 16931
16932 16932
16933 TEST(ExternalArrayLimits) { 16933 TEST(ExternalArrayLimits) {
16934 LocalContext context; 16934 LocalContext context;
16935 v8::Isolate* isolate = context->GetIsolate(); 16935 v8::Isolate* isolate = context->GetIsolate();
16936 v8::HandleScope scope(isolate); 16936 v8::HandleScope scope(isolate);
16937 ExtArrayLimitsHelper(isolate, v8::kExternalByteArray, 0x40000000); 16937 ExtArrayLimitsHelper(isolate, v8::kExternalInt8Array, 0x40000000);
16938 ExtArrayLimitsHelper(isolate, v8::kExternalByteArray, 0xffffffff); 16938 ExtArrayLimitsHelper(isolate, v8::kExternalInt8Array, 0xffffffff);
16939 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedByteArray, 0x40000000); 16939 ExtArrayLimitsHelper(isolate, v8::kExternalUint8Array, 0x40000000);
16940 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedByteArray, 0xffffffff); 16940 ExtArrayLimitsHelper(isolate, v8::kExternalUint8Array, 0xffffffff);
16941 ExtArrayLimitsHelper(isolate, v8::kExternalShortArray, 0x40000000); 16941 ExtArrayLimitsHelper(isolate, v8::kExternalInt16Array, 0x40000000);
16942 ExtArrayLimitsHelper(isolate, v8::kExternalShortArray, 0xffffffff); 16942 ExtArrayLimitsHelper(isolate, v8::kExternalInt16Array, 0xffffffff);
16943 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedShortArray, 0x40000000); 16943 ExtArrayLimitsHelper(isolate, v8::kExternalUint16Array, 0x40000000);
16944 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedShortArray, 0xffffffff); 16944 ExtArrayLimitsHelper(isolate, v8::kExternalUint16Array, 0xffffffff);
16945 ExtArrayLimitsHelper(isolate, v8::kExternalIntArray, 0x40000000); 16945 ExtArrayLimitsHelper(isolate, v8::kExternalInt32Array, 0x40000000);
16946 ExtArrayLimitsHelper(isolate, v8::kExternalIntArray, 0xffffffff); 16946 ExtArrayLimitsHelper(isolate, v8::kExternalInt32Array, 0xffffffff);
16947 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedIntArray, 0x40000000); 16947 ExtArrayLimitsHelper(isolate, v8::kExternalUint32Array, 0x40000000);
16948 ExtArrayLimitsHelper(isolate, v8::kExternalUnsignedIntArray, 0xffffffff); 16948 ExtArrayLimitsHelper(isolate, v8::kExternalUint32Array, 0xffffffff);
16949 ExtArrayLimitsHelper(isolate, v8::kExternalFloatArray, 0x40000000); 16949 ExtArrayLimitsHelper(isolate, v8::kExternalFloat32Array, 0x40000000);
16950 ExtArrayLimitsHelper(isolate, v8::kExternalFloatArray, 0xffffffff); 16950 ExtArrayLimitsHelper(isolate, v8::kExternalFloat32Array, 0xffffffff);
16951 ExtArrayLimitsHelper(isolate, v8::kExternalDoubleArray, 0x40000000); 16951 ExtArrayLimitsHelper(isolate, v8::kExternalFloat64Array, 0x40000000);
16952 ExtArrayLimitsHelper(isolate, v8::kExternalDoubleArray, 0xffffffff); 16952 ExtArrayLimitsHelper(isolate, v8::kExternalFloat64Array, 0xffffffff);
16953 ExtArrayLimitsHelper(isolate, v8::kExternalPixelArray, 0x40000000); 16953 ExtArrayLimitsHelper(isolate, v8::kExternalUint8ClampedArray, 0x40000000);
16954 ExtArrayLimitsHelper(isolate, v8::kExternalPixelArray, 0xffffffff); 16954 ExtArrayLimitsHelper(isolate, v8::kExternalUint8ClampedArray, 0xffffffff);
16955 } 16955 }
16956 16956
16957 16957
16958 template <typename ElementType, typename TypedArray, 16958 template <typename ElementType, typename TypedArray,
16959 class ExternalArrayClass> 16959 class ExternalArrayClass>
16960 void TypedArrayTestHelper(v8::ExternalArrayType array_type, 16960 void TypedArrayTestHelper(v8::ExternalArrayType array_type,
16961 int64_t low, int64_t high) { 16961 int64_t low, int64_t high) {
16962 const int kElementCount = 50; 16962 const int kElementCount = 50;
16963 16963
16964 i::ScopedVector<ElementType> backing_store(kElementCount+2); 16964 i::ScopedVector<ElementType> backing_store(kElementCount+2);
(...skipping 18 matching lines...) Expand all
16983 for (int i = 0; i < kElementCount; i++) { 16983 for (int i = 0; i < kElementCount; i++) {
16984 data[i] = static_cast<ElementType>(i); 16984 data[i] = static_cast<ElementType>(i);
16985 } 16985 }
16986 16986
16987 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>( 16987 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>(
16988 env.local(), ta, kElementCount, array_type, low, high); 16988 env.local(), ta, kElementCount, array_type, low, high);
16989 } 16989 }
16990 16990
16991 16991
16992 THREADED_TEST(Uint8Array) { 16992 THREADED_TEST(Uint8Array) {
16993 TypedArrayTestHelper<uint8_t, v8::Uint8Array, i::ExternalUnsignedByteArray>( 16993 TypedArrayTestHelper<uint8_t, v8::Uint8Array, i::ExternalUint8Array>(
16994 v8::kExternalUnsignedByteArray, 0, 0xFF); 16994 v8::kExternalUint8Array, 0, 0xFF);
16995 } 16995 }
16996 16996
16997 16997
16998 THREADED_TEST(Int8Array) { 16998 THREADED_TEST(Int8Array) {
16999 TypedArrayTestHelper<int8_t, v8::Int8Array, i::ExternalByteArray>( 16999 TypedArrayTestHelper<int8_t, v8::Int8Array, i::ExternalInt8Array>(
17000 v8::kExternalByteArray, -0x80, 0x7F); 17000 v8::kExternalInt8Array, -0x80, 0x7F);
17001 } 17001 }
17002 17002
17003 17003
17004 THREADED_TEST(Uint16Array) { 17004 THREADED_TEST(Uint16Array) {
17005 TypedArrayTestHelper<uint16_t, 17005 TypedArrayTestHelper<uint16_t,
17006 v8::Uint16Array, 17006 v8::Uint16Array,
17007 i::ExternalUnsignedShortArray>( 17007 i::ExternalUint16Array>(
17008 v8::kExternalUnsignedShortArray, 0, 0xFFFF); 17008 v8::kExternalUint16Array, 0, 0xFFFF);
17009 } 17009 }
17010 17010
17011 17011
17012 THREADED_TEST(Int16Array) { 17012 THREADED_TEST(Int16Array) {
17013 TypedArrayTestHelper<int16_t, v8::Int16Array, i::ExternalShortArray>( 17013 TypedArrayTestHelper<int16_t, v8::Int16Array, i::ExternalInt16Array>(
17014 v8::kExternalShortArray, -0x8000, 0x7FFF); 17014 v8::kExternalInt16Array, -0x8000, 0x7FFF);
17015 } 17015 }
17016 17016
17017 17017
17018 THREADED_TEST(Uint32Array) { 17018 THREADED_TEST(Uint32Array) {
17019 TypedArrayTestHelper<uint32_t, v8::Uint32Array, i::ExternalUnsignedIntArray>( 17019 TypedArrayTestHelper<uint32_t, v8::Uint32Array, i::ExternalUint32Array>(
17020 v8::kExternalUnsignedIntArray, 0, UINT_MAX); 17020 v8::kExternalUint32Array, 0, UINT_MAX);
17021 } 17021 }
17022 17022
17023 17023
17024 THREADED_TEST(Int32Array) { 17024 THREADED_TEST(Int32Array) {
17025 TypedArrayTestHelper<int32_t, v8::Int32Array, i::ExternalIntArray>( 17025 TypedArrayTestHelper<int32_t, v8::Int32Array, i::ExternalInt32Array>(
17026 v8::kExternalIntArray, INT_MIN, INT_MAX); 17026 v8::kExternalInt32Array, INT_MIN, INT_MAX);
17027 } 17027 }
17028 17028
17029 17029
17030 THREADED_TEST(Float32Array) { 17030 THREADED_TEST(Float32Array) {
17031 TypedArrayTestHelper<float, v8::Float32Array, i::ExternalFloatArray>( 17031 TypedArrayTestHelper<float, v8::Float32Array, i::ExternalFloat32Array>(
17032 v8::kExternalFloatArray, -500, 500); 17032 v8::kExternalFloat32Array, -500, 500);
17033 } 17033 }
17034 17034
17035 17035
17036 THREADED_TEST(Float64Array) { 17036 THREADED_TEST(Float64Array) {
17037 TypedArrayTestHelper<double, v8::Float64Array, i::ExternalDoubleArray>( 17037 TypedArrayTestHelper<double, v8::Float64Array, i::ExternalFloat64Array>(
17038 v8::kExternalDoubleArray, -500, 500); 17038 v8::kExternalFloat64Array, -500, 500);
17039 } 17039 }
17040 17040
17041 17041
17042 THREADED_TEST(Uint8ClampedArray) { 17042 THREADED_TEST(Uint8ClampedArray) {
17043 TypedArrayTestHelper<uint8_t, v8::Uint8ClampedArray, i::ExternalPixelArray>( 17043 TypedArrayTestHelper<uint8_t,
17044 v8::kExternalPixelArray, 0, 0xFF); 17044 v8::Uint8ClampedArray, i::ExternalUint8ClampedArray>(
17045 v8::kExternalUint8ClampedArray, 0, 0xFF);
17045 } 17046 }
17046 17047
17047 17048
17048 THREADED_TEST(DataView) { 17049 THREADED_TEST(DataView) {
17049 const int kSize = 50; 17050 const int kSize = 50;
17050 17051
17051 i::ScopedVector<uint8_t> backing_store(kSize+2); 17052 i::ScopedVector<uint8_t> backing_store(kSize+2);
17052 17053
17053 LocalContext env; 17054 LocalContext env;
17054 v8::Isolate* isolate = env->GetIsolate(); 17055 v8::Isolate* isolate = env->GetIsolate();
(...skipping 4777 matching lines...) Expand 10 before | Expand all | Expand 10 after
21832 context->Global()->Set(v8_str("P"), templ->NewInstance()); 21833 context->Global()->Set(v8_str("P"), templ->NewInstance());
21833 CompileRun( 21834 CompileRun(
21834 "function C1() {" 21835 "function C1() {"
21835 " this.x = 23;" 21836 " this.x = 23;"
21836 "};" 21837 "};"
21837 "C1.prototype = P;" 21838 "C1.prototype = P;"
21838 "for (var i = 0; i < 4; i++ ) {" 21839 "for (var i = 0; i < 4; i++ ) {"
21839 " new C1();" 21840 " new C1();"
21840 "}"); 21841 "}");
21841 } 21842 }
OLDNEW
« src/api.cc ('K') | « src/x64/lithium-x64.cc ('k') | test/mjsunit/elements-kind.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698