OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 21 matching lines...) Expand all Loading... |
32 #include "api.h" | 32 #include "api.h" |
33 #include "compilation-cache.h" | 33 #include "compilation-cache.h" |
34 #include "execution.h" | 34 #include "execution.h" |
35 #include "snapshot.h" | 35 #include "snapshot.h" |
36 #include "platform.h" | 36 #include "platform.h" |
37 #include "utils.h" | 37 #include "utils.h" |
38 #include "cctest.h" | 38 #include "cctest.h" |
39 #include "parser.h" | 39 #include "parser.h" |
40 #include "unicode-inl.h" | 40 #include "unicode-inl.h" |
41 | 41 |
42 static const bool kLogThreading = true; | 42 static const bool kLogThreading = false; |
43 | 43 |
44 static bool IsNaN(double x) { | 44 static bool IsNaN(double x) { |
45 #ifdef WIN32 | 45 #ifdef WIN32 |
46 return _isnan(x); | 46 return _isnan(x); |
47 #else | 47 #else |
48 return isnan(x); | 48 return isnan(x); |
49 #endif | 49 #endif |
50 } | 50 } |
51 | 51 |
52 using ::v8::AccessorInfo; | 52 using ::v8::AccessorInfo; |
(...skipping 11320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11373 break; | 11373 break; |
11374 case v8::kExternalShortArray: | 11374 case v8::kExternalShortArray: |
11375 case v8::kExternalUnsignedShortArray: | 11375 case v8::kExternalUnsignedShortArray: |
11376 return 2; | 11376 return 2; |
11377 break; | 11377 break; |
11378 case v8::kExternalIntArray: | 11378 case v8::kExternalIntArray: |
11379 case v8::kExternalUnsignedIntArray: | 11379 case v8::kExternalUnsignedIntArray: |
11380 case v8::kExternalFloatArray: | 11380 case v8::kExternalFloatArray: |
11381 return 4; | 11381 return 4; |
11382 break; | 11382 break; |
| 11383 case v8::kExternalDoubleArray: |
| 11384 return 8; |
| 11385 break; |
11383 default: | 11386 default: |
11384 UNREACHABLE(); | 11387 UNREACHABLE(); |
11385 return -1; | 11388 return -1; |
11386 } | 11389 } |
11387 UNREACHABLE(); | 11390 UNREACHABLE(); |
11388 return -1; | 11391 return -1; |
11389 } | 11392 } |
11390 | 11393 |
11391 | 11394 |
11392 template <class ExternalArrayClass, class ElementType> | 11395 template <class ExternalArrayClass, class ElementType> |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11562 0, static_cast<int>(jsobj->GetElement(7)->ToObjectChecked()->Number())); | 11565 0, static_cast<int>(jsobj->GetElement(7)->ToObjectChecked()->Number())); |
11563 | 11566 |
11564 result = CompileRun("for (var i = 0; i < 8; i++) {" | 11567 result = CompileRun("for (var i = 0; i < 8; i++) {" |
11565 " ext_array[6] = '2.3';" | 11568 " ext_array[6] = '2.3';" |
11566 "}" | 11569 "}" |
11567 "ext_array[6];"); | 11570 "ext_array[6];"); |
11568 CHECK_EQ(2, result->Int32Value()); | 11571 CHECK_EQ(2, result->Int32Value()); |
11569 CHECK_EQ( | 11572 CHECK_EQ( |
11570 2, static_cast<int>(jsobj->GetElement(6)->ToObjectChecked()->Number())); | 11573 2, static_cast<int>(jsobj->GetElement(6)->ToObjectChecked()->Number())); |
11571 | 11574 |
11572 if (array_type != v8::kExternalFloatArray) { | 11575 if (array_type != v8::kExternalFloatArray && |
| 11576 array_type != v8::kExternalDoubleArray) { |
11573 // Though the specification doesn't state it, be explicit about | 11577 // Though the specification doesn't state it, be explicit about |
11574 // converting NaNs and +/-Infinity to zero. | 11578 // converting NaNs and +/-Infinity to zero. |
11575 result = CompileRun("for (var i = 0; i < 8; i++) {" | 11579 result = CompileRun("for (var i = 0; i < 8; i++) {" |
11576 " ext_array[i] = 5;" | 11580 " ext_array[i] = 5;" |
11577 "}" | 11581 "}" |
11578 "for (var i = 0; i < 8; i++) {" | 11582 "for (var i = 0; i < 8; i++) {" |
11579 " ext_array[i] = NaN;" | 11583 " ext_array[i] = NaN;" |
11580 "}" | 11584 "}" |
11581 "ext_array[5];"); | 11585 "ext_array[5];"); |
11582 CHECK_EQ(0, result->Int32Value()); | 11586 CHECK_EQ(0, result->Int32Value()); |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11959 | 11963 |
11960 | 11964 |
11961 THREADED_TEST(ExternalFloatArray) { | 11965 THREADED_TEST(ExternalFloatArray) { |
11962 ExternalArrayTestHelper<i::ExternalFloatArray, float>( | 11966 ExternalArrayTestHelper<i::ExternalFloatArray, float>( |
11963 v8::kExternalFloatArray, | 11967 v8::kExternalFloatArray, |
11964 -500, | 11968 -500, |
11965 500); | 11969 500); |
11966 } | 11970 } |
11967 | 11971 |
11968 | 11972 |
| 11973 THREADED_TEST(ExternalDoubleArray) { |
| 11974 ExternalArrayTestHelper<i::ExternalDoubleArray, double>( |
| 11975 v8::kExternalDoubleArray, |
| 11976 -500, |
| 11977 500); |
| 11978 } |
| 11979 |
| 11980 |
11969 THREADED_TEST(ExternalArrays) { | 11981 THREADED_TEST(ExternalArrays) { |
11970 TestExternalByteArray(); | 11982 TestExternalByteArray(); |
11971 TestExternalUnsignedByteArray(); | 11983 TestExternalUnsignedByteArray(); |
11972 TestExternalShortArray(); | 11984 TestExternalShortArray(); |
11973 TestExternalUnsignedShortArray(); | 11985 TestExternalUnsignedShortArray(); |
11974 TestExternalIntArray(); | 11986 TestExternalIntArray(); |
11975 TestExternalUnsignedIntArray(); | 11987 TestExternalUnsignedIntArray(); |
11976 TestExternalFloatArray(); | 11988 TestExternalFloatArray(); |
11977 } | 11989 } |
11978 | 11990 |
(...skipping 17 matching lines...) Expand all Loading... |
11996 | 12008 |
11997 | 12009 |
11998 THREADED_TEST(ExternalArrayInfo) { | 12010 THREADED_TEST(ExternalArrayInfo) { |
11999 ExternalArrayInfoTestHelper(v8::kExternalByteArray); | 12011 ExternalArrayInfoTestHelper(v8::kExternalByteArray); |
12000 ExternalArrayInfoTestHelper(v8::kExternalUnsignedByteArray); | 12012 ExternalArrayInfoTestHelper(v8::kExternalUnsignedByteArray); |
12001 ExternalArrayInfoTestHelper(v8::kExternalShortArray); | 12013 ExternalArrayInfoTestHelper(v8::kExternalShortArray); |
12002 ExternalArrayInfoTestHelper(v8::kExternalUnsignedShortArray); | 12014 ExternalArrayInfoTestHelper(v8::kExternalUnsignedShortArray); |
12003 ExternalArrayInfoTestHelper(v8::kExternalIntArray); | 12015 ExternalArrayInfoTestHelper(v8::kExternalIntArray); |
12004 ExternalArrayInfoTestHelper(v8::kExternalUnsignedIntArray); | 12016 ExternalArrayInfoTestHelper(v8::kExternalUnsignedIntArray); |
12005 ExternalArrayInfoTestHelper(v8::kExternalFloatArray); | 12017 ExternalArrayInfoTestHelper(v8::kExternalFloatArray); |
| 12018 ExternalArrayInfoTestHelper(v8::kExternalDoubleArray); |
12006 ExternalArrayInfoTestHelper(v8::kExternalPixelArray); | 12019 ExternalArrayInfoTestHelper(v8::kExternalPixelArray); |
12007 } | 12020 } |
12008 | 12021 |
12009 | 12022 |
12010 THREADED_TEST(ScriptContextDependence) { | 12023 THREADED_TEST(ScriptContextDependence) { |
12011 v8::HandleScope scope; | 12024 v8::HandleScope scope; |
12012 LocalContext c1; | 12025 LocalContext c1; |
12013 const char *source = "foo"; | 12026 const char *source = "foo"; |
12014 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source)); | 12027 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source)); |
12015 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source)); | 12028 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source)); |
(...skipping 1875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13891 CHECK(func2->CreationContext() == context2); | 13904 CHECK(func2->CreationContext() == context2); |
13892 CheckContextId(func2, 2); | 13905 CheckContextId(func2, 2); |
13893 CHECK(instance2->CreationContext() == context2); | 13906 CHECK(instance2->CreationContext() == context2); |
13894 CheckContextId(instance2, 2); | 13907 CheckContextId(instance2, 2); |
13895 } | 13908 } |
13896 | 13909 |
13897 context1.Dispose(); | 13910 context1.Dispose(); |
13898 context2.Dispose(); | 13911 context2.Dispose(); |
13899 context3.Dispose(); | 13912 context3.Dispose(); |
13900 } | 13913 } |
OLD | NEW |