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

Side by Side Diff: test/cctest/test-circular-queue.cc

Issue 893533003: Revert "Make GCC happy again." and "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.". (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
« no previous file with comments | « test/cctest/test-checks.cc ('k') | test/cctest/test-conversions.cc » ('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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 24 matching lines...) Expand all
35 using i::SamplingCircularQueue; 35 using i::SamplingCircularQueue;
36 36
37 37
38 TEST(SamplingCircularQueue) { 38 TEST(SamplingCircularQueue) {
39 typedef v8::base::AtomicWord Record; 39 typedef v8::base::AtomicWord Record;
40 const int kMaxRecordsInQueue = 4; 40 const int kMaxRecordsInQueue = 4;
41 SamplingCircularQueue<Record, kMaxRecordsInQueue> scq; 41 SamplingCircularQueue<Record, kMaxRecordsInQueue> scq;
42 42
43 // Check that we are using non-reserved values. 43 // Check that we are using non-reserved values.
44 // Fill up the first chunk. 44 // Fill up the first chunk.
45 CHECK(!scq.Peek()); 45 CHECK_EQ(NULL, scq.Peek());
46 for (Record i = 1; i < 1 + kMaxRecordsInQueue; ++i) { 46 for (Record i = 1; i < 1 + kMaxRecordsInQueue; ++i) {
47 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue()); 47 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue());
48 CHECK(rec); 48 CHECK_NE(NULL, rec);
49 *rec = i; 49 *rec = i;
50 scq.FinishEnqueue(); 50 scq.FinishEnqueue();
51 } 51 }
52 52
53 // The queue is full, enqueue is not allowed. 53 // The queue is full, enqueue is not allowed.
54 CHECK(!scq.StartEnqueue()); 54 CHECK_EQ(NULL, scq.StartEnqueue());
55 55
56 // Try to enqueue when the the queue is full. Consumption must be available. 56 // Try to enqueue when the the queue is full. Consumption must be available.
57 CHECK(scq.Peek()); 57 CHECK_NE(NULL, scq.Peek());
58 for (int i = 0; i < 10; ++i) { 58 for (int i = 0; i < 10; ++i) {
59 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue()); 59 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue());
60 CHECK(!rec); 60 CHECK_EQ(NULL, rec);
61 CHECK(scq.Peek()); 61 CHECK_NE(NULL, scq.Peek());
62 } 62 }
63 63
64 // Consume all records. 64 // Consume all records.
65 for (Record i = 1; i < 1 + kMaxRecordsInQueue; ++i) { 65 for (Record i = 1; i < 1 + kMaxRecordsInQueue; ++i) {
66 Record* rec = reinterpret_cast<Record*>(scq.Peek()); 66 Record* rec = reinterpret_cast<Record*>(scq.Peek());
67 CHECK(rec); 67 CHECK_NE(NULL, rec);
68 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec)); 68 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec));
69 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek())); 69 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek()));
70 scq.Remove(); 70 scq.Remove();
71 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek())); 71 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek()));
72 } 72 }
73 // The queue is empty. 73 // The queue is empty.
74 CHECK(!scq.Peek()); 74 CHECK_EQ(NULL, scq.Peek());
75 75
76 76
77 CHECK(!scq.Peek()); 77 CHECK_EQ(NULL, scq.Peek());
78 for (Record i = 0; i < kMaxRecordsInQueue / 2; ++i) { 78 for (Record i = 0; i < kMaxRecordsInQueue / 2; ++i) {
79 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue()); 79 Record* rec = reinterpret_cast<Record*>(scq.StartEnqueue());
80 CHECK(rec); 80 CHECK_NE(NULL, rec);
81 *rec = i; 81 *rec = i;
82 scq.FinishEnqueue(); 82 scq.FinishEnqueue();
83 } 83 }
84 84
85 // Consume all available kMaxRecordsInQueue / 2 records. 85 // Consume all available kMaxRecordsInQueue / 2 records.
86 CHECK(scq.Peek()); 86 CHECK_NE(NULL, scq.Peek());
87 for (Record i = 0; i < kMaxRecordsInQueue / 2; ++i) { 87 for (Record i = 0; i < kMaxRecordsInQueue / 2; ++i) {
88 Record* rec = reinterpret_cast<Record*>(scq.Peek()); 88 Record* rec = reinterpret_cast<Record*>(scq.Peek());
89 CHECK(rec); 89 CHECK_NE(NULL, rec);
90 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec)); 90 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec));
91 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek())); 91 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek()));
92 scq.Remove(); 92 scq.Remove();
93 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek())); 93 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek()));
94 } 94 }
95 95
96 // The queue is empty. 96 // The queue is empty.
97 CHECK(!scq.Peek()); 97 CHECK_EQ(NULL, scq.Peek());
98 } 98 }
99 99
100 100
101 namespace { 101 namespace {
102 102
103 typedef v8::base::AtomicWord Record; 103 typedef v8::base::AtomicWord Record;
104 typedef SamplingCircularQueue<Record, 12> TestSampleQueue; 104 typedef SamplingCircularQueue<Record, 12> TestSampleQueue;
105 105
106 class ProducerThread: public v8::base::Thread { 106 class ProducerThread: public v8::base::Thread {
107 public: 107 public:
108 ProducerThread(TestSampleQueue* scq, int records_per_chunk, Record value, 108 ProducerThread(TestSampleQueue* scq, int records_per_chunk, Record value,
109 v8::base::Semaphore* finished) 109 v8::base::Semaphore* finished)
110 : Thread(Options("producer")), 110 : Thread(Options("producer")),
111 scq_(scq), 111 scq_(scq),
112 records_per_chunk_(records_per_chunk), 112 records_per_chunk_(records_per_chunk),
113 value_(value), 113 value_(value),
114 finished_(finished) {} 114 finished_(finished) {}
115 115
116 virtual void Run() { 116 virtual void Run() {
117 for (Record i = value_; i < value_ + records_per_chunk_; ++i) { 117 for (Record i = value_; i < value_ + records_per_chunk_; ++i) {
118 Record* rec = reinterpret_cast<Record*>(scq_->StartEnqueue()); 118 Record* rec = reinterpret_cast<Record*>(scq_->StartEnqueue());
119 CHECK(rec); 119 CHECK_NE(NULL, rec);
120 *rec = i; 120 *rec = i;
121 scq_->FinishEnqueue(); 121 scq_->FinishEnqueue();
122 } 122 }
123 123
124 finished_->Signal(); 124 finished_->Signal();
125 } 125 }
126 126
127 private: 127 private:
128 TestSampleQueue* scq_; 128 TestSampleQueue* scq_;
129 const int records_per_chunk_; 129 const int records_per_chunk_;
(...skipping 10 matching lines...) Expand all
140 // does sampling is called in the context of different VM threads. 140 // does sampling is called in the context of different VM threads.
141 141
142 const int kRecordsPerChunk = 4; 142 const int kRecordsPerChunk = 4;
143 TestSampleQueue scq; 143 TestSampleQueue scq;
144 v8::base::Semaphore semaphore(0); 144 v8::base::Semaphore semaphore(0);
145 145
146 ProducerThread producer1(&scq, kRecordsPerChunk, 1, &semaphore); 146 ProducerThread producer1(&scq, kRecordsPerChunk, 1, &semaphore);
147 ProducerThread producer2(&scq, kRecordsPerChunk, 10, &semaphore); 147 ProducerThread producer2(&scq, kRecordsPerChunk, 10, &semaphore);
148 ProducerThread producer3(&scq, kRecordsPerChunk, 20, &semaphore); 148 ProducerThread producer3(&scq, kRecordsPerChunk, 20, &semaphore);
149 149
150 CHECK(!scq.Peek()); 150 CHECK_EQ(NULL, scq.Peek());
151 producer1.Start(); 151 producer1.Start();
152 semaphore.Wait(); 152 semaphore.Wait();
153 for (Record i = 1; i < 1 + kRecordsPerChunk; ++i) { 153 for (Record i = 1; i < 1 + kRecordsPerChunk; ++i) {
154 Record* rec = reinterpret_cast<Record*>(scq.Peek()); 154 Record* rec = reinterpret_cast<Record*>(scq.Peek());
155 CHECK(rec); 155 CHECK_NE(NULL, rec);
156 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec)); 156 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec));
157 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek())); 157 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek()));
158 scq.Remove(); 158 scq.Remove();
159 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek())); 159 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek()));
160 } 160 }
161 161
162 CHECK(!scq.Peek()); 162 CHECK_EQ(NULL, scq.Peek());
163 producer2.Start(); 163 producer2.Start();
164 semaphore.Wait(); 164 semaphore.Wait();
165 for (Record i = 10; i < 10 + kRecordsPerChunk; ++i) { 165 for (Record i = 10; i < 10 + kRecordsPerChunk; ++i) {
166 Record* rec = reinterpret_cast<Record*>(scq.Peek()); 166 Record* rec = reinterpret_cast<Record*>(scq.Peek());
167 CHECK(rec); 167 CHECK_NE(NULL, rec);
168 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec)); 168 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec));
169 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek())); 169 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek()));
170 scq.Remove(); 170 scq.Remove();
171 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek())); 171 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek()));
172 } 172 }
173 173
174 CHECK(!scq.Peek()); 174 CHECK_EQ(NULL, scq.Peek());
175 producer3.Start(); 175 producer3.Start();
176 semaphore.Wait(); 176 semaphore.Wait();
177 for (Record i = 20; i < 20 + kRecordsPerChunk; ++i) { 177 for (Record i = 20; i < 20 + kRecordsPerChunk; ++i) {
178 Record* rec = reinterpret_cast<Record*>(scq.Peek()); 178 Record* rec = reinterpret_cast<Record*>(scq.Peek());
179 CHECK(rec); 179 CHECK_NE(NULL, rec);
180 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec)); 180 CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(*rec));
181 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek())); 181 CHECK_EQ(rec, reinterpret_cast<Record*>(scq.Peek()));
182 scq.Remove(); 182 scq.Remove();
183 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek())); 183 CHECK_NE(rec, reinterpret_cast<Record*>(scq.Peek()));
184 } 184 }
185 185
186 CHECK(!scq.Peek()); 186 CHECK_EQ(NULL, scq.Peek());
187 } 187 }
OLDNEW
« no previous file with comments | « test/cctest/test-checks.cc ('k') | test/cctest/test-conversions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698