Research Article

A Study of Lock-Free Based Concurrent Garbage Collectors for Multicore Platform

Procedure 4

CopyExtendedObject procedure (barrier code for mutator).
             //Modify ith field of the object
(1)      loop:
(2)     currStatus:= obj.Fields[ ].status
(3)     if currStatus = 1 then
(4)         oldField.status:= currStatus
(5)         oldField.data:= obj.Fields[ ].data
(6)         newField.data:= newData
(7)         newField.status:= 1
(8)         if CAS(&obj.Fields[ ], newField, oldField) != oldField then
(9)             goto loop
(10)     else
(11)          norObj.Fileds[ ].data:= newData