| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "include/dart_debugger_api.h" | 5 #include "include/dart_debugger_api.h" |
| 6 #include "platform/assert.h" | 6 #include "platform/assert.h" |
| 7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
| 8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
| 9 #include "vm/dart_api_impl.h" | 9 #include "vm/dart_api_impl.h" |
| 10 #include "vm/dart_api_message.h" | 10 #include "vm/dart_api_message.h" |
| (...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 } | 606 } |
| 607 | 607 |
| 608 | 608 |
| 609 TEST_CASE(SerializeByteArray) { | 609 TEST_CASE(SerializeByteArray) { |
| 610 StackZone zone(Isolate::Current()); | 610 StackZone zone(Isolate::Current()); |
| 611 | 611 |
| 612 // Write snapshot with object content. | 612 // Write snapshot with object content. |
| 613 uint8_t* buffer; | 613 uint8_t* buffer; |
| 614 MessageWriter writer(&buffer, &zone_allocator); | 614 MessageWriter writer(&buffer, &zone_allocator); |
| 615 const int kByteArrayLength = 256; | 615 const int kByteArrayLength = 256; |
| 616 Uint8Array& byte_array = | 616 TypedData& byte_array = TypedData::Handle( |
| 617 Uint8Array::Handle(Uint8Array::New(kByteArrayLength)); | 617 TypedData::New(kTypedDataUint8ArrayCid, kByteArrayLength)); |
| 618 for (int i = 0; i < kByteArrayLength; i++) { | 618 for (int i = 0; i < kByteArrayLength; i++) { |
| 619 byte_array.SetAt(i, i); | 619 byte_array.SetUint8(i, i); |
| 620 } | 620 } |
| 621 writer.WriteMessage(byte_array); | 621 writer.WriteMessage(byte_array); |
| 622 intptr_t buffer_len = writer.BytesWritten(); | 622 intptr_t buffer_len = writer.BytesWritten(); |
| 623 | 623 |
| 624 // Read object back from the snapshot. | 624 // Read object back from the snapshot. |
| 625 SnapshotReader reader(buffer, buffer_len, | 625 SnapshotReader reader(buffer, buffer_len, |
| 626 Snapshot::kMessage, Isolate::Current()); | 626 Snapshot::kMessage, Isolate::Current()); |
| 627 ByteArray& serialized_byte_array = ByteArray::Handle(); | 627 TypedData& serialized_byte_array = TypedData::Handle(); |
| 628 serialized_byte_array ^= reader.ReadObject(); | 628 serialized_byte_array ^= reader.ReadObject(); |
| 629 EXPECT(serialized_byte_array.IsByteArray()); | 629 EXPECT(serialized_byte_array.IsTypedData()); |
| 630 | 630 |
| 631 // Read object back from the snapshot into a C structure. | 631 // Read object back from the snapshot into a C structure. |
| 632 ApiNativeScope scope; | 632 ApiNativeScope scope; |
| 633 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 633 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
| 634 Dart_CObject* root = api_reader.ReadMessage(); | 634 Dart_CObject* root = api_reader.ReadMessage(); |
| 635 EXPECT_EQ(Dart_CObject::kUint8Array, root->type); | 635 EXPECT_EQ(Dart_CObject::kUint8Array, root->type); |
| 636 EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); | 636 EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); |
| 637 for (int i = 0; i < kByteArrayLength; i++) { | 637 for (int i = 0; i < kByteArrayLength; i++) { |
| 638 EXPECT(root->value.as_byte_array.values[i] == i); | 638 EXPECT(root->value.as_byte_array.values[i] == i); |
| 639 } | 639 } |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 } | 712 } |
| 713 | 713 |
| 714 | 714 |
| 715 TEST_CASE(SerializeEmptyByteArray) { | 715 TEST_CASE(SerializeEmptyByteArray) { |
| 716 StackZone zone(Isolate::Current()); | 716 StackZone zone(Isolate::Current()); |
| 717 | 717 |
| 718 // Write snapshot with object content. | 718 // Write snapshot with object content. |
| 719 uint8_t* buffer; | 719 uint8_t* buffer; |
| 720 MessageWriter writer(&buffer, &zone_allocator); | 720 MessageWriter writer(&buffer, &zone_allocator); |
| 721 const int kByteArrayLength = 0; | 721 const int kByteArrayLength = 0; |
| 722 Uint8Array& byte_array = | 722 TypedData& byte_array = TypedData::Handle( |
| 723 Uint8Array::Handle(Uint8Array::New(kByteArrayLength)); | 723 TypedData::New(kTypedDataUint8ArrayCid, kByteArrayLength)); |
| 724 writer.WriteMessage(byte_array); | 724 writer.WriteMessage(byte_array); |
| 725 intptr_t buffer_len = writer.BytesWritten(); | 725 intptr_t buffer_len = writer.BytesWritten(); |
| 726 | 726 |
| 727 // Read object back from the snapshot. | 727 // Read object back from the snapshot. |
| 728 SnapshotReader reader(buffer, buffer_len, | 728 SnapshotReader reader(buffer, buffer_len, |
| 729 Snapshot::kMessage, Isolate::Current()); | 729 Snapshot::kMessage, Isolate::Current()); |
| 730 ByteArray& serialized_byte_array = ByteArray::Handle(); | 730 TypedData& serialized_byte_array = TypedData::Handle(); |
| 731 serialized_byte_array ^= reader.ReadObject(); | 731 serialized_byte_array ^= reader.ReadObject(); |
| 732 EXPECT(serialized_byte_array.IsByteArray()); | 732 EXPECT(serialized_byte_array.IsTypedData()); |
| 733 | 733 |
| 734 // Read object back from the snapshot into a C structure. | 734 // Read object back from the snapshot into a C structure. |
| 735 ApiNativeScope scope; | 735 ApiNativeScope scope; |
| 736 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 736 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
| 737 Dart_CObject* root = api_reader.ReadMessage(); | 737 Dart_CObject* root = api_reader.ReadMessage(); |
| 738 EXPECT_EQ(Dart_CObject::kUint8Array, root->type); | 738 EXPECT_EQ(Dart_CObject::kUint8Array, root->type); |
| 739 EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); | 739 EXPECT_EQ(kByteArrayLength, root->value.as_byte_array.length); |
| 740 EXPECT(root->value.as_byte_array.values == NULL); | 740 EXPECT(root->value.as_byte_array.values == NULL); |
| 741 CheckEncodeDecodeMessage(root); | 741 CheckEncodeDecodeMessage(root); |
| 742 } | 742 } |
| (...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1756 } | 1756 } |
| 1757 } | 1757 } |
| 1758 Dart_ExitScope(); | 1758 Dart_ExitScope(); |
| 1759 Dart_ShutdownIsolate(); | 1759 Dart_ShutdownIsolate(); |
| 1760 } | 1760 } |
| 1761 | 1761 |
| 1762 | 1762 |
| 1763 UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { | 1763 UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { |
| 1764 const int kArrayLength = 10; | 1764 const int kArrayLength = 10; |
| 1765 static const char* kScriptChars = | 1765 static const char* kScriptChars = |
| 1766 "import 'dart:scalarlist';\n" | 1766 "import 'dart:typeddata';\n" |
| 1767 "final int kArrayLength = 10;\n" | 1767 "final int kArrayLength = 10;\n" |
| 1768 "getStringList() {\n" | 1768 "getStringList() {\n" |
| 1769 " var s = 'Hello, world!';\n" | 1769 " var s = 'Hello, world!';\n" |
| 1770 " var list = new List<String>(kArrayLength);\n" | 1770 " var list = new List<String>(kArrayLength);\n" |
| 1771 " for (var i = 0; i < kArrayLength; i++) list[i] = s;\n" | 1771 " for (var i = 0; i < kArrayLength; i++) list[i] = s;\n" |
| 1772 " return list;\n" | 1772 " return list;\n" |
| 1773 "}\n" | 1773 "}\n" |
| 1774 "getMintList() {\n" | 1774 "getMintList() {\n" |
| 1775 " var mint = 0x7FFFFFFFFFFFFFFF;\n" | 1775 " var mint = 0x7FFFFFFFFFFFFFFF;\n" |
| 1776 " var list = new List(kArrayLength);\n" | 1776 " var list = new List(kArrayLength);\n" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1927 } | 1927 } |
| 1928 } | 1928 } |
| 1929 Dart_ExitScope(); | 1929 Dart_ExitScope(); |
| 1930 Dart_ShutdownIsolate(); | 1930 Dart_ShutdownIsolate(); |
| 1931 } | 1931 } |
| 1932 | 1932 |
| 1933 | 1933 |
| 1934 UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { | 1934 UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { |
| 1935 const int kArrayLength = 10; | 1935 const int kArrayLength = 10; |
| 1936 static const char* kScriptChars = | 1936 static const char* kScriptChars = |
| 1937 "import 'dart:scalarlist';\n" | 1937 "import 'dart:typeddata';\n" |
| 1938 "final int kArrayLength = 10;\n" | 1938 "final int kArrayLength = 10;\n" |
| 1939 "getStringList() {\n" | 1939 "getStringList() {\n" |
| 1940 " var s = 'Hello, world!';\n" | 1940 " var s = 'Hello, world!';\n" |
| 1941 " var list = [s, s, s, s, s, s, s, s, s, s];\n" | 1941 " var list = [s, s, s, s, s, s, s, s, s, s];\n" |
| 1942 " return list;\n" | 1942 " return list;\n" |
| 1943 "}\n" | 1943 "}\n" |
| 1944 "getMintList() {\n" | 1944 "getMintList() {\n" |
| 1945 " var mint = 0x7FFFFFFFFFFFFFFF;\n" | 1945 " var mint = 0x7FFFFFFFFFFFFFFF;\n" |
| 1946 " var list = [mint, mint, mint, mint, mint,\n" | 1946 " var list = [mint, mint, mint, mint, mint,\n" |
| 1947 " mint, mint, mint, mint, mint];\n" | 1947 " mint, mint, mint, mint, mint];\n" |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2199 EXPECT(Dart_ErrorHasException(result)); | 2199 EXPECT(Dart_ErrorHasException(result)); |
| 2200 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n", | 2200 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n", |
| 2201 Dart_GetError(result)); | 2201 Dart_GetError(result)); |
| 2202 | 2202 |
| 2203 Dart_ExitScope(); | 2203 Dart_ExitScope(); |
| 2204 } | 2204 } |
| 2205 | 2205 |
| 2206 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 2206 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 2207 | 2207 |
| 2208 } // namespace dart | 2208 } // namespace dart |
| OLD | NEW |