Ejemplo n.º 1
0
        private unsafe void ScanArray(uint ptr, DynamicArrayTypeInfo type)
        {
            if (ptr == 0)
            {
                return;
            }

            var heapRef = Get(ptr);

            heapRef.Mark = true;

            // grab length
            uint length;

            using (var handle = heapRef.Memory.Pin(0))
            {
                length = *((uint *)handle.Ptr);
            }

            int elemOffset = 4;

            for (int i = 0; i < length; i++)
            {
                Scan(heapRef.Memory, elemOffset, type.ElementType);
                elemOffset += type.ElementType.SizeOf();
            }
        }
Ejemplo n.º 2
0
 public uint NewArray(DynamicArrayTypeInfo arrayTypeInfo, int arraySize)
 {
     return(NewArray(arrayTypeInfo, arrayTypeInfo.ElementType, arraySize));
 }