9 std::atomic<ShiftHelper<InsertAt> *>
next;
13 assert(
sizeof(RcObject) <= ALIGNLEN);
31 controlWord=(std::atomic<void *> *)&(this->isComplete);
43 void cleanup(WFVector *vec,
int pos);
45 bool res= completeShift<InsertAt>(
this, vec,
pos);
64 return helper->rvalue;
71 return parent->rvalue;
74 return helper->rvalue;
81 return shiftTryFree<InsertAt>((
InsertAt *)
this);
97 for (i=pos+1; helper != NULL; i++) {
99 ArrayElement *spot=vec->getSpot(i);
100 void *current=spot->load();
101 if (Helper::unmark(current) == helper) {
102 spot->compare_exchange_strong(current, parent->rvalue);
105 helper=parent->next.load();
Definition: insertat_op.h:4
Definition: shift_helper.h:7
std::atomic< bool > isComplete
Definition: insertat_op.h:10
bool tryFree()
Definition: insertat_op.h:80
int pos
Definition: insertat_op.h:8
bool complete(WFVector *vec, int pos)
Definition: insertat_op.h:44
void * rvalue
Definition: insertat_op.h:7
void execute(WFVector *vec)
Definition: insertat_op.h:26
std::atomic< ShiftHelper< InsertAt > * > next
Definition: insertat_op.h:9
InsertAt(int p, void *v)
Definition: insertat_op.h:22
void * readThrough(ShiftHelper< InsertAt > *helper)
Definition: insertat_op.h:55
void cleanup(WFVector *vec, int pos)
Definition: insertat_op.h:86
void init(int p, void *v)
Definition: insertat_op.h:12
bool s_execute(WFVector *vec)
Definition: insertat_op.h:29