Research Article

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

Procedure 1

CopyNormalObject procedure (procedure code for collector).
Procedure CopyNormalObject(obj: Object, addr: Address)
(1)      exObj:= AllocExtendedObject(addr)
(2)     for each status in exObj do
(3)          status:= 0
(4)     for := 0 to CountOfFields(obj) do
(5)          oldField.data:= exObj.fields[ ].data
(6)          oldField.status:= exObj.fields[ ].status
(7)          if oldField.status = 0 then
(8)               newField.data:= obj.fields[ ].data
(9)               newField.status:= 1
(10)             CAS(&exObj.fields[ ], newField, oldField)