Annotation of objc/ChangeLog, revision 1.1

1.1     ! root        1: Changes from Ali to all the string class files. (12/23/92)
        !             2: Changes from Derek to deal with name conflicts.
        !             3: 
        !             4: Cleaned up some warnings (7/23/91):
        !             5: 
        !             6:        * Makefile (COMMONFLAGS):  Changed -Wimplicit to -Wall.
        !             7:        Let's make this compile without warnings!
        !             8: 
        !             9:        * List.m, Storage.m (read:, write:):  Changed to return self.
        !            10: 
        !            11:        * <various files>:  Removed all unused local variables.
        !            12: 
        !            13: Added support for string objects (7/23/91):
        !            14: 
        !            15:        * NXString.m, NXCharacterSet.m, unichar.h, StringTest.m:  New files.
        !            16: 
        !            17:        * Makefile (LOCAL_CLASSES):  Added NXString.m and NXCharacterSet.m
        !            18: 
        !            19:        * Makefile (LOCAL_INCFILES):  Added unichar.h
        !            20: 
        !            21:        * objc-runtime.m (_objc_fixup_string_object_class):  New routine.
        !            22:        If NXConstantString is present in class hash table, copy it to
        !            23:        _NXConstantString_class and insert this address in class hashtable.
        !            24: 
        !            25:        * objc-runtime.m (_objcInit):  Call new routine after classes have
        !            26:        been fixed up (in _objc_map_selectors).
        !            27: 
        !            28:        * objc-globaldata.m (_NXConstantString_class):  New global variable.
        !            29:        Reduce pad by 36 bytes to compensate.
        !            30: 
        !            31:        * spec_sys:  Added slots for NXCompareCharacters(), NXEmptyString(),
        !            32:        and NXFindCharacters().  Added files NXString.o and NXCharacterSet.o
        !            33:        These changes will need to be integrated into libsys's copy.
        !            34: 
        !            35: Changed -[Object copy] (7/24/91):
        !            36: 
        !            37:        * Object.m (copy):  Chnaged to return [self copyFromZone: [self zone]]
        !            38:        rather than using _copy.  The function object_copy() is no longer used
        !            39:        by the runtime system, and could probably be removed.
        !            40: 
        !            41:        * List.[hm] (copy):  Deleted redundant method.
        !            42: 
        !            43:        * Storage.[hm] (copy):  Deleted redundant method.
        !            44: 
        !            45:        * HashTable.[hm] (copy):  Deleted redundant method.
        !            46: 
        !            47:        * NXString.[hm] (copy):  Deleted redundant method.
        !            48: 
        !            49:        * NXCharacterSet.[hm] (copy):  Deleted redundant method.
        !            50: 
        !            51: Changed method names in Storage (7/24/91):
        !            52: 
        !            53:        * Storage.[hm] (replaceElementAt:with:)  Changed from replace:at:
        !            54:        and added 2.0 compatibility method in implementation only.
        !            55: 
        !            56:        * Storage.[hm] (insertElement:at:)  Changed from insert:at:
        !            57:        and added 2.0 compatibility method in implementation only.
        !            58: 
        !            59:        * Storage.[hm] (removeElementAt:)  Changed from removeAt:
        !            60:        and added 2.0 compatibility method in implementation only.
        !            61: 
        !            62: Cleaned up Makefile slightly (7/24/91):
        !            63: 
        !            64:        * Makefile (BY_PRODUCTS):  Added objcopt so that make clean removes
        !            65:        all files not installed by make installsrc.
        !            66: 
        !            67: Fixed bug #14923 in HashTable (7/24/91):
        !            68: 
        !            69:        * HashTable.m (nextState:key:value:):  Set key and value to NULL
        !            70:        when returning NO.
        !            71: 
        !            72: Fixed bug #14309 in Storage (7/24/91):
        !            73: 
        !            74:        * Storage.m (setNumSlots:):  Changed incorrect test
        !            75:        (numSlots > maxElements) to (maxElements > old).
        !            76: 
        !            77:        * Storage.m (setNumSlots:):  Changed to use a single realloc.
        !            78: 
        !            79: Fixed bug #5687 in hashtable (7/24/91):
        !            80: 
        !            81:        * hashtable.h (NXHashInsertIfAbsent):  Improved comment.
        !            82: 
        !            83: Added appendList: method (dmoore 7/24/91)
        !            84: 
        !            85:        * List.m, List.h added method.
        !            86:        
        !            87: Added maptable functionality (dmoore 7/24/91)
        !            88: 
        !            89:        * maptable.c maptable.m
        !            90: 
        !            91: Removed typedef for id when compiling Objective-C (7/26/91):
        !            92: 
        !            93:        * objc.h (id):  Do not define typedef for id when compiling
        !            94:        Objective-C (when __OBJC__ is predefined).
        !            95:        
        !            96: Made Objective C check for duplicate classes and use the one in the application
        !            97:        (dmoore 7/27/91)
        !            98:        
        !            99:        * objc-runtime.m:  Added following functions:
        !           100:                _objc_inform:   Just prints message for now.
        !           101:                _resolveClassConflict: Makes sure that old class goes back in
        !           102:                        if it's from the app.
        !           103:                _nameForHeader: Returns the name of an image.
        !           104:                _getExecHeader: Picks out the app header.
        !           105:                _headerForClass: Finds the mach_header containing a class.
        !           106:                
        !           107:                Modified _objc_get_classes to check for duplicates.
        !           108:                
        !           109: Added maptable prototypes to objc-globaltext.m (dmoore 7/27/91)
        !           110: 
        !           111: Modified spec_sys to include NXString and maptable stuff.
        !           112: 
        !           113: snaroff (7/31/91):
        !           114: 
        !           115: Integrate blaines kernel mods in a rational way.
        !           116: 
        !           117: Renamed "_objc_internal_error" to "_objc_inform"...removed "_objc_inform",
        !           118: they were nearly identical (snaroff 7/31/91)
        !           119: 
        !           120: Create file "objc-errors.m"...it includes _objc_fatal, _objc_inform,
        !           121: __objc_error, and _objc_error. MUST ADD _objc_inform and NXLogError to list 
        !           122: of private externs!!!!!
        !           123: 
        !           124: Call _objc_fatal() instead of perror() in objc-sel.m...callings perror in these situations is bogus.
        !           125: 
        !           126: Have hashtable use NXLogError instead of fprintf(). 
        !           127: 
        !           128: Add field to objc_class for protocols...add protocol templates to objc-class.h
        !           129: 
        !           130: Installed new NXString files from ali (8/3/91):
        !           131: 
        !           132:        * NXString.[hm]:  Most methods are now statically typed.
        !           133:        
        !           134:        * NXStringTest.m  Changes to match.
        !           135: 
        !           136: Changes for clean compilation with new compiler (8/3/91):
        !           137: 
        !           138:        * Makefile (objcopt):  Use -ObjC flag with objc-edit.c
        !           139: 
        !           140:        * objcedit.c (round):  Made declaration global as well as definition.
        !           141: 
        !           142:        * objcedit.c (map_input):  Cast third arg to map_fd().
        !           143: 
        !           144:        * objcopt.c (get_objc):  Cast to (SEL *) two places.
        !           145: 
        !           146:        * objc-sel.m (_sel_writeHashTable):  Cast to (POHASH) two places.
        !           147: 
        !           148:        * objc-class.m (cache_flush, _cache_expand, _cache_flush):
        !           149:        Made iteration variable unsigned.
        !           150: 
        !           151:        * hashtable.m (CopyIntoReadOnly):  Made iteration variable unsigned.
        !           152: 
        !           153:        * typedstream.m (InternalWriteObject):  Cleaned up printf format
        !           154:        specifiers to match args.
        !           155: 
        !           156:        * typedstreamprivate.h:  Changed all function declarations to static.
        !           157: 
        !           158:        * objc-utils.m:  Cleaned up printf format specifiers to match args.
        !           159: 
        !           160:        * NXString.m (getBytes:range:, getCharacters:range:, NXFindCharacters,
        !           161:        find:range:flags:usingTable:, _debugPrint):
        !           162:        Made iteration variable unsigned.
        !           163: 
        !           164:        * NXCharacterSet.m (init, addCharacters:length:,
        !           165:        removeCharacters:length:):  Made iteration variable unsigned.
        !           166: 
        !           167: Improvements to NXConstantString's (8/12/91):
        !           168: 
        !           169:        * NXString.[hm] (new):  Add version which raises exception.
        !           170: 
        !           171:        * NXString.[hm] (copyFromZone:):  Return an NXReadOnlyString copy
        !           172:        instead of self, since our code might be unloaded.
        !           173: 
        !           174:        * NXString.[hm] (write:):  Write an NXReadOnlyString copy.
        !           175: 
        !           176:        * NXString.[hm] (finishUnarchiving):  Removed.
        !           177: 
        !           178:        * NXString.[hm] (free):  This now raises an error, since copyFromZone:
        !           179:        no longer returns self.  You never allocate NXConstantString's, so you
        !           180:        should never free them.
        !           181: 
        !           182:        * NXString.m (LENGTHFROMSTRING):  Removed, since it is no longer used.
        !           183: 
        !           184: Fix for crashers with NULL symtab in module descriptors (8/12/91):
        !           185: 
        !           186:        * objc-runtime.m (_objc_add_categories, _objc_get_classes,
        !           187:        _objc_map_selectors, _objc_callLoads):  Check symtab for NULL.
        !           188: 
        !           189:        * objc-runtime.m:  Changed more iteration variables to unsigned.
        !           190: 
        !           191: Split up NXString.m (8/12/91):
        !           192: 
        !           193:        * NXStringPrivate.h:  New private header file.
        !           194:        * NXMutableString.m:  New file.
        !           195:        * NXSimpleReadOnlyString.m  New file.
        !           196:        * NXReadOnlyString.m  New file.
        !           197:        * NXReadOnlySubstring.m  New file.
        !           198:        * NXUniquedString.m  New file.
        !           199:        * NXConstantString.m  New file.
        !           200:        * NXReadWriteString.m  New file.
        !           201: 
        !           202:        * Makefile (PRIVATE_INCFILES, LOCAL_CLASSES):  Added new files.
        !           203: 
        !           204:        * spec_sys:  Added new files, and new function _NXStringZone().
        !           205: 
        !           206: Added runtime support for Protocols (snaroff 8/21/91):
        !           207: 
        !           208:        * Protocol.h, Protocol.m: additions.
        !           209: 
        !           210:        * objc-class.h: removed temporary structs that described protocols.
        !           211: 
        !           212:        * Changed Makefile for libkobjc.a
        !           213: 
        !           214: == New version objc-39 ==
        !           215: 
        !           216: Renamed release notes file (9/3/91):
        !           217: 
        !           218:        * ObjCNotes.rtf:  Renamed from ReleaseNotes-3.0.rtf
        !           219: 
        !           220:        * ObjC.rtf-2.0:  Renamed from ReleaseNotes-2.0.rtf
        !           221: 
        !           222:        * Makefile:  Install ObjCNotes.rtf instead of ReleaseNotes-3.0.rtf.
        !           223: 
        !           224: Fixed bugs with NXString's (9/3/91):
        !           225: 
        !           226:        * NXString.m (isEqual:):  Check [anObject isKindOf: NXString]
        !           227:        before going too far.  Also return quickly when self and string are
        !           228:        the same pointer.
        !           229: 
        !           230: Fixed problems with local include files (9/3/91):
        !           231: 
        !           232:        * <all header files>:  Use <objc/foo.h> rather than "foo.h" when
        !           233:        including objc header files.
        !           234: 
        !           235:        * Makefile:  Add "-I." flag to be sure that local copies of header
        !           236:        files are used.  This relies on the fact that there is symlink from
        !           237:        objc to ".".  I hope that SGS can handle this.
        !           238: 
        !           239: Added new NXString release notes from Ali (9/6/91):
        !           240: 
        !           241:        * ObjCNotes.rtf
        !           242: 
        !           243: Picked up fixes to NXString from Ali (9/6/91):
        !           244: 
        !           245:        * NXMutableString.m NXReadWriteString.m NXSimpleReadOnlyString.m
        !           246:        NXString.[hm] StringTest.m:  Use new versions.
        !           247: 
        !           248:        * spec_sys:  Removed entry for NXEmptyString().
        !           249: 
        !           250: Fix for order dependency in objc_loadModules (9/6/91):
        !           251: 
        !           252:        * objc-load.m (objc_loadModules):  Place all classes in class
        !           253:        hashtable before trying to install relationships.  (Bug #15804)
        !           254: 
        !           255: Installed improved messenger (9/26/91):
        !           256: 
        !           257:        * objc-msg.s:  New file.  Increases speed 30% on '040 while decreasing
        !           258:        it 20% on '030.
        !           259: 
        !           260:        * objc-class.m (_cache_create):  Also install new cache into class.
        !           261: 
        !           262:        * objc-class.m (class_respondsToMethod, class_lookupMethod,
        !           263:        _class_lookupMethodInCache):  No longer install new cache, since
        !           264:        _cache_create now does this.
        !           265: 
        !           266: Fixed minor memory leak with Protocols (9/26/91):
        !           267: 
        !           268:        * Protocol.m (load):  Free space returned by getmachheaders().
        !           269: 
        !           270: Integrated latest NXString classes from Ali (9/26/91)
        !           271: 
        !           272: Made maptable API private (9/26/91):
        !           273: 
        !           274:        * (Makefile):  Install maptable.h into /LocalDeveloper/Headers/objc.
        !           275: 
        !           276: Removed obsolete third arg to _class_lookupMethodAndLoadCache (10/4/91):
        !           277: 
        !           278:        * objc-class.m (_class_lookupMethodAndLoadCache):  Use objc_getClass
        !           279:        to get class object from meta-class object, rather than relying on
        !           280:        old selfref arg.
        !           281: 
        !           282:        * objc-msg.s, objc-dispatch.c, objc-class.m, objc-private.h:
        !           283:        Delete third arg to _class_lookupMethodAndLoadCache().
        !           284: 
        !           285: Restored broken detection of messages sent to freed objects (10/4/91):
        !           286: 
        !           287:        * objc-class.m (freedObjectClass, emptyCache):  New static
        !           288:        class object which has a permanently empty cache.
        !           289: 
        !           290:        * objc-class.m (_class_lookupMethodAndLoadCache):  Check for dummy
        !           291:        freed object class rather than Nil.
        !           292: 
        !           293:        * objc-class.m, objc-private.h (_objc_getFreedObjectClass):  Function
        !           294:        to return new dummy freed object class (private extern).
        !           295: 
        !           296:        * Object.m (_object_dispose, _object_reallocFromZone):  Set isa
        !           297:        pointer to freed object class rather than Nil.
        !           298: 
        !           299:        * spec_sys:  Make _objc_getFreedObjectClass() a private extern.
        !           300: 
        !           301: Removed call to _cache_create() in messenger (10/4/91):
        !           302: 
        !           303:        * objc-class.m (_class_install_relationships):  Initialize all
        !           304:        classes and meta-classes to point to emptyCache.
        !           305: 
        !           306:        * objc-class.m (_cache_expand):  Call _cache_create if old cache
        !           307:        is emptyCache.
        !           308: 
        !           309:        * objc-class.m (_cache_fill):  Check to see if cache must be expanded
        !           310:        before inserting method into existing cache.
        !           311: 
        !           312:        * objc-msg.s (objc_msgSend, objc_msgSendSuper):  No longer check
        !           313:        class->cache for NULL and call _cache_create().
        !           314: 
        !           315: Modify cache flushing to handle emptyCache (10/7/91):
        !           316: 
        !           317:        * objc-class.m (_cache_flush):  Check for emptyCache.
        !           318: 
        !           319:        * objc-class.m (cache_flush):  Removed duplicate function.
        !           320:        (This version didn't reset the occupied count correctly.)
        !           321: 
        !           322:        * objc-class.m (flush_caches):  Use _cache_flush() rather than
        !           323:        cache_flush().
        !           324: 
        !           325: Make sure dynamically added classes have caches (10/7/91):
        !           326: 
        !           327:        * objc-runtime.m (objc_addClass):  Call _cache_create() if needed
        !           328:        for both the class and its metaclass.
        !           329: 
        !           330: Change strategy for archiving NXConstantString's (10/8/91):
        !           331: 
        !           332:        * NXConstantString.m:  Allow NXConstantString's to be alloc'ed,
        !           333:        but raise in the designated initializer.  Simply inherit read and
        !           334:        write methods from NXSimpleReadOnlyString, but create a
        !           335:        finishUnarchiving method which returns an NXReadOnlyString.
        !           336: 
        !           337:        * NXString.h:  Update comments regarding NXConstantString's.
        !           338: 
        !           339: Fixes for shlib problems (10/8/91):
        !           340: 
        !           341:        * NXString.m, NXStringPrivate.h:  Renamed errorRaise() to
        !           342:        _NXStringErrorRaise().
        !           343: 
        !           344:        * spec_sys:  Make _NXStringErrorRaise() a private extern.
        !           345: 
        !           346:        * spec_sys:  Create branch slots for NXHashCharacters() and
        !           347:        NXLoadLocalStringFromTableInBundle().
        !           348: 
        !           349: Added wrapping #ifndef's to all header files (10/9/91)
        !           350: 
        !           351: Added support for initializing string objects (10/11/91):
        !           352: 
        !           353:        * objc-runtime.m (_objc_fixup_string_objects):  Initialize isa
        !           354:        pointers of all NXConstantString objects in __string_object section.
        !           355: 
        !           356:        * objc-runtime.m (_objcInit):  Call _objc_fixup_string_objects().
        !           357: 
        !           358: Simplify code for objc_getMetaClass() (10/14/91):
        !           359: 
        !           360:        * objc-runtime.m (objc_getMetaClass):  Call objc_getClass()
        !           361:        rather than duplicating logic.  This avoids a potential bug
        !           362:        where objc_getMetaClass() wasn't checking for class aliases.
        !           363: 
        !           364: == New version objc-45 ==
        !           365: 
        !           366: Removed support for old string object strategy (10/28/91):
        !           367: 
        !           368:        * objc-globaldata.m (_NXConstantString_class):  Removed.
        !           369: 
        !           370:        * objc-private.h (_NXConstantString_class):  Removed.
        !           371: 
        !           372:        * objc-runtime.m (objc_fixup_string_object_class):  Removed.
        !           373: 
        !           374:        * objc-runtime.m (_objcInit):  Removed call to
        !           375:        objc_fixup_string_object_class().
        !           376: 
        !           377:        * objc-runtime.m (_objcInit):  Removed bogus arg to _objcInit(),
        !           378:        since crto0 calls _objcInit with no args.
        !           379: 
        !           380: Fix to account for changes with common makefiles (10/28/91)
        !           381: 
        !           382:        * Makefile:  Default SHLIBIDIR to /usr/local/src/libsys.  Also added
        !           383:        -DSHLIB and defined VERSFLAGS.
        !           384: 
        !           385: Support for thread safety (11/13/91):
        !           386: 
        !           387:        * objc-private.h (_objc_multithread_mask):  Declare.
        !           388: 
        !           389:        * objc-runtime.m h (_objc_multithread_mask):  Initialize to -1.
        !           390: 
        !           391:        * objc-private.h (OBJC_LOCK, OBJC_UNLOCK):  New macros.  Test
        !           392:        _objc_multithread_mask before using locks.  For now, log a message
        !           393:        whenever an attempt to gain a lock fails.
        !           394: 
        !           395:        * objc-runtime.m (_objc_multithreaded): Set _objc_multithread_mask
        !           396:        to 0 or -1.
        !           397: 
        !           398:        * spec_sys:  Make _objc_multithread_mask a private extern.
        !           399:        Also add branch table slot for _objc_multithreaded.
        !           400: 
        !           401: Changes to lock access to selector hashtable (11/13/91):
        !           402: 
        !           403:        * objc-sel.m (selectorLock):  Initialize.
        !           404: 
        !           405:        * objc-sel.m (sel_isMapped, _sel_getMaxUid, sel_getName,
        !           406:          _sel_registerName, _sel_registerNameUseString,
        !           407:          _sel_unloadSelectors, sel_getUid):  Protect operations with lock.
        !           408: 
        !           409: Changes to lock access to class hashtable (11/13/91):
        !           410: 
        !           411:        * objc-sel.m (classLock):  Initialize.
        !           412: 
        !           413:        * objc-runtime.m (objc_getClass, objc_getClassWithoutWarning,
        !           414:          objc_addClass):  Protect operations with lock.
        !           415: 
        !           416:        * objc-class.m (flush_caches, class_poseAs):  Protect operations with
        !           417:        lock.
        !           418: 
        !           419:        * objc-load.m (objc_loadModules, objc_unloadModules):  Lock class
        !           420:        hashtable while inserting new classes.
        !           421: 
        !           422:        * Protocol.m (fixup_classes):  Protect operations with lock.
        !           423: 
        !           424:        * spec_sys:  Make selectorLock a private extern.
        !           425: 
        !           426: Changes to lock dynamic loading/unloading (11/13/91):
        !           427: 
        !           428:        * objc-sel.m (loadLock):  Initialize.
        !           429: 
        !           430:        * objc-load.m (objc_loadModules, objc_unloadModules):
        !           431:        Protect operations with lock.
        !           432: 
        !           433: Changes to lock messaging (11/13/91):
        !           434: 
        !           435:        * objc-class.m (messageLock):  Initialize.
        !           436: 
        !           437:        * objc-class.m (class_initialize, class_respondsToMethod,
        !           438:        class_lookupMethod):  Protect operations with lock.
        !           439: 
        !           440:        * objc-msg-m68k.s:  Protect operations with lock.
        !           441: 
        !           442:        * spec_sys:  Make messageLock a private extern.
        !           443: 
        !           444: Removed obsolete kruft (11/11/91):
        !           445: 
        !           446:        * objc-load.m (objc_loadModule, objc_unloadLastModule):  Removed.
        !           447: 
        !           448:        * spec_sys (objc_loadModule, objc_unloadLastModule):  Removed
        !           449:        branch table slots.
        !           450: 
        !           451:        * objc-class.m (_freedName, _nilName):  Removed.
        !           452: 
        !           453:        * objc-class.m (_class_lookupMethodInCache):  Removed (unused).
        !           454: 
        !           455: Reduced read/write data size (11/12/91):
        !           456: 
        !           457:        * objc-class.m:  Made error messages const.
        !           458: 
        !           459:        * objc-error.m (_objc_error, __objc_error, _objc_fatal, _objc_inform):
        !           460:        Take const char *'s rather than char *'s.
        !           461: 
        !           462:        * objc-runtime.h (_error):  Take const char * rather than char *.
        !           463: 
        !           464:        * Object.m:  Made error messages const.
        !           465: 
        !           466:        * Object.[hm] (error:):  Take const char * rather than STR.
        !           467: 
        !           468: Removed all precompiled header warnings in debug version (11/12/91)
        !           469: 
        !           470: Eliminated warnings about functions not returning values (11/18/91):
        !           471: 
        !           472:        * objc-errors.m (__objc_error, _objc_error, _objc_fatal):
        !           473:        Declare volatile.
        !           474: 
        !           475:        * objc-errors.m (__objc_error):  Call _objc_error() if (*_error)()
        !           476:        returns.
        !           477: 
        !           478:        * Object.m (error:,...):Call _objc_error() if (*_error)() returns.
        !           479: 
        !           480:        * except.c (NXDefaultExceptionRaiser):  Declared volatile.
        !           481: 
        !           482:        * except.c (_NXRaiseError):  Call abort() if (*ExceptionRaiser)()
        !           483:        returns.
        !           484: 
        !           485:        * typedstream.m (classError, typeDescriptorError, writeRefError):
        !           486:        Declared volatile.
        !           487: 
        !           488: Don't assume that ints may be addressed on short boundaries (11/18/91):
        !           489: 
        !           490:        * objc-runtime.m (classIsEqual):  Only check first char before
        !           491:        calling strcmp().
        !           492: 
        !           493: Fix cache flushing when removing category class methods (11/18/91):
        !           494: 
        !           495:        * objc-runtime.m (flush_caches):  Flush instance methods for classes
        !           496:        and class methods for metaclasses.  Delete obsolete meta argument.
        !           497: 
        !           498:        * objc-runtime.m (class_addInstanceMethods, class_removeMethods):
        !           499:        Delete obsolete meta arg in calls to flush_caches().
        !           500: 
        !           501:        * objc-runtime.m (class_addClassMethods):  Simply call
        !           502:        class_addInstanceMethods() with the metaclass.
        !           503: 
        !           504: Fix for cache size bug (11/18/91):
        !           505: 
        !           506:        * objc-class.m (_cache_fill):  Fix bug whereby the cache occupied count
        !           507:        wasn't reset when caches were grown.  This bug was introduced when
        !           508:        the emptyCache code was added.
        !           509: 
        !           510: API changes for Don (11/19/91):
        !           511: 
        !           512: Fixes to dynamic loading (11/20/91):
        !           513: 
        !           514:        * objc-load.m (objc_loadModules):  Insert all classes into class
        !           515:        hashtable before calling _class_install_relationships() to avoid
        !           516:        order probelms.  Also improved error handling greatly.  All code
        !           517:        is unloaded on errors, and the class hashtable is left unmodified.
        !           518: 
        !           519: Changes to lock protocols (11/21/91):
        !           520: 
        !           521:        * Protocol.m (protocolLock):  Initialize.
        !           522: 
        !           523:        * Protocol.m (fixup_classes, _register:numElements:,
        !           524:        _fixup:numElements:, getProtocolNamed:):  Protect operations with lock.
        !           525: 
        !           526: Fix for NX_VALRETURN problem (11/21/91):
        !           527: 
        !           528:        * error.h (NX_VALRETURN):  Evaluate argument inside current exception
        !           529:        context.
        !           530: 
        !           531:        * error.h (NX_VALRETURN, NX_VOIDRETURN):  Use do {...} while (0) to
        !           532:        swallow the semicolon.
        !           533: 
        !           534: Added "extern" to all function prototypes in header files (11/21/91)
        !           535: 
        !           536: Fix for deadlock problem (12/2/91):
        !           537: 
        !           538:        * objc-load.m (objc_loadModules):  Avoid deadlock problem with
        !           539:        string objects.  Do not lock class hashtable at all.  Removed direct
        !           540:        access to class hashtable.
        !           541: 
        !           542: == New version objc-49 ==
        !           543: 
        !           544: Fix for NXBundle load-error messages (12/19/91):
        !           545: 
        !           546:        * NXBundle.m (ensureLoaded):  Error message was backwards.
        !           547: 
        !           548: == New version objc-50 ==
        !           549: 
        !           550: Fix for NXBundle load-error messages (1/2/92):
        !           551: 
        !           552:        * NXString.h (NXSTRING_ERROR_BASE):  Renamed to NX_STRING_ERROR_BASE
        !           553:        per FCC change (Bug #17201).
        !           554: 
        !           555: Added support for C++ runtime startup (1/14/92):
        !           556: 
        !           557:        * cplus_init.c:  New file.  Contains one entry point, _cplus_init()
        !           558:        which calls all the constructors in the image and registers all of
        !           559:        the destructors with atexit().  It also contains the definition of
        !           560:        the symbols .constructors_used and .destructors_used, so that this
        !           561:        function can be pulled in as needed by the compiler.
        !           562: 
        !           563:        * Makefile:  Added new file cplus_init.c to Makefile.
        !           564: 
        !           565:        * spec_sys:  Added new file cplus_init.o and new entry point
        !           566:        _cplus_init().
        !           567: 
        !           568:        * spec_sys:  Also mark .constructors_used and .destructors_used as
        !           569:         nobranch_text symbols, since they don't need branch table entries
        !           570:         (they are just flag symbols).
        !           571: 
        !           572: Added new string optimizations from Ali (1/24/92):
        !           573: 
        !           574:        * NXString.[hm], NXSimpleReadOnlyString.m, NXReadWriteString.m
        !           575: 
        !           576:        * StringTest.m:  New tests from Ali also.
        !           577: 
        !           578: Fixed minor leak in +[NXString initialize] (1/27/92):
        !           579: 
        !           580:        * NXString.m (initialize):  Test static variable to avoid initializing
        !           581:        twice.  Testing for [self class] == [NXString class] isn't good
        !           582:        enough since users may explicitly call [NXString initialize] more
        !           583:        than once (Workspace was doing this).
        !           584: 
        !           585: Added Makefile target for StringTest (1/27/92):
        !           586: 
        !           587:        * Makefile:  Just say make stringtest after using make debug.
        !           588: 
        !           589: Added support for protocols in categories (1/30/92):
        !           590: 
        !           591:        * objc-class.h (struct objc_category):  Added new protocols field to
        !           592:        record protocols adopted by a category.
        !           593: 
        !           594:        * objc-class.h (struct objc_protocol_list):  Added new next field to
        !           595:        allow Protocols in categories to be chained on to the class just
        !           596:        like methods are.
        !           597: 
        !           598: Added runtime support for protocols in categories (1/31/92):
        !           599: 
        !           600:        * Protocol.m (fixup_classes), objc-load.m (objc_loadModules):
        !           601:         Adjust protocols pointer to compensate for new "next" field in
        !           602:         struct objc_protocol_list.
        !           603: 
        !           604:        * Object.m (conformsTo:, conformsToProtocolNamed:,
        !           605:        descriptionForMethod:, descriptionForInstanceMethod:):
        !           606:        Look for protocols adopted by categories by walking new "next" field.
        !           607:        Be sure not to reference "next" field in old versions.
        !           608: 
        !           609:        * Protocol.m (_fixup:numElements:):  Adjust protocol_list pointer to
        !           610:        compensate for new "next" field in struct objc_protocol_list.  Note
        !           611:        that this field is always ignored in the protocol_list's attached to
        !           612:        protocols, since there is no way to make a protocol adopt additional
        !           613:        protocols using some sort of category on a protocol.  We could even
        !           614:        have used a separate struct here to save space, but this is easier
        !           615:        and more consistent.
        !           616: 
        !           617:        * objc-runtime.m (_objc_add_category):  Append category protocols to
        !           618:        class protocol list.  Added new version argument to deal with version
        !           619:        madness.
        !           620:        
        !           621:        * objc-runtime.m (_objc_add_categories):  Call __objc_add_category()
        !           622:        with new version argument.
        !           623: 
        !           624:        * objc-load.m (objc_loadModules):  Call _objc_add_category()
        !           625:        with new version argument.
        !           626: 
        !           627:        * objc-class.m (_class_removeProtocols):  New function.
        !           628: 
        !           629:        * objc-runtime.m (_objc_remove_category):  Call new function.
        !           630:        Added new version argument to deal with version madness.
        !           631: 
        !           632:        * objc-load.m (objc_unloadModules):  Call _objc_remove_category() with
        !           633:        new version argument.
        !           634: 
        !           635:        * objc-private.h (_objc_add_category, _objc_remove_category):
        !           636:        Add new version argument to prototypes.
        !           637: 
        !           638:        * objc-private.h (_class_removeProtocols):  Add new prototype.
        !           639: 
        !           640:        * spec_sys:  Make _class_removeProtocols() a private extern.
        !           641: 
        !           642: Improved format of objc syslog messages (1/31/92):
        !           643: 
        !           644:        * objc-error.m (NXVLogError):  Deleted.
        !           645: 
        !           646:        * objc-error.m (_objc_error, _objc_inform):  Rewrote to only call
        !           647:        _NXLogError() once.
        !           648: 
        !           649: Removed compatibility alias stuff (2/6/92):
        !           650: 
        !           651:        * objc-runtime.m (alias_map, _objc_addClassAlias,
        !           652:        _objcAddAppkitAliases):  Removed.
        !           653: 
        !           654: Plugged memory leak in caches (2/6/92):
        !           655: 
        !           656:        * objc-class.m (emptyCache):  Made global.
        !           657: 
        !           658:        * objc-private.h (emptyCache):  Declare.
        !           659: 
        !           660:        * spec_sys:  Made emptyCache a private extern.
        !           661: 
        !           662:        * objc-runitime.m (objc_addClass):  Use emptyCache rather than
        !           663:        calling _cache_create().
        !           664: 
        !           665:        * objc-class.m (_class_install_relationships):  Only set caches if
        !           666:        NULL.  They may have already been set by objc_addClass().
        !           667: 
        !           668: Removed internal compatibility code (2/6/92):
        !           669: 
        !           670:        * Object.m (conformsToProtocolNamed, conformsToGivenName):
        !           671:        Removed.
        !           672: 
        !           673:        * Protocol.m (getProtocolNamed:, conformsToProtocolNamed:):  Removed.
        !           674: 
        !           675: Integrated NXBundle changes from Dave (2/6/92):
        !           676: 
        !           677:        * NXBundle.m
        !           678: 
        !           679:        * NXBundlePrivate.h:  New file.
        !           680: 
        !           681:        * Makefile:  Added NXBundlePrivate.h to PRIVATE_INCFILES.
        !           682: 
        !           683: Removed diagnostic from Objective-C locking (2/8/92):
        !           684: 
        !           685:        * objc-private.h (OBJC_LOCK):  No longer call _objc_inform().
        !           686: 
        !           687: Update release notes (2/6/92):
        !           688: 
        !           689:        * ObjCNotes.rtf.
        !           690: 
        !           691: Fixed bogus comment which leads to leaks (2/8/92):
        !           692: 
        !           693:        * hashtable.h:  Changed the comment to say that when the free argument
        !           694:        is NULL, objects are not freed.
        !           695: 
        !           696: == New version objc-51 ==
        !           697: 
        !           698: Fixed problems with objcopt (2/15/92):
        !           699: 
        !           700:        * objc-sel.m (_sel_writeHashTable):  Be sure to zero empty hashtable
        !           701:        entries and next pointers!
        !           702: 
        !           703:        * objcopt.c (get_objc, print_method_list2):  Enter protocol strings
        !           704:        into hashtable also!
        !           705: 
        !           706: Added new debug tool for objcopt (2/15/92):
        !           707: 
        !           708:        * objcopt_print.c:  New testing program.
        !           709: 
        !           710:        * objc-sel.m (_sel_writeSelectors):  New function (#ifdef FREEZE).
        !           711: 
        !           712:        * Makefile:  Added objcopt_print.c
        !           713: 
        !           714: Fixed versioning bug in changes for protocols in categories (2/15/92):
        !           715: 
        !           716:        * Object.m (descriptionForMethod:, descriptionForInstanceMethod):
        !           717:        Check cls->isa->version rather than cls->version.  This bug caused
        !           718:        protocols not to be searched.
        !           719: 
        !           720: Changes for new string sections (2/21/92):
        !           721: 
        !           722:        * objc-runtime.m (_objc_map_selectors):  Use strings from either
        !           723:        or both new-style and old-style string sections.
        !           724: 
        !           725:        * objcopt.c (main):  Use strings form either (but not both) string
        !           726:        sections.
        !           727: 
        !           728: Performance enhancements to execption handlers (2/21/92):
        !           729: 
        !           730:        * except.c (Base, findme):  Allocate first thread's exception stack
        !           731:        statically so that we don't keep an extra page of the heap hot.
        !           732:        These changes require an extra 20 bytes of static data.
        !           733: 
        !           734:        * except.c (BaseAltHandlers, _NXAddAltHandler):  Also statically
        !           735:        allocate a small number of altHandlers so that we never malloc them
        !           736:        in normal usage.  This number is based on the maximum typical depth
        !           737:        of lockFocus'es.  The current value is 12, which requires an extra
        !           738:        144 bytes of static data.
        !           739: 
        !           740: Fixed small leak in _cplus_init() (2/22/92):
        !           741: 
        !           742:        * cplus_init.c (call_constructors, call_destructors):  Free
        !           743:        header list after processing it.
        !           744: 
        !           745: Added warnings in preparation for removing protocol hash table (2/22/92):
        !           746: 
        !           747:        * Protocol.m (fixup_classes, _fixup:numElements:):  Warn about any
        !           748:        reference to protocols by name.
        !           749: 
        !           750: Removed protocol hash table (2/6/92):
        !           751: 
        !           752:        * Protocol.m (protocolHash, protocolLock):  Removed all references.
        !           753: 
        !           754:        * Protocol.m (_register:numElements:):  Removed.
        !           755: 
        !           756:        * objc-load.m (objc_loadModules):  No longer need to call
        !           757:        [Protocol _register:numElements:].
        !           758: 
        !           759:        * Protocol.m (load):  Only make one pass over protocols (to look for
        !           760:        old versions, and to adjust protocol_list pointers for "next" field.
        !           761:        Don't attempt to install protocols by name.
        !           762: 
        !           763:        * objc-load.m (objc_loadModules):  Don't attempt to install protocols
        !           764:        by name.  Just zero the protocol list field in this case.
        !           765: 
        !           766: Moved class and selector hashtables into ObjC zone (2/22/92):
        !           767: 
        !           768:        * objc-class.m (_objc_create_zone):  Now return ObjC zone.
        !           769: 
        !           770:        * objc-runtime.m (_objcInit):  Record ObjC zone in new static.
        !           771: 
        !           772:        * objc-runtime.m (_objc_get_classes):  Place class hashtable in
        !           773:        ObjC zone.
        !           774: 
        !           775: == New version objc-52 ==
        !           776: 
        !           777: More performance enhancements to execption handlers (2/21/92):
        !           778: 
        !           779:        * except.c (findme):  Added new handler argument which is used when
        !           780:        removing handlers.  This allows us to eliminate half of the calls to
        !           781:        cthread_self().  Changed all callers.
        !           782: 
        !           783:        * except.c (Lock, mylock):  Allocate both locks statically.
        !           784: 
        !           785: Fix for deadlock bug in recent exception handler changes (2/24/92):
        !           786: 
        !           787:        * except.c (findme):  Fix deadlock bug in recent changes.
        !           788: 
        !           789: == New version objc-53 ==
        !           790: 
        !           791: Fix for compatibility bug in recent string changes (2/25/92):
        !           792: 
        !           793:        * objc-runtime.m (_objc_map_selectors):  Don't use the largest header
        !           794:        optimization if it contains both new and old style string sections,
        !           795:        since the selectors will not have been uniqued properly.
        !           796: 
        !           797: == New version objc-54 ==
        !           798: 
        !           799: Changes to improve cache utilization (2/24/92):
        !           800: 
        !           801:        * objc-class.m (CACHE_SIZE, META_CACHE_SIZE):  Try using 8 and 4
        !           802:        rather than 16 and 8, to see if we can save some space.
        !           803: 
        !           804:        * objc-class.m (_cache_fill):  Allow caches to be exactly 3/4 full
        !           805:        without growing.  This allows 3 entries in a 4 slot cache, 6 entries
        !           806:        in an 8 slot cache, and 12 entries in a 16 slot cache.  For larger
        !           807:        caches the change is insignificant.  This should result in more
        !           808:        efficient usage of small caches, where chain lengths are small anyway.
        !           809: 
        !           810: Fix for second bug in recent exception handler changes (2/24/92):
        !           811: 
        !           812:        * except.c (_NXAddAltHandler):  When switching from static to heap
        !           813:        allocated alt-handlers, make sure to copy over static data.
        !           814: 
        !           815:        * except.c (BaseAltHandlers):  After testing bug fix, increased
        !           816:        number of statically allocated handlers to 16.  (The color panel
        !           817:        uses 13.)
        !           818: 
        !           819: == New version objc-55 ==
        !           820: 
        !           821: Changes to cache flushing/growing strategy (2/24/92):
        !           822: 
        !           823:        * objc-class.h (CLS_FLUSH_CACHE):  New bit in class data structure
        !           824:        indicates whether the cache should be flushed rather than grown.
        !           825: 
        !           826:        * objc-class.m (_cache_fill):  If the CLS_FLUSH_CACHE bit is set,
        !           827:        flush the cache, otherwise expand it as usual.
        !           828: 
        !           829:        * objc-class.m (_cache_create):  Clear the CLS_FLUSH_CACHE bit.
        !           830: 
        !           831:        * objc-class.m (_cache_flush):  Clear the CLS_FLUSH_CACHE bit.
        !           832:        Changed the argument from a cache pointer to a class pointer.
        !           833: 
        !           834:        * objc-class.m (_cache_expand):  Don't implicitly flush the cache
        !           835:        when expanding it.  Insert the old entries into the new cache.
        !           836:        This is so we don't flush any more than we used to.  Set the
        !           837:        CLS_FLUSH_CACHE bit.
        !           838: 
        !           839: Fixed a latent memory leak in cache flushing (2/24/92):
        !           840: 
        !           841:        * objc-class.m (_cache_flush):  Free any negative cache entries.
        !           842: 
        !           843: Fixed a latent cache bug (2/24/92):
        !           844: 
        !           845:        * objc-class.m (_cache_fill):  Update the mask when expanding the cache
        !           846:        so that we don't insert the entry using the wrong hash.
        !           847: 
        !           848: Changes to reduce maximum chain lengths (2/25/92):
        !           849: 
        !           850:        * objc-class.m (_cache_fill):  Insert new entries at the head of the
        !           851:        chain rather than the tail.  This causes us to add 1 to n chains rather
        !           852:        than adding n to 1 chain.
        !           853: 
        !           854: Removed obsolete functions (2/25/92):
        !           855: 
        !           856:        * objc-sel.m (_sel_registerName):  Removed.  This was present only
        !           857:        for internal shlib compatibility while it was renamed to
        !           858:        sel_registerName().  This obsolete dependency has been removed.
        !           859: 
        !           860:        * objc-sel.m (_sel_getMaxUid):  Removed.  This was only used by debug
        !           861:        routines in objc-utils.m.  It doesn't make sense any more.
        !           862: 
        !           863: Changes to allow freeze-drying of all selector hashtables (2/25/92):
        !           864: 
        !           865:        * objc-sel.m:  A complete rewrite.
        !           866: 
        !           867:        * objc-runtime.m (struct header_info):  Added size and freeze fields.
        !           868: 
        !           869:        * objc-runtime.m (_objc_get_modules):  Sort headers by size, but place
        !           870:        all headers which have a freeze-dried hashtable before all others.
        !           871: 
        !           872:        * objc-runtime.m (_objc_map_selectors):  A complete rewrite.
        !           873: 
        !           874: Changes to reduce the size of the class hashtable (2/28/92):
        !           875: 
        !           876:        * objc-runtime.m (_objc_get_classes):  Create hashtable with an initial
        !           877:        size of class_count rather than 2 * class_count.  This is the criterion
        !           878:        which the hashtable uses internally to decide when to grow.  The
        !           879:        hashtable code also rounds this size up to a power of two.
        !           880: 
        !           881: More changes to reduce the selector hashtable (2/29/92):
        !           882: 
        !           883:        * objc-sel.m (HASH_ALLOC_LIST_SIZE):  Reduced to 40 from 170.
        !           884:        For Draw, this reduces wastage from 688 bytes to 256 bytes.
        !           885:        With this change we call malloc 10 times instead of 3, which
        !           886:        shouldn't be significant.
        !           887: 
        !           888: More changes to reduce method cache size (2/29/92):
        !           889: 
        !           890:        * objc-class.m (CACHE_SIZE):  Reduced from 8 to 4.  After using Draw
        !           891:        heavily, 23% of all instance-method caches are still the minimum size.
        !           892:        They have an average of 3.63 entries, and have a lower efficiency than
        !           893:        other caches.
        !           894: 
        !           895: == New version objc-56 ==
        !           896: 
        !           897: Changes to eliminate separate string zone (3/3/92):
        !           898: 
        !           899:        * NXString.m (initialize):  Just use the default zone for now,
        !           900:        since creating a separate zone seems to hurt more than it helps.
        !           901:        We should probably put this back for 4.0 when it will be used
        !           902:        much more heavily.
        !           903: 
        !           904: Changes to reduce hashing overhead (3/3/92):
        !           905: 
        !           906:        * objc-private.h (_objc_strhash):  New static inline version of old
        !           907:        _sel_hash().
        !           908: 
        !           909:        * objc-sel.m (_sel_hash):  Removed.  Use _objc_strhash() instead.
        !           910: 
        !           911:        * objc-runtime.m (classHash):  Use _objc_strhash() directly rather
        !           912:        than using _strhash().  This avoids one function call per hash.
        !           913: 
        !           914:        * HashTable.m (HASHSTR):  Use _objc_strhash() directly rather
        !           915:        than using _strhash().  This avoids one function call per hash.
        !           916: 
        !           917:        * objc-private.h (_strhash):  Removed.  This function is no longer
        !           918:        used within objc_proj.  It is left only in case it is being used
        !           919:        elsewhere (since it is not a private extern).
        !           920: 
        !           921: Changes to fully implement class references (3/4/92):
        !           922: 
        !           923:        * objc-load.m (objc_loadModules):  Fixup class references.
        !           924: 
        !           925:        * objc-class.m (class_poseAs):  Run through class references
        !           926:        substituting the imposter for the original.
        !           927: 
        !           928:        * objc-runtime.m (_objc_headerVector, _objc_headerCount,
        !           929:        _objc_addHeader, _objc_removeHeader):  New private externs.
        !           930: 
        !           931:        * objc-load.m (objc_loadModules, objc_unloadModules):  Call
        !           932:        new functions _objc_addHeader() and _objc_removeHeader().
        !           933: 
        !           934: Fix for NXBundle bug (3/6/92):
        !           935: 
        !           936:        * NXBundle.m (loadCallback):  Installed Bertrand's fix to correct
        !           937:        problems with categories.
        !           938: 
        !           939: == New version objc-57 ==
        !           940: 
        !           941: More performance enhancements for exceptions (3/16/92):
        !           942: 
        !           943:        * except.c (addme):  New routine to handle allocation portion of
        !           944:        findme().
        !           945: 
        !           946:        * except.c (findme):  Made inline.  Now calls addme() to handle
        !           947:        uncommon cases.
        !           948: 
        !           949:        * except.c (trickyRemoveHandler):  Inlined most common case of
        !           950:        trickyRemoveHandler() into both callers.  Now trickyRemoveHandler()
        !           951:        is only called when the handler to be removed isn't on the top of
        !           952:        the handler stack.
        !           953: 
        !           954: == New version objc-58 ==
        !           955: 
        !           956: Fix for spurious messages introduced with last change (3/19/92):
        !           957: 
        !           958:        * except.c (_NXRemoveHandler, _NXRemoveAltHandler):  Don't call
        !           959:        trickyRemoveHandler() for case which is handled inline.
        !           960: 
        !           961: == New version objc-59 ==
        !           962: 
        !           963: Fix for crasher in bundles (3/20/92):
        !           964: 
        !           965:        * NXBundle.m (ensureLoaded):  Limit error messages from rld() to
        !           966:        3000 characters, since _NXLogError() has a 4K fixed size buffer.
        !           967:        Error messages this long are not really appropriate for syslog.
        !           968:        (Bug #20035)
        !           969: 
        !           970: Fix for crasher when reloading modules after unloading them (3/20/92):
        !           971: 
        !           972:        * objc-load.m (objc_unloadModules):  Unload selectors from both
        !           973:        new-style and old-style string sections.  (Bug #20414)
        !           974: 
        !           975: Fix for problem with type descriptors (3/23/92):
        !           976: 
        !           977:        * objc-class.m (SkipFirstType):  Treat 'oneway' as a type-qualifier
        !           978:        rather than as a type.  The compiler now encodes 'oneway void' as
        !           979:        "Vv" rather than just "v".  This is consistent with how it treats
        !           980:        'bycopy'.
        !           981: 
        !           982: Removed obsolete methods from NXBundle (3/24/92):
        !           983: 
        !           984:        * NXBundle.h (Compatability):  Removed Compatability category which
        !           985:        contained the initForPath: and path methods.
        !           986: 
        !           987: == New version objc-60 ==
        !           988: 
        !           989: Fix for problems reading strings files (4/20/92):
        !           990: 
        !           991:        * NXStringTable.m (parseWord, writeWord):  Handle all escape sequences
        !           992:        exactly the same way that the compiler's lexer does.  Also print
        !           993:        backslashes such that they will be read back correctly.  (Bug #21634)
        !           994: 
        !           995: Improved error handling of exceptions (4/20/92):
        !           996: 
        !           997:        * except.c (trickyRemoveHandler):  Check for exception frames which are
        !           998:        not in the valid portion of the stack.  Log an error when popping
        !           999:        a mismatched non-alt handler.  use NXLogError() rather than calling
        !          1000:        syslog() directly.  (Bug #22200)
        !          1001: 
        !          1002: Fix for malloc not being overrideable (5/7/92):
        !          1003: 
        !          1004:        * cplus_init.c:  Must #include shlib.h!  (Bug #23152)
        !          1005: 
        !          1006: == New version objc-61 ==
        !          1007: 
        !          1008: Fix for string hashtable problems in typedstreams (6/3/92):
        !          1009: 
        !          1010:         * typedstream.m (freeStrToInt):  New function to free uniqued strings.
        !          1011: 
        !          1012:         * typedstream.m (_NXOpenEncodingStream):  When creating string
        !          1013:         hashtable, use freeStrToInt as free method.
        !          1014: 
        !          1015:         * typedstream.m (_NXEncodeSharedString):  Copy strings before inserting
        !          1016:         them into the string hashtable.
        !          1017: 
        !          1018:         * typedstream.m (NXWriteArray):  No longer need to unique type string
        !          1019:         before calling _NXEncodeSharedString().
        !          1020: 
        !          1021: Improvements to release notes (6/3/92):
        !          1022: 
        !          1023:         * ObjCNotes.rtf:  Fixed numerous spelling mistakes.  Described new
        !          1024:         thread safe exceptions.  Mentioned new incompatibilities between
        !          1025:         @encode and typedstreams.
        !          1026: 
        !          1027: == New version objc-62 ==
        !          1028: 
        !          1029: Improvements to release notes (6/12/92):
        !          1030: 
        !          1031:         * ObjCNotes.rtf:  Removed incorrect comment about NXCtype.h moving
        !          1032:         to /NextDeveloper/Headers/objc.  (Bug #25517)
        !          1033: 
        !          1034: Fix for problems with cthread_exit() and exceptions (6/12/92):
        !          1035: 
        !          1036:         * except.c (_NXClearExceptionStack):  New function to clear exception
        !          1037:         stack.  This will be called from cthread_free(), since the cthread
        !          1038:         package re-uses cthread_self id's.  (Bug #25562)
        !          1039: 
        !          1040:         * spec_sys (_NXClearExceptionStack):  New private extern.
        !          1041: 
        !          1042: Fix for problems with cache flushing and dynamic loading (6/16/92):
        !          1043: 
        !          1044:         * objc-runtime.m (_objc_add_category):  Flush method caches of class
        !          1045:         to which category is added.  Otherwise incorrect negative cache entries
        !          1046:         may persist.  Note that _objc_remove_category() was already handling
        !          1047:         this.  (Bug #25801)
        !          1048: 
        !          1049:         * objc-class.m (_objc_flush_caches):  New function to flush both
        !          1050:         instance and class method caches of a class and its subclasses.
        !          1051: 
        !          1052:         * objc-private.h (_objc_flush_caches):  Declare new function.
        !          1053: 
        !          1054:         * spec_sys (_objc_flush_caches):  New private extern.
        !          1055: 
        !          1056: == New version objc-63 ==
        !          1057: 
        !          1058: Fix for crasher in appkit server (6/24/92):
        !          1059: 
        !          1060:         * typedstream.m (NXReadObjectFromBufferWithZone):  Raise an exception
        !          1061:         if NXOpenTypedStream() returns nil (rather than crashing).  After 3.0
        !          1062:         we should probably make NXOpenTypedStream() rasie the exception itself
        !          1063:         rather than returning nil (it raises exceptions in other cases).
        !          1064:         (Bug #26058)
        !          1065: 
        !          1066: == New version objc-64 ==
        !          1067: 
        !          1068: Fix for awkward library dependency introduced by recent change (6/26/92):
        !          1069: 
        !          1070:         * except.c (addme):  Pass address of _NXClearExceptionStack() to
        !          1071:         cthreads using new private extern _set_cthread_free_callout().
        !          1072:         This avoids a link time dependency of cthreads on exceptions.
        !          1073: 
        !          1074:         * except.c (_NXClearExceptionStack):  Now static.
        !          1075: 
        !          1076:         * spec_sys (_NXClearExceptionStack):  Removed private extern.
        !          1077: 
        !          1078:         * Makfile (objcopt.cmd):  Use -lc_static when linking objcopt
        !          1079:         since we are overriding lots of shlib symbols.
        !          1080: 
        !          1081: == New version objc-65 ==
        !          1082: 
        !          1083: Changes to fix ISSELECTOR binary compatibility problem (7/10/92):
        !          1084: 
        !          1085:        * objc-sel.m (sel_isMapped):  Rewrote to provide correct functionality
        !          1086:        for backward compatibility.  This function is not used by 3.0 Apps,
        !          1087:        and was essentially broken.  (Bug #23479)
        !          1088: 
        !          1089: Fix for unloading bug (7/10/92):
        !          1090: 
        !          1091:        * objc-sel.m (_sel_unloadSelectors):  Algorithm to delete entries
        !          1092:        from linked list was broken.  Use new simpler loop.
        !          1093: 
        !          1094: == New version objc-100 ==
        !          1095: 
        !          1096: Integrated Doug's changes for the nrw kernel (3/25/92):
        !          1097: 
        !          1098:        * objc-runtime.m (objc_msgSendv):  Rather than refusing to compile
        !          1099:        this routine on the 88k, panic if it is ever called.  This routine
        !          1100:        must be rewritten in assembly!
        !          1101: 
        !          1102:        * objc-class.m (_forward):  Don't refuse to compile on the m88k.
        !          1103:        It won't work as written, but hopefully it won't be needed for a while.
        !          1104:        This routine must be rewritten in assembly!
        !          1105: 
        !          1106:        * objc-private.h (OBJC_LOCK, OBJC_UNLOCK):  Turn off kernel locks until
        !          1107:        the m88k messenger uses locks.
        !          1108: 
        !          1109:        * hashtable.m (CopyIntoReadOnly):  Use valloc() rather than
        !          1110:        vm_allocate() for kernel builds.
        !          1111: 
        !          1112: Minor bug fix (3/25/92):
        !          1113: 
        !          1114:        * Object.m (error:):  Call va_end after last use of ap.
        !          1115: 
        !          1116: Chnages to get typedstream.m to compile for m88k (3/30/92):
        !          1117: 
        !          1118:        * typedstream.m (WriteValue, ReadValue):  Rewritten versions of
        !          1119:        WriteValues() and ReadValues().  Removed "align" argument. These
        !          1120:        functions now only handle one object at a time, and do not handle
        !          1121:        varargs at all.  This has been moved up to NXWriteTypes() and
        !          1122:        NXReadTypes().
        !          1123: 
        !          1124:        * typedstream.m (NXWriteType, NXReadType):  Modified to use
        !          1125:        WriteValue() and ReadValue().
        !          1126: 
        !          1127:        * typedstream.m (NXWriteTypes, NXReadTypes):  Rewrote to use
        !          1128:        WriteValue() and ReadValue().  Iteration over variable arguments is
        !          1129:        now performed here rather than in WriteValues() and ReadValues().
        !          1130:        All arguments are assumed to be void *'s.
        !          1131: 
        !          1132:        * typedstream.m (NXWriteArray, NXReadArray):  Rewrote to match
        !          1133:        the array case of WriteValue() and ReadValue().
        !          1134: 
        !          1135:        * typedstream.m (SizeOfType):  New routine to compute sizes and
        !          1136:        alignments of arbitrary C types.  This uses "sizeof" and "__alignof"
        !          1137:        for the basic types, and makes assumptions about how structs, unions
        !          1138:        and arrays are layed out given these.  This is slightly (but not
        !          1139:        too horribly) machine-dependent.
        !          1140: 
        !          1141:        * typedstream.m (roundUp, max):  New support routines.
        !          1142: 
        !          1143:        * typedstream.m (SubTypeUntil, SizeOfSimpleType, SizeOfUnion, buffer):
        !          1144:        Deleted obsolete support routines.
        !          1145: 
        !          1146:        * typedstream.m (next_field_addr, next_field, next_arg, next_addr):
        !          1147:        Deleted old varargs support which was non-portable and buggy.
        !          1148: 
        !          1149:        * typedstreamTest.m:  New test program for typedstreams.
        !          1150: 
        !          1151: Simple Makefile changes (4/2/92):
        !          1152: 
        !          1153:        * Makefile:  Use make typedstreamtest after using make debug.
        !          1154: 
        !          1155:        * Makefile:  Added Protocol.o to libkobjc.
        !          1156: 
        !          1157: == New version objc-101 ==
        !          1158: 
        !          1159: Changes to implement forwarding for the m88k (4/2/92):
        !          1160: 
        !          1161:        * objc-class.m (_forward, _errDoesntRecognize):  #ifdef'ed out.
        !          1162: 
        !          1163:        * objc-class.m:  Changed all references to _forward() to
        !          1164:        _objc_msgForward().
        !          1165: 
        !          1166:        * objc-private.h (_objc_msgForward):  Declare.
        !          1167: 
        !          1168:        * spec_sys:  New private extern _objc_msgForward().
        !          1169: 
        !          1170:        * objc-msg-m68k.s (_objc_msgForward):  New function.
        !          1171: 
        !          1172:        * objc-msg-m88k.s (_objc_msgForward):  New function.
        !          1173: 
        !          1174:        * objc-class.m (objc_msgSendv):  #ifdef'ed out.
        !          1175: 
        !          1176:        * objc-msg-m68k.s (objc_msgSendv):  New function.
        !          1177: 
        !          1178:        * objc-msg-m88k.s (objc_msgSendv):  New function.
        !          1179: 
        !          1180: Integrated i386 mods (4/14/92):
        !          1181: 
        !          1182:        * objc-msg-i386.s:  New file.
        !          1183: 
        !          1184:        * objc-msg.s:  Also support i386 architecture.
        !          1185: 
        !          1186: Minor cleanups (4/14/92):
        !          1187: 
        !          1188:        * Created new Test directory, and moved all test files there.
        !          1189: 
        !          1190:        * StreamTable.m (write:):  Use "(void **) &pick" rather than
        !          1191:        "&((void *) pick)" to avoid problems in GCC-2.0.
        !          1192: 
        !          1193:        * Object.m (_object_reallocFromZone):  Declare newObject to Object *
        !          1194:        rather than id to avoid warning.
        !          1195: 
        !          1196: == New version objc-102 ==
        !          1197: 
        !          1198: Fixes for problems passing structs by value to methods (6/3/92):
        !          1199: 
        !          1200:        * objc-msg-m88k.s (objc_msgSend, objc_msgSendSuper):  Preserve both
        !          1201:        argument registers and argument area on the stack since strcuts
        !          1202:        passed by value are placed on the stack rather than in registers even
        !          1203:        if their stack offset is less than 32.
        !          1204: 
        !          1205: Fix for initial problems with forwarding (6/3/92):
        !          1206: 
        !          1207:        * objc-msg-m88k.s (_objc_msgForward):  Fixed incorrect branch sense
        !          1208:        in recursion detection.
        !          1209: 
        !          1210:        * objc-msg-m88k.s (_objc_msgForward):  Must save and restore pc
        !          1211:        while sending forward:: to self!
        !          1212: 
        !          1213: == New version objc-103 ==
        !          1214: 
        !          1215: Fix for further problems with forwarding (6/3/92):
        !          1216: 
        !          1217:        * objc-msg-m88k.s (_objc_msgForward):  Store parameter stack area
        !          1218:        in addition to parameter registers, since we don't know which
        !          1219:        will be used.
        !          1220: 
        !          1221:        * objc-msg-m88k.s (_objc_msgForward):  Restore parameter stack area.
        !          1222: 
        !          1223:        * objc-msg-m88k.s (_objc_msgForward):  Use "and" rather than "mask"
        !          1224:        to align stack pointer.
        !          1225: 
        !          1226: == New version objc-104 ==
        !          1227: 
        !          1228: Added support for Objective-C in loadable kernel servers (6/8/92):
        !          1229: 
        !          1230:        * Makefile:  Added objc-load.o to kernel library.
        !          1231: 
        !          1232:        * objc-load.m (objc_registerModule):  New routine to process a
        !          1233:        previously loaded module.
        !          1234: 
        !          1235:        * objc-load.m (objc_loadModules):  Use new routine after calling
        !          1236:        rld_load().
        !          1237: 
        !          1238:        * objc-load.m (objc_unregisterModule, objc_unloadModules):  Similar for
        !          1239:        unloading.
        !          1240: 
        !          1241: New optimized i386 messager from Bruce (6/17/92):
        !          1242: 
        !          1243:        * objc-msg-i386.s:  New optimized version.
        !          1244: 
        !          1245: 
        !          1246: == New version objc-107 ==
        !          1247: 
        !          1248: Change typedstream byteswapping to use new architecture-project API
        !          1249: 
        !          1250:        * typedstream.m: add swap routines, and modify consumers of these
        !          1251:        routines.
        !          1252: 
        !          1253:        * objc-msg-m88k.s: pick up Dave's changes

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.