Annotation of objc/ChangeLog, revision 1.1.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.