|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.