|
|
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.