458 __qAlignedNew(nObj, sz); /* OBJECT ALLOCATION */ |
458 __qAlignedNew(nObj, sz); /* OBJECT ALLOCATION */ |
459 __UNPROTECT2__(self, something); |
459 __UNPROTECT2__(self, something); |
460 |
460 |
461 if (nObj) { |
461 if (nObj) { |
462 __InstPtr(nObj)->o_class = Array; |
462 __InstPtr(nObj)->o_class = Array; |
|
463 __STORE(nObj, Array); |
463 |
464 |
464 nIndex = __BYTES2OBJS__(sz - OHDR_SIZE - sizeof(OBJ)); |
465 nIndex = __BYTES2OBJS__(sz - OHDR_SIZE - sizeof(OBJ)); |
465 /* |
466 /* |
466 * sorry: |
467 * sorry: |
467 * cannot use bcopy, since we must take care of stores ... |
468 * cannot use bcopy, since we must take care of stores ... |
1392 { |
1393 { |
1393 int n4 = endIndex-index+1; |
1394 int n4 = endIndex-index+1; |
1394 |
1395 |
1395 memset4(dst, anObject, n4); |
1396 memset4(dst, anObject, n4); |
1396 } |
1397 } |
1397 __STORE(self, anObject); |
|
1398 #else |
1398 #else |
1399 # ifdef FAST_MEMSET |
1399 # ifdef FAST_MEMSET |
1400 if ((INT)anObject == 0) { |
1400 if ((INT)anObject == 0) { |
1401 memset(dst, 0, __OBJS2BYTES__(endIndex-index+1)); |
1401 memset(dst, 0, __OBJS2BYTES__(endIndex-index+1)); |
1402 } else |
1402 } else |
1555 } else { |
1555 } else { |
1556 REGISTER int spc; |
1556 REGISTER int spc; |
1557 |
1557 |
1558 spc = __qSpace(self); |
1558 spc = __qSpace(self); |
1559 #if defined(UNROLL_LOOPS) |
1559 #if defined(UNROLL_LOOPS) |
1560 while (count >= 4) { |
1560 while (count >= 8) { |
1561 t = src[0]; dst[0] = t; __STORE_SPC(self, t, spc); |
1561 t = src[0]; dst[0] = t; __STORE_SPC(self, t, spc); |
1562 t = src[1]; dst[1] = t; __STORE_SPC(self, t, spc); |
1562 t = src[1]; dst[1] = t; __STORE_SPC(self, t, spc); |
1563 t = src[2]; dst[2] = t; __STORE_SPC(self, t, spc); |
1563 t = src[2]; dst[2] = t; __STORE_SPC(self, t, spc); |
1564 t = src[3]; dst[3] = t; __STORE_SPC(self, t, spc); |
1564 t = src[3]; dst[3] = t; __STORE_SPC(self, t, spc); |
1565 count -= 4; src += 4; dst += 4; |
1565 t = src[4]; dst[4] = t; __STORE_SPC(self, t, spc); |
|
1566 t = src[5]; dst[5] = t; __STORE_SPC(self, t, spc); |
|
1567 t = src[6]; dst[6] = t; __STORE_SPC(self, t, spc); |
|
1568 t = src[7]; dst[7] = t; __STORE_SPC(self, t, spc); |
|
1569 count -= 8; src += 8; dst += 8; |
1566 } |
1570 } |
1567 #endif |
1571 #endif |
1568 while (count-- > 0) { |
1572 while (count-- > 0) { |
1569 t = *src++; |
1573 t = *src++; |
1570 *dst++ = t; |
1574 *dst++ = t; |