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

Unified Diff: vm/dart_api_impl_test.cc

Issue 12036098: First set of changes towards cleaning up the bytearray access APIs (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « vm/dart_api_impl.cc ('k') | vm/dart_api_state.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/dart_api_impl_test.cc
===================================================================
--- vm/dart_api_impl_test.cc (revision 17884)
+++ vm/dart_api_impl_test.cc (working copy)
@@ -204,7 +204,7 @@
// Non-instance objects.
{
Isolate* isolate = Isolate::Current();
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle class1 = Api::NewHandle(isolate, Object::null_class());
Dart_Handle class2 = Api::NewHandle(isolate, Object::class_class());
@@ -830,13 +830,9 @@
result = Dart_ListSetAt(byte_array1, -1, Dart_NewInteger(1));
EXPECT(Dart_IsError(result));
- result = Dart_ByteArraySetUint8At(byte_array1, -1, 1);
- EXPECT(Dart_IsError(result));
result = Dart_ListSetAt(byte_array1, 10, Dart_NewInteger(1));
EXPECT(Dart_IsError(result));
- result = Dart_ByteArraySetUint8At(byte_array1, 10, 1);
- EXPECT(Dart_IsError(result));
// Set through the List API.
for (intptr_t i = 0; i < 10; ++i) {
@@ -849,29 +845,8 @@
int64_t int64_t_value = -1;
EXPECT_VALID(Dart_IntegerToInt64(integer_obj, &int64_t_value));
EXPECT_EQ(i + 1, int64_t_value);
- // Get through the ByteArray API.
- uint8_t uint8_t_value = 0xFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &uint8_t_value));
- EXPECT_EQ(i + 1, uint8_t_value);
}
- // Set through the ByteArray API.
- for (intptr_t i = 0; i < 10; ++i) {
- EXPECT_VALID(Dart_ByteArraySetUint8At(byte_array1, i, i + 2));
- }
- for (intptr_t i = 0; i < 10; ++i) {
- // Get through the List API.
- Dart_Handle integer_obj = Dart_ListGetAt(byte_array1, i);
- EXPECT_VALID(integer_obj);
- int64_t int64_t_value = -1;
- EXPECT_VALID(Dart_IntegerToInt64(integer_obj, &int64_t_value));
- EXPECT_EQ(i + 2, int64_t_value);
- // Get through the ByteArray API.
- uint8_t uint8_t_value = 0xFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &uint8_t_value));
- EXPECT_EQ(i + 2, uint8_t_value);
- }
-
Dart_Handle byte_array2 = Dart_NewByteArray(10);
bool is_equal = false;
Dart_ObjectEquals(byte_array1, byte_array2, &is_equal);
@@ -879,6 +854,8 @@
// Set through the List API.
for (intptr_t i = 0; i < 10; ++i) {
+ result = Dart_ListSetAt(byte_array1, i, Dart_NewInteger(i + 2));
+ EXPECT_VALID(result);
result = Dart_ListSetAt(byte_array2, i, Dart_NewInteger(i + 2));
EXPECT_VALID(result);
}
@@ -889,58 +866,10 @@
is_equal = false;
Dart_ObjectEquals(e1, e2, &is_equal);
EXPECT(is_equal);
- // Get through the ByteArray API.
- uint8_t v1 = 0xFF;
- uint8_t v2 = 0XFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &v1));
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array2, i, &v2));
- EXPECT_NE(v1, 0xFF);
- EXPECT_NE(v2, 0xFF);
- EXPECT_EQ(v1, v2);
}
- byte_array2 = Dart_NewByteArray(10);
- is_equal = false;
- Dart_ObjectEquals(byte_array1, byte_array2, &is_equal);
- EXPECT(!is_equal);
-
- // Set through the ByteArray API.
- for (intptr_t i = 0; i < 10; ++i) {
- result = Dart_ByteArraySetUint8At(byte_array2, i, i + 2);
- EXPECT_VALID(result);
- }
- for (intptr_t i = 0; i < 10; ++i) {
- // Get through the List API.
- Dart_Handle e1 = Dart_ListGetAt(byte_array1, i);
- Dart_Handle e2 = Dart_ListGetAt(byte_array2, i);
- is_equal = false;
- Dart_ObjectEquals(e1, e2, &is_equal);
- EXPECT(is_equal);
- // Get through the ByteArray API.
- uint8_t v1 = 0xFF;
- uint8_t v2 = 0XFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &v1));
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array2, i, &v2));
- EXPECT_NE(v1, 0xFF);
- EXPECT_NE(v2, 0xFF);
- EXPECT_EQ(v1, v2);
- }
-
uint8_t data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- result = Dart_ListSetAsBytes(byte_array1, 0, data, 10);
- EXPECT_VALID(result);
for (intptr_t i = 0; i < 10; ++i) {
- Dart_Handle integer_obj = Dart_ListGetAt(byte_array1, i);
- EXPECT_VALID(integer_obj);
- int64_t int64_t_value = -1;
- EXPECT_VALID(Dart_IntegerToInt64(integer_obj, &int64_t_value));
- EXPECT_EQ(i, int64_t_value);
- uint8_t uint8_t_value = 0xFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &uint8_t_value));
- EXPECT_EQ(i, uint8_t_value);
- }
-
- for (intptr_t i = 0; i < 10; ++i) {
EXPECT_VALID(Dart_ListSetAt(byte_array1, i, Dart_NewInteger(10 - i)));
}
Dart_ListGetAsBytes(byte_array1, 0, data, 10);
@@ -950,163 +879,43 @@
int64_t int64_t_value = -1;
EXPECT_VALID(Dart_IntegerToInt64(integer_obj, &int64_t_value));
EXPECT_EQ(10 - i, int64_t_value);
- uint8_t uint8_t_value = 0xFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &uint8_t_value));
- EXPECT_EQ(10 - i, uint8_t_value);
}
-
- for (intptr_t i = 0; i < 10; ++i) {
- EXPECT_VALID(Dart_ByteArraySetUint8At(byte_array1, i, 10 + i));
- }
- Dart_ListGetAsBytes(byte_array1, 0, data, 10);
- for (intptr_t i = 0; i < 10; ++i) {
- Dart_Handle integer_obj = Dart_ListGetAt(byte_array1, i);
- EXPECT_VALID(integer_obj);
- int64_t int64_t_value = -1;
- EXPECT_VALID(Dart_IntegerToInt64(integer_obj, &int64_t_value));
- EXPECT_EQ(10 + i, int64_t_value);
- uint8_t uint8_t_value = 0xFF;
- EXPECT_VALID(Dart_ByteArrayGetUint8At(byte_array1, i, &uint8_t_value));
- EXPECT_EQ(10 + i, uint8_t_value);
- }
}
-TEST_CASE(ByteArrayAlignedMultiByteAccess) {
- intptr_t length = 16;
- Dart_Handle byte_array = Dart_NewByteArray(length);
- intptr_t api_length = 0;
- EXPECT_VALID(Dart_ListLength(byte_array, &api_length));
- EXPECT_EQ(length, api_length);
+TEST_CASE(ScalarListDirectAccess) {
+ Dart_Handle str = Dart_NewStringFromCString("junk");
+ Dart_Handle byte_array = Dart_NewByteArray(10);
+ EXPECT_VALID(byte_array);
+ Dart_Handle result;
+ result = Dart_ScalarListAcquireData(byte_array, NULL, NULL, NULL);
+ EXPECT_ERROR(result, "Dart_ScalarListAcquireData expects argument 'type'"
+ " to be non-null.");
+ Dart_Scalar_Type type;
+ result = Dart_ScalarListAcquireData(byte_array, &type, NULL, NULL);
+ EXPECT_ERROR(result, "Dart_ScalarListAcquireData expects argument 'data'"
+ " to be non-null.");
+ void* data;
+ result = Dart_ScalarListAcquireData(byte_array, &type, &data, NULL);
+ EXPECT_ERROR(result, "Dart_ScalarListAcquireData expects argument 'len'"
+ " to be non-null.");
+ intptr_t len;
+ result = Dart_ScalarListAcquireData(Dart_Null(), &type, &data, &len);
+ EXPECT_ERROR(result, "Dart_ScalarListAcquireData expects argument 'array'"
+ " to be non-null.");
+ result = Dart_ScalarListAcquireData(str, &type, &data, &len);
+ EXPECT_ERROR(result, "Dart_ScalarListAcquireData expects argument 'array'"
+ " to be of type 'scalar list'.");
- // 4-byte aligned sets.
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 0, FLT_MIN));
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 4, FLT_MAX));
-
- float float_value = 0.0f;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 0, &float_value));
- EXPECT_EQ(FLT_MIN, float_value);
-
- float_value = 0.0f;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 4, &float_value));
- EXPECT_EQ(FLT_MAX, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 0, 0.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 0, &float_value));
- EXPECT_EQ(0.0f, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 4, 1.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 4, &float_value));
- EXPECT_EQ(1.0f, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 0, -1.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 0, &float_value));
- EXPECT_EQ(-1.0f, float_value);
-
- // 8-byte aligned sets.
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 0, DBL_MIN));
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 8, DBL_MAX));
-
- double double_value = 0.0;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 0, &double_value));
- EXPECT_EQ(DBL_MIN, double_value);
-
- double_value = 0.0;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 8, &double_value));
- EXPECT_EQ(DBL_MAX, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 0, 0.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 0, &double_value));
- EXPECT_EQ(0.0, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 8, 1.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 8, &double_value));
- EXPECT_EQ(1.0, double_value);
+ result = Dart_ScalarListReleaseData(Dart_Null());
+ EXPECT_ERROR(result, "Dart_ScalarListReleaseData expects argument 'array'"
+ " to be non-null.");
+ result = Dart_ScalarListReleaseData(str);
+ EXPECT_ERROR(result, "Dart_ScalarListReleaseData expects argument 'array'"
+ " to be of type 'scalar list'.");
}
-TEST_CASE(ByteArrayMisalignedMultiByteAccess) {
- intptr_t length = 17;
- Dart_Handle byte_array = Dart_NewByteArray(length);
- intptr_t api_length = 0;
- EXPECT_VALID(Dart_ListLength(byte_array, &api_length));
- EXPECT_EQ(length, api_length);
-
- // 4-byte misaligned sets.
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 1, FLT_MIN));
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 5, FLT_MAX));
-
- float float_value = 0.0f;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 1, &float_value));
- EXPECT_EQ(FLT_MIN, float_value);
-
- float_value = 0.0f;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 5, &float_value));
- EXPECT_EQ(FLT_MAX, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 1, 0.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 1, &float_value));
- EXPECT_EQ(0.0f, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 5, -0.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 5, &float_value));
- EXPECT_EQ(-0.0f, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 5, 1.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 5, &float_value));
- EXPECT_EQ(1.0f, float_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat32At(byte_array, 1, -1.0f));
- float_value = FLT_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat32At(byte_array, 1, &float_value));
- EXPECT_EQ(-1.0f, float_value);
-
- // 8-byte misaligned sets.
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 1, DBL_MIN));
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 9, DBL_MAX));
-
- double double_value = 0.0;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 1, &double_value));
- EXPECT_EQ(DBL_MIN, double_value);
-
- double_value = 0.0;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 9, &double_value));
- EXPECT_EQ(DBL_MAX, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 1, 0.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 1, &double_value));
- EXPECT_EQ(0.0, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 9, -0.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 9, &double_value));
- EXPECT_EQ(-0.0, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 9, 1.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 9, &double_value));
- EXPECT_EQ(1.0, double_value);
-
- EXPECT_VALID(Dart_ByteArraySetFloat64At(byte_array, 1, -1.0));
- double_value = DBL_MAX;
- EXPECT_VALID(Dart_ByteArrayGetFloat64At(byte_array, 1, &double_value));
- EXPECT_EQ(-1.0, double_value);
-}
-
-
static void ExternalByteArrayAccessTests(Dart_Handle obj,
uint8_t data[],
intptr_t data_length) {
@@ -1262,7 +1071,7 @@
Dart_EnterScope();
{
EXPECT(state->top_scope() != NULL);
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
const String& str1 = String::Handle(String::New("Test String"));
Dart_Handle ref = Api::NewHandle(isolate, str1.raw());
String& str2 = String::Handle();
@@ -1287,7 +1096,7 @@
Dart_Handle handles[2000];
Dart_EnterScope();
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle ref1 = Api::NewHandle(isolate, String::New(kTestString1));
for (int i = 0; i < 1000; i++) {
handles[i] = Dart_NewPersistentHandle(ref1);
@@ -1312,7 +1121,7 @@
Dart_ExitScope();
{
StackZone zone(isolate);
- DARTSCOPE_NOCHECKS(isolate);
+ HANDLESCOPE(isolate);
for (int i = 0; i < 500; i++) {
String& str = String::Handle();
str ^= Api::UnwrapHandle(handles[i]);
@@ -2263,7 +2072,7 @@
Dart_Handle handles[300];
{
StackZone zone(isolate);
- DARTSCOPE_NOCHECKS(isolate);
+ HANDLESCOPE(isolate);
Smi& val = Smi::Handle();
// Start a new scope and allocate some local handles.
@@ -2923,7 +2732,7 @@
// Invoke a function which returns an object of type NativeFields.
result = Dart_Invoke(lib, NewString("testMain"), 0, NULL);
EXPECT_VALID(result);
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
Instance& obj = Instance::Handle();
obj ^= Api::UnwrapHandle(result);
const Class& cls = Class::Handle(obj.clazz());
@@ -2992,7 +2801,7 @@
// Invoke a function which returns an object of type NativeFields.
result = Dart_Invoke(lib, NewString("testMain"), 0, NULL);
EXPECT_VALID(result);
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
Instance& obj = Instance::Handle();
obj ^= Api::UnwrapHandle(result);
const Class& cls = Class::Handle(obj.clazz());
@@ -3247,7 +3056,7 @@
" return () {};\n"
"}\n";
Dart_Handle result;
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
// Create a test library and Load up a test script in it.
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
@@ -3323,7 +3132,7 @@
" });\n"
"}\n";
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
// Create a test library and Load up a test script in it.
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
@@ -3906,7 +3715,7 @@
Dart_Handle result;
Dart_Handle owner;
Dart_Handle defining_function;
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
// Create a test library and Load up a test script in it.
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
@@ -4074,7 +3883,7 @@
" return InvokeClosure.method2(10);\n"
"}\n";
Dart_Handle result;
- DARTSCOPE_NOCHECKS(Isolate::Current());
+ DARTSCOPE(Isolate::Current());
// Create a test library and Load up a test script in it.
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
@@ -6937,7 +6746,7 @@
Isolate* isolate = Isolate::Current();
Dart_EnterScope();
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle str = NewString("a string");
EXPECT_VALID(str);
EXPECT(Dart_IsString(str));
@@ -7010,7 +6819,7 @@
Isolate* isolate = Isolate::Current();
Dart_EnterScope();
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle s1 = NewString("s1");
EXPECT_VALID(s1);
EXPECT(Dart_IsString(s1));
@@ -7094,7 +6903,7 @@
isolate->heap()->CollectGarbage(Heap::kNew);
isolate->heap()->CollectGarbage(Heap::kNew);
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
String& handle = String::Handle();
handle ^= Api::UnwrapHandle(str);
EXPECT(handle.IsOld());
@@ -7147,7 +6956,7 @@
Isolate* isolate = Isolate::Current();
Dart_EnterScope();
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle str = Api::NewHandle(isolate, String::New("str", Heap::kOld));
EXPECT_VALID(str);
EXPECT(Dart_IsString(str));
@@ -7223,7 +7032,7 @@
Isolate* isolate = Isolate::Current();
Dart_EnterScope();
{
- DARTSCOPE_NOCHECKS(isolate);
+ DARTSCOPE(isolate);
Dart_Handle s1 = Api::NewHandle(isolate, String::New("s1", Heap::kOld));
EXPECT_VALID(s1);
EXPECT(Dart_IsString(s1));
« no previous file with comments | « vm/dart_api_impl.cc ('k') | vm/dart_api_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698