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

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

Issue 10832292: Reduce space used for stackmaps. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Restore inadvertently deleted code. Created 8 years, 4 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 | « no previous file | runtime/vm/code_descriptors.h » ('j') | runtime/vm/code_descriptors.h » ('J')
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/bitmap.h" 6 #include "vm/bitmap.h"
7 #include "vm/object.h" 7 #include "vm/object.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 9
10 namespace dart { 10 namespace dart {
11 11
12 TEST_CASE(BitmapBuilder) { 12 TEST_CASE(BitmapBuilder) {
13 // Test basic bit map builder operations. 13 // Test basic bit map builder operations.
14 BitmapBuilder* bmap1_builder = new BitmapBuilder(); 14 BitmapBuilder* builder1 = new BitmapBuilder();
15 15
16 EXPECT_EQ(-1, bmap1_builder->Maximum()); 16 EXPECT_EQ(-1, builder1->Maximum());
17 EXPECT_EQ(-1, bmap1_builder->Minimum()); 17 EXPECT_EQ(-1, builder1->Minimum());
18 18
19 bool value = true; 19 bool value = true;
20 for (int32_t i = 0; i < 128; i++) { 20 for (int32_t i = 0; i < 128; i++) {
21 bmap1_builder->Set(i, value); 21 builder1->Set(i, value);
22 value = !value; 22 value = !value;
23 } 23 }
24 value = true; 24 value = true;
25 for (int32_t i = 0; i < 128; i++) { 25 for (int32_t i = 0; i < 128; i++) {
26 EXPECT_EQ(value, bmap1_builder->Get(i)); 26 EXPECT_EQ(value, builder1->Get(i));
27 value = !value; 27 value = !value;
28 } 28 }
29 value = true; 29 value = true;
30 for (int32_t i = 0; i < 1024; i++) { 30 for (int32_t i = 0; i < 1024; i++) {
31 bmap1_builder->Set(i, value); 31 builder1->Set(i, value);
32 value = !value; 32 value = !value;
33 } 33 }
34 value = true; 34 value = true;
35 for (int32_t i = 0; i < 1024; i++) { 35 for (int32_t i = 0; i < 1024; i++) {
36 EXPECT_EQ(value, bmap1_builder->Get(i)); 36 EXPECT_EQ(value, builder1->Get(i));
37 value = !value; 37 value = !value;
38 } 38 }
39 // Create a Bitmap object from the builder and verify it's contents. 39 // Create a Stackmap object from the builder and verify its contents.
40 const Stackmap& bmap1 = Stackmap::Handle(Stackmap::New(0, bmap1_builder)); 40 const Stackmap& stackmap1 =
41 EXPECT_EQ(1022, bmap1_builder->Maximum()); 41 Stackmap::Handle(Stackmap::New(0, 1024, builder1));
42 EXPECT_EQ(0, bmap1_builder->Minimum()); 42 EXPECT_EQ(1022, builder1->Maximum());
43 OS::Print("%s\n", bmap1.ToCString()); 43 EXPECT_EQ(0, builder1->Minimum());
44 OS::Print("%s\n", stackmap1.ToCString());
44 value = true; 45 value = true;
45 for (int32_t i = 0; i < 1024; i++) { 46 for (int32_t i = 0; i < 1024; i++) {
46 EXPECT_EQ(value, bmap1.IsObject(i)); 47 EXPECT_EQ(value, stackmap1.IsObject(i));
47 value = !value; 48 value = !value;
48 } 49 }
49 EXPECT(!bmap1.IsObject(2056)); // Out of range so returns false. 50 EXPECT(!stackmap1.IsObject(2056)); // Out of range so returns false.
50 51
51 // Test the SetRange function in the builder. 52 // Test the SetRange function in the builder.
52 bmap1_builder->SetRange(0, 256, false); 53 builder1->SetRange(0, 256, false);
53 bmap1_builder->SetRange(257, 1024, true); 54 builder1->SetRange(257, 1024, true);
54 bmap1_builder->SetRange(1025, 2048, false); 55 builder1->SetRange(1025, 2048, false);
55 for (int32_t i = 0; i <= 256; i++) { 56 for (int32_t i = 0; i <= 256; i++) {
56 EXPECT(!bmap1_builder->Get(i)); 57 EXPECT(!builder1->Get(i));
57 } 58 }
58 for (int32_t i = 257; i <= 1024; i++) { 59 for (int32_t i = 257; i <= 1024; i++) {
59 EXPECT(bmap1_builder->Get(i)); 60 EXPECT(builder1->Get(i));
60 } 61 }
61 for (int32_t i = 1025; i <= 2048; i++) { 62 for (int32_t i = 1025; i <= 2048; i++) {
62 EXPECT(!bmap1_builder->Get(i)); 63 EXPECT(!builder1->Get(i));
63 } 64 }
64 const Stackmap& bmap2 = Stackmap::Handle(Stackmap::New(0, bmap1_builder)); 65 const Stackmap& stackmap2 =
65 EXPECT_EQ(1024, bmap1_builder->Maximum()); 66 Stackmap::Handle(Stackmap::New(0, 2049, builder1));
66 EXPECT_EQ(257, bmap1_builder->Minimum()); 67 EXPECT_EQ(1024, builder1->Maximum());
68 EXPECT_EQ(257, builder1->Minimum());
67 for (int32_t i = 0; i <= 256; i++) { 69 for (int32_t i = 0; i <= 256; i++) {
68 EXPECT(!bmap2.IsObject(i)); 70 EXPECT(!stackmap2.IsObject(i));
69 } 71 }
70 for (int32_t i = 257; i <= 1024; i++) { 72 for (int32_t i = 257; i <= 1024; i++) {
71 EXPECT(bmap2.IsObject(i)); 73 EXPECT(stackmap2.IsObject(i));
72 } 74 }
73 for (int32_t i = 1025; i <= 2048; i++) { 75 for (int32_t i = 1025; i <= 2048; i++) {
74 EXPECT(!bmap2.IsObject(i)); 76 EXPECT(!stackmap2.IsObject(i));
75 } 77 }
76 78
77 // Test the functionality to copy a Stackmap object into a builder. 79 // Test the functionality to copy a Stackmap object into a builder.
78 BitmapBuilder* bmap2_builder = new BitmapBuilder(); 80 BitmapBuilder* builder2 = new BitmapBuilder();
79 bmap2_builder->SetBits(bmap1); 81 builder2->SetBits(stackmap1);
80 EXPECT_EQ(1022, bmap2_builder->Maximum()); 82 EXPECT_EQ(1022, builder2->Maximum());
81 EXPECT_EQ(0, bmap2_builder->Minimum()); 83 EXPECT_EQ(0, builder2->Minimum());
82 value = true; 84 value = true;
83 for (int32_t i = 0; i < 1024; i++) { 85 for (int32_t i = 0; i < 1024; i++) {
84 EXPECT_EQ(value, bmap2_builder->Get(i)); 86 EXPECT_EQ(value, builder2->Get(i));
85 value = !value; 87 value = !value;
86 } 88 }
87 89
88 BitmapBuilder* bmap3_builder = new BitmapBuilder(); 90 BitmapBuilder* builder3 = new BitmapBuilder();
89 bmap3_builder->SetBits(bmap2); 91 builder3->SetBits(stackmap2);
90 EXPECT_EQ(1024, bmap3_builder->Maximum()); 92 EXPECT_EQ(1024, builder3->Maximum());
91 EXPECT_EQ(257, bmap3_builder->Minimum()); 93 EXPECT_EQ(257, builder3->Minimum());
92 for (int32_t i = 0; i <= 256; i++) { 94 for (int32_t i = 0; i <= 256; i++) {
93 EXPECT(!bmap3_builder->Get(i)); 95 EXPECT(!builder3->Get(i));
94 } 96 }
95 for (int32_t i = 257; i <= 1024; i++) { 97 for (int32_t i = 257; i <= 1024; i++) {
96 EXPECT(bmap3_builder->Get(i)); 98 EXPECT(builder3->Get(i));
97 } 99 }
98 for (int32_t i = 1025; i <= 2048; i++) { 100 for (int32_t i = 1025; i <= 2048; i++) {
99 EXPECT(!bmap3_builder->Get(i)); 101 EXPECT(!builder3->Get(i));
100 } 102 }
101 } 103 }
102 104
103 } // namespace dart 105 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/code_descriptors.h » ('j') | runtime/vm/code_descriptors.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698