These constraints include registering the objects for finalization, aligning the objects on multiple word boundaries, pinning objects for performance reasons, registering objects related to weak pointers and so forth.
We have tried to resolve this tension by overloading the size argument that is passed to the allocation routine. If the size of the argument has a high bit of 0, then the allocation routine will assume that no constraints exist on the allocation of this object and allocation can potentially be made very fast. If on the other hand the size is large then the routine will query the class data structure to determine what constraints are being made on the allocation of this object.
The gc_import.h interface will provide the following masks to allow the gc to quickly determine the constraints.
CL_PROP_NON_REF_ARRAY_MASK 0x1000 CL_PROP_ARRAY_MASK 0x2000 CL_PROP_PINNED_MASK 0x4000 CL_PROP_FINALIZABLE_MASK 0x8000 CL_PROP_ALIGNMENT_MASK 0x0FFF
Genereated on Tue Mar 11 19:25:34 2008 by Doxygen.
(c) Copyright 2005, 2008 The Apache Software Foundation or its licensors, as applicable.