//NOTE: allocSiteID is NOT the same as allocsite, rather it's an ID generated by the traverser for an alloc site for a traversal.\r
void putWaitingQueue(int allocSiteID, WaitingQueueBin * queue, int effectType, void * resumePtr, int traverserID) {\r
//lock bin\r
- WaitingQueueBinVector * head;\r
WaitingQueueBinVector * currentVector;\r
TraverserResumeDataFromWaitingQ * b;\r
- do {\r
- head = (WaitingQueueBinVector *) 0x1;\r
- head = LOCKXCHG(&(queue[allocSiteID]).head, head);\r
- } while (head == (WaitingQueueBinVector *) 0x1);\r
+\r
+\r
+ //since Put SHOULD be done only by 1 thread (from 1 hashtable), the locking mechanism is removed.\r
+ WaitingQueueBinVector * head = queue[allocSiteID].head;\r
+// do {\r
+// head = (WaitingQueueBinVector *) 0x1;\r
+// head = LOCKXCHG(&(queue[allocSiteID]).head, head);\r
+// } while (head == (WaitingQueueBinVector *) 0x1);\r
//now the current bin is locked.\r
\r
//completely empty case\r