| 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 |