| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 2a4fe138908a514cafa82741082040c52ac87054..5293761cfdd84400ddcd8b3d40d80ecd786fcc80 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -11492,6 +11492,53 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
|
| CHECK_EQ(true, result->BooleanValue());
|
| }
|
|
|
| + // Test crankshaft external array loads
|
| + for (int i = 0; i < kElementCount; i++) {
|
| + array->set(i, static_cast<ElementType>(i));
|
| + }
|
| + result = CompileRun("function ee_load_test_func(sum) {"
|
| + " for (var i=0;i<40;++i)"
|
| + " sum += ext_array[i];"
|
| + " return sum;"
|
| + "}"
|
| + "sum=0;"
|
| + "for (var i=0;i<10000;++i) {"
|
| + " sum=ee_load_test_func(sum);"
|
| + "}"
|
| + "sum;");
|
| + CHECK_EQ(7800000, result->Int32Value());
|
| +
|
| + // Test crankshaft external array stores
|
| + result = CompileRun("function ee_store_test_func(sum) {"
|
| + " for (var i=0;i<40;++i)"
|
| + " sum += ext_array[i] = i;"
|
| + " return sum;"
|
| + "}"
|
| + "sum=0;"
|
| + "for (var i=0;i<10000;++i) {"
|
| + " sum=ee_store_test_func(sum);"
|
| + "}"
|
| + "sum;");
|
| + CHECK_EQ(7800000, result->Int32Value());
|
| +
|
| + // Test edge cases for crankshaft code.
|
| + array->set(0, static_cast<ElementType>(0xFFFFFFFF));
|
| + result = CompileRun("function ee_limit_test_func(i) {"
|
| + " return ext_array[i];"
|
| + " return sum;"
|
| + "}"
|
| + "sum=0;"
|
| + "for (var i=0;i<1000000;++i) {"
|
| + " sum=ee_limit_test_func(0);"
|
| + "}"
|
| + "sum;");
|
| + if (array_type == v8::kExternalFloatArray) {
|
| + CHECK_EQ(0, result->Int32Value());
|
| + } else {
|
| + CHECK_EQ(static_cast<int>(static_cast<ElementType>(0xFFFFFFFF)),
|
| + result->Int32Value());
|
| + }
|
| +
|
| result = CompileRun("ext_array[3] = 33;"
|
| "delete ext_array[3];"
|
| "ext_array[3];");
|
|
|