Research Article
A Study of Lock-Free Based Concurrent Garbage Collectors for Multicore Platform
Procedure 3
CopyExtendedObject procedure (procedure code for collector).
Procedure CopyExtendedObject(obj: Object, addr: Address) | (1) norObj:= AllocNormalObject(addr) | (2) for := 0 to CountOfFields(obj) do | (3) loop: | (4) oldField.data:= obj.fields[].data | (5) oldField.status:= obj.fields[].status | (6) norObj.Fields[].data:= oldField.data | (7) newField.data:= oldField.data | (8) newField.status:= 0 | (9) if CAS(&exObj.fields[], newField, oldField) != oldField then | (10) goto loop //Retry until cas succeed |
|