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

Side by Side Diff: runtime/vm/object_test.cc

Issue 12093071: - Change the layout of external typed array objects to avoid the extra indirection when accessing e… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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 | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/assembler.h" 6 #include "vm/assembler.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/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 1887 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 } 1898 }
1899 1899
1900 1900
1901 TEST_CASE(ExternalByteArray) { 1901 TEST_CASE(ExternalByteArray) {
1902 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; 1902 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 };
1903 intptr_t data_length = ARRAY_SIZE(data); 1903 intptr_t data_length = ARRAY_SIZE(data);
1904 1904
1905 const ExternalInt8Array& int8_array = 1905 const ExternalInt8Array& int8_array =
1906 ExternalInt8Array::Handle( 1906 ExternalInt8Array::Handle(
1907 ExternalInt8Array::New(reinterpret_cast<int8_t*>(data), 1907 ExternalInt8Array::New(reinterpret_cast<int8_t*>(data),
1908 data_length, NULL, NULL)); 1908 data_length));
1909 EXPECT(!int8_array.IsNull()); 1909 EXPECT(!int8_array.IsNull());
1910 EXPECT_EQ(data_length, int8_array.Length()); 1910 EXPECT_EQ(data_length, int8_array.Length());
1911 1911
1912 const ExternalUint8Array& uint8_array = 1912 const ExternalUint8Array& uint8_array =
1913 ExternalUint8Array::Handle( 1913 ExternalUint8Array::Handle(
1914 ExternalUint8Array::New(data, data_length, NULL, NULL)); 1914 ExternalUint8Array::New(data, data_length));
1915 EXPECT(!uint8_array.IsNull()); 1915 EXPECT(!uint8_array.IsNull());
1916 EXPECT_EQ(data_length, uint8_array.Length()); 1916 EXPECT_EQ(data_length, uint8_array.Length());
1917 1917
1918 const ExternalUint8ClampedArray& uint8_clamped_array = 1918 const ExternalUint8ClampedArray& uint8_clamped_array =
1919 ExternalUint8ClampedArray::Handle( 1919 ExternalUint8ClampedArray::Handle(
1920 ExternalUint8ClampedArray::New(data, data_length, NULL, NULL)); 1920 ExternalUint8ClampedArray::New(data, data_length));
1921 EXPECT(!uint8_clamped_array.IsNull()); 1921 EXPECT(!uint8_clamped_array.IsNull());
1922 EXPECT_EQ(data_length, uint8_clamped_array.Length()); 1922 EXPECT_EQ(data_length, uint8_clamped_array.Length());
1923 1923
1924 EXPECT_EQ(-3, int8_array.At(0)); 1924 EXPECT_EQ(-3, int8_array.At(0));
1925 EXPECT_EQ(253, uint8_array.At(0)); 1925 EXPECT_EQ(253, uint8_array.At(0));
1926 EXPECT_EQ(253, uint8_clamped_array.At(0)); 1926 EXPECT_EQ(253, uint8_clamped_array.At(0));
1927 1927
1928 EXPECT_EQ(-2, int8_array.At(1)); 1928 EXPECT_EQ(-2, int8_array.At(1));
1929 EXPECT_EQ(254, uint8_array.At(1)); 1929 EXPECT_EQ(254, uint8_array.At(1));
1930 EXPECT_EQ(254, uint8_clamped_array.At(1)); 1930 EXPECT_EQ(254, uint8_clamped_array.At(1));
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 2083
2084 2084
2085 TEST_CASE(Uint8ByteArrayCopyExternal) { 2085 TEST_CASE(Uint8ByteArrayCopyExternal) {
2086 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; 2086 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 };
2087 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; 2087 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 };
2088 2088
2089 uint8_t data[] = { 0, 1, 2, 3 }; 2089 uint8_t data[] = { 0, 1, 2, 3 };
2090 2090
2091 const ExternalUint8Array& external = 2091 const ExternalUint8Array& external =
2092 ExternalUint8Array::Handle( 2092 ExternalUint8Array::Handle(
2093 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); 2093 ExternalUint8Array::New(data, ARRAY_SIZE(data)));
2094 EXPECT(!external.IsNull()); 2094 EXPECT(!external.IsNull());
2095 EXPECT_EQ(4, external.Length()); 2095 EXPECT_EQ(4, external.Length());
2096 EXPECT_EQ(0, external.At(0)); 2096 EXPECT_EQ(0, external.At(0));
2097 EXPECT_EQ(1, external.At(1)); 2097 EXPECT_EQ(1, external.At(1));
2098 EXPECT_EQ(2, external.At(2)); 2098 EXPECT_EQ(2, external.At(2));
2099 EXPECT_EQ(3, external.At(3)); 2099 EXPECT_EQ(3, external.At(3));
2100 2100
2101 // A zero length copy. 2101 // A zero length copy.
2102 ByteArray::Copy(external, 0, b_4_5_6_7, 0); 2102 ByteArray::Copy(external, 0, b_4_5_6_7, 0);
2103 EXPECT_EQ(0, external.At(0)); 2103 EXPECT_EQ(0, external.At(0));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2143 2143
2144 2144
2145 TEST_CASE(ClampedUint8ByteArrayCopyExternal) { 2145 TEST_CASE(ClampedUint8ByteArrayCopyExternal) {
2146 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; 2146 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 };
2147 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; 2147 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 };
2148 2148
2149 uint8_t data[] = { 0, 1, 2, 3 }; 2149 uint8_t data[] = { 0, 1, 2, 3 };
2150 2150
2151 const ExternalUint8ClampedArray& external = 2151 const ExternalUint8ClampedArray& external =
2152 ExternalUint8ClampedArray::Handle( 2152 ExternalUint8ClampedArray::Handle(
2153 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data), NULL, NULL)); 2153 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data)));
2154 EXPECT(!external.IsNull()); 2154 EXPECT(!external.IsNull());
2155 EXPECT_EQ(4, external.Length()); 2155 EXPECT_EQ(4, external.Length());
2156 EXPECT_EQ(0, external.At(0)); 2156 EXPECT_EQ(0, external.At(0));
2157 EXPECT_EQ(1, external.At(1)); 2157 EXPECT_EQ(1, external.At(1));
2158 EXPECT_EQ(2, external.At(2)); 2158 EXPECT_EQ(2, external.At(2));
2159 EXPECT_EQ(3, external.At(3)); 2159 EXPECT_EQ(3, external.At(3));
2160 2160
2161 // A zero length copy. 2161 // A zero length copy.
2162 ByteArray::Copy(external, 0, b_4_5_6_7, 0); 2162 ByteArray::Copy(external, 0, b_4_5_6_7, 0);
2163 EXPECT_EQ(0, external.At(0)); 2163 EXPECT_EQ(0, external.At(0));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2210 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); 2210 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3)));
2211 EXPECT(!internal.IsNull()); 2211 EXPECT(!internal.IsNull());
2212 EXPECT_EQ(4, internal.Length()); 2212 EXPECT_EQ(4, internal.Length());
2213 EXPECT_EQ(0, internal.At(0)); 2213 EXPECT_EQ(0, internal.At(0));
2214 EXPECT_EQ(1, internal.At(1)); 2214 EXPECT_EQ(1, internal.At(1));
2215 EXPECT_EQ(2, internal.At(2)); 2215 EXPECT_EQ(2, internal.At(2));
2216 EXPECT_EQ(3, internal.At(3)); 2216 EXPECT_EQ(3, internal.At(3));
2217 2217
2218 const ExternalUint8Array& external = 2218 const ExternalUint8Array& external =
2219 ExternalUint8Array::Handle( 2219 ExternalUint8Array::Handle(
2220 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); 2220 ExternalUint8Array::New(data, ARRAY_SIZE(data)));
2221 EXPECT(!external.IsNull()); 2221 EXPECT(!external.IsNull());
2222 EXPECT_EQ(4, external.Length()); 2222 EXPECT_EQ(4, external.Length());
2223 EXPECT_EQ(4, external.At(0)); 2223 EXPECT_EQ(4, external.At(0));
2224 EXPECT_EQ(5, external.At(1)); 2224 EXPECT_EQ(5, external.At(1));
2225 EXPECT_EQ(6, external.At(2)); 2225 EXPECT_EQ(6, external.At(2));
2226 EXPECT_EQ(7, external.At(3)); 2226 EXPECT_EQ(7, external.At(3));
2227 2227
2228 // A zero length copy. 2228 // A zero length copy.
2229 ByteArray::Copy(internal, 0, external, 0, 0); 2229 ByteArray::Copy(internal, 0, external, 0, 0);
2230 EXPECT_EQ(0, internal.At(0)); 2230 EXPECT_EQ(0, internal.At(0));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2291 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); 2291 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3)));
2292 EXPECT(!internal.IsNull()); 2292 EXPECT(!internal.IsNull());
2293 EXPECT_EQ(4, internal.Length()); 2293 EXPECT_EQ(4, internal.Length());
2294 EXPECT_EQ(0, internal.At(0)); 2294 EXPECT_EQ(0, internal.At(0));
2295 EXPECT_EQ(1, internal.At(1)); 2295 EXPECT_EQ(1, internal.At(1));
2296 EXPECT_EQ(2, internal.At(2)); 2296 EXPECT_EQ(2, internal.At(2));
2297 EXPECT_EQ(3, internal.At(3)); 2297 EXPECT_EQ(3, internal.At(3));
2298 2298
2299 const ExternalUint8ClampedArray& external = 2299 const ExternalUint8ClampedArray& external =
2300 ExternalUint8ClampedArray::Handle( 2300 ExternalUint8ClampedArray::Handle(
2301 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data), NULL, NULL)); 2301 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data)));
2302 EXPECT(!external.IsNull()); 2302 EXPECT(!external.IsNull());
2303 EXPECT_EQ(4, external.Length()); 2303 EXPECT_EQ(4, external.Length());
2304 EXPECT_EQ(4, external.At(0)); 2304 EXPECT_EQ(4, external.At(0));
2305 EXPECT_EQ(5, external.At(1)); 2305 EXPECT_EQ(5, external.At(1));
2306 EXPECT_EQ(6, external.At(2)); 2306 EXPECT_EQ(6, external.At(2));
2307 EXPECT_EQ(7, external.At(3)); 2307 EXPECT_EQ(7, external.At(3));
2308 2308
2309 // A zero length copy. 2309 // A zero length copy.
2310 ByteArray::Copy(internal, 0, external, 0, 0); 2310 ByteArray::Copy(internal, 0, external, 0, 0);
2311 EXPECT_EQ(0, internal.At(0)); 2311 EXPECT_EQ(0, internal.At(0));
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after
3586 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); 3586 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint());
3587 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); 3587 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint());
3588 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); 3588 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint());
3589 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); 3589 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint());
3590 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); 3590 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint());
3591 } 3591 }
3592 3592
3593 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 3593 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
3594 3594
3595 } // namespace dart 3595 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698