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

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

Issue 2818003: API: Added functions to retreive information on indexed properties managed by... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 6 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
« no previous file with comments | « src/api.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2007-2009 the V8 project authors. All rights reserved. 1 // Copyright 2007-2009 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 9619 matching lines...) Expand 10 before | Expand all | Expand 10 after
9630 CHECK_EQ(255, result->Int32Value()); 9630 CHECK_EQ(255, result->Int32Value());
9631 result = CompileRun("var i = 0;" 9631 result = CompileRun("var i = 0;"
9632 "for (var j = 0; j < 8; j++) { i = pixels[256]; }" 9632 "for (var j = 0; j < 8; j++) { i = pixels[256]; }"
9633 "i"); 9633 "i");
9634 CHECK_EQ(255, result->Int32Value()); 9634 CHECK_EQ(255, result->Int32Value());
9635 9635
9636 free(pixel_data); 9636 free(pixel_data);
9637 } 9637 }
9638 9638
9639 9639
9640 THREADED_TEST(PixelArrayInfo) {
9641 v8::HandleScope scope;
9642 LocalContext context;
9643 for (int size = 0; size < 100; size += 10) {
9644 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(size));
9645 v8::Handle<v8::Object> obj = v8::Object::New();
9646 obj->SetIndexedPropertiesToPixelData(pixel_data, size);
9647 CHECK(obj->HasIndexedPropertiesInPixelData());
9648 CHECK_EQ(pixel_data, obj->GetIndexedPropertiesPixelData());
9649 CHECK_EQ(size, obj->GetIndexedPropertiesPixelDataLength());
9650 free(pixel_data);
9651 }
9652 }
9653
9654
9655 static int ExternalArrayElementSize(v8::ExternalArrayType array_type) {
9656 switch (array_type) {
9657 case v8::kExternalByteArray:
9658 case v8::kExternalUnsignedByteArray:
9659 return 1;
9660 break;
9661 case v8::kExternalShortArray:
9662 case v8::kExternalUnsignedShortArray:
9663 return 2;
9664 break;
9665 case v8::kExternalIntArray:
9666 case v8::kExternalUnsignedIntArray:
9667 case v8::kExternalFloatArray:
9668 return 4;
9669 break;
9670 default:
9671 UNREACHABLE();
9672 return -1;
9673 }
9674 }
9675
9676
9640 template <class ExternalArrayClass, class ElementType> 9677 template <class ExternalArrayClass, class ElementType>
9641 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, 9678 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type,
9642 int64_t low, 9679 int64_t low,
9643 int64_t high) { 9680 int64_t high) {
9644 v8::HandleScope scope; 9681 v8::HandleScope scope;
9645 LocalContext context; 9682 LocalContext context;
9646 const int kElementCount = 40; 9683 const int kElementCount = 40;
9647 int element_size = 0; 9684 int element_size = ExternalArrayElementSize(array_type);
9648 switch (array_type) {
9649 case v8::kExternalByteArray:
9650 case v8::kExternalUnsignedByteArray:
9651 element_size = 1;
9652 break;
9653 case v8::kExternalShortArray:
9654 case v8::kExternalUnsignedShortArray:
9655 element_size = 2;
9656 break;
9657 case v8::kExternalIntArray:
9658 case v8::kExternalUnsignedIntArray:
9659 case v8::kExternalFloatArray:
9660 element_size = 4;
9661 break;
9662 default:
9663 UNREACHABLE();
9664 break;
9665 }
9666 ElementType* array_data = 9685 ElementType* array_data =
9667 static_cast<ElementType*>(malloc(kElementCount * element_size)); 9686 static_cast<ElementType*>(malloc(kElementCount * element_size));
9668 i::Handle<ExternalArrayClass> array = 9687 i::Handle<ExternalArrayClass> array =
9669 i::Handle<ExternalArrayClass>::cast( 9688 i::Handle<ExternalArrayClass>::cast(
9670 i::Factory::NewExternalArray(kElementCount, array_type, array_data)); 9689 i::Factory::NewExternalArray(kElementCount, array_type, array_data));
9671 i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. 9690 i::Heap::CollectAllGarbage(false); // Force GC to trigger verification.
9672 for (int i = 0; i < kElementCount; i++) { 9691 for (int i = 0; i < kElementCount; i++) {
9673 array->set(i, static_cast<ElementType>(i)); 9692 array->set(i, static_cast<ElementType>(i));
9674 } 9693 }
9675 i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. 9694 i::Heap::CollectAllGarbage(false); // Force GC to trigger verification.
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
10036 TestExternalByteArray(); 10055 TestExternalByteArray();
10037 TestExternalUnsignedByteArray(); 10056 TestExternalUnsignedByteArray();
10038 TestExternalShortArray(); 10057 TestExternalShortArray();
10039 TestExternalUnsignedShortArray(); 10058 TestExternalUnsignedShortArray();
10040 TestExternalIntArray(); 10059 TestExternalIntArray();
10041 TestExternalUnsignedIntArray(); 10060 TestExternalUnsignedIntArray();
10042 TestExternalFloatArray(); 10061 TestExternalFloatArray();
10043 } 10062 }
10044 10063
10045 10064
10065 void ExternalArrayInfoTestHelper(v8::ExternalArrayType array_type) {
10066 v8::HandleScope scope;
10067 LocalContext context;
10068 for (int size = 0; size < 100; size += 10) {
10069 int element_size = ExternalArrayElementSize(array_type);
10070 void* external_data = malloc(size * element_size);
10071 v8::Handle<v8::Object> obj = v8::Object::New();
10072 obj->SetIndexedPropertiesToExternalArrayData(
10073 external_data, array_type, size);
10074 CHECK(obj->HasIndexedPropertiesInExternalArrayData());
10075 CHECK_EQ(external_data, obj->GetIndexedPropertiesExternalArrayData());
10076 CHECK_EQ(array_type, obj->GetIndexedPropertiesExternalArrayDataType());
10077 CHECK_EQ(size, obj->GetIndexedPropertiesExternalArrayDataLength());
10078 free(external_data);
10079 }
10080 }
10081
10082
10083 THREADED_TEST(ExternalArrayInfo) {
10084 ExternalArrayInfoTestHelper(v8::kExternalByteArray);
10085 ExternalArrayInfoTestHelper(v8::kExternalUnsignedByteArray);
10086 ExternalArrayInfoTestHelper(v8::kExternalShortArray);
10087 ExternalArrayInfoTestHelper(v8::kExternalUnsignedShortArray);
10088 ExternalArrayInfoTestHelper(v8::kExternalIntArray);
10089 ExternalArrayInfoTestHelper(v8::kExternalUnsignedIntArray);
10090 ExternalArrayInfoTestHelper(v8::kExternalFloatArray);
10091 }
10092
10093
10046 THREADED_TEST(ScriptContextDependence) { 10094 THREADED_TEST(ScriptContextDependence) {
10047 v8::HandleScope scope; 10095 v8::HandleScope scope;
10048 LocalContext c1; 10096 LocalContext c1;
10049 const char *source = "foo"; 10097 const char *source = "foo";
10050 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source)); 10098 v8::Handle<v8::Script> dep = v8::Script::Compile(v8::String::New(source));
10051 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source)); 10099 v8::Handle<v8::Script> indep = v8::Script::New(v8::String::New(source));
10052 c1->Global()->Set(v8::String::New("foo"), v8::Integer::New(100)); 10100 c1->Global()->Set(v8::String::New("foo"), v8::Integer::New(100));
10053 CHECK_EQ(dep->Run()->Int32Value(), 100); 10101 CHECK_EQ(dep->Run()->Int32Value(), 100);
10054 CHECK_EQ(indep->Run()->Int32Value(), 100); 10102 CHECK_EQ(indep->Run()->Int32Value(), 100);
10055 LocalContext c2; 10103 LocalContext c2;
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after
10868 const char* code = 10916 const char* code =
10869 "(function() {" 10917 "(function() {"
10870 " for (var i = 0; i < 2*16; i++) {" 10918 " for (var i = 0; i < 2*16; i++) {"
10871 " %_GetFromCache(0, 'a' + i);" 10919 " %_GetFromCache(0, 'a' + i);"
10872 " };" 10920 " };"
10873 " return 'PASSED';" 10921 " return 'PASSED';"
10874 "})()"; 10922 "})()";
10875 v8::internal::Heap::ClearJSFunctionResultCaches(); 10923 v8::internal::Heap::ClearJSFunctionResultCaches();
10876 ExpectString(code, "PASSED"); 10924 ExpectString(code, "PASSED");
10877 } 10925 }
OLDNEW
« no previous file with comments | « src/api.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698