File tree Expand file tree Collapse file tree 2 files changed +9
-13
lines changed Expand file tree Collapse file tree 2 files changed +9
-13
lines changed Original file line number Diff line number Diff line change @@ -98,12 +98,9 @@ void Platform::WorkerBody(void* arg) {
98
98
TaskQueue::TaskQueue () {
99
99
int err;
100
100
101
- static_assert ( kRingSize == ( kRingSize & (~( kRingSize - 1 ))),
102
- " kRingSize is not a power of two " ) ;
101
+ for ( size_t i = 0 ; i < ARRAY_SIZE (ring_); i += 1 )
102
+ ring_[i] = nullptr ;
103
103
104
- size_ = kRingSize ;
105
- ring_ = new Task*[size_];
106
- mask_ = size_ - 1 ;
107
104
read_off_ = 0 ;
108
105
write_off_ = 0 ;
109
106
@@ -120,9 +117,6 @@ TaskQueue::TaskQueue() {
120
117
121
118
TaskQueue::~TaskQueue () {
122
119
CHECK_EQ (read_off_, write_off_);
123
-
124
- delete[] ring_;
125
- ring_ = nullptr ;
126
120
uv_sem_destroy (&sem_);
127
121
uv_cond_destroy (&cond_);
128
122
uv_mutex_destroy (&mutex_);
@@ -138,7 +132,7 @@ void TaskQueue::Push(Task* task) {
138
132
139
133
ring_[write_off_] = task;
140
134
write_off_++;
141
- write_off_ &= mask_ ;
135
+ write_off_ &= kRingMask ;
142
136
uv_mutex_unlock (&mutex_);
143
137
144
138
uv_sem_post (&sem_);
@@ -154,7 +148,7 @@ Task* TaskQueue::Shift() {
154
148
uv_cond_signal (&cond_);
155
149
156
150
read_off_++;
157
- read_off_ &= mask_ ;
151
+ read_off_ &= kRingMask ;
158
152
uv_mutex_unlock (&mutex_);
159
153
160
154
return task;
Original file line number Diff line number Diff line change @@ -37,15 +37,17 @@ class TaskQueue {
37
37
38
38
private:
39
39
static const unsigned int kRingSize = 1024 ;
40
+ static const unsigned int kRingMask = kRingSize - 1 ;
41
+
42
+ static_assert (kRingSize == (kRingSize & ~kRingMask ),
43
+ " kRingSize is not a power of two" );
40
44
41
45
uv_sem_t sem_;
42
46
uv_cond_t cond_;
43
47
uv_mutex_t mutex_;
44
- v8::Task** ring_;
45
- unsigned int size_;
46
- unsigned int mask_;
47
48
unsigned int read_off_;
48
49
unsigned int write_off_;
50
+ v8::Task* ring_[kRingSize ];
49
51
};
50
52
51
53
class Platform : public v8 ::Platform {
You can’t perform that action at this time.
0 commit comments