6 #include <cdsannotate.h>
7 #include <specannotation.h>
8 #include <model_memory.h>
17 atomic_size_t top, bottom;
18 atomic_uintptr_t array; /* Atomic(Array *) */
21 #define EMPTY 0xffffffff
22 #define ABORT 0xfffffffe
32 __deque = createIntegerList();
35 destroyIntegerList(__deque);
39 return res != EMPTY && res != ABORT;
43 @Commutativity: Push <-> Steal: true
44 @Commutativity: Take <-> Steal: true
51 void resize(Deque *q);
56 @Commit_point_set: Take_Read_Bottom | Take_Additional_Point
57 @ID: succ(__RET__) ? __RET__ : DEFAULT_CALL_ID
63 //model_print("take: elem=%d, __RET__=%d\n", elem, __RET__);
65 @Post_check: succ(__RET__) ? __RET__ == elem : true
73 @Commit_point_set: Push_Update_Bottom
76 push_back(__deque, x);
77 //model_print("push: elem=%d\n", x);
80 void push(Deque *q, int x);
85 @Commit_point_set: Steal_Read_Bottom | Steal_Additional_Point
86 @ID: succ(__RET__) ? __RET__ : DEFAULT_CALL_ID
90 elem = front(__deque);
92 //model_print("steal: elem=%d, __RET__=%d\n", elem, __RET__);
94 @Post_check: succ(__RET__) ? __RET__ == elem : true