OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 18 matching lines...) Expand all Loading... |
29 | 29 |
30 #include "v8.h" | 30 #include "v8.h" |
31 | 31 |
32 #include "data-flow.h" | 32 #include "data-flow.h" |
33 #include "cctest.h" | 33 #include "cctest.h" |
34 | 34 |
35 using namespace v8::internal; | 35 using namespace v8::internal; |
36 | 36 |
37 TEST(BitVector) { | 37 TEST(BitVector) { |
38 v8::internal::V8::Initialize(NULL); | 38 v8::internal::V8::Initialize(NULL); |
39 Zone* zone = Isolate::Current()->runtime_zone(); | 39 Zone zone(Isolate::Current()); |
40 ZoneScope zone_scope(zone, DELETE_ON_EXIT); | |
41 { | 40 { |
42 BitVector v(15, zone); | 41 BitVector v(15, &zone); |
43 v.Add(1); | 42 v.Add(1); |
44 CHECK(v.Contains(1)); | 43 CHECK(v.Contains(1)); |
45 v.Remove(0); | 44 v.Remove(0); |
46 CHECK(!v.Contains(0)); | 45 CHECK(!v.Contains(0)); |
47 v.Add(0); | 46 v.Add(0); |
48 v.Add(1); | 47 v.Add(1); |
49 BitVector w(15, zone); | 48 BitVector w(15, &zone); |
50 w.Add(1); | 49 w.Add(1); |
51 v.Intersect(w); | 50 v.Intersect(w); |
52 CHECK(!v.Contains(0)); | 51 CHECK(!v.Contains(0)); |
53 CHECK(v.Contains(1)); | 52 CHECK(v.Contains(1)); |
54 } | 53 } |
55 | 54 |
56 { | 55 { |
57 BitVector v(64, zone); | 56 BitVector v(64, &zone); |
58 v.Add(27); | 57 v.Add(27); |
59 v.Add(30); | 58 v.Add(30); |
60 v.Add(31); | 59 v.Add(31); |
61 v.Add(33); | 60 v.Add(33); |
62 BitVector::Iterator iter(&v); | 61 BitVector::Iterator iter(&v); |
63 CHECK_EQ(27, iter.Current()); | 62 CHECK_EQ(27, iter.Current()); |
64 iter.Advance(); | 63 iter.Advance(); |
65 CHECK_EQ(30, iter.Current()); | 64 CHECK_EQ(30, iter.Current()); |
66 iter.Advance(); | 65 iter.Advance(); |
67 CHECK_EQ(31, iter.Current()); | 66 CHECK_EQ(31, iter.Current()); |
68 iter.Advance(); | 67 iter.Advance(); |
69 CHECK_EQ(33, iter.Current()); | 68 CHECK_EQ(33, iter.Current()); |
70 iter.Advance(); | 69 iter.Advance(); |
71 CHECK(iter.Done()); | 70 CHECK(iter.Done()); |
72 } | 71 } |
73 | 72 |
74 { | 73 { |
75 BitVector v(15, zone); | 74 BitVector v(15, &zone); |
76 v.Add(0); | 75 v.Add(0); |
77 BitVector w(15, zone); | 76 BitVector w(15, &zone); |
78 w.Add(1); | 77 w.Add(1); |
79 v.Union(w); | 78 v.Union(w); |
80 CHECK(v.Contains(0)); | 79 CHECK(v.Contains(0)); |
81 CHECK(v.Contains(1)); | 80 CHECK(v.Contains(1)); |
82 } | 81 } |
83 | 82 |
84 { | 83 { |
85 BitVector v(15, zone); | 84 BitVector v(15, &zone); |
86 v.Add(0); | 85 v.Add(0); |
87 BitVector w(15, zone); | 86 BitVector w(15, &zone); |
88 w = v; | 87 w = v; |
89 CHECK(w.Contains(0)); | 88 CHECK(w.Contains(0)); |
90 w.Add(1); | 89 w.Add(1); |
91 BitVector u(w, zone); | 90 BitVector u(w, &zone); |
92 CHECK(u.Contains(0)); | 91 CHECK(u.Contains(0)); |
93 CHECK(u.Contains(1)); | 92 CHECK(u.Contains(1)); |
94 v.Union(w); | 93 v.Union(w); |
95 CHECK(v.Contains(0)); | 94 CHECK(v.Contains(0)); |
96 CHECK(v.Contains(1)); | 95 CHECK(v.Contains(1)); |
97 } | 96 } |
98 | 97 |
99 { | 98 { |
100 BitVector v(35, zone); | 99 BitVector v(35, &zone); |
101 v.Add(0); | 100 v.Add(0); |
102 BitVector w(35, zone); | 101 BitVector w(35, &zone); |
103 w.Add(33); | 102 w.Add(33); |
104 v.Union(w); | 103 v.Union(w); |
105 CHECK(v.Contains(0)); | 104 CHECK(v.Contains(0)); |
106 CHECK(v.Contains(33)); | 105 CHECK(v.Contains(33)); |
107 } | 106 } |
108 | 107 |
109 { | 108 { |
110 BitVector v(35, zone); | 109 BitVector v(35, &zone); |
111 v.Add(32); | 110 v.Add(32); |
112 v.Add(33); | 111 v.Add(33); |
113 BitVector w(35, zone); | 112 BitVector w(35, &zone); |
114 w.Add(33); | 113 w.Add(33); |
115 v.Intersect(w); | 114 v.Intersect(w); |
116 CHECK(!v.Contains(32)); | 115 CHECK(!v.Contains(32)); |
117 CHECK(v.Contains(33)); | 116 CHECK(v.Contains(33)); |
118 BitVector r(35, zone); | 117 BitVector r(35, &zone); |
119 r.CopyFrom(v); | 118 r.CopyFrom(v); |
120 CHECK(!r.Contains(32)); | 119 CHECK(!r.Contains(32)); |
121 CHECK(r.Contains(33)); | 120 CHECK(r.Contains(33)); |
122 } | 121 } |
123 } | 122 } |
OLD | NEW |