+2010-12-26 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (create_tree_of_subclasses_inherited_from): Use
+ class_superclass_of_class instead of assuming a class is
+ unresolved when it could be resolved. Tidied up assignment and
+ check.
+ (__objc_tree_insert_class): Enhanced DEBUG_PRINTF.
+ (objc_tree_insert_class): Tidied up loop; return immediately upon
+ inserting a class.
+ (__objc_exec_class): Do not set __objc_class_tree_list.
+
+2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * selector.c (sel_getTypedSelector): Return NULL if given a NULL
+ argument.
+ (sel_registerTypedName): Same.
+ (sel_registerName): Same.
+ * objc/runtime.h: Updated documentation.
+
+2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (class_addIvar): Updated documentation. The
+ alignment is actually the log_2 of the alignment in bytes.
+ * ivars.c (class_addIvar): Corresponding change to the
+ implementation.
+
+2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (sel_getType): Renamed to sel_getTypeEncoding to
+ be consistent with method_getTypeEncoding and
+ ivar_getTypeEncoding.
+ (sel_copyTypedSelectorList, sel_getTypedSelector): New.
+ * selector.c (sel_getType): Renamed to sel_getTypeEncoding.
+ (sel_copyTypedSelectorList, sel_getTypedSelector): New.
+ (sel_get_type): Updated call to sel_getType.
+
+2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (class_conformsToProtocol,
+ class_copyProtocolList): Updated documentation.
+
+2010-12-23 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (create_tree_of_subclasses_inherited_from): Updated
+ DEBUG_PRINTF messages.
+ (__objc_tree_insert_class): Same.
+ (__objc_send_load_using_method_list): Same.
+ (__objc_send_load): Same.
+ (__objc_exec_class): Same. In particular, do not print the module
+ name since it is no longer used.
+ * sendmsg.c (__objc_send_initialize): Added DEBUG_PRINTFs for
+ tracking +initialize calls.
+ (__objc_update_dispatch_table_for_class): Added DEBUG_PRINTFs for
+ tracking updates of dispatch tables.
+ (__objc_install_dispatch_table_for_class): Same.
+
+2010-12-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Makefile.in (libobjc$(libsuffix).la): Link with -Wc,-shared-libgcc.
+ (libobjc_gc$(libsuffix).la): Likewise.
+
+2010-12-23 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * sendmsg.c (class_addMethod): Return NO if the method already
+ exists in the class.
+
+2010-12-22 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (duplicate_classes): New.
+ (__objc_exec_class): Initialize duplicate_classes.
+ (__objc_create_classes_tree): Ignore classes in the
+ duplicate_classes table.
+ (__objc_call_load_callback): Same.
+ (__objc_init_class): If a duplicate class is found, add it to
+ duplicate_classes instead of aborting. Return YES if the class is
+ not a duplicate, and NO if it is.
+ * objc-private/runtime.h (__objc_init_class): Updated prototype.
+
+2010-12-22 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/objc-list.h: Reindented file. No code changes.
+ * objc-private/sarray.h: Same change.
+
+2010-12-22 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/accessors.h: Removed 'extern "C"' guards. This
+ file is never compiled with C++.
+ * objc-private/hash.h: Same change.
+ * objc-private/objc-list.h: Same change.
+ * objc-private/objc-sync.h: Same change.
+ * objc-private/protocols.h: Same change.
+ * objc-private/runtime.h: Same change.
+ * objc-private/sarray.h: Same change.
+ * objc-private/selector.h: Same change.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/18764
+ * class.c (__objc_add_class_to_hash): Return YES if the class was
+ added, and NO if it already existed.
+ * init.c (__objc_init_class): If __objc_add_class_to_hash returns
+ NO, then abort the program with an error message.
+ * objc-private/runtime.h (__objc_add_class_to_hash): Updated
+ declaration.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (_objc_load_callback): Initialize with 0.
+ (__objc_call_callback): Renamed to __objc_call_load_callback.
+ Check _objc_load_callback only once, and if it is not set, return
+ immediately.
+ (objc_send_load): Updated call to __objc_call_callback.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/16110
+ * init.c (__objc_send_message_in_list): Renamed to
+ __objc_send_load_using_method_list. Do not take an 'op' argument.
+ Register the 'load' selector if needed.
+ (__objc_send_load): Do not register the 'load' selector. Updated
+ call to __objc_send_message_in_list.
+ (__objc_create_classes_tree): Add the class of any claimed
+ category that was loaded in the module to the list of classes for
+ which we try to execute +load.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/common.h: When DEBUG is defined, include <stdio.h>.
+ Updated comments.
+ * init.c (__objc_tree_insert_class): Use %p, not %x, when printing
+ a pointer using DEBUG_PRINTF.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/45953
+ * selector.c (__sel_register_typed_name): When registering a new
+ selector with the same name as an existing one, reuse the existing
+ name string. Also updated types, casts and comments in the whole
+ function.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/module-abi-8.h (struct objc_symtab): Declare 'refs'
+ to be 'struct objc_selector *' and not 'SEL'.
+ * init.c (__objc_exec_class): Call
+ __objc_register_selectors_from_module instead of iterating over
+ each selector and calling __sel_register_typed_name for each.
+ * objc-private/selector.h: Declare
+ __objc_register_selectors_from_module instead of
+ __sel_register_typed_name.
+ * selector.c (__objc_register_selectors_from_module): New.
+ (__sel_register_typed_name): Made static.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * linking.m: Do not include objc/NXConstStr.h.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/runtime.h (DEBUG_PRINTF): Moved from here ...
+ * objc-private/common.h (DEBUG_PRINTF): To here.
+ * hash.c: Do not include objc-private/runtime.h and objc/thr.h.
+
+2010-12-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * hash.c: Tidied up comments and indentation. No code changes.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/47012
+ * accessors.m (objc_getProperty): If not atomic, do not
+ retain/autorelease the returned value.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/runtime.h (__objc_selector_max_index,
+ __objc_init_selector_tables, __objc_register_selectors_from_class,
+ __objc_register_selectors_from_list,
+ __objc_register_selectors_from_description_list): Moved to ...
+ * objc-private/selector.h: ... here.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/runtime.h (__objc_class_links_resolved): Removed.
+ (__objc_print_dtable_stats): Removed.
+ (__sel_register_typed_name): Removed.
+ * sendmsg.c (__objc_print_dtable_stats): Use 'void' as argument.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (__objc_exec_class): Call __objc_resolve_class_links (),
+ if appropriate, after loading the module.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * sendmsg.c (method_setImplementation): Do not declare.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/message.h: Updated comments.
+ * objc/runtime.h: Updated comments.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * class.c (objc_lookupClass): Renamed to objc_lookUpClass.
+ * protocols.c: Updated all calls to objc_lookupClass to call
+ objc_lookUpClass instead.
+ * sendmsg.c (objc_lookupClass): Do not declare.
+ (get_imp): Update call to objc_lookupClass to call
+ objc_lookUpClass instead.
+ * objc/runtime.h (objc_lookupClass): Renamed to objc_lookUpClass.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (class_ivar_set_gcinvisible): Declare.
+ * sendmsg.c (_CLS_IN_CONSTRUCTION, CLS_IS_IN_CONSTRUCTION): Do not
+ define. Updated comments.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/encoding.h: Updated comments.
+ * objc/runtime.h: Updated comments.
+ (objc_setGetUnknownClassHandler): Mark with objc_EXPORT.
+ (objc_sizeof_type): Same.
+ (objc_alignof_type): Same.
+ (objc_aligned_size): Same.
+ (objc_promoted_size): Same.
+ (objc_skip_type_qualifiers): Same.
+ (objc_skip_typespec): Same.
+ (objc_skip_offset): Same.
+ (objc_skip_argspec): Same.
+ (objc_get_type_qualifiers): Same.
+ (objc_layout_structure): Same.
+ (objc_layout_structure_next_member): Same.
+ (objc_layout_finish_structure): Same.
+ (objc_layout_structure_get_info): Same.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c: Updated comments.
+ * objc/objc-api.h: Updated comments.
+ * objc/runtime.h (_objc_load_callback): Declare.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/Object.h: Include deprecated/typedstream.h and
+ deprecated/hash.h instead of typedstream.h. Updated comments.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (OBJC_DEPRECATED_H): Added objc_msg_sendv.h.
+ * objc/deprecated/objc_msg_sendv.h: New.
+ * objc/message.h: Do not define retval_t, apply_t, arglist,
+ arglist_t, objc_msg_sendv, now in
+ objc/deprecated/objc_msg_sendv.h.
+ * objc/objc.h: Do not include message.h; include
+ objc/deprecated/objc_msg_sendv.h instead. Tidied up comments.
+ * sendmsg.c: Include objc/message.h.
+ * thr.c: Include objc/message.h.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/objc-exception.h: Include objc-decls.h. Mark all
+ functions with objc_EXPORT.
+ * objc/objc-sync.h: Same change.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Protocol.m: Moved all methods, with the exception of -isEqual:,
+ into the 'Deprecated' category.
+ * objc/Protocol.h: Removed all methods, moved to
+ objc/deprecated/Protocol.h. Include objc/deprecated/Protocol.h.
+ * objc/deprecated/Protocol.h: New.
+ * Makefile.in (OBJC_DEPRECATED_H): Added Protocol.h.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c: Include objc-private/selector.h. Do not declare
+ __sel_register_typed_name.
+ * objc-private/selector.h (__sel_register_typed_name): Declare.
+ * selector.c: Include objc-private/selector.h.
+
+2010-12-18 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * class.c: Tidied up comments and indentation. No code changes.
+ * error.c: Same.
+ * exception.c: Same.
+ * init.c: Same.
+ * ivars.c: Same.
+ * memory.c: Same.
+ * objc-foreach.c: Same.
+ * objc-sync.c: Same.
+ * objects.c: Same.
+ * protocols.c: Same.
+ * sarray.c: Same.
+ * thr.c: Same.
+
+2010-12-17 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c: Include objc/runtime.h and objc-private/module-abi-8.h
+ instead of objc/objc-api.h.
+ (init_check_module_version): Take a 'struct objc_module *'
+ argument instead of 'Module_t'. Use 'struct objc_module *'
+ instead of 'Module_t'.
+ (__objc_created_classes_tree): Take a 'struct objc_module *'
+ argument instead of 'Module_t'; use 'struct objc_symtab *' instead
+ of 'Symtab_t'.
+ (__objc_call_callback): Take a 'struct objc_module *' argument
+ instead of 'Module_t'; use 'struct objc_symtab *' instead of
+ 'Symtab_t' and 'struct objc_category *' instead of 'Category_t'.
+ (_objc_load_callback): Take a 'struct objc_category *' argument
+ instead of 'Category *'.
+ (class_superclass_of_class): Use objc_getClass() instead of
+ objc_lookup_class().
+ (create_tree_of_subclasses_inherited_from): Same change (also, use
+ an explicit 'if' instead of '?').
+ (objc_init_statics): Same change.
+ (objc_send_load): Same change.
+ (__objc_init_protocol): same change.
+ (__objc_send_message_in_list): Take a 'struct objc_method_list *'
+ argument instead of 'MethodList_t'. Use 'struct objc_method *'
+ instead of 'Method_t'.
+ (__objc_send_load): Use 'struct objc_method_list *' instead of
+ 'MethodList_t'. Use sel_registerName() instead of
+ sel_register_name().
+ (__objc_exec_class): Take a 'struct objc_module *' argument
+ instead of 'Module_t'. Use 'struct objc_symtab *' instead of
+ 'Symtab_t'. Use objc_getClass() instead of objc_lookup_class().
+ Use 'struct objc_category *' instead of 'Category_t'.
+
+2010-12-16 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * sendmsg.c: Include objc/runtime.h instead of objc/objc-api.h.
+ Include objc-private/module-abi-8.h and objc-private/selector.h
+ instead of objc/encoding.h.
+ (objc_msg_lookup_super): Use super->super_class instead of
+ super->class.
+ (method_get_first_argument, method_get_next_argument): Declare
+ locally.
+ (class_get_instance_method): Declare before using.
+ (objc_msg_sendv): Use 'struct objc_method' instead of 'Method'.
+ (__objc_init_dispatch_tables, __objc_send_initialize): Use
+ sel_registerName() instead of sel_register_name().
+ (__objc_forward): Use sel_getName() instead of sel_get_name().
+ (objc_get_uninstalled_dtable): Use 'void' as argument.
+ * objc-private/selector.h: New.
+
+2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/message.h (objc_super): When using the modern API, do not
+ define Super and Super_t, and always use 'super_class' for the
+ super class field.
+ (objc_msg_lookup_super): Updated prototype to use 'struct
+ objc_super *' instead of 'Super_t'.
+ * sendmsg.c (objc_msg_lookup_super): Updated prototype to use
+ 'struct objc_super *' instead of 'Super_t'.
+
+2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/message.h: Update comments, reindented code and moved
+ deprecated types and functions at the end of the file. No code
+ changes.
+
+2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * ivars.c (class_addIvar): Use the 'size' argument instead of
+ trying to calculate it using objc_sizeof_type().
+ * objc/runtime.h (class_addIvar): Updated comments.
+
+2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * sendmsg.c: Reindented some code and tidied up comments. No
+ actual code changes.
+
+2010-12-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/Object.h: Moved all the methods, with the exception of
+ -class and -isEqual:, into ...
+ * objc/deprecated/Object.h: here.
+ * Object.m: Moved all the methods, with the exception of -class
+ and -isEqual: into the 'Deprecated' category.
+
+2010-12-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objects.c (object_copy): Do not #undef as we are no longer
+ including objc/objc-api.h.
+ * selector.c: Include objc/runtime.h and
+ objc-private/module-abi-8.h. Do not include objc/objc-api.h and
+ objc/encoding.h. Updated
+ (__objc_register_selectors_from_class): Use struct
+ objc_method_list * instead of MethodList_t.
+ (__objc_register_selectors_from_list): Use Method instead of
+ Method_t.
+ (struct objc_method_description_list): Do not define here.
+ (__objc_register_instance_methods_to_class): Use struct
+ objc_method_list * instead of MethodList_t and Method instead of
+ Method_t.
+
+2010-12-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * selector.c: Reindented some code and tidied up comments. No
+ actual code changes.
+
+2010-12-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ * encoding.c (_darwin_rs6000_special_round_type_align): New.
+ (darwin_rs6000_special_round_type_align): Adjust to use new routine.
+
+2010-12-11 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * sendmsg.c (selector_resolveClassMethod): New.
+ (selector_resolveInstanceMethod): New.
+ (__objc_resolve_class_method): New.
+ (__objc_resolve_instance_method): New.
+ (get_imp): Call __objc_resolve_class_method or
+ __objc_resolve_instance_method at the appropriate time.
+ (objc_msg_lookup): Same.
+ (class_getClassMethod): Same.
+ (class_getInstanceMethod): Same.
+ (__objc_init_dispatch_tables): Initialize
+ selector_resolveClassMethod and selector_resolveInstanceMethod.
+ * objc/runtime.h: Updated documentation of class_getClassMethod,
+ class_getInstanceMethod and class_getMethodImplementation.
+
+2010-12-11 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/module-abi-8.h (struct objc_symtab): Updated
+ description of sel_ref_cnt and refs.
+ * objc/deprecated/struct_objc_symtab.h (objc_symtab): Same change.
+
+2010-12-06 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR target/40125
+ PR lto/46695
+ * configure.ac (extra_ldflags_libobjc): Invoke ACX_LT_HOST_FLAGS.
+ * Makefile.in (lt_host_flags): Import AC_SUBST'd value.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2010-12-03 Matthias Klose <doko@ubuntu.com>
+
+ * configure.ac (VERSION): Bump the version to 3:0:0.
+ * configure: Regenerate.
+
+2010-11-23 Richard Frith-Macdonald <rfm@gnu.org>
+
+ * sendmsg.c (get_imp): Fixed call to __objc_get_forward_imp to
+ pass nil as the receiver since we don't know the receiver at this
+ point.
+
+2010-11-18 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * ivars.c: Include stdlib.h.
+ * protocols.c: Same change.
+
+2010-10-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (OBJC_SOURCE_FILES): Added accessors.m.
+ * accessors.m: New.
+ * init.c: Include objc-private/accessors.h.
+ (__objc_exec_class): Call __objc_accessors_init.
+ * objc-private/accessors.h: New.
+
+2010-10-17 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/message.h: Moved initial includes outside of extern "C".
+ * objc/runtime.h: Add extern "C" for Objective-C++.
+
+2010-10-17 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (objc_send_load): Do not wait for NXConstantString to be
+ registered before executing +load. There is no point if
+ -fconstant-string-class=xxx is used when compiling all modules,
+ as is the case for almost all users.
+ * linking.m (__objc_linking): Do not try to forcefully link in
+ NXConstantString.
+
+2010-10-16 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h: Updated comments.
+ (class_addMethod): New.
+ (class_addIvar): New.
+ (class_replaceMethod): New.
+ (objc_allocateClassPair): New.
+ (objc_registerClassPair): New.
+ (objc_disposeClassPair): New.
+ * class.c (objc_allocateClassPair): New.
+ (objc_registerClassPair): New.
+ (objc_disposeClassPair): New.
+ (class_getSuperclass): Return Nil if a class is in construction.
+ * init.c (__objc_exec_class): Call __objc_init_class.
+ (__objc_init_class): New.
+ * ivars.c (class_copyIvarList): Return NULL if class is in
+ construction. Do not lock the runtime mutex.
+ (class_getInstanceVariable): Return NULL if class is in
+ construction. Do not lock the runtime mutex.
+ (class_addIvar): New.
+ * sendmsg.c (class_addMethod): New.
+ (class_replaceMethod): New.
+ * objc-private/module-abi-8.h (__CLS_SETNOTINFO): New.
+ (_CLS_IN_CONSTRUCTION): New.
+ (CLS_IS_IN_CONSTRUCTION): New.
+ (CLS_SET_IN_CONSTRUCTION): New.
+ (CLS_SET_NOT_IN_CONSTRUCTION): New.
+ * objc-private/runtime.h (__objc_init_class): New.
+
+2010-10-16 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * class.c (class_getSuperclass): Call __objc_resolve_class_links
+ if the class is not resolved yet.
+ * ivars.c (class_getInstanceVariable): Use class_getSuperclass.
+
+2010-10-16 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (class_getIvarLayout): New.
+ (class_getWeakIvarLayout): New.
+ (class_setIvarLayout): New.
+ (class_setWeakIvarLayout): New.
+ * ivars.c (class_getIvarLayout): New.
+ (class_getWeakIvarLayout): New.
+ (class_setIvarLayout): New.
+ (class_setWeakIvarLayout): New.
+
+2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/runtime.h (class_copyPropertyList): New.
+ (class_getProperty): New.
+ (property_getAttributes): New.
+ (property_getName): New.
+ * ivars.c (class_copyPropertyList): New.
+ (class_getProperty): New.
+ (property_getAttributes): New.
+ (property_getName): New.
+
+2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-private/runtime.h (__objc_update_classes_with_methods): New.
+ * class.c (__objc_update_classes_with_methods): New.
+ (objc_getClassList): Do not lock the class lock.
+ * methods.c (method_exchangeImplementations): New.
+ (method_setImplementation): New.
+ * objc/runtime.h (method_setImplementation): New.
+ (method_exchangeImplementations): New.
+
+2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Protocol.m: Include objc/runtime.h and
+ objc-private/module-abi-8.h instead of objc/objc-api.h. Do not
+ repeat Protocol's instance variables.
+ (struct objc_method_description_list): Do not define here.
+ ([-conformsTo:]): Reimplemented on top of protocol_conformsTo().
+ ([descriptionForInstanceMethod:]): Use sel_isEqual() to compare
+ selectors directly instead of getting names and then using strcmp.
+ ([descriptionForClassMethod:]): Same change.
+ ([-isEqual:]): Reimplemented on top of protocol_isEqual().
+ * protocols.c (protocol_getMethodDescription): Use sel_isEqual()
+ to compare selectors directly instead of getting names and then
+ using strcmp.
+ * objc/Protocol.h: Updated comments.
+
+2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * init.c (__objc_init_protocol): New function which fixes up a
+ protocol's class pointer, registers it with the runtime, register
+ all protocol selectors and registers associated protocols too.
+ (objc_init_statics): Detect if we are initializing protocols, and
+ if so, use __objc_init_protocol instead of only fixing up the
+ class pointer.
+ (__objc_init_protocls): Use __objc_init_protocol.
+ * objc-private/module-abi-8.h: Updated comments.
+ * objc-private/runtime.h
+ (__objc_register_selectors_from_description_list): New.
+ * selector.c (__objc_register_selectors_from_description_list):
+ New. (struct objc_method_description_list): Declare.
+ * Protocol.m ([-descriptionForInstanceMethod:]): Use sel_get_name
+ when accessing the name of a method, which is now correctly a SEL.
+ ([-descriptionForClassMethod:]): Same change.
+ * protocols.c (protocol_getMethodDescription): Same change.
+ * objc/runtime.h: Updated comments.
+ (sel_registerTypedName): Fixed typo in function name.
+
+2010-10-13 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/23214
+ * init.c (objc_init_statics): Do not skip the initialization of a
+ statics list if the first object has already been initialized; in
+ the case of Protocols, while the first one may have been
+ initialized, some others may not have been initialized yet.
+
+2010-10-13 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (OBJC_DEPRECATED_H): Added
+ objc_get_uninstalled_dtable, objc_object_alloc.h and
+ struct_objc_static_instances.h.
+
+2010-10-13 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * encoding.c (method_copyReturnType): New.
+ (method_copyArgumentType): New.
+ (method_getReturnType): New.
+ (method_getArgumentType): New.
+ * methods.c (method_getDescription): New.
+ * objc/runtime.h (method_copyReturnType): New.
+ (method_copyArgumentType): New.
+ (method_getReturnType): New.
+ (method_getArgumentType): New.
+ (method_getDescription): New.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * encoding.c: Tidied up comments.
+ (objc_skip_variable_name): New static inline function.
+ (objc_sizeof_type): Use objc_skip_variable_name instead of copying
+ the same code over and over.
+ (objc_alignof_type): Same.
+ (objc_aligned_size): Same.
+ (objc_promoted_size): Same.
+ (objc_skip_typespec): Same.
+ (objc_layout_structure_next_member): Same.
+ (objc_skip_offset): Skip a '-' before the digits (if any). Fixed
+ historical bug where objc_skip_offset would skip one byte even if
+ there is no offset: check that the first offset digit is actually
+ a digit before skipping it.
+ (objc_skip_type_qualifiers): Mark as inline.
+ (objc_skip_typespec): Mark as inline.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (C_SOURCE_FILES): Added methods.c.
+ * encoding.c (method_getNumberOfArguments): New.
+ (method_get_number_of_arguments): Call
+ method_getNumberOfArguments.
+ * ivars.c (ivar_getName): Check for NULL variable argument.
+ (ivar_getOffset): Check for NULL variable argument.
+ (ivar_getTypeEncoding): Check for NULL variable argument.
+ (class_copyIvarList): New.
+ * methods.c: New.
+ * protocols.c (class_copyProtocolList): Check for Nil class_
+ argument.
+ * sendmsg.c: Use 'struct objc_method *' instead of Method_t, and
+ 'struct objc_method_list *' instead of MethodList_t.
+ (class_getMethodImplementation): New.
+ (class_respondsToSelector): New.
+ (class_getInstanceMethod): New.
+ (class_getClassMethod): New.
+ * objc/runtime.h: Updated comments.
+ (class_copyIvarList): New.
+ (class_getInstanceMethod): New.
+ (class_getClassMethod): New.
+ (class_getMethodImplementation): New.
+ (class_respondsToSelector): New.
+ (method_getName): New.
+ (method_getImplementation): New.
+ (method_getTypeEncoding): New.
+ (class_copyMethodList): New.
+ (method_getNumberOfArguments): New.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * class.c: Include objc/runtime.h and objc-private/module-abi-8.h
+ instead of objc/objc-api.h.
+ (objc_get_unknown_class_handler): Do not define.
+ (class_isMetaClass): New.
+ (class_getSuperclass): New.
+ (class_getVersion): New.
+ (class_setVersion): New.
+ (class_getInstanceSize): New.
+ * exceptions.c: Include objc/runtime.h instead of objc/objc-api.h.
+ (is_kind_of_exception_matcher): Use objc_getSuperclass instead of
+ objc_get_super_class.
+ (get_ttype_entry): Use objc_getRequiredClass instead of
+ objc_get_class.
+ * ivars.c (class_getClassVariable): New.
+ * objects.c: Include objc/runtime.h, objc/thr.h and
+ objc-private/module-abi-8.h instead of objc/objc-api.h
+ * objc/runtime.h (class_getClassVariable): New.
+ (class_isMetaClass): New.
+ (class_getSuperclass): New.
+ (class_getVersion): New.
+ (class_setVersion): New.
+ (class_getInstanceSize): New.
+ * objc-private/module-abi-8.h (HOST_BITS_PER_LONG): New (from
+ objc/objc-api.h)
+ (__CLS_INFO): Same.
+ (__CLS_ISINFO): Same.
+ (__CLS_SETINFO): Same.
+ (CLS_ISMETA): Same.
+ (CLS_ISCLASS): Same.
+ (CLS_ISRESOLV): Same.
+ (CLS_SETRESOLV): Same.
+ (CLS_ISINITIALIZED): Same.
+ (CLS_SETINITIALIZED): Same.
+ (CLS_GETNUMBER): Same.
+ (CLS_SETNUMBER): Same.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * archive.c: Do not include objc/objc.h.
+ * class.c: Do not include objc/objc.h.
+ * encoding.c: Include objc/runtime.h, ctype.h and
+ objc-private/module-abi-8.h instead of objc/objc-api.h and
+ objc/encoding.h.
+ * error.c: Do not include objc/objc.h.
+ * gc.c: Include tconfig.h and objc/encoding.h only if
+ OBJC_WITH_GC.
+ * hash.c: Include objc/runtime.h and objc/thr.h instead of
+ objc/objc-api.h. Do not include objc/objc.h.
+ * init.c: Do not include objc/objc.h.
+ * ivars.c: Include objc/runtime.h, objc-private/module-abi-8.h and
+ objc/thr.h instead of objc/objc-api.h. Do not include
+ objc/objc.h.
+ * linking.m: Tidied comment.
+ * memory.c: Include objc/runtime.h instead of objc/objc-api.h.
+ Do not include objc/objc.h.
+ * objects.c: Do not include objc/objc.h.
+ * objc-sync.c: Include objc/runtime.h instead of objc/objc-api.h.
+ * protocols.c: Do not include objc/objc.h.
+ * sarray.c: Include objc/runtime.h instead of objc/objc-api.h. Do
+ not include objc/objc.h.
+ * selector.c: Do not include objc/objc.h.
+ * sendmsg.c: Do not include objc/objc.h.
+ * thr.c: Include objc/runtime.h instead of objc/objc-api.h.
+ Do not include objc/objc.h.
+ * objc/objc-decls.h: Reindented code.
+ * objc/runtime.h Include objc-decls.h. Updated comments.
+ (objc_malloc): New.
+ (objc_atomic_malloc): New.
+ (objc_calloc): New.
+ (objc_realloc): New.
+ (objc_free): New.
+ * objc-private/runtime.h: Updated comments.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (C_SOURCE_FILES): Added protocols.c.
+ * objc-private/protocols.h: New.
+ * protocols.c: New.
+ * init.c: Include objc-private/protocols.h.
+ (__objc_exec_class): Call __objc_protocols_init on startup.
+ (__objc_init_protocols): Call __objc_protocols_add_protocol.
+ * objc-private/runtime.h: Use (struct objc_method_list *) instead
+ of MethodList_t, and (struct objc_method *) instead of Method_t.
+ * objc/deprecated/struct_objc_class.h: Define
+ __objc_STRUCT_OBJC_CLASS_defined.
+ * objc-private/module-abi-8.h (struct
+ objc_method_description_list): New.
+ (struct objc_class): Only define if
+ __objc_STRUCT_OBJC_CLASS_defined is undefined.
+ * objc/runtime.h (class_getName): New.
+ (objc_getProtocol): New.
+ (objc_copyProtocolList): New.
+ (class_addProtocol): New.
+ (class_conformsToProtocol): New.
+ (class_copyProtocolList): New.
+ (protocol_conformsToProtocol): New.
+ (protocol_isEqual): New.
+ (protocol_getName): New.
+ (protocol_getMethodDescription): New.
+ (protocol_copyMethodDescriptionList): New.
+ (protocol_getProperty): New.
+ (protocol_copyPropertyList): New.
+ (protocol_copyProtocolList): New.
+ * class.c (class_getName): New.
+ * selector.c (sel_isEqual): New.
+
+2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * selector.c (sel_getName): Return "<null selector>" for a NULL
+ argument.
+ (sel_get_name): Return 0 for a NULL argument.
+ * objc/runtime.h (sel_getName): Updated documentation.
+
+ * objc-private/hash.h (class_hash_table): Unused declaration
+ removed.
+ (module_hash_table): Same.
+ * objc/deprecated/hash.h: Same changes.
+
+2010-10-11 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * class.c (objc_getClassList): New.
+ (objc_getRequiredClass): New.
+ (objc_getMetaClass): New.
+ (objc_lookupClass): New.
+ (objc_getClass): New.
+ (__objc_get_unknown_class_handler): New.
+ (objc_setGetUnknownClassHandler): New.
+ (objc_get_class): Use __objc_get_unknown_class_handler.
+ (objc_lookup_class): Call objc_getClass.
+ * objc/objc-api.h: Updated comment and copyright notice.
+ * objc/runtime.h: Updated comments.
+ (objc_getClass): New.
+ (objc_lookupClass): New.
+ (objc_getMetaClass): New.
+ (objc_getRequiredClass): New.
+ (objc_getClassList): New.
+ (objc_setGetUnknownClassHandler): New.
+ (objc_get_unknown_class_handler): New.
+ * objc-private/runtime.h: Use __objc_private_runtime_INCLUDE_GNU
+ instead of __objc_runtime_INCLUDE_GNU as include guard.
+ * objc-private/error.h (_objc_abort): Mark as noreturn.
+
+2010-10-11 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * Makefile.in (C_SOURCE_FILES): Added ivars.c.
+ * ivars.c: New.
+ * objc/objc.h: Updated comments.
+ * objc/runtime.h (object_getClass): New.
+ (object_getClassName): New.
+ (object_setClass): New.
+ (class_getInstanceVariable): New.
+ (object_getIndexedIvars): New.
+ (object_getInstanceVariable): New.
+ (object_setInstanceVariable): New.
+ (object_getIvar): New.
+ (object_setIvar): New.
+ (ivar_getName): New.
+ (ivar_getOffset): New.
+ (ivar_getTypeEncoding): New.
+ * objc-private/module-abi-8.h (struct objc_class): Added.
+ * objects.c (object_getClassName): New.
+ (object_setClass): New.
+
+2010-10-11 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc/objc.h: Updated comments.
+ * objc/objc-api.h: (object_copy): Added one argument; use a
+ #define to maintain backwards-compatibility. Moved
+ _objc_object_alloc, _objc_object_copy, _objc_object_dispose and
+ objc_get_uninstalled_dtable into
+ objc/deprecated/objc_get_uninstalled_dtable.h and
+ objc/deprecated/objc_object_alloc.h. Include these files.
+ * objc/deprecated/objc_get_uninstalled_dtable.h: New.
+ * objc/deprecated/objc_object_alloc.h: New.
+ * objc/runtime.h (set_getName): New.
+ (sel_getType): New.
+ (sel_getUid): New.
+ (sel_registerName): New.
+ (sel_registerTypedName): New.
+ (sel_isEqual): New.
+ (class_createInstance): New.
+ (object_copy): New.
+ (object_dispose): New.
+ * objects.c: Do not include tconfig.h. Include gc_typed.h if
+ building the garbage collection version.
+ (__objc_object_alloc): Removed.
+ (__objc_object_copy): Removed.
+ (__objc_object_dispose): Removed.
+ (class_createInstance): New from code in class_create_instance.
+ Cast second argument of GC_malloc_explicitly_typed. Use
+ objc_calloc. Do not call _objc_object_alloc.
+ (class_create_instance): Call class_createInstance.
+ (object_copy): Added extraBytes argument. Do not call
+ _objc_object_copy.
+ (object_dispose): Do not call _objc_object_dispose.
+ * memory.c (objc_free): When using garbage collection, mark the
+ argument as unused.
+ * selector.c (sel_getName): New.
+ (sel_get_name): Call sel_getName.
+ (sel_getType): New.
+ (sel_get_type): Call sel_getType.
+ (sel_registerName): New.
+ (sel_register_name): Call sel_registerName.
+ (sel_registerTypedName): New.
+ (sel_register_typed_name): Call sel_registerTypedName.
+ (sel_getUid): New.
+ (sel_get_uid): Call sel_getUid.
+
2010-10-10 Nicola Pero <nicola.pero@meta-innovation.com>
* objc/objc-api.h: Define Method, Method_t, Category and
-Wno-deprecated-declarations when compiling.
(OBJC_H): Added objc-exception.h
-2010-09-08 Nicola Pero <nicola@nicola.brainstorm.co.uk>
+2010-09-08 Nicola Pero <nicola.pero@meta-innovation.com>
* objc/typedstream.h: Deprecate all functions in the file. This
file is obsolete.