} else {
Object[] objArr = (Object[]) o;
int elemSiz = bytes.getInt(en.pointerPos+8);
siz = Array.getLength(o) * elemSiz;
int tmpIndex = index;
Bytez templatearr = null;
boolean hasClzId = false;
if ( onHeapStruct instanceof FSTArrayElementSizeCalculator ) {
Class elemClz = ((FSTArrayElementSizeCalculator)onHeapStruct).getElementType(en.fi.getField(),this);
if ( elemClz != null ) {
int clid = getClzId(elemClz);
bytes.putInt(en.pointerPos + 12, clid);
hasClzId = true;
}
}
if (en.template != null) {
templatearr = toByteArray(en.template); // fixme: unnecessary alloc
if ( ! hasClzId ) {
bytes.putInt(en.pointerPos + 12, getClzId(en.template.getClass()));
hasClzId = true;
}
}
for (int j = 0; j < objArr.length; j++) {
Object objectValue = objArr[j];
if ( templatearr != null ) {
// unsafe.copyMemory(templatearr,FSTStruct.bufoff,bytes,FSTStruct.bufoff+tmpIndex,templatearr.length);
templatearr.copyTo(bytes,tmpIndex,0,templatearr.length());
tmpIndex+=elemSiz;
} else {
if ( objectValue == null ) {
bytes.putInt(tmpIndex + 4, -1);
tmpIndex += elemSiz;