--- a/Object.st Mon Jan 20 12:52:22 1997 +0100
+++ b/Object.st Mon Jan 20 17:11:45 1997 +0100
@@ -4265,7 +4265,7 @@
REGISTER int nbytes;
REGISTER OBJ myClass;
- REGISTER int flags;
+ REGISTER INT flags;
/*
* notice the missing test for self being a nonNilObject -
@@ -4277,22 +4277,24 @@
- OHDR_SIZE
- __OBJS2BYTES__(__intVal(__ClassInstPtr(myClass)->c_ninstvars));
- flags = __intVal(__ClassInstPtr(myClass)->c_flags) & ARRAYMASK;
+ flags = (INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK);
/*
* replaced switch by open-if; this is slightly faster since
* it avoids the range check and also checks the most common case first
*/
- if ((flags == POINTERARRAY)
- || (flags == WKPOINTERARRAY)) {
+ if (flags == __MASKSMALLINT(POINTERARRAY)) {
RETURN ( __MKSMALLINT(__BYTES2OBJS__(nbytes)) );
}
- if (flags == BYTEARRAY) {
+ if (flags == __MASKSMALLINT(BYTEARRAY)) {
RETURN ( __MKSMALLINT(nbytes / sizeof(char)) );
}
- if (flags == FLOATARRAY) {
+ if (flags == __MASKSMALLINT(WKPOINTERARRAY)) {
+ RETURN ( __MKSMALLINT(__BYTES2OBJS__(nbytes)) );
+ }
+ if (flags == __MASKSMALLINT(FLOATARRAY)) {
RETURN ( __MKSMALLINT(nbytes / sizeof(float)) );
}
- if (flags == DOUBLEARRAY) {
+ if (flags == __MASKSMALLINT(DOUBLEARRAY)) {
#ifdef NEED_DOUBLE_ALIGN
/*
* care for filler
@@ -4301,10 +4303,10 @@
#endif
RETURN ( __MKSMALLINT(nbytes / sizeof(double)) );
}
- if ((flags == WORDARRAY) || (flags == SWORDARRAY)) {
+ if ((flags == __MASKSMALLINT(WORDARRAY)) || (flags == __MASKSMALLINT(SWORDARRAY))) {
RETURN ( __MKSMALLINT(nbytes / sizeof(short)) );
}
- if ((flags == LONGARRAY) || (flags == SLONGARRAY)) {
+ if ((flags == __MASKSMALLINT(LONGARRAY)) || (flags == __MASKSMALLINT(SLONGARRAY))) {
RETURN ( __MKSMALLINT(nbytes / sizeof(long)) );
}
%}.
@@ -5537,6 +5539,6 @@
!Object class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.164 1997-01-18 16:41:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.165 1997-01-20 16:11:45 cg Exp $'
! !
Object initialize!