From 2bfd44485c93f0f8eb7642999294bb23b7732e31 Mon Sep 17 00:00:00 2001 From: Apple Date: Fri, 1 Apr 2005 22:01:36 +0000 Subject: [PATCH] objc4-266.tar.gz --- Makefile | 156 +- libobjc.order | 162 - objc-exports | 22 +- runtime/Auto.subproj/objc-auto-i386.s | 26 + runtime/Auto.subproj/objc-auto-ppc.s | 69 + runtime/Auto.subproj/objc-auto.s | 32 + runtime/Messengers.subproj/objc-msg-i386.s | 126 +- runtime/Messengers.subproj/objc-msg-ppc.s | 239 +- .../Messengers.subproj/objc-msg-stub-i386.s | 64 + .../Messengers.subproj/objc-msg-stub-ppc.s | 60 + runtime/Messengers.subproj/objc-msg-stub.s | 35 + runtime/Object.m | 11 +- runtime/hashtable2.m | 16 +- runtime/objc-auto.h | 59 + runtime/objc-auto.m | 1840 +++ runtime/objc-class.h | 51 +- runtime/objc-class.m | 1189 +- runtime/objc-exception.m | 3 - runtime/objc-file.m | 89 +- runtime/objc-load.m | 9 - runtime/objc-private.h | 170 +- runtime/objc-rtp-sym.s | 78 + runtime/objc-rtp.h | 119 + runtime/objc-rtp.m | 327 + runtime/objc-runtime.h | 5 + runtime/objc-runtime.m | 3455 ++++-- runtime/objc-sel-set.h | 38 + runtime/objc-sel-set.m | 128 + runtime/objc-sel-table.h | 10243 +++++++++------- runtime/objc-sel.m | 99 +- runtime/objc-sync.m | 31 +- runtime/objc.h | 3 + 32 files changed, 12614 insertions(+), 6340 deletions(-) delete mode 100644 libobjc.order create mode 100644 runtime/Auto.subproj/objc-auto-i386.s create mode 100644 runtime/Auto.subproj/objc-auto-ppc.s create mode 100644 runtime/Auto.subproj/objc-auto.s create mode 100644 runtime/Messengers.subproj/objc-msg-stub-i386.s create mode 100644 runtime/Messengers.subproj/objc-msg-stub-ppc.s create mode 100644 runtime/Messengers.subproj/objc-msg-stub.s create mode 100644 runtime/objc-auto.h create mode 100644 runtime/objc-auto.m create mode 100644 runtime/objc-rtp-sym.s create mode 100644 runtime/objc-rtp.h create mode 100644 runtime/objc-rtp.m create mode 100644 runtime/objc-sel-set.h create mode 100644 runtime/objc-sel-set.m diff --git a/Makefile b/Makefile index 3b33ca1..00ce383 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,9 @@ # use LDFLAGS not LFLAGS -# seg-addr-table, sect-order # # Simple makefile for building objc4 on Darwin # # These make variables (or environment variables) are used -# if defined: +# when defined: # SRCROOT path location of root of source hierarchy; # defaults to ".", but must be set to a # destination path for installsrc target. @@ -77,6 +76,7 @@ CHOWN = /usr/sbin/chown TAR = /usr/bin/tar STRIP = /usr/bin/strip NMEDIT = /usr/bin/nmedit +LIPO = /usr/bin/lipo ifeq "$(PLATFORM)" "Darwin" WARNING_FLAGS = -Wmost -Wno-precomp -Wno-four-char-constants @@ -100,13 +100,21 @@ ARCH_FLAGS = $(foreach A, $(ARCH_LIST), $(addprefix -arch , $(A))) endif +ifeq "$(ORDERFILE)" "" +ORDERFILE = $(wildcard /usr/local/lib/OrderFiles/libobjc.order) +endif +ifneq "$(ORDERFILE)" "" +ORDER = -sectorder __TEXT __text $(ORDERFILE) +else +ORDER = +endif ifeq "$(USER)" "" USER = unknown endif -CFLAGS = -g -fno-common -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders -LDFLAGS = -framework CoreFoundation +CFLAGS = -g -fno-common -fobjc-exceptions -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders +LDFLAGS = LIBRARY_EXT = .dylib @@ -115,10 +123,10 @@ OTHER_HEADER_INSTALLDIR = usr/local/include/objc INSTALLDIR = usr/lib ifeq "$(PLATFORM)" "Darwin" -CFLAGS += $(ARCH_FLAGS) -LDFLAGS += $(ARCH_FLAGS) -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) +LDFLAGS += -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) endif + CFLAGS += $(OTHER_CFLAGS) $(RC_CFLAGS) LDFLAGS += $(OTHER_LDFLAGS) @@ -132,18 +140,20 @@ ifndef PROFILE_CFLAGS PROFILE_CFLAGS = -DPROFILE -pg -Os endif -CFLAGS_OPTIMIZED = $(CFLAGS) $(OPTIMIZATION_CFLAGS) -CFLAGS_DEBUG = $(CFLAGS) $(DEBUG_CFLAGS) -CFLAGS_PROFILE = $(CFLAGS) $(PROFILE_CFLAGS) +CFLAGS_OPTIMIZED = $(OPTIMIZATION_CFLAGS) $(CFLAGS) +CFLAGS_DEBUG = $(DEBUG_CFLAGS) $(CFLAGS) +CFLAGS_PROFILE = $(PROFILE_CFLAGS) $(CFLAGS) LDFLAGS_OPTIMIZED = $(LDFLAGS) -g LDFLAGS_DEBUG = $(LDFLAGS) -g LDFLAGS_PROFILE = $(LDFLAGS) -g -pg -SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj +SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Auto.subproj # files to compile SOURCES= +# files to compile into separate linker modules +MODULE_SOURCES= # files to not compile OTHER_SOURCES= # headers to install in /usr/include/objc @@ -155,17 +165,17 @@ OTHER_HEADERS= # runtime SOURCES += $(addprefix runtime/, \ - Object.m Protocol.m hashtable2.m maptable.m objc-class.m objc-errors.m \ - objc-file.m objc-load.m objc-moninit.c objc-runtime.m objc-sel.m \ - objc-sync.m objc-exception.m \ - ) + Object.m Protocol.m hashtable2.m maptable.m objc-class.m objc-errors.m \ + objc-file.m objc-load.m objc-moninit.c objc-runtime.m objc-sel.m \ + objc-sync.m objc-exception.m objc-auto.m objc-sel-set.m objc-rtp.m \ + ) PUBLIC_HEADERS += $(addprefix runtime/, \ - objc-class.h objc-api.h objc-load.h objc-runtime.h objc.h Object.h \ - objc-sync.h objc-exception.h \ - Protocol.h error.h hashtable2.h \ - ) -PRIVATE_HEADERS += runtime/objc-private.h runtime/objc-config.h runtime/objc-sel-table.h -OTHER_HEADERS += runtime/maptable.h + objc-class.h objc-api.h objc-load.h objc-runtime.h objc.h Object.h \ + objc-sync.h objc-exception.h objc-auto.h \ + Protocol.h error.h hashtable2.h \ + ) +PRIVATE_HEADERS += runtime/objc-private.h runtime/objc-config.h runtime/objc-sel-table.h runtime/objc-sel-set.h runtime/objc-rtp.h +OTHER_HEADERS += runtime/maptable.h runtime/objc-auto.h # OldClasses SOURCES += runtime/OldClasses.subproj/List.m @@ -175,14 +185,33 @@ PUBLIC_HEADERS += runtime/OldClasses.subproj/List.h SOURCES += runtime/Messengers.subproj/objc-msg.s OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-i386.s +# Auto support +SOURCES += runtime/Auto.subproj/objc-auto.s +OTHER_SOURCES += runtime/Auto.subproj/objc-auto-ppc.s runtime/Auto.subproj/objc-auto-i386.s + +# RTP symbols for gdb +# See also $(OBJROOT)/runtime/objc-rtp-sym.ppc.o rule below. +OTHER_SOURCES += runtime/objc-rtp-sym.s + +# Interposing support. +# This code is built into a second module so dyld's function interposing +# can manipulate the calls. +MODULE_SOURCES += runtime/Messengers.subproj/objc-msg-stub.s +OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-stub-ppc.s runtime/Messengers.subproj/objc-msg-stub-i386.s + # project root -OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports libobjc.order +OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(SOURCES) ) ) ) OBJECTS_OPTIMIZED = $(OBJECTS:.o=.opt.o) OBJECTS_DEBUG = $(OBJECTS:.o=.debug.o) OBJECTS_PROFILE = $(OBJECTS:.o=.profile.o) +MODULE_OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(MODULE_SOURCES) ) ) ) +MODULE_OBJECTS_OPTIMIZED = $(MODULE_OBJECTS:.o=.opt.o) +MODULE_OBJECTS_DEBUG = $(MODULE_OBJECTS:.o=.debug.o) +MODULE_OBJECTS_PROFILE = $(MODULE_OBJECTS:.o=.profile.o) + # For simplicity, each object target depends on all objc headers. Most of # them come close to requiring this anyway, and rebuild from scratch is fast. DEPEND_HEADERS = $(addprefix $(SRCROOT)/, \ @@ -232,6 +261,36 @@ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.profile.o : \ $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc.s \ $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s +# Additional dependency: objc-msg-sutb.s depends on objc-msg-stub-ppc.s and +# objc-msg-stub-i386.s, which it includes. +$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.opt.o \ +$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.debug.o \ +$(OBJROOT)/runtime/Messengers.subproj/objc-msg-stub.profile.o : \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-ppc.s \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-i386.s + +# Additional dependency: objc-auto.s depends on objc-auto-ppc.s and +# objc-auto-i386.s, which it includes. +$(OBJROOT)/runtime/Auto.subproj/objc-auto.opt.o \ +$(OBJROOT)/runtime/Auto.subproj/objc-auto.debug.o \ +$(OBJROOT)/runtime/Auto.subproj/objc-auto.profile.o : \ + $(SRCROOT)/runtime/Auto.subproj/objc-auto-ppc.s \ + $(SRCROOT)/runtime/Auto.subproj/objc-auto-i386.s + +# Additional rules: objc-rtp-sym.s needs to be built with a per-arch seg1addr, +# and need to be stripped here because stripping the dylib does not remove +# debug info from the magic sections. +# objc-rtp-sym.s is not in SOURCES, and objc-rtp-sym.o is not in OBJECTS +$(OBJROOT)/runtime/objc-rtp-sym.ppc.o: $(SRCROOT)/runtime/objc-rtp-sym.s + $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch ppc "$<" -c -o "$@.temp" + $(SILENT) $(STRIP) -S "$@.temp" + $(SILENT) $(LD) -arch ppc -seg1addr 0xfffec000 "$@.temp" -r -o "$@" + +$(OBJROOT)/runtime/objc-rtp-sym.i386.o: $(SRCROOT)/runtime/objc-rtp-sym.s + $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch i386 "$<" -c -o "$@.temp" + $(SILENT) $(STRIP) -S "$@.temp" + $(SILENT) $(LD) -arch i386 -seg1addr 0xfffe8000 "$@.temp" -r -o "$@" + # These are the main targets: # build builds the library to OBJROOT and SYMROOT @@ -257,7 +316,7 @@ ifeq "$(SRCROOT)" "." $(SILENT) $(ECHO) "SRCROOT must be defined to be the destination directory; it cannot be '.'" exit 1 endif - $(SILENT) $(TAR) -cf $(SRCROOT)/objc4.sources.tar $(SOURCES) $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) $(OTHER_SOURCES) + $(SILENT) $(TAR) -cf $(SRCROOT)/objc4.sources.tar $(SOURCES) $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) $(OTHER_SOURCES) $(MODULE_SOURCES) $(SILENT) $(CD) $(SRCROOT) && $(TAR) -xf $(SRCROOT)/objc4.sources.tar $(SILENT) $(REMOVE) -f $(SRCROOT)/objc4.sources.tar @@ -325,8 +384,14 @@ install: build installhdrs clean: $(SILENT) $(ECHO) "Deleting build products..." - $(foreach A, $(ARCH_LIST), \ - $(SILENT) $(REMOVE) -f $(OBJROOT)/libobjc_debug.$A.o $(OBJROOT)/libobjc_profile.$A.o $(OBJROOT)/libobjc.$A.o ; ) + $(SILENT) $(REMOVE) -f \ + $(foreach A, $(ARCH_LIST), \ + $(OBJROOT)/libobjc_debug.$A.$(VERSION_NAME)$(LIBRARY_EXT) \ + $(OBJROOT)/libobjc_profile.$A.$(VERSION_NAME)$(LIBRARY_EXT) \ + $(OBJROOT)/libobjc.$A.$(VERSION_NAME)$(LIBRARY_EXT) \ + $(OBJROOT)/runtime/objc-rtp-sym.$A.o \ + $(OBJROOT)/runtime/objc-rtp-sym.$A.o.temp \ + ) $(SILENT) $(REMOVE) -f $(SYMROOT)/libobjc.optimized.o $(SILENT) $(REMOVE) -f $(SYMROOT)/libobjc.debug.o @@ -340,6 +405,10 @@ clean: $(SILENT) $(REMOVE) -f $(OBJECTS_DEBUG) $(SILENT) $(REMOVE) -f $(OBJECTS_PROFILE) + $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_OPTIMIZED) + $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_DEBUG) + $(SILENT) $(REMOVE) -f $(MODULE_OBJECTS_PROFILE) + $(SILENT) $(REMOVE) -rf $(SYMROOT)/ProjectHeaders prebuild: @@ -376,24 +445,33 @@ prebuild-profile: $(SILENT) $(MKDIRS) $(foreach S, $(SUBDIRS), $(OBJROOT)/$(S) ) -compile-optimized: $(OBJECTS_OPTIMIZED) -compile-debug: $(OBJECTS_DEBUG) -compile-profile: $(OBJECTS_PROFILE) +compile-optimized: $(OBJECTS_OPTIMIZED) $(MODULE_OBJECTS_OPTIMIZED) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o ) +compile-debug: $(OBJECTS_DEBUG) $(MODULE_OBJECTS_DEBUG) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o ) +compile-profile: $(OBJECTS_PROFILE) $(MODULE_OBJECTS_PROFILE) $(foreach A, $(ARCH_LIST), $(OBJROOT)/runtime/objc-rtp-sym.$A.o ) -# link lib-suffix, LDFLAGS, OBJECTS +# link lib-suffix, LDFLAGS, OBJECTS, MODULE_OBJECTS # libsuffix should be "" or _debug or _profile ifeq "$(PLATFORM)" "Darwin" define link - $(SILENT) $(CC) $2 \ - -Wl,-init,__objcInit \ - -Wl,-single_module \ - -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \ - -Wl,-sectorder,__TEXT,__text,$(SRCROOT)/libobjc.order \ - -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \ - -o $(SYMROOT)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \ - $3 + $(foreach A, $(ARCH_LIST), \ + $(SILENT) $(LD) -r \ + -arch $A \ + -o $(OBJROOT)/libobjc$1.$A.o \ + $3 ; \ + $(SILENT) $(CC) $2 \ + -arch $A \ + -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \ + $(ORDER) \ + -sectcreate __DATA __commpage $(OBJROOT)/runtime/objc-rtp-sym.$A.o \ + -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \ + -o $(OBJROOT)/libobjc$1.$A.$(VERSION_NAME)$(LIBRARY_EXT) \ + $(OBJROOT)/libobjc$1.$A.o $4 ; \ + ) + $(SILENT) $(LIPO) \ + -create -output $(SYMROOT)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \ + $(foreach A, $(ARCH_LIST), -arch $A $(OBJROOT)/libobjc$1.$A.$(VERSION_NAME)$(LIBRARY_EXT) ) endef else @@ -407,15 +485,15 @@ endif link-optimized: $(SILENT) $(ECHO) "Linking (optimized)..." - $(call link,,$(LDFLAGS_OPTIMIZED),$(OBJECTS_OPTIMIZED) ) + $(call link,,$(LDFLAGS_OPTIMIZED),$(OBJECTS_OPTIMIZED),$(MODULE_OBJECTS_OPTIMIZED) ) link-debug: $(SILENT) $(ECHO) "Linking (debug)..." - $(call link,_debug,$(LDFLAGS_DEBUG),$(OBJECTS_DEBUG) ) + $(call link,_debug,$(LDFLAGS_DEBUG),$(OBJECTS_DEBUG),$(MODULE_OBJECTS_DEBUG) ) link-profile: $(SILENT) $(ECHO) "Linking (profile)..." - $(call link,_profile,$(LDFLAGS_PROFILE),$(OBJECTS_PROFILE)) + $(call link,_profile,$(LDFLAGS_PROFILE),$(OBJECTS_PROFILE),$(MODULE_OBJECTS_PROFILE) ) postbuild: diff --git a/libobjc.order b/libobjc.order deleted file mode 100644 index 177aa69..0000000 --- a/libobjc.order +++ /dev/null @@ -1,162 +0,0 @@ -# objc4 order file -# Updated August 2003 (Panther) -# Start with automatic order file, then: -# 1. move or add _objc_msgSendNonNil immediately after _objc_msgSend -# 2. move or add _objc_msgSendNonNil_stret immediately after _objc_msgSend_stret -# msgSend and msgSendNonNil must not be separated by the linker. -libobjc.o:_objc_msgSend -libobjc.o:_objc_msgSendNonNil -libobjc.o:_objc_msgSend_stret -libobjc.o:_objc_msgSendNonNil_stret -libobjc.o:__class_lookupMethodAndLoadCache -libobjc.o:__cache_fill -libobjc.o:__internal_object_dispose -libobjc.o:___sel_registerName -libobjc.o:__cache_getMethod -libobjc.o:__internal_class_createInstanceFromZone -libobjc.o:__cache_getImp -libobjc.o:_objc_msgSendSuper -libobjc.o:__objc_search_builtins -libobjc.o:_sel_registerNameNoCopyNoLock -libobjc.o:_NXHashGet -libobjc.o:_class_respondsToMethod -libobjc.o:_object_getClassName -libobjc.o:_objc_getClass -libobjc.o:__objc_getFreedObjectClass -libobjc.o:__objc_fixup_selector_refs -libobjc.o:_class_lookupMethod -libobjc.o:_NXNextHashState -libobjc.o:_class_poseAs -libobjc.o:_classIsEqual -libobjc.o:_classHash -libobjc.o:__objcTweakMethodListPointerForClass -libobjc.o:_class_initialize -libobjc.o:_objc_lookUpClass -libobjc.o:-[Protocol conformsTo:] -libobjc.o:__objc_create_zone -libobjc.o:_NXHashInsert -libobjc.o:__objc_add_classes_from_image -libobjc.o:__cache_collect_free -libobjc.o:__objc_hash_selector -libobjc.o:__class_install_relationships -libobjc.o:__objc_register_category -libobjc.o:__mapStrIsEqual -libobjc.o:__cache_malloc -libobjc.o:__cache_expand -libobjc.o:_objc_msgSendSuper_stret -libobjc.o:_NXMapInsert -libobjc.o:__fetchInitializingClassList -libobjc.o:__NXMapMember -libobjc.o:_map_method_descs -libobjc.o:__mapStrHash -libobjc.o:__objc_call_loads_for_image -libobjc.o:_objc_getClassList -libobjc.o:__objc_equal_selector -libobjc.o:__cache_addForwardEntry -libobjc.o:_NXMapGet -libobjc.o:__objc_checkForPendingClassReferences -libobjc.o:_NXMapRemove -libobjc.o:_get_base_method_list -libobjc.o:__objc_resolve_categories_for_class -libobjc.o:__objc_insertMethods -libobjc.o:_sel_lock -libobjc.o:_sel_unlock -libobjc.o:__cache_create -libobjc.o:__thisThreadIsInitializingClass -libobjc.o:__garbage_make_room -libobjc.o:__objcInit -libobjc.o:__objc_map_class_refs_for_image -libobjc.o:_class_lookupNamedMethodInMethodList -libobjc.o:_sel_registerName -libobjc.o:__collecting_in_critical -libobjc.o:__objc_add_categories_from_image -libobjc.o:+[Object alloc] -libobjc.o:__setThisThreadIsInitializingClass -libobjc.o:__setThisThreadIsNotInitializingClass -libobjc.o:_NXUniqueString -libobjc.o:_NXStrIsEqual -libobjc.o:__get_pc_for_thread -libobjc.o:__objc_map_image -libobjc.o:__objc_addHeader -libobjc.o:-[Object init] -libobjc.o:__objc_fixup_protocol_objects_for_image -libobjc.o:__objc_bindClassIfNeeded -libobjc.o:_class_getInstanceMethod -libobjc.o:_NXStrHash -libobjc.o:-[Object free] -libobjc.o:__getObjcModules -libobjc.o:__getObjcImageInfo -libobjc.o:_class_getVariable -libobjc.o:-[Protocol descriptionForInstanceMethod:] -libobjc.o:__NXMapRehash -libobjc.o:__internal_object_copyFromZone -libobjc.o:_NXPtrHash -libobjc.o:__NXHashRehash -libobjc.o:__getObjcClassRefs -libobjc.o:_sel_getName -libobjc.o:_CopyIntoReadOnly -libobjc.o:_hashPrototype -libobjc.o:_lookup_method -libobjc.o:_class_nextMethodList -libobjc.o:__objc_addOrigClass -libobjc.o:_NXHashRemove -libobjc.o:_objc_msgSendv -libobjc.o:__objc_msgForward -libobjc.o:-[Object class] -libobjc.o:+[Object name] -libobjc.o:_objc_getOrigClass -libobjc.o:_object_setInstanceVariable -libobjc.o:_NXCreateHashTableFromZone -libobjc.o:_hashPrototype -libobjc.o:__objc_add_category_flush_caches -libobjc.o:-[Object perform:with:with:] -libobjc.o:__objc_defaultClassHandler -libobjc.o:_class_getInstanceVariable -libobjc.o:_freeBuckets -libobjc.o:_freeBucketPairs -libobjc.o:_NXNoEffectFree -libobjc.o:__getObjcHeaderData -libobjc.o:__getObjcMessageRefs -libobjc.o:_NXCreateMapTableFromZone -libobjc.o:_flush_caches -libobjc.o:_objc_msgSendv_stret -libobjc.o:-[Object respondsTo:] -libobjc.o:-[Object perform:] -libobjc.o:-[Object self] -libobjc.o:+[Object class] -libobjc.o:-[Object isMemberOf:] -libobjc.o:__objc_init_class_hash -libobjc.o:_bootstrap -libobjc.o:_isEqualPrototype -libobjc.o:_NXInitHashState -libobjc.o:_log2 -libobjc.o:_exp2m1 -libobjc.o:_objc_setConfiguration -libobjc.o:_NXCreateHashTable -libobjc.o:_log2 -libobjc.o:__objc_fixup_string_objects_for_image -libobjc.o:__getObjcStringObjects -libobjc.o:__getObjcProtocols -libobjc.o:+[Object initialize] -libobjc.o:+[Protocol _fixup:numElements:] -libobjc.o:__objc_flush_caches -libobjc.o:+[Protocol load] -libobjc.o:__getObjcHeaders -libobjc.o:_objc_exception_set_functions -libobjc.o:_isEqualPrototype -libobjc.o:_objc_getClasses -libobjc.o:_addClassToOriginalClass -libobjc.o:__mapPtrHash -libobjc.o:_objc_setMultithreaded -libobjc.o:__objc_unmap_image -libobjc.o:__objc_fatalHeader -libobjc.o:__objc_headerStart -libobjc.o:__mapPtrIsEqual -libobjc.o:_lookup_instance_method -libobjc.o:_NXCountHashTable -libobjc.o:_objc_pendClassReference -libobjc.o:__objc_getNonexistentClass -libobjc.o:__cache_flush -libobjc.o:__objc_pthread_destroyspecific -libobjc.o:__destroyInitializingClassList -libobjc.o:_objc_loadModule diff --git a/objc-exports b/objc-exports index 6e0945f..7ae4460 100644 --- a/objc-exports +++ b/objc-exports @@ -21,6 +21,25 @@ _method_getNumberOfArguments _method_getSizeOfArguments _method_getArgumentInfo _class_nextMethodList +# objc-auto.h - actually, everything possible for now +_objc_collect +_objc_collect_generation +_objc_numberAllocated +_objc_isAuto +_objc_collecting_enabled +_objc_allocate_object +_objc_assign_strongCast +_objc_assign_global +_objc_assign_ivar +_objc_assign_strongCast_generic +_objc_assign_global_generic +_objc_assign_ivar_generic +_objc_assign_strongCast_CF +_objc_assign_ivar_address_CF +_objc_collect_init +_objc_is_finalized +_objc_memmove_collectable +_objc_collect_if_needed # objc-exception.h _objc_exception_throw _objc_exception_try_enter @@ -54,6 +73,7 @@ _objc_msgSendv_stret _objc_getClassList _objc_getClasses _objc_lookUpClass +_objc_getRequiredClass _objc_addClass _objc_setClassHandler _objc_setMultithreaded @@ -162,4 +182,4 @@ _do_not_remove_this_dummy_function # used by debugging tools like heap __objc_debug_class_hash # used by Foundation's NSAutoreleaseFreedObjectCheckEnabled -__objc_getFreedObjectClass \ No newline at end of file +__objc_getFreedObjectClass diff --git a/runtime/Auto.subproj/objc-auto-i386.s b/runtime/Auto.subproj/objc-auto-i386.s new file mode 100644 index 0000000..082949e --- /dev/null +++ b/runtime/Auto.subproj/objc-auto-i386.s @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +#warning Intel version needs to be implemented. diff --git a/runtime/Auto.subproj/objc-auto-ppc.s b/runtime/Auto.subproj/objc-auto-ppc.s new file mode 100644 index 0000000..33eb98f --- /dev/null +++ b/runtime/Auto.subproj/objc-auto-ppc.s @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + + + ; + ; This section includes declarations of routines that will be used to populate + ; the runtime pages during auto initialization. Each wb_routine definition + ; creates an absolute branch into the rtp plus a non-gc version of code for + ; non collecting apps. Note - the blr is necessary at the end of the non-gc + ; routine for code copying to behave correctly. + ; + +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" + + .macro wb_routine + .globl _$0 ; primary entry name +; .abs _abs_$0,kRTAddress_$0 +_$0: ; primary entry point + ba $1 ; branch to runtime page + + .globl _$0_non_gc ; non_gc entry point name +_$0_non_gc: ; non_gc entry point + .endmacro + + .text + +// note - unfortunately ba does not accept constant expressions + + ; non-gc routines + + ; id objc_assign_strongCast(id value, id *dest) + wb_routine objc_assign_strongCast,0xfffefea0 + stw r3,0(r4) ; store value at dest + blr ; return + + ; id objc_assign_global(id value, id *dest) + wb_routine objc_assign_global,0xfffefeb0 + stw r3,0(r4) ; store value at dest + blr ; return + + ; id objc_assign_ivar(id value, id dest, unsigned int offset) + wb_routine objc_assign_ivar,0xfffefec0 + stwx r3,r4,r5 ; store value at (dest+offset) + blr ; return + \ No newline at end of file diff --git a/runtime/Auto.subproj/objc-auto.s b/runtime/Auto.subproj/objc-auto.s new file mode 100644 index 0000000..220e3d0 --- /dev/null +++ b/runtime/Auto.subproj/objc-auto.s @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights + * Reserved. This file contains Original Code and/or Modifications of + * Original Code as defined in and that are subject to the Apple Public + * Source License Version 1.1 (the "License"). You may not use this file + * except in compliance with the License. Please obtain a copy of the + * License at http://www.apple.com/publicsource and read it before using + * this file. + * + * The Original Code and all software distributed under the License are + * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + + +#if defined (__i386__) || defined (i386) + #include "objc-auto-i386.s" +#elif defined (__ppc__) || defined(ppc) + #include "objc-auto-ppc.s" +#else + #error Architecture not supported +#endif diff --git a/runtime/Messengers.subproj/objc-msg-i386.s b/runtime/Messengers.subproj/objc-msg-i386.s index fbb8c03..100ace5 100644 --- a/runtime/Messengers.subproj/objc-msg-i386.s +++ b/runtime/Messengers.subproj/objc-msg-i386.s @@ -36,8 +36,11 @@ // assembler is fixed we have to find another way. #define NO_MACRO_CONSTS #ifdef NO_MACRO_CONSTS + kOne = 1 kTwo = 2 + kFour = 4 kEight = 8 + kTwelve = 12 #endif /******************************************************************** @@ -77,6 +80,21 @@ _objc_exitPoints: .long LMsgSendSuperStretExit .long 0 + +#if defined(__DYNAMIC__) + +/* + * Thunk to retrieve PC. + * `call 1; 1: pop` sequence breaks any branch-prediction stack. + */ + +.align 4, 0x90 +L_get_pc_thunk.edx: + movl (%esp,1), %edx + ret + +#endif + /* * Handcrafted dyld stubs for each external call. * They should be converted into a local branch after linking. aB. @@ -94,15 +112,15 @@ _objc_exitPoints: .picsymbol_stub ;\ L ## name ## $stub: ;\ .indirect_symbol name ;\ - call L0$ ## name ;\ + call L_get_pc_thunk.edx ;\ L0$ ## name: ;\ - popl %eax ;\ - movl L ## name ## $lz-L0$ ## name(%eax),%edx ;\ - jmp %edx ;\ + movl L ## name ## $lz-L0$ ## name(%edx),%ecx ;\ + jmp %ecx ;\ L ## name ## $stub_binder: ;\ - lea L ## name ## $lz-L0$ ## name(%eax),%eax ;\ + lea L ## name ## $lz-L0$ ## name(%edx),%eax ;\ pushl %eax ;\ jmp dyld_stub_binding_helper ;\ + nop ;\ .data ;\ .lazy_symbol_pointer ;\ L ## name ## $lz: ;\ @@ -226,8 +244,8 @@ EXTERNAL_SYMBOL = 1 .macro LOAD_STATIC_WORD #if defined(__DYNAMIC__) - call 1f -1: popl %edx + call L_get_pc_thunk.edx +1: .if $2 == EXTERNAL_SYMBOL movl L$1-1b(%edx),$0 movl 0($0),$0 @@ -258,8 +276,8 @@ EXTERNAL_SYMBOL = 1 .macro LEA_STATIC_DATA #if defined(__DYNAMIC__) - call 1f -1: popl %edx + call L_get_pc_thunk.edx +1: .if $2 == EXTERNAL_SYMBOL movl L$1-1b(%edx),$0 .elseif $2 == LOCAL_SYMBOL @@ -410,7 +428,7 @@ CACHE_GET = 2 // first argument is class, search that class // search the receiver's cache LMsgSendProbeCache_$0_$1_$2: #if defined(OBJC_INSTRUMENTED) - inc %ebx // probeCount += 1 + addl $kOne, %ebx // probeCount += 1 #endif andl %esi, %edx // index &= mask movl (%edi, %edx, 4), %eax // method = buckets[index] @@ -419,7 +437,7 @@ LMsgSendProbeCache_$0_$1_$2: je LMsgSendCacheMiss_$0_$1_$2 // go to cache miss code cmpl method_name(%eax), %ecx // check for method name match je LMsgSendCacheHit_$0_$1_$2 // go handle cache hit - inc %edx // bump index ... + addl $kOne, %edx // bump index ... jmp LMsgSendProbeCache_$0_$1_$2 // ... and loop // not found in cache: restore state and go to callers handler @@ -431,7 +449,7 @@ LMsgSendCacheMiss_$0_$1_$2: je LMsgSendMissInstrumentDone_$0_$1_$2 // ... emptyCache, do not record anything // locate and update the CacheInstrumentation structure - inc %esi // entryCount = mask + 1 + addl $kOne, %esi // entryCount = mask + 1 #ifdef NO_MACRO_CONSTS shll $kTwo, %esi // tableSize = entryCount * sizeof(entry) #else @@ -441,7 +459,7 @@ LMsgSendCacheMiss_$0_$1_$2: addl %edx, %esi // cacheData = &cache->buckets[mask+1] movl missCount(%esi), %edi // - inc %edi // + addl $kOne, %edi // movl %edi, missCount(%esi) // cacheData->missCount += 1 movl missProbes(%esi), %edi // addl %ebx, %edi // @@ -465,7 +483,7 @@ LMsgSendMissHistoIndexSet_$0_$1_$2: #endif addl %ebx, %esi // calculate &CacheMissHistogram[probeCount<<2] movl 0(%esi), %edi // get current tally - inc %edi // + addl $kOne, %edi // movl %edi, 0(%esi) // tally += 1 LMsgSendMissInstrumentDone_$0_$1_$2: popl %ebx // restore non-volatile register @@ -520,7 +538,7 @@ LMsgSendCacheHit_$0_$1_$2: je LMsgSendHitInstrumentDone_$0_$1_$2 // ... emptyCache, do not record anything // locate and update the CacheInstrumentation structure - inc %esi // entryCount = mask + 1 + addl $kOne, %esi // entryCount = mask + 1 #ifdef NO_MACRO_CONSTS shll $kTwo, %esi // tableSize = entryCount * sizeof(entry) #else @@ -530,7 +548,7 @@ LMsgSendCacheHit_$0_$1_$2: addl %edx, %esi // cacheData = &cache->buckets[mask+1] movl hitCount(%esi), %edi - inc %edi + addl $kOne, %edi movl %edi, hitCount(%esi) // cacheData->hitCount += 1 movl hitProbes(%esi), %edi addl %ebx, %edi @@ -554,7 +572,7 @@ LMsgSendHitHistoIndexSet_$0_$1_$2: #endif addl %ebx, %esi // calculate &CacheHitHistogram[probeCount<<2] movl 0(%esi), %edi // get current tally - inc %edi // + addl $kOne, %edi // movl %edi, 0(%esi) // tally += 1 LMsgSendHitInstrumentDone_$0_$1_$2: popl %ebx // restore non-volatile register @@ -598,6 +616,8 @@ LMsgSendHitInstrumentDone_$0_$1_$2: // MSG_SEND (first parameter is receiver) // MSG_SENDSUPER (first parameter is address of objc_super structure) // +// Stack must be at 0xXXXXXXXc on entrance. +// // On exit: Register parameters restored from CacheLookup // imp in eax // @@ -605,14 +625,19 @@ LMsgSendHitInstrumentDone_$0_$1_$2: .macro MethodTableLookup +#ifdef NO_MACRO_CONSTS + subl $kFour, %esp // 16-byte align the stack +#else + subl $4, %esp // 16-byte align the stack +#endif // push args (class, selector) pushl %ecx pushl %eax CALL_EXTERN(__class_lookupMethodAndLoadCache) #ifdef NO_MACRO_CONSTS - addl $kEight, %esp // pop parameters + addl $kTwelve, %esp // pop parameters and alignment #else - addl $8, %esp // pop parameters + addl $12, %esp // pop parameters and alignment #endif .endmacro @@ -712,9 +737,8 @@ LMsgSendCacheMiss: // message sent to nil: redirect to nil receiver, if any LMsgSendNilSelf: - call 1f // load new receiver -1: popl %edx - movl __objc_nilReceiver-1b(%edx),%eax + call L_get_pc_thunk.edx // load new receiver +1: movl __objc_nilReceiver-1b(%edx),%eax testl %eax, %eax // return nil if no new receiver je LMsgSendDone movl %eax, self(%esp) // send to new receiver @@ -781,9 +805,18 @@ LMsgSendSuperExit: movl (marg_list+4)(%ebp), %edx addl $8, %edx // skip self & selector movl (marg_size+4)(%ebp), %ecx - subl $5, %ecx // skip self & selector + subl $8, %ecx // skip self & selector shrl $2, %ecx - jle LMsgSendvArgsOK + je LMsgSendvArgsOK + + // %esp = %esp - (16 - ((numVariableArguments && 3) << 2)) + movl %ecx, %eax // 16-byte align stack + andl $3, %eax + shll $2, %eax + neg %eax + addl $16, %eax + subl %eax, %esp + LMsgSendvArgLoop: decl %ecx movl 0(%edx, %ecx, 4), %eax @@ -841,9 +874,8 @@ LMsgSendStretCacheMiss: // message sent to nil: redirect to nil receiver, if any LMsgSendStretNilSelf: - call 1f // load new receiver -1: popl %edx - movl __objc_nilReceiver-1b(%edx),%eax + call L_get_pc_thunk.edx // load new receiver +1: movl __objc_nilReceiver-1b(%edx),%eax testl %eax, %eax // return nil if no new receiver je LMsgSendStretDone movl %eax, self_stret(%esp) // send to new receiver @@ -928,6 +960,13 @@ LMsgSendSuperStretExit: subl $5, %ecx // skip self & selector shrl $2, %ecx jle LMsgSendvStretArgsOK + + movl %ecx, %eax // 16-byte align stack + andl $3, %eax + shll $2, %eax + subl $12, %esp + addl %eax, %esp + LMsgSendvStretArgLoop: decl %ecx movl 0(%edx, %ecx, 4), %eax @@ -983,11 +1022,10 @@ LUnkSelStr: .ascii "Does not recognize selector %s\0" // non-stret version ... pushl %ebp movl %esp,%ebp - movl (selector+4)(%esp), %eax + movl (selector+4)(%ebp), %eax #if defined(__DYNAMIC__) - call L__objc_msgForward$pic_base + call L_get_pc_thunk.edx L__objc_msgForward$pic_base: - popl %edx leal LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx cmpl %ecx, %eax #else @@ -995,7 +1033,8 @@ L__objc_msgForward$pic_base: #endif je LMsgForwardError - leal (self+4)(%esp), %ecx + subl $8, %esp // 16-byte align the stack + leal (self+4)(%ebp), %ecx pushl %ecx pushl %eax #if defined(__DYNAMIC__) @@ -1004,7 +1043,7 @@ L__objc_msgForward$pic_base: movl LFwdSel,%ecx #endif pushl %ecx - pushl (self+16)(%esp) + pushl (self+4)(%ebp) call _objc_msgSend movl %ebp,%esp popl %ebp @@ -1013,6 +1052,7 @@ L__objc_msgForward$pic_base: // call error handler with unrecognized selector message .align 4, 0x90 LMsgForwardError: + subl $12, %esp // 16-byte align the stack #if defined(__DYNAMIC__) leal LFwdSel-L__objc_msgForward$pic_base(%edx),%eax pushl %eax @@ -1022,7 +1062,7 @@ LMsgForwardError: pushl $LFwdSel pushl $LUnkSelStr #endif - pushl (self+12)(%esp) + pushl (self+4)(%ebp) CALL_EXTERN(___objc_error) // volatile, will not return // ***** Stret version of function below @@ -1032,12 +1072,11 @@ LMsgForwardError: LForwardStretVersion: pushl %ebp movl %esp,%ebp - movl (selector_stret+4)(%esp), %eax + movl (selector_stret+4)(%ebp), %eax #if defined(__DYNAMIC__) - call L__objc_msgForwardStret$pic_base + call L_get_pc_thunk.edx L__objc_msgForwardStret$pic_base: - popl %edx leal LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx cmpl %ecx, %eax #else @@ -1045,7 +1084,8 @@ L__objc_msgForwardStret$pic_base: #endif je LMsgForwardStretError - leal (self_stret+4)(%esp), %ecx + subl $8, %esp // 16-byte align the stack + leal (self_stret+4)(%ebp), %ecx pushl %ecx pushl %eax #if defined(__DYNAMIC__) @@ -1054,7 +1094,7 @@ L__objc_msgForwardStret$pic_base: movl LFwdSel,%ecx #endif pushl %ecx - pushl (self_stret+16)(%esp) + pushl (self_stret+4)(%ebp) call _objc_msgSend movl %ebp,%esp popl %ebp @@ -1063,6 +1103,7 @@ L__objc_msgForwardStret$pic_base: // call error handler with unrecognized selector message .align 4, 0x90 LMsgForwardStretError: + subl $12, %esp // 16-byte align the stack #if defined(__DYNAMIC__) leal LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax pushl %eax @@ -1072,9 +1113,16 @@ LMsgForwardStretError: pushl $LFwdSel pushl $LUnkSelStr #endif - pushl (self_stret+12)(%esp) + pushl (self_stret+4)(%ebp) CALL_EXTERN(___objc_error) // volatile, will not return #endif /* defined (KERNEL) */ END_ENTRY __objc_msgForward + +// Special section containing a function pointer that dyld will call +// when it loads new images. +LAZY_PIC_FUNCTION_STUB(__objc_notify_images) +.data +.section __DATA,__image_notify +.long L__objc_notify_images$stub diff --git a/runtime/Messengers.subproj/objc-msg-ppc.s b/runtime/Messengers.subproj/objc-msg-ppc.s index 029a2bd..61b0bb0 100644 --- a/runtime/Messengers.subproj/objc-msg-ppc.s +++ b/runtime/Messengers.subproj/objc-msg-ppc.s @@ -58,6 +58,10 @@ * 31-Dec-96 Umesh Vaishampayan (umeshv@NeXT.com) * Created from m98k. ********************************************************************/ + +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" /******************************************************************** * Data used by the ObjC runtime. @@ -84,6 +88,7 @@ _objc_entryPoints: .long _objc_msgSend_stret .long _objc_msgSendSuper .long _objc_msgSendSuper_stret + .long _objc_msgSend_rtp .long 0 .globl _objc_exitPoints @@ -94,6 +99,7 @@ _objc_exitPoints: .long LMsgSendStretExit .long LMsgSendSuperExit .long LMsgSendSuperStretExit + .long _objc_msgSend_rtp_exit .long 0 /* @@ -199,6 +205,7 @@ LAZY_PIC_FUNCTION_STUB(mcount) #define kFwdMsgSend 1 #define kFwdMsgSendStret 0 + /******************************************************************** * * Useful macros. Macros are used instead of subroutines, for speed. @@ -362,41 +369,20 @@ $0: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; -; CacheLookup WORD_RETURN | STRUCT_RETURN, MSG_SEND | MSG_SENDSUPER | CACHE_GET, cacheMissLabel +; CacheLookup selectorRegister, cacheMissLabel ; ; Locate the implementation for a selector in a class method cache. ; -; Takes: WORD_RETURN (r3 is first parameter) -; STRUCT_RETURN (r3 is structure return address, r4 is first parameter) -; MSG_SEND (first parameter is receiver) -; MSG_SENDSUPER (first parameter is address of objc_super structure) -; CACHE_GET (first parameter is class; return method triplet) -; -; cacheMissLabel = label to branch to iff method is not cached +; Takes: +; $0 = register containing selector (r4 or r5 ONLY); +; cacheMissLabel = label to branch to iff method is not cached +; r12 = class whose cache is to be searched ; -; Eats: r0, r11, r12 -; On exit: (found) MSG_SEND and MSG_SENDSUPER: return imp in r12 and ctr -; (found) CACHE_GET: return method triplet in r12 +; On exit: (found) method triplet in r2, imp in r12, r11 is non-zero ; (not found) jumps to cacheMissLabel ; -; For MSG_SEND and MSG_SENDSUPER, the messenger jumps to the imp -; in ctr. The same imp in r12 is used by the method itself for its -; relative addressing. This saves the usual "jump to next line and -; fetch link register" construct inside the method. -; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Values to specify to method lookup macros whether the return type of -; the method is an integer or structure. -#define WORD_RETURN 0 -#define STRUCT_RETURN 1 - -; Values to specify to method lookup macros whether the return type of -; the method is an integer or structure. -#define MSG_SEND 0 -#define MSG_SENDSUPER 1 -#define CACHE_GET 2 - .macro CacheLookup #if defined(OBJC_INSTRUMENTED) @@ -406,55 +392,22 @@ $0: li r7,0 ; no probes so far! #endif -.if $1 == CACHE_GET ; Only WORD_RETURN applies - lwz r12,CACHE(r3) ; cache = class->cache (class = 1st parameter) -.else - -.if $0 == WORD_RETURN ; WORD_RETURN - -.if $1 == MSG_SEND ; MSG_SEND - lwz r12,ISA(r3) ; class = receiver->isa -.elseif $1 == MSG_SENDSUPER ; MSG_SENDSUPER - lwz r12,CLASS(r3) ; class = super->class -.else - trap ; Should not happen -.endif - -.else ; STRUCT_RETURN - -.if $1 == MSG_SEND ; MSG_SEND - lwz r12,ISA(r4) ; class = receiver->isa -.elseif $1 == MSG_SENDSUPER ; MSG_SENDSUPER - lwz r12,CLASS(r4) ; class = super->class -.else - trap ; Should not happen -.endif - -.endif - - lwz r12,CACHE(r12) ; cache = class->cache - -.endif ; CACHE_GET - + lwz r2,CACHE(r12) ; cache = class->cache stw r9,48(r1) ; save r9 #if defined(OBJC_INSTRUMENTED) - mr r6,r12 ; save cache pointer + mr r6,r2 ; save cache pointer #endif - lwz r11,MASK(r12) ; mask = cache->mask - addi r9,r12,BUCKETS ; buckets = cache->buckets + lwz r11,MASK(r2) ; mask = cache->mask + addi r0,r2,BUCKETS ; buckets = cache->buckets slwi r11,r11,2 ; r11 = mask << 2 -.if $0 == WORD_RETURN ; WORD_RETURN - and r12,r4,r11 ; bytes = sel & (mask<<2) -.else ; STRUCT_RETURN - and r12,r5,r11 ; bytes = sel & (mask<<2) -.endif + and r9,$0,r11 ; bytes = sel & (mask<<2) #if defined(OBJC_INSTRUMENTED) - b LLoop_$0_$1_$2 + b LLoop_$0_$1 -LMiss_$0_$1_$2: +LMiss_$0_$1: ; r6 = cache, r7 = probeCount lwz r9,MASK(r6) ; entryCount = mask + 1 addi r9,r9,1 ; @@ -475,43 +428,32 @@ LMiss_$0_$1_$2: lwz r6,36(r1) ; restore r6 lwz r7,40(r1) ; restore r7 - b $2 ; goto cacheMissLabel + b $1 ; goto cacheMissLabel #endif ; search the cache -LLoop_$0_$1_$2: +LLoop_$0_$1: #if defined(OBJC_INSTRUMENTED) addi r7,r7,1 ; probeCount += 1 #endif - lwzx r2,r9,r12 ; method = buckets[bytes/4] - addi r12,r12,4 ; bytes += 4 + lwzx r2,r9,r0 ; method = buckets[bytes/4] + addi r9,r9,4 ; bytes += 4 cmplwi r2,0 ; if (method == NULL) #if defined(OBJC_INSTRUMENTED) - beq LMiss_$0_$1_$2 + beq- LMiss_$0_$1 #else - beq $2 ; goto cacheMissLabel + beq- $1 ; goto cacheMissLabel #endif - lwz r0,METHOD_NAME(r2) ; name = method->method_name - and r12,r12,r11 ; bytes &= (mask<<2) -.if $0 == WORD_RETURN ; WORD_RETURN - cmplw r0,r4 ; if (name != selector) -.else ; STRUCT_RETURN - cmplw r0,r5 ; if (name != selector) -.endif - bne LLoop_$0_$1_$2 ; goto loop + lwz r12,METHOD_NAME(r2) ; name = method->method_name + and r9,r9,r11 ; bytes &= (mask<<2) + cmplw r12,$0 ; if (name != selector) + bne- LLoop_$0_$1 ; goto loop ; cache hit, r2 == method triplet address -.if $1 == CACHE_GET - ; return method triplet in r12 - ; N.B. A better way to do this is have CACHE_GET swap the use of r12 and r2. - mr r12,r2 -.else - ; return method imp in ctr and r12 - lwz r12,METHOD_IMP(r2) ; imp = method->method_imp (in r12) - mtctr r12 ; ctr = imp -.endif +; Return triplet in r2 and imp in r12 + lwz r12,METHOD_IMP(r2) ; imp = method->method_imp #if defined(OBJC_INSTRUMENTED) ; r6 = cache, r7 = probeCount @@ -592,6 +534,16 @@ LLoop_$0_$1_$2: ; imp in ctr ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Values to specify to method lookup macros whether the return type of +; the method is an integer or structure. +#define WORD_RETURN 0 +#define STRUCT_RETURN 1 + +; Values to specify to method lookup macros whether the return type of +; the method is an integer or structure. +#define MSG_SEND 0 +#define MSG_SENDSUPER 1 + .macro MethodTableLookup mflr r0 ; save lr stw r0, 8(r1) ; @@ -803,12 +755,12 @@ LLoop_$0_$1_$2: CALL_MCOUNT ; do lookup - CacheLookup WORD_RETURN, CACHE_GET, LGetMethodMiss + mr r12,r3 ; move class to r12 for CacheLookup + CacheLookup r4, LGetMethodMiss -; cache hit, method triplet in r12 - lwz r11, METHOD_IMP(r12) ; get the imp - cmplw r11, r5 ; check for _objc_msgForward - mr r3, r12 ; optimistically get the return value +; cache hit, method triplet in r2 and imp in r12 + cmplw r12, r5 ; check for _objc_msgForward + mr r3, r2 ; optimistically get the return value bnelr ; Not _objc_msgForward, return the triplet address LGetMethodMiss: @@ -834,10 +786,11 @@ LGetMethodExit: CALL_MCOUNT ; do lookup - CacheLookup WORD_RETURN, CACHE_GET, LGetImpMiss + mr r12,r3 ; move class to r12 for CacheLookup + CacheLookup r4, LGetImpMiss -; cache hit, method triplet in r12 - lwz r3, METHOD_IMP(r12) ; return method imp address +; cache hit, method triplet in r2 and imp in r12 + mr r3, r12 ; return method imp address blr LGetImpMiss: @@ -858,10 +811,25 @@ LGetImpExit: * r4 is the selector ********************************************************************/ +; WARNING - This code may be copied as is to the Objective-C runtime pages. +; The code is copied by rtp_set_up_objc_msgSend() from the +; beginning to the blr marker just prior to the cache miss code. +; Do not add callouts, global variable accesses, or rearrange +; the code without updating rtp_set_up_objc_msgSend. + +; Absolute symbols bounding the runtime page version of objc_msgSend. +_objc_msgSend_rtp = 0xfffeff00 +_objc_msgSend_rtp_exit = 0xfffeff00+0x100 + + ENTRY _objc_msgSend -; check whether receiver is nil - cmplwi r3,0 ; receiver nil? - beq- LMsgSendNilSelf ; if so, call handler or return nil +; check whether receiver is nil or selector is to be ignored + cmplwi r3,0 ; receiver nil? + xoris r11,r4,((kIgnore>>16) & 0xffff) ; clear hi if equal to ignored + cmplwi cr1,r11,(kIgnore & 0xffff) ; selector is to be ignored? + beq- LMsgSendNilSelf ; if nil receiver, call handler or return nil + lwz r12,ISA(r3) ; class = receiver->isa + beqlr- cr1 ; if ignored selector, return self immediately ; guaranteed non-nil entry point (disabled for now) ; .globl _objc_msgSendNonNil @@ -872,32 +840,51 @@ LGetImpExit: ; receiver is non-nil: search the cache LMsgSendReceiverOk: - CacheLookup WORD_RETURN, MSG_SEND, LMsgSendCacheMiss + ; class is already in r12 + CacheLookup r4, LMsgSendCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 ; r11 guaranteed non-zero on exit from CacheLookup with a hit // li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward bctr ; goto *imp; -; cache miss: go search the method lists -LMsgSendCacheMiss: - MethodTableLookup WORD_RETURN, MSG_SEND - li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward - bctr ; goto *imp; +; WARNING - The first six instructions of LMsgSendNilSelf are +; rewritten when objc_msgSend is copied to the runtime pages. +; These instructions must be maintained AS IS unless the code in +; rtp_set_up_objc_msgSend is also updated. +; * `mflr r0` must not be changed (not even to use a different register) +; * the load of _objc_nilReceiver value must remain six insns long +; * the value of _objc_nilReceiver must continue to be loaded into r11 ; message sent to nil: redirect to nil receiver, if any LMsgSendNilSelf: - mflr r0 ; load new receiver + ; DO NOT CHANGE THE NEXT SIX INSTRUCTIONS - see note above + mflr r0 ; save return address bcl 20,31,1f ; 31 is cr7[so] 1: mflr r11 addis r11,r11,ha16(__objc_nilReceiver-1b) lwz r11,lo16(__objc_nilReceiver-1b)(r11) - mtlr r0 + mtlr r0 ; restore return address + ; DO NOT CHANGE THE PREVIOUS SIX INSTRUCTIONS - see note above cmplwi r11,0 ; return nil if no new receiver beqlr mr r3,r11 ; send to new receiver + lwz r12,ISA(r11) ; class = receiver->isa b LMsgSendReceiverOk +; WARNING - This blr marks the end of the copy to the ObjC runtime pages and +; also marks the beginning of the cache miss code. Do not move +; around without checking the ObjC runtime pages initialization code. + blr + +; cache miss: go search the method lists +LMsgSendCacheMiss: + MethodTableLookup WORD_RETURN, MSG_SEND + li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward + bctr ; goto *imp; + LMsgSendExit: END_ENTRY _objc_msgSend @@ -930,7 +917,10 @@ LMsgSendExit: ; receiver is non-nil: search the cache LMsgSendStretReceiverOk: - CacheLookup STRUCT_RETURN, MSG_SEND, LMsgSendStretCacheMiss + lwz r12, ISA(r4) ; class = receiver->isa + CacheLookup r5, LMsgSendStretCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 li r11,kFwdMsgSendStret ; indicate struct-return to _objc_msgForward bctr ; goto *imp; @@ -974,8 +964,17 @@ LMsgSendStretExit: ; do profiling when enabled CALL_MCOUNT +; check whether selector is to be ignored + xoris r11,r4,((kIgnore>>16) & 0xffff) ; clear hi if to be ignored + cmplwi r11,(kIgnore & 0xffff) ; selector is to be ignored? + lwz r12,CLASS(r3) ; class = super->class + beq- LMsgSendSuperIgnored ; if ignored, return self + ; search the cache - CacheLookup WORD_RETURN, MSG_SENDSUPER, LMsgSendSuperCacheMiss + ; class is already in r12 + CacheLookup r4, LMsgSendSuperCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 lwz r3,RECEIVER(r3) ; receiver is the first arg ; r11 guaranteed non-zero after cache hit ; li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward @@ -988,6 +987,11 @@ LMsgSendSuperCacheMiss: li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward bctr ; goto *imp; +; ignored selector: return self +LMsgSendSuperIgnored: + lwz r3,RECEIVER(r3) + blr + LMsgSendSuperExit: END_ENTRY _objc_msgSendSuper @@ -1017,7 +1021,10 @@ LMsgSendSuperExit: CALL_MCOUNT ; search the cache - CacheLookup STRUCT_RETURN, MSG_SENDSUPER, LMsgSendSuperStretCacheMiss + lwz r12,CLASS(r4) ; class = super->class + CacheLookup r5, LMsgSendSuperStretCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 lwz r4,RECEIVER(r4) ; receiver is the first arg li r11,kFwdMsgSendStret ; indicate struct-return to _objc_msgForward bctr ; goto *imp; @@ -1385,3 +1392,11 @@ LMsgSendvStretSendIt: #endif /* !KERNEL */ END_ENTRY _objc_msgSendv_stret + + +// Special section containing a function pointer that dyld will call +// when it loads new images. +LAZY_PIC_FUNCTION_STUB(__objc_notify_images) +.data +.section __DATA,__image_notify +.long L__objc_notify_images$stub diff --git a/runtime/Messengers.subproj/objc-msg-stub-i386.s b/runtime/Messengers.subproj/objc-msg-stub-i386.s new file mode 100644 index 0000000..ff8549a --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-stub-i386.s @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +/* + * Interposing support. + * When OBJC_ALLOW_INTERPOSING is set, calls to objc_msgSend_rtp + * jump to the ordinary messenger via this stub. If objc_msgSend + * itself is interposed, dyld will find and change this stub. + * This stub must be compiled into a separate linker module. + */ + + .data + .align 4, 0x90 +L_get_pc_thunk.edx: + movl (%esp,1), %edx + ret + + .data + .picsymbol_stub +L_objc_msgSend$stub: + .indirect_symbol _objc_msgSend + call L_get_pc_thunk.edx +1: + movl L_objc_msgSend$lz-1b(%edx),%ecx + jmp %ecx +L_objc_msgSend$stub_binder: + lea L_objc_msgSend$lz-1b(%edx),%eax + pushl %eax + jmp dyld_stub_binding_helper + nop + + .data + .lazy_symbol_pointer +L_objc_msgSend$lz: + .indirect_symbol _objc_msgSend + .long L_objc_msgSend$stub_binder + + .text + .align 4, 0x90 + .globl _objc_msgSend_stub +_objc_msgSend_stub: + jmp L_objc_msgSend$stub diff --git a/runtime/Messengers.subproj/objc-msg-stub-ppc.s b/runtime/Messengers.subproj/objc-msg-stub-ppc.s new file mode 100644 index 0000000..9b2a768 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-stub-ppc.s @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +/* + * Interposing support. + * When OBJC_ALLOW_INTERPOSING is set, calls to objc_msgSend_rtp + * jump to the ordinary messenger via this stub. If objc_msgSend + * itself is interposed, dyld will find and change this stub. + * This stub must be compiled into a separate linker module. + */ + + .data + .picsymbol_stub +L_objc_msgSend$stub: + .indirect_symbol _objc_msgSend + mflr r0 + bcl 20,31,1f +1: + mflr r11 + addis r11,r11,ha16(L_objc_msgSend$lazy_ptr-1b) + mtlr r0 + lwz r12,lo16(L_objc_msgSend$lazy_ptr-1b)(r11) + mtctr r12 + addi r11,r11,lo16(L_objc_msgSend$lazy_ptr-1b) + bctr + + .data + .lazy_symbol_pointer +L_objc_msgSend$lazy_ptr: + .indirect_symbol _objc_msgSend + .long dyld_stub_binding_helper + + .text + .align 4 + .globl _objc_msgSend_stub + +_objc_msgSend_stub: + b L_objc_msgSend$stub diff --git a/runtime/Messengers.subproj/objc-msg-stub.s b/runtime/Messengers.subproj/objc-msg-stub.s new file mode 100644 index 0000000..9111c26 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-stub.s @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +#import "../objc-config.h" + +#if defined (__i386__) || defined (i386) + #include "objc-msg-stub-i386.s" +#elif defined (__ppc__) || defined(ppc) + #include "objc-msg-stub-ppc.s" + +#else + #error Architecture not supported +#endif diff --git a/runtime/Object.m b/runtime/Object.m index b3bfa68..8abc26e 100644 --- a/runtime/Object.m +++ b/runtime/Object.m @@ -29,6 +29,7 @@ #import #import "objc-private.h" +#import #import #import #import @@ -801,7 +802,7 @@ typedef struct { void *iterator = 0; int i; struct objc_method_list *mlist; - while ( (mlist = _class_inlinedNextMethodList( cls, &iterator )) ) { + while ( (mlist = class_nextMethodList( cls, &iterator )) ) { for (i = 0; i < mlist->method_count; i++) if (mlist->method_list[i].method_name == aSelector) { struct objc_method_description *m; @@ -851,7 +852,7 @@ typedef struct { void *iterator = 0; int i; struct objc_method_list *mlist; - while ( (mlist = _class_inlinedNextMethodList( cls, &iterator )) ) { + while ( (mlist = class_nextMethodList( cls, &iterator )) ) { for (i = 0; i < mlist->method_count; i++) if (mlist->method_list[i].method_name == aSelector) { struct objc_method_description *m; @@ -934,6 +935,7 @@ static id _internal_object_copy(Object *anObject, unsigned nBytes) static id _internal_object_dispose(Object *anObject) { if (anObject==nil) return nil; + object_cxxDestruct((id)anObject); anObject->isa = _objc_getFreedObjectClass (); free(anObject); return nil; @@ -1010,11 +1012,8 @@ Ivar object_setInstanceVariable(id obj, const char *name, void *value) Ivar ivar = 0; if (obj && name) { - void **ivaridx; - if ((ivar = class_getInstanceVariable(((Object*)obj)->isa, name))) { - ivaridx = (void **)((char *)obj + ivar->ivar_offset); - *ivaridx = value; + objc_assign_ivar((id)value, obj, ivar->ivar_offset); } } return ivar; diff --git a/runtime/hashtable2.m b/runtime/hashtable2.m index 5211251..451455e 100644 --- a/runtime/hashtable2.m +++ b/runtime/hashtable2.m @@ -99,7 +99,7 @@ static NXHashTablePrototype protoPrototype = { hashPrototype, isEqualPrototype, NXNoEffectFree, 0 }; -static NXHashTable *prototypes = NULL; +static NXHashTable *prototypes NOBSS = NULL; /* table of all prototypes */ static void bootstrap (void) { @@ -289,7 +289,11 @@ void *NXHashGet (NXHashTable *table, const void *data) { return NULL; } -static void _NXHashRehash (NXHashTable *table) { +__private_extern__ unsigned _NXHashCapacity (NXHashTable *table) { + return table->nbBuckets; + } + +__private_extern__ void _NXHashRehashToCapacity (NXHashTable *table, unsigned newCapacity) { /* Rehash: we create a pseudo table pointing really to the old guys, extend self, copy the old pairs, and free the pseudo table */ NXHashTable *old; @@ -300,7 +304,7 @@ static void _NXHashRehash (NXHashTable *table) { old = ALLOCTABLE(z); old->prototype = table->prototype; old->count = table->count; old->nbBuckets = table->nbBuckets; old->buckets = table->buckets; - table->nbBuckets += table->nbBuckets + 1; /* 2 times + 1 */ + table->nbBuckets = newCapacity; table->count = 0; table->buckets = ALLOCBUCKETS(z, table->nbBuckets); state = NXInitHashState (old); while (NXNextHashState (old, &state, &aux)) @@ -310,7 +314,11 @@ static void _NXHashRehash (NXHashTable *table) { _objc_syslog("*** hashtable: count differs after rehashing; probably indicates a broken invariant: there are x and y such as isEqual(x, y) is TRUE but hash(x) != hash (y)\n"); free (old->buckets); free (old); - }; + } + +static void _NXHashRehash (NXHashTable *table) { + _NXHashRehashToCapacity (table, table->nbBuckets*2 + 1); + } void *NXHashInsert (NXHashTable *table, const void *data) { HashBucket *bucket = BUCKETOF(table, data); diff --git a/runtime/objc-auto.h b/runtime/objc-auto.h new file mode 100644 index 0000000..4c28c0b --- /dev/null +++ b/runtime/objc-auto.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + * objc-auto.h + * Copyright 2004 Apple Computer, Inc. + */ + +#ifndef _OBJC_AUTO_H_ +#define _OBJC_AUTO_H_ + +#import +#include + +/* Collection utilities */ + +enum { + OBJC_GENERATIONAL = (1 << 0) +}; + +OBJC_EXPORT void objc_collect_if_needed(unsigned long options); +OBJC_EXPORT unsigned int objc_numberAllocated(void); +OBJC_EXPORT BOOL objc_collecting_enabled(void); + +/* Memory management */ +OBJC_EXPORT id objc_allocate_object(Class cls, int extra); + +/* Write barriers */ +OBJC_EXPORT id objc_assign_strongCast(id val, id *dest); +OBJC_EXPORT id objc_assign_global(id val, id *dest); +OBJC_EXPORT id objc_assign_ivar(id value, id dest, unsigned int offset); +OBJC_EXPORT void *objc_memmove_collectable(void *dst, const void *src, size_t size); + +/* Testing tools */ +OBJC_EXPORT BOOL objc_is_finalized(void *ptr); + + +#endif diff --git a/runtime/objc-auto.m b/runtime/objc-auto.m new file mode 100644 index 0000000..d0d08a8 --- /dev/null +++ b/runtime/objc-auto.m @@ -0,0 +1,1840 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + * objc-auto.m + * Copyright 2004 Apple Computer, Inc. + */ + +#import "objc-auto.h" + +#import +#import +#import +#import +#import + +#import "objc-private.h" +#import "objc-rtp.h" +#import "maptable.h" + + + +// Types and prototypes from non-open-source auto_zone.h + +#include +#include + +typedef malloc_zone_t auto_zone_t; + +typedef uint64_t auto_date_t; + +typedef struct { + unsigned version; // reserved - 0 for now + /* Memory usage */ + unsigned long long num_allocs; // number of allocations performed + volatile unsigned blocks_in_use;// number of pointers in use + unsigned bytes_in_use; // sum of the sizes of all pointers in use + unsigned max_bytes_in_use; // high water mark + unsigned bytes_allocated; + /* GC stats */ + /* When there is an array, 0 stands for full collection, 1 for generational */ + unsigned num_collections[2]; + boolean_t last_collection_was_generational; + unsigned bytes_in_use_after_last_collection[2]; + unsigned bytes_allocated_after_last_collection[2]; + unsigned bytes_freed_during_last_collection[2]; + auto_date_t duration_last_collection[2]; + auto_date_t duration_all_collections[2]; +} auto_statistics_t; + +typedef enum { + AUTO_COLLECTION_NO_COLLECTION = 0, + AUTO_COLLECTION_GENERATIONAL_COLLECTION, + AUTO_COLLECTION_FULL_COLLECTION +} auto_collection_mode_t; + +typedef enum { + AUTO_LOG_COLLECTIONS = (1 << 1), // log whenever a collection occurs + AUTO_LOG_COLLECT_DECISION = (1 << 2), // logs when deciding whether to collect + AUTO_LOG_GC_IMPL = (1 << 3), // logs to help debug GC + AUTO_LOG_REGIONS = (1 << 4), // log whenever a new region is allocated + AUTO_LOG_UNUSUAL = (1 << 5), // log unusual circumstances + AUTO_LOG_WEAK = (1 << 6), // log weak reference manipulation + AUTO_LOG_ALL = (~0u) +} auto_log_mask_t; + +typedef struct auto_zone_cursor *auto_zone_cursor_t; + +typedef void (*auto_zone_foreach_object_t) (auto_zone_cursor_t cursor, void (*op) (void *ptr, void *data), void* data); + +typedef struct { + unsigned version; // reserved - 0 for now + boolean_t trace_stack_conservatively; + boolean_t (*should_collect)(auto_zone_t *, const auto_statistics_t *stats, boolean_t about_to_create_a_new_region); + // called back when a threshold is reached; must say whether to collect (and what type) + // all locks are released when that call back is called + // callee is free to call for statistics or reset the threshold + unsigned ask_should_collect_frequency; + // should_collect() is called each allocations or free, where is this field + unsigned full_vs_gen_frequency; + // ratio of generational vs. full GC for the frequency based ones + int (*collection_should_interrupt)(void); + // called during scan to see if garbage collection should be aborted + void (*invalidate)(auto_zone_t *zone, void *ptr, void *collection_context); + void (*batch_invalidate) (auto_zone_t *zone, auto_zone_foreach_object_t foreach, auto_zone_cursor_t cursor); + // called back with an object that is unreferenced + // callee is responsible for invalidating object state + void (*resurrect) (auto_zone_t *zone, void *ptr); + // convert the object into a safe-to-use, but otherwise "undead" object. no guarantees are made about the + // contents of this object, other than its liveness. + unsigned word0_mask; // mask for defining class + void (*note_unknown_layout)(auto_zone_t *zone, unsigned class_field); + // called once for each class encountered for which we don't know the layout + // callee can decide to register class with auto_zone_register_layout(), or do nothing + // Note that this function is called during GC and therefore should not do any auto-allocation + char* (*name_for_address) (auto_zone_t *zone, vm_address_t base, vm_address_t offset); + auto_log_mask_t log; + // set to auto_log_mask_t bits as desired + boolean_t disable_generational; + // if true, ignores requests to do generational GC. + boolean_t paranoid_generational; + // if true, always compares generational GC result to full GC garbage list + boolean_t malloc_stack_logging; + // if true, uses malloc_zone_malloc() for stack logging. +} auto_collection_control_t; + +typedef enum { + AUTO_TYPE_UNKNOWN = -1, // this is an error value + AUTO_UNSCANNED = 1, + AUTO_OBJECT = 2, + AUTO_MEMORY_SCANNED = 0, // holds conservatively scanned pointers + AUTO_MEMORY_UNSCANNED = AUTO_UNSCANNED, // holds unscanned memory (bits) + AUTO_OBJECT_SCANNED = AUTO_OBJECT, // first word is 'isa', may have 'exact' layout info elsewhere + AUTO_OBJECT_UNSCANNED = AUTO_OBJECT | AUTO_UNSCANNED, // first word is 'isa', good for bits or auto_zone_retain'ed items +} auto_memory_type_t; + +typedef struct +{ + vm_address_t referent; + vm_address_t referrer_base; + intptr_t referrer_offset; +} auto_reference_t; + +typedef void (*auto_reference_recorder_t)(auto_zone_t *zone, void *ctx, + auto_reference_t reference); + + +static void auto_collect(auto_zone_t *zone, auto_collection_mode_t mode, void *collection_context); +static auto_collection_control_t *auto_collection_parameters(auto_zone_t *zone); +static const auto_statistics_t *auto_collection_statistics(auto_zone_t *zone); +static void auto_enumerate_references(auto_zone_t *zone, void *referent, + auto_reference_recorder_t callback, + void *stack_bottom, void *ctx); +static void auto_enumerate_references_no_lock(auto_zone_t *zone, void *referent, auto_reference_recorder_t callback, void *stack_bottom, void *ctx); +static auto_zone_t *auto_zone(void); +static void auto_zone_add_root(auto_zone_t *zone, void *root, size_t size); +static void* auto_zone_allocate_object(auto_zone_t *zone, size_t size, auto_memory_type_t type, boolean_t initial_refcount_to_one, boolean_t clear); +static const void *auto_zone_base_pointer(auto_zone_t *zone, const void *ptr); +static auto_memory_type_t auto_zone_get_layout_type(auto_zone_t *zone, void *ptr); +static auto_memory_type_t auto_zone_get_layout_type_no_lock(auto_zone_t *zone, void *ptr); +static boolean_t auto_zone_is_finalized(auto_zone_t *zone, const void *ptr); +static boolean_t auto_zone_is_valid_pointer(auto_zone_t *zone, const void *ptr); +static unsigned int auto_zone_release(auto_zone_t *zone, void *ptr); +static void auto_zone_retain(auto_zone_t *zone, void *ptr); +static unsigned int auto_zone_retain_count_no_lock(auto_zone_t *zone, const void *ptr); +static void auto_zone_set_class_list(int (*get_class_list)(void **buffer, int count)); +static size_t auto_zone_size_no_lock(auto_zone_t *zone, const void *ptr); +static void auto_zone_start_monitor(boolean_t force); +static void auto_zone_write_barrier(auto_zone_t *zone, void *recipient, const unsigned int offset_in_bytes, const void *new_value); +static void *auto_zone_write_barrier_memmove(auto_zone_t *zone, void *dst, const void *src, size_t size); + + + +static void record_allocation(Class cls); +static auto_zone_t *gc_zone_init(void); + + +__private_extern__ BOOL UseGC NOBSS = NO; +static BOOL RecordAllocations = NO; +static int IsaStompBits = 0x0; + +static auto_zone_t *gc_zone = NULL; +static BOOL gc_zone_finalizing = NO; +static intptr_t gc_collection_threshold = 128 * 1024; +static size_t gc_collection_ratio = 100, gc_collection_counter = 0; +static NXMapTable *gc_finalization_safe_classes = NULL; +static BOOL gc_roots_retained = YES; + +/*********************************************************************** +* Internal utilities +**********************************************************************/ + +#define ISAUTOOBJECT(x) (auto_zone_is_valid_pointer(gc_zone, (x))) + + +// A should-collect callback that never allows collection. +// Currently used to prevent on-demand collection. +static boolean_t objc_never_collect(auto_zone_t *zone, const auto_statistics_t *stats, boolean_t about_to_create_a_new_region) +{ + return false; +} + + +/*********************************************************************** +* Utility exports +* Called by various libraries. +**********************************************************************/ + +void objc_collect(void) +{ + if (UseGC) { + auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL); + } +} + +void objc_collect_if_needed(unsigned long options) { + if (UseGC) { + const auto_statistics_t *stats = auto_collection_statistics(gc_zone); + if (options & OBJC_GENERATIONAL) { + // use an absolute memory allocated threshold to decide when to generationally collect. + intptr_t bytes_allocated_since_last_gc = stats->bytes_in_use - stats->bytes_in_use_after_last_collection[stats->last_collection_was_generational]; + if (bytes_allocated_since_last_gc >= gc_collection_threshold) { + // malloc_printf("bytes_allocated_since_last_gc = %ld\n", bytes_allocated_since_last_gc); + // periodically run a full collection until to keep memory usage down, controlled by OBJC_COLLECTION_RATIO (100 to 1 is the default). + auto_collection_mode_t mode = AUTO_COLLECTION_GENERATIONAL_COLLECTION; + if (gc_collection_counter++ >= gc_collection_ratio) { + mode = AUTO_COLLECTION_FULL_COLLECTION; + gc_collection_counter = 0; + } + auto_collect(gc_zone, mode, NULL); + } + } else { + // Run full collections until we no longer recover additional objects. We use two measurements + // to determine whether or not the collector is being productive: the total number of blocks + // must be shrinking, and the collector must itself be freeing bytes. Otherwise, another thread + // could be responsible for reducing the block count. On the other hand, another thread could + // be generating a lot of garbage, which would keep us collecting. This will need even more + // tuning to prevent starvation, etc. + unsigned blocks_in_use; + do { + blocks_in_use = stats->blocks_in_use; + auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL); + // malloc_printf("bytes freed = %ld\n", stats->bytes_freed_during_last_collection[0]); + } while (stats->bytes_freed_during_last_collection[0] > 0 && stats->blocks_in_use < blocks_in_use); + gc_collection_counter = 0; + } + } +} + +void objc_collect_generation(void) +{ + if (UseGC) { + auto_collect(gc_zone, AUTO_COLLECTION_GENERATIONAL_COLLECTION, NULL); + } +} + + +unsigned int objc_numberAllocated(void) +{ + const auto_statistics_t *stats = auto_collection_statistics(gc_zone); + return stats->blocks_in_use; +} + + +BOOL objc_isAuto(id object) +{ + return UseGC && ISAUTOOBJECT(object) != 0; +} + + +BOOL objc_collecting_enabled(void) +{ + return UseGC; +} + + +/*********************************************************************** +* Memory management. +* Called by CF and Foundation. +**********************************************************************/ + +// Allocate an object in the GC zone, with the given number of extra bytes. +id objc_allocate_object(Class cls, int extra) +{ + id result = + (id)auto_zone_allocate_object(gc_zone, cls->instance_size + extra, + AUTO_OBJECT_SCANNED, false, true); + result->isa = cls; + if (RecordAllocations) record_allocation(cls); + return result; +} + + +/*********************************************************************** +* Write barrier exports +* Called by pretty much all GC-supporting code. +**********************************************************************/ + + +// Platform-independent write barriers +// These contain the UseGC check that the platform-specific +// runtime-rewritten implementations do not. + +id objc_assign_strongCast_generic(id value, id *dest) +{ + if (UseGC) { + return objc_assign_strongCast_gc(value, dest); + } else { + return (*dest = value); + } +} + + +id objc_assign_global_generic(id value, id *dest) +{ + if (UseGC) { + return objc_assign_global_gc(value, dest); + } else { + return (*dest = value); + } +} + + +id objc_assign_ivar_generic(id value, id dest, unsigned int offset) +{ + if (UseGC) { + return objc_assign_ivar_gc(value, dest, offset); + } else { + id *slot = (id*) ((char *)dest + offset); + return (*slot = value); + } +} + +#if defined(__ppc__) + +// PPC write barriers are in objc-auto-ppc.s +// write_barrier_init conditionally stomps those to jump to the _impl versions. + +#else + +// use generic implementation until time can be spent on optimizations +id objc_assign_strongCast(id value, id *dest) { return objc_assign_strongCast_generic(value, dest); } +id objc_assign_global(id value, id *dest) { return objc_assign_global_generic(value, dest); } +id objc_assign_ivar(id value, id dest, unsigned int offset) { return objc_assign_ivar_generic(value, dest, offset); } + +// not defined(__ppc__) +#endif + + +void *objc_memmove_collectable(void *dst, const void *src, size_t size) +{ + if (UseGC) { + return auto_zone_write_barrier_memmove(gc_zone, dst, src, size); + } else { + return memmove(dst, src, size); + } +} + + +/*********************************************************************** +* Testing tools +* Used to isolate resurrection of garbage objects during finalization. +**********************************************************************/ +BOOL objc_is_finalized(void *ptr) { + return ptr != NULL && auto_zone_is_finalized(gc_zone, ptr); +} + + +/*********************************************************************** +* CF-only write barrier exports +* Called by CF only. +* The gc_zone guards are not thought to be necessary +**********************************************************************/ + +// Exported as very private SPI to Foundation to tell CF about +void* objc_assign_ivar_address_CF(void *value, void *base, void **slot) +{ + if (value && gc_zone) { + if (auto_zone_is_valid_pointer(gc_zone, base)) { + unsigned int offset = (((char *)slot)-(char *)base); + auto_zone_write_barrier(gc_zone, base, offset, value); + } + } + + return (*slot = value); +} + + +// Same as objc_assign_strongCast_gc, should tell Foundation to use _gc version instead +// exported as very private SPI to Foundation to tell CF about +void* objc_assign_strongCast_CF(void* value, void **slot) +{ + if (value && gc_zone) { + void *base = (void *)auto_zone_base_pointer(gc_zone, (void*)slot); + if (base) { + unsigned int offset = (((char *)slot)-(char *)base); + auto_zone_write_barrier(gc_zone, base, offset, value); + } + } + return (*slot = value); +} + + +/*********************************************************************** +* Write barrier implementations, optimized for when GC is known to be on +* Called by the write barrier exports only. +* These implementations assume GC is on. The exported function must +* either perform the check itself or be conditionally stomped at +* startup time. +**********************************************************************/ + +__private_extern__ id objc_assign_strongCast_gc(id value, id *slot) +{ + id base; + + base = (id) auto_zone_base_pointer(gc_zone, (void*)slot); + if (base) { + unsigned int offset = (((char *)slot)-(char *)base); + auto_zone_write_barrier(gc_zone, base, (char*)slot - (char*)base, value); + } + return (*slot = value); +} + + +__private_extern__ id objc_assign_global_gc(id value, id *slot) +{ + if (gc_roots_retained) { + if (value && ISAUTOOBJECT(value)) { + if (auto_zone_is_finalized(gc_zone, value)) + _objc_inform("GC: storing an already collected object %p into global memory at %p\n", value, slot); + auto_zone_retain(gc_zone, value); + } + if (*slot && ISAUTOOBJECT(*slot)) { + auto_zone_release(gc_zone, *slot); + } + } else { + // use explicit root registration. + if (value && ISAUTOOBJECT(value)) { + if (auto_zone_is_finalized(gc_zone, value)) + _objc_inform("GC: storing an already collected object %p into global memory at %p\n", value, slot); + auto_zone_add_root(gc_zone, slot, sizeof(id*)); + } + } + return (*slot = value); +} + + +__private_extern__ id objc_assign_ivar_gc(id value, id base, unsigned int offset) +{ + id *slot = (id*) ((char *)base + offset); + + if (value) { + if (ISAUTOOBJECT(base)) { + auto_zone_write_barrier(gc_zone, base, offset, value); + if (gc_zone_finalizing && (auto_zone_get_layout_type(gc_zone, value) & AUTO_OBJECT) != AUTO_OBJECT) { + // XXX_PCB: Hack, don't allow resurrection by inhibiting assigns of garbage, non-object, pointers. + // XXX BG: move this check into auto & institute a new policy for resurrection, to wit: + // Resurrected Objects should go on a special list during finalization & be zombified afterwards + // using the noisy isa-slam hack. + if (auto_zone_is_finalized(gc_zone, value) && !auto_zone_is_finalized(gc_zone, base)) { + _objc_inform("GC: *** objc_assign_ivar_gc: preventing a resurrecting store of %p into %p + %d\n", value, base, offset); + value = nil; + } + } + } else { + _objc_inform("GC: *** objc_assign_ivar_gc: %p + %d isn't in the auto_zone.\n", base, offset); + } + } + + return (*slot = value); +} + + + +/*********************************************************************** +* Finalization support +* Called by auto and Foundation. +**********************************************************************/ + +#define USE_ISA_HACK 1 +#define DO_ISA_DEBUG 0 + +#if USE_ISA_HACK + + +// NSDeallocatedObject silently ignores all messages sent to it. +@interface NSDeallocatedObject { +@public + Class IsA; +} ++ (Class)class; +@end + + +static unsigned int FTCount, FTSize; +static struct FTTable { + NSDeallocatedObject *object; + Class class; +} *FTTablePtr; + +/* a quick and very dirty table to map finalized pointers to their isa's */ +static void addPointerFT(NSDeallocatedObject *object, Class class) { + if (FTCount >= FTSize) { + FTSize = 2*(FTSize + 10); + FTTablePtr = realloc(FTTablePtr, FTSize*sizeof(struct FTTable)); + } + FTTablePtr[FTCount].object = object; + FTTablePtr[FTCount].class = class; + ++FTCount; +} + +static Class classForPointerFT(NSDeallocatedObject *object) { + int i; + for (i = 0; i < FTCount; ++i) + if (FTTablePtr[i].object == object) + return FTTablePtr[i].class; + return NULL; +} + +void objc_stale(id object) { +} + +@implementation NSDeallocatedObject ++ (Class)class { return self; } +- (Class)class { return classForPointerFT(self); } +- (BOOL)isKindOfClass:(Class)aClass { + Class cls; + for (cls = classForPointerFT(self); nil != cls; cls = cls->super_class) + if (cls == (Class)aClass) return YES; + return NO; +} ++ forward:(SEL)aSelector :(marg_list)args { return nil; } +- forward:(SEL)aSelector :(marg_list)args { + Class class = classForPointerFT(self); + if (!class) { + if (IsaStompBits & 0x2) + _objc_inform("***finalized & *recovered* object %p of being sent '%s'!!\n", self, sel_getName(aSelector)); + // if its not in the current table, then its being messaged from a STALE REFERENCE!! + objc_stale(self); + return nil; + } + if (IsaStompBits & 0x4) + _objc_inform("finalized object %p of class %s being sent %s\n", self, class->name, sel_getName(aSelector)); + return nil; +} +@end + + +static Class _NSDeallocatedObject = Nil; + +static IMP _NSObject_finalize = NULL; + + +// Handed to and then called by auto +static void sendFinalize(auto_zone_t *zone, void* ptr, void *context) +{ + if (ptr == NULL) { + // special signal to mark end of finalization phase + if (IsaStompBits & 0x8) + _objc_inform("----finalization phase over-----"); + FTCount = 0; + return; + } + + id object = ptr; + Class cls = object->isa; + + if (cls == _NSDeallocatedObject) { + // already finalized, do nothing + _objc_inform("sendFinalize called on NSDeallocatedObject %p", ptr); + return; + } + + IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize)); + if (finalizeMethod == &_objc_msgForward) { + _objc_inform("GC: class '%s' does not implement -finalize!", cls->name); + } + + gc_zone_finalizing = YES; + + @try { + // fixme later, optimize away calls to NSObject's -finalize + (*finalizeMethod)(object, @selector(finalize)); + } @catch (id exception) { + _objc_inform("GC: -finalize resulted in an exception being thrown %p!", exception); + // FIXME: what about uncaught C++ exceptions? Here's an idea, define a category + // in a .mm file, so we can catch both flavors of exceptions. + // @interface NSObject (TryToFinalize) + // - (BOOL)tryToFinalize { + // try { + // @try { + // [self finalize]; + // } @catch (id exception) { + // return NO; + // } + // } catch (...) { + // return NO; + // } + // return YES; + // } + // @end + } + + gc_zone_finalizing = NO; + + if (IsaStompBits) { + NSDeallocatedObject *dead = (NSDeallocatedObject *)object; + // examine list of okay classes and leave alone XXX get from file + // fixme hack: smash isa to dodge some out-of-order finalize bugs + // the following are somewhat finalize order safe + //if (!strcmp(dead->oldIsA->name, "NSCFArray")) return; + //if (!strcmp(dead->oldIsA->name, "NSSortedArray")) return; + if (IsaStompBits & 0x8) + printf("adding [%d] %p %s\n", FTCount, dead, dead->IsA->name); + addPointerFT(dead, dead->IsA); + objc_assign_ivar(_NSDeallocatedObject, dead, 0); + } +} + +static void finalizeOneObject(void *ptr, void *data) { + id object = ptr; + Class cls = object->isa; + + if (cls == _NSDeallocatedObject) { + // already finalized, do nothing + _objc_inform("finalizeOneObject called on NSDeallocatedObject %p", ptr); + return; + } + + IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize)); + if (finalizeMethod == &_objc_msgForward) { + _objc_inform("GC: class '%s' does not implement -finalize!", cls->name); + } + + // fixme later, optimize away calls to NSObject's -finalize + (*finalizeMethod)(object, @selector(finalize)); + + if (IsaStompBits) { + NSDeallocatedObject *dead = (NSDeallocatedObject *)object; + // examine list of okay classes and leave alone XXX get from file + // fixme hack: smash isa to dodge some out-of-order finalize bugs + // the following are somewhat finalize order safe + //if (!strcmp(dead->oldIsA->name, "NSCFArray")) return; + //if (!strcmp(dead->oldIsA->name, "NSSortedArray")) return; + if (gc_finalization_safe_classes && NXMapGet(gc_finalization_safe_classes, cls->name)) { + // malloc_printf("&&& finalized safe instance of %s &&&\n", cls->name); + return; + } + if (IsaStompBits & 0x8) + printf("adding [%d] %p %s\n", FTCount, dead, dead->IsA->name); + addPointerFT(dead, dead->IsA); + objc_assign_ivar(_NSDeallocatedObject, dead, 0); + } +} + +static void batchFinalize(auto_zone_t *zone, + auto_zone_foreach_object_t foreach, + auto_zone_cursor_t cursor) +{ + gc_zone_finalizing = YES; + for (;;) { + @try { + // eventually foreach(cursor, objc_msgSend, @selector(finalize)); + // foreach(cursor, finalizeOneObject, NULL); + foreach(cursor, objc_msgSend, @selector(finalize)); + // non-exceptional return means finalization is complete. + break; + } @catch (id exception) { + _objc_inform("GC: -finalize resulted in an exception being thrown %p!", exception); + } + } + gc_zone_finalizing = NO; +} + +@interface NSResurrectedObject { + @public + Class _isa; // [NSResurrectedObject class] + Class _old_isa; // original class + unsigned _resurrections; // how many times this object has been resurrected. +} ++ (Class)class; +@end + +@implementation NSResurrectedObject ++ (Class)class { return self; } +- (Class)class { return _isa; } ++ forward:(SEL)aSelector :(marg_list)args { return nil; } +- forward:(SEL)aSelector :(marg_list)args { + _objc_inform("**resurrected** object %p of class %s being sent message '%s'\n", self, _old_isa->name, sel_getName(aSelector)); + return nil; +} +- (void)finalize { + _objc_inform("**resurrected** object %p of class %s being finalized\n", self, _old_isa->name); +} +@end + +static Class _NSResurrectedObject; + +static void resurrectZombie(auto_zone_t *zone, void *ptr) { + NSResurrectedObject *zombie = (NSResurrectedObject*) ptr; + if (zombie->_isa != _NSResurrectedObject) { + Class old_isa = zombie->_isa; + zombie->_isa = _NSResurrectedObject; + zombie->_old_isa = old_isa; + zombie->_resurrections = 1; + } else { + zombie->_resurrections++; + } +} + +/*********************************************************************** +* Allocation recording +* For development purposes. +**********************************************************************/ + +static NXMapTable *the_histogram = NULL; +static pthread_mutex_t the_histogram_lock = PTHREAD_MUTEX_INITIALIZER; + + +static void record_allocation(Class cls) +{ + pthread_mutex_lock(&the_histogram_lock); + unsigned long count = (unsigned long) NXMapGet(the_histogram, cls); + NXMapInsert(the_histogram, cls, (const void*) (count + 1)); + pthread_mutex_unlock(&the_histogram_lock); +} + + +void objc_allocation_histogram(void) +{ + Class cls; + unsigned long count; + NXMapState state = NXInitMapState(the_histogram); + printf("struct histogram {\n\tconst char* name;\n\tunsigned long instance_size;\n\tunsigned long count;\n} the_histogram[] = {\n"); + while (NXNextMapState(the_histogram, &state, (const void**) &cls, (const void**) &count)) { + printf("\t{ \"%s\", %lu, %lu },\n", cls->name, (unsigned long) cls->instance_size, count); + } + printf("};\n"); +} + +static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount); + +static char* objc_name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset) +{ + return name_for_address(zone, base, offset, false); +} + +/*********************************************************************** +* Initialization +**********************************************************************/ + +// Always called by _objcInit, even if GC is off. +__private_extern__ void gc_init(BOOL on) +{ + UseGC = on; + + if (PrintGC) { + _objc_inform("GC: is %s", on ? "ON" : "OFF"); + } + + if (UseGC) { + // Set up the GC zone + gc_zone = gc_zone_init(); + + // no NSObject until Foundation calls objc_collect_init() + _NSObject_finalize = &_objc_msgForward; + + // Set up allocation recording + RecordAllocations = (getenv("OBJC_RECORD_ALLOCATIONS") != NULL); + if (RecordAllocations) the_histogram = NXCreateMapTable(NXPtrValueMapPrototype, 1024); + + if (getenv("OBJC_FINALIZATION_SAFE_CLASSES")) { + FILE *f = fopen(getenv("OBJC_FINALIZATION_SAFE_CLASSES"), "r"); + if (f != NULL) { + char *line; + size_t length; + gc_finalization_safe_classes = NXCreateMapTable(NXStrValueMapPrototype, 17); + while ((line = fgetln(f, &length)) != NULL) { + char *last = &line[length - 1]; + if (*last == '\n') *last = '\0'; // strip off trailing newline. + char *className = strdup(line); + NXMapInsert(gc_finalization_safe_classes, className, className); + } + fclose(f); + } + } + } else { + auto_zone_start_monitor(false); + auto_zone_set_class_list(objc_getClassList); + } +} + + +static auto_zone_t *gc_zone_init(void) +{ + auto_zone_t *result; + + // result = auto_zone_create("objc auto collected zone"); + result = auto_zone(); // honor existing entry point for now (fixme) + + auto_collection_control_t *control = auto_collection_parameters(result); + + // set up the magic control parameters + control->invalidate = sendFinalize; + control->batch_invalidate = batchFinalize; + control->resurrect = resurrectZombie; + control->name_for_address = objc_name_for_address; + + // don't collect "on-demand" until... all Cocoa allocations are outside locks + control->should_collect = objc_never_collect; + control->ask_should_collect_frequency = UINT_MAX; + control->trace_stack_conservatively = YES; + + // No interruption callback yet. Foundation will install one later. + control->collection_should_interrupt = NULL; + + // debug: if set, only do full generational; sometimes useful for bringup + control->disable_generational = getenv("AUTO_DISABLE_GENERATIONAL") != NULL; + + // debug: always compare generational GC result to full GC garbage list + // this *can* catch missing write-barriers and other bugs + control->paranoid_generational = (getenv("AUTO_PARANOID_GENERATIONAL") != NULL); + + // if set take a slightly slower path for object allocation + control->malloc_stack_logging = (getenv("MallocStackLogging") != NULL || getenv("MallocStackLoggingNoCompact") != NULL); + + // logging level: none by default + control->log = 0; + if (getenv("AUTO_LOG_NOISY")) control->log |= AUTO_LOG_COLLECTIONS; + if (getenv("AUTO_LOG_ALL")) control->log |= AUTO_LOG_ALL; + if (getenv("AUTO_LOG_COLLECTIONS")) control->log |= AUTO_LOG_COLLECTIONS; + if (getenv("AUTO_LOG_COLLECT_DECISION")) control->log |= AUTO_LOG_COLLECT_DECISION; + if (getenv("AUTO_LOG_GC_IMPL")) control->log |= AUTO_LOG_GC_IMPL; + if (getenv("AUTO_LOG_REGIONS")) control->log |= AUTO_LOG_REGIONS; + if (getenv("AUTO_LOG_UNUSUAL")) control->log |= AUTO_LOG_UNUSUAL; + if (getenv("AUTO_LOG_WEAK")) control->log |= AUTO_LOG_WEAK; + + if (getenv("OBJC_ISA_STOMP")) { + // != 0, stomp isa + // 0x1, just stomp, no messages + // 0x2, log messaging after reclaim (break on objc_stale()) + // 0x4, log messages sent during finalize + // 0x8, log all finalizations + IsaStompBits = strtol(getenv("OBJC_ISA_STOMP"), NULL, 0); + } + + if (getenv("OBJC_COLLECTION_THRESHOLD")) { + gc_collection_threshold = (size_t) strtoul(getenv("OBJC_COLLECTION_THRESHOLD"), NULL, 0); + } + + if (getenv("OBJC_COLLECTION_RATIO")) { + gc_collection_ratio = (size_t) strtoul(getenv("OBJC_COLLECTION_RATIO"), NULL, 0); + } + + if (getenv("OBJC_EXPLICIT_ROOTS")) gc_roots_retained = NO; + + return result; +} + + +// Called by Foundation to install auto's interruption callback. +malloc_zone_t *objc_collect_init(int (*callback)(void)) +{ + // Find NSObject's finalize method now that Foundation is loaded. + // fixme only look for the base implementation, not a category's + _NSDeallocatedObject = objc_getClass("NSDeallocatedObject"); + _NSResurrectedObject = objc_getClass("NSResurrectedObject"); + _NSObject_finalize = + class_lookupMethod(objc_getClass("NSObject"), @selector(finalize)); + if (_NSObject_finalize == &_objc_msgForward) { + _objc_fatal("GC: -[NSObject finalize] unimplemented!"); + } + + // Don't install the callback if OBJC_DISABLE_COLLECTION_INTERRUPT is set + if (gc_zone && getenv("OBJC_DISABLE_COLLECTION_INTERRUPT") == NULL) { + auto_collection_control_t *ctrl = auto_collection_parameters(gc_zone); + ctrl->collection_should_interrupt = callback; + } + + return (malloc_zone_t *)gc_zone; +} + + + + + + +/*********************************************************************** +* Debugging +**********************************************************************/ + +/* This is non-deadlocking with respect to malloc's locks EXCEPT: + * %ls, %a, %A formats + * more than 8 args + */ +static void objc_debug_printf(const char *format, ...) +{ + va_list ap; + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); +} + +static malloc_zone_t *objc_debug_zone(void) +{ + static malloc_zone_t *z = NULL; + if (!z) { + z = malloc_create_zone(4096, 0); + malloc_set_zone_name(z, "objc-auto debug"); + } + return z; +} + +static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head) { + if (!value) { + head[0] = '0'; + } else { + if (value >= base) head = _malloc_append_unsigned(value / base, base, head); + value = value % base; + head[0] = (value < 10) ? '0' + value : 'a' + value - 10; + } + return head+1; +} + +static void strcati(char *str, unsigned value) +{ + str = _malloc_append_unsigned(value, 10, str + strlen(str)); + str[0] = '\0'; +} + +static void strcatx(char *str, unsigned value) +{ + str = _malloc_append_unsigned(value, 16, str + strlen(str)); + str[0] = '\0'; +} + + +static Ivar ivar_for_offset(struct objc_class *cls, vm_address_t offset) +{ + int i; + int ivar_offset; + Ivar super_ivar; + struct objc_ivar_list *ivars; + + if (!cls) return NULL; + + // scan base classes FIRST + super_ivar = ivar_for_offset(cls->super_class, offset); + // result is best-effort; our ivars may be closer + + ivars = cls->ivars; + // If we have no ivars, return super's ivar + if (!ivars || ivars->ivar_count == 0) return super_ivar; + + // Try our first ivar. If it's too big, use super's best ivar. + ivar_offset = ivars->ivar_list[0].ivar_offset; + if (ivar_offset > offset) return super_ivar; + else if (ivar_offset == offset) return &ivars->ivar_list[0]; + + // Try our other ivars. If any is too big, use the previous. + for (i = 1; i < ivars->ivar_count; i++) { + int ivar_offset = ivars->ivar_list[i].ivar_offset; + if (ivar_offset == offset) { + return &ivars->ivar_list[i]; + } else if (ivar_offset > offset) { + return &ivars->ivar_list[i-1]; + } + } + + // Found nothing. Return our last ivar. + return &ivars->ivar_list[ivars->ivar_count - 1]; +} + +static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_t offset) +{ + Ivar ivar = NULL; + + if (offset == 0) return; // don't bother with isa + if (offset >= cls->instance_size) { + strcat(buf, ".+"); + strcati(buf, offset); + return; + } + + ivar = ivar_for_offset(cls, offset); + if (!ivar) { + strcat(buf, "."); + return; + } + + // fixme doesn't handle structs etc. + + strcat(buf, "."); + if (ivar->ivar_name) strcat(buf, ivar->ivar_name); + else strcat(buf, ""); + + offset -= ivar->ivar_offset; + if (offset > 0) { + strcat(buf, "+"); + strcati(buf, offset); + } +} + + +static const char *cf_class_for_object(void *cfobj) +{ + // ick - we don't link against CF anymore + + struct { + uint32_t version; + const char *className; + // don't care about the rest + } *cfcls; + uint32_t cfid; + NSSymbol sym; + uint32_t (*CFGetTypeID)(void *); + void * (*_CFRuntimeGetClassWithTypeID)(uint32_t); + + sym = NSLookupAndBindSymbolWithHint("_CFGetTypeID", "CoreFoundation"); + if (!sym) return "anonymous_NSCFType"; + CFGetTypeID = NSAddressOfSymbol(sym); + if (!CFGetTypeID) return "NSCFType"; + + sym = NSLookupAndBindSymbolWithHint("__CFRuntimeGetClassWithTypeID", "CoreFoundation"); + if (!sym) return "anonymous_NSCFType"; + _CFRuntimeGetClassWithTypeID = NSAddressOfSymbol(sym); + if (!_CFRuntimeGetClassWithTypeID) return "anonymous_NSCFType"; + + cfid = (*CFGetTypeID)(cfobj); + cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid); + return cfcls->className; +} + + +static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount) +{ +#define APPEND_SIZE(s) \ + strcat(buf, "["); \ + strcati(buf, s); \ + strcat(buf, "]"); + + char buf[500]; + char *result; + + buf[0] = '\0'; + + unsigned int size = + auto_zone_size_no_lock(zone, (void *)base); + auto_memory_type_t type = size ? + auto_zone_get_layout_type_no_lock(zone, (void *)base) : AUTO_TYPE_UNKNOWN; + unsigned int refcount = size ? + auto_zone_retain_count_no_lock(zone, (void *)base) : 0; + + switch (type) { + case AUTO_OBJECT_SCANNED: + case AUTO_OBJECT_UNSCANNED: { + Class cls = *(struct objc_class **)base; + if (0 == strcmp(cls->name, "NSCFType")) { + strcat(buf, cf_class_for_object((void *)base)); + } else { + strcat(buf, cls->name); + } + if (offset) { + append_ivar_at_offset(buf, cls, offset); + } + APPEND_SIZE(size); + break; + } + case AUTO_MEMORY_SCANNED: + strcat(buf, "{conservative-block}"); + APPEND_SIZE(size); + break; + case AUTO_MEMORY_UNSCANNED: + strcat(buf, "{no-pointers-block}"); + APPEND_SIZE(size); + break; + default: + strcat(buf, "{unallocated-or-stack}"); + } + + if (withRetainCount && refcount > 0) { + strcat(buf, " [[refcount="); + strcati(buf, refcount); + strcat(buf, "]]"); + } + + result = malloc_zone_malloc(objc_debug_zone(), 1 + strlen(buf)); + strcpy(result, buf); + return result; + +#undef APPEND_SIZE +} + + +struct objc_class_recorder_context { + malloc_zone_t *zone; + void *cls; + char *clsname; + unsigned int count; +}; + +static void objc_class_recorder(task_t task, void *context, unsigned type_mask, + vm_range_t *ranges, unsigned range_count) +{ + struct objc_class_recorder_context *ctx = + (struct objc_class_recorder_context *)context; + + vm_range_t *r; + vm_range_t *end; + for (r = ranges, end = ranges + range_count; r < end; r++) { + auto_memory_type_t type = + auto_zone_get_layout_type_no_lock(ctx->zone, (void *)r->address); + if (type == AUTO_OBJECT_SCANNED || type == AUTO_OBJECT_UNSCANNED) { + // Check if this is an instance of class ctx->cls or some subclass + Class cls; + Class isa = *(Class *)r->address; + for (cls = isa; cls; cls = cls->super_class) { + if (cls == ctx->cls) { + unsigned int rc; + objc_debug_printf("[%p] : %s", r->address, isa->name); + if ((rc = auto_zone_retain_count_no_lock(ctx->zone, (void *)r->address))) { + objc_debug_printf(" [[refcount %u]]", rc); + } + objc_debug_printf("\n"); + ctx->count++; + break; + } + } + } + } +} + +void objc_enumerate_class(char *clsname) +{ + struct objc_class_recorder_context ctx; + ctx.zone = auto_zone(); + ctx.clsname = clsname; + ctx.cls = objc_getClass(clsname); // GrP fixme may deadlock if classHash lock is already owned + ctx.count = 0; + if (!ctx.cls) { + objc_debug_printf("No class '%s'\n", clsname); + return; + } + objc_debug_printf("\n\nINSTANCES OF CLASS '%s':\n\n", clsname); + (*ctx.zone->introspect->enumerator)(mach_task_self(), &ctx, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t)ctx.zone, NULL, objc_class_recorder); + objc_debug_printf("\n%d instances\n\n", ctx.count); +} + + +static void objc_reference_printer(auto_zone_t *zone, void *ctx, + auto_reference_t ref) +{ + char *referrer_name = name_for_address(zone, ref.referrer_base, ref.referrer_offset, true); + char *referent_name = name_for_address(zone, ref.referent, 0, true); + + objc_debug_printf("[%p%+d -> %p] : %s -> %s\n", + ref.referrer_base, ref.referrer_offset, ref.referent, + referrer_name, referent_name); + + malloc_zone_free(objc_debug_zone(), referrer_name); + malloc_zone_free(objc_debug_zone(), referent_name); +} + + +void objc_print_references(void *referent, void *stack_bottom, int lock) +{ + if (lock) { + auto_enumerate_references(auto_zone(), referent, + objc_reference_printer, stack_bottom, NULL); + } else { + auto_enumerate_references_no_lock(auto_zone(), referent, + objc_reference_printer, stack_bottom, NULL); + } +} + + + +typedef struct { + vm_address_t address; // of this object + int refcount; // of this object - nonzero means ROOT + int depth; // number of links away from referent, or -1 + auto_reference_t *referrers; // of this object + int referrers_used; + int referrers_allocated; + auto_reference_t back; // reference from this object back toward the target + uint32_t ID; // Graphic ID for grafflization +} blob; + + +typedef struct { + blob **list; + unsigned int used; + unsigned int allocated; +} blob_queue; + +blob_queue blobs = {NULL, 0, 0}; +blob_queue untraced_blobs = {NULL, 0, 0}; +blob_queue root_blobs = {NULL, 0, 0}; + + + +static void spin(void) { + static char* spinner[] = {"\010\010| ", "\010\010/ ", "\010\010- ", "\010\010\\ "}; + static int spindex = 0; + + objc_debug_printf(spinner[spindex++]); + if (spindex == 4) spindex = 0; +} + + +static void enqueue_blob(blob_queue *q, blob *b) +{ + if (q->used == q->allocated) { + q->allocated = q->allocated * 2 + 1; + q->list = malloc_zone_realloc(objc_debug_zone(), q->list, q->allocated * sizeof(blob *)); + } + q->list[q->used++] = b; +} + + +static blob *dequeue_blob(blob_queue *q) +{ + blob *result = q->list[0]; + q->used--; + memmove(&q->list[0], &q->list[1], q->used * sizeof(blob *)); + return result; +} + + +static blob *blob_for_address(vm_address_t addr) +{ + blob *b, **bp, **end; + + if (addr == 0) return NULL; + + for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) { + b = *bp; + if (b->address == addr) return b; + } + + b = malloc_zone_calloc(objc_debug_zone(), sizeof(blob), 1); + b->address = addr; + b->depth = -1; + b->refcount = auto_zone_size_no_lock(auto_zone(), (void *)addr) ? auto_zone_retain_count_no_lock(auto_zone(), (void *)addr) : 1; + enqueue_blob(&blobs, b); + return b; +} + +static int blob_exists(vm_address_t addr) +{ + blob *b, **bp, **end; + for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) { + b = *bp; + if (b->address == addr) return 1; + } + return 0; +} + + +// Destroy the blobs table and all blob data in it +static void free_blobs(void) +{ + blob *b, **bp, **end; + for (bp = blobs.list, end = blobs.list+blobs.used; bp < end; bp++) { + b = *bp; + malloc_zone_free(objc_debug_zone(), b); + } + if (blobs.list) malloc_zone_free(objc_debug_zone(), blobs.list); +} + +static void print_chain(auto_zone_t *zone, blob *root) +{ + blob *b; + for (b = root; b != NULL; b = blob_for_address(b->back.referent)) { + char *name; + if (b->back.referent) { + name = name_for_address(zone, b->address, b->back.referrer_offset, true); + objc_debug_printf("[%p%+d] : %s ->\n", b->address, b->back.referrer_offset, name); + } else { + name = name_for_address(zone, b->address, 0, true); + objc_debug_printf("[%p] : %s\n", b->address, name); + } + malloc_zone_free(objc_debug_zone(), name); + } +} + + +static void objc_blob_recorder(auto_zone_t *zone, void *ctx, + auto_reference_t ref) +{ + blob *b = (blob *)ctx; + + spin(); + + if (b->referrers_used == b->referrers_allocated) { + b->referrers_allocated = b->referrers_allocated * 2 + 1; + b->referrers = malloc_zone_realloc(objc_debug_zone(), b->referrers, + b->referrers_allocated * + sizeof(auto_reference_t)); + } + + b->referrers[b->referrers_used++] = ref; + if (!blob_exists(ref.referrer_base)) { + enqueue_blob(&untraced_blobs, blob_for_address(ref.referrer_base)); + } +} + + +#define INSTANCE_ROOTS 1 +#define HEAP_ROOTS 2 +#define ALL_REFS 3 +static void objc_print_recursive_refs(vm_address_t target, int which, void *stack_bottom, int lock); +static void grafflize(blob_queue *blobs, int everything); + +void objc_print_instance_roots(vm_address_t target, void *stack_bottom, int lock) +{ + objc_print_recursive_refs(target, INSTANCE_ROOTS, stack_bottom, lock); +} + +void objc_print_heap_roots(vm_address_t target, void *stack_bottom, int lock) +{ + objc_print_recursive_refs(target, HEAP_ROOTS, stack_bottom, lock); +} + +void objc_print_all_refs(vm_address_t target, void *stack_bottom, int lock) +{ + objc_print_recursive_refs(target, ALL_REFS, stack_bottom, lock); +} + +static void sort_blobs_by_refcount(blob_queue *blobs) +{ + int i, j; + + // simple bubble sort + for (i = 0; i < blobs->used; i++) { + for (j = i+1; j < blobs->used; j++) { + if (blobs->list[i]->refcount < blobs->list[j]->refcount) { + blob *temp = blobs->list[i]; + blobs->list[i] = blobs->list[j]; + blobs->list[j] = temp; + } + } + } +} + + +static void sort_blobs_by_depth(blob_queue *blobs) +{ + int i, j; + + // simple bubble sort + for (i = 0; i < blobs->used; i++) { + for (j = i+1; j < blobs->used; j++) { + if (blobs->list[i]->depth > blobs->list[j]->depth) { + blob *temp = blobs->list[i]; + blobs->list[i] = blobs->list[j]; + blobs->list[j] = temp; + } + } + } +} + + +static void objc_print_recursive_refs(vm_address_t target, int which, void *stack_bottom, int lock) +{ + objc_debug_printf("\n "); // make spinner draw in a pretty place + + // Construct pointed-to graph (of things eventually pointing to target) + + enqueue_blob(&untraced_blobs, blob_for_address(target)); + + while (untraced_blobs.used > 0) { + blob *b = dequeue_blob(&untraced_blobs); + spin(); + if (lock) { + auto_enumerate_references(auto_zone(), (void *)b->address, + objc_blob_recorder, stack_bottom, b); + } else { + auto_enumerate_references_no_lock(auto_zone(), (void *)b->address, + objc_blob_recorder, stack_bottom, b); + } + } + + // Walk pointed-to graph to find shortest paths from roots to target. + // This is BREADTH-FIRST order. + + blob_for_address(target)->depth = 0; + enqueue_blob(&untraced_blobs, blob_for_address(target)); + + while (untraced_blobs.used > 0) { + blob *b = dequeue_blob(&untraced_blobs); + blob *other; + auto_reference_t *r, *end; + int stop = NO; + + spin(); + + if (which == ALL_REFS) { + // Never stop at roots. + stop = NO; + } else if (which == HEAP_ROOTS) { + // Stop at any root (a block with positive retain count) + stop = (b->refcount > 0); + } else if (which == INSTANCE_ROOTS) { + // Only stop at roots that are instances + auto_memory_type_t type = auto_zone_get_layout_type_no_lock(auto_zone(), (void *)b->address); + stop = (b->refcount > 0 && (type == AUTO_OBJECT_SCANNED || type == AUTO_OBJECT_UNSCANNED)); // GREG XXX ??? + } + + // If this object is a root, save it and don't walk its referrers. + if (stop) { + enqueue_blob(&root_blobs, b); + continue; + } + + // For any "other object" that points to "this object" + // and does not yet have a depth: + // (1) other object is one level deeper than this object + // (2) (one of) the shortest path(s) from other object to the + // target goes through this object + + for (r = b->referrers, end = b->referrers + b->referrers_used; + r < end; + r++) + { + other = blob_for_address(r->referrer_base); + if (other->depth == -1) { + other->depth = b->depth + 1; + other->back = *r; + enqueue_blob(&untraced_blobs, other); + } + } + } + + { + char *name = name_for_address(auto_zone(), target, 0, true); + objc_debug_printf("\n\n%d %s %p (%s)\n\n", + (which==ALL_REFS) ? blobs.used : root_blobs.used, + (which==ALL_REFS) ? "INDIRECT REFS TO" : "ROOTS OF", + target, name); + malloc_zone_free(objc_debug_zone(), name); + } + + if (which == ALL_REFS) { + // Print all reference objects, biggest refcount first + int i; + sort_blobs_by_refcount(&blobs); + for (i = 0; i < blobs.used; i++) { + char *name = name_for_address(auto_zone(), blobs.list[i]->address, 0, true); + objc_debug_printf("[%p] : %s\n", blobs.list[i]->address, name); + malloc_zone_free(objc_debug_zone(), name); + } + } + else { + // Walk back chain from every root to the target, printing every step. + + while (root_blobs.used > 0) { + blob *root = dequeue_blob(&root_blobs); + print_chain(auto_zone(), root); + objc_debug_printf("\n"); + } + } + + grafflize(&blobs, which == ALL_REFS); + + objc_debug_printf("\ndone\n\n"); + + // Clean up + + free_blobs(); + if (untraced_blobs.list) malloc_zone_free(objc_debug_zone(), untraced_blobs.list); + if (root_blobs.list) malloc_zone_free(objc_debug_zone(), root_blobs.list); + + memset(&blobs, 0, sizeof(blobs)); + memset(&root_blobs, 0, sizeof(root_blobs)); + memset(&untraced_blobs, 0, sizeof(untraced_blobs)); +} + + + +struct objc_block_recorder_context { + malloc_zone_t *zone; + int fd; + unsigned int count; +}; + + +static void objc_block_recorder(task_t task, void *context, unsigned type_mask, + vm_range_t *ranges, unsigned range_count) +{ + char buf[20]; + struct objc_block_recorder_context *ctx = + (struct objc_block_recorder_context *)context; + + vm_range_t *r; + vm_range_t *end; + for (r = ranges, end = ranges + range_count; r < end; r++) { + char *name = name_for_address(ctx->zone, r->address, 0, true); + buf[0] = '\0'; + strcatx(buf, r->address); + + write(ctx->fd, "0x", 2); + write(ctx->fd, buf, strlen(buf)); + write(ctx->fd, " ", 1); + write(ctx->fd, name, strlen(name)); + write(ctx->fd, "\n", 1); + + malloc_zone_free(objc_debug_zone(), name); + ctx->count++; + } +} + + +void objc_dump_block_list(const char* path) +{ + struct objc_block_recorder_context ctx; + char filename[] = "/tmp/blocks-XXXXX.txt"; + + ctx.zone = auto_zone(); + ctx.count = 0; + ctx.fd = (path ? open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666) : mkstemps(filename, strlen(strrchr(filename, '.')))); + + objc_debug_printf("\n\nALL AUTO-ALLOCATED BLOCKS\n\n"); + (*ctx.zone->introspect->enumerator)(mach_task_self(), &ctx, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t)ctx.zone, NULL, objc_block_recorder); + objc_debug_printf("%d blocks written to file\n", ctx.count); + objc_debug_printf("open %s\n", (path ? path : filename)); + + close(ctx.fd); +} + + + + +static void grafflize_id(int gfile, int ID) +{ + char buf[20] = ""; + char *c; + + strcati(buf, ID); + c = "ID"; + write(gfile, c, strlen(c)); + write(gfile, buf, strlen(buf)); + c = ""; + write(gfile, c, strlen(c)); +} + + +// head = REFERENT end = arrow +// tail = REFERRER end = no arrow +static void grafflize_reference(int gfile, auto_reference_t reference, + int ID, int important) +{ + blob *referrer = blob_for_address(reference.referrer_base); + blob *referent = blob_for_address(reference.referent); + char *c; + + // line + c = "ClassLineGraphic"; + write(gfile, c, strlen(c)); + + // id + grafflize_id(gfile, ID); + + // head = REFERENT + c = "Head"; + write(gfile, c, strlen(c)); + grafflize_id(gfile, referent->ID); + c = ""; + write(gfile, c, strlen(c)); + + // tail = REFERRER + c = "Tail"; + write(gfile, c, strlen(c)); + grafflize_id(gfile, referrer->ID); + c = ""; + write(gfile, c, strlen(c)); + + // style - head arrow, thick line if important + c = "Stylestroke" + "HeadArrowFilledArrow" + "LineType1"; + write(gfile, c, strlen(c)); + if (important) { + c = "Width3"; + write(gfile, c, strlen(c)); + } + c = ""; + write(gfile, c, strlen(c)); + + // end line + c = ""; + write(gfile, c, strlen(c)); +} + + +static void grafflize_blob(int gfile, blob *b) +{ + // fixme include ivar names too + char *name = name_for_address(auto_zone(), b->address, 0, false); + int width = 30 + strlen(name)*6; + int height = 40; + char buf[40] = ""; + char *c; + + // rectangle + c = "" + "ClassShapedGraphic" + "ShapeRectangle"; + write(gfile, c, strlen(c)); + + // id + grafflize_id(gfile, b->ID); + + // bounds + // order vertically by depth + c = "Bounds{{0,"; + write(gfile, c, strlen(c)); + buf[0] = '\0'; + strcati(buf, b->depth*60); + write(gfile, buf, strlen(buf)); + c = "},{"; + write(gfile, c, strlen(c)); + buf[0] = '\0'; + strcati(buf, width); + strcat(buf, ","); + strcati(buf, height); + write(gfile, buf, strlen(buf)); + c = "}}"; + write(gfile, c, strlen(c)); + + // label + c = "TextText" + "{\\rtf1\\mac\\ansicpg10000\\cocoartf102\n" + "{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\fonttbl\\f1\\fswiss\\fcharset77 Helvetica-Bold;}\n" + "{\\colortbl;\\red255\\green255\\blue255;}\n" + "\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n" + "\\f0\\fs20 \\cf0 "; + write(gfile, c, strlen(c)); + write(gfile, name, strlen(name)); + strcpy(buf, "\\\n0x"); + strcatx(buf, b->address); + write(gfile, buf, strlen(buf)); + c = "}"; + write(gfile, c, strlen(c)); + + // styles + c = "Style"; + write(gfile, c, strlen(c)); + + // no shadow + c = "shadowDrawsNO"; + write(gfile, c, strlen(c)); + + // fat border if refcount > 0 + if (b->refcount > 0) { + c = "strokeWidth4"; + write(gfile, c, strlen(c)); + } + + // end styles + c = ""; + write(gfile, c, strlen(c)); + + // done + c = "\n"; + write(gfile, c, strlen(c)); + + malloc_zone_free(objc_debug_zone(), name); +} + + +#define gheader "GraphDocumentVersion3ReadOnlyNOGraphicsList\n" + +#define gfooter "\n" + + +static void grafflize(blob_queue *blobs, int everything) +{ + // Don't require linking to Foundation! + int i; + int gfile; + int nextid = 1; + char filename[] = "/tmp/gc-XXXXX.graffle"; + + // Open file + gfile = mkstemps(filename, strlen(strrchr(filename, '.'))); + if (gfile < 0) { + objc_debug_printf("couldn't create a graffle file in /tmp/ (errno %d)\n", errno); + return; + } + + // Write header + write(gfile, gheader, strlen(gheader)); + + // Write a rectangle for each blob + sort_blobs_by_depth(blobs); + for (i = 0; i < blobs->used; i++) { + blob *b = blobs->list[i]; + b->ID = nextid++; + if (everything || b->depth >= 0) { + grafflize_blob(gfile, b); + } + } + + for (i = 0; i < blobs->used; i++) { + int j; + blob *b = blobs->list[i]; + + if (everything) { + // Write an arrow for each reference + // Use big arrows for backreferences + for (j = 0; j < b->referrers_used; j++) { + int is_back_ref = (b->referrers[i].referent == b->back.referent && b->referrers[i].referrer_offset == b->back.referrer_offset && b->referrers[i].referrer_base == b->back.referrer_base); + + grafflize_reference(gfile, b->referrers[j], nextid++, + is_back_ref); + } + } + else { + // Write an arrow for each backreference + if (b->depth > 0) { + grafflize_reference(gfile, b->back, nextid++, false); + } + } + } + + // Write footer and close + write(gfile, gfooter, strlen(gfooter)); + close(gfile); + objc_debug_printf("wrote object graph (%d objects)\nopen %s\n", + blobs->used, filename); +} + +#endif + + + +// Stubs for non-open-source libauto functions + +static void auto_collect(auto_zone_t *zone, auto_collection_mode_t mode, void *collection_context) +{ +} + +static auto_collection_control_t *auto_collection_parameters(auto_zone_t *zone) +{ + return NULL; +} + +static const auto_statistics_t *auto_collection_statistics(auto_zone_t *zone) +{ + return NULL; +} + +static void auto_enumerate_references(auto_zone_t *zone, void *referent, + auto_reference_recorder_t callback, + void *stack_bottom, void *ctx) +{ +} + +static void auto_enumerate_references_no_lock(auto_zone_t *zone, void *referent, auto_reference_recorder_t callback, void *stack_bottom, void *ctx) +{ +} + +static auto_zone_t *auto_zone(void) +{ + return NULL; +} + +static void auto_zone_add_root(auto_zone_t *zone, void *root, size_t size) +{ +} + +static void* auto_zone_allocate_object(auto_zone_t *zone, size_t size, auto_memory_type_t type, boolean_t initial_refcount_to_one, boolean_t clear) +{ + return NULL; +} + +static const void *auto_zone_base_pointer(auto_zone_t *zone, const void *ptr) +{ + return NULL; +} + +static auto_memory_type_t auto_zone_get_layout_type(auto_zone_t *zone, void *ptr) +{ + return 0; +} + +static auto_memory_type_t auto_zone_get_layout_type_no_lock(auto_zone_t *zone, void *ptr) +{ + return 0; +} + +static boolean_t auto_zone_is_finalized(auto_zone_t *zone, const void *ptr) +{ + return NO; +} + +static boolean_t auto_zone_is_valid_pointer(auto_zone_t *zone, const void *ptr) +{ + return NO; +} + +static unsigned int auto_zone_release(auto_zone_t *zone, void *ptr) +{ + return 0; +} + +static void auto_zone_retain(auto_zone_t *zone, void *ptr) +{ +} + +static unsigned int auto_zone_retain_count_no_lock(auto_zone_t *zone, const void *ptr) +{ + return 0; +} + +static void auto_zone_set_class_list(int (*get_class_list)(void **buffer, int count)) +{ +} + +static size_t auto_zone_size_no_lock(auto_zone_t *zone, const void *ptr) +{ + return 0; +} + +static void auto_zone_start_monitor(boolean_t force) +{ +} + +static void auto_zone_write_barrier(auto_zone_t *zone, void *recipient, const unsigned int offset_in_bytes, const void *new_value) +{ + *(uintptr_t *)(offset_in_bytes + (uint8_t *)recipient) = (uintptr_t)new_value; +} + +static void *auto_zone_write_barrier_memmove(auto_zone_t *zone, void *dst, const void *src, size_t size) +{ + return memmove(dst, src, size); +} + diff --git a/runtime/objc-class.h b/runtime/objc-class.h index b17da95..83e7b64 100644 --- a/runtime/objc-class.h +++ b/runtime/objc-class.h @@ -65,47 +65,12 @@ struct objc_class { #define CLS_JAVA_CLASS 0x400L // thread-safe +initialize #define CLS_INITIALIZING 0x800 - -/* - * (true as of 2001-9-24) - * Thread-safety note: changes to these flags are not atomic, so - * the only thing preventing lost updates is the timing of the changes. - * - * As long as the following are isolated from each other for any one class, - * nearly all flag updates will be safe: - * - compile-time - * - loading in one thread (not including +load) without messaging - * - initializing in one thread with messaging from that thread only - * - multi-threaded messaging with method caching - * - * The current code doesn't protect loading yet. - * - * Times when the flags may change: - * CLS_CLASS: compile-time, hand-built classes - * CLS_META: compile time, hand-built classes - * CLS_INITIALIZED: initialize - * CLS_POSING: unsafe, but posing has other thread-safety problems - * CLS_MAPPED: compile-time - * CLS_FLUSH_CACHE: messaging - * CLS_GROW_CACHE: messaging - * FLUSH_CACHE and GROW_CACHE are protected from each other by the - * cacheUpdateLock. - * CLS_NEED_BIND: load, initialize - * CLS_METHOD_ARRAY: load - * CLS_JAVA_HYBRID: hand-built classes - * CLS_JAVA_CLASS: hand-built classes, initialize - * CLS_INITIALIZING: initialize - * - * The only unsafe updates are: - * - posing (unsafe anyway) - * - hand-built classes (including JavaBridge classes) - * There is a short time between objc_addClass inserts the new class - * into the class_hash and the builder setting the right flags. - * A thread looking at the class_hash could send a message to the class - * and trigger initialization, and the changes to the initialization - * flags and the hand-adjusted flags could collide. - * Solution: don't do that. - */ +// bundle unloading +#define CLS_FROM_BUNDLE 0x1000L +// C++ ivar support +#define CLS_HAS_CXX_STRUCTORS 0x2000L +// Lazy method list arrays +#define CLS_NO_METHOD_ARRAY 0x4000L /* @@ -169,7 +134,11 @@ struct objc_method_list { /* Protocol support */ +#ifdef __OBJC__ @class Protocol; +#else +typedef struct objc_object Protocol; +#endif struct objc_protocol_list { struct objc_protocol_list *next; diff --git a/runtime/objc-class.m b/runtime/objc-class.m index 0b4dc99..ed66e78 100644 --- a/runtime/objc-class.m +++ b/runtime/objc-class.m @@ -54,6 +54,8 @@ * cacheUpdateLock to prevent interference from concurrent modifications. * The function that frees cache garbage must acquire the cacheUpdateLock * and use collecting_in_critical() to flush out cache readers. + * The cacheUpdateLock is also used to protect the custom allocator used + * for large method cache blocks. * * Cache readers (PC-checked by collecting_in_critical()) * objc_msgSend* @@ -87,6 +89,130 @@ * unsafely or place it in multiple caches. ***********************************************************************/ +/*********************************************************************** + * Lazy method list arrays and method list locking (2004-10-19) + * + * cls->methodLists may be in one of three forms: + * 1. NULL: The class has no methods. + * 2. non-NULL, with CLS_NO_METHOD_ARRAY set: cls->methodLists points + * to a single method list, which is the class's only method list. + * 3. non-NULL, with CLS_NO_METHOD_ARRAY clear: cls->methodLists points to + * an array of method list pointers. The end of the array's block + * is set to -1. If the actual number of method lists is smaller + * than that, the rest of the array is NULL. + * + * Attaching categories and adding and removing classes may change + * the form of the class list. In addition, individual method lists + * may be reallocated when fixed up. + * + * Classes are initially read as #1 or #2. If a category is attached + * or other methods added, the class is changed to #3. Once in form #3, + * the class is never downgraded to #1 or #2, even if methods are removed. + * Classes added with objc_addClass are initially either #1 or #3. + * + * Accessing and manipulating a class's method lists are synchronized, + * to prevent races when one thread restructures the list. However, + * if the class is not yet in use (i.e. not in class_hash), then the + * thread loading the class may access its method lists without locking. + * + * The following functions acquire methodListLock: + * class_getInstanceMethod + * class_getClassMethod + * class_nextMethodList + * class_addMethods + * class_removeMethods + * class_respondsToMethod + * _class_lookupMethodAndLoadCache + * lookupMethodInClassAndLoadCache + * _objc_add_category_flush_caches + * + * The following functions don't acquire methodListLock because they + * only access method lists during class load and unload: + * _objc_register_category + * _resolve_categories_for_class (calls _objc_add_category) + * add_class_to_loadable_list + * _objc_addClass + * _objc_remove_classes_in_image + * + * The following functions use method lists without holding methodListLock. + * The caller must either hold methodListLock, or be loading the class. + * _getMethod (called by class_getInstanceMethod, class_getClassMethod, + * and class_respondsToMethod) + * _findMethodInClass (called by _class_lookupMethodAndLoadCache, + * lookupMethodInClassAndLoadCache, _getMethod) + * _findMethodInList (called by _findMethodInClass) + * nextMethodList (called by _findMethodInClass and class_nextMethodList + * fixupSelectorsInMethodList (called by nextMethodList) + * _objc_add_category (called by _objc_add_category_flush_caches, + * resolve_categories_for_class and _objc_register_category) + * _objc_insertMethods (called by class_addMethods and _objc_add_category) + * _objc_removeMethods (called by class_removeMethods) + * _objcTweakMethodListPointerForClass (called by _objc_insertMethods) + * get_base_method_list (called by add_class_to_loadable_list) + * lookupNamedMethodInMethodList (called by add_class_to_loadable_list) + ***********************************************************************/ + +/*********************************************************************** + * Thread-safety of class info bits (2004-10-19) + * + * Some class info bits are used to store mutable runtime state. + * Modifications of the info bits at particular times need to be + * synchronized to prevent races. + * + * Three thread-safe modification functions are provided: + * _class_setInfo() // atomically sets some bits + * _class_clearInfo() // atomically clears some bits + * _class_changeInfo() // atomically sets some bits and clears others + * These replace CLS_SETINFO() for the multithreaded cases. + * + * Three modification windows are defined: + * - compile time + * - class construction or image load (before +load) in one thread + * - multi-threaded messaging and method caches + * + * Info bit modification at compile time and class construction do not + * need to be locked, because only one thread is manipulating the class. + * Info bit modification during messaging needs to be locked, because + * there may be other threads simultaneously messaging or otherwise + * manipulating the class. + * + * Modification windows for each flag: + * + * CLS_CLASS: compile-time and class load + * CLS_META: compile-time and class load + * CLS_INITIALIZED: +initialize + * CLS_POSING: messaging + * CLS_MAPPED: compile-time + * CLS_FLUSH_CACHE: messaging + * CLS_GROW_CACHE: messaging + * CLS_NEED_BIND: unused + * CLS_METHOD_ARRAY: unused + * CLS_JAVA_HYBRID: JavaBridge only + * CLS_JAVA_CLASS: JavaBridge only + * CLS_INITIALIZING: messaging + * CLS_FROM_BUNDLE: class load + * CLS_HAS_CXX_STRUCTORS: compile-time and class load + * CLS_NO_METHOD_ARRAY: class load and messaging + * + * CLS_INITIALIZED and CLS_INITIALIZING have additional thread-safety + * constraints to support thread-safe +initialize. See "Thread safety + * during class initialization" for details. + * + * CLS_JAVA_HYBRID and CLS_JAVA_CLASS are set immediately after JavaBridge + * calls objc_addClass(). The JavaBridge does not use an atomic update, + * but the modification counts as "class construction" unless some other + * thread quickly finds the class via the class list. This race is + * small and unlikely in well-behaved code. + * + * Most info bits that may be modified during messaging are also never + * read without a lock. There is no general read lock for the info bits. + * CLS_INITIALIZED: classInitLock + * CLS_FLUSH_CACHE: cacheUpdateLock + * CLS_GROW_CACHE: cacheUpdateLock + * CLS_NO_METHOD_ARRAY: methodListLock + * CLS_INITIALIZING: classInitLock + ***********************************************************************/ + /*********************************************************************** * Thread-safety during class initialization (GrP 2001-9-24) * @@ -179,8 +305,6 @@ #include -#include - // Needed functions not in any header file size_t malloc_size (const void * ptr); @@ -268,6 +392,7 @@ typedef struct CacheInstrumentation CacheInstrumentation; static Ivar class_getVariable (Class cls, const char * name); static void flush_caches (Class cls, BOOL flush_meta); +static struct objc_method_list *nextMethodList(struct objc_class *cls, void **it); static void addClassToOriginalClass (Class posingClass, Class originalClass); static void _objc_addOrigClass (Class origClass); static void _freedHandler (id self, SEL sel); @@ -278,13 +403,18 @@ static int LogObjCMessageSend (BOOL isClassMethod, const char * objectsClass, static BOOL _cache_fill (Class cls, Method smt, SEL sel); static void _cache_addForwardEntry(Class cls, SEL sel); static void _cache_flush (Class cls); +static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel); static int SubtypeUntil (const char * type, char end); static const char * SkipFirstType (const char * type); static unsigned long _get_pc_for_thread (mach_port_t thread); static int _collecting_in_critical (void); static void _garbage_make_room (void); -static void _cache_collect_free (void * data, BOOL tryCollect); +static void _cache_collect_free (void * data, size_t size, BOOL tryCollect); + +static BOOL cache_allocator_is_block(void *block); +static void *cache_allocator_calloc(size_t size); +static void cache_allocator_free(void *block); static void _cache_print (Cache cache); static unsigned int log2 (unsigned int x); @@ -323,7 +453,10 @@ OBJC_DECLARE_LOCK(classInitLock); // Threads that are waiting for a class to finish initializing wait on this. pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER; -CFMutableDictionaryRef _classIMPTables = NULL; +// Lock for method list access and modification. +// Protects methodLists fields, method arrays, and CLS_NO_METHOD_ARRAY bits. +// Classes not yet in use do not need to take this lock. +OBJC_DECLARE_LOCK(methodListLock); // When traceDuplicates is non-zero, _cacheFill checks whether the method // being encached is already there. The number of times it finds a match @@ -333,6 +466,12 @@ static int traceDuplicates = 0; static int traceDuplicatesVerbose = 0; static int cacheFillDuplicates = 0; +// Custom cache allocator parameters +// CACHE_REGION_SIZE must be a multiple of CACHE_QUANTUM. +#define CACHE_QUANTUM 520 +#define CACHE_REGION_SIZE 131040 // quantized just under 128KB (131072) +// #define CACHE_REGION_SIZE 262080 // quantized just under 256KB (262144) + #ifdef OBJC_INSTRUMENTED // Instrumentation static unsigned int LinearFlushCachesCount = 0; @@ -349,7 +488,7 @@ static unsigned int MaxIdealFlushCachesCount = 0; // Method call logging typedef int (*ObjCLogProc)(BOOL, const char *, const char *, SEL); -static int totalCacheFills = 0; +static int totalCacheFills NOBSS = 0; static int objcMsgLogFD = (-1); static ObjCLogProc objcMsgLogProc = &LogObjCMessageSend; static int objcMsgLogEnabled = 0; @@ -381,12 +520,24 @@ _errNewVars[] = "[%s poseAs:%s]: %s defines new instance variables"; * messenger. ***********************************************************************/ +#ifndef OBJC_INSTRUMENTED const struct objc_cache emptyCache = { 0, // mask 0, // occupied { NULL } // buckets }; +#else +// OBJC_INSTRUMENTED requires writable data immediately following emptyCache. +struct objc_cache emptyCache = +{ + 0, // mask + 0, // occupied + { NULL } // buckets +}; +CacheInstrumentation emptyCacheInstrumentation = {0}; +#endif + // Freed objects have their isa set to point to this dummy class. // This avoids the need to check for Nil classes in the messenger. @@ -441,11 +592,108 @@ void * object_getIndexedIvars (id obj) } +/*********************************************************************** +* object_cxxDestructFromClass. +* Call C++ destructors on obj, starting with cls's +* dtor method (if any) followed by superclasses' dtors (if any), +* stopping at cls's dtor (if any). +* Uses methodListLock and cacheUpdateLock. The caller must hold neither. +**********************************************************************/ +static void object_cxxDestructFromClass(id obj, Class cls) +{ + void (*dtor)(id); + + // Call cls's dtor first, then superclasses's dtors. + + for ( ; cls != NULL; cls = cls->super_class) { + if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) continue; + dtor = (void(*)(id)) + lookupMethodInClassAndLoadCache(cls, cxx_destruct_sel); + if (dtor != (void(*)(id))&_objc_msgForward) { + if (PrintCxxCtors) { + _objc_inform("CXX: calling C++ destructors for class %s", + cls->name); + } + (*dtor)(obj); + } + } +} + + +/*********************************************************************** +* object_cxxDestruct. +* Call C++ destructors on obj, if any. +* Uses methodListLock and cacheUpdateLock. The caller must hold neither. +**********************************************************************/ +void object_cxxDestruct(id obj) +{ + if (!obj) return; + object_cxxDestructFromClass(obj, obj->isa); +} + + +/*********************************************************************** +* object_cxxConstructFromClass. +* Recursively call C++ constructors on obj, starting with base class's +* ctor method (if any) followed by subclasses' ctors (if any), stopping +* at cls's ctor (if any). +* Returns YES if construction succeeded. +* Returns NO if some constructor threw an exception. The exception is +* caught and discarded. Any partial construction is destructed. +* Uses methodListLock and cacheUpdateLock. The caller must hold neither. +* +* .cxx_construct returns id. This really means: +* return self: construction succeeded +* return nil: construction failed because a C++ constructor threw an exception +**********************************************************************/ +static BOOL object_cxxConstructFromClass(id obj, Class cls) +{ + id (*ctor)(id); + + // Call superclasses' ctors first, if any. + if (cls->super_class) { + BOOL ok = object_cxxConstructFromClass(obj, cls->super_class); + if (!ok) return NO; // some superclass's ctor failed - give up + } + + // Find this class's ctor, if any. + if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) return YES; // no ctor - ok + ctor = (id(*)(id))lookupMethodInClassAndLoadCache(cls, cxx_construct_sel); + if (ctor == (id(*)(id))&_objc_msgForward) return YES; // no ctor - ok + + // Call this class's ctor. + if (PrintCxxCtors) { + _objc_inform("CXX: calling C++ constructors for class %s", cls->name); + } + if ((*ctor)(obj)) return YES; // ctor called and succeeded - ok + + // This class's ctor was called and failed. + // Call superclasses's dtors to clean up. + if (cls->super_class) object_cxxDestructFromClass(obj, cls->super_class); + return NO; +} + + +/*********************************************************************** +* object_cxxConstructFromClass. +* Call C++ constructors on obj, if any. +* Returns YES if construction succeeded. +* Returns NO if some constructor threw an exception. The exception is +* caught and discarded. Any partial construction is destructed. +* Uses methodListLock and cacheUpdateLock. The caller must hold neither. +**********************************************************************/ +BOOL object_cxxConstruct(id obj) +{ + if (!obj) return YES; + return object_cxxConstructFromClass(obj, obj->isa); +} + + /*********************************************************************** * _internal_class_createInstanceFromZone. Allocate an instance of the * specified class with the specified number of bytes for indexed * variables, in the specified zone. The isa field is set to the -* class, all other fields are zeroed. +* class, C++ default constructors are called, and all other fields are zeroed. **********************************************************************/ static id _internal_class_createInstanceFromZone (Class aClass, unsigned nIvarBytes, @@ -472,6 +720,14 @@ static id _internal_class_createInstanceFromZone (Class aClass, // Set the isa pointer obj->isa = aClass; + + // Call C++ constructors, if any. + if (!object_cxxConstruct(obj)) { + // Some C++ constructor threw an exception. + malloc_zone_free(z, obj); + return nil; + } + return obj; } @@ -535,60 +791,6 @@ int class_getVersion (Class aClass) return ((struct objc_class *) aClass)->version; } -static void _addListIMPsToTable(CFMutableDictionaryRef table, struct objc_method_list *mlist, Class cls, void **iterator) { - int i; - struct objc_method_list *new_mlist; - if (!mlist) return; - /* Work from end of list so that categories override */ - new_mlist = _class_inlinedNextMethodList(cls, iterator); - _addListIMPsToTable(table, new_mlist, cls, iterator); - for (i = 0; i < mlist->method_count; i++) { - CFDictionarySetValue(table, mlist->method_list[i].method_name, mlist->method_list[i].method_imp); - } -} - -static void _addClassIMPsToTable(CFMutableDictionaryRef table, Class cls) { - struct objc_method_list *mlist; - void *iterator = 0; -#ifdef INCLUDE_SUPER_IMPS_IN_IMP_TABLE - if (cls->super_class) { /* Do superclass first so subclass overrides */ - CFMutableDictionaryRef super_table = CFDictionaryGetValue(_classIMPTables, cls->super_class); - if (super_table) { - CFIndex cnt; - const void **keys, **values, *buffer1[128], *buffer2[128]; - cnt = CFDictionaryGetCount(super_table); - keys = (cnt <= 128) ? buffer1 : CFAllocatorAllocate(NULL, cnt * sizeof(void *), 0); - values = (cnt <= 128) ? buffer2 : CFAllocatorAllocate(NULL, cnt * sizeof(void *), 0); - CFDictionaryGetKeysAndValues(super_table, keys, values); - while (cnt--) { - CFDictionarySetValue(table, keys[cnt], values[cnt]); - } - if (keys != buffer1) CFAllocatorDeallocate(NULL, keys); - if (values != buffer2) CFAllocatorDeallocate(NULL, values); - } else { - _addClassIMPsToTable(table, cls->super_class); - } - } -#endif -mlist = _class_inlinedNextMethodList(cls, &iterator); -_addListIMPsToTable(table, mlist, cls, &iterator); -} - -CFMutableDictionaryRef _getClassIMPTable(Class cls) { - CFMutableDictionaryRef table; - if (NULL == _classIMPTables) { - // maps Classes to mutable dictionaries - _classIMPTables = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); - } - table = (CFMutableDictionaryRef)CFDictionaryGetValue(_classIMPTables, cls); - // IMP table maps SELs to IMPS - if (NULL == table) { - table = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); - _addClassIMPsToTable(table, cls); - CFDictionaryAddValue(_classIMPTables, cls, table); - } - return table; -} static inline Method _findNamedMethodInList(struct objc_method_list * mlist, const char *meth_name) { int i; @@ -602,7 +804,125 @@ static inline Method _findNamedMethodInList(struct objc_method_list * mlist, con return NULL; } -/* These next three functions are the heart of ObjC method lookup. */ + +/*********************************************************************** +* fixupSelectorsInMethodList +* Uniques selectors in the given method list. +* The given method list must be non-NULL and not already fixed-up. +* If the class was loaded from a bundle: +* fixes up the given list in place with heap-allocated selector strings +* If the class was not from a bundle: +* allocates a copy of the method list, fixes up the copy, and returns +* the copy. The given list is unmodified. +* +* If cls is already in use, methodListLock must be held by the caller. +**********************************************************************/ +// Fixed-up method lists get mlist->obsolete = _OBJC_FIXED_UP. +#define _OBJC_FIXED_UP ((void *)1771) + +static struct objc_method_list *fixupSelectorsInMethodList(Class cls, struct objc_method_list *mlist) +{ + unsigned i, size; + Method method; + struct objc_method_list *old_mlist; + + if ( ! mlist ) return (struct objc_method_list *)0; + if ( mlist->obsolete != _OBJC_FIXED_UP ) { + BOOL isBundle = CLS_GETINFO(cls, CLS_FROM_BUNDLE) ? YES : NO; + if (!isBundle) { + old_mlist = mlist; + size = sizeof(struct objc_method_list) - sizeof(struct objc_method) + old_mlist->method_count * sizeof(struct objc_method); + mlist = _malloc_internal(size); + memmove(mlist, old_mlist, size); + } else { + // Mach-O bundles are fixed up in place. + // This prevents leaks when a bundle is unloaded. + } + sel_lock(); + for ( i = 0; i < mlist->method_count; i += 1 ) { + method = &mlist->method_list[i]; + method->method_name = + sel_registerNameNoLock((const char *)method->method_name, isBundle); // Always copy selector data from bundles. + } + sel_unlock(); + mlist->obsolete = _OBJC_FIXED_UP; + } + return mlist; +} + + +/*********************************************************************** +* nextMethodList +* Returns successive method lists from the given class. +* Method lists are returned in method search order (i.e. highest-priority +* implementations first). +* All necessary method list fixups are performed, so the +* returned method list is fully-constructed. +* +* If cls is already in use, methodListLock must be held by the caller. +* For full thread-safety, methodListLock must be continuously held by the +* caller across all calls to nextMethodList(). If the lock is released, +* the bad results listed in class_nextMethodList() may occur. +* +* void *iterator = NULL; +* struct objc_method_list *mlist; +* OBJC_LOCK(&methodListLock); +* while ((mlist = nextMethodList(cls, &iterator))) { +* // do something with mlist +* } +* OBJC_UNLOCK(&methodListLock); +**********************************************************************/ +static struct objc_method_list *nextMethodList(struct objc_class *cls, + void **it) +{ + uintptr_t index = *(uintptr_t *)it; + struct objc_method_list **resultp; + + if (index == 0) { + // First call to nextMethodList. + if (!cls->methodLists) { + resultp = NULL; + } else if (cls->info & CLS_NO_METHOD_ARRAY) { + resultp = (struct objc_method_list **)&cls->methodLists; + } else { + resultp = &cls->methodLists[0]; + if (!*resultp || *resultp == END_OF_METHODS_LIST) { + resultp = NULL; + } + } + } else { + // Subsequent call to nextMethodList. + if (!cls->methodLists) { + resultp = NULL; + } else if (cls->info & CLS_NO_METHOD_ARRAY) { + resultp = NULL; + } else { + resultp = &cls->methodLists[index]; + if (!*resultp || *resultp == END_OF_METHODS_LIST) { + resultp = NULL; + } + } + } + + // resultp now is NULL, meaning there are no more method lists, + // OR the address of the method list pointer to fix up and return. + + if (resultp) { + if (*resultp && (*resultp)->obsolete != _OBJC_FIXED_UP) { + *resultp = fixupSelectorsInMethodList(cls, *resultp); + } + *it = (void *)(index + 1); + return *resultp; + } else { + *it = 0; + return NULL; + } +} + + +/* These next three functions are the heart of ObjC method lookup. + * If the class is currently in use, methodListLock must be held by the caller. + */ static inline Method _findMethodInList(struct objc_method_list * mlist, SEL sel) { int i; if (!mlist) return NULL; @@ -615,25 +935,65 @@ static inline Method _findMethodInList(struct objc_method_list * mlist, SEL sel) return NULL; } +static inline Method _findMethodInClass(Class cls, SEL sel) __attribute__((always_inline)); static inline Method _findMethodInClass(Class cls, SEL sel) { - struct objc_method_list *mlist; - void *iterator = 0; - while ((mlist = _class_inlinedNextMethodList(cls, &iterator))) { - Method m = _findMethodInList(mlist, sel); - if (m) return m; + // Flattened version of nextMethodList(). The optimizer doesn't + // do a good job with hoisting the conditionals out of the loop. + // Conceptually, this looks like: + // while ((mlist = nextMethodList(cls, &iterator))) { + // Method m = _findMethodInList(mlist, sel); + // if (m) return m; + // } + + if (!cls->methodLists) { + // No method lists. + return NULL; + } + else if (cls->info & CLS_NO_METHOD_ARRAY) { + // One method list. + struct objc_method_list **mlistp; + mlistp = (struct objc_method_list **)&cls->methodLists; + if ((*mlistp)->obsolete != _OBJC_FIXED_UP) { + *mlistp = fixupSelectorsInMethodList(cls, *mlistp); + } + return _findMethodInList(*mlistp, sel); + } + else { + // Multiple method lists. + struct objc_method_list **mlistp; + for (mlistp = cls->methodLists; + *mlistp != NULL && *mlistp != END_OF_METHODS_LIST; + mlistp++) + { + Method m; + if ((*mlistp)->obsolete != _OBJC_FIXED_UP) { + *mlistp = fixupSelectorsInMethodList(cls, *mlistp); + } + m = _findMethodInList(*mlistp, sel); + if (m) return m; + } + return NULL; } - return NULL; } static inline Method _getMethod(Class cls, SEL sel) { for (; cls; cls = cls->super_class) { - Method m = _findMethodInClass(cls, sel); + Method m; + m = _findMethodInClass(cls, sel); if (m) return m; } return NULL; } +// fixme for gc debugging temporary use +__private_extern__ IMP findIMPInClass(Class cls, SEL sel) +{ + Method m = _findMethodInClass(cls, sel); + if (m) return m->method_imp; + else return NULL; +} + /*********************************************************************** * class_getInstanceMethod. Return the instance method for the * specified class and selector. @@ -641,12 +1001,17 @@ static inline Method _getMethod(Class cls, SEL sel) { Method class_getInstanceMethod (Class aClass, SEL aSelector) { + Method result; + // Need both a class and a selector if (!aClass || !aSelector) return NULL; // Go to the class - return _getMethod (aClass, aSelector); + OBJC_LOCK(&methodListLock); + result = _getMethod (aClass, aSelector); + OBJC_UNLOCK(&methodListLock); + return result; } /*********************************************************************** @@ -656,12 +1021,17 @@ Method class_getInstanceMethod (Class aClass, Method class_getClassMethod (Class aClass, SEL aSelector) { + Method result; + // Need both a class and a selector if (!aClass || !aSelector) return NULL; // Go to the class or isa - return _getMethod (GETMETA(aClass), aSelector); + OBJC_LOCK(&methodListLock); + result = _getMethod (GETMETA(aClass), aSelector); + OBJC_UNLOCK(&methodListLock); + return result; } /*********************************************************************** @@ -743,7 +1113,7 @@ static void flush_caches(Class cls, BOOL flush_meta) newNumClasses = objc_getClassList((Class *)NULL, 0); while (numClasses < newNumClasses) { numClasses = newNumClasses; - classes = realloc(classes, sizeof(Class) * numClasses); + classes = _realloc_internal(classes, sizeof(Class) * numClasses); newNumClasses = objc_getClassList((Class *)classes, numClasses); } numClasses = newNumClasses; @@ -798,7 +1168,7 @@ static void flush_caches(Class cls, BOOL flush_meta) #endif OBJC_UNLOCK(&cacheUpdateLock); - free(classes); + _free_internal(classes); return; } @@ -878,7 +1248,7 @@ static void flush_caches(Class cls, BOOL flush_meta) #endif OBJC_UNLOCK(&cacheUpdateLock); - free(classes); + _free_internal(classes); } /*********************************************************************** @@ -900,17 +1270,28 @@ void do_not_remove_this_dummy_function (void) (void) class_nextMethodList (NULL, NULL); } + /*********************************************************************** * class_nextMethodList. +* External version of nextMethodList(). * -* usage: -* void * iterator = 0; -* while (class_nextMethodList (cls, &iterator)) {...} +* This function is not fully thread-safe. A series of calls to +* class_nextMethodList() may fail if methods are added to or removed +* from the class between calls. +* If methods are added between calls to class_nextMethodList(), it may +* return previously-returned method lists again, and may fail to return +* newly-added lists. +* If methods are removed between calls to class_nextMethodList(), it may +* omit surviving method lists or simply crash. **********************************************************************/ OBJC_EXPORT struct objc_method_list * class_nextMethodList (Class cls, void ** it) { - return _class_inlinedNextMethodList(cls, it); + struct objc_method_list *result; + OBJC_LOCK(&methodListLock); + result = nextMethodList(cls, it); + OBJC_UNLOCK(&methodListLock); + return result; } /*********************************************************************** @@ -929,8 +1310,10 @@ void _dummy (void) void class_addMethods (Class cls, struct objc_method_list * meths) { - // Insert atomically. - _objc_insertMethods (meths, &((struct objc_class *) cls)->methodLists); + // Add the methods. + OBJC_LOCK(&methodListLock); + _objc_insertMethods(cls, meths); + OBJC_UNLOCK(&methodListLock); // Must flush when dynamically adding methods. No need to flush // all the class method caches. If cls is a meta class, though, @@ -955,8 +1338,10 @@ void class_addClassMethods (Class cls, void class_removeMethods (Class cls, struct objc_method_list * meths) { - // Remove atomically. - _objc_removeMethods (meths, &((struct objc_class *) cls)->methodLists); + // Remove the methods + OBJC_LOCK(&methodListLock); + _objc_removeMethods(cls, meths); + OBJC_UNLOCK(&methodListLock); // Must flush when dynamically removing methods. No need to flush // all the class method caches. If cls is a meta class, though, @@ -989,7 +1374,7 @@ static void addClassToOriginalClass (Class posingClass, posed_class_to_original_class_hash = NXCreateMapTableFromZone (NXPtrValueMapPrototype, 8, - _objc_create_zone ()); + _objc_internal_zone ()); } // Add pose to hash table @@ -1045,7 +1430,7 @@ static void _objc_addOrigClass (Class origClass) { posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype, 8, - _objc_create_zone ()); + _objc_internal_zone ()); } // Add the named class iff it is not already there (or collides?) @@ -1088,7 +1473,7 @@ Class class_poseAs (Class imposter, // Build a string to use to replace the name of the original class. #define imposterNamePrefix "_%" - imposterNamePtr = malloc_zone_malloc(_objc_create_zone(), strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1); + imposterNamePtr = _malloc_internal(strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1); strcpy(imposterNamePtr, imposterNamePrefix); strcat(imposterNamePtr, ((struct objc_class *)original)->name); #undef imposterNamePrefix @@ -1104,6 +1489,13 @@ Class class_poseAs (Class imposter, _objc_addOrigClass (original); _objc_addOrigClass (imposter); + // Copy the imposter, so that the imposter can continue + // its normal life in addition to changing the behavior of + // the original. As a hack we don't bother to copy the metaclass. + // For some reason we modify the original rather than the copy. + copy = (*_zoneAlloc)(imposter->isa, sizeof(struct objc_class), _objc_internal_zone()); + memmove(copy, imposter, sizeof(struct objc_class)); + OBJC_LOCK(&classLock); class_hash = objc_getClasses (); @@ -1112,19 +1504,12 @@ Class class_poseAs (Class imposter, NXHashRemove (class_hash, imposter); NXHashRemove (class_hash, original); - // Copy the imposter, so that the imposter can continue - // its normal life in addition to changing the behavior of - // the original. As a hack we don't bother to copy the metaclass. - // For some reason we modify the original rather than the copy. - copy = (*_zoneAlloc)(imposter->isa, sizeof(struct objc_class), _objc_create_zone()); - memmove(copy, imposter, sizeof(struct objc_class)); - NXHashInsert (class_hash, copy); addClassToOriginalClass (imposter, copy); // Mark the imposter as such - CLS_SETINFO(((struct objc_class *)imposter), CLS_POSING); - CLS_SETINFO(((struct objc_class *)imposter)->isa, CLS_POSING); + _class_setInfo(imposter, CLS_POSING); + _class_setInfo(imposter->isa, CLS_POSING); // Change the name of the imposter to that of the original class. ((struct objc_class *)imposter)->name = ((struct objc_class *)original)->name; @@ -1207,85 +1592,6 @@ static void _nonexistentHandler (id self, __objc_error (self, _errNonExistentObject, SELNAME(sel), self); } -/*********************************************************************** -* _class_install_relationships. Fill in the class pointers of a class -* that was loaded before some or all of the classes it needs to point to. -* The deal here is that the class pointer fields have been usurped to -* hold the string name of the pertinent class. Our job is to look up -* the real thing based on those stored names. -**********************************************************************/ -void _class_install_relationships (Class cls, - long version) -{ - struct objc_class * meta; - struct objc_class * clstmp; - - // Get easy access to meta class structure - meta = ((struct objc_class *)cls)->isa; - - // Set version in meta class strucure - meta->version = version; - - // Install superclass based on stored name. No name iff - // cls is a root class. - if (((struct objc_class *)cls)->super_class) - { - clstmp = objc_getClass ((const char *) ((struct objc_class *)cls)->super_class); - if (!clstmp) - { - _objc_inform("failed objc_getClass(%s) for %s->super_class", (const char *)((struct objc_class *)cls)->super_class, ((struct objc_class *)cls)->name); - goto Error; - } - - ((struct objc_class *)cls)->super_class = clstmp; - } - - // Install meta's isa based on stored name. Meta class isa - // pointers always point to the meta class of the root class - // (root meta class, too, it points to itself!). - clstmp = objc_getClass ((const char *) meta->isa); - if (!clstmp) - { - _objc_inform("failed objc_getClass(%s) for %s->isa->isa", (const char *) meta->isa, ((struct objc_class *)cls)->name); - goto Error; - } - - meta->isa = clstmp->isa; - - // Install meta's superclass based on stored name. No name iff - // cls is a root class. - if (meta->super_class) - { - // Locate instance class of super class - clstmp = objc_getClass ((const char *) meta->super_class); - if (!clstmp) - { - _objc_inform("failed objc_getClass(%s) for %s->isa->super_class", (const char *)meta->super_class, ((struct objc_class *)cls)->name); - goto Error; - } - - // Store meta class of super class - meta->super_class = clstmp->isa; - } - - // cls is root, so `tie' the (root) meta class down to its - // instance class. This way, class methods can come from - // the root instance class. - else - ((struct objc_class *)meta)->super_class = cls; - - // Use common static empty cache instead of NULL - if (((struct objc_class *)cls)->cache == NULL) - ((struct objc_class *)cls)->cache = (Cache) &emptyCache; - if (((struct objc_class *)meta)->cache == NULL) - ((struct objc_class *)meta)->cache = (Cache) &emptyCache; - - return; - -Error: - _objc_fatal ("please link appropriate classes in your program"); -} - /*********************************************************************** * class_respondsToMethod. * @@ -1309,7 +1615,9 @@ BOOL class_respondsToMethod (Class cls, } // Handle cache miss + OBJC_LOCK(&methodListLock); meth = _getMethod(cls, sel); + OBJC_UNLOCK(&methodListLock); if (meth) { _cache_fill(cls, meth, sel); return YES; @@ -1327,7 +1635,6 @@ BOOL class_respondsToMethod (Class cls, * * Called from -[Object methodFor:] and +[Object instanceMethodFor:] **********************************************************************/ -// GrP is this used anymore? IMP class_lookupMethod (Class cls, SEL sel) { @@ -1346,19 +1653,12 @@ IMP class_lookupMethod (Class cls, } /*********************************************************************** -* class_lookupMethodInMethodList. -* -* Called from objc-load.m and _objc_callLoads () +* lookupNamedMethodInMethodList +* Only called to find +load/-.cxx_construct/-.cxx_destruct methods, +* without fixing up the entire method list. +* The class is not yet in use, so methodListLock is not taken. **********************************************************************/ -IMP class_lookupMethodInMethodList (struct objc_method_list * mlist, - SEL sel) -{ - Method m = _findMethodInList(mlist, sel); - return (m ? m->method_imp : NULL); -} - -IMP class_lookupNamedMethodInMethodList(struct objc_method_list *mlist, - const char *meth_name) +__private_extern__ IMP lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name) { Method m = meth_name ? _findNamedMethodInList(mlist, meth_name) : NULL; return (m ? m->method_imp : NULL); @@ -1369,6 +1669,7 @@ IMP class_lookupNamedMethodInMethodList(struct objc_method_list *mlist, * _cache_malloc. * * Called from _cache_create() and cache_expand() +* Cache locks: cacheUpdateLock must be held by the caller. **********************************************************************/ static Cache _cache_malloc(int slotCount) { @@ -1378,14 +1679,21 @@ static Cache _cache_malloc(int slotCount) // Allocate table (why not check for failure?) size = sizeof(struct objc_cache) + TABLE_SIZE(slotCount); #ifdef OBJC_INSTRUMENTED + // Custom cache allocator can't handle instrumentation. size += sizeof(CacheInstrumentation); -#endif - new_cache = malloc_zone_calloc (_objc_create_zone(), size, 1); - - // [c|v]allocated memory is zeroed, so all buckets are invalidated - // and occupied == 0 and all instrumentation is zero. - + new_cache = _calloc_internal(size, 1); new_cache->mask = slotCount - 1; +#else + if (size < CACHE_QUANTUM || UseInternalZone) { + new_cache = _calloc_internal(size, 1); + new_cache->mask = slotCount - 1; + // occupied and buckets and instrumentation are all zero + } else { + new_cache = cache_allocator_calloc(size); + // mask is already set + // occupied and buckets and instrumentation are all zero + } +#endif return new_cache; } @@ -1412,13 +1720,13 @@ Cache _cache_create (Class cls) // Clear the cache flush flag so that we will not flush this cache // before expanding it for the first time. - ((struct objc_class * )cls)->info &= ~(CLS_FLUSH_CACHE); + _class_clearInfo(cls, CLS_FLUSH_CACHE); // Clear the grow flag so that we will re-use the current storage, // rather than actually grow the cache, when expanding the cache // for the first time if (_class_slow_grow) - ((struct objc_class * )cls)->info &= ~(CLS_GROW_CACHE); + _class_clearInfo(cls, CLS_GROW_CACHE); // Return our creation return new_cache; @@ -1450,7 +1758,7 @@ static Cache _cache_expand (Class cls) // is non-zero, let the cache grow this time, but clear the // flag so the cache is reused next time if ((((struct objc_class * )cls)->info & CLS_GROW_CACHE) != 0) - ((struct objc_class * )cls)->info &= ~CLS_GROW_CACHE; + _class_clearInfo(cls, CLS_GROW_CACHE); // Reuse the current cache storage this time else @@ -1474,12 +1782,12 @@ static Cache _cache_expand (Class cls) // Deallocate "forward::" entry if (CACHE_BUCKET_IMP(oldEntry) == &_objc_msgForward) { - _cache_collect_free (oldEntry, NO); + _cache_collect_free (oldEntry, sizeof(struct objc_method), NO); } } // Set the slow growth flag so the cache is next grown - ((struct objc_class * )cls)->info |= CLS_GROW_CACHE; + _class_setInfo(cls, CLS_GROW_CACHE); // Return the same old cache, freshly emptied return old_cache; @@ -1544,7 +1852,7 @@ static Cache _cache_expand (Class cls) // Set the cache flush flag so that we will flush this cache // before expanding it again. - ((struct objc_class * )cls)->info |= CLS_FLUSH_CACHE; + _class_setInfo(cls, CLS_FLUSH_CACHE); } // Deallocate "forward::" entries from the old cache @@ -1555,7 +1863,7 @@ static Cache _cache_expand (Class cls) if (CACHE_BUCKET_VALID(old_cache->buckets[index]) && CACHE_BUCKET_IMP(old_cache->buckets[index]) == &_objc_msgForward) { - _cache_collect_free (old_cache->buckets[index], NO); + _cache_collect_free (old_cache->buckets[index], sizeof(struct objc_method), NO); } } } @@ -1564,7 +1872,7 @@ static Cache _cache_expand (Class cls) ((struct objc_class *)cls)->cache = new_cache; // Deallocate old cache, try freeing all the garbage - _cache_collect_free (old_cache, YES); + _cache_collect_free (old_cache, old_cache->mask * sizeof(Method), YES); return new_cache; } @@ -1582,7 +1890,13 @@ static int LogObjCMessageSend (BOOL isClassMethod, if (objcMsgLogFD == (-1)) { snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ()); - objcMsgLogFD = open (buf, O_WRONLY | O_CREAT, 0666); + objcMsgLogFD = secure_open (buf, O_WRONLY | O_CREAT, geteuid()); + if (objcMsgLogFD < 0) { + // no log file - disable logging + objcMsgLogEnabled = 0; + objcMsgLogFD = -1; + return 1; + } } // Make the log entry @@ -1771,13 +2085,13 @@ static void _cache_addForwardEntry(Class cls, SEL sel) { Method smt; - smt = malloc_zone_malloc(_objc_create_zone(), sizeof(struct objc_method)); + smt = _malloc_internal(sizeof(struct objc_method)); smt->method_name = sel; smt->method_types = ""; smt->method_imp = &_objc_msgForward; if (! _cache_fill(cls, smt, sel)) { // Entry not added to cache. Don't leak the method struct. - malloc_zone_free(_objc_create_zone(), smt); + _free_internal(smt); } } @@ -1824,7 +2138,7 @@ static void _cache_flush (Class cls) // Deallocate "forward::" entry if (oldEntry && oldEntry->method_imp == &_objc_msgForward) - _cache_collect_free (oldEntry, NO); + _cache_collect_free (oldEntry, sizeof(struct objc_method), NO); } // Clear the valid-entry counter @@ -1832,7 +2146,7 @@ static void _cache_flush (Class cls) // Clear the cache flush flag so that we will not flush this cache // before expanding it again. - ((struct objc_class * )cls)->info &= ~CLS_FLUSH_CACHE; + _class_clearInfo(cls, CLS_FLUSH_CACHE); } /*********************************************************************** @@ -1889,7 +2203,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create) if (!create) { return NULL; } else { - data = calloc(1, sizeof(_objc_pthread_data)); + data = _calloc_internal(1, sizeof(_objc_pthread_data)); pthread_setspecific(_objc_pthread_key, data); } } @@ -1899,7 +2213,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create) if (!create) { return NULL; } else { - list = calloc(1, sizeof(_objc_initializing_classes)); + list = _calloc_internal(1, sizeof(_objc_initializing_classes)); data->initializingClasses = list; } } @@ -1910,7 +2224,7 @@ static _objc_initializing_classes *_fetchInitializingClassList(BOOL create) // even if create == NO. // Allow 4 simultaneous class inits on this thread before realloc. list->classesAllocated = 4; - classes = calloc(list->classesAllocated, sizeof(struct objc_class *)); + classes = _calloc_internal(list->classesAllocated, sizeof(struct objc_class *)); list->metaclasses = classes; } return list; @@ -1927,9 +2241,9 @@ void _destroyInitializingClassList(_objc_initializing_classes *list) { if (list != NULL) { if (list->metaclasses != NULL) { - free(list->metaclasses); + _free_internal(list->metaclasses); } - free(list); + _free_internal(list); } } @@ -1984,7 +2298,7 @@ static void _setThisThreadIsInitializingClass(struct objc_class *cls) // class list is full - reallocate list->classesAllocated = list->classesAllocated * 2 + 1; - list->metaclasses = realloc(list->metaclasses, list->classesAllocated * sizeof(struct objc_class *)); + list->metaclasses = _realloc_internal(list->metaclasses, list->classesAllocated * sizeof(struct objc_class *)); // zero out the new entries list->metaclasses[i++] = cls; for ( ; i < list->classesAllocated; i++) { @@ -2025,11 +2339,12 @@ static void _setThisThreadIsNotInitializingClass(struct objc_class *cls) **********************************************************************/ static void class_initialize(struct objc_class *cls) { - long *infoP = &GETMETA(cls)->info; + struct objc_class *infoCls = GETMETA(cls); BOOL reallyInitialize = NO; // Get the real class from the metaclass. The superclass chain // hangs off the real class only. + // fixme ick if (ISMETA(cls)) { if (strncmp(cls->name, "_%", 2) == 0) { // Posee's meta's name is smashed and isn't in the class_hash, @@ -2050,7 +2365,7 @@ static void class_initialize(struct objc_class *cls) // Try to atomically set CLS_INITIALIZING. pthread_mutex_lock(&classInitLock); if (!ISINITIALIZED(cls) && !ISINITIALIZING(cls)) { - *infoP |= CLS_INITIALIZING; + _class_setInfo(infoCls, CLS_INITIALIZING); reallyInitialize = YES; } pthread_mutex_unlock(&classInitLock); @@ -2061,12 +2376,6 @@ static void class_initialize(struct objc_class *cls) // Record that we're initializing this class so we can message it. _setThisThreadIsInitializingClass(cls); - // bind the module in - if it came from a bundle or dynamic library - _objc_bindClassIfNeeded(cls); - - // chain on the categories and bind them if necessary - _objc_resolve_categories_for_class(cls); - // Send the +initialize message. // Note that +initialize is sent to the superclass (again) if // this class doesn't implement +initialize. 2157218 @@ -2074,7 +2383,7 @@ static void class_initialize(struct objc_class *cls) // Done initializing. Update the info bits and notify waiting threads. pthread_mutex_lock(&classInitLock); - *infoP = (*infoP | CLS_INITIALIZED) & ~CLS_INITIALIZING; + _class_changeInfo(infoCls, CLS_INITIALIZED, CLS_INITIALIZING); pthread_cond_broadcast(&classInitWaitCond); pthread_mutex_unlock(&classInitLock); _setThisThreadIsNotInitializingClass(cls); @@ -2189,7 +2498,9 @@ IMP _class_lookupMethodAndLoadCache (Class cls, // Cache scan failed. Search method list. + OBJC_LOCK(&methodListLock); meth = _findMethodInClass(curClass, sel); + OBJC_UNLOCK(&methodListLock); if (meth) { // If logging is enabled, log the message send and let // the logger decide whether to encache the method. @@ -2231,6 +2542,74 @@ IMP _class_lookupMethodAndLoadCache (Class cls, } +/*********************************************************************** +* lookupMethodInClassAndLoadCache. +* Like _class_lookupMethodAndLoadCache, but does not search superclasses. +* Caches and returns objc_msgForward if the method is not found in the class. +**********************************************************************/ +static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel) +{ + Method meth; + IMP imp; + + // Search cache first. + imp = _cache_getImp(cls, sel); + if (imp) return imp; + + // Cache miss. Search method list. + + OBJC_LOCK(&methodListLock); + meth = _findMethodInClass(cls, sel); + OBJC_UNLOCK(&methodListLock); + + if (meth) { + // Hit in method list. Cache it. + _cache_fill(cls, meth, sel); + return meth->method_imp; + } else { + // Miss in method list. Cache objc_msgForward. + _cache_addForwardEntry(cls, sel); + return &_objc_msgForward; + } +} + + + +/*********************************************************************** +* _class_changeInfo +* Atomically sets and clears some bits in cls's info field. +* set and clear must not overlap. +**********************************************************************/ +static pthread_mutex_t infoLock = PTHREAD_MUTEX_INITIALIZER; +__private_extern__ void _class_changeInfo(struct objc_class *cls, + long set, long clear) +{ + pthread_mutex_lock(&infoLock); + cls->info = (cls->info | set) & ~clear; + pthread_mutex_unlock(&infoLock); +} + + +/*********************************************************************** +* _class_setInfo +* Atomically sets some bits in cls's info field. +**********************************************************************/ +__private_extern__ void _class_setInfo(struct objc_class *cls, long set) +{ + _class_changeInfo(cls, set, 0); +} + + +/*********************************************************************** +* _class_clearInfo +* Atomically clears some bits in cls's info field. +**********************************************************************/ +__private_extern__ void _class_clearInfo(struct objc_class *cls, long clear) +{ + _class_changeInfo(cls, 0, clear); +} + + /*********************************************************************** * SubtypeUntil. * @@ -2557,22 +2936,69 @@ unsigned method_getArgumentInfo (Method method, void * _objc_create_zone (void) { - static void *_objc_z = (void *)0xffffffff; - if ( _objc_z == (void *)0xffffffff ) { - char *s = getenv("OBJC_USE_OBJC_ZONE"); - if ( s ) { - if ( (*s == '1') || (*s == 'y') || (*s == 'Y') ) { - _objc_z = malloc_create_zone(vm_page_size, 0); - malloc_set_zone_name(_objc_z, "ObjC"); - } - } - if ( _objc_z == (void *)0xffffffff ) { - _objc_z = malloc_default_zone(); + return malloc_default_zone(); +} + + +/*********************************************************************** +* _objc_internal_zone. +* Malloc zone for internal runtime data. +* By default this is the default malloc zone, but a dedicated zone is +* used if environment variable OBJC_USE_INTERNAL_ZONE is set. +**********************************************************************/ +__private_extern__ malloc_zone_t *_objc_internal_zone(void) +{ + static malloc_zone_t *z = (malloc_zone_t *)-1; + if (z == (malloc_zone_t *)-1) { + if (UseInternalZone) { + z = malloc_create_zone(vm_page_size, 0); + malloc_set_zone_name(z, "ObjC"); + } else { + z = malloc_default_zone(); } } - return _objc_z; + return z; } + +/*********************************************************************** +* _malloc_internal +* _calloc_internal +* _realloc_internal +* _strdup_internal +* _free_internal +* Convenience functions for the internal malloc zone. +**********************************************************************/ +__private_extern__ void *_malloc_internal(size_t size) +{ + return malloc_zone_malloc(_objc_internal_zone(), size); +} + +__private_extern__ void *_calloc_internal(size_t count, size_t size) +{ + return malloc_zone_calloc(_objc_internal_zone(), count, size); +} + +__private_extern__ void *_realloc_internal(void *ptr, size_t size) +{ + return malloc_zone_realloc(_objc_internal_zone(), ptr, size); +} + +__private_extern__ char *_strdup_internal(const char *str) +{ + size_t len = strlen(str); + char *dup = malloc_zone_malloc(_objc_internal_zone(), len + 1); + memcpy(dup, str, len + 1); + return dup; +} + +__private_extern__ void _free_internal(void *ptr) +{ + malloc_zone_free(_objc_internal_zone(), ptr); +} + + + /*********************************************************************** * cache collection. **********************************************************************/ @@ -2726,17 +3152,14 @@ static void _garbage_make_room (void) if (first) { first = 0; - garbage_refs = malloc_zone_malloc (_objc_create_zone(), - INIT_GARBAGE_COUNT * sizeof(void *)); + garbage_refs = _malloc_internal(INIT_GARBAGE_COUNT * sizeof(void *)); garbage_max = INIT_GARBAGE_COUNT; } // Double the table if it is full else if (garbage_count == garbage_max) { - tempGarbage = malloc_zone_realloc ((void *) _objc_create_zone(), - (void *) garbage_refs, - (size_t) garbage_max * 2 * sizeof(void *)); + tempGarbage = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *)); garbage_refs = (void **) tempGarbage; garbage_max *= 2; } @@ -2745,10 +3168,11 @@ static void _garbage_make_room (void) /*********************************************************************** * _cache_collect_free. Add the specified malloc'd memory to the list * of them to free at some later point. +* size is used for the collection threshold. It does not have to be +* precisely the block's size. * Cache locks: cacheUpdateLock must be held by the caller. **********************************************************************/ -static void _cache_collect_free (void * data, - BOOL tryCollect) +static void _cache_collect_free(void *data, size_t size, BOOL tryCollect) { static char *report_garbage = (char *)0xffffffff; @@ -2760,7 +3184,7 @@ static void _cache_collect_free (void * data, // Insert new element in garbage list // Note that we do this even if we end up free'ing everything _garbage_make_room (); - garbage_byte_size += malloc_size (data); + garbage_byte_size += size; garbage_refs[garbage_count++] = data; // Log our progress @@ -2787,10 +3211,16 @@ static void _cache_collect_free (void * data, _objc_inform ("collecting!\n"); // Dispose all refs now in the garbage - while (garbage_count) - free (garbage_refs[--garbage_count]); - - // Clear the total size indicator + while (garbage_count--) { + if (cache_allocator_is_block(garbage_refs[garbage_count])) { + cache_allocator_free(garbage_refs[garbage_count]); + } else { + free(garbage_refs[garbage_count]); + } + } + + // Clear the garbage count and total size indicator + garbage_count = 0; garbage_byte_size = 0; } else { @@ -2803,6 +3233,279 @@ static void _cache_collect_free (void * data, } + +/*********************************************************************** +* Custom method cache allocator. +* Method cache block sizes are 2^slots+2 words, which is a pessimal +* case for the system allocator. It wastes 504 bytes per cache block +* with 128 or more slots, which adds up to tens of KB for an AppKit process. +* To save memory, the custom cache allocator below is used. +* +* The cache allocator uses 128 KB allocation regions. Few processes will +* require a second region. Within a region, allocation is address-ordered +* first fit. +* +* The cache allocator uses a quantum of 520. +* Cache block ideal sizes: 520, 1032, 2056, 4104 +* Cache allocator sizes: 520, 1040, 2080, 4160 +* +* Because all blocks are known to be genuine method caches, the ordinary +* cache->mask and cache->occupied fields are used as block headers. +* No out-of-band headers are maintained. The number of blocks will +* almost always be fewer than 200, so for simplicity there is no free +* list or other optimization. +* +* Block in use: mask != 0, occupied != -1 (mask indicates block size) +* Block free: mask != 0, occupied == -1 (mask is precisely block size) +* +* No cache allocator functions take any locks. Instead, the caller +* must hold the cacheUpdateLock. +**********************************************************************/ + +typedef struct cache_allocator_block { + unsigned int size; + unsigned int state; + struct cache_allocator_block *nextFree; +} cache_allocator_block; + +typedef struct cache_allocator_region { + cache_allocator_block *start; + cache_allocator_block *end; // first non-block address + cache_allocator_block *freeList; + struct cache_allocator_region *next; +} cache_allocator_region; + +static cache_allocator_region *cacheRegion = NULL; + + +static unsigned int cache_allocator_mask_for_size(size_t size) +{ + return (size - sizeof(struct objc_cache)) / sizeof(Method); +} + +static size_t cache_allocator_size_for_mask(unsigned int mask) +{ + size_t requested = sizeof(struct objc_cache) + TABLE_SIZE(mask+1); + size_t actual = CACHE_QUANTUM; + while (actual < requested) actual += CACHE_QUANTUM; + return actual; +} + +/*********************************************************************** +* cache_allocator_add_region +* Allocates and returns a new region that can hold at least size +* bytes of large method caches. +* The actual size will be rounded up to a CACHE_QUANTUM boundary, +* with a minimum of CACHE_REGION_SIZE. +* The new region is lowest-priority for new allocations. Callers that +* know the other regions are already full should allocate directly +* into the returned region. +**********************************************************************/ +static cache_allocator_region *cache_allocator_add_region(size_t size) +{ + vm_address_t addr; + cache_allocator_block *b; + cache_allocator_region **rgnP; + cache_allocator_region *newRegion = + _calloc_internal(1, sizeof(cache_allocator_region)); + + // Round size up to quantum boundary, and apply the minimum size. + size += CACHE_QUANTUM - (size % CACHE_QUANTUM); + if (size < CACHE_REGION_SIZE) size = CACHE_REGION_SIZE; + + // Allocate the region + addr = 0; + vm_allocate(mach_task_self(), &addr, size, 1); + newRegion->start = (cache_allocator_block *)addr; + newRegion->end = (cache_allocator_block *)(addr + size); + + // Mark the first block: free and covers the entire region + b = newRegion->start; + b->size = size; + b->state = (unsigned int)-1; + b->nextFree = NULL; + newRegion->freeList = b; + + // Add to end of the linked list of regions. + // Other regions should be re-used before this one is touched. + newRegion->next = NULL; + rgnP = &cacheRegion; + while (*rgnP) { + rgnP = &(**rgnP).next; + } + *rgnP = newRegion; + + return newRegion; +} + + +/*********************************************************************** +* cache_allocator_coalesce +* Attempts to coalesce a free block with the single free block following +* it in the free list, if any. +**********************************************************************/ +static void cache_allocator_coalesce(cache_allocator_block *block) +{ + if (block->size + (uintptr_t)block == (uintptr_t)block->nextFree) { + block->size += block->nextFree->size; + block->nextFree = block->nextFree->nextFree; + } +} + + +/*********************************************************************** +* cache_region_calloc +* Attempt to allocate a size-byte block in the given region. +* Allocation is first-fit. The free list is already fully coalesced. +* Returns NULL if there is not enough room in the region for the block. +**********************************************************************/ +static void *cache_region_calloc(cache_allocator_region *rgn, size_t size) +{ + cache_allocator_block **blockP; + unsigned int mask; + + // Save mask for allocated block, then round size + // up to CACHE_QUANTUM boundary + mask = cache_allocator_mask_for_size(size); + size = cache_allocator_size_for_mask(mask); + + // Search the free list for a sufficiently large free block. + + for (blockP = &rgn->freeList; + *blockP != NULL; + blockP = &(**blockP).nextFree) + { + cache_allocator_block *block = *blockP; + if (block->size < size) continue; // not big enough + + // block is now big enough. Allocate from it. + + // Slice off unneeded fragment of block, if any, + // and reconnect the free list around block. + if (block->size - size >= CACHE_QUANTUM) { + cache_allocator_block *leftover = + (cache_allocator_block *)(size + (uintptr_t)block); + leftover->size = block->size - size; + leftover->state = (unsigned int)-1; + leftover->nextFree = block->nextFree; + *blockP = leftover; + } else { + *blockP = block->nextFree; + } + + // block is now exactly the right size. + + bzero(block, size); + block->size = mask; // Cache->mask + block->state = 0; // Cache->occupied + + return block; + } + + // No room in this region. + return NULL; +} + + +/*********************************************************************** +* cache_allocator_calloc +* Custom allocator for large method caches (128+ slots) +* The returned cache block already has cache->mask set. +* cache->occupied and the cache contents are zero. +* Cache locks: cacheUpdateLock must be held by the caller +**********************************************************************/ +static void *cache_allocator_calloc(size_t size) +{ + cache_allocator_region *rgn; + + for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) { + void *p = cache_region_calloc(rgn, size); + if (p) { + return p; + } + } + + // No regions or all regions full - make a region and try one more time + // In the unlikely case of a cache over 256KB, it will get its own region. + return cache_region_calloc(cache_allocator_add_region(size), size); +} + + +/*********************************************************************** +* cache_allocator_region_for_block +* Returns the cache allocator region that ptr points into, or NULL. +**********************************************************************/ +static cache_allocator_region *cache_allocator_region_for_block(cache_allocator_block *block) +{ + cache_allocator_region *rgn; + for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) { + if (block >= rgn->start && block < rgn->end) return rgn; + } + return NULL; +} + + +/*********************************************************************** +* cache_allocator_is_block +* If ptr is a live block from the cache allocator, return YES +* If ptr is a block from some other allocator, return NO. +* If ptr is a dead block from the cache allocator, result is undefined. +* Cache locks: cacheUpdateLock must be held by the caller +**********************************************************************/ +static BOOL cache_allocator_is_block(void *ptr) +{ + return (cache_allocator_region_for_block((cache_allocator_block *)ptr) != NULL); +} + +/*********************************************************************** +* cache_allocator_free +* Frees a block allocated by the cache allocator. +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +static void cache_allocator_free(void *ptr) +{ + cache_allocator_block *dead = (cache_allocator_block *)ptr; + cache_allocator_block *cur; + cache_allocator_region *rgn; + + if (! (rgn = cache_allocator_region_for_block(ptr))) { + // free of non-pointer + _objc_inform("cache_allocator_free of non-pointer %p", ptr); + return; + } + + dead->size = cache_allocator_size_for_mask(dead->size); + dead->state = (unsigned int)-1; + + if (!rgn->freeList || rgn->freeList > dead) { + // dead block belongs at front of free list + dead->nextFree = rgn->freeList; + rgn->freeList = dead; + cache_allocator_coalesce(dead); + return; + } + + // dead block belongs in the middle or end of free list + for (cur = rgn->freeList; cur != NULL; cur = cur->nextFree) { + cache_allocator_block *ahead = cur->nextFree; + + if (!ahead || ahead > dead) { + // cur and ahead straddle dead, OR dead belongs at end of free list + cur->nextFree = dead; + dead->nextFree = ahead; + + // coalesce into dead first in case both succeed + cache_allocator_coalesce(dead); + cache_allocator_coalesce(cur); + return; + } + } + + // uh-oh + _objc_inform("cache_allocator_free of non-pointer %p", ptr); +} + + /*********************************************************************** * _cache_print. **********************************************************************/ diff --git a/runtime/objc-exception.m b/runtime/objc-exception.m index 7356d2c..03296f1 100644 --- a/runtime/objc-exception.m +++ b/runtime/objc-exception.m @@ -41,9 +41,6 @@ static objc_exception_functions_t xtab; static void set_default_handlers(); -extern void objc_raise_error(const char *); - - /* * Exported functions */ diff --git a/runtime/objc-file.m b/runtime/objc-file.m index 9704910..df0cde4 100644 --- a/runtime/objc-file.m +++ b/runtime/objc-file.m @@ -27,17 +27,12 @@ #import "objc-private.h" #import #import +#import #include #include #import -/* prototype coming soon to */ -extern char *getsectdatafromheader( - struct mach_header *mhp, - char *segname, - char *sectname, - int *size); /* Returns an array of all the objc headers in the executable * Caller is responsible for freeing. @@ -51,9 +46,9 @@ headerType **_getObjcHeaders() return (headerType**)headers; } -Module _getObjcModules(headerType *head, int *nmodules) +Module _getObjcModules(const headerType *head, int *nmodules) { - unsigned size; + uint32_t size; void *mods = getsectdatafromheader((headerType *)head, SEG_OBJC, SECT_OBJC_MODULES, @@ -64,7 +59,7 @@ Module _getObjcModules(headerType *head, int *nmodules) SEL *_getObjcMessageRefs(headerType *head, int *nmess) { - unsigned size; + uint32_t size; void *refs = getsectdatafromheader ((headerType *)head, SEG_OBJC, "__message_refs", &size); *nmess = size / sizeof(SEL); @@ -73,7 +68,7 @@ SEL *_getObjcMessageRefs(headerType *head, int *nmess) ProtocolTemplate *_getObjcProtocols(headerType *head, int *nprotos) { - unsigned size; + uint32_t size; void *protos = getsectdatafromheader ((headerType *)head, SEG_OBJC, "__protocol", &size); *nprotos = size / sizeof(ProtocolTemplate); @@ -88,38 +83,36 @@ NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs) Class *_getObjcClassRefs(headerType *head, int *nclasses) { - unsigned size; + uint32_t size; void *classes = getsectdatafromheader ((headerType *)head, SEG_OBJC, "__cls_refs", &size); *nclasses = size / sizeof(Class); return (Class *)classes; } -objc_image_info *_getObjcImageInfo(headerType *head) +objc_image_info *_getObjcImageInfo(const headerType *head, uint32_t *sizep) { - unsigned size; - void *info = getsectdatafromheader ((headerType *)head, - SEG_OBJC, "__image_info", &size); - return (objc_image_info *)info; + objc_image_info *info = (objc_image_info *) + getsectdatafromheader(head, SEG_OBJC, "__image_info", sizep); + return info; } -/* returns start of all objective-c info and the size of the data */ -void *_getObjcHeaderData(const headerType *head, unsigned *size) +const struct segment_command *getsegbynamefromheader(const headerType *head, + const char *segname) { - struct segment_command *sgp; - unsigned long i; - - sgp = (struct segment_command *) ((char *)head + sizeof(headerType)); - for(i = 0; i < ((headerType *)head)->ncmds; i++){ - if(sgp->cmd == LC_SEGMENT) - if(strncmp(sgp->segname, "__OBJC", sizeof(sgp->segname)) == 0) { - *size = sgp->filesize; - return (void*)sgp; - } - sgp = (struct segment_command *)((char *)sgp + sgp->cmdsize); - } - *size = 0; - return nil; + const struct segment_command *sgp; + unsigned long i; + + sgp = (const struct segment_command *) ((char *)head + sizeof(headerType)); + for (i = 0; i < head->ncmds; i++){ + if (sgp->cmd == LC_SEGMENT) { + if (strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0) { + return sgp; + } + } + sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize); + } + return NULL; } static const headerType *_getExecHeader (void) @@ -127,13 +120,10 @@ static const headerType *_getExecHeader (void) return (const struct mach_header *)_NSGetMachExecuteHeader(); } -const char *_getObjcHeaderName(headerType *header) +const char *_getObjcHeaderName(const headerType *header) { const headerType *execHeader; const struct fvmlib_command *libCmd, *endOfCmds; - char **argv; - extern char ***_NSGetArgv(); - argv = *_NSGetArgv(); if (header && ((headerType *)header)->filetype == MH_FVMLIB) { execHeader = _getExecHeader(); @@ -153,7 +143,32 @@ const char *_getObjcHeaderName(headerType *header) if ( _dyld_get_image_header(i) == header ) return _dyld_get_image_name(i); } - return argv[0]; + + return (*_NSGetArgv())[0]; } } + +// 1. Find segment with file offset == 0 and file size != 0. This segment's +// contents span the Mach-O header. (File size of 0 is .bss, for example) +// 2. Slide is header's address - segment's preferred address +ptrdiff_t _getImageSlide(const headerType *header) +{ + int i; + const struct segment_command *sgp = + (const struct segment_command *)(header + 1); + + for (i = 0; i < header->ncmds; i++){ + if (sgp->cmd == LC_SEGMENT) { + if (sgp->fileoff == 0 && sgp->filesize != 0) { + return (uintptr_t)header - (uintptr_t)sgp->vmaddr; + } + } + sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize); + } + + // uh-oh + _objc_fatal("could not calculate VM slide for image '%s'", + _getObjcHeaderName(header)); + return 0; // not reached +} diff --git a/runtime/objc-load.m b/runtime/objc-load.m index 75824a5..28de958 100644 --- a/runtime/objc-load.m +++ b/runtime/objc-load.m @@ -49,15 +49,6 @@ extern char * getsectdatafromheader (const headerType * mhp, const char * segnam OBJC_EXPORT void (*callbackFunction)( Class, const char * ); -struct objc_method_list **get_base_method_list(Class cls) { - struct objc_method_list **ptr = ((struct objc_class * )cls)->methodLists; - if (!*ptr) return NULL; - while ( *ptr != 0 && *ptr != END_OF_METHODS_LIST ) { ptr++; } - --ptr; - return ptr; -} - - /********************************************************************************** * objc_loadModule. * diff --git a/runtime/objc-private.h b/runtime/objc-private.h index 6c09b7d..0aca0b4 100644 --- a/runtime/objc-private.h +++ b/runtime/objc-private.h @@ -37,6 +37,9 @@ #import "objc-config.h" #import + #import + #import + #import #define mutex_alloc() (pthread_mutex_t*)calloc(1, sizeof(pthread_mutex_t)) #define mutex_init(m) pthread_mutex_init(m, NULL) #define mutex_lock(m) pthread_mutex_lock(m) @@ -88,6 +91,9 @@ typedef struct { // masks for objc_image_info.flags #define OBJC_IMAGE_IS_REPLACEMENT (1<<0) +#define OBJC_IMAGE_SUPPORTS_GC (1<<1) + + #define _objcHeaderIsReplacement(h) ((h)->info && ((h)->info->flags & OBJC_IMAGE_IS_REPLACEMENT)) /* OBJC_IMAGE_IS_REPLACEMENT: @@ -96,25 +102,32 @@ typedef struct { Do fix up selector refs (@selector points to them) Do fix up class refs (@class and objc_msgSend points to them) Do fix up protocols (@protocol points to them) + Do fix up super_class pointers in classes ([super ...] points to them) Future: do load new classes? Future: do load new categories? Future: do insert new methods on existing classes? Future: do insert new methods on existing categories? */ +#define _objcHeaderSupportsGC(h) ((h)->info && ((h)->info->flags & OBJC_IMAGE_SUPPORTS_GC)) + +/* OBJC_IMAGE_SUPPORTS_GC: + was compiled with -fobjc-gc flag, regardless of whether write-barriers were issued + if executable image compiled this way, then all subsequent libraries etc. must also be this way +*/ // both OBJC_EXPORT headerType ** _getObjcHeaders(); -OBJC_EXPORT Module _getObjcModules(headerType *head, int *nmodules); +OBJC_EXPORT Module _getObjcModules(const headerType *head, int *nmodules); OBJC_EXPORT Class * _getObjcClassRefs(headerType *head, int *nclasses); -OBJC_EXPORT void * _getObjcHeaderData(const headerType *head, unsigned *size); -OBJC_EXPORT const char * _getObjcHeaderName(headerType *head); -OBJC_EXPORT objc_image_info * _getObjcImageInfo(headerType *head); +OBJC_EXPORT const struct segment_command *getsegbynamefromheader(const headerType *head, const char *segname); +OBJC_EXPORT const char * _getObjcHeaderName(const headerType *head); +OBJC_EXPORT objc_image_info * _getObjcImageInfo(const headerType *head, uint32_t *size); +OBJC_EXPORT ptrdiff_t _getImageSlide(const headerType *header); + // internal routines for delaying binding void _objc_resolve_categories_for_class (struct objc_class * cls); -void _objc_bindClassIfNeeded(struct objc_class *cls); -void _objc_bindModuleContainingClass(struct objc_class * cls); // someday a logging facility // ObjC is assigned the range 0xb000 - 0xbfff for first parameter @@ -131,12 +144,11 @@ OBJC_EXPORT SEL * _getObjcMessageRefs(headerType *head, int *nmess); typedef struct _header_info { const headerType * mhdr; - Module mod_ptr; // NOT adjusted by image_slide + Module mod_ptr; // already slid unsigned int mod_count; unsigned long image_slide; - void * objcData; // getObjcHeaderData result - unsigned objcDataSize; // getObjcHeaderData result - objc_image_info * info; // IS adjusted by image_slide + const struct segment_command * objcSegmentHeader; // already slid + objc_image_info * info; // already slid struct _header_info * next; } header_info; OBJC_EXPORT header_info *_objc_headerStart (); @@ -145,78 +157,25 @@ OBJC_EXPORT SEL * _getObjcMessageRefs(headerType *head, int *nmess); OBJC_EXPORT const char *_objcModuleNameAtIndex(int i); OBJC_EXPORT Class objc_getOrigClass (const char *name); - extern struct objc_method_list **get_base_method_list(Class cls); - - OBJC_EXPORT const char *__S(_nameForHeader) (const headerType*); - /* initialize */ - OBJC_EXPORT void _sel_resolve_conflicts(headerType * header, unsigned long slide); - OBJC_EXPORT void _class_install_relationships(Class, long); - OBJC_EXPORT void *_objc_create_zone(void); - - OBJC_EXPORT SEL sel_registerNameNoCopyNoLock(const char *str); + OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy); OBJC_EXPORT void sel_lock(void); OBJC_EXPORT void sel_unlock(void); - /* selector fixup in method lists */ - - #define _OBJC_FIXED_UP ((void *)1771) - - static inline struct objc_method_list *_objc_inlined_fixup_selectors_in_method_list(struct objc_method_list *mlist) - { - unsigned i, size; - Method method; - struct objc_method_list *old_mlist; - - if ( ! mlist ) return (struct objc_method_list *)0; - if ( mlist->obsolete != _OBJC_FIXED_UP ) { - old_mlist = mlist; - size = sizeof(struct objc_method_list) - sizeof(struct objc_method) + old_mlist->method_count * sizeof(struct objc_method); - mlist = malloc_zone_malloc(_objc_create_zone(), size); - memmove(mlist, old_mlist, size); - sel_lock(); - for ( i = 0; i < mlist->method_count; i += 1 ) { - method = &mlist->method_list[i]; - method->method_name = - sel_registerNameNoCopyNoLock((const char *)method->method_name); - } - sel_unlock(); - mlist->obsolete = _OBJC_FIXED_UP; - } - return mlist; - } - - /* method lookup */ - /* -- inline version of class_nextMethodList(Class, void **) -- */ - - static inline struct objc_method_list *_class_inlinedNextMethodList(Class cls, void **it) - { - struct objc_method_list ***iterator; - - iterator = (struct objc_method_list***)it; - if (*iterator == NULL) { - *iterator = &((((struct objc_class *) cls)->methodLists)[0]); - } - else (*iterator) += 1; - // Check for list end - if ((**iterator == NULL) || (**iterator == END_OF_METHODS_LIST)) { - *it = nil; - return NULL; - } - - **iterator = _objc_inlined_fixup_selectors_in_method_list(**iterator); - - // Return method list pointer - return **iterator; - } + /* optional malloc zone for runtime data */ + OBJC_EXPORT malloc_zone_t *_objc_internal_zone(void); + OBJC_EXPORT void *_malloc_internal(size_t size); + OBJC_EXPORT void *_calloc_internal(size_t count, size_t size); + OBJC_EXPORT void *_realloc_internal(void *ptr, size_t size); + OBJC_EXPORT char *_strdup_internal(const char *str); + OBJC_EXPORT void _free_internal(void *ptr); OBJC_EXPORT BOOL class_respondsToMethod(Class, SEL); OBJC_EXPORT IMP class_lookupMethod(Class, SEL); - OBJC_EXPORT IMP class_lookupMethodInMethodList(struct objc_method_list *mlist, SEL sel); - OBJC_EXPORT IMP class_lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name); - OBJC_EXPORT void _objc_insertMethods( struct objc_method_list *mlist, struct objc_method_list ***list ); - OBJC_EXPORT void _objc_removeMethods( struct objc_method_list *mlist, struct objc_method_list ***list ); + OBJC_EXPORT IMP lookupNamedMethodInMethodList(struct objc_method_list *mlist, const char *meth_name); + OBJC_EXPORT void _objc_insertMethods(struct objc_class *cls, struct objc_method_list *mlist); + OBJC_EXPORT void _objc_removeMethods(struct objc_class *cls, struct objc_method_list *mlist); OBJC_EXPORT IMP _cache_getImp(Class cls, SEL sel); OBJC_EXPORT Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp); @@ -234,19 +193,56 @@ OBJC_EXPORT SEL * _getObjcMessageRefs(headerType *head, int *nmess); /* magic */ OBJC_EXPORT Class _objc_getFreedObjectClass (void); +#ifndef OBJC_INSTRUMENTED OBJC_EXPORT const struct objc_cache emptyCache; +#else + OBJC_EXPORT struct objc_cache emptyCache; +#endif OBJC_EXPORT void _objc_flush_caches (Class cls); /* locking */ #define MUTEX_TYPE pthread_mutex_t* #define OBJC_DECLARE_LOCK(MTX) pthread_mutex_t MTX = PTHREAD_MUTEX_INITIALIZER OBJC_EXPORT pthread_mutex_t classLock; + OBJC_EXPORT pthread_mutex_t methodListLock; /* nil handler object */ OBJC_EXPORT id _objc_nilReceiver; OBJC_EXPORT id _objc_setNilReceiver(id newNilReceiver); OBJC_EXPORT id _objc_getNilReceiver(void); + /* C++ interoperability */ + OBJC_EXPORT SEL cxx_construct_sel; + OBJC_EXPORT SEL cxx_destruct_sel; + OBJC_EXPORT const char *cxx_construct_name; + OBJC_EXPORT const char *cxx_destruct_name; + OBJC_EXPORT BOOL object_cxxConstruct(id obj); + OBJC_EXPORT void object_cxxDestruct(id obj); + + /* GC and RTP startup */ + OBJC_EXPORT void gc_init(BOOL on); + OBJC_EXPORT void rtp_init(void); + + /* Write barrier implementations */ + OBJC_EXPORT id objc_assign_strongCast_gc(id val, id *dest); + OBJC_EXPORT id objc_assign_global_gc(id val, id *dest); + OBJC_EXPORT id objc_assign_ivar_gc(id value, id dest, unsigned int offset); + OBJC_EXPORT id objc_assign_strongCast_non_gc(id value, id *dest); + OBJC_EXPORT id objc_assign_global_non_gc(id value, id *dest); + OBJC_EXPORT id objc_assign_ivar_non_gc(id value, id dest, unsigned int offset); + + /* Code modification */ +#if defined(__ppc__) + OBJC_EXPORT size_t objc_write_branch(void *entry, void *target); +#endif + + /* Thread-safe info field */ + OBJC_EXPORT void _class_setInfo(struct objc_class *cls, long set); + OBJC_EXPORT void _class_clearInfo(struct objc_class *cls, long clear); + OBJC_EXPORT void _class_changeInfo(struct objc_class *cls, long set, long clear); + + /* Secure /tmp usage */ + OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid); typedef struct { long addressOffset; @@ -266,7 +262,26 @@ OBJC_EXPORT SEL * _getObjcMessageRefs(headerType *head, int *nmess); #endif +// Settings from environment variables +OBJC_EXPORT int PrintImages; // env OBJC_PRINT_IMAGES +OBJC_EXPORT int PrintLoading; // env OBJC_PRINT_LOAD_METHODS +OBJC_EXPORT int PrintConnecting; // env OBJC_PRINT_CLASS_CONNECTION +OBJC_EXPORT int PrintRTP; // env OBJC_PRINT_RTP +OBJC_EXPORT int PrintGC; // env OBJC_PRINT_GC +OBJC_EXPORT int PrintSharing; // env OBJC_PRINT_SHARING +OBJC_EXPORT int PrintCxxCtors; // env OBJC_PRINT_CXX_CTORS + +OBJC_EXPORT int UseInternalZone; // env OBJC_USE_INTERNAL_ZONE +OBJC_EXPORT int AllowInterposing;// env OBJC_ALLOW_INTERPOSING +OBJC_EXPORT int DebugUnload; // env OBJC_DEBUG_UNLOAD +OBJC_EXPORT int DebugFragileSuperclasses; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES + +OBJC_EXPORT int ForceGC; // env OBJC_FORCE_GC +OBJC_EXPORT int ForceNoGC; // env OBJC_FORCE_NO_GC +OBJC_EXPORT int CheckFinalizers; // env OBJC_CHECK_FINALIZERS + +OBJC_EXPORT BOOL UseGC; // equivalent to calling objc_collecting_enabled() static __inline__ int _objc_strcmp(const unsigned char *s1, const unsigned char *s2) { unsigned char c1, c2; @@ -306,5 +321,12 @@ typedef struct { #define ISINITIALIZING(cls) ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZING) != 0) +// Attribute for global variables to keep them out of bss storage +// To save one page per non-Objective-C process, variables used in +// the "Objective-C not used" case should not be in bss storage. +// On Tiger, this reduces the number of touched pages for each +// CoreFoundation-only process from three to two. See #3857126 and #3857136. +#define NOBSS __attribute__((section("__DATA,__data"))) + #endif /* _OBJC_PRIVATE_H_ */ diff --git a/runtime/objc-rtp-sym.s b/runtime/objc-rtp-sym.s new file mode 100644 index 0000000..9556752 --- /dev/null +++ b/runtime/objc-rtp-sym.s @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + objc-rtp-sym.s + Copyright 2004, Apple Computer, Inc. + Author: Jim Laskey + + This file is used to regenerate symbols for routines in the ObjC runtime pages. + + Build this file with: + cc objc-rtp-syms.c -c -o objc-rtp-syms.o.temp + ld -seg1addr kRTPagesLo objc-rtp-syms.o.temp -r -o objc-rtp-syms.o + and then use `-sectcreate __DATA __commpage objc-rtp-syms.o` when linking. + + IMPORTANT - declarations need to be declared in address order. +*/ + +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" + + .text + .globl _objc_kIgnore_rtp + .org kRTAddress_ignoredSelector-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo +_objc_kIgnore_rtp: + nop + + // note that macro expansion does not work well with .org, had to go long hand - jml + + .globl _objc_assign_strongCast_rtp + .org kRTAddress_objc_assign_strongCast-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo +_objc_assign_strongCast_rtp: + nop + + .globl _objc_assign_global_rtp + .org kRTAddress_objc_assign_global-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo +_objc_assign_global_rtp: + nop + + .globl _objc_assign_ivar_rtp + .org kRTAddress_objc_assign_ivar-kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo +_objc_assign_ivar_rtp: + nop + + .globl _objc_msgSend_rtp + .org kRTAddress_objc_msgSend -kRTPagesLo // unnormalized with ld -seg1addr kRTPagesLo +_objc_msgSend_rtp: + nop + + // Extra symbol at the end of the RTP area. + // This pacifies gdb and other debugging tools. + .globl _objc_msgSend_rtp_exit + .org kRTPagesHi - kRTPagesLo // unnormalized with ld -seg1adr kRTPagesLo + + .data + .long 0 diff --git a/runtime/objc-rtp.h b/runtime/objc-rtp.h new file mode 100644 index 0000000..faae2ba --- /dev/null +++ b/runtime/objc-rtp.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + objc-rtp.h + Copyright 2004, Apple Computer, Inc. + Author: Jim Laskey + + Layout of the "objc runtime pages", an fixed area + in high memory that can be reached via an absolute branch. + Basic idea is that, on ppc, a single "bla" instruction + (branch & link to absolute address) + can be issued by the compiler to get to high-value routines + in the runtime, including the basic messenger and to the + assignment helper intrinsics issued under -fobjc-gc. + The implementation of the intrinsics is optimized based + on whether the application (process) is running with GC enabled + or not. +*/ + +#ifndef _OBJC_RTP_H_ +#define _OBJC_RTP_H_ + +/********************************************************************* + Layout of the runtime page. + + Some of these values must NEVER BE CHANGED, including: + kRTPagesLo + kRTPagesHi + kRTPagesMaxSize + kRTSize_objc_msgSend + kRTSize_objc_assign_ivar + kRTAddress_objc_msgSend ppc 0xfffeff00 + kRTAddress_objc_assign_ivar ppc 0xfffefec0 + +*********************************************************************/ + +#undef OBJC_SIZE_T +#undef OBJC_INTPTR_T +#undef OBJC_UINTPTR_T + +#ifdef OBJC_ASM +#define OBJC_SIZE_T(x) (x) +#define OBJC_INTPTR_T(x) (x) +#define OBJC_UINTPTR_T(x) (x) +#else +#define OBJC_SIZE_T(x) ((size_t)(x)) +#define OBJC_INTPTR_T(x) ((intptr_t)(x)) +#define OBJC_UINTPTR_T(x) ((uintptr_t)(x)) +#endif + +// Size of RTP area, in bytes (0x1000 = 4k bytes = 1 page) +#define kRTPagesMaxSize OBJC_SIZE_T(4 * 0x1000) // size reserved for runtime +#define kRTPagesSize OBJC_SIZE_T(1 * 0x1000) // size actually used + +// Address of RTP area: [kRTPagesLo..kRTPagesHi) +// These are defined in negative numbers to reflect an offset from the highest address, +// which is what the ppc "bla" instruction is defined to do with "negative" addresses. +// This definition will establish the correct entry points for 64-bit if this mechanism +// is adopted for that architecture as well. +#if defined(__ppc__) +# define kRTPagesLo OBJC_UINTPTR_T(-20 * 0x1000) // ppc 0xfffec000 +#elif defined(__i386__) +# define kRTPagesLo OBJC_UINTPTR_T(-24 * 0x1000) // i386 0xfffe8000 +#else + #error unknown architecture +#endif +#define kRTPagesHi OBJC_UINTPTR_T(kRTPagesLo + kRTPagesMaxSize) // ppc 0xffff0000 + +// Sizes reserved for functions in the RTP area, in bytes +#define kRTSize_objc_msgSend OBJC_SIZE_T(0x0100) +#define kRTSize_objc_assign_ivar OBJC_SIZE_T(0x0040) +#define kRTSize_objc_assign_global OBJC_SIZE_T(0x0010) +#define kRTSize_objc_assign_strongCast OBJC_SIZE_T(0x0010) + +// Absolute address of functions in the RTP area +// These count backwards from the hi end of the RTP area. +// New additions are added to the low side. +#define kRTAddress_objc_msgSend OBJC_UINTPTR_T(kRTPagesHi - kRTSize_objc_msgSend) // ppc 0xfffeff00 +#define kRTAddress_objc_assign_ivar OBJC_UINTPTR_T(kRTAddress_objc_msgSend - kRTSize_objc_assign_ivar) // ppc 0xfffefec0 +#define kRTAddress_objc_assign_global OBJC_UINTPTR_T(kRTAddress_objc_assign_ivar - kRTSize_objc_assign_global) // ppc 0xfffefeb0 +#define kRTAddress_objc_assign_strongCast OBJC_UINTPTR_T(kRTAddress_objc_assign_global - kRTSize_objc_assign_strongCast) // ppc 0xfffefea0 + +// Sizes reserved for data in the RTP area, in bytes +#define kRTSize_ignoredSelector OBJC_SIZE_T(19) // 1+strlen("") + +// Absolute address of data in the RTP area +// These count forwards from the lo end of the RTP area. +// These are not locked down and can be moved if necessary. +#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize) + +#define kIgnore kRTAddress_ignoredSelector // ppc 0xfffef000 + +/********************************************************************* + End of runtime page layout. +*********************************************************************/ + +#endif diff --git a/runtime/objc-rtp.m b/runtime/objc-rtp.m new file mode 100644 index 0000000..2dd4071 --- /dev/null +++ b/runtime/objc-rtp.m @@ -0,0 +1,327 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + objc-rtp.m + Copyright 2004, Apple Computer, Inc. + Author: Jim Laskey + + Implementation of the "objc runtime pages", an fixed area + in high memory that can be reached via an absolute branch. +*/ + +#import "objc-rtp.h" +#import "objc-private.h" +#import "objc-auto.h" + +#import +#import + + +// Local prototypes + +static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize); +static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name, void *gc_code, void *non_gc_code); + +#if defined(__ppc__) +// from Libc, but no prototype yet (#3850825) +extern void sys_icache_invalidate(const void * newcode, size_t len); + +static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns); +#endif + + +#if !defined(__ppc__) + +__private_extern__ void rtp_init(void) +{ + if (PrintRTP) { + _objc_inform("RTP: no rtp implementation for this platform"); + } +} + +#else + +/********************************************************************** +* rtp_init +* Allocate and initialize the Objective-C runtime pages. +* Kills the process if something goes wrong. +**********************************************************************/ +__private_extern__ void rtp_init(void) +{ + kern_return_t ret; + vm_address_t objcRTPages = (vm_address_t)(kRTPagesHi - kRTPagesSize); + + if (PrintRTP) { + _objc_inform("RTP: initializing rtp at [%p..%p)", + objcRTPages, kRTPagesHi); + } + + // unprotect the ObjC runtime pages for writing + ret = vm_protect(mach_task_self(), + objcRTPages, kRTPagesSize, + FALSE, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE); + + if (ret != KERN_SUCCESS) { + if (PrintRTP) { + _objc_inform("RTP: warning: libSystem/kernel did not allocate Objective-C runtime pages; continuing anyway"); + } + return; + } + + // initialize code in ObjC runtime pages + rtp_set_up_objc_msgSend(kRTAddress_objc_msgSend, kRTSize_objc_msgSend); + + rtp_set_up_other(kRTAddress_objc_assign_ivar, kRTSize_objc_assign_ivar, + "objc_assign_ivar", objc_assign_ivar_gc, objc_assign_ivar_non_gc); + + rtp_set_up_other(kRTAddress_objc_assign_global, kRTSize_objc_assign_global, + "objc_assign_global", objc_assign_global_gc, objc_assign_global_non_gc); + + rtp_set_up_other(kRTAddress_objc_assign_strongCast, kRTSize_objc_assign_strongCast, + "objc_assign_strongCast", objc_assign_strongCast_gc, objc_assign_strongCast_non_gc); + + // initialize data in ObjC runtime pages + strcpy((char *)kIgnore, ""); + + // re-protect the ObjC runtime pages for execution + ret = vm_protect(mach_task_self(), + objcRTPages, kRTPagesSize, + FALSE, VM_PROT_READ | VM_PROT_EXECUTE); + if (ret != KERN_SUCCESS) { + _objc_inform("RTP: Could not re-protect Objective-C runtime pages!"); + } +} + + +/********************************************************************** +* rtp_set_up_objc_msgSend +* +* Construct the objc runtime page version of objc_msgSend +* address is the entry point of the new implementation. +* maxsize is the number of bytes available for the new implementation. +**********************************************************************/ +static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) +{ +#if defined(__ppc__) + // Location in the runtime pages of the new function. + unsigned *buffer = (unsigned *)address; + + // Location of the original implementation. + // objc_msgSend is simple enough to copy directly + unsigned *code = (unsigned *)objc_msgSend; + + // If building an instrumented or profiled runtime, simply branch + // directly to the full implementation. +#if defined(OBJC_INSTRUMENTED) || defined(PROFILE) + unsigned written = objc_write_branch(buffer, code); + sys_icache_invalidate(buffer, written*4); + if (PrintRTP) { + _objc_inform("RTP: instrumented or profiled libobjc - objc_msgSend " + "in RTP at %p is a %d instruction branch", + buffer, written); + } + return; +#endif + + // If function interposing is enabled, call the full implementation + // via a dyld-recognizable stub. + if (AllowInterposing) { + extern void objc_msgSend_stub(void); + unsigned written = objc_write_branch(buffer, objc_msgSend_stub); + sys_icache_invalidate(buffer, written*4); + if (PrintRTP) { + _objc_inform("RTP: interposing enabled - objc_msgSend " + "in RTP at %p is a %d instruction branch", + buffer, written); + } + return; + } + + if (PrintRTP) { + _objc_inform("RTP: writing objc_msgSend at [%p..%p) ...", + address, address+maxsize); + } + + // Copy instructions from function to runtime pages + // i is the number of INSTRUCTIONS written so far + size_t max_insns = maxsize / sizeof(unsigned); + size_t i = rtp_copy_code(buffer, code, max_insns); + if (i > max_insns) { + // objc_msgSend didn't fit in the alloted space. + // Branch to ordinary objc_msgSend instead so the program won't crash. + i = objc_write_branch(buffer, code); + sys_icache_invalidate(buffer, i*4); + _objc_inform("RTP: objc_msgSend is too large to fit in the " + "runtime pages (%d bytes available)", maxsize); + return; + } + + { + // Replace load of _objc_nilReceiver. + // This assumes that the load of _objc_nilReceiver + // immediately follows the LAST `mflr r0` in objc_msgSend, + // and that the original load sequence is six instructions long. + + // instructions used to load _objc_nilReceiver + const unsigned op_mflr_r0 = 0x7c0802a6u; + const unsigned op_lis_r11 = 0x3d600000u; + const unsigned op_lwz_r11 = 0x816b0000u; + const unsigned op_nop = 0x60000000u; + + // get address of _objc_nilReceiver, and its lo and hi halves + unsigned address = (unsigned)&_objc_nilReceiver; + signed lo = (signed short)address; + signed ha = (address - lo) >> 16; + + // search for mflr instruction + int j; + for (j = i; j-- != 0; ) { + if (buffer[j] == op_mflr_r0) { + // replace with lis lwz nop nop sequence + buffer[j + 0] = op_lis_r11 | (ha & 0xffff); + buffer[j + 1] = op_nop; + buffer[j + 2] = op_nop; + buffer[j + 3] = op_lwz_r11 | (lo & 0xffff); + buffer[j + 4] = op_nop; + buffer[j + 5] = op_nop; + break; + } + } + } + + // branch to the cache miss code + i += objc_write_branch(buffer + i, code + i); + + // flush the instruction cache + sys_icache_invalidate(buffer, i*4); + + if (PrintRTP) { + _objc_inform("RTP: wrote objc_msgSend at [%p..%p)", + address, address + i*sizeof(unsigned)); + } + +#elif defined(__i386__) + #warning needs implementation +#else + #error unknown architecture +#endif +} + + +/********************************************************************** +* rtp_set_up_other +* +* construct the objc runtime page version of the supplied code +* address is the entry point of the new implementation. +* maxsize is the number of bytes available for the new implementation. +* name is the c string name of the routine being set up. +* gc_code is the code to use if collecting is enabled (assumed to be large and requiring a branch.) +* non_gc_code is the code to use if collecting is not enabled (assumed to be small enough to copy.) +**********************************************************************/ +static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name, void *gc_code, void *non_gc_code) { +#if defined(__ppc__) + // location in the runtime pages of this function + unsigned *buffer = (unsigned *)address; + + // Location of the original implementation. + unsigned *code = (unsigned *)(objc_collecting_enabled() ? gc_code : non_gc_code); + + if (objc_collecting_enabled()) { + unsigned written = objc_write_branch(buffer, code); + sys_icache_invalidate(buffer, written*4); + if (PrintRTP) { + _objc_inform("RTP: %s in RTP at %p is a %d instruction branch", + name, buffer, written); + } + return; + } + + if (PrintRTP) { + _objc_inform("RTP: writing %s at [%p..%p) ...", + name, address, address + maxsize); + } + + // Copy instructions from function to runtime pages + // i is the number of INSTRUCTIONS written so far + unsigned max_insns = maxsize / sizeof(unsigned); + unsigned i = rtp_copy_code(buffer, code, max_insns); + if (i > max_insns) { + // code didn't fit in the alloted space. + // Branch to ordinary objc_assign_ivar instead so the program won't crash. + i = objc_write_branch(buffer, code); + sys_icache_invalidate(buffer, i*4); + _objc_inform("RTP: %s is too large to fit in the " + "runtime pages (%d bytes available)", name, maxsize); + return; + } + + // flush the instruction cache + sys_icache_invalidate(buffer, i*4); + + if (PrintRTP) { + _objc_inform("RTP: wrote %s at [%p..%p)", + name, address, address + i * sizeof(unsigned)); + } + +#elif defined(__i386__) + #warning needs implementation +#else // defined(architecture) + #error unknown architecture +#endif // defined(architecture) +} + + +#if defined(__ppc__) + +/********************************************************************** +* rtp_copy_code +* +* Copy blr-terminated PPC instructions from source to dest. +* If a blr is reached then that blr is copied, and the return value is +* the number of instructions copied ( <= max_insns ) +* If no blr is reached then exactly max_insns instructions are copied, +* and the return value is max_insns+1. +**********************************************************************/ +static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns) +{ + const unsigned op_blr = 0x4e800020u; + size_t i; + + // copy instructions until blr is found + for (i = 0; i < max_insns; i++) { + dest[i] = source[i]; + if (source[i] == op_blr) break; + } + + // return number of instructions copied + // OR max_insns+1 if no blr was found + return i + 1; +} + +// defined(__ppc__) +#endif + +// defined(__ppc__) || defined(__i386__) +#endif diff --git a/runtime/objc-runtime.h b/runtime/objc-runtime.h index ab83dc6..9950a66 100644 --- a/runtime/objc-runtime.h +++ b/runtime/objc-runtime.h @@ -61,7 +61,11 @@ struct objc_module { struct objc_super { id receiver; +#ifndef __cplusplus Class class; +#else + Class super_class; +#endif }; /* @@ -142,6 +146,7 @@ OBJC_EXPORT void *objc_getClasses(void); #endif OBJC_EXPORT id objc_lookUpClass(const char *name); +OBJC_EXPORT id objc_getRequiredClass(const char *name); OBJC_EXPORT void objc_addClass(Class myClass); /* customizing the error handling for objc_getClass/objc_getMetaClass */ diff --git a/runtime/objc-runtime.m b/runtime/objc-runtime.m index bb204b8..8687470 100644 --- a/runtime/objc-runtime.m +++ b/runtime/objc-runtime.m @@ -29,14 +29,118 @@ * **********************************************************************/ +/*********************************************************************** + * Class loading and connecting (GrP 2004-2-11) + * + * When images are loaded (during program startup or otherwise), the + * runtime needs to load classes and categories from the images, connect + * classes to superclasses and categories to parent classes, and call + * +load methods. + * + * The Objective-C runtime can cope with classes arriving in any order. + * That is, a class may be discovered by the runtime before some + * superclass is known. To handle out-of-order class loads, the + * runtime uses a "pending class" system. + * + * (Historical note) + * Panther and earlier: many classes arrived out-of-order because of + * the poorly-ordered callback from dyld. However, the runtime's + * pending mechanism only handled "missing superclass" and not + * "present superclass but missing higher class". See Radar #3225652. + * Tiger: The runtime's pending mechanism was augmented to handle + * arbitrary missing classes. In addition, dyld was rewritten and + * now sends the callbacks in strictly bottom-up link order. + * The pending mechanism may now be needed only for rare and + * hard to construct programs. + * (End historical note) + * + * A class when first seen in an image is considered "unconnected". + * It is stored in `unconnected_class_hash`. If all of the class's + * superclasses exist and are already "connected", then the new class + * can be connected to its superclasses and moved to `class_hash` for + * normal use. Otherwise, the class waits in `unconnected_class_hash` + * until the superclasses finish connecting. + * + * A "connected" class is + * (1) in `class_hash`, + * (2) connected to its superclasses, + * (3) has no unconnected superclasses, + * (4) is otherwise initialized and ready for use, and + * (5) is eligible for +load if +load has not already been called. + * + * An "unconnected" class is + * (1) in `unconnected_class_hash`, + * (2) not connected to its superclasses, + * (3) has an immediate superclass which is either missing or unconnected, + * (4) is not ready for use, and + * (5) is not yet eligible for +load. + * + * Image mapping is NOT CURRENTLY THREAD-SAFE with respect to just about + * * * anything. Image mapping IS RE-ENTRANT in several places: superclass + * lookup may cause ZeroLink to load another image, and +load calls may + * cause dyld to load another image. + * + * Image mapping sequence: + * + * Read all classes in all new images. + * Add them all to unconnected_class_hash. + * Fix up any pended classrefs referring to them. + * Attach any pending categories. + * Read all categories in all new images. + * Attach categories whose parent class exists (connected or not), + * and pend the rest. + * Mark them all eligible for +load (if implemented), even if the + * parent class is missing. + * Try to connect all classes in all new images. + * If the superclass is missing, pend the class + * If the superclass is unconnected, try to recursively connect it + * If the superclass is connected: + * connect the class + * mark the class eligible for +load, if implemented + * connect any pended subclasses of the class + * Resolve selector refs and class refs in all new images. + * Class refs whose classes still do not exist are pended. + * Fix up protocol objects in all new images. + * Call +load for classes and categories. + * May include classes or categories that are not in these images, + * but are newly eligible because of these image. + * Class +loads will be called superclass-first because of the + * superclass-first nature of the connecting process. + * Category +load needs to be deferred until the parent class is + * connected and has had its +load called. + * + * Performance: all classes are read before any categories are read. + * Fewer categories need be pended for lack of a parent class. + * + * Performance: all categories are attempted to be attached before + * any classes are connected. Fewer class caches need be flushed. + * (Unconnected classes and their respective subclasses are guaranteed + * to be un-messageable, so their caches will be empty.) + * + * Performance: all classes are read before any classes are connected. + * Fewer classes need be pended for lack of a superclass. + * + * Correctness: all selector and class refs are fixed before any + * protocol fixups or +load methods. libobjc itself contains selector + * and class refs which are used in protocol fixup and +load. + * + * Correctness: +load methods are scheduled in bottom-up link order. + * This constraint is in addition to superclass order. Some +load + * implementations expect to use another class in a linked-to library, + * even if the two classes don't share a direct superclass relationship. + * + **********************************************************************/ + + /*********************************************************************** * Imports. **********************************************************************/ - #include #include -#include +#include +#include +#include // project headers first, otherwise we get the installed ones #import "objc-class.h" @@ -46,9 +150,19 @@ #import "objc-private.h" #import #import +#import "objc-rtp.h" +#import "objc-auto.h" #include #include +#include +#include +#include + +/* NXHashTable SPI */ +OBJC_EXPORT unsigned _NXHashCapacity(NXHashTable *table); +OBJC_EXPORT void _NXHashRehashToCapacity(NXHashTable *table, unsigned newCapacity); + OBJC_EXPORT Class _objc_getNonexistentClass(void); @@ -70,19 +184,32 @@ OBJC_EXPORT Class getOriginalClassForPosingClass(Class); typedef struct _objc_unresolved_category { struct _objc_unresolved_category * next; - struct objc_category * cat; + struct objc_category * cat; // may be NULL long version; - int bindme; } _objc_unresolved_category; -typedef struct _PendingClass +typedef struct _PendingSubclass +{ + struct objc_class *subclass; // subclass to finish connecting; may be NULL + struct _PendingSubclass *next; +} PendingSubclass; + +typedef struct _PendingClassRef { - struct objc_class * * ref; - struct objc_class * classToSetUp; - const char * nameof_superclass; - int version; - struct _PendingClass * next; -} PendingClass; + struct objc_class **ref; // class reference to fix up; may be NULL + struct _PendingClassRef *next; +} PendingClassRef; + +struct loadable_class { + struct objc_class *cls; // may be NULL + IMP method; +}; + +struct loadable_category { + struct objc_category *cat; // may be NULL + IMP method; +}; + /*********************************************************************** * Exports. @@ -94,15 +221,45 @@ void (*callbackFunction)(Class, const char *) = 0; // Lock for class hashtable OBJC_DECLARE_LOCK (classLock); -// Condition for logging load progress -static int LaunchingDebug = -1; // env "LaunchingDebug" -static int PrintBinding = -1; // env "OBJC_PRINT_BIND" +// Settings from environment variables +__private_extern__ int PrintImages = -1; // env OBJC_PRINT_IMAGES +__private_extern__ int PrintLoading = -1; // env OBJC_PRINT_LOAD_METHODS +__private_extern__ int PrintConnecting = -1; // env OBJC_PRINT_CONNECTION +__private_extern__ int PrintRTP = -1; // env OBJC_PRINT_RTP +__private_extern__ int PrintGC = -1; // env OBJC_PRINT_GC +__private_extern__ int PrintSharing = -1; // env OBJC_PRINT_SHARING +__private_extern__ int PrintCxxCtors = -1; // env OBJC_PRINT_CXX_CTORS + +__private_extern__ int UseInternalZone = -1; // env OBJC_USE_INTERNAL_ZONE +__private_extern__ int AllowInterposing = -1;// env OBJC_ALLOW_INTERPOSING + +__private_extern__ int DebugUnload = -1; // env OBJC_DEBUG_UNLOAD +__private_extern__ int DebugFragileSuperclasses = -1; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES + +__private_extern__ int ForceGC = -1; // env OBJC_FORCE_GC +__private_extern__ int ForceNoGC = -1; // env OBJC_FORCE_NO_GC +__private_extern__ int CheckFinalizers = -1; // env OBJC_CHECK_FINALIZERS // objc's key for pthread_getspecific -pthread_key_t _objc_pthread_key; +__private_extern__ pthread_key_t _objc_pthread_key = 0; + +// List of classes that need +load called (pending superclass +load) +// This list always has superclasses first because of the way it is constructed +static struct loadable_class *loadable_classes NOBSS = NULL; +static int loadable_classes_used NOBSS = 0; +static int loadable_classes_allocated NOBSS = 0; + +// List of categories that need +load called (pending parent class +load) +static struct loadable_category *loadable_categories NOBSS = NULL; +static int loadable_categories_used NOBSS = 0; +static int loadable_categories_allocated NOBSS = 0; + +// Selectors for which @selector() doesn't work +__private_extern__ SEL cxx_construct_sel = NULL; +__private_extern__ SEL cxx_destruct_sel = NULL; +__private_extern__ const char *cxx_construct_name = ".cxx_construct"; +__private_extern__ const char *cxx_destruct_name = ".cxx_destruct"; -// Is every library up to now prebound? -static int all_modules_prebound = 0; /*********************************************************************** * Function prototypes internal to this module. @@ -114,33 +271,34 @@ static int _objc_defaultClassHandler (const char * clsName); static void _objcTweakMethodListPointerForClass (struct objc_class * cls); static void _objc_add_category_flush_caches(struct objc_class * cls, struct objc_category * category, int version); static void _objc_add_category(struct objc_class * cls, struct objc_category * category, int version); -static void _objc_register_category (struct objc_category * cat, long version, int bindme); -static void _objc_add_categories_from_image (header_info * hi); +static void _objc_register_category (struct objc_category * cat, long version); +static void _objc_read_categories_from_image (header_info * hi); static const header_info * _headerForClass (struct objc_class * cls); -static PendingClass * newPending (void); static NXMapTable * pendingClassRefsMapTable (void); -static void _objc_add_classes_from_image (NXHashTable * clsHash, header_info * hi); -static void _objc_fixup_string_objects_for_image(header_info * hi); +static NXMapTable * pendingSubclassesMapTable (void); +static void _objc_read_classes_from_image (header_info * hi); static void _objc_map_class_refs_for_image (header_info * hi); -static void map_selrefs (SEL * sels, unsigned int cnt); -static void map_method_descs (struct objc_method_description_list * methods); static void _objc_fixup_protocol_objects_for_image (header_info * hi); -static void _objc_bindModuleContainingCategory(Category cat); static void _objc_fixup_selector_refs (const header_info * hi); -static void _objc_call_loads_for_image (header_info * header); -static void _objc_checkForPendingClassReferences (struct objc_class * cls); -static void _objc_map_image(headerType *mh, unsigned long vmaddr_slide); -static void _objc_unmap_image(headerType *mh, unsigned long vmaddr_slide); +static void _objc_unmap_image(const headerType *mh); +static BOOL connect_class(struct objc_class *cls); +static void add_category_to_loadable_list(struct objc_category *cat); +static vm_range_t get_shared_range(vm_address_t start, vm_address_t end); +static void offer_shared_range(vm_address_t start, vm_address_t end); +static void install_shared_range(vm_range_t remote, vm_address_t local); +static void clear_shared_range_file_cache(void); + /*********************************************************************** * Static data internal to this module. **********************************************************************/ // we keep a linked list of header_info's describing each image as told to us by dyld -static header_info * FirstHeader = 0; +static header_info *FirstHeader NOBSS = 0; // NULL means empty list +static header_info *LastHeader NOBSS = 0; // NULL means invalid; recompute it // Hash table of classes -static NXHashTable * class_hash = 0; +static NXHashTable * class_hash NOBSS = 0; static NXHashTablePrototype classHashPrototype = { (unsigned (*) (const void *, const void *)) classHash, @@ -148,6 +306,9 @@ static NXHashTablePrototype classHashPrototype = NXNoEffectFree, 0 }; +// Hash table of unconnected classes +static NXHashTable *unconnected_class_hash NOBSS = NULL; + // Exported copy of class_hash variable (hook for debugging tools) NXHashTable *_objc_debug_class_hash = NULL; @@ -159,12 +320,14 @@ static int (*objc_classHandler) (const char *) = _objc_defaultClassHandler; static BOOL (*_objc_classLoader)(const char *) = NULL; // Category and class registries +// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles +// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove static NXMapTable * category_hash = NULL; - -static int Postpone_install_relationships = 0; - -static NXMapTable * pendingClassRefsMap = 0; +// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles +// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove +static NXMapTable * pendingClassRefsMap = NULL; +static NXMapTable * pendingSubclassesMap = NULL; /*********************************************************************** * objc_dump_class_hash. Log names of all known classes. @@ -212,6 +375,49 @@ static int classIsEqual (void * info, return _objc_strcmp(name->name, cls->name) == 0; } + +/*********************************************************************** +* NXMapKeyCopyingInsert +* Like NXMapInsert, but strdups the key if necessary. +* Used to prevent stale pointers when bundles are unloaded. +**********************************************************************/ +static void *NXMapKeyCopyingInsert(NXMapTable *table, const void *key, const void *value) +{ + void *realKey; + void *realValue = NULL; + + if ((realKey = NXMapMember(table, key, &realValue)) != NX_MAPNOTAKEY) { + // key DOES exist in table - use table's key for insertion + } else { + // key DOES NOT exist in table - copy the new key before insertion + realKey = _strdup_internal(key); + } + return NXMapInsert(table, realKey, value); +} + + +/*********************************************************************** +* NXMapKeyFreeingRemove +* Like NXMapRemove, but frees the existing key if necessary. +* Used to prevent stale pointers when bundles are unloaded. +**********************************************************************/ +static void *NXMapKeyFreeingRemove(NXMapTable *table, const void *key) +{ + void *realKey; + void *realValue = NULL; + + if ((realKey = NXMapMember(table, key, &realValue)) != NX_MAPNOTAKEY) { + // key DOES exist in table - remove pair and free key + realValue = NXMapRemove(table, realKey); + _free_internal(realKey); // the key from the table, not necessarily the one given + return realValue; + } else { + // key DOES NOT exist in table - nothing to do + return NULL; + } +} + + /*********************************************************************** * _objc_init_class_hash. Return the class lookup table, create it if * necessary. @@ -222,15 +428,17 @@ void _objc_init_class_hash (void) if (class_hash) return; - // Provide a generous initial capacity to cut down on rehashes - // at launch time. A smallish Foundation+AppKit program will have + // class_hash starts small, with only enough capacity for libobjc itself. + // If a second library is found by map_images(), class_hash is immediately + // resized to capacity 1024 to cut down on rehashes. + // Old numbers: A smallish Foundation+AppKit program will have // about 520 classes. Larger apps (like IB or WOB) have more like // 800 classes. Some customers have massive quantities of classes. // Foundation-only programs aren't likely to notice the ~6K loss. class_hash = NXCreateHashTableFromZone (classHashPrototype, - 1024, + 16, nil, - _objc_create_zone ()); + _objc_internal_zone ()); _objc_debug_class_hash = class_hash; } @@ -293,43 +501,92 @@ void objc_setClassHandler (int (*userSuppliedHandler) (const char *)) objc_classHandler = userSuppliedHandler; } + /*********************************************************************** -* objc_getClass. Return the id of the named class. If the class does -* not exist, call _objc_classLoader and then objc_classHandler, either of -* which may create a new class. -* Warning: doesn't work if aClassName is the name of a posed-for class's isa! +* look_up_class +* Map a class name to a class using various methods. +* This is the common implementation of objc_lookUpClass and objc_getClass, +* and is also used internally to get additional search options. +* Sequence: +* 1. class_hash +* 2. unconnected_class_hash (optional) +* 3. classLoader callback +* 4. classHandler callback (optional) **********************************************************************/ -id objc_getClass (const char * aClassName) +static id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler) { - struct objc_class cls; - id ret; + BOOL includeClassLoader = YES; // class loader cannot be skipped + id result = nil; + struct objc_class query; - cls.name = aClassName; + query.name = aClassName; - // Check the hash table - OBJC_LOCK (&classLock); - ret = (id) NXHashGet (class_hash, &cls); - OBJC_UNLOCK (&classLock); + retry: - // If not found, go call objc_classLoader and try again - if (!ret && _objc_classLoader && (*_objc_classLoader)(aClassName)) - { + if (!result && class_hash) { + // Check ordinary classes OBJC_LOCK (&classLock); - ret = (id) NXHashGet (class_hash, &cls); + result = (id)NXHashGet(class_hash, &query); OBJC_UNLOCK (&classLock); } - // If not found, go call objc_classHandler and try again - if (!ret && (*objc_classHandler)(aClassName)) - { - OBJC_LOCK (&classLock); - ret = (id) NXHashGet (class_hash, &cls); - OBJC_UNLOCK (&classLock); + if (!result && includeUnconnected && unconnected_class_hash) { + // Check not-yet-connected classes + OBJC_LOCK(&classLock); + result = (id)NXHashGet(unconnected_class_hash, &query); + OBJC_UNLOCK(&classLock); + } + + if (!result && includeClassLoader && _objc_classLoader) { + // Try class loader callback + if ((*_objc_classLoader)(aClassName)) { + // Re-try lookup without class loader + includeClassLoader = NO; + goto retry; + } + } + + if (!result && includeClassHandler && objc_classHandler) { + // Try class handler callback + if ((*objc_classHandler)(aClassName)) { + // Re-try lookup without class handler or class loader + includeClassLoader = NO; + includeClassHandler = NO; + goto retry; + } } - return ret; + return result; +} + + +/*********************************************************************** +* objc_getClass. Return the id of the named class. If the class does +* not exist, call _objc_classLoader and then objc_classHandler, either of +* which may create a new class. +* Warning: doesn't work if aClassName is the name of a posed-for class's isa! +**********************************************************************/ +id objc_getClass (const char * aClassName) +{ + // NO unconnected, YES class handler + return look_up_class(aClassName, NO, YES); } + +/*********************************************************************** +* objc_getRequiredClass. +* Same as objc_getClass, but kills the process if the class is not found. +* This is used by ZeroLink, where failing to find a class would be a +* compile-time link error without ZeroLink. +**********************************************************************/ +id objc_getRequiredClass(const char *aClassName) +{ + id cls = objc_getClass(aClassName); + if (!cls) _objc_fatal("link error: class '%s' not found.", aClassName); + return cls; +} + + /*********************************************************************** * objc_lookUpClass. Return the id of the named class. * If the class does not exist, call _objc_classLoader, which may create @@ -339,27 +596,8 @@ id objc_getClass (const char * aClassName) **********************************************************************/ id objc_lookUpClass (const char * aClassName) { - struct objc_class cls; - id ret; - - cls.name = aClassName; - - // Check the hash table - OBJC_LOCK (&classLock); - ret = (id) NXHashGet (class_hash, &cls); - OBJC_UNLOCK (&classLock); - - // If not found, go call objc_classLoader and try again - if (!ret && _objc_classLoader && (*_objc_classLoader)(aClassName)) - { - OBJC_LOCK (&classLock); - ret = (id) NXHashGet (class_hash, &cls); - OBJC_UNLOCK (&classLock); - } - - // Don't call objc_classHandler; it's only used by objc_getClass(). - - return ret; + // NO unconnected, NO class handler + return look_up_class(aClassName, NO, NO); } /*********************************************************************** @@ -384,7 +622,7 @@ id objc_getMetaClass (const char * aClassName) * objc_addClass. Add the specified class to the table of known classes, * after doing a little verification and fixup. **********************************************************************/ -void objc_addClass (Class cls) +void objc_addClass (struct objc_class *cls) { // Synchronize access to hash table OBJC_LOCK (&classLock); @@ -393,18 +631,23 @@ void objc_addClass (Class cls) // Clear all bits of the info fields except CLS_CLASS and CLS_META. // Normally these bits are already clear but if someone tries to cons // up their own class on the fly they might need to be cleared. - if (((struct objc_class *)cls)->cache == NULL) - { - ((struct objc_class *)cls)->cache = (Cache) &emptyCache; - ((struct objc_class *)cls)->info = CLS_CLASS; + if (cls->cache == NULL) { + cls->cache = (Cache) &emptyCache; + cls->info = CLS_CLASS; } - if (((struct objc_class *)cls)->isa->cache == NULL) - { - ((struct objc_class *)cls)->isa->cache = (Cache) &emptyCache; - ((struct objc_class *)cls)->isa->info = CLS_META; + if (cls->isa->cache == NULL) { + cls->isa->cache = (Cache) &emptyCache; + cls->isa->info = CLS_META; } + // methodLists should be: + // 1. NULL (Tiger and later only) + // 2. A -1 terminated method list array + // In either case, CLS_NO_METHOD_ARRAY remains clear. + // If the user manipulates the method list directly, + // they must use the magic private format. + // Add the class to the table (void) NXHashInsert (class_hash, cls); @@ -414,6 +657,9 @@ void objc_addClass (Class cls) /*********************************************************************** * _objcTweakMethodListPointerForClass. +* Change the class's method list pointer to a method list array. +* Does nothing if the method list pointer is already a method list array. +* If the class is currently in use, methodListLock must be held by the caller. **********************************************************************/ static void _objcTweakMethodListPointerForClass (struct objc_class * cls) { @@ -422,44 +668,60 @@ static void _objcTweakMethodListPointerForClass (struct objc_class * cls) int mallocSize; struct objc_method_list ** ptr; + // Do nothing if methodLists is already an array. + if (cls->methodLists && !(cls->info & CLS_NO_METHOD_ARRAY)) return; + // Remember existing list originalList = (struct objc_method_list *) cls->methodLists; // Allocate and zero a method list array mallocSize = sizeof(struct objc_method_list *) * initialEntries; - ptr = (struct objc_method_list **) malloc_zone_calloc (_objc_create_zone (), 1, mallocSize); + ptr = (struct objc_method_list **) _calloc_internal(1, mallocSize); // Insert the existing list into the array ptr[initialEntries - 1] = END_OF_METHODS_LIST; ptr[0] = originalList; // Replace existing list with array - ((struct objc_class *)cls)->methodLists = ptr; - ((struct objc_class *)cls)->info |= CLS_METHOD_ARRAY; - - // Do the same thing to the meta-class - if (((((struct objc_class *)cls)->info & CLS_CLASS) != 0) && cls->isa) - _objcTweakMethodListPointerForClass (cls->isa); + cls->methodLists = ptr; + _class_clearInfo(cls, CLS_NO_METHOD_ARRAY); } + /*********************************************************************** * _objc_insertMethods. +* Adds methods to a class. +* Does not flush any method caches. +* Does not take any locks. +* If the class is already in use, use class_addMethods() instead. **********************************************************************/ -void _objc_insertMethods (struct objc_method_list * mlist, - struct objc_method_list *** list) +void _objc_insertMethods(struct objc_class *cls, + struct objc_method_list *mlist) { - struct objc_method_list ** ptr; - volatile struct objc_method_list ** tempList; - int endIndex; - int oldSize; - int newSize; + struct objc_method_list ***list; + struct objc_method_list **ptr; + int endIndex; + int oldSize; + int newSize; + + if (!cls->methodLists) { + // cls has no methods - simply use this method list + cls->methodLists = (struct objc_method_list **)mlist; + _class_setInfo(cls, CLS_NO_METHOD_ARRAY); + return; + } + + // Create method list array if necessary + _objcTweakMethodListPointerForClass(cls); + + list = &cls->methodLists; // Locate unused entry for insertion point ptr = *list; while ((*ptr != 0) && (*ptr != END_OF_METHODS_LIST)) ptr += 1; - // If array is full, double it + // If array is full, add to it if (*ptr == END_OF_METHODS_LIST) { // Calculate old and new dimensions @@ -467,11 +729,9 @@ void _objc_insertMethods (struct objc_method_list * mlist, oldSize = (endIndex + 1) * sizeof(void *); newSize = oldSize + sizeof(struct objc_method_list *); // only increase by 1 - // Replace existing array with copy twice its size - tempList = (struct objc_method_list **) malloc_zone_realloc ((void *) _objc_create_zone (), - (void *) *list, - (size_t) newSize); - *list = tempList; + // Grow the method list array by one. + // This block may be from user code; don't use _realloc_internal + *list = (struct objc_method_list **)realloc(*list, newSize); // Zero out addition part of new array bzero (&((*list)[endIndex]), newSize - oldSize); @@ -492,11 +752,34 @@ void _objc_insertMethods (struct objc_method_list * mlist, /*********************************************************************** * _objc_removeMethods. +* Remove methods from a class. +* Does not take any locks. +* Does not flush any method caches. +* If the class is currently in use, use class_removeMethods() instead. **********************************************************************/ -void _objc_removeMethods (struct objc_method_list * mlist, - struct objc_method_list *** list) +void _objc_removeMethods(struct objc_class *cls, + struct objc_method_list *mlist) { - struct objc_method_list ** ptr; + struct objc_method_list ***list; + struct objc_method_list **ptr; + + if (cls->methodLists == NULL) { + // cls has no methods + return; + } + if (cls->methodLists == (struct objc_method_list **)mlist) { + // mlist is the class's only method list - erase it + cls->methodLists = NULL; + return; + } + if (cls->info & CLS_NO_METHOD_ARRAY) { + // cls has only one method list, and this isn't it - do nothing + return; + } + + // cls has a method list array - search it + + list = &cls->methodLists; // Locate list in the array ptr = *list; @@ -518,16 +801,22 @@ void _objc_removeMethods (struct objc_method_list * mlist, /*********************************************************************** * _objc_add_category. Install the specified category's methods and * protocols into the class it augments. +* The class is assumed not to be in use yet: no locks are taken and +* no method caches are flushed. **********************************************************************/ static inline void _objc_add_category(struct objc_class *cls, struct objc_category *category, int version) { + if (PrintConnecting) { + _objc_inform("CONNECT: attaching category '%s (%s)'", cls->name, category->category_name); + } + // Augment instance methods if (category->instance_methods) - _objc_insertMethods (category->instance_methods, &cls->methodLists); + _objc_insertMethods (cls, category->instance_methods); // Augment class methods if (category->class_methods) - _objc_insertMethods (category->class_methods, &cls->isa->methodLists); + _objc_insertMethods (cls->isa, category->class_methods); // Augment protocols if ((version >= 5) && category->protocols) @@ -547,115 +836,180 @@ static inline void _objc_add_category(struct objc_class *cls, struct objc_catego } /*********************************************************************** -* _objc_add_category_flush_caches. Install the specified category's methods into -* the class it augments, and flush the class' method cache. -* +* _objc_add_category_flush_caches. Install the specified category's +* methods into the class it augments, and flush the class' method cache. **********************************************************************/ static void _objc_add_category_flush_caches(struct objc_class *cls, struct objc_category *category, int version) { // Install the category's methods into its intended class + OBJC_LOCK(&methodListLock); _objc_add_category (cls, category, version); + OBJC_UNLOCK(&methodListLock); // Flush caches so category's methods can get called _objc_flush_caches (cls); } + +/*********************************************************************** +* reverse_cat +* Reverse the given linked list of pending categories. +* The pending category list is built backwards, and needs to be +* reversed before actually attaching the categories to a class. +* Returns the head of the new linked list. +**********************************************************************/ +static _objc_unresolved_category *reverse_cat(_objc_unresolved_category *cat) +{ + if (!cat) return NULL; + + _objc_unresolved_category *prev = NULL; + _objc_unresolved_category *cur = cat; + _objc_unresolved_category *ahead = cat->next; + + while (cur) { + ahead = cur->next; + cur->next = prev; + prev = cur; + cur = ahead; + } + + return prev; +} + + /*********************************************************************** -* _objc_resolve_categories_for_class. Install all categories intended -* for the specified class, in reverse order from the order in which we -* found the categories in the image. -* This is done as lazily as we can. +* resolve_categories_for_class. +* Install all existing categories intended for the specified class. +* cls must be a true class and not a metaclass. **********************************************************************/ -void _objc_resolve_categories_for_class (struct objc_class * cls) +static void resolve_categories_for_class(struct objc_class *cls) { - _objc_unresolved_category * cat; + _objc_unresolved_category * pending; _objc_unresolved_category * next; // Nothing to do if there are no categories at all - if (!category_hash) - return; + if (!category_hash) return; // Locate and remove first element in category list // associated with this class - cat = NXMapRemove (category_hash, cls->name); + pending = NXMapKeyFreeingRemove (category_hash, cls->name); // Traverse the list of categories, if any, registered for this class - while (cat) - { - if (cat->bindme) { - _objc_bindModuleContainingCategory(cat->cat); + + // The pending list is built backwards. Reverse it and walk forwards. + pending = reverse_cat(pending); + + while (pending) { + if (pending->cat) { + // Install the category + // use the non-flush-cache version since we are only + // called from the class intialization code + _objc_add_category(cls, pending->cat, pending->version); } - // Install the category - // use the non-flush-cache version since we are only - // called from the class intialization code - _objc_add_category (cls, cat->cat, cat->version); // Delink and reclaim this registration - next = cat->next; - free (cat); - cat = next; + next = pending->next; + _free_internal(pending); + pending = next; + } +} + + +/*********************************************************************** +* _objc_resolve_categories_for_class. +* Public version of resolve_categories_for_class. This was +* exported pre-10.4 for Omni et al. to workaround a problem +* with too-lazy category attachment. +* cls should be a class, but this function can also cope with metaclasses. +**********************************************************************/ +void _objc_resolve_categories_for_class(struct objc_class *cls) +{ + + // If cls is a metaclass, get the class. + // resolve_categories_for_class() requires a real class to work correctly. + if (ISMETA(cls)) { + if (strncmp(cls->name, "_%", 2) == 0) { + // Posee's meta's name is smashed and isn't in the class_hash, + // so objc_getClass doesn't work. + char *baseName = strchr(cls->name, '%'); // get posee's real name + cls = objc_getClass(baseName); + } else { + cls = objc_getClass(cls->name); + } } + + resolve_categories_for_class(cls); } + /*********************************************************************** -* _objc_register_category. Add the specified category to the registry -* of categories to be installed later (once we know for sure which - * classes we have). If there are multiple categories on a given class, -* they will be processed in reverse order from the order in which they -* were found in the image. +* _objc_register_category. +* Process a category read from an image. +* If the category's class exists, attach the category immediately. +* If the category's class does not exist yet, pend the category for +* later attachment. Pending categories are attached in the order +* they were discovered. **********************************************************************/ -static void _objc_register_category (struct objc_category * cat, - long version, - int bindme) +static void _objc_register_category(struct objc_category *cat, long version) { _objc_unresolved_category * new_cat; _objc_unresolved_category * old; struct objc_class *theClass; - - // If the category's class exists, just add the category - // We could check to see if its initted, and if not, defer this - // work until _objc_resolve_categories_for_class for all cases - // The only trick then is whether we need to bind it. This - // might be doable if we store an obscured pointer so that we - // avoid touching the memory... [BG 5/2001 still in think mode] - if (theClass = objc_lookUpClass (cat->class_name)) - { - if (bindme) { - _objc_bindModuleContainingCategory(cat); - } - _objc_add_category_flush_caches (theClass, cat, version); + // If the category's class exists, attach the category. + if ((theClass = objc_lookUpClass(cat->class_name))) { + _objc_add_category_flush_caches(theClass, cat, version); + return; + } + + // If the category's class exists but is unconnected, + // then attach the category to the class but don't bother + // flushing any method caches (because they must be empty). + // YES unconnected, NO class_handler + if ((theClass = look_up_class(cat->class_name, YES, NO))) { + _objc_add_category(theClass, cat, version); return; } + + // Category's class does not exist yet. + // Save the category for later attachment. + + if (PrintConnecting) { + _objc_inform("CONNECT: pending category '%s (%s)'", cat->class_name, cat->category_name); + } + // Create category lookup table if needed if (!category_hash) category_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype, 128, - _objc_create_zone ()); + _objc_internal_zone ()); - // Locate an existing category, if any, for the class. This is linked - // after the new entry, so list is LIFO. + // Locate an existing list of categories, if any, for the class. old = NXMapGet (category_hash, cat->class_name); - // Register the category to be fixed up later - new_cat = malloc_zone_malloc (_objc_create_zone (), - sizeof(_objc_unresolved_category)); + // Register the category to be fixed up later. + // The category list is built backwards, and is reversed again + // by resolve_categories_for_class(). + new_cat = _malloc_internal(sizeof(_objc_unresolved_category)); new_cat->next = old; new_cat->cat = cat; new_cat->version = version; - new_cat->bindme = bindme; // could use a bit in the next pointer instead of a whole word - (void) NXMapInsert (category_hash, cat->class_name , new_cat); + (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat); } + /*********************************************************************** -* _objc_add_categories_from_image. +* _objc_read_categories_from_image. +* Read all categories from the given image. +* Install them on their parent classes, or register them for later +* installation. +* Register them for later +load, if implemented. **********************************************************************/ -static void _objc_add_categories_from_image (header_info * hi) +static void _objc_read_categories_from_image (header_info * hi) { Module mods; unsigned int midx; - int isDynamic = (hi->mhdr->filetype == MH_DYLIB) || (hi->mhdr->filetype == MH_BUNDLE); if (_objcHeaderIsReplacement(hi)) { // Ignore any categories in this image @@ -663,37 +1017,33 @@ static void _objc_add_categories_from_image (header_info * hi) } // Major loop - process all modules in the header - mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide); - - trace(0xb120, hi->mod_count, 0, 0); + mods = hi->mod_ptr; - for (midx = 0; midx < hi->mod_count; midx += 1) - { + // NOTE: The module and category lists are traversed backwards + // to preserve the pre-10.4 processing order. Changing the order + // would have a small chance of introducing binary compatibility bugs. + midx = hi->mod_count; + while (midx-- > 0) { unsigned int index; unsigned int total; - + // Nothing to do for a module without a symbol table if (mods[midx].symtab == NULL) continue; - + // Total entries in symbol table (class entries followed // by category entries) total = mods[midx].symtab->cls_def_cnt + mods[midx].symtab->cat_def_cnt; - - - trace(0xb123, midx, mods[midx].symtab->cat_def_cnt, 0); - + // Minor loop - register all categories from given module - for (index = mods[midx].symtab->cls_def_cnt; index < total; index += 1) - { - _objc_register_category(mods[midx].symtab->defs[index], mods[midx].version, isDynamic && !all_modules_prebound); + index = total; + while (index-- > mods[midx].symtab->cls_def_cnt) { + struct objc_category *cat = mods[midx].symtab->defs[index]; + _objc_register_category(cat, mods[midx].version); + add_category_to_loadable_list(cat); } - - trace(0xb124, midx, 0, 0); } - - trace(0xb12f, 0, 0, 0); } @@ -703,24 +1053,21 @@ static void _objc_add_categories_from_image (header_info * hi) **********************************************************************/ static const header_info *_headerForAddress(void *addr) { - const struct segment_command * objcSeg; - unsigned int size; - unsigned long vmaddrPlus; + unsigned long size; + unsigned long seg; header_info * hInfo; // Check all headers in the vector for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) { // Locate header data, if any - objcSeg = (struct segment_command *)hInfo->objcData; - size = hInfo->objcDataSize; - if (!objcSeg) - continue; + if (!hInfo->objcSegmentHeader) continue; + seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide; + size = hInfo->objcSegmentHeader->filesize; // Is the class in this header? - vmaddrPlus = (unsigned long) objcSeg->vmaddr + hInfo->image_slide; - if ((vmaddrPlus <= (unsigned long) addr) && - ((unsigned long) addr < (vmaddrPlus + size))) + if ((seg <= (unsigned long) addr) && + ((unsigned long) addr < (seg + size))) return hInfo; } @@ -729,16 +1076,6 @@ static const header_info *_headerForAddress(void *addr) } -/*********************************************************************** -* _headerForCategory -* Return the image header containing this category, or NULL -**********************************************************************/ -static const header_info *_headerForCategory(struct objc_category *cat) -{ - return _headerForAddress(cat); -} - - /*********************************************************************** * _headerForClass * Return the image header containing this class, or NULL. @@ -751,220 +1088,731 @@ static const header_info *_headerForClass(struct objc_class *cls) /*********************************************************************** -* _moduleForClassFromImage -* Returns the module containing the definition for a class, or NULL. -* The class is assumed to be in the given image, and the module -* returned will be in that image. +* _nameForHeader. **********************************************************************/ -static Module _moduleForClassFromImage(struct objc_class *cls, - const header_info *hInfo) +const char * _nameForHeader (const headerType * header) { - Module mods = (Module)((unsigned long)hInfo->mod_ptr + hInfo->image_slide); - int m, d; - for (m = 0; m < hInfo->mod_count; m++) { - if (mods[m].symtab) { - for (d = 0; d < mods[m].symtab->cls_def_cnt; d++) { - if (cls == (struct objc_class *) mods[m].symtab->defs[d]) { - return &mods[m]; - } - } - } - } - return NULL; + return _getObjcHeaderName ((headerType *) header); } /*********************************************************************** -* _moduleForCategoryFromImage -* Returns the module containing the definition for a category, or NULL. -* The category is assumed to be in the given image, and the module -* returned will be in that image. +* class_is_connected. +* Returns TRUE if class cls is connected. +* A connected class has either a connected superclass or a NULL superclass, +* and is present in class_hash. **********************************************************************/ -static Module _moduleForCategoryFromImage(struct objc_category *cat, - const header_info *hInfo) +static BOOL class_is_connected(struct objc_class *cls) { - Module mods = (Module)((unsigned long)hInfo->mod_ptr + hInfo->image_slide); - int m, d; - for (m = 0; m < hInfo->mod_count; m++) { - if (mods[m].symtab) { - for (d = mods[m].symtab->cls_def_cnt; - d < mods[m].symtab->cls_def_cnt + mods[m].symtab->cat_def_cnt; - d++) - { - if (cat == (struct objc_category *) mods[m].symtab->defs[d]) { - return &mods[m]; - } - } - } - } - return NULL; + BOOL result; + OBJC_LOCK(&classLock); + result = NXHashMember(class_hash, cls); + OBJC_UNLOCK(&classLock); + return result; } /*********************************************************************** -* _nameForHeader. +* pendingClassRefsMapTable. Return a pointer to the lookup table for +* pending class refs. **********************************************************************/ -const char * _nameForHeader (const headerType * header) +static inline NXMapTable *pendingClassRefsMapTable(void) { - return _getObjcHeaderName ((headerType *) header); + // Allocate table if needed + if (!pendingClassRefsMap) { + pendingClassRefsMap = + NXCreateMapTableFromZone(NXStrValueMapPrototype, + 10, _objc_internal_zone ()); + } + + // Return table pointer + return pendingClassRefsMap; } + /*********************************************************************** -* checkForPendingClassReferences. Complete any fixups registered for -* this class. +* pendingSubclassesMapTable. Return a pointer to the lookup table for +* pending subclasses. **********************************************************************/ -static void _objc_checkForPendingClassReferences (struct objc_class * cls) +static inline NXMapTable *pendingSubclassesMapTable(void) { - PendingClass * pending; - - // Nothing to do if there are no pending classes - if (!pendingClassRefsMap) - return; - - // Get pending list for this class - pending = NXMapGet (pendingClassRefsMap, cls->name); - if (!pending) - return; - - // Remove the list from the table - (void) NXMapRemove (pendingClassRefsMap, cls->name); - - // Process all elements in the list - while (pending) - { - PendingClass * next; - - // Remember follower for loop - next = pending->next; - - // Fill in a pointer to Class - // (satisfies caller of objc_pendClassReference) - if (pending->ref) - *pending->ref = objc_getClass (cls->name); - - // Fill in super, isa, cache, and version for the class - // and its meta-class - // (satisfies caller of objc_pendClassInstallation) - // NOTE: There must be no more than one of these for - // any given classToSetUp - if (pending->classToSetUp) - { - struct objc_class * fixCls; - - // Locate the Class to be fixed up - fixCls = pending->classToSetUp; - - // Set up super class fields with names to be replaced by pointers - fixCls->super_class = (struct objc_class *) pending->nameof_superclass; - fixCls->isa->super_class = (struct objc_class *) pending->nameof_superclass; - - // Fix up class pointers, version, and cache pointers - _class_install_relationships (fixCls, pending->version); - } - - // Reclaim the element - free (pending); - - // Move on - pending = next; + // Allocate table if needed + if (!pendingSubclassesMap) { + pendingSubclassesMap = + NXCreateMapTableFromZone(NXStrValueMapPrototype, + 10, _objc_internal_zone ()); } + + // Return table pointer + return pendingSubclassesMap; } -/*********************************************************************** -* newPending. Allocate and zero a PendingClass structure. -**********************************************************************/ -static inline PendingClass * newPending (void) -{ - PendingClass * pending; - - pending = (PendingClass *) malloc_zone_calloc (_objc_create_zone (), 1, sizeof(PendingClass)); - - return pending; -} /*********************************************************************** -* pendingClassRefsMapTable. Return a pointer to the lookup table for -* pending classes. +* pendClassInstallation +* Finish connecting class cls when its superclass becomes connected. +* Check for multiple pends of the same class because connect_class does not. **********************************************************************/ -static inline NXMapTable * pendingClassRefsMapTable (void) +static void pendClassInstallation(struct objc_class *cls, + const char *superName) { - // Allocate table if needed - if (!pendingClassRefsMap) - pendingClassRefsMap = NXCreateMapTableFromZone (NXStrValueMapPrototype, 10, _objc_create_zone ()); + NXMapTable *table; + PendingSubclass *pending; + PendingSubclass *oldList; + PendingSubclass *l; + + // Create and/or locate pending class lookup table + table = pendingSubclassesMapTable (); - // Return table pointer - return pendingClassRefsMap; + // Make sure this class isn't already in the pending list. + oldList = NXMapGet (table, superName); + for (l = oldList; l != NULL; l = l->next) { + if (l->subclass == cls) return; // already here, nothing to do + } + + // Create entry referring to this class + pending = _malloc_internal(sizeof(PendingSubclass)); + pending->subclass = cls; + + // Link new entry into head of list of entries for this class + pending->next = oldList; + + // (Re)place entry list in the table + (void) NXMapKeyCopyingInsert (table, superName, pending); } + /*********************************************************************** -* objc_pendClassReference. Register the specified class pointer (ref) -* to be filled in later with a pointer to the class having the specified -* name. +* pendClassReference +* Fix up a class ref when the class with the given name becomes connected. **********************************************************************/ -void objc_pendClassReference (const char * className, - struct objc_class * * ref) +static void pendClassReference(struct objc_class **ref, + const char *className) { - NXMapTable * table; - PendingClass * pending; - + NXMapTable *table; + PendingClassRef *pending; + // Create and/or locate pending class lookup table table = pendingClassRefsMapTable (); - + // Create entry containing the class reference - pending = newPending (); + pending = _malloc_internal(sizeof(PendingClassRef)); pending->ref = ref; - + // Link new entry into head of list of entries for this class - pending->next = NXMapGet (pendingClassRefsMap, className); - + pending->next = NXMapGet (table, className); + // (Re)place entry list in the table - (void) NXMapInsert (table, className, pending); + (void) NXMapKeyCopyingInsert (table, className, pending); + + if (PrintConnecting) { + _objc_inform("CONNECT: pended reference to class '%s' at %p", + className, (void *)ref); + } } + /*********************************************************************** -* objc_pendClassInstallation. Register the specified class to have its -* super class pointers filled in later because the superclass is not -* yet found. +* resolve_references_to_class +* Fix up any pending class refs to this class. **********************************************************************/ -void objc_pendClassInstallation (struct objc_class *cls, int version) +static void resolve_references_to_class(struct objc_class *cls) { - NXMapTable * table; - PendingClass * pending; + PendingClassRef *pending; + + if (!pendingClassRefsMap) return; // no unresolved refs for any class - // Create and/or locate pending class lookup table - table = pendingClassRefsMapTable (); + pending = NXMapGet(pendingClassRefsMap, cls->name); + if (!pending) return; // no unresolved refs for this class - // Create entry referring to this class - pending = newPending (); - pending->classToSetUp = cls; - pending->nameof_superclass = (const char *) cls->super_class; - pending->version = version; + NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name); - // Link new entry into head of list of entries for this class - pending->next = NXMapGet (pendingClassRefsMap, cls->super_class); + if (PrintConnecting) { + _objc_inform("CONNECT: resolving references to class '%s'", cls->name); + } - // (Re)place entry list in the table - (void) NXMapInsert (table, cls->super_class, pending); + while (pending) { + PendingClassRef *next = pending->next; + if (pending->ref) *pending->ref = cls; + _free_internal(pending); + pending = next; + } + + if (NXCountMapTable(pendingClassRefsMap) == 0) { + NXFreeMapTable(pendingClassRefsMap); + pendingClassRefsMap = NULL; + } +} + + +/*********************************************************************** +* resolve_subclasses_of_class +* Fix up any pending subclasses of this class. +**********************************************************************/ +static void resolve_subclasses_of_class(struct objc_class *cls) +{ + PendingSubclass *pending; + + if (!pendingSubclassesMap) return; // no unresolved subclasses + + pending = NXMapGet(pendingSubclassesMap, cls->name); + if (!pending) return; // no unresolved subclasses for this class + + NXMapKeyFreeingRemove(pendingSubclassesMap, cls->name); + + // Destroy the pending table if it's now empty, to save memory. + if (NXCountMapTable(pendingSubclassesMap) == 0) { + NXFreeMapTable(pendingSubclassesMap); + pendingSubclassesMap = NULL; + } + + if (PrintConnecting) { + _objc_inform("CONNECT: resolving subclasses of class '%s'", cls->name); + } + + while (pending) { + PendingSubclass *next = pending->next; + if (pending->subclass) connect_class(pending->subclass); + _free_internal(pending); + pending = next; + } +} + + +/*********************************************************************** +* get_base_method_list +* Returns the method list containing the class's own methods, +* ignoring any method lists added by categories or class_addMethods. +* Called only by add_class_to_loadable_list. +* Does not hold methodListLock because add_class_to_loadable_list +* does not manipulate in-use classes. +**********************************************************************/ +static struct objc_method_list *get_base_method_list(struct objc_class *cls) +{ + struct objc_method_list **ptr; + + if (!cls->methodLists) return NULL; + if (cls->info & CLS_NO_METHOD_ARRAY) return (struct objc_method_list *)cls->methodLists; + ptr = cls->methodLists; + if (!*ptr || *ptr == END_OF_METHODS_LIST) return NULL; + while ( *ptr != 0 && *ptr != END_OF_METHODS_LIST ) { ptr++; } + --ptr; + return *ptr; +} + + +/*********************************************************************** +* add_class_to_loadable_list +* Class cls has just become connected. Schedule it for +load if +* it implements a +load method. +**********************************************************************/ +static void add_class_to_loadable_list(struct objc_class *cls) +{ + IMP method = NULL; + struct objc_method_list *mlist; + + mlist = get_base_method_list(cls->isa); + if (mlist) { + method = lookupNamedMethodInMethodList (mlist, "load"); + } + // Don't bother if cls has no +load method + if (!method) return; + + if (PrintLoading) { + _objc_inform("LOAD: class '%s' scheduled for +load", cls->name); + } + + if (loadable_classes_used == loadable_classes_allocated) { + loadable_classes_allocated = loadable_classes_allocated*2 + 16; + loadable_classes = + _realloc_internal(loadable_classes, + loadable_classes_allocated * + sizeof(struct loadable_class)); + } + + loadable_classes[loadable_classes_used].cls = cls; + loadable_classes[loadable_classes_used].method = method; + loadable_classes_used++; +} + + +/*********************************************************************** +* add_category_to_loadable_list +* Category cat's parent class exists and the category has been attached +* to its class. Schedule this category for +load after its parent class +* becomes connected and has its own +load method called. +**********************************************************************/ +static void add_category_to_loadable_list(struct objc_category *cat) +{ + IMP method = NULL; + struct objc_method_list *mlist; + + mlist = cat->class_methods; + if (mlist) { + method = lookupNamedMethodInMethodList (mlist, "load"); + } + // Don't bother if cat has no +load method + if (!method) return; + + if (PrintLoading) { + _objc_inform("LOAD: category '%s(%s)' scheduled for +load", + cat->class_name, cat->category_name); + } + + if (loadable_categories_used == loadable_categories_allocated) { + loadable_categories_allocated = loadable_categories_allocated*2 + 16; + loadable_categories = + _realloc_internal(loadable_categories, + loadable_categories_allocated * + sizeof(struct loadable_category)); + } + + loadable_categories[loadable_categories_used].cat = cat; + loadable_categories[loadable_categories_used].method = method; + loadable_categories_used++; +} + + +/*********************************************************************** +* remove_class_from_loadable_list +* Class cls may have been loadable before, but it is now no longer +* loadable (because its image is being unmapped). +**********************************************************************/ +static void remove_class_from_loadable_list(struct objc_class *cls) +{ + if (loadable_classes) { + int i; + for (i = 0; i < loadable_classes_used; i++) { + if (loadable_classes[i].cls == cls) { + loadable_classes[i].cls = NULL; + if (PrintLoading) { + _objc_inform("LOAD: class '%s' unscheduled for +load", cls->name); + } + return; + } + } + } +} + + +/*********************************************************************** +* remove_category_from_loadable_list +* Category cat may have been loadable before, but it is now no longer +* loadable (because its image is being unmapped). +**********************************************************************/ +static void remove_category_from_loadable_list(struct objc_category *cat) +{ + if (loadable_categories) { + int i; + for (i = 0; i < loadable_categories_used; i++) { + if (loadable_categories[i].cat == cat) { + loadable_categories[i].cat = NULL; + if (PrintLoading) { + _objc_inform("LOAD: category '%s(%s)' unscheduled for +load", + cat->class_name, cat->category_name); + } + return; + } + } + } +} + + +/*********************************************************************** +* call_class_loads +* Call all pending class +load methods. +* If new classes become loadable, +load is NOT called for them. +* +* Called only by call_load_methods(). +**********************************************************************/ +static void call_class_loads(void) +{ + int i; + + // Detach current loadable list. + struct loadable_class *classes = loadable_classes; + int used = loadable_classes_used; + loadable_classes = NULL; + loadable_classes_allocated = 0; + loadable_classes_used = 0; + + // Call all +loads for the detached list. + for (i = 0; i < used; i++) { + struct objc_class *cls = classes[i].cls; + IMP load_method = classes[i].method; + if (!cls) continue; + + if (PrintLoading) { + _objc_inform("LOAD: +[%s load]\n", cls->name); + } + (*load_method) ((id) cls, @selector(load)); + } + + // Destroy the detached list. + if (classes) _free_internal(classes); +} + + +/*********************************************************************** +* call_category_loads +* Call some pending category +load methods. +* The parent class of the +load-implementing categories has all of +* its categories attached, in case some are lazily waiting for +initalize. +* Don't call +load unless the parent class is connected. +* If new categories become loadable, +load is NOT called, and they +* are added to the end of the loadable list, and we return TRUE. +* Return FALSE if no new categories became loadable. +* +* Called only by call_load_methods(). +**********************************************************************/ +static BOOL call_category_loads(void) +{ + int i, shift; + BOOL new_categories_added = NO; + + // Detach current loadable list. + struct loadable_category *cats = loadable_categories; + int used = loadable_categories_used; + int allocated = loadable_categories_allocated; + loadable_categories = NULL; + loadable_categories_allocated = 0; + loadable_categories_used = 0; + + // Call all +loads for the detached list. + for (i = 0; i < used; i++) { + struct objc_category *cat = cats[i].cat; + IMP load_method = cats[i].method; + struct objc_class *cls; + if (!cat) continue; + + cls = objc_getClass(cat->class_name); + if (cls && class_is_connected(cls)) { + if (PrintLoading) { + _objc_inform("LOAD: +[%s(%s) load]\n", + cls->name, cat->category_name); + } + (*load_method) ((id) cls, @selector(load)); + cats[i].cat = NULL; + } + } + + // Compact detached list (order-preserving) + shift = 0; + for (i = 0; i < used; i++) { + if (cats[i].cat) { + cats[i-shift] = cats[i]; + } else { + shift++; + } + } + used -= shift; + + // Copy any new +load candidates from the new list to the detached list. + new_categories_added = (loadable_categories_used > 0); + for (i = 0; i < loadable_categories_used; i++) { + if (used == allocated) { + allocated = allocated*2 + 16; + cats = _realloc_internal(cats, allocated * + sizeof(struct loadable_category)); + } + cats[used++] = loadable_categories[i]; + } + + // Destroy the new list. + if (loadable_categories) _free_internal(loadable_categories); + + // Reattach the (now augmented) detached list. + // But if there's nothing left to load, destroy the list. + if (used) { + loadable_categories = cats; + loadable_categories_used = used; + loadable_categories_allocated = allocated; + } else { + if (cats) _free_internal(cats); + loadable_categories = NULL; + loadable_categories_used = 0; + loadable_categories_allocated = 0; + } + + if (PrintLoading) { + if (loadable_categories_used != 0) { + _objc_inform("LOAD: %d categories still waiting for +load\n", + loadable_categories_used); + } + } + + return new_categories_added; +} + + +/*********************************************************************** +* call_load_methods +* Call all pending class and category +load methods. +* Class +load methods are called superclass-first. +* Category +load methods are not called until after the parent class's +load. +* +* This method must be RE-ENTRANT, because a +load could trigger +* more image mapping. In addition, the superclass-first ordering +* must be preserved in the face of re-entrant calls. Therefore, +* only the OUTERMOST call of this function will do anything, and +* that call will handle all loadable classes, even those generated +* while it was running. +* +* The sequence below preserves +load ordering in the face of +* image loading during a +load, and make sure that no +* +load method is forgotten because it was added during +* a +load call. +* Sequence: +* 1. Repeatedly call class +loads until there aren't any more +* 2. Call category +loads ONCE. +* 3. Run more +loads if: +* (a) there are more classes to load, OR +* (b) there are some potential category +loads that have +* still never been attempted. +* Category +loads are only run once to ensure "parent class first" +* ordering, even if a category +load triggers a new loadable class +* and a new loadable category attached to that class. +* +* fixme this is not thread-safe, but neither is the rest of image mapping. +**********************************************************************/ +static void call_load_methods(void) +{ + static pthread_t load_method_thread NOBSS = NULL; + BOOL more_categories; + + if (load_method_thread) { + // +loads are already being called. Do nothing, but complain + // if it looks like multithreaded use of this thread-unsafe code. + + if (! pthread_equal(load_method_thread, pthread_self())) { + _objc_inform("WARNING: multi-threaded library loading detected " + "(implementation is not thread-safe)"); + } + return; + } + + // Nobody else is calling +loads, so we should do it ourselves. + load_method_thread = pthread_self(); + + do { + // 1. Repeatedly call class +loads until there aren't any more + while (loadable_classes_used > 0) { + call_class_loads(); + } + + // 2. Call category +loads ONCE + more_categories = call_category_loads(); + + // 3. Run more +loads if there are classes OR more untried categories + } while (loadable_classes_used > 0 || more_categories); + + load_method_thread = NULL; +} + + +/*********************************************************************** +* really_connect_class +* Connect cls to superclass supercls unconditionally. +* Also adjust the class hash tables and handle +load and pended subclasses. +* +* This should be called from connect_class() ONLY. +**********************************************************************/ +static void really_connect_class(struct objc_class *cls, + struct objc_class *supercls) +{ + struct objc_class *oldCls; + struct objc_class *meta = cls->isa; + + // Wire the classes together. + if (supercls) { + cls->super_class = supercls; + meta->super_class = supercls->isa; + meta->isa = supercls->isa->isa; + } else { + cls->super_class = NULL; // superclass of root class is NULL + meta->super_class = cls; // superclass of root metaclass is root class + meta->isa = meta; // metaclass of root metaclass is root metaclass + } + + OBJC_LOCK(&classLock); + + // Update hash tables. + NXHashRemove(unconnected_class_hash, cls); + oldCls = NXHashInsert(class_hash, cls); + + // Delete unconnected_class_hash if it is now empty. + if (NXCountHashTable(unconnected_class_hash) == 0) { + NXFreeHashTable(unconnected_class_hash); + unconnected_class_hash = NULL; + } + + OBJC_UNLOCK(&classLock); + + // Warn if the new class has the same name as a previously-installed class. + // The new class is kept and the old class is discarded. + if (oldCls) { + const header_info *oldHeader = _headerForClass(oldCls); + const header_info *newHeader = _headerForClass(cls); + const char *oldName = _nameForHeader(oldHeader->mhdr); + const char *newName = _nameForHeader(newHeader->mhdr); + + _objc_inform ("Both %s and %s have implementations of class %s.", + oldName, newName, oldCls->name); + _objc_inform ("Using implementation from %s.", newName); + } + + // Prepare for +load and connect newly-connectable subclasses + add_class_to_loadable_list(cls); + resolve_subclasses_of_class(cls); + + // GC debugging: make sure all classes with -dealloc also have -finalize + if (CheckFinalizers) { + extern IMP findIMPInClass(Class cls, SEL sel); + if (findIMPInClass(cls, sel_getUid("dealloc")) && + ! findIMPInClass(cls, sel_getUid("finalize"))) + { + _objc_inform("GC: class '%s' implements -dealloc but not -finalize", cls->name); + } + } + + // Debugging: if this class has ivars, make sure this class's ivars don't + // overlap with its super's. This catches some broken fragile base classes. + // Do not use super->instance_size vs. self->ivar[0] to check this. + // Ivars may be packed across instance_size boundaries. + if (DebugFragileSuperclasses && cls->ivars && cls->ivars->ivar_count) { + struct objc_class *ivar_cls = supercls; + + // Find closest superclass that has some ivars, if one exists. + while (ivar_cls && + (!ivar_cls->ivars || ivar_cls->ivars->ivar_count == 0)) + { + ivar_cls = ivar_cls->super_class; + } + + if (ivar_cls) { + // Compare superclass's last ivar to this class's first ivar + struct objc_ivar *super_ivar = + &ivar_cls->ivars->ivar_list[ivar_cls->ivars->ivar_count - 1]; + struct objc_ivar *self_ivar = + &cls->ivars->ivar_list[0]; + + // fixme could be smarter about super's ivar size + if (self_ivar->ivar_offset <= super_ivar->ivar_offset) { + _objc_inform("WARNING: ivars of superclass '%s' and " + "subclass '%s' overlap; superclass may have " + "changed since subclass was compiled", + ivar_cls->name, cls->name); + } + } + } +} + + +/*********************************************************************** +* connect_class +* Connect class cls to its superclasses, if possible. +* If cls becomes connected, move it from unconnected_class_hash +* to connected_class_hash. +* Returns TRUE if cls is connected. +* Returns FALSE if cls could not be connected for some reason +* (missing superclass or still-unconnected superclass) +**********************************************************************/ +static BOOL connect_class(struct objc_class *cls) +{ + if (class_is_connected(cls)) { + // This class is already connected to its superclass. + // Do nothing. + return TRUE; + } + else if (cls->super_class == NULL) { + // This class is a root class. + // Connect it to itself. + + if (PrintConnecting) { + _objc_inform("CONNECT: class '%s' now connected (root class)", + cls->name); + } + + really_connect_class(cls, NULL); + return TRUE; + } + else { + // This class is not a root class and is not yet connected. + // Connect it if its superclass and root class are already connected. + // Otherwise, add this class to the to-be-connected list, + // pending the completion of its superclass and root class. + + // At this point, cls->super_class and cls->isa->isa are still STRINGS + char *supercls_name = (char *)cls->super_class; + struct objc_class *supercls; + + // YES unconnected, YES class handler + if (NULL == (supercls = look_up_class(supercls_name, YES, YES))) { + // Superclass does not exist yet. + // pendClassInstallation will handle duplicate pends of this class + pendClassInstallation(cls, supercls_name); + + if (PrintConnecting) { + _objc_inform("CONNECT: class '%s' NOT connected (missing super)", cls->name); + } + return FALSE; + } + + if (! connect_class(supercls)) { + // Superclass exists but is not yet connected. + // pendClassInstallation will handle duplicate pends of this class + pendClassInstallation(cls, supercls_name); + + if (PrintConnecting) { + _objc_inform("CONNECT: class '%s' NOT connected (unconnected super)", cls->name); + } + return FALSE; + } + + // Superclass exists and is connected. + // Connect this class to the superclass. + + if (PrintConnecting) { + _objc_inform("CONNECT: class '%s' now connected", cls->name); + } + + really_connect_class(cls, supercls); + return TRUE; + } } + /*********************************************************************** -* _objc_add_classes_from_image. Install all classes contained in the -* specified image. +* _objc_read_classes_from_image. +* Read classes from the given image, perform assorted minor fixups, +* Does not connect classes to superclasses. +* Does attach pended categories to the classes. +* Adds all classes to unconnected_class_hash. class_hash is unchanged. **********************************************************************/ -static void _objc_add_classes_from_image(NXHashTable *clsHash, header_info *hi) +static void _objc_read_classes_from_image(header_info *hi) { unsigned int index; unsigned int midx; Module mods; - int isDynamic = (hi->mhdr->filetype == MH_DYLIB) || (hi->mhdr->filetype == MH_BUNDLE); + int isBundle = (hi->mhdr->filetype == MH_BUNDLE); if (_objcHeaderIsReplacement(hi)) { // Ignore any classes in this image return; } + // class_hash starts small, enough only for libobjc itself. + // If other Objective-C libraries are found, immediately resize + // class_hash, assuming that Foundation and AppKit are about + // to add lots of classes. + OBJC_LOCK(&classLock); + if (hi->mhdr != &_mh_dylib_header && _NXHashCapacity(class_hash) < 1024) { + _NXHashRehashToCapacity(class_hash, 1024); + } + OBJC_UNLOCK(&classLock); + // Major loop - process all modules in the image - mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide); + mods = hi->mod_ptr; for (midx = 0; midx < hi->mod_count; midx += 1) { // Skip module containing no classes @@ -974,101 +1822,88 @@ static void _objc_add_classes_from_image(NXHashTable *clsHash, header_info *hi) // Minor loop - process all the classes in given module for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1) { - struct objc_class * oldCls; struct objc_class * newCls; // Locate the class description pointer newCls = mods[midx].symtab->defs[index]; - // remember to bind the module on initialization - if (isDynamic && !all_modules_prebound) - newCls->info |= CLS_NEED_BIND ; - - // Convert old style method list to the new style - _objcTweakMethodListPointerForClass (newCls); - - oldCls = NXHashInsert (clsHash, newCls); - - // Non-Nil oldCls is a class that NXHashInsert just - // bumped from table because it has the same name - // as newCls - if (oldCls) - { - const header_info * oldHeader; - const header_info * newHeader; - const char * oldName; - const char * newName; - - // Log the duplication - oldHeader = _headerForClass (oldCls); - newHeader = _headerForClass (newCls); - oldName = _nameForHeader (oldHeader->mhdr); - newName = _nameForHeader (newHeader->mhdr); - _objc_inform ("Both %s and %s have implementations of class %s.", - oldName, newName, oldCls->name); - _objc_inform ("Using implementation from %s.", newName); - - // Use the chosen class - // NOTE: Isn't this a NOP? - newCls = objc_lookUpClass (oldCls->name); + // Classes loaded from Mach-O bundles can be unloaded later. + // Nothing uses this class yet, so _class_setInfo is not needed. + if (isBundle) newCls->info |= CLS_FROM_BUNDLE; + if (isBundle) newCls->isa->info |= CLS_FROM_BUNDLE; + + // Use common static empty cache instead of NULL + if (newCls->cache == NULL) + newCls->cache = (Cache) &emptyCache; + if (newCls->isa->cache == NULL) + newCls->isa->cache = (Cache) &emptyCache; + + // Set metaclass version + newCls->isa->version = mods[midx].version; + + // methodLists is NULL or a single list, not an array + newCls->info |= CLS_NO_METHOD_ARRAY; + newCls->isa->info |= CLS_NO_METHOD_ARRAY; + + // Install into unconnected_class_hash + OBJC_LOCK(&classLock); + if (!unconnected_class_hash) { + unconnected_class_hash = + NXCreateHashTableFromZone(classHashPrototype, 128, NULL, + _objc_internal_zone()); } + NXHashInsert(unconnected_class_hash, newCls); + OBJC_UNLOCK(&classLock); - // Unless newCls was a duplicate, and we chose the - // existing one instead, set the version in the meta-class - if (newCls != oldCls) - newCls->isa->version = mods[midx].version; - - // Install new categories intended for this class - // NOTE: But, if we displaced an existing "isEqual" - // class, the categories have already been installed - // on an old class and are gone from the registry!! - - // we defer this work until the class is initialized. - //_objc_resolve_categories_for_class (newCls); - - // Resolve (a) pointers to the named class, and/or - // (b) the super_class, cache, and version - // fields of newCls and its meta-class - // NOTE: But, if we displaced an existing "isEqual" - // class, this has already been done... with an - // old-now-"unused" class!! - _objc_checkForPendingClassReferences (newCls); + // Fix up pended class refs to this class, if any + resolve_references_to_class(newCls); + // Attach pended categories for this class, if any + resolve_categories_for_class(newCls); } } } + /*********************************************************************** -* _objc_fixup_string_objects_for_image. Initialize the isa pointers -* of all NSConstantString objects. +* _objc_connect_classes_from_image. +* Connect the classes in the given image to their superclasses, +* or register them for later connection if any superclasses are missing. **********************************************************************/ -static void _objc_fixup_string_objects_for_image (header_info * hi) +static void _objc_connect_classes_from_image(header_info *hi) { - unsigned int size; - OBJC_CONSTANT_STRING_PTR section; - struct objc_class * constantStringClass; - unsigned int index; - - // Locate section holding string objects - section = _getObjcStringObjects ((headerType *) hi->mhdr, &size); - if (!section || !size) - return; - section = (OBJC_CONSTANT_STRING_PTR) ((unsigned long) section + hi->image_slide); - - // Luckily NXConstantString is the same size as NSConstantString - constantStringClass = objc_getClass ("NSConstantString"); + unsigned int index; + unsigned int midx; + Module mods; + BOOL replacement = _objcHeaderIsReplacement(hi); - // Process each string object in the section - for (index = 0; index < size; index += 1) + // Major loop - process all modules in the image + mods = hi->mod_ptr; + for (midx = 0; midx < hi->mod_count; midx += 1) { - struct objc_class * * isaptr; + // Skip module containing no classes + if (mods[midx].symtab == NULL) + continue; - isaptr = (struct objc_class * *) OBJC_CONSTANT_STRING_DEREF section[index]; - if (*isaptr == 0) - *isaptr = constantStringClass; + // Minor loop - process all the classes in given module + for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1) + { + struct objc_class *cls = mods[midx].symtab->defs[index]; + if (! replacement) { + BOOL connected = connect_class(cls); + if (connected && callbackFunction) { + (*callbackFunction)(cls, 0); + } + } else { + // Replacement image - fix up super_class only (#3704817) + const char *super_name = (const char *) cls->super_class; + if (super_name) cls->super_class = objc_getClass(super_name); + } + } } } + /*********************************************************************** * _objc_map_class_refs_for_image. Convert the class ref entries from * a class name string pointer to a class pointer. If the class does @@ -1097,58 +1932,106 @@ static void _objc_map_class_refs_for_image (header_info * hi) ref = (const char *) cls_refs[index]; // Get pointer to class of this name - cls = (struct objc_class *)objc_lookUpClass (ref); - - // If class isn't there yet, use pending mechanism - if (!cls) - { - // Register this ref to be set later - objc_pendClassReference (ref, &cls_refs[index]); - - // Use place-holder class + // YES unconnected, YES class loader + cls = look_up_class(ref, YES, YES); + if (cls) { + // Referenced class exists. Fix up the reference. + cls_refs[index] = cls; + } else { + // Referenced class does not exist yet. Insert a placeholder + // class and fix up the reference later. + pendClassReference (&cls_refs[index], ref); cls_refs[index] = _objc_getNonexistentClass (); } - - // Replace name string pointer with class pointer - else - cls_refs[index] = cls; } } + +/*********************************************************************** +* _objc_remove_pending_class_refs_in_image +* Delete any pending class ref fixups for class refs in the given image, +* because the image is about to be unloaded. +**********************************************************************/ +static void _objc_remove_pending_class_refs_in_image(header_info *hi) +{ + struct objc_class **cls_refs, **cls_refs_end; + unsigned int size; + + if (!pendingClassRefsMap) return; + + // Locate class refs in this image + cls_refs = _getObjcClassRefs ((headerType *) hi->mhdr, &size); + if (!cls_refs) + return; + cls_refs = (struct objc_class **) ((uintptr_t)cls_refs + hi->image_slide); + cls_refs_end = (struct objc_class **)(size + (uintptr_t)cls_refs); + + // Search the pending class ref table for class refs in this range. + // The class refs may have already been stomped with nonexistentClass, + // so there's no way to recover the original class name. + + const char *key; + PendingClassRef *pending; + NXMapState state = NXInitMapState(pendingClassRefsMap); + while(NXNextMapState(pendingClassRefsMap, &state, + (const void **)&key, (const void **)&pending)) + { + for ( ; pending != NULL; pending = pending->next) { + if (pending->ref >= cls_refs && pending->ref < cls_refs_end) { + pending->ref = NULL; + } + } + } +} + + /*********************************************************************** * map_selrefs. Register each selector in the specified array. If a * given selector is already registered, update this array to point to * the registered selector string. +* If copy is TRUE, all selector data is always copied. This is used +* for registering selectors from unloadable bundles, so the selector +* can still be used after the bundle's data segment is unmapped. +* Returns YES if dst was written to, NO if it was unchanged. **********************************************************************/ -static inline void map_selrefs(SEL *sels, unsigned int cnt) +static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy) { - unsigned int index; + BOOL result = NO; + unsigned int cnt = size / sizeof(SEL); + unsigned int index; sel_lock(); // Process each selector for (index = 0; index < cnt; index += 1) { - SEL sel; + SEL sel; // Lookup pointer to uniqued string - sel = sel_registerNameNoCopyNoLock ((const char *) sels[index]); + sel = sel_registerNameNoLock((const char *) src[index], copy); // Replace this selector with uniqued one (avoid // modifying the VM page if this would be a NOP) - if (sels[index] != sel) - sels[index] = sel; + if (dst[index] != sel) { + dst[index] = sel; + result = YES; + } } sel_unlock(); + + return result; } /*********************************************************************** * map_method_descs. For each method in the specified method list, * replace the name pointer with a uniqued selector. +* If copy is TRUE, all selector data is always copied. This is used +* for registering selectors from unloadable bundles, so the selector +* can still be used after the bundle's data segment is unmapped. **********************************************************************/ -static void map_method_descs (struct objc_method_description_list * methods) +static void map_method_descs (struct objc_method_description_list * methods, BOOL copy) { unsigned int index; @@ -1164,7 +2047,7 @@ static void map_method_descs (struct objc_method_description_list * methods) method = &methods->list[index]; // Lookup pointer to uniqued string - sel = sel_registerNameNoCopyNoLock ((const char *) method->name); + sel = sel_registerNameNoLock((const char *) method->name, copy); // Replace this selector with uniqued one (avoid // modifying the VM page if this would be a NOP) @@ -1191,6 +2074,7 @@ static void _objc_fixup_protocol_objects_for_image (header_info * hi) unsigned int size; OBJC_PROTOCOL_PTR protos; unsigned int index; + int isBundle = hi->mhdr->filetype == MH_BUNDLE; // Locate protocols in the image protos = (OBJC_PROTOCOL_PTR) _getObjcProtocols ((headerType *) hi->mhdr, &size); @@ -1205,11 +2089,11 @@ static void _objc_fixup_protocol_objects_for_image (header_info * hi) { // Selectorize the instance methods if (protos[index] OBJC_PROTOCOL_DEREF instance_methods) - map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods); + map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods, isBundle); // Selectorize the class methods if (protos[index] OBJC_PROTOCOL_DEREF class_methods) - map_method_descs (protos[index] OBJC_PROTOCOL_DEREF class_methods); + map_method_descs (protos[index] OBJC_PROTOCOL_DEREF class_methods, isBundle); } // Invoke Protocol class method to fix up the protocol @@ -1232,363 +2116,389 @@ void _objc_bindModuleContainingList() { */ } -/********************************************************************** -* _objc_bind_symbol. Bind the module containing the symbol. Use 2-level namespace API -* Only look in images that we know to have ObjC symbols (e.g. 9 for Mail 7/2001) -* Radar 2701686 -***********************************************************************/ -static void _objc_bind_symbol(const char *name) -{ - static header_info *lastHeader = NULL; - header_info *hInfo; - const headerType *imageHeader = lastHeader ? lastHeader->mhdr : NULL; - // First assume there is some locality and search where we last found a symbol - if ( imageHeader - && NSIsSymbolNameDefinedInImage(imageHeader, name) - && NSLookupSymbolInImage(imageHeader, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND) != NULL ) - { - // Found - return; - } +/*********************************************************************** +* _objc_addHeader. +**********************************************************************/ - // Symbol wasn't found in the image we last searched - // Search in all the images known to contain ObjcC - for ( hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) - { - if (_objcHeaderIsReplacement(hInfo)) { - continue; // no classes or categories used from image; skip it - } - imageHeader = hInfo->mhdr; - if ( hInfo != lastHeader - && NSIsSymbolNameDefinedInImage(imageHeader, name) - && NSLookupSymbolInImage(imageHeader, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND) != NULL ) - { - // found - lastHeader = hInfo; - return; - } - } - // die now, or later ?? - // _objc_fatal("could not find %s", name); -} - -/*********************************************************************** -* _symbolNameForCategory -* Constructs the symbol name for the given category. -* The symbol name is ".objc_category_name__", -* where is the class name with the leading '%'s stripped. -* The caller must free() the result. -**********************************************************************/ -static char *_symbolNameForCategory(Category cat) -{ - char * class_name; - char * category_name; - char * name; - - class_name = cat->class_name; - category_name = cat->category_name; - - name = malloc(strlen(class_name) + strlen(category_name) + 30); +// tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20 +#define HINFO_SIZE 16 - while (*class_name == '%') - class_name += 1; - strcpy (name, ".objc_category_name_"); - strcat (name, class_name); - strcat (name, "_"); - strcat (name, category_name); - return name; -} +static int HeaderInfoCounter NOBSS = 0; +static header_info HeaderInfoTable[HINFO_SIZE] NOBSS = { {0} }; -/*********************************************************************** -* _symbolNameForClass -* Constructs the symbol name for the given class. -* The symbol name is ".objc_class_name_", -* where is the class name with the leading '%'s stripped. -* The caller must free() the result. -**********************************************************************/ -static char *_symbolNameForClass(Class cls) +static header_info * _objc_addHeader(const struct mach_header *header) { - char * name; - const char * class_name; + int mod_count = 0; + uintptr_t mod_unslid; + uint32_t info_size = 0; + uintptr_t image_info_unslid; + const struct segment_command *objc_segment; + ptrdiff_t slide; + header_info *result; - class_name = cls->name; + // Locate the __OBJC segment + objc_segment = getsegbynamefromheader(header, SEG_OBJC); + if (!objc_segment) return NULL; - name = malloc(strlen(class_name) + 20); + // Locate some sections in the __OBJC segment + mod_unslid = (uintptr_t)_getObjcModules(header, &mod_count); + if (!mod_unslid) return NULL; + image_info_unslid = (uintptr_t)_getObjcImageInfo(header, &info_size); - while (*class_name == '%') - class_name += 1; - strcpy (name, ".objc_class_name_"); - strcat (name, class_name); - return name; -} + // Calculate vm slide. + slide = _getImageSlide(header); -/*********************************************************************** -* _objc_bindClassIfNeeded. -* If the given class is still marked as needs-bind, bind the module -* containing it. -* Called during _objc_call_loads_for_image just before sending +load, -* and during class_initialize just before sending +initialize. -**********************************************************************/ -void _objc_bindClassIfNeeded(struct objc_class *cls) -{ - // Clear NEED_BIND *after* binding to prevent race - // This assumes that simultaneous binding of one module by two threads is ok. - if (cls->info & CLS_NEED_BIND) { - _objc_bindModuleContainingClass(cls); - cls->info &= ~CLS_NEED_BIND; + // Find or allocate a header_info entry. + if (HeaderInfoCounter < HINFO_SIZE) { + result = &HeaderInfoTable[HeaderInfoCounter++]; + } else { + result = _malloc_internal(sizeof(header_info)); } -} + // Set up the new header_info entry. + result->mhdr = header; + result->mod_ptr = (Module)(mod_unslid + slide); + result->mod_count = mod_count; + result->image_slide = slide; + result->objcSegmentHeader = objc_segment; + if (image_info_unslid) { + result->info = (objc_image_info *)(image_info_unslid + slide); + } else { + result->info = NULL; + } -/*********************************************************************** -* _objc_bindModuleContainingCategory. Bind the module containing the -* category. If that module is already bound, do nothing. -**********************************************************************/ -static void _objc_bindModuleContainingCategory(struct objc_category *cat) -{ - const header_info *hInfo; - - if (PrintBinding) { - _objc_inform("binding category %s(%s)", - cat->class_name, cat->category_name); + // Make sure every copy of objc_image_info in this image is the same. + // This means same version and same bitwise contents. + if (result->info) { + objc_image_info *start = result->info; + objc_image_info *end = + (objc_image_info *)(info_size + (uint8_t *)start); + objc_image_info *info = start; + while (info < end) { + // version is byte size, except for version 0 + size_t struct_size = info->version; + if (struct_size == 0) struct_size = 2 * sizeof(uint32_t); + if (info->version != start->version || + 0 != memcmp(info, start, struct_size)) + { + _objc_fatal("'%s' has inconsistently-compiled Objective-C " + "code. Please recompile all code in it.", + _nameForHeader(header)); + } + info = (objc_image_info *)(struct_size + (uint8_t *)info); + } } - - hInfo = _headerForCategory(cat); - if (hInfo) { - Module module = _moduleForCategoryFromImage(cat, hInfo); - if (module) { - _dyld_bind_objc_module(module); - return; + + // Add the header to the header list. + // The header is appended to the list, to preserve the bottom-up order. + result->next = NULL; + if (!FirstHeader) { + // list is empty + FirstHeader = LastHeader = result; + } else { + if (!LastHeader) { + // list is not empty, but LastHeader is invalid - recompute it + LastHeader = FirstHeader; + while (LastHeader->next) LastHeader = LastHeader->next; } + // LastHeader is now valid + LastHeader->next = result; + LastHeader = result; } - { - // Header-finding or module-finding shortcut didn't work. - // Bind using symbol name. - char *symbolName = _symbolNameForCategory(cat); - _objc_bind_symbol(symbolName); - free(symbolName); - } + return result; } - + /*********************************************************************** -* _objc_bindModuleContainingClass. Bind the module containing the -* class. If that module is already bound, do nothing. -* This is done lazily, just before calling +load or +initialize. +* _objc_RemoveHeader +* Remove the given header from the header list. +* FirstHeader is updated. +* LastHeader is set to NULL. Any code that uses LastHeader must +* detect this NULL and recompute LastHeader by traversing the list. **********************************************************************/ -void _objc_bindModuleContainingClass(struct objc_class *cls) +static void _objc_removeHeader(header_info *hi) { - const header_info *hInfo; - - if (PrintBinding) { - _objc_inform("binding class %s", cls->name); - } - - // Use the real class behind the poser - if (CLS_GETINFO (cls, CLS_POSING)) { - cls = getOriginalClassForPosingClass (cls); - } - - hInfo = _headerForClass(cls); - if (hInfo) { - Module module = _moduleForClassFromImage(cls, hInfo); - if (module) { - _dyld_bind_objc_module(module); - return; + header_info **hiP; + + for (hiP = &FirstHeader; *hiP != NULL; hiP = &(**hiP).next) { + if (*hiP == hi) { + header_info *deadHead = *hiP; + + // Remove from the linked list (updating FirstHeader if necessary). + *hiP = (**hiP).next; + + // Update LastHeader if necessary. + if (LastHeader == deadHead) { + LastHeader = NULL; // will be recomputed next time it's used + } + + // Free the memory, unless it was in the static HeaderInfoTable. + if (deadHead < HeaderInfoTable || + deadHead >= HeaderInfoTable + HINFO_SIZE) + { + _free_internal(deadHead); + } + + break; } } - - { - // Module not bound, and header-finding or module-finding shortcut - // didn't work. Bind using symbol name. - // This happens for the NSCF class structs which are copied elsewhere. - char *symbolName = _symbolNameForClass(cls); - _objc_bind_symbol(symbolName); - free(symbolName); - } } /*********************************************************************** -* _objc_addHeader. -* +* check_gc +* Check whether the executable supports or requires GC, and make sure +* all already-loaded libraries support the executable's GC mode. +* Returns TRUE if the executable wants GC on. **********************************************************************/ - -// tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20 -#define HINFO_SIZE 16 - -static int HeaderInfoCounter = 0; -static header_info HeaderInfoTable[HINFO_SIZE] = { {0} }; - -static header_info * _objc_addHeader(const headerType *header, unsigned long vmaddr_slide) +static BOOL check_wants_gc(void) { - int mod_count; - Module mod_ptr = _getObjcModules ((headerType *) header, &mod_count); - char *image_info_ptr = (char *)_getObjcImageInfo((headerType *)header); - header_info *result; - - // if there is no objc data - ignore this entry! - if (mod_ptr == NULL) { - return NULL; - } - - if (HeaderInfoCounter < HINFO_SIZE) { - // avoid mallocs for the common case - result = &HeaderInfoTable[HeaderInfoCounter++]; + // GC is off in Tiger. + return NO; + /* + const header_info *hi; + BOOL appWantsGC; + + // Environment variables can override the following. + if (ForceGC) { + _objc_inform("GC: forcing GC ON because OBJC_FORCE_GC is set"); + appWantsGC = YES; + } + else if (ForceNoGC) { + _objc_inform("GC: forcing GC OFF because OBJC_FORCE_NO_GC is set"); + appWantsGC = NO; } else { - result = malloc_zone_malloc(_objc_create_zone(), sizeof(header_info)); - } - - // Set up the new vector entry - result->mhdr = header; - result->mod_ptr = mod_ptr; - result->mod_count = mod_count; - result->image_slide = vmaddr_slide; - result->objcData = _getObjcHeaderData(header, &result->objcDataSize); - if (image_info_ptr) { - result->info = (objc_image_info *)(vmaddr_slide + image_info_ptr); - } else { - result->info = NULL; + // Find the executable and check its GC bits. + // If the executable cannot be found, default to NO. + // (The executable will not be found if the executable contains + // no Objective-C code.) + appWantsGC = NO; + for (hi = FirstHeader; hi != NULL; hi = hi->next) { + if (hi->mhdr->filetype == MH_EXECUTE) { + appWantsGC = _objcHeaderSupportsGC(hi) ? YES : NO; + if (PrintGC) { + _objc_inform("GC: executable '%s' %s GC", + _nameForHeader(hi->mhdr), + appWantsGC ? "supports" : "does not support"); + } + } + } } - - // chain it on - // (a simple lock here would go a long way towards thread safety) - result->next = FirstHeader; - FirstHeader = result; - - return result; + return appWantsGC; + */ } -/********************************************************************** -* _objc_fatalHeader -* -* If we have it we're in trouble -**************************************************************************/ -static void _objc_fatalHeader(const headerType *header) +/*********************************************************************** +* verify_gc_readiness +* if we want gc, verify that every header describes files compiled +* and presumably ready for gc. +************************************************************************/ + +static void verify_gc_readiness(BOOL wantsGC, header_info *hi) { - header_info *hInfo; + BOOL busted = NO; + + // Find the libraries and check their GC bits against the app's request + for (; hi != NULL; hi = hi->next) { + if (hi->mhdr->filetype == MH_EXECUTE) { + continue; + } + else if (hi->mhdr == &_mh_dylib_header) { + // libobjc itself works with anything even though it is not + // compiled with -fobjc-gc (fixme should it be?) + } + else if (wantsGC && ! _objcHeaderSupportsGC(hi)) { + // App wants GC but library does not support it - bad + _objc_inform("'%s' was not compiled with -fobjc-gc, but " + "the application requires GC", + _nameForHeader(hi->mhdr)); + busted = YES; + } + + if (PrintGC) { + _objc_inform("GC: library '%s' %s GC", _nameForHeader(hi->mhdr), + _objcHeaderSupportsGC(hi) ? "supports" : "does not support"); + } + } - for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) { - if (hInfo->mhdr == header) { - _objc_fatal("cannot unmap an image containing ObjC data"); + if (busted) { + // GC state is not consistent. + // Kill the process unless one of the forcing flags is set. + if (!ForceGC && !ForceNoGC) { + _objc_fatal("*** GC capability of application and some libraries did not match"); } } } + /*********************************************************************** * _objc_fixup_selector_refs. Register all of the selectors in each * image, and fix them all up. -* +* +* If the image is a dylib (not a bundle or an executable), and contains +* at least one full aligned page of selector refs, this function uses +* the shared range functions to try to recycle already-written memory +* from other processes. **********************************************************************/ static void _objc_fixup_selector_refs (const header_info * hi) { - unsigned int size; - Module mods; - SEL * messages_refs; + unsigned int count; + Module mods; + vm_address_t local_sels; + vm_size_t local_size; - mods = (Module) ((unsigned long) hi->mod_ptr + hi->image_slide); + mods = hi->mod_ptr; // Fix up message refs - messages_refs = (SEL *) _getObjcMessageRefs ((headerType *) hi->mhdr, &size); - if (messages_refs) - { - messages_refs = (SEL *) ((unsigned long) messages_refs + hi->image_slide); - map_selrefs (messages_refs, size); - } -} - - -/*********************************************************************** -* _objc_call_loads_for_image. -**********************************************************************/ -static void _objc_call_loads_for_image (header_info * header) -{ - struct objc_class * cls; - struct objc_class * * pClass; - Category * pCategory; - IMP load_method; - unsigned int nModules; - unsigned int nClasses; - unsigned int nCategories; - struct objc_symtab * symtab; - struct objc_module * module; + local_sels = (vm_address_t) _getObjcMessageRefs ((headerType *) hi->mhdr, &count); + local_size = count * sizeof(SEL); + + if (local_sels) { + vm_address_t aligned_start, aligned_end; + + local_sels = local_sels + hi->image_slide; + aligned_start = round_page(local_sels); + aligned_end = trunc_page(local_sels + local_size); + + if (aligned_start >= aligned_end || + hi->mhdr->filetype == MH_BUNDLE || + hi->mhdr->filetype == MH_EXECUTE) + { + // Less than a page of sels, OR bundle or executable - fix in place - if (_objcHeaderIsReplacement(header)) { - return; // Don't call +load again - } + map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, + hi->mhdr->filetype == MH_BUNDLE); - // Major loop - process all modules named in header - module = (struct objc_module *) ((unsigned long) header->mod_ptr + header->image_slide); - for (nModules = header->mod_count; nModules; nModules -= 1, module += 1) - { - symtab = module->symtab; - if (symtab == NULL) - continue; + if (PrintSharing) { + _objc_inform("SHARING: NONE [%p..%p) (%d pages) for %s", + local_sels, local_sels+local_size, + (aligned_end > aligned_start ? + (aligned_end-aligned_start) / vm_page_size : 0), + _nameForHeader(hi->mhdr)); + } + } + else { + // At least one page of sels - try to use sharing + vm_range_t remote_range; + + if (PrintSharing) { + _objc_inform("SHARING: looking for range [%p..%p) ...", + aligned_start, aligned_end); + } - // Minor loop - call the +load from each class in the given module - for (nClasses = symtab->cls_def_cnt, pClass = (Class *) symtab->defs; - nClasses; - nClasses -= 1, pClass += 1) - { - struct objc_method_list **mlistp; - cls = (struct objc_class *)*pClass; - mlistp = get_base_method_list(cls->isa); - if (cls->isa->methodLists && mlistp) - { - // Look up the method manually (vs messaging the class) to bypass - // +initialize and cache fill on class that is not even loaded yet - load_method = class_lookupNamedMethodInMethodList (*mlistp, "load"); - if (load_method) { - _objc_bindClassIfNeeded(cls); - (*load_method) ((id) cls, @selector(load)); + remote_range = get_shared_range(aligned_start, aligned_end); + + if (remote_range.address != 0) { + // Sharing succeeded - fix using remote_range + BOOL stomped; + + // local_sels..aligned_start (unshared) + map_selrefs((SEL *)local_sels, (SEL *)local_sels, + aligned_start - local_sels, NO); + // aligned_start..aligned_end (shared) + stomped = + map_selrefs((SEL *)aligned_start, (SEL *)remote_range.address, + aligned_end - aligned_start, NO); + // aligned_end..local_sels+local_size (unshared) + map_selrefs((SEL *)aligned_end, (SEL *)aligned_end, + local_sels+local_size - aligned_end, NO); + + install_shared_range(remote_range, aligned_start); + + if (PrintSharing) { + _objc_inform("SHARING: %s [%p..%p) (%d pages) for %s", + stomped ? "TRIED" : "USING", + local_sels, local_sels+local_size, + (aligned_end-aligned_start) / vm_page_size, + _nameForHeader(hi->mhdr)); } - } - } + } + else { + // Sharing failed, including first process - + // fix in place and then offer to share - // Minor loop - call the +load from augmented class of - // each category in the given module - for (nCategories = symtab->cat_def_cnt, - pCategory = (Category *) &symtab->defs[symtab->cls_def_cnt]; - nCategories; - nCategories -= 1, pCategory += 1) - { - struct objc_method_list * methods; + map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, NO); - methods = (*pCategory)->class_methods; - if (methods) - { - load_method = class_lookupNamedMethodInMethodList (methods, "load"); - if (load_method) { - // Strictly speaking we shouldn't need (and don't want) to get the class here - // The side effect we're looking for is to load it if needed. - // Since category +loads are rare we could spend some cycles finding out - // if we have a "bindme" TBD and do it here, saving a class load. - // But chances are the +load will cause class initialization anyway - cls = objc_getClass ((*pCategory)->class_name); - // the class & all categories are now bound in - (*load_method) ((id) cls, @selector(load)); + offer_shared_range(aligned_start, aligned_end); + + if (PrintSharing) { + _objc_inform("SHARING: OFFER [%p..%p) (%d pages) for %s", + local_sels, local_sels+local_size, + (aligned_end-aligned_start) / vm_page_size, + _nameForHeader(hi->mhdr)); } } } } } + /*********************************************************************** -* runtime configuration +* objc_setConfiguration +* Read environment variables that affect the runtime. +* Also print environment variable help, if requested. **********************************************************************/ static void objc_setConfiguration() { - if ( LaunchingDebug == -1 ) { - // watch image loading and binding - LaunchingDebug = getenv("LaunchingDebug") != NULL; + int PrintHelp = (getenv("OBJC_HELP") != NULL); + int PrintOptions = (getenv("OBJC_PRINT_OPTIONS") != NULL); + + if (PrintHelp) { + _objc_inform("OBJC_HELP: describe Objective-C runtime environment variables"); + if (PrintOptions) { + _objc_inform("OBJC_HELP is set"); + } + _objc_inform("OBJC_PRINT_OPTIONS: list which options are set"); + } + if (PrintOptions) { + _objc_inform("OBJC_PRINT_OPTIONS is set"); } - if ( PrintBinding == -1 ) { - PrintBinding = getenv("OBJC_PRINT_BIND") != NULL; + +#define OPTION(var, env, help) \ + if ( var == -1 ) { \ + var = getenv(#env) != NULL; \ + if (PrintHelp) _objc_inform(#env ": " help); \ + if (PrintOptions && var) _objc_inform(#env " is set"); \ } + + OPTION(PrintImages, OBJC_PRINT_IMAGES, + "log image and library names as the runtime loads them"); + OPTION(PrintConnecting, OBJC_PRINT_CONNECTION, + "log progress of class and category connections"); + OPTION(PrintLoading, OBJC_PRINT_LOAD_METHODS, + "log class and category +load methods as they are called"); + OPTION(PrintRTP, OBJC_PRINT_RTP, + "log initialization of the Objective-C runtime pages"); + OPTION(PrintGC, OBJC_PRINT_GC, + "log some GC operations"); + OPTION(PrintSharing, OBJC_PRINT_SHARING, + "log cross-process memory sharing"); + OPTION(PrintCxxCtors, OBJC_PRINT_CXX_CTORS, + "log calls to C++ ctors and dtors for instance variables"); + + OPTION(DebugUnload, OBJC_DEBUG_UNLOAD, + "warn about poorly-behaving bundles when unloaded"); + OPTION(DebugFragileSuperclasses, OBJC_DEBUG_FRAGILE_SUPERCLASSES, + "warn about subclasses that may have been broken by subsequent changes to superclasses"); + + OPTION(UseInternalZone, OBJC_USE_INTERNAL_ZONE, + "allocate runtime data in a dedicated malloc zone"); + OPTION(AllowInterposing, OBJC_ALLOW_INTERPOSING, + "allow function interposing of objc_msgSend()"); + + OPTION(ForceGC, OBJC_FORCE_GC, + "force GC ON, even if the executable wants it off"); + OPTION(ForceNoGC, OBJC_FORCE_NO_GC, + "force GC OFF, even if the executable wants it on"); + OPTION(CheckFinalizers, OBJC_CHECK_FINALIZERS, + "warn about classes that implement -dealloc but not -finalize"); +#undef OPTION } + + /*********************************************************************** * objc_setMultithreaded. **********************************************************************/ @@ -1613,263 +2523,476 @@ void _objc_pthread_destroyspecific(void *arg) // add further cleanup here... - free(data); + _free_internal(data); } } /*********************************************************************** -* _objcInit. -* Library initializer called by dyld & from crt0 +* _objcInit +* Former library initializer. This function is now merely a placeholder +* for external callers. All runtime initialization has now been moved +* to map_images(). **********************************************************************/ +void _objcInit(void) +{ + // do nothing +} + -void _objcInit(void) { +/*********************************************************************** +* map_images +* Process the given images which are being mapped in by dyld. +* All class registration and fixups are performed (or deferred pending +* discovery of missing superclasses etc), and +load methods are called. +* +* info[] is in bottom-up order i.e. libobjc will be earlier in the +* array than any library that links to libobjc. +**********************************************************************/ +static void map_images(const struct dyld_image_info infoList[], + uint32_t infoCount) +{ + static BOOL firstTime = YES; + static BOOL wantsGC NOBSS = NO; + uint32_t i; + header_info *firstNewHeader = NULL; header_info *hInfo; - static int _done = 0; - extern void __CFInitialize(void); - extern int ptrace(int, int, int, int); // a system call visible to sc_trace - /* Protect against multiple invocations, as all library - * initializers should. */ - if (0 != _done) return; - _done = 1; + // Perform first-time initialization if necessary. + // This function is called before ordinary library initializers. + if (firstTime) { + pthread_key_create(&_objc_pthread_key, _objc_pthread_destroyspecific); + objc_setConfiguration(); // read environment variables + _objc_init_class_hash (); // create class_hash + // grab selectors for which @selector() doesn't work + cxx_construct_sel = sel_registerName(cxx_construct_name); + cxx_destruct_sel = sel_registerName(cxx_destruct_name); + } - ptrace(0xb000, 0, 0, 0); - trace(0xb000, 0, 0, 0); + if (PrintImages) { + _objc_inform("IMAGES: processing %u newly-mapped images...\n", infoCount); + } - // make sure CF is initialized before we go further; - // someday this can be removed, as it'll probably be automatic - __CFInitialize(); - - pthread_key_create(&_objc_pthread_key, _objc_pthread_destroyspecific); - // Create the class lookup table - _objc_init_class_hash (); + // Find all images with an __OBJC segment. + // firstNewHeader is set the the first one, and the header_info + // linked list following firstNewHeader is the rest. + for (i = 0; i < infoCount; i++) { + const struct mach_header *mhdr = infoList[i].imageLoadAddress; - trace(0xb001, 0, 0, 0); + hInfo = _objc_addHeader(mhdr); + if (!hInfo) { + // no objc data in this entry + if (PrintImages) { + _objc_inform("IMAGES: image '%s' contains no __OBJC segment\n", + infoList[i].imageFilePath); + } + continue; + } - objc_setConfiguration(); // Get our configuration - - trace(0xb003, 0, 0, 0); + if (!firstNewHeader) firstNewHeader = hInfo; + + if (PrintImages) { + _objc_inform("IMAGES: loading image for %s%s%s%s\n", + _nameForHeader(mhdr), + mhdr->filetype == MH_BUNDLE ? " (bundle)" : "", + _objcHeaderIsReplacement(hInfo) ? " (replacement)":"", + _objcHeaderSupportsGC(hInfo) ? " (supports GC)":""); + } + } - // a pre-cheetah comment: - // XXXXX BEFORE HERE *NO* PAGES ARE STOMPED ON; + // Perform one-time runtime initialization that must be deferred until + // the executable itself is found. This needs to be done before + // further initialization. + // (The executable may not be present in this infoList if the + // executable does not contain Objective-C code but Objective-C + // is dynamically loaded later. In that case, check_wants_gc() + // will do the right thing.) + if (firstTime) { + wantsGC = check_wants_gc(); + verify_gc_readiness(wantsGC, FirstHeader); + // TIGER DEVELOPMENT ONLY + // REQUIRE A SPECIAL NON-SHIPPING FILE TO ENABLE GC + if (wantsGC) { + // make sure that the special file is there before proceeding with GC + struct stat ignored; + wantsGC = stat("/autozone", &ignored) != -1; + if (!wantsGC && PrintGC) + _objc_inform("GC: disabled, lacking /autozone file"); + } + + gc_init(wantsGC); // needs executable for GC decision + rtp_init(); // needs GC decision first + } else { + verify_gc_readiness(wantsGC, firstNewHeader); + } - // Register our image mapping routine with dyld so it - // gets invoked when an image is added. This also invokes - // the callback right now on any images already present. - // The modules present in the application and the existing - // mapped images are treated differently than a newly discovered - // mapped image - we process all modules for classes before - // trying to install_relationships (glue up their superclasses) - // or trying to send them any +load methods. + // Initialize everything. Parts of this order are important for + // correctness or performance. - // So we tell the map_image dyld callback to not do this part... + // Read classes from all images. + for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { + _objc_read_classes_from_image(hInfo); + } - Postpone_install_relationships = 1; + // Read categories from all images. + for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { + _objc_read_categories_from_image(hInfo); + } - // register for unmapping first so we can't miss any during load attempts - _dyld_register_func_for_remove_image (&_objc_unmap_image); + // Connect classes from all images. + for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { + _objc_connect_classes_from_image(hInfo); + } - // finally, register for images - _dyld_register_func_for_add_image (&_objc_map_image); + // Fix up class refs, selector refs, and protocol objects from all images. + for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { + _objc_map_class_refs_for_image(hInfo); + _objc_fixup_selector_refs(hInfo); + _objc_fixup_protocol_objects_for_image(hInfo); + } - // a pre-cheetah comment: - // XXXXX BEFORE HERE *ALL* PAGES ARE STOMPED ON + // Close any shared range file left open during selector uniquing + clear_shared_range_file_cache(); - Postpone_install_relationships = 0; + firstTime = NO; - trace(0xb006, 0, 0, 0); - - // Install relations on classes that were found - for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) - { - int nModules; - int index; - struct objc_module * module; - struct objc_class * cls; + // Call pending +load methods. + // Note that this may in turn cause map_images() to be called again. + call_load_methods(); +} - module = (struct objc_module *) ((unsigned long) hInfo->mod_ptr + hInfo->image_slide); - for (nModules = hInfo->mod_count; nModules; nModules--, module++) - { - if (module->symtab) { - for (index = 0; index < module->symtab->cls_def_cnt; index++) - { - cls = (struct objc_class *) module->symtab->defs[index]; - _class_install_relationships (cls, module->version); - } - } - } - trace(0xb007, hInfo, hInfo->mod_count, 0); +/*********************************************************************** +* unmap_images +* Process the given images which are about to be unmapped by dyld. +* Currently we assume only MH_BUNDLE images are unmappable, and +* print warnings about anything else. +**********************************************************************/ +static void unmap_images(const struct dyld_image_info infoList[], + uint32_t infoCount) +{ + uint32_t i; + if (PrintImages) { + _objc_inform("IMAGES: processing %u newly-unmapped images...\n", infoCount); } - trace(0xb008, 0, 0, 0); + for (i = 0; i < infoCount; i++) { + const struct mach_header *mhdr = infoList[i].imageLoadAddress; - for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) - { - // Initialize the isa pointers of all NXConstantString objects - (void)_objc_fixup_string_objects_for_image (hInfo); - - // Convert class refs from name pointers to ids - (void)_objc_map_class_refs_for_image (hInfo); + if (mhdr->filetype == MH_BUNDLE) { + _objc_unmap_image(mhdr); + } else { + // currently only MH_BUNDLEs can be unmapped safely + if (PrintImages) { + _objc_inform("IMAGES: unmapped image '%s' was not a Mach-O bundle; ignoring\n", infoList[i].imageFilePath); + } + } } - - trace(0xb00a, 0, 0, 0); - - // For each image selectorize the method names and +_fixup each of - // protocols in the image - for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) - _objc_fixup_protocol_objects_for_image (hInfo); - - for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) - _objc_call_loads_for_image (hInfo); - - ptrace(0xb00f, 0, 0, 0); // end of __initialize_objc ObjC init - trace(0xb00f, 0, 0, 0); // end of __initialize_objc ObjC init } /*********************************************************************** -* _objc_map_image. +* _objc_notify_images +* Callback from dyld informing objc of images to be added or removed. +* This function is never called directly. Instead, a section +* __OBJC,__image_notify contains a function pointer to this, and dyld +* discovers it from there. **********************************************************************/ -static void _objc_map_image(headerType *mh, unsigned long vmaddr_slide) +__private_extern__ +void _objc_notify_images(enum dyld_image_mode mode, uint32_t infoCount, + const struct dyld_image_info infoList[]) { - static int dumpClasses = -1; - header_info *hInfo; - - if ( dumpClasses == -1 ) { - if ( getenv("OBJC_DUMP_CLASSES") ) dumpClasses = 1; - else dumpClasses = 0; + if (mode == dyld_image_adding) { + map_images(infoList, infoCount); + } else if (mode == dyld_image_removing) { + unmap_images(infoList, infoCount); } +} - trace(0xb100, 0, 0, 0); - // Add this header to the chain - hInfo = _objc_addHeader (mh, vmaddr_slide); +/*********************************************************************** +* _objc_remove_classes_in_image +* Remove all classes in the given image from the runtime, because +* the image is about to be unloaded. +* Things to clean up: +* class_hash +* unconnected_class_hash +* pending subclasses list (only if class is still unconnected) +* loadable class list +* class's method caches +* class refs in all other images +**********************************************************************/ +static void _objc_remove_classes_in_image(header_info *hi) +{ + unsigned int index; + unsigned int midx; + Module mods; - if (!hInfo) return; + OBJC_LOCK(&classLock); - if (LaunchingDebug) { - _objc_syslog("objc_map_image for %s%s\n", - _nameForHeader(mh), - _objcHeaderIsReplacement(hInfo) ? " (replacement)" : ""); - } - - trace(0xb101, 0, 0, 0); - - // Check if all loaded libraries up to and including this one are prebound - // SPI introduced in Panther (Mac OS X 10.3) - all_modules_prebound = _dyld_all_twolevel_modules_prebound(); - if (PrintBinding) { - static int warned = -1; - if (warned != all_modules_prebound) { - _objc_inform("objc: binding: all_modules_prebound is now %d", - all_modules_prebound); - warned = all_modules_prebound; + // Major loop - process all modules in the image + mods = hi->mod_ptr; + for (midx = 0; midx < hi->mod_count; midx += 1) + { + // Skip module containing no classes + if (mods[midx].symtab == NULL) + continue; + + // Minor loop - process all the classes in given module + for (index = 0; index < mods[midx].symtab->cls_def_cnt; index += 1) + { + struct objc_class * cls; + + // Locate the class description pointer + cls = mods[midx].symtab->defs[index]; + + // Remove from loadable class list, if present + remove_class_from_loadable_list(cls); + + // Remove from unconnected_class_hash and pending subclasses + if (unconnected_class_hash && NXHashMember(unconnected_class_hash, cls)) { + NXHashRemove(unconnected_class_hash, cls); + if (pendingSubclassesMap) { + // Find this class in its superclass's pending list + char *supercls_name = (char *)cls->super_class; + PendingSubclass *pending = + NXMapGet(pendingSubclassesMap, supercls_name); + for ( ; pending != NULL; pending = pending->next) { + if (pending->subclass == cls) { + pending->subclass = Nil; + break; + } + } + } + } + + // Remove from class_hash + NXHashRemove(class_hash, cls); + + // Free method list array (from objcTweakMethodListPointerForClass) + // These blocks might be from user code; don't use free_internal + if (cls->methodLists && !(cls->info & CLS_NO_METHOD_ARRAY)) { + free(cls->methodLists); + } + if (cls->isa->methodLists && !(cls->isa->info & CLS_NO_METHOD_ARRAY)) { + free(cls->isa->methodLists); + } + + // Free method caches, if any + if (cls->cache && cls->cache != &emptyCache) { + _free_internal(cls->cache); + } + if (cls->isa->cache && cls->isa->cache != &emptyCache) { + _free_internal(cls->isa->cache); + } } } - // Register any categories and/or classes and/or selectors this image contains - _objc_add_categories_from_image (hInfo); - trace(0xb103, 0, 0, 0); + // Search all other images for class refs that point back to this range. + // Un-fix and re-pend any such class refs. - _objc_add_classes_from_image (class_hash, hInfo); + // Get the location of the dying image's __OBJC segment + uintptr_t seg = hi->objcSegmentHeader->vmaddr + hi->image_slide; + size_t seg_size = hi->objcSegmentHeader->filesize; - trace(0xb104, 0, 0, 0); + header_info *other_hi; + for (other_hi = FirstHeader; other_hi != NULL; other_hi = other_hi->next) { + struct objc_class **other_refs; + unsigned int size; + if (other_hi == hi) continue; // skip the image being unloaded - _objc_fixup_selector_refs (hInfo); + // Locate class refs in the other image + other_refs = _getObjcClassRefs((headerType *)other_hi->mhdr, &size); + if (!other_refs) continue; + other_refs = (struct objc_class **)((uintptr_t)other_refs + other_hi->image_slide); - trace(0xb105, 0, 0, 0); - - // Log all known class names, if asked - if ( dumpClasses ) - { - printf ("classes...\n"); - objc_dump_class_hash (); + // Process each class ref + for (index = 0; index < size; index++) { + if ((uintptr_t)(other_refs[index]) >= seg && + (uintptr_t)(other_refs[index]) < seg+seg_size) + { + pendClassReference(&other_refs[index],other_refs[index]->name); + other_refs[index] = _objc_getNonexistentClass (); + } + } } - if (!Postpone_install_relationships) - { - int nModules; - int index; - struct objc_module * module; - - // Major loop - process each module - module = (struct objc_module *) ((unsigned long) hInfo->mod_ptr + hInfo->image_slide); - - trace(0xb106, hInfo->mod_count, 0, 0); - - for (nModules = hInfo->mod_count; nModules; nModules--, module++) - { - if (!module->symtab) continue; - - // Minor loop - process each class in a given module - for (index = 0; index < module->symtab->cls_def_cnt; index += 1) - { - struct objc_class * cls; + OBJC_UNLOCK(&classLock); +} - // Locate the class description - cls = (struct objc_class *) module->symtab->defs[index]; - // If there is no superclass or the superclass can be found, - // install this class, and invoke the expected callback - if (!((struct objc_class *)cls)->super_class || objc_lookUpClass ((char *) ((struct objc_class *)cls)->super_class)) - { - _class_install_relationships (cls, module->version); - if (callbackFunction) - (*callbackFunction) (cls, 0); - } - else - { - // Super class can not be found yet, arrange for this class to - // be filled in later - objc_pendClassInstallation (cls, module->version); - ((struct objc_class *)cls)->super_class = _objc_getNonexistentClass (); - ((struct objc_class *)cls)->isa->super_class = _objc_getNonexistentClass (); +/*********************************************************************** +* _objc_remove_categories_in_image +* Remove all categories in the given image from the runtime, because +* the image is about to be unloaded. +* Things to clean up: +* unresolved category list +* loadable category list +**********************************************************************/ +static void _objc_remove_categories_in_image(header_info *hi) +{ + Module mods; + unsigned int midx; + + // Major loop - process all modules in the header + mods = hi->mod_ptr; + + for (midx = 0; midx < hi->mod_count; midx++) { + unsigned int index; + unsigned int total; + Symtab symtab = mods[midx].symtab; + + // Nothing to do for a module without a symbol table + if (symtab == NULL) continue; + + // Total entries in symbol table (class entries followed + // by category entries) + total = symtab->cls_def_cnt + symtab->cat_def_cnt; + + // Minor loop - check all categories from given module + for (index = symtab->cls_def_cnt; index < total; index++) { + struct objc_category *cat = symtab->defs[index]; + + // Clean up loadable category list + remove_category_from_loadable_list(cat); + + // Clean up category_hash + if (category_hash) { + _objc_unresolved_category *cat_entry = + NXMapGet(category_hash, cat->class_name); + for ( ; cat_entry != NULL; cat_entry = cat_entry->next) { + if (cat_entry->cat == cat) { + cat_entry->cat = NULL; + break; + } } } } + } +} - trace(0xb108, 0, 0, 0); - - // Initialize the isa pointers of all NXConstantString objects - _objc_fixup_string_objects_for_image (hInfo); - - trace(0xb109, 0, 0, 0); - // Convert class refs from name pointers to ids - _objc_map_class_refs_for_image (hInfo); +/*********************************************************************** +* unload_paranoia +* Various paranoid debugging checks that look for poorly-behaving +* unloadable bundles. +* Called by _objc_unmap_image when OBJC_UNLOAD_DEBUG is set. +**********************************************************************/ +static void unload_paranoia(header_info *hi) +{ + // Get the location of the dying image's __OBJC segment + uintptr_t seg = hi->objcSegmentHeader->vmaddr + hi->image_slide; + size_t seg_size = hi->objcSegmentHeader->filesize; - trace(0xb10a, 0, 0, 0); + _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", + _nameForHeader(hi->mhdr), seg, seg+seg_size); - // Selectorize the method names and +_fixup each of - // protocols in the image - _objc_fixup_protocol_objects_for_image (hInfo); + OBJC_LOCK(&classLock); - trace(0xb10b, 0, 0, 0); + // Make sure the image contains no categories on surviving classes. + { + Module mods; + unsigned int midx; + + // Major loop - process all modules in the header + mods = hi->mod_ptr; + + for (midx = 0; midx < hi->mod_count; midx++) { + unsigned int index; + unsigned int total; + Symtab symtab = mods[midx].symtab; + + // Nothing to do for a module without a symbol table + if (symtab == NULL) continue; + + // Total entries in symbol table (class entries followed + // by category entries) + total = symtab->cls_def_cnt + symtab->cat_def_cnt; + + // Minor loop - check all categories from given module + for (index = symtab->cls_def_cnt; index < total; index++) { + struct objc_category *cat = symtab->defs[index]; + struct objc_class query; + + query.name = cat->class_name; + if (NXHashMember(class_hash, &query)) { + _objc_inform("UNLOAD DEBUG: dying image contains category '%s(%s)' on surviving class '%s'!", cat->class_name, cat->category_name, cat->class_name); + } + } + } + } - // Call +load on all classes and categorized classes - _objc_call_loads_for_image (hInfo); + // Make sure no surviving class is in the dying image. + // Make sure no surviving class has a superclass in the dying image. + // fixme check method implementations too + { + struct objc_class *cls; + NXHashState state; - trace(0xb10c, 0, 0, 0); + state = NXInitHashState(class_hash); + while (NXNextHashState(class_hash, &state, (void **)&cls)) { + if ((vm_address_t)cls >= seg && + (vm_address_t)cls < seg+seg_size) + { + _objc_inform("UNLOAD DEBUG: dying image contains surviving class '%s'!", cls->name); + } + + if ((vm_address_t)cls->super_class >= seg && + (vm_address_t)cls->super_class < seg+seg_size) + { + _objc_inform("UNLOAD DEBUG: dying image contains superclass '%s' of surviving class '%s'!", cls->super_class->name, cls->name); + } + } } - trace(0xb10f, 0, 0, 0); + OBJC_UNLOCK(&classLock); } + /*********************************************************************** * _objc_unmap_image. +* Destroy any Objective-C data for the given image, which is about to +* be unloaded by dyld. +* Note: not thread-safe, but image loading isn't either. **********************************************************************/ -static void _objc_unmap_image(headerType *mh, unsigned long vmaddr_slide) { - // we shouldn't have it if it didn't have objc data - // if we do have it, do a fatal - _objc_fatalHeader(mh); +static void _objc_unmap_image(const headerType *mh) +{ + header_info *hi; + + // Find the runtime's header_info struct for the image + for (hi = FirstHeader; hi != NULL; hi = hi->next) { + if (hi->mhdr == mh) break; + } + if (hi == NULL) return; // no objc data for this image + + if (PrintImages) { + _objc_inform("IMAGES: unloading image for %s%s%s%s\n", + _nameForHeader(mh), + mh->filetype == MH_BUNDLE ? " (bundle)" : "", + _objcHeaderIsReplacement(hi) ? " (replacement)" : "", + _objcHeaderSupportsGC(hi) ? " (supports GC)" : ""); + } + + // Cleanup: + // Remove image's classes from the class list and free auxiliary data. + // Remove image's unresolved or loadable categories and free auxiliary data + // Remove image's unresolved class refs. + _objc_remove_classes_in_image(hi); + _objc_remove_categories_in_image(hi); + _objc_remove_pending_class_refs_in_image(hi); + + // Perform various debugging checks if requested. + if (DebugUnload) unload_paranoia(hi); + + // Remove header_info from header list + _objc_removeHeader(hi); } + /*********************************************************************** * _objc_setNilReceiver **********************************************************************/ @@ -1902,3 +3025,471 @@ void _objc_setClassLoader(BOOL (*newClassLoader)(const char *)) { _objc_classLoader = newClassLoader; } + + +#if defined(__ppc__) + +/********************************************************************** +* objc_write_branch +* Writes at entry a PPC branch instruction sequence that branches to target. +* The sequence written will be 1 or 4 instructions long. +* Returns the number of instructions written. +**********************************************************************/ +__private_extern__ size_t objc_write_branch(void *entry, void *target) +{ + unsigned *address = (unsigned *)entry; // location to store the 32 bit PPC instructions + intptr_t destination = (intptr_t)target; // destination as an absolute address + intptr_t displacement = (intptr_t)destination - (intptr_t)address; // destination as a branch relative offset + + // Test to see if either the displacement or destination is within the +/- 2^25 range needed + // for a simple PPC branch instruction. Shifting the high bit of the displacement (or destination) + // left 6 bits and then 6 bits arithmetically to the right does a sign extend of the 26th bit. If + // that result is equivalent to the original value, then the displacement (or destination) will fit + // into a simple branch. Otherwise a four instruction branch sequence is required. + if (((displacement << 6) >> 6) == displacement) { + // use a relative branch with the displacement + address[0] = 0x48000000 | (displacement & 0x03fffffc); // b *+displacement + // issued 1 instruction + return 1; + } else if (((destination << 6) >> 6) == destination) { + // use an absolute branch with the destination + address[0] = 0x48000000 | (destination & 0x03fffffc) | 2; // ba destination (2 is the absolute flag) + // issued 1 instruction + return 1; + } else { + // The four instruction branch sequence requires that the destination be loaded + // into a register, moved to the CTR register then branch using the contents + // of the CTR register. + unsigned lo = destination & 0xffff; + unsigned hi = (destination >> 16) & 0xffff; + + address[0] = 0x3d800000 | hi; // lis r12,hi ; load the hi half of destination + address[1] = 0x618c0000 | lo; // ori r12,r12,lo ; merge in the lo half of destination + address[2] = 0x7d8903a6; // mtctr ; move destination to the CTR register + address[3] = 0x4e800420; // bctr ; branch to destination + // issued 4 instructions + return 4; + } +} + +// defined(__ppc__) +#endif + + +/********************************************************************** +* secure_open +* Securely open a file from a world-writable directory (like /tmp) +* If the file does not exist, it will be atomically created with mode 0600 +* If the file exists, it must be, and remain after opening: +* 1. a regular file (in particular, not a symlink) +* 2. owned by euid +* 3. permissions 0600 +* 4. link count == 1 +* Returns a file descriptor or -1. Errno may or may not be set on error. +**********************************************************************/ +__private_extern__ int secure_open(const char *filename, int flags, uid_t euid) +{ + struct stat fs, ls; + int fd = -1; + BOOL truncate = NO; + BOOL create = NO; + + if (flags & O_TRUNC) { + // Don't truncate the file until after it is open and verified. + truncate = YES; + flags &= ~O_TRUNC; + } + if (flags & O_CREAT) { + // Don't create except when we're ready for it + create = YES; + flags &= ~O_CREAT; + flags &= ~O_EXCL; + } + + if (lstat(filename, &ls) < 0) { + if (errno == ENOENT && create) { + // No such file - create it + fd = open(filename, flags | O_CREAT | O_EXCL, 0600); + if (fd >= 0) { + // File was created successfully. + // New file does not need to be truncated. + return fd; + } else { + // File creation failed. + return -1; + } + } else { + // lstat failed, or user doesn't want to create the file + return -1; + } + } else { + // lstat succeeded - verify attributes and open + if (S_ISREG(ls.st_mode) && // regular file? + ls.st_nlink == 1 && // link count == 1? + ls.st_uid == euid && // owned by euid? + (ls.st_mode & ALLPERMS) == (S_IRUSR | S_IWUSR)) // mode 0600? + { + // Attributes look ok - open it and check attributes again + fd = open(filename, flags, 0000); + if (fd >= 0) { + // File is open - double-check attributes + if (0 == fstat(fd, &fs) && + fs.st_nlink == ls.st_nlink && // link count == 1? + fs.st_uid == ls.st_uid && // owned by euid? + fs.st_mode == ls.st_mode && // regular file, 0600? + fs.st_ino == ls.st_ino && // same inode as before? + fs.st_dev == ls.st_dev) // same device as before? + { + // File is open and OK + if (truncate) ftruncate(fd, 0); + return fd; + } else { + // Opened file looks funny - close it + close(fd); + return -1; + } + } else { + // File didn't open + return -1; + } + } else { + // Unopened file looks funny - don't open it + return -1; + } + } +} + + +/********************************************************************** + * Shared range support: + * + * Some libraries contain many pages worth of selector references. + * In most processes, these libraries get loaded at the same addresses, + * so the selectors are uniqued to the same values. To save memory, + * the runtime tries to share these memory pages across processes. + * + * A file /tmp/objc_sharing__ records memory ranges and process + * IDs. When a set of selector refs is to be uniqued, this file is checked + * for a matching memory range being shared by another process. If + * such a range is found: + * 1. map the sharing process's memory somewhere into this address space + * 2. read from the real selector refs and write into the mapped memory. + * 3. vm_copy from the mapped memory to the real selector refs location + * 4. deallocate the mapped memory + * + * The mapped memory is merely used as a guess. Correct execution is + * guaranteed no matter what values the mapped memory actually contains. + * If the mapped memory really matches the values needed in this process, + * the mapped memory will be unchanged. If the mapped memory doesn't match, + * or contains random values, it will be fixed up to the correct values. + * The memory is shared whenever the guess happens to be correct. + * + * The file of shared ranges is imprecise. Processes may die leaving + * their entries in the file. A PID may be recycled to some process that + * does not use Objective-C. The sharing mechanism is robust in the face + * of these failures. Bad shared memory is simply fixed up. No shared + * memory means the selectors are fixed in place. If an entry in the + * file is found to be unusable, the process that finds it will instead + * offer to share its own memory, replacing the bad entry in the file. + * + * Individual entries in the file are written atomically, but the file is + * otherwise unsynchronized. At worst, a sharing opportunity may be missed + * because two new entries are written simultaneously in the same place. + **********************************************************************/ + + +struct remote_range_t { + vm_range_t range; + pid_t pid; +}; + + +// Cache for the last shared range file used, and its EUID. +static pthread_mutex_t sharedRangeLock = PTHREAD_MUTEX_INITIALIZER; +static uid_t sharedRangeEUID = 0; +static FILE * sharedRangeFile = NULL; +static BOOL sharedRangeFileInUse = NO; + + +/********************************************************************** +* open_shared_range_file +* Open the shared range file "/tmp/objc_sharing__" in +* the given mode. +* The returned file should be closed with close_shared_range_file(). +**********************************************************************/ +static FILE *open_shared_range_file(BOOL create) +{ + const char arch[] = +#if defined(__ppc__) || defined(ppc) + "ppc"; +#elif defined(__ppc64__) || defined(ppc64) + "ppc64"; +#elif defined(__i386__) || defined(i386) + "i386"; +#else +# error "unknown architecture" +#endif + char filename[18 + sizeof(arch) + 1 + 3*sizeof(uid_t) + 1]; + uid_t euid; + FILE *file = NULL; + int fd; + + // Never share when superuser + euid = geteuid(); + if (euid == 0) { + if (PrintSharing) { + _objc_inform("SHARING: superuser never shares"); + } + return NULL; + } + + // Return cached file if it matches and it's not still being used + pthread_mutex_lock(&sharedRangeLock); + if (!sharedRangeFileInUse && euid == sharedRangeEUID) { + file = sharedRangeFile; + sharedRangeFileInUse = YES; + pthread_mutex_unlock(&sharedRangeLock); + rewind(file); + return file; + } + pthread_mutex_unlock(&sharedRangeLock); + + // Open /tmp/objc_sharing_ + snprintf(filename,sizeof(filename), "/tmp/objc_sharing_%s_%u", arch, euid); + fd = secure_open(filename, O_RDWR | (create ? O_CREAT : 0), euid); + if (fd >= 0) { + file = fdopen(fd, "r+"); + } + + if (file) { + // Cache this file if there's no already-open file cached + pthread_mutex_lock(&sharedRangeLock); + if (!sharedRangeFileInUse) { + sharedRangeFile = file; + sharedRangeEUID = euid; + sharedRangeFileInUse = YES; + } + pthread_mutex_unlock(&sharedRangeLock); + } + else { + // open() or fdopen() failed + if (PrintSharing) { + _objc_inform("SHARING: bad or missing sharing file '%s': %s", + filename, errno ? strerror(errno) : + "potential security violation"); + } + } + + return file; +} + + +/********************************************************************** +* close_shared_range_file +* Close a file opened with open_shared_range_file. +* The file may actually be kept open and cached for a future +* open_shared_range_file call. If so, clear_shared_range_file_cache() +* can be used to really close the file. +**********************************************************************/ +static void close_shared_range_file(FILE *file) +{ + // Flush any writes in case the file is kept open. + fflush(file); + + pthread_mutex_lock(&sharedRangeLock); + if (file == sharedRangeFile && sharedRangeFileInUse) { + // This file is the cached shared file. + // Leave the file open and cached, but no longer in use. + sharedRangeFileInUse = NO; + } else { + // This is not the cached file. + fclose(file); + } + pthread_mutex_unlock(&sharedRangeLock); +} + + +/********************************************************************** +* clear_shared_range_file_cache +* Really close any file left open by close_shared_range_file. +* This is called by map_images() after loading multiple images, each +* of which may have used the shared range file. +**********************************************************************/ +static void clear_shared_range_file_cache(void) +{ + pthread_mutex_lock(&sharedRangeLock); + if (sharedRangeFile && !sharedRangeFileInUse) { + fclose(sharedRangeFile); + sharedRangeFile = NULL; + sharedRangeEUID = 0; + sharedRangeFileInUse = 0; + } + pthread_mutex_unlock(&sharedRangeLock); +} + + +/********************************************************************** +* get_shared_range +* Try to find a shared range matching addresses [aligned_start..aligned_end). +* If a range is found, it is mapped into this process and returned. +* If no range is found, or the found range could not be mapped for +* some reason, the range {0, 0} is returned. +* aligned_start and aligned_end must be page-aligned. +**********************************************************************/ +static vm_range_t get_shared_range(vm_address_t aligned_start, + vm_address_t aligned_end) +{ + struct remote_range_t remote; + vm_range_t result; + FILE *file; + + result.address = 0; + result.size = 0; + + // Open shared range file, but don't create it + file = open_shared_range_file(NO); + if (!file) return result; + + // Search for the desired memory range + while (1 == fread(&remote, sizeof(remote), 1, file)) { + if (remote.pid != 0 && + remote.range.address == aligned_start && + remote.range.size == aligned_end - aligned_start) + { + // Found a match in the file - try to grab the memory + mach_port_name_t remote_task; + vm_prot_t cur_prot, max_prot; + vm_address_t local_addr; + kern_return_t kr; + + // Find the task offering the memory + kr = task_for_pid(mach_task_self(), remote.pid, &remote_task); + if (kr != KERN_SUCCESS) { + // task is dead + if (PrintSharing) { + _objc_inform("SHARING: no task for pid %d: %s", + remote.pid, mach_error_string(kr)); + } + break; + } + + // Map the memory into our process + local_addr = 0; + kr = vm_remap(mach_task_self(), &local_addr, remote.range.size, + 0 /*alignment*/, 1 /*anywhere*/, + remote_task, remote.range.address, + 1 /*copy*/, &cur_prot, &max_prot, VM_INHERIT_NONE); + mach_port_deallocate(mach_task_self(), remote_task); + + if (kr != KERN_SUCCESS) { + // couldn't map memory + if (PrintSharing) { + _objc_inform("SHARING: vm_remap from pid %d failed: %s", + remote.pid, mach_error_string(kr)); + } + break; + } + + if (!(cur_prot & VM_PROT_READ) || !(cur_prot & VM_PROT_WRITE)) { + // Received memory is not mapped read/write - don't use it + // fixme try to change permissions? check max_prot? + if (PrintSharing) { + _objc_inform("SHARING: memory from pid %d not read/write", + remote.pid); + } + vm_deallocate(mach_task_self(), local_addr, remote.range.size); + break; + } + + // Success + result.address = local_addr; + result.size = remote.range.size; + } + } + + close_shared_range_file(file); + return result; +} + + +/********************************************************************** +* offer_shared_range +* Offer memory range [aligned_start..aligned_end) in this process +* to other Objective-C-using processes. +* If some other entry in the shared range list matches this range, +* is is overwritten with this process's PID. (Thus any stale PIDs are +* replaced.) +* If the shared range file could not be updated for any reason, this +* function fails silently. +* aligned_start and aligned_end must be page-aligned. +**********************************************************************/ +static void offer_shared_range(vm_address_t aligned_start, + vm_address_t aligned_end) +{ + struct remote_range_t remote; + struct remote_range_t local; + BOOL found = NO; + FILE *file; + int err = 0; + + local.range.address = aligned_start; + local.range.size = aligned_end - aligned_start; + local.pid = getpid(); + + // Open shared range file, creating if necessary + file = open_shared_range_file(YES); + if (!file) return; + + // Find an existing entry for this range, if any + while (1 == fread(&remote, sizeof(remote), 1, file)) { + if (remote.pid != 0 && + remote.range.address == aligned_start && + remote.range.size == aligned_end - aligned_start) + { + // Found a match - overwrite it + err = fseek(file, -sizeof(remote), SEEK_CUR); + found = YES; + break; + } + } + + if (!found) { + // No existing entry - write at the end of the file + err = fseek(file, 0, SEEK_END); + } + + if (err == 0) { + fwrite(&local, sizeof(local), 1, file); + } + + close_shared_range_file(file); +} + + +/********************************************************************** +* install_shared_range +* Install a shared range received from get_shared_range() into +* its final resting place. +* If possible, the memory is copied using virtual memory magic rather +* than actual data writes. dst always gets updated values, even if +* virtual memory magic is not possible. +* The shared range is always deallocated. +* src and dst must be page-aligned. +**********************************************************************/ +static void install_shared_range(vm_range_t src, vm_address_t dst) +{ + kern_return_t kr; + + // Copy from src to dst + kr = vm_copy(mach_task_self(), src.address, src.size, dst); + if (kr != KERN_SUCCESS) { + // VM copy failed. Use non-VM copy. + if (PrintSharing) { + _objc_inform("SHARING: vm_copy failed: %s", mach_error_string(kr)); + } + memmove((void *)dst, (void *)src.address, src.size); + } + + // Unmap the shared range at src + vm_deallocate(mach_task_self(), src.address, src.size); +} diff --git a/runtime/objc-sel-set.h b/runtime/objc-sel-set.h new file mode 100644 index 0000000..56412a6 --- /dev/null +++ b/runtime/objc-sel-set.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +/* + * objc-sel-set.h + * A set of SELs used for SEL uniquing. + */ + +#include + +struct __objc_sel_set; + +extern struct __objc_sel_set *__objc_sel_set_create(uint32_t capacity); +extern SEL __objc_sel_set_get(struct __objc_sel_set *sset, SEL candidate); +extern void __objc_sel_set_add(struct __objc_sel_set *sset, SEL value); + diff --git a/runtime/objc-sel-set.m b/runtime/objc-sel-set.m new file mode 100644 index 0000000..bd6c2f8 --- /dev/null +++ b/runtime/objc-sel-set.m @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +/* + * objc-sel-set.h + * A cut-down copy of CFSet used for SEL uniquing. + */ + + +// NOTE: even on a 64-bit system, the implementation is still limited +// to 32-bit integers (like, the count), but SEL can be any size. + +#include +#import "objc-private.h" +#import "objc-sel-set.h" + +static const uint32_t __objc_sel_set_capacities[43] = { + 4, 8, 17, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778, 9349, + 15127, 24476, 39603, 64079, 103682, 167761, 271443, 439204, 710647, 1149851, 1860498, + 3010349, 4870847, 7881196, 12752043, 20633239, 33385282, 54018521, 87403803, 141422324, + 228826127, 370248451, 599074578, 969323029, 1568397607, 2537720636U, UINT32_MAX +}; + +static const uint32_t __objc_sel_set_buckets[42] = { // primes + 5, 11, 23, 41, 67, 113, 199, 317, 521, 839, 1361, 2207, 3571, 5779, 9349, 15121, + 24473, 39607, 64081, 103681, 167759, 271429, 439199, 710641, 1149857, 1860503, 3010349, + 4870843, 7881193, 12752029, 20633237, 33385273, 54018521, 87403763, 141422317, 228826121, + 370248451, 599074561, 969323023, 1568397599, 2537720629U, 4106118251U +}; + +struct __objc_sel_set { + uint32_t _count; /* number of slots used */ + uint32_t _capacity; /* maximum number of used slots */ + uint32_t _bucketsNum; /* number of slots */ + SEL *_buckets; /* can be NULL if not allocated yet */ +}; + +struct __objc_sel_set_finds { + SEL match; + uint32_t nomatch; +}; + +// candidate may not be 0; match is 0 if not present +static struct __objc_sel_set_finds __objc_sel_set_findBuckets(struct __objc_sel_set *sset, SEL candidate) { + struct __objc_sel_set_finds ret = {0, 0xffffffff}; + uint32_t probe = (uint32_t)_objc_strhash((const char *)candidate) % sset->_bucketsNum; + for (;;) { + SEL currentSel = sset->_buckets[probe]; + if (!currentSel) { + ret.nomatch = probe; + return ret; + } else if (!ret.match && 0 == _objc_strcmp((const char *)currentSel, (const char *)candidate)) { + ret.match = currentSel; + } + probe++; + if (sset->_bucketsNum <= probe) { + probe -= sset->_bucketsNum; + } + } +} + +// create a set with given starting capacity, will resize as needed +__private_extern__ struct __objc_sel_set *__objc_sel_set_create(uint32_t capacity) { + struct __objc_sel_set *sset = _malloc_internal(sizeof(struct __objc_sel_set)); + if (!sset) _objc_fatal("objc_sel_set failure"); + sset->_count = 0; + uint32_t idx; + for (idx = 0; __objc_sel_set_capacities[idx] < capacity; idx++); + if (42 <= idx) _objc_fatal("objc_sel_set failure"); + sset->_capacity = __objc_sel_set_capacities[idx]; + sset->_bucketsNum = __objc_sel_set_buckets[idx]; + sset->_buckets = _calloc_internal(sset->_bucketsNum, sizeof(SEL)); + if (!sset->_buckets) _objc_fatal("objc_sel_set failure"); + return sset; +} + +// returns 0 on failure; candidate may not be 0 +__private_extern__ SEL __objc_sel_set_get(struct __objc_sel_set *sset, SEL candidate) { + return __objc_sel_set_findBuckets(sset, candidate).match; +} + +// value may not be 0; should not be called unless it is known the value is not in the set +__private_extern__ void __objc_sel_set_add(struct __objc_sel_set *sset, SEL value) { + if (sset->_count == sset->_capacity) { + SEL *oldbuckets = sset->_buckets; + uint32_t oldnbuckets = sset->_bucketsNum; + uint32_t idx, capacity = sset->_count + 1; + for (idx = 0; __objc_sel_set_capacities[idx] < capacity; idx++); + if (42 <= idx) _objc_fatal("objc_sel_set failure"); + sset->_capacity = __objc_sel_set_capacities[idx]; + sset->_bucketsNum = __objc_sel_set_buckets[idx]; + sset->_buckets = _calloc_internal(sset->_bucketsNum, sizeof(SEL)); + if (!sset->_buckets) _objc_fatal("objc_sel_set failure"); + for (idx = 0; idx < oldnbuckets; idx++) { + SEL currentSel = oldbuckets[idx]; + if (currentSel) { + uint32_t nomatch = __objc_sel_set_findBuckets(sset, currentSel).nomatch; + sset->_buckets[nomatch] = currentSel; + } + } + _free_internal(oldbuckets); + } + uint32_t nomatch = __objc_sel_set_findBuckets(sset, value).nomatch; + sset->_buckets[nomatch] = value; + sset->_count++; +} diff --git a/runtime/objc-sel-table.h b/runtime/objc-sel-table.h index b62295d..5a7f775 100644 --- a/runtime/objc-sel-table.h +++ b/runtime/objc-sel-table.h @@ -35,57 +35,55 @@ * This left me with 13528 selectors, which was nicely close to but under * 2^14 for the binary search. */ -/* GrP 2003-7-11 +/* GrP 2004-12-15 * Current apps use well over 2^14 selectors. - * Reconstructed list using all methods from frameworks - * AddressBook, AppKit, Foundation, WebKit on Panther 7B7. - * 15293 selectors, still under 2^14 + * The list current contains all selectors from + * AppKit, WebKit, and their dependencies in Tiger 8A325. + * Full list: libobjc, CoreText, Foundation, HIToolbox, CoreData, QuartzCore, AppKit, WebKit + * 16371 selectors, just under 2^14 */ -#define NUM_BUILTIN_SELS 15293 +#define NUM_BUILTIN_SELS 16371 /* base-2 log of greatest power of 2 < NUM_BUILTIN_SELS */ #define LG_NUM_BUILTIN_SELS 13 static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { - "AMPMDesignation", - "BMPRepresentation", - "CDATASectionImpl", - "CDATASectionWithImpl:", - "CGImage", - "CGLContextObj", - "CGLPixelFormatObj", - "DIBRepresentation", + ".cxx_construct", + ".cxx_destruct", + "CGColorSpace", + "CGCompositeOperationInContext:", + "CIContext", + "CI_affineTransform", + "CI_arrayWithAffineTransform:", + "CI_copyWithZone:map:", + "CI_initWithAffineTransform:", + "CI_initWithRect:", + "CI_rect", + "CTM", "DOMDocument", - "DOMImplementationImpl", - "DPSContext", - "DSQueryComponents", - "DSQueryString", + "DTD", + "DTDKind", + "DTDString", "EPSOperationWithView:insideRect:toData:", "EPSOperationWithView:insideRect:toData:printInfo:", "EPSOperationWithView:insideRect:toPath:printInfo:", "EPSRepresentation", - "GDBDumpCursorRects", - "HTMLRepresentationCount", + "HTMLData", + "HTMLFileWrapper", "HTTPBody", + "HTTPBodyStream", + "HTTPBodyStreamForTransmission", "HTTPContentType", - "HTTPCookiePolicyBaseURL", "HTTPExtraCookies", "HTTPMethod", - "HTTPPageNotFoundCacheLifetime", "HTTPReferrer", "HTTPResponse", "HTTPShouldHandleCookies", "HTTPUserAgent", "IBeamCursor", - "IDSensitivity", - "ISO8061StringFromDate:", - "JavaEnabled", - "JavaScriptCanOpenWindowsAutomatically", - "JavaScriptEnabled", - "LDAPConfigChanged:", - "LDAPConfigView", - "LDAPQueryString", + "ICCProfileData", + "MD5", "MIMEType", "MIMETypeEnumerator", "MIMETypeForExtension:", @@ -103,10 +101,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "NPP_URLNotify", "NPP_Write", "NPP_WriteReady", + "PDFDocumentClass", + "PDFKitBundle", "PDFOperationWithView:insideRect:toData:", "PDFOperationWithView:insideRect:toData:printInfo:", "PDFOperationWithView:insideRect:toPath:printInfo:", "PDFRepresentation", + "PDFSubview", + "PDFViewClass", "PICTRepresentation", "QTMovie", "RTF", @@ -121,9 +123,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "TIFFRepresentationOfImageRepsInArray:", "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:", "TIFFRepresentationUsingCompression:factor:", - "UID", "UIDelegate", + "URI", + "URIRepresentation", + "URIRepresentationForID:", "URL", + "URL:resourceDataDidBecomeAvailable:", + "URL:resourceDidFailLoadingWithError:", + "URL:resourceDidFailLoadingWithReason:", "URLFromPasteboard:", "URLHandle:resourceDataDidBecomeAvailable:", "URLHandle:resourceDidFailLoadingWithReason:", @@ -136,51 +143,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "URLProtocol:didCancelAuthenticationChallenge:", "URLProtocol:didFailWithError:", "URLProtocol:didLoadData:", + "URLProtocol:didLoadData:lengthReceived:", "URLProtocol:didReceiveAuthenticationChallenge:", "URLProtocol:didReceiveResponse:cacheStoragePolicy:", "URLProtocol:wasRedirectedToRequest:redirectResponse:", "URLProtocolDidFinishLoading:", + "URLResourceDidCancelLoading:", + "URLResourceDidFinishLoading:", "URLString", + "URLWithAttributeString:", "URLWithString:", "URLWithString:relativeToURL:", "URLs", - "URLsFromPasteboard:", "URLsFromRunningOpenPanel", "UTF8String", - "_21vCardRepresentationAsData", - "_AEDesc", + "W", + "X", + "XMLDataWithOptions:", + "XMLFormatData", + "XMLString", + "XMLStringSequenceStarted:choiceStarted:appendingToString:", + "XMLStringWithOptions:", + "XPath", + "Y", + "Z", + "_ATSU_drawHighlightForRun:style:geometry:", + "_ATSU_drawRun:style:geometry:", + "_ATSU_floatWidthForRun:style:", + "_ATSU_pointToOffset:style:position:reversed:includePartialGlyphs:", "_BMPRepresentation:", + "_BRElementImpl", "_CGImageRef", "_CGSadjustWindows", "_CGSinsertWindow:withPriority:", "_CGSremoveWindow:", - "_DIBRepresentation", + "_CG_drawHighlightForRun:style:geometry:", + "_CG_drawRun:style:geometry:", + "_CG_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:", + "_CG_pointToOffset:style:position:reversed:includePartialGlyphs:", + "_CSSStyleSheetImpl", + "_CSSStyleSheetWithImpl:", + "_DOMImplementationImpl", + "_DOMImplementationWithImpl:", + "_DOMStyleSheetImpl", + "_DOMStyleSheetWithImpl:", + "_DTDString", + "_EOAssertSafeMultiThreadedAccess:", + "_EOAssertSafeMultiThreadedReadAccess:", + "_HRElementImpl", + "_HTMLDocumentImpl", + "_HTMLElementImpl", + "_HTMLHtmlElementImpl", + "_IBCreatorID", + "_IFrameElementImpl", + "_KWQ_currentEditor", "_KWQ_isScrollView", + "_KWQ_numComposedCharacterSequences", "_KWQ_scrollFrameToVisible", - "_KWQ_scrollRectToVisible:", - "_KWQ_scrollRectToVisible:inView:", + "_KWQ_scrollPointRecursive:", + "_KWQ_scrollPointRecursive:inView:", + "_KWQ_scrollRectToVisible:forceCentering:", + "_KWQ_scrollRectToVisible:inView:forceCentering:", + "_KWQ_setBaseWritingDirection:", "_KWQ_setKeyboardFocusRingNeedsDisplay", + "_KWQ_setTypingParagraphStyle:", + "_KWQ_truncateToNumComposedCharacterSequences:", + "_KWQ_typingParagraphStyle", + "_MIMETypeForExtension:", "_MIMETypeForFile:", + "_MOClassName", + "_NSNavDisplayNameCompare:caseSensitive:", "_NSNavFilePropertyCompare:", "_NSNavFilePropertyCompareCaseInsenstive:", "_NSNavShortVersionCompare:", + "_RGBColorWithRGB:", "_RTFDFileWrapper", - "_RTFWithSelector:range:documentAttributes:", "_UIDelegateForwarder", + "_UIEventImpl", + "_URIisNil", "_URL", + "_URLByEscapingSpacesAndControlChars", + "_URLForHistory", + "_URLForString:", "_URLHasScheme:", - "_URLMatchesProxyExceptions:", + "_URLStringForString:", "_URLStringFromLocationHeader", + "_URLWithData:relativeToURL:", + "_URLWithDataAsString:", + "_URLWithDataAsString:relativeToURL:", + "_URLsFromSelectors:", "_URLsMatchItem:", - "_WebCore_linkCursor", - "__matrix", - "__registerDefaultPlaceholders", - "__setRequest:", - "__swatchColors", + "_UTIMIMETypeForExtension:", + "_UTIextensionForMIMEType:", + "_WebCore_cursorWithName:hotSpot:", + "_XMLStringWithCharactersOnly", + "_XMLStringWithOptions:appendingToString:", + "__adoptRequest:", + "__clearPreLiveColumnWidths", + "__close", + "__computePreLiveColumnResizeWidthsByColumn", + "__doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:", + "__drawRevealoverWithFrame:inView:forView:", + "__escapeString5991", + "__gmd_000__", + "__gmd_001__", + "__gmd_002__", + "__ivar_getTrackingCell", + "__ivar_setClickedRow:clickedColumn:", + "__ivar_setTrackingCell:", + "__needsRevealoverWithFrame:trackingRect:inView:", + "__normalImage", + "__oldnf_addInternalRedToTextAttributesOfNegativeValues", + "__oldnf_addThousandSeparators:withBuffer:", + "__oldnf_addThousandSeparatorsToFormat:withBuffer:", + "__oldnf_containsCharFromSet:", + "__oldnf_containsColorForTextAttributesOfNegativeValues", + "__oldnf_containsString:", + "__oldnf_copyToUnicharBuffer:saveLength:", + "__oldnf_decimalIsNotANumber:", + "__oldnf_deleteAllCharactersFromSet:", + "__oldnf_getObjectValue:forString:errorDescription:", + "__oldnf_numberStringForValueObject:withBuffer:andNegativeFlag:", + "__oldnf_removeInternalRedFromTextAttributesOfNegativeValues", + "__oldnf_replaceAllAppearancesOfString:withString:", + "__oldnf_replaceFirstAppearanceOfString:withString:", + "__oldnf_setLocalizationFromDefaults", + "__oldnf_stringForObjectValue:", + "__oldnf_stringWithSeparator:atFrequency:", + "__oldnf_surroundValueInString:withLength:andBuffer:", + "__preLiveResizeWidthOfColumn:", + "__sendDataSourceWriteDragDataWithIndexes:toPasteboard:", "_abbreviationForAbsoluteTime:", + "_abortAndRestartTracking:", "_abortEditingIfFirstResponderIsASubview", - "_absoluteAdvancementForGlyph:", - "_absoluteBoundingRectForGlyph:", + "_abstractViewImpl", + "_abstractViewWithImpl:", + "_acceptExpressions:flags:", + "_acceptOperator:flags:", + "_acceptSubpredicates:flags:", "_acceptableRowAboveKeyInVisibleRect:", "_acceptableRowAboveRow:minRow:", "_acceptableRowAboveRow:tryBelowPoint:", @@ -190,6 +290,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_acceptsFirstResponderInItem:", "_acceptsMarkedText", "_accessibilityArrowScreenRect:", + "_accessibilityBoundsOfChild:", "_accessibilityButtonRect", "_accessibilityButtonUIElement", "_accessibilityCellLabelType", @@ -199,6 +300,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_accessibilityIconHandlesTitle", "_accessibilityIndicatorRect", "_accessibilityIsModal", + "_accessibilityIsRadioGroup", "_accessibilityIsSupportedPartCode:", "_accessibilityLoadBrowserCellsAtRow:count:", "_accessibilityMaxValue", @@ -206,11 +308,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_accessibilityMinValueWithoutCollapsing", "_accessibilityNextSplitterMinCoordinate", "_accessibilityNumberOfChildren", + "_accessibilityPanel", + "_accessibilityParentForSubview:", "_accessibilityPopUpButtonCellPressAction:", "_accessibilityPressAction:", "_accessibilityPreviousSplitterMaxCoordinate", "_accessibilityRowsInRange:", + "_accessibilityScreenRectForSegment:", "_accessibilitySearchFieldCellBounds", + "_accessibilitySegmentAtIndex:", + "_accessibilityShowMenu:", "_accessibilitySplitterMinCoordinate", "_accessibilitySplitterRects", "_accessibilitySupportedPartCodes", @@ -228,9 +335,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_accessibilityValue", "_accessibilityViewCorrectedForFieldEditor:", "_actOnKeyDown:", - "_action:", "_actionCellInitWithCoder:", "_actionHasBegun:atIndex:", + "_actionHasBegun:atIndexPath:", "_actionInformationForLoadType:isFormSubmission:event:originalURL:", "_actionInformationForNavigationType:event:originalURL:", "_activate", @@ -238,136 +345,208 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_activateServer", "_activateTrackingRectsForApplicationActivation", "_activateWindows", + "_activeFileListViewForResizing", "_actualOrderingFilePropertyAscending:", + "_adapter", "_addAnimatedColumn", + "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:", + "_addAutosavingOfDocument:contentsToURL:", "_addBackForwardItem:", "_addBackForwardItemClippedAtTarget:", "_addBackForwardItems:", + "_addBindVarForConstVal:", "_addBinding:toController:withKeyPath:valueTransformerName:options:", - "_addCell:atIndex:", - "_addCellClipTipForCell:cellRect:", - "_addCellClipTipIfNecessaryForCell:cellRect:", "_addChild:", "_addCollection:options:sender:", "_addColor:", "_addColumnSubviewAndAnimateIfNecessary:", + "_addColumnToFetch:", + "_addColumnWithoutChangingVisibleColumn", + "_addContent", "_addContentsToDictionary:depth:", + "_addConversionsFromTypes:", "_addCornerDirtyRectForRect:list:count:", "_addCredential:forProtectionSpace:", + "_addCurrentDirectoryToRecentPlaces", "_addCursorRect:cursor:forView:", - "_addDeclaredKey:", + "_addDefaultTable", + "_addDeletesToDatabaseOp:forManyToMany:", "_addDescriptorCheckingForDuplicates:toCollection:", "_addDragTypesTo:", - "_addDrawerWithView:", + "_addEditableSubfieldForElement:", + "_addEntities:toConfiguration:", + "_addEntity:", + "_addExpandedNodeToObservedNodeMappingForExpandedNode:", "_addExtraFieldsToRequest:alwaysFromRequest:", "_addFontDescriptorFromDrag:toCollectionAtIndex:", "_addFramePathToString:", "_addHeartBeatClientView:", + "_addHiddenWindow:", "_addImage:named:", - "_addInstance:", - "_addInternalRedToTextAttributesOfNegativeValues", + "_addIndexedEntity:", + "_addInsertsToDatabaseOp:forManyToMany:", "_addItem:toTable:", - "_addItemsToSpaButton:fromArray:enabled:", "_addKeychainItem:", - "_addMembersFrom:toUniqueArray:", + "_addLibxml2TreeRepresentationToDoc:context:", + "_addListDefinition:forKey:", + "_addManyToManysToDatabaseOp:", + "_addMapping:forConfigurationWithName:", + "_addMarker:", + "_addMarkersToList:range:", + "_addMouseMovedListener:", "_addMultipleToTypingAttributes:", - "_addObject:forKey:", - "_addObject:withName:", - "_addObserver:forKey:options:context:", + "_addNumberOfIndexes:toSelectionIndexesAtIndex:sendObserverNotifications:", + "_addObject:objectIDMap:", + "_addObserver:forProperty:options:context:", "_addObserver:notificationNamesAndSelectorNames:object:onlyIfSelectorIsImplemented:", "_addOneRepFrom:toRep:", "_addOptionValue:toArray:withKey:typeString:", + "_addOverride:forKey:", "_addPathSegment:point:", + "_addPersistentStore:identifier:", "_addPlaceholderOptionValue:isDefault:toArray:withKey:binder:binding:", - "_addPrintFiltersToPopUpButton:", + "_addPlugIn:allowNonExecutable:", + "_addPlugInStreamClient:", + "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:", + "_addProperty:", + "_addQuoteForElement:opening:level:", + "_addQuoteForLibXML2ElementNode:opening:level:", "_addRangeToArray:", + "_addRepresentedObject:toAttributedString:atRange:", + "_addRepresentedObjects:toAttributedString:atRange:", "_addRepsFrom:toRep:", - "_addRequestMessageBody", "_addResponse:", - "_addSizeToList:", + "_addResult:", + "_addRevealoverIfNecessaryForCell:cellRect:", + "_addRootColumnToFetch:", + "_addScrollerDashboardRegions:", + "_addScrollerDashboardRegions:from:", "_addSpellingAttributeForRange:", + "_addStaticSubfieldWithString:", "_addStringToRecentSearches:", + "_addSubentity:", + "_addSubfieldForElement:withString:", + "_addSubframeArchives:", "_addSubresourceClient:", + "_addSubresources:", "_addSubview:", - "_addThousandSeparators:withBuffer:", - "_addThousandSeparatorsToFormat:withBuffer:", "_addToGroups:ordered:", - "_addToMembersCache:", + "_addToLibxml2TreeRepresentationWithDoc:dtd:context:", "_addToOrphanList", - "_addToSubgroupsCache:", + "_addToStyle:fontA:fontB:", "_addToTypingAttributes:value:", "_addToolTipRect:", - "_addToolTipRect:displayDelegate:userData:", - "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:", + "_addToolTipRect:displayDelegate:displayInfo:", + "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:reuseExistingTrackingNum:", + "_addTrackingRect:owner:userData:assumeInside:useTrackingNum:", + "_addTrackingRects", + "_addTrackingRects:owner:userDataList:assumeInsideList:trackingNums:count:", + "_addTrackingRectsForView:", + "_addTrackingTag:", + "_addTrustedAttribute:atIndex:", + "_addUpdatesToDatabaseOp:forManyToMany:", + "_addVirtualToOneForToMany:", + "_addWhitespace", "_addWindow:", "_addWindowsMenu:enabled:", "_addedTab:atIndex:", - "_addiDiskPlaceholder", + "_additionIndexPathAppendChildIndex:", "_adjustCancelButtonCellImages::", "_adjustCharacterIndicesForRawGlyphRange:byDelta:", "_adjustClipIndicatorPosition", "_adjustControls:andSetColor:", + "_adjustDatePickerElement:by:", "_adjustDynamicDepthLimit", "_adjustEditedCellLocation", "_adjustFocusRingLocation:", "_adjustFocusRingSize:", - "_adjustFontOfObject:inController:index:triggerRedisplay:", + "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:", "_adjustFontSize", "_adjustForGrowBox", - "_adjustFrames", + "_adjustFrameOfOutlineCellIfNecessary:frame:", + "_adjustFrameSize", + "_adjustLayoutForTextAreaFrame:", "_adjustLength", + "_adjustMinContentSizeForMinFrameSize:", "_adjustMovieToView", - "_adjustObject:forChangeInController:editableState:adjustState:index:", + "_adjustNibControlSizes", + "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:", + "_adjustObject:mode:triggerRedisplay:", + "_adjustPanelForMinWidth", "_adjustPort", + "_adjustPrintingMarginsForHeaderAndFooter", + "_adjustRichTextFontSizeByRatio:", "_adjustSearchButtonCellImages::", "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:", - "_adjustStatesOfObject:index:state:triggerRedisplay:", - "_adjustTextColorOfObject:index:displayImmediately:", + "_adjustSheetEffect", + "_adjustStatesOfObject:mode:state:triggerRedisplay:", + "_adjustTextColorOfObject:mode:", "_adjustToMode", "_adjustWidthsToFit", "_adjustWindowToScreen", "_adjustedCenteredScrollRectToVisible:forceCenter:", "_adjustedFrameForSaving:", "_adjustedFrameFromDefaults:", + "_advanceTime", + "_aeteDataForAllSuites", + "_aeteElementClassDescriptions", + "_aeteElementClassDescriptionsExceptSupers:", + "_aetePropertyDescriptions", "_affectedExpandedNodes:", + "_affectedExpandedNodesForNode:", + "_afterAutosavingDocument:closeAndContinue:context:", + "_ageHeaderValue", "_ageLimitDate", + "_alignColumnForStretchedWindowWithInfo:", "_alignCoords", "_alignFirstVisibleColumnToDocumentViewEdge:", + "_alignSelectionUsingCSSValue:", "_alignedTitleRectWithRect:", "_allAttributeKeys", "_allBinderClasses", - "_allBindersNeedRefresh", - "_allItems", - "_allLabels", "_allPossibleLabelsToFit", "_allSidebarItemViews", - "_allSubclassDescriptionsForClassDescription:", - "_allValues", + "_allTokenFieldAttachments", "_allocAndInitPrivateIvars", "_allocAuxiliary:", "_allocAuxiliaryStorage", + "_allocData:", "_allocExtraData", - "_allocRowHeightCache", "_allocString:", + "_allocateAuxData", + "_allocateObserationStorage", "_allocatePPDStuffAndParse", + "_allowKillRing", "_allowSmallIcons", "_allowedItemIdentifiers", "_allowedToSetCookiesFromURL:withPolicyBaseURL:", "_allowsContextMenus", + "_allowsDisplayMode:", "_allowsDuplicateItems", + "_allowsNonNativeGlyphPacking", + "_allowsScreenFontKerning", + "_allowsSizeMode:", "_allowsTearOffs", - "_altContents", + "_alterCurrentSelection:direction:granularity:", + "_alterCurrentSelection:verticalDistance:", "_alternateAutoExpandImageForOutlineCell:inRow:withFrame:", "_alternateDown::::", + "_alternateICUValueForKey:", + "_alternateICUValues", "_alternatingRowBackgroundColors", + "_analogClockTrackMouse:inRect:ofView:untilMouseUp:", + "_analyzeContentBindingInSyncWithBinding:", + "_anchorElementImpl", "_animateLastAddedColumnToVisible", + "_animatePanel", "_animateSheet", + "_animatedScrollToPoint:", + "_animatedScrollingPreferencesChanged:", "_animates", "_animatingScrollTargetOrigin", "_animationIdler:", "_animationThread", "_animationTimerCallback:", - "_announce", "_antialiasThresholdChanged:", "_antialiased", "_anticipateRelease", @@ -376,175 +555,241 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_appHasOpenNSWindow", "_appHasVisibleWindowOrPanel", "_appIcon", + "_appWillTerminate:", "_appendArcSegmentWithCenter:radius:angle1:angle2:", - "_appendCString:", + "_appendAttachment:toString:", "_appendColorPicker:", - "_appendElementClassForRelationship:toAETEData:", - "_appendElementClassesToAETEData:", - "_appendEnumerationsInSuite:toAETEData:", - "_appendItemsForNodeInfo:", + "_appendEventDeclarationsToAETEData:", "_appendKey:option:value:inKeyNode:", "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", - "_appendPropertiesToAETEData:", - "_appendPropertyForAttributeOrToOneRelationship:withTerminologyDictionary:toAETEData:", + "_appendNodes:forNodeInfo:addSeparator:", + "_appendObjectClassDeclarationsToAETEData:", "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:", "_appendStringInKeyNode:key:value:", "_appendTextBytes:length:encoding:attributes:", - "_appendValue:withLabel:andIdentifier:", + "_appendTypeDefinitionsSuiteDeclarationToAETEData:", + "_appletElementImpl", "_applicationDidBecomeActive", - "_applicationDidLaunch:", "_applicationDidResignActive", "_applicationDidTerminate:", "_applicationStatusChange:", "_applicationWillLaunch:", - "_apply:context:", - "_applyDisplayedValueIfHasUncommittedChanges", + "_applicationWillTerminate:", + "_applyAllValuesFromValueBuffer", + "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", "_applyHTTPCredentials:", "_applyHTTPProxyCredentials:", - "_applyMarkerSettingsFromParagraphStyle:toCharacterRange:", - "_applyObjectValue:forBinding:", - "_applyValue:forKey:", + "_applyMarkerSettingsFromParagraphStyle:", + "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "_applyStyleToSelection:", + "_applyStylesheet:", + "_applyValue:forKey:registrationDomain:", "_applyValueTransformerToValue:forBindingInfo:reverse:", - "_applyValues:context:", + "_appropriateColorPanelSliderPane", "_aquaColorVariantChanged", + "_aquaScrollerBehaviorChanged:", "_aquaScrollerVariantChanged:", "_archiveToFile:", + "_archiveWithCurrentState:", + "_archiveWithMarkupString:nodes:", "_areAllPanelsNonactivating", "_areWritesCancelled", + "_areaElementImpl", "_argument", + "_argumentBindingCount", + "_argumentDescriptionForKey:", + "_argumentDescriptions", + "_argumentDescriptionsByName", + "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:", "_argumentForUnderlineStyle:", - "_argumentInfoAtIndex:", - "_argumentTerminologyDictionary:", - "_argumentsSelectionAppropriate", - "_arrangeObjectsWithSelectedObjects:", + "_argumentValueFromParameterDescriptor:usingTypeDescription:", + "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:", "_arrayByTranslatingAEList:toType:inSuite:", + "_arrayControllerWithContent:retain:", "_arrayForPartialPinningFromArray:", - "_arrowsConfig", + "_arrowKeyDownEventSelectorIfPreprocessing", "_asDescriptor", "_asIconHasAlpha", + "_asScriptTerminologyNameArray", + "_asScriptTerminologyNameString", "_ascenderDeltaForBehavior:", "_askDelegateWithURL:proxy:forRequest:failureCount:failureResponse:protocol:withCallback:context:", "_askDelegateWithURL:realm:forRequest:failureCount:failureResponse:protocol:withCallback:context:", + "_assertFilterRestrictsInsertionOfObjects:atArrangedObjectIndexes:", + "_assertValidStateWithSelector:", + "_assignObject:toPersistentStore:", "_assignObjectIds", + "_assignObjects:toStore:", "_atsFontID", "_attachSheetWindow:", + "_attachToParentWindow", "_attachToSupermenuView:", - "_attachedCell", - "_attachedSheet", + "_attachWindowForOrdering:relativeOp:", "_attachedSupermenuView", + "_attachmentAtGlyphIndex:containsWindowPoint:", "_attachmentCellForSelection", - "_attachmentFileWrapperDescription:", "_attachmentSizesRun", - "_attributeTerminologyDictionary:", - "_attributedStringForDrawing", + "_attrImpl", + "_attrWithImpl:", + "_attributeRunForCharacterAtIndex:", + "_attributeStringFromDOMRange:", + "_attributeValueClass", + "_attributedLabelsFromStringLabels:", "_attributedStringForEditing", "_attributedStringFromDescriptor:", + "_attributedStringFromRepresentedObjects:", "_attributedStringValue:invalid:", + "_attributedValuesFromStringValues:", "_attributes", "_attributes1ForPageOffset:entryOffset:baseAttributes:", "_attributes2ForPageOffset:entryOffset:blockType:baseAttributes:", "_attributesAreEqualToAttributesInAttributedString:", + "_attributesForElement:", "_audioCompleted", "_authenticationDoneWithChallenge:result:", + "_autoAppendsMDAttributesToSavedFile", + "_autoCompleteEditorTyping:", + "_autoCreateBinderForObject:withController:", "_autoExpandFlashOnce", "_autoExpandItem:", "_autoPositionMask", "_autoResizeState", "_autoSaveCofiguration", "_autoSizeView:::::", + "_autocompletesTyping", "_automateLiveResize", "_automateLiveScroll", "_autoreleaseDuringLiveResize", + "_autoreopenDocuments", + "_autoresizeToFit", + "_autoresizesLastColumnOnly", "_autosaveColumnsIfNecessary", + "_autosaveContentsURL", + "_autosaveForRegularQuit", "_autosaveRecentSearchList", + "_autosaveRecordPath", + "_autosavingBehavior", + "_autoscroll", "_autoscrollDate", - "_autoscrollDelay", "_autoscrollForDraggingInfo:timeDelta:", - "_autoscrollResponseMultiplier", - "_auxStorage", + "_autovalidateToolbarItem:", + "_autovalidateVisibleToolbarItems", + "_autovalidatesItems", "_availableBindingsWithFontBindingsFiltered:", + "_availableChannel", + "_availableChannelFromRegisteredChannels", "_availableFontSetNames", - "_avoidsActivation", + "_availablePaperWidthForPrintOperation:", + "_awakeFromFetch", + "_awakeFromInsert", "_backForwardCacheExpirationInterval", "_backForwardItems", - "_backForwardSwitcher", "_backgroundColor", "_backgroundFileLoadCompleted:", - "_backgroundTransparent", "_backingCGSFont", - "_backingType", "_barberImage:", - "_baseForKVOAClass", + "_base64StringFromData:", + "_baseElementImpl", + "_baseFontElementImpl", "_baseLineHeightForFont:", "_baseString", "_baseTransform", - "_baselineOffsetForUILayout", + "_baseWritingDirection", + "_baselineRenderingMode", "_batchClose", + "_batchCollapseItemsWithItemEntries:collapseChildren:", + "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:", + "_batchExpandItemsWithItemEntries:expandChildren:", + "_batchOrdering", "_batchZoom", "_beginColumnAnimationOptimization", "_beginCustomizationMode", "_beginDraggingColumn:", "_beginDrawForDragging", - "_beginLayout:", + "_beginDrawView:", "_beginListeningForApplicationStatusChanges", "_beginListeningForDeviceStatusChanges", - "_beginLoad", + "_beginListeningForPowerStatusChanges", + "_beginListeningForSessionStatusChanges", "_beginMark", - "_beginOriginLoad", "_beginScrolling", "_beginSpeakingString:optionallyToURL:", "_beginSrcDragItemViewerWithEvent:", "_beginSrcDragItemWithEvent:", "_beginTempEditingMode", "_beginToolbarEditingMode", + "_beginTransaction:", "_bestRepresentation:device:bestWidth:checkFlag:", "_betweenDropFeedbackStyle", "_betweenDropGapSize", + "_bidiLevels", "_bind:toController:withKeyPath:valueTransformerName:options:existingNibConnectors:connectorsToRemove:connectorsToAdd:", + "_bindNamespace:", + "_bindVariablesWithInsertedRow:", "_binderClassForBinding:withBinders:", "_binderForBinding:withBinders:createAutoreleasedInstanceIfNotFound:", "_binderWithClass:withBinders:createAutoreleasedInstanceIfNotFound:", - "_bindersToRefreshEnumerator", "_bindingAdaptor", + "_bindingAdaptorMethodsNeededMask", + "_bindingCreationDelegate", "_bindingInfoForBinding:", "_bindingInfoIndexForBinding:", "_bindingInformationWithExistingNibConnectors:availableControllerChoices:", "_bindingInfos", "_bitBlitSourceRect:toDestinationRect:", + "_bitmapFormat", "_blackRGBColor", "_blinkCaret:", - "_blobForCurrentObject", "_blockAndGetChildrenOfNavNode:", + "_blockClassForBlock:", "_blockHeartBeat:", + "_blockLevelElementForNode:", + "_blockRangeForCharRange:", + "_blockRangeForGlyphRange:", + "_blocksActionWhenModal:", "_blueAlternatingRowColor", "_blueControlTintColor", "_blueKeyboardFocusColor", + "_bodyBackgroundColor", + "_bodyElementImpl", "_bonafiedDealloc", + "_bonafiedDeallocHelper", "_boolValueForKey:", "_borderInset", "_borderType", "_borderView", + "_bottomContainerView", "_bottomCornerSize", "_bottomLeftResizeCursor", "_bottomRightResizeCursor", "_boundingRectForGlyphRange:inTextContainer:fast:fullLineRectsOnly:", "_boundsForCellFrame:", "_branchImageEnabled", + "_branchImageRectForBounds:", "_breakConnectionOfTableBinderIfAutoCreated:", "_bridge", + "_bridgeAtPoint:", + "_bridgeForCurrentSelection", + "_briefDescription", "_brightColorFromPoint:fullBrightness:", + "_browser:keyEvent:inColumn:", + "_browser:performKeyEquivalent:inColumn:", "_browserAction:", "_browserDelegate", "_browserDoubleAction:", "_buildCursor:cursorData:", + "_buildUI", "_builtInLocalizedDescription", + "_builtInLocalizedFailureReason", + "_builtInLocalizedRecoveryOptions", + "_builtInLocalizedRecoverySuggestion", "_bulletCharacter", "_bulletStringForString:", - "_bumpSelectedItem:", "_bundleForClassPresentInAppKit:", "_button", "_buttonBezelColors", "_buttonCellInitWithCoder:", + "_buttonElementImpl", "_buttonFrameSizeForSizeMode:", "_buttonHeight", "_buttonImageSource", @@ -560,14 +805,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_cacheRepresentation:", "_cacheRepresentation:stayFocused:", "_cacheResourceLoadDelegateImplementations", - "_cacheStatistics", + "_cacheRow:rect:", + "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:", + "_cacheSelectedObjectsIfNecessary", "_cacheUserKeyEquivalentInfo", + "_cacheViewImage:", "_cachedChildrenForNode:createIfNeeded:", "_cachedDisplayValue", - "_cachedGlobalWindowNum", + "_cachedObjectForKey:value:", "_cachedObjectValue", + "_cachedResponseForURL:", "_cachedResponseHasExpired", "_cachedResponsePassesValidityChecks", + "_cachedValuesAreValid", + "_cachingView", "_calcAndSetFilenameTitle", "_calcHeights:num:margin:operation:helpedBy:", "_calcMarginSize:operation:", @@ -578,134 +829,157 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_calcTrackRect:andAdjustRect:", "_calcVisibleColumnAreaAvailable", "_calcWidths:num:margin:operation:helpedBy:", - "_calculateLineHeightInGlyphVector:forGlyphRange:usesLeading:lineheight:glyphOffset:fontLeading:", "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:", + "_calculatePrintHeight", + "_calculateSelectedSegmentForPoint:", "_calculateSizeToFitWidthOfColumn:testLoadedOnly:", "_calculateTotalScaleForPrintingWithOperation:", - "_calibratedColorOK", + "_calculatedExpiration", + "_calendarContentAttributedStringWithSelectedDay:today:", + "_calendarID", + "_calendarWithID:", "_callImplementor:context:chars:glyphs:stringBuffer:font:", - "_canAcceptRichText", "_canAutoGenerateKeyboardLoops", "_canBecomeDefaultButtonCell", "_canCachePage", "_canChangeRulerMarkers", - "_canDrawOutsideLineHeight", + "_canCopy", + "_canCut", + "_canDelete", + "_canDeselect", + "_canDeselect:", + "_canDragRowForClickOnCell:column:row:atPoint:", "_canDrawOutsideOfItsBounds", - "_canHandleDelete", + "_canEdit", "_canHandleRequest:", "_canHaveToolbar", - "_canImportGraphics", + "_canHide", + "_canInitiateRowDragInColumn:", "_canMoveItemAsSource:", "_canOptimizeDrawing", + "_canPaste", + "_canProcessDragWithDraggingInfo:", "_canRunCustomizationPanel", + "_canSave", + "_canSaveGraphRootedAtObject:intoStore:givenOthers:", + "_canShowGoto", "_canShowMIMETypeAsHTML:", + "_canShowToolTip", + "_canSmartCopyOrDelete", + "_canSmartReplaceWithPasteboard:", "_canUseCompositing", "_canUseKeyEquivalentForMenuItem:", - "_canUsePersistentConnectionForRequest", "_canUseReorderResizeImageCache", + "_canUseResourceForRequest:", + "_canUserSetVisibilityPriority", + "_cancelAddMarker:", "_cancelAllUserAttentionRequests", "_cancelAnyScheduledAutoCollapse", "_cancelAutoExpandTimer", + "_cancelCurrentToolTipWindowImmediately:", + "_cancelDelayedAutocomplete", "_cancelDelayedKeyboardNavigationTabSwitch", "_cancelDelayedShowOpenHandCursor", - "_cancelEditOnMouseUp", "_cancelKey:", + "_cancelMovementTrackingTimer", "_cancelPerformSelectors", "_cancelRequest:", - "_cancelTypeAhead", "_cancelWithError:", "_cancelWithErrorCode:", + "_candidateDragRowIndexForClickInRow:", "_canonicalURLForURL:", + "_canonicalXMLStringPreservingComments:relationships:", "_captureInput", "_captureReorderResizeColumnImageCaches", "_captureVisibleIntoImageCache", "_captureVisibleIntoLiveResizeCache", + "_carbonNotification", "_carbonWindowClass", - "_cellClipTipRectForFrame:inView:", - "_cellForPoint:", + "_caseSensitiveCompare:", + "_cellForObject", + "_cellForPoint:characterIndex:level:row:column:range:", "_cellForRow:browser:browserColumn:", "_cellFrame", + "_cellFrameForAttachment:atCharIndex:", "_cellFurthestFrom:andCol:", "_cellInitWithCoder:", + "_cellOrControlForObject:", "_centerInnerBounds:", "_centerOnScreen", "_centerScanPoint:", "_centerTitle:inRect:", "_centeredScrollRectToVisible:forceCenter:", - "_certificatePolicy", - "_cfAppendCString:length:", "_cfBundle", - "_cfCapitalize:", - "_cfLowercase:", - "_cfNormalize:", - "_cfNumberType", - "_cfPad:length:padIndex:", "_cfPasteboard", - "_cfStreamError", - "_cfTrim:", - "_cfTrimWS", "_cfTypeID", - "_cfUppercase:", - "_cffireDate", - "_cffireTime", - "_cfindexOfObject:range:", - "_cflastIndexOfObject:inRange:", "_cfurl", + "_cgColor", "_cgsEventRecord", "_cgsEventTime", - "_cgsevent", - "_changeAddressFormat:", - "_changeAlertDidEnd:returnCode:contextInfo:", + "_chainNewError:toOriginalErrorDoublePointer:", + "_changeAlertSheetWasPresented:withResult:inContext:", "_changeAllDrawersFirstResponder", "_changeAllDrawersKeyState", "_changeAllDrawersMainState", - "_changeDictionaries:", + "_changeCSSColorUsingSelector:inRange:", + "_changeColorToColor:", "_changeDrawerFirstResponder", "_changeDrawerKeyState", "_changeDrawerMainState", + "_changeEditable:", "_changeFileListMode:", "_changeFirstResponder", - "_changeFrameOfColumn:toFrame:constrainWidth:", + "_changeHistory:", "_changeIntAttribute:by:range:", "_changeJustMain", "_changeKeyAndMainLimitedOK:", "_changeKeyState", "_changeLanguage:", + "_changeMDAttributes:atPath:", "_changeMainState", "_changeMinColorPanelSizeByDelta:compareWithOldMinSize:oldMinSize:setWindowFrame:", "_changeMinColorPanelSizeByDelta:setWindowFrame:", + "_changePrefixesForURI:toPrefix:", "_changeSelectionWithEvent:", + "_changeShadowAngle:", + "_changeShadowBlur:", + "_changeShadowOpacity:", "_changeSizeStyle:", "_changeSortDescriptorsForClickOnColumn:", "_changeSpellingFromMenu:", "_changeSpellingToWord:", + "_changeSyncPostingEnabled", "_changeTexture", + "_changeUUIDForSaveAs", "_changeWasDone:", "_changeWasRedone:", "_changeWasUndone:", + "_changeWordCaseWithSelector:", + "_changed", "_changed:", "_changedFlags", + "_changedObjectIDs", "_changingSelectionWithKeyboard", - "_charIndexToBreakLineByWordWrappingAtIndex:inRange:hyphenate:glyphVector:", - "_charRangeIsHighlightOptimizable:fromOldCharRange:", - "_characterCannotBeRendered:", + "_charIndexToBreakLineByWordWrappingAtIndex:lineFragmentWidth:hyphenate:", + "_characterCoverage", + "_characterDataImpl", "_characterRangeCurrentlyInAndAfterContainer:", "_characterRangeForPoint:inRect:ofView:", - "_checkCardAndColumns", - "_checkCardOnly", "_checkCollectionMoveOut:", - "_checkColumnsOnly", - "_checkDirectories", + "_checkDataSource", "_checkDirectoryListing", + "_checkDisplayDelegate:", "_checkFavoriteMode", "_checkForCookieExpiration", "_checkForObsoleteDelegateMethodsInObject:", "_checkForSimpleTrackingMode", "_checkForTerminateAfterLastWindowClosed:", - "_checkIfTimedOut", - "_checkInName:onHost:andPid:forUser:", - "_checkIndexIsBad", + "_checkForTimeouts", + "_checkGrammarInString:language:details:", + "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:", + "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:", "_checkLoadComplete", + "_checkLoadCompleteForThisFrame", "_checkLoaded:rect:highlight:", "_checkMiniMode:", "_checkNavigationPolicyForRequest:dataSource:formState:andCall:withSelector:", @@ -713,183 +987,233 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_checkRotatedOrScaledFromBase", "_checkSpellingForRange:excludingRange:", "_checkToolTipDelay", + "_checkTrashiness", + "_checkWantsDynamicToolTips", "_childFramesMatchItem:", + "_children", + "_childrenForNode:", + "_chooseBestMatchingFace", "_chooseCachedResponse", "_chooseCollection:", "_chooseFace:", "_chooseFamily:", "_chooseGuess:", + "_chooseSize:", + "_chooseSizeFromField:", + "_chooseSizeFromList:", + "_chooseSizeFromSlider:", + "_chooseableIndexesFromIndexes:", "_chosenSpellServer:launchIfNecessary:", + "_chunkAndCheckGrammarInString:language:usingSpellServer:details:", "_chunkAndFindMisspelledWordInString:language:learnedDictionaries:wordCount:usingSpellServer:", - "_classDescriptionForAppleEventCode:", - "_classDescriptionForType:inSuite:", + "_classDescriptionForName:", + "_classDescriptionForName:suiteName:isValid:", "_classDescriptionFromKey:andContainerClassDescription:", - "_classInfo", + "_classDescriptionsFromPropertyListDeclarations:suiteName:", + "_classNameForType:", "_classOfObjectsInNestedHomogeneousArray:", - "_classTerminologyDictionary", - "_cleanOutObsoleteItemsInCellorControl:", - "_cleanUp", - "_cleanUpConnection", + "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:", + "_cleanUpAfterSave", + "_cleanUpAfterTransaction", + "_cleanUpConnectionWithSynchronizePeerBinders:", "_cleanUpForCarbonAppTermination", "_cleanup", "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:", + "_cleanupBindingsWithExistingNibConnectors:exception:", "_cleanupHelpForQuit", + "_cleanupMenuMaps", "_cleanupPausedActions", + "_clear", + "_clearAnimationInfo", "_clearAnyValidResponderOverride", "_clearCellFrame", - "_clearChangedProperties", - "_clearConfigPanel", + "_clearChangedThisTransaction:", "_clearControlTintColor", "_clearCurrentAttachmentSettings", "_clearDefaultMenuFormRepresentation", + "_clearDeletions", "_clearDependenciesWithPeerBindersInArray:", + "_clearDictionaries", + "_clearDirtyRectsForLockedTree", "_clearDirtyRectsForTree", - "_clearDocFontsUsed", "_clearDragMargins", "_clearEditingTextView:", "_clearErrors", "_clearEventMask", "_clearFocusForView", + "_clearImageForLockFocusUse", "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated", + "_clearInsertions", "_clearKeyCell", "_clearLastHitViewIfSelf", + "_clearLiveResizeColumnLayoutInfo", + "_clearMarkedRange", "_clearMarkedWidth", "_clearModalWindowLevel", "_clearMouseTracking", "_clearMouseTrackingForCell:", + "_clearObserving", + "_clearOriginalSnapshotAndInitializeRec:", + "_clearOriginalSnapshotForObject:", "_clearPageCache", - "_clearPageFontsUsed", - "_clearPressedButtons", - "_clearProvisionalDataSource", + "_clearPendingChanges", + "_clearRawProperties", "_clearRememberedEditingFirstResponder", - "_clearRollOver", - "_clearRowHeightCache", + "_clearSaveTimer", "_clearSelectedCell", - "_clearSheetFontsUsed", "_clearSpellingForRange:", "_clearTemporaryAttributes", "_clearTemporaryAttributesForCharacterRange:changeInLength:", "_clearTrackingRects", - "_clearTypeAhead", + "_clearUndoManageForFieldEditor:", + "_clearUnneccessaryItems:", + "_clearUnprocessedDeletions", + "_clearUnprocessedInsertions", + "_clearUnprocessedUpdates", + "_clearUpdates", + "_clearVisitedColumnContentWidths", "_clickedCharIndex", - "_clientRedirectCancelled", + "_clientRedirectCancelled:", "_clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:", "_clientsCreatingIfNecessary:", "_clipIndicator", "_clipIndicatorIsShowing", "_clipViewAncestor", + "_clipViewBoundsChanged:", "_clippedItemViewers", - "_cloneFont:withFlag:", + "_clockAndCalendarAdvanceMonth:", + "_clockAndCalendarAdvanceMonthButtonCell", + "_clockAndCalendarCellSize", + "_clockAndCalendarFillDayCell:withColor:inFrame:", + "_clockAndCalendarGetClockFrame:calendarFrame:retreatMonthButtonCellFrame:advanceMonthButtonCellFrame:returnToHomeMonthButtonCellFrame:forDatePickerCellFrame:", + "_clockAndCalendarKeyDown:inRect:ofView:", + "_clockAndCalendarRetreatMonth:", + "_clockAndCalendarRetreatMonthButtonCell", + "_clockAndCalendarReturnToHomeMonth:", + "_clockAndCalendarReturnToHomeMonthButtonCell", + "_clockAndCalendarTakeDisplayedMonthFromDateValue", + "_clockAndCalendarTrackMouse:inRect:ofView:untilMouseUp:", "_close", "_close:", + "_closeAlertSheet:wasPresentedWithResult:inContext:", "_closeAndDeleteFileAsync", + "_closeBlocksForParagraphStyle:atIndex:inString:", "_closeButtonOrigin", "_closeDocumentsStartingWith:shouldClose:closeAllContext:", "_closeFileAsync", "_closeFileSync", + "_closeFlags:openFlags:inString:", "_closeForkAsync:", "_closeForkSync:", - "_closeIndex", + "_closeListsForParagraphStyle:atIndex:inString:", "_closeOldDataSources", "_closeSheet:andMoveParent:", "_closeWindow", - "_closedHandCursor", + "_cocoaErrorDescription", + "_cocoaErrorString:", + "_cocoaErrorString:alternate:", + "_cocoaTypeNameFromIdentifier:", + "_coerceValue:forKey:withDescription:", "_collapseAllAutoExpandedItems", "_collapseAutoExpandedItems:", "_collapseButtonOrigin", "_collapseItem:collapseChildren:clearExpandState:", "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:", - "_collapseItemsWithItemEntries:collapseChildren:", + "_collapsePanel:andMoveParent:toFrame:", "_collapsedOrigin", - "_collection:setHidden:", + "_collectApplicableUserInfoFormatters:max:", + "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:", + "_collectItemViewerFrames:intoRectArray:", + "_collectSubentities", + "_collection:setHidden:save:", + "_collectionImpl", + "_collectionWithImpl:", "_collectionWithName:", "_collectionWithName:index:", "_collections", "_collectionsChanged:", + "_color", + "_colorAsString:", "_colorAtIndex:", - "_colorByTranslatingRGBColor:toType:inSuite:", + "_colorByTranslatingRGBColorDescriptor:toType:inSuite:", "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:", - "_colorFromPoint:", + "_colorForMetal:", + "_colorForMouseEvent:", + "_colorForNode:property:", "_colorList", "_colorListNamed:forDeviceType:", "_colorPickerWithIdentifier:", "_colorPickers", "_colorRect", - "_colorWellAcceptedColor:", + "_colorSpacesForColorPanelPaneUsingModel:", + "_colorSyncProfileClass", + "_colorSyncProfileSpace", "_colorWellCommonAwake", "_colorWithGradientImage:", "_colorizedImage:color:", "_columnAtLocation:", "_columnClosestToColumn:whenMoved:", "_columnRangeForDragImage", + "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:", "_columnWidthAutoSaveNameWithPrefix", - "_commandDescriptionForAppleEventClass:andEventCode:", - "_commandFromEvent:inConstructionContext:", + "_commandDescriptionsFromPropertyListDeclarations:suiteName:", + "_commandFromEvent:", + "_commandMethodSelectorsByName", "_commandPopupRect", - "_commandTerminologyDictionary", + "_commitEditing", + "_commitEditingAndEndUndo", + "_commitEditingDiscardEditingCallback:", + "_commitEditingOtherCallback:", "_commitIfReady", "_commitIfReady:", + "_commitTransaction:", "_commonAwake", "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:", - "_commonFontInit", + "_commonHandleRootOrCurrentDirectoryChanged", "_commonInit", "_commonInitFrame:styleMask:backing:defer:", "_commonInitIvarBlock", + "_commonInitNSColorPickerColorSpacePopUp", + "_commonInitNavMatrix", "_commonInitNavNodePopUpButton", - "_commonInitSidebarItemViewTextField", + "_commonInitSidebarItemView", "_commonInitSplitViewController", "_commonInitState", - "_commonInitializationFrameName:groupName:", + "_commonInitTokenAttachmentWithStringValue:", + "_commonInitializationWithFrameName:groupName:", "_commonNavFilepathInputControllerInit", "_commonNewScroll:", "_commonSecureTextFieldInit:", + "_commonSetupTokenFieldCell", + "_commonTermination", "_compareForHeaderOrder:", - "_compareMultiLabelArrayWithRecordValue:", - "_compareMultiLabelDictionaryKeyWithRecordValue:", - "_compareMultiLabelDictionaryNoKeyWithRecordValue:", - "_compareMultiLabelScalarWithRecordValue:", - "_compareMultiNoLabelArrayWithRecordValue:", - "_compareMultiNoLabelDictionaryKeyWithRecordValue:", - "_compareMultiNoLabelDictionaryNoKeyWithRecordValue:", - "_compareMultiNoLabelScalarWithRecordValue:", - "_compareSingleArrayWithRecordValue:", - "_compareSingleDictionaryKeyWithRecordValue:", - "_compareSingleDictionaryNoKeyWithRecordValue:", - "_compareSingleScalarWithRecordValue:", + "_compareNode:withDisplayName:toNode:withDisplayName:", "_compareWidthWithSuperview", "_compat_continuousScrollingCapable", - "_compatibility_canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", - "_compatibility_displayName", - "_compatibility_doSavePanelSave:delegate:didSaveSelector:contextInfo:", "_compatibility_initWithUnkeyedCoder:", - "_compatibility_setFileName:", - "_compatibility_shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", - "_compatibility_windowForSheet", + "_compatibility_takeValue:forKey:", "_compatibleListShouldUseAlternateSelectedControlColor", "_compatibleWithRulebookVersion:", "_compiledScriptID", "_complete:", - "_completeName:", "_completeNoRecursion:", - "_completeProgressForConnection:", + "_completePathWithPrefix:intoString:matchesIntoArray:", + "_completeProgressForConnectionDelegate:", "_completionsFromDocumentForPartialWordRange:", - "_componentsSeparatedBySet:", "_composite:delta:fromRect:toPoint:", "_compositeAndUnlockCachedImage", + "_compositeFlipped:atPoint:fromRect:operation:fraction:", + "_compositeFlipped:inRect:fromRect:operation:fraction:", "_compositeHiddenViewHighlight", "_compositeImage", "_compositePointInRuler", - "_compositeToPoint:fromRect:operation:fraction:", - "_compositeToPoint:operation:fraction:", "_compositedBackground", - "_computeAllCellClipTips", + "_computeAllRevealovers", "_computeAndAlignFirstClosestVisibleColumn", - "_computeBezelRectWithTextCellFrame:inView:topLeft:bottomLeft:left:right:top:bottom:", "_computeBounds", "_computeColorScaleIfNecessaryWithSize:", "_computeCommonItemViewers", "_computeCustomItemViewers", - "_computeCustomItemViewersInRange:", "_computeDisplayedLabelForRect:", "_computeDisplayedSizeOfString:", "_computeDragImage", @@ -903,25 +1227,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_computeMaxItemViewHeight", "_computeMenuForClippedItems", "_computeMenuForClippedItemsIfNeeded", + "_computeMinHeightForSimpleSavePanel:", + "_computeMinWidthForSimpleSavePanel:", "_computeMinimumDisplayedLabelForWidth:", "_computeMinimumDisplayedLabelSize", "_computeNominalDisplayedLabelSize", "_computeOrderedItemViewersOfType:", - "_computeOrderedItemViewersOfType:inRange:", + "_computeOrderedItemViewersOfType:inRange:resizeableOnly:", + "_computeOriginForRow:cacheHint:", "_computeParams", "_computePriorFirstResponder", + "_computeResizeableCustomItemViewersInRange:", "_computeToolbarItemKeyboardLoop", "_computeToolbarItemKeyboardLoopIfNecessary", "_computeTravelTimeForInsertionOfItemViewer:", "_computeWidthForSpace", - "_concatenateMultiDictionaryProperty:toString:", - "_concatenateMultiStringProperty:toString:", - "_concatenatePhoneProperty:toString:", - "_concatenateRelatedProperty:toString:", - "_concatenateStringProperty:toString:", + "_computedAttributesForElement:", + "_computedStringForNode:property:", + "_computedStyleForElement:", + "_concatenateKeyWithIBCreatorID:", + "_concealBinding:", "_concludeDefaultKeyLoopComputation", - "_concreteFontInit", - "_concreteFontInit:", + "_concludeReloadChildrenForNode:", "_concreteInputContextClass", "_conditionallySetsStates", "_configSheetDidEnd:returnCode:contextInfo:", @@ -932,43 +1259,42 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_configureBottomControls", "_configureCell:forItemAtIndex:", "_configureDirectoryPopup", + "_configureFileListModeControlForMode:", "_configureForDirectory:name:", "_configureForFileListMode:", + "_configureForShowingInPanel", "_configureGreyButton:index:", + "_configureHistoryControl", "_configureLabelCellStringValue", + "_configureMDParts", "_configureMessageView", "_configurePathComponentPicker", "_configureSavePane", + "_configureSearching:", "_configureStreamDetails:", + "_configureTextViewForWordWrapMode", "_confirmSize:force:", "_conformsToProtocolNamed:", "_connectToCookieStorage", - "_connectionDidDie:", "_connectionWasBroken", "_connectionWasEstablished", - "_connectionWasReset", "_consistencyCheck:", "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:", + "_constrainAndSetDateValue:sendActionIfChanged:beepIfNoChange:", "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:", + "_constrainDateValue:", "_constrainPoint:withEvent:", "_constrainSheetAndDisplay:", "_constructRequestForURL:isHead:", - "_containedInSingleColumnClipView", - "_containerDescription", - "_containerObservesTextViewFrameChanges", "_containerRelativeFrameOfColumn:", "_containerRelativeFrameOfInsideOfColumn:", "_containerRelativeTitleFrameOfColumn:", "_containerTextViewFrameChanged:", "_containerViewOfColumns", "_containerViewOfTitles", - "_containsChar:", - "_containsCharFromSet:", - "_containsColorForTextAttributesOfNegativeValues", - "_containsIMKeys:", - "_containsString:", - "_containsValue:", + "_contentHasShadow", "_contentRectExcludingToolbar", + "_contentRectForTextBlock:glyphRange:", "_contentRectIncludingToolbarAtHome", "_contentToFrameMaxXWidth", "_contentToFrameMaxXWidth:", @@ -979,9 +1305,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_contentToFrameMinYHeight", "_contentToFrameMinYHeight:", "_contentView", - "_contentViewBoundsChanged:", "_contents", + "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:", "_contextAuxiliary", + "_contextByfeContext:", "_contextMenuEvent", "_contextMenuImpl", "_contextMenuTarget", @@ -992,17 +1319,24 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_continueFragmentScrollAfterNavigationPolicy:formState:", "_continueLoadRequestAfterNavigationPolicy:formState:", "_continueLoadRequestAfterNewWindowPolicy:frameName:formState:", - "_continueLoadingWithAddressInfo", - "_continueLoadingWithFileDescriptor:", "_continueModalOperationPastPrintPanel", "_continueModalOperationToTheEnd:", + "_continueMovementTracking", "_continueRunWithStartTime:duration:", + "_continuousCheckingAllowed", + "_controlAppearanceChangesOnKeyStateChange", "_controlColor", "_controlMenuKnownAbsent:", "_controlSizeForScrollers", "_controlTintChanged:", "_controlView:textView:doCommandBySelector:", - "_convertDataToString:", + "_controllerEditor:didCommit:contextInfo:", + "_controllerForNode:createControllers:", + "_controllerKeys", + "_controllerNodeForObjectAtIndexPath:createControllers:error:", + "_convert:row:point:cacheHint:", + "_convert:toValueClassUsing:", + "_convertCharacters:length:toGlyphs:", "_convertPersistentItem:", "_convertPoint:fromAncestor:", "_convertPoint:toAncestor:", @@ -1013,55 +1347,74 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_convertRectFromSuperview:test:", "_convertRectToSuperview:", "_convertStringToData:", - "_convertToNSRect:", + "_convertStringToNumber:", "_convertToQDRect:", "_convertToText:", + "_convertUnicodeCharacters:length:toGlyphs:", + "_convertValueToObjcValue:root:", "_cookieRequestHeaderFieldsForURL:withExtraCookies:", "_cookieToV0HeaderSegment", "_cookiesForURL:withExtraCookies:", "_copyDescription", + "_copyDetailsFromBinder:", "_copyDragCursor", + "_copyFlattenedPath", + "_copyImageToPasteboard", + "_copyLinkFromMenu:", + "_copyMutableSetFromToManyArray:", "_copyObject:toContainer:withKey:atIndex:replace:", "_copyObjectsInContainer:toContainer:withKey:atIndex:replace:", "_copyOfCustomView", + "_copyOldAttributesFromFilePath:andNewAttributes:toFileAtPath:", "_copyReplacingURLWithURL:", - "_copyStyleSettingsFromGlyphVector:toSubVector:subVectorIndex:", - "_copyToUnicharBuffer:saveLength:", "_copyValueOfDescriptorType:toBuffer:ofLength:", - "_correct:", + "_coreCursorType", + "_cornerViewFrame", + "_cornerViewHidesWithVerticalScroller", "_count", "_countBindings", "_countDisplayedDescendantsOfItem:", "_countDueToReceiver:", "_countOfValuesInContainer:withKey:", - "_countPartsInFormat:", + "_counterImpl", + "_counterWithImpl:", "_counterpart", - "_coveredCharSet", "_crackPoint:", "_crackRect:", + "_crackSize:", "_crayonMaskImage", "_crayonRowAboveRow:", "_crayonRowBelowRow:", "_crayonWithColor:", "_crayons", + "_createATSUTextLayoutForRun:style:", + "_createAlert", "_createAndShowProgressPanelIfAppropriate:", - "_createArrays", + "_createArrayWithObjectsAtIndexes:", + "_createAttributeDescriptionForNode:", "_createAuxData", "_createBackingStore", + "_createCGColorWithAlpha:", "_createCachedImage:", + "_createCachesAndOptimizeState", "_createCells", "_createClipIndicatorIfNecessary", "_createColumn:empty:", - "_createDefaultCollection", + "_createDefaultCollectionRep", + "_createDefaultOrUnflattenPageFormatIfNecessary", + "_createDefaultOrUnflattenPrintSettingsIfNecessary", "_createDockMenu:", + "_createElementContent:", + "_createEllipsisRunWithStringRange:attributes:", "_createFSRefForPath:", "_createFileDatabase", "_createFileIfNecessary", + "_createFloatStorage", "_createFontPanelRepFromCollection:removingHidden:", "_createFontPanelSizeRep", "_createFrameNamed:inParent:allowsScrolling:", - "_createGroup:", "_createImage:::", + "_createImageForLockFocusUseIfNecessary", "_createItem:", "_createItemFromItemIdentifier:", "_createItemTreeWithTargetFrame:clippedAtTarget:", @@ -1069,53 +1422,67 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_createLRUList:", "_createMenuMapLock", "_createMovieController", - "_createMutableArrayValueGetterForKey:", - "_createObservationInfoWithBase:addingObserver:forPropertiesWithIndexes:count:options:context:", - "_createObservationInfoWithBase:removingObserver:", - "_createObservationInfoWithBase:removingObserver:forPropertiesWithIndexes:count:", + "_createMungledDictionary:", + "_createMutableArrayValueGetterWithContainerClassID:key:", + "_createMutableSetValueGetterWithContainerClassID:key:", + "_createMutableSetValueWithSelector:", + "_createMutationMethodsOnObject:forKey:", + "_createNewNodePreviewHelper", + "_createNonExecutableFilterWithKernelFile:filterDescription:", + "_createNonNilMutableArrayValueWithSelector:", + "_createOtherValueGetterWithContainerClassID:key:", + "_createOtherValueSetterWithContainerClassID:key:", "_createPDFImageRep", "_createPageCacheForItem:", - "_createPageFormatFromFlattenedData:", "_createPattern", "_createPatternFromRect:", - "_createPersonRecord:", - "_createPrintSettingsFromFlattenedData:", - "_createRecentRecord:forPerson:favorite:", - "_createSRLanguageModelWithDescription:", - "_createSRLanguagePath", - "_createSRLanguagePhraseWithString:", - "_createSRLanguageWordWithString:", - "_createSaveFile", + "_createPrefix", + "_createProfileFor:", + "_createRangeWithNode:", + "_createRawData", + "_createRelationshipDescriptionForNode:", "_createScrollViewAndWindow", "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:", "_createStatusItemControlInWindow:", "_createStatusItemWindow", - "_createStoredValueGetterForKey:", - "_createStoredValueSetterForKey:", - "_createSubstringWithRange:", + "_createSubfields", "_createSurface", - "_createTemporaryDirectoryOn:orHiddenIn:andReturnRef:", + "_createTemporaryFolderOnVolume:orHiddenInFolder:andReturnRef:", + "_createTemporaryMOIDsForObjects:", "_createTextView", "_createTimer", - "_createValueGetterForKey:", - "_createValueSetterForKey:", + "_createTimer:", + "_createValueGetterWithContainerClassID:key:", + "_createValuePrimitiveGetterWithContainerClassID:key:", + "_createValuePrimitiveSetterWithContainerClassID:key:", + "_createValueSetterWithContainerClassID:key:", "_createWakeupPort", "_createWindowOpaqueShape", "_createWindowsMenuEntryWithTitle:enabled:", "_createdDate", "_creteCachedImageLockIfNeeded", - "_crosshairCursor", "_crunchyRawUnbonedPanel", - "_currentActivation", + "_ctTypesetter", "_currentAttachmentIndex", "_currentAttachmentRect", + "_currentBackForwardListItemToResetTo", "_currentBranchImage", "_currentClient", - "_currentFrame", + "_currentDeadKeyChar", + "_currentFileModificationDate", + "_currentFont", "_currentInputFilepath", + "_currentListLevel", + "_currentListNumber", + "_currentLocalMousePoint", "_currentPath", "_currentPoint", + "_currentSuiteName", "_cursorRectCursor", + "_cursorRectForColumn:", + "_customMetrics", + "_customTitleCell", + "_customTitleFrame", "_customizationPaletteSheetWindow", "_customizesAlwaysOnClickAndDrag", "_cycleDrawers:", @@ -1125,51 +1492,73 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_cycleWindows:", "_cycleWindowsBackwards:", "_cycleWindowsReversed:", + "_dListElementImpl", "_darkBlueColor", "_darkGrayRGBColor", + "_dashboardBehavior:", + "_dataForURLComponentType:", "_dataForkReferenceNumber", + "_dataFromBase64String:", "_dataIfDoneBufferingData:", + "_dataSource", + "_dataSourceChild:ofItem:", + "_dataSourceIsItemExpandable:", + "_dataSourceNumberOfChildrenOfItem:", "_dataSourceRespondsToSortDescriptorsDidChange", - "_dataSourceRespondsToWriteDragRows", + "_dataSourceRespondsToWriteDragData", "_dataSourceSetValue:forColumn:row:", "_dataSourceValueForColumn:row:", + "_dataWithConversionForType:", + "_dataWithoutConversionForType:", + "_databaseContextState", "_dateByTranslatingLongDateTimeDescriptor:toType:inSuite:", + "_dateForIfModifiedSince", + "_dateForString:", + "_dateValue", + "_dateWithCookieDateString:", "_deactivate", "_deactivateTrackingRectsForApplicationDeactivation", "_deactivateWindows", "_dealloc", + "_deallocAuxiliary", "_deallocAuxiliaryStorage", "_deallocCursorRects", + "_deallocData", + "_deallocExtraData", "_deallocHardCore:", "_deallocateGState", "_deallocatePPDStuff", "_debug", + "_debugAETEElementClassDescriptions", + "_debugDrawRowNumberForRow:clipRect:", + "_debugDrawRowNumberInCell:withFrame:forRow:", + "_debugHeightBucketArrayDescription", "_debugLoggingLevel", - "_decimalIsNotANumber:", - "_decimalPoint", - "_declareExtraTypesForTypeArray:", - "_declaredKeys", "_decodeArrayOfObjectsForKey:", "_decodeByte", - "_decodeData:", - "_decodeData:dataForkData:resourceForkData:", "_decodeDepth", - "_decodeHeaderData:dataForkData:resourceForkData:", - "_decodeMatrixWithCoder:", + "_decodeDownloadData:", + "_decodeDownloadData:dataForkData:resourceForkData:", + "_decodeDownloadHeaderData:dataForkData:resourceForkData:", "_decodePropertyListForKey:", "_decodeWithoutNameWithCoder:newStyle:", + "_decrementInUseCounter", "_decrementLine:", "_decrementPage:", - "_defaultButtonCycleTime", + "_decrementSelectedSubfield", + "_deepCollectEntitiesInArray:entity:", "_defaultButtonPaused", "_defaultDocIcon", "_defaultFacesForFamily:", "_defaultFontSet", "_defaultGlyphForChar:", + "_defaultHandler", "_defaultItemIdentifiers", "_defaultKnobColor", + "_defaultLineHeight:", "_defaultLineHeightForUILayout", - "_defaultLineHightForUILayout", + "_defaultMessageAttributes", + "_defaultNewFolderName", "_defaultObjectClass", "_defaultObjectClassName", "_defaultProgressIndicatorColor", @@ -1177,33 +1566,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_defaultSecondaryColor", "_defaultSelectedKnobColor", "_defaultSelectionColor", - "_defaultSelectorName", - "_defaultTableHeaderReverseSortImage", - "_defaultTableHeaderSortImage", + "_defaultSortDescriptorPrototypeKey", + "_defaultTitlebarTitleRect", "_defaultType:", + "_defaultValueForAttribute:range:", "_defaultWritingDirection", "_deferredAdjustMovie", "_deferredWindowChanged", "_defersCallbacksChanged", - "_delayedProcessAfterScrollWheel:", + "_delayedDeactiveWindowlessWell:", + "_delayedEnableRevealoverComputationAfterScrollWheel:", + "_delayedFreeRowEntryFreeList", "_delayedUpdateSwatch:", - "_delegate", + "_delayedWriteColors", "_delegate:handlesKey:", + "_delegateDoesNotCreateRowsInMatrix", + "_delegateDragOperationForDraggingInfo:", + "_delegateDragSourceActionMask", + "_delegateRespondsToGetToolTip", + "_delegateRespondsToSelectCellsByRow", + "_delegateRespondsToWillDisplayCell", + "_delegateTokensFromPasteboard:", "_delegateValidation:object:uiHandled:", "_delegateWillDisplayCell:forColumn:row:", "_delegateWillDisplayCellIfNecessary:forColumn:row:", "_delegateWillDisplayOutlineCell:forColumn:row:", + "_delegateWriteTokens:toPasteboard:", "_delegatedObject", - "_deleteAllCharactersFromSet:", - "_deleteConfirmSheetDidEnd:returnCode:contextInfo:", - "_deleteDictionaries:", "_deleteFileAsnyc", - "_deleteRecord:", - "_deletedUID", + "_deleteNode:byEntityName:", + "_deleteRange:preflight:killRing:prepend:smartDeleteOK:", + "_deleteSelection", + "_deleteWithDirection:granularity:killRing:", + "_deliverData", "_deltaForResizingImageRepView:", "_deltaForResizingTextField:", + "_deltasFromSnapshot:", + "_depopulateOpenRecentMenu:", + "_deregisterForAutosaveNotification", "_descStringForFont:", "_descendantFrameNamed:", + "_descriptionValues", + "_descriptionWithTabCount:", + "_descriptor", "_descriptorByTranslatingArray:ofObjectsOfType:inSuite:", "_descriptorByTranslatingColor:ofType:inSuite:", "_descriptorByTranslatingData:ofType:inSuite:", @@ -1214,24 +1619,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_descriptorByTranslatingString:ofType:inSuite:", "_descriptorByTranslatingTextStorage:ofType:inSuite:", "_descriptorWithNumber:", - "_deselectAll", "_deselectAllAndEndEditingIfNecessary:", "_deselectAllExcept::andDraw:", "_deselectColumn:", - "_deselectRow:subrow:members:", "_deselectRowRange:", - "_deselectsWhenMouseLeavesDuringDrag", "_desiredKeyEquivalent", "_desiredKeyEquivalentModifierMask", + "_desiredTextAreaSize", + "_destinationEntityForToOne:", + "_destinationFloatValueForScroller:", + "_destroyAllPluginsInPendingPageCaches", + "_destroyFloatStorage", + "_destroyRealWindow", "_destroyRealWindow:", - "_destroyRealWindowIfNotVisible:", + "_destroyRealWindowForAllDrawers", + "_destroyRealWindowIfNeeded", "_destroyStream", + "_destroyStreamWithReason:", "_destroyTSMDocument:", "_destroyTimer", - "_destroyToolbarAssociation:", "_destroyWakeupPort", "_detachChildren", "_detachFromParent", + "_detachFromParentWindow", "_detachSheetWindow", "_detatchNextAndPreviousForAllSubviews", "_detatchNextAndPreviousForView:", @@ -1245,51 +1655,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_dictionaryByTranslatingAERecord:toType:inSuite:", "_dictionaryForSavedConfiguration", "_dictionaryForSerialNumber:remove:clear:", + "_didAccessValueForKey:", "_didCancelAuthenticationChallenge:", + "_didChangeBackForwardKeys", + "_didChangeValue:forRelationship:named:withInverse:", + "_didChangeValueForKey:", + "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:", "_didCloseFile:", + "_didCommitLoadForFrame:", + "_didCreateFile", "_didDeleteFile", - "_didEndCloseSheet:returnCode:closeContext:", "_didEndSheet:returnCode:contextInfo:", + "_didFailLoadWithError:forFrame:", + "_didFailProvisionalLoadWithError:forFrame:", "_didFailWithError:", + "_didFinishLoadForFrame:", "_didFinishLoading", "_didFinishReturnCachedResponse:", - "_didLoadData:", + "_didLoadData:lengthReceived:", "_didMountDeviceAtPath:", "_didNSOpenOrPrint", + "_didPresentDiscardEditingSheetWithRecovery:contextInfo:", + "_didPresentModalAlert:contextInfo:", "_didReceiveAuthenticationChallenge:", "_didReceiveResponse:cacheStoragePolicy:", + "_didSave", + "_didSaveChanges", + "_didSelectPopup:", "_didSetFocusForCell:withKeyboardFocusClipView:", + "_didStartProvisionalLoadForFrame:", + "_didTurnIntoFault", "_didUnmountDeviceAtPath:", "_dimmedImage:", "_dimpleDoubleClicked:event:", "_dimpleDragStarted:event:", "_direction", - "_directoriesToSearch", - "_directoryPopUpButtonClick:", + "_directoryListElementImpl", "_dirtyRect", "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:", "_dirtyRegion", "_disableAutosavingAndColumnResizingNotificationsAndMark:", - "_disableCellClipTipCreation", + "_disableChangeNotifications", + "_disableChangeSync", "_disableCompositing", - "_disableCursorRectsForHiddenViews", "_disableEnablingKeyEquivalentForDefaultButtonCell", "_disableLayout", "_disableMovedPosting", - "_disableNotifications", "_disablePosting", "_disableResizedPosting", "_disableSecurity:", "_disableSelectionPosting", + "_disableToolTipCreationAndDisplay", "_disableTrackingRect:", + "_disabledTrackingInNeighborhoodOfMouse", "_discardCursorRectsForView:", + "_discardEditing", "_discardEditingForAllBinders", + "_discardEditingOfView:", "_discardEventsFromSubthread:", "_discardEventsWithMask:eventTime:", + "_discardMarkedText", "_discardTrackingRect:", - "_discardUncommittedChanges", - "_disconnect:", - "_disconnectFromDaemon:", + "_discardTrackingRects:count:", + "_discardValidateAndCommitValue:", "_diskCacheClear", "_diskCacheCreateDirectory", "_diskCacheCreateLRUList:", @@ -1307,74 +1735,85 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_dismissSheet:", "_dispatchCallBack:flags:error:", "_dispatchCallBackWithError:", - "_dispatchKind:", + "_displayAllDrawersIfNeeded", "_displayChanged", - "_displayLDAPServerSheetOrPanel", + "_displayDelayedMenu", + "_displayIfNeeded", "_displayName", "_displayName:", - "_displayPathForPath:", + "_displayProfileChanged", + "_displayProfileChanged:", "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:", - "_displaySelectedCard", "_displaySomeWindowsIfNeeded:", + "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:", + "_displayTemporaryToolTipForView:withString:", + "_displayToolTipIfNecessaryIgnoringTime:", + "_displayWidth", "_displayedLabel", "_displayedLabelForRect:", + "_dispose:", "_disposeBackingStore", "_disposeMovieController", + "_disposeObjects:", "_disposeSurface", + "_distForGlyphLocation:", "_distanceForVerticalArrowKeyMovement", "_distanceFromBaseToTopOfWindow", "_distanceFromToolbarBaseToTitlebar", "_distanceInDragDirectionBeforeDragAttempt", "_distanceInNonDragDirectionBeforeAbortingDragAttempt", - "_doAction:", + "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:", + "_divElementImpl", "_doActualViewPrinting", "_doAnimation", "_doAnimationStep", "_doAnimationStepWithProgress:", "_doAttachDrawer", + "_doAttachDrawerIgnoreHidden:", "_doAutoscroll:", "_doAutoscrolling", "_doAutoselectEdge", + "_doBidiProcessing", "_doCallback", + "_doChangeDirectoryForUserDrillIntoNode:", "_doClickAndQueueSendingOfAction:", "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:", "_doCloseDrawer", "_doCommandBySelector:forInputManager:", + "_doDelayedAutocomplete", "_doDelayedValidateVisibleToolbarItems", - "_doDelete:", + "_doDeleteInReceiver:", "_doDetachDrawer", "_doEditOperation:", "_doFinalAnimationStep", + "_doFindIndexesOfNodes:inDirectory:visitedNodes:", "_doHide", "_doImageDragUsingRows:event:pasteboard:source:slideBack:", - "_doInsertMember:inMemberList:", + "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:", "_doInvokeServiceIn:msg:pb:userData:error:unhide:", - "_doJustifyGlyphVector:withGlyphRange:delta:", "_doLayoutTabs:", "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:", "_doModalLoop:peek:", "_doModifySelectionWithEvent:onColumn:", + "_doNameCheck:", "_doOpenDrawer", "_doOpenFile:ok:tryTemp:", "_doOpenFiles:", - "_doOpenInSeparateWindow:model:", "_doOpenUntitled", "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:", - "_doOrderWindow:relativeTo:findKey:", - "_doOrderWindow:relativeTo:findKey:forCounter:force:", "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:", "_doPageArea:finishPage:helpedBy:pageLabel:", + "_doPopupSearchString", "_doPositionDrawer", "_doPositionDrawerAndSize:parentFrame:", "_doPositionDrawerAndSize:parentFrame:stashSize:", "_doPostColumnConfigurationDidChangeNotification:", "_doPostedModalLoopMsg:", - "_doPrintFile:ok:", - "_doPrintFiles:", - "_doRemove", + "_doPreSaveAssignmentsForRequest:", + "_doPrintFiles:withSettings:showPrintPanels:", "_doRemoveDrawer", "_doRemoveFromSuperviewWithOutNeedingDisplay:", - "_doResetOfCursorRects:cellClipTips:", + "_doResetOfCursorRects:revealovers:", "_doResizeDrawerWithDelta:fromFrame:", "_doRotationOnly", "_doRunLoop", @@ -1390,31 +1829,50 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_doStartDrawer", "_doStopDrawer", "_doSynchronizationOfEditedFieldForColumnWidthChange", - "_doTabsInGlyphVector:glyphOrigin:lineWidth:", - "_doTiming", + "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:", "_doUnhideWithoutActivation", "_doUpdate:", - "_doUpdateServicesMenu:", + "_doUpdateFromSnapshot:deltas:", + "_doUserComplete", "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:", - "_doUserParagraphStyleLineHeight:fixed:", "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:", "_doUserPathWithOp:inContext:", - "_doUserSetAttributes:", + "_doUserRemoveMarkerFormatInRange:", "_doUserSetAttributes:removeAttributes:", + "_doUserSetListMarkerFormat:options:", + "_doUserSetListMarkerFormat:options:inRange:level:", "_docController:shouldTerminate:", "_dockDied", - "_dockItem", "_dockRestarted", + "_document:didPrint:forScriptCommand:", + "_document:didPrint:inContext:", "_document:didSave:contextInfo:", + "_document:didSave:forScriptCommand:", "_document:pageLayoutDidReturn:contextInfo:", "_document:shouldClose:contextInfo:", - "_documentClassNames", + "_document:shouldClose:forScriptCommand:", + "_documentController:didPrint:appleEventSuspensionID:", + "_documentForURL:", + "_documentFragmentFromPasteboard:allowPlainText:", + "_documentFragmentWithArchive:", + "_documentFragmentWithImageResource:", + "_documentFragmentWithImpl:", + "_documentFragmentWithPaths:", + "_documentFromRange:document:documentAttributes:subresources:", + "_documentImpl", + "_documentInfoDictionary", + "_documentRange", + "_documentTypeImpl", + "_documentTypeString", "_documentWindow", + "_documentWithImpl:", "_doesOwnRealWindow", - "_done", "_donePoofing", + "_dontCountTowardsOriginLoadLimit", "_dosetTitle:andDefeatWrap:", "_doubleClickAtIndex:limitedRangeOK:", + "_downloadAssessment", + "_downloadAssessmentWithInitialData:", "_downloadEnded", "_downloadFinished", "_downloadStarted", @@ -1428,25 +1886,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_dragDataItemViewer", "_dragEndedNotification:", "_dragFile:fromRect:slideBack:event:showAsModified:", - "_dragImageForElement:", + "_dragGlyphRange", + "_dragImageForLinkElement:", + "_dragImageForRowsWithIndexes:tableColumns:event:offset:", "_dragLocalSource", "_dragShouldBeginFromMouseDown:", "_dragUntilMouseUp:accepted:", + "_draggedColumnImageInset", + "_draggingDocumentViewAtWindowPoint:", + "_drawAlternatingRowBackgroundColors:inRect:", + "_drawAnalogClockWithFrame:inView:", "_drawAnimationStep", + "_drawAsMultiClippedContentInRect:", + "_drawAtomPartsWithRect:", + "_drawAtomPartsWithRect:cellFrame:", + "_drawAtomWithRect:cellFrame:", "_drawBackgroundForGlyphRange:atPoint:parameters:", "_drawBackgroundWithFrame:inView:", "_drawBezelBorder:inRect:", - "_drawBorder:", + "_drawBorder", "_drawBorder:inRect:", "_drawBorderInRect:", "_drawCellAt::insideOnly:", - "_drawCellClipTipWithFrame:inToolTipView:forView:", "_drawCenteredVerticallyInRect:", + "_drawClockAndCalendarWithFrame:inView:", "_drawColumn:", "_drawColumnHeaderRange:", - "_drawColumnsInRect:", "_drawContents:faceColor:textColor:inView:", + "_drawContentsAtRow:column:clipRect:", + "_drawContinuousCapacityWithFrame:inView:", "_drawCustomTrackWithTrackRect:inView:", + "_drawDelegate", + "_drawDiscreteCapacityWithFrame:inView:", "_drawDone:success:", "_drawDropHighlight", "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:", @@ -1456,23 +1927,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_drawEmptyColumnsForView:inRect:", "_drawEndCapInRect:", "_drawFocusRingWithFrame:", + "_drawFooterInRect:", "_drawForTransitionInWindow:usingHalftonePhaseForWindowOfSize:", "_drawFrame", "_drawFrame:", "_drawFrameInterior:clip:", - "_drawFrameRects:", "_drawFrameShadowAndFlushContext:", "_drawFromRect:toRect:operation:alpha:compositing:flipped:ignoreContext:", "_drawGapStyleDropHighlightBetweenUpperRow:andLowerRow:atOffset:inGapRect:", "_drawGlyphsForGlyphRange:atPoint:parameters:", "_drawGrowBoxWithClip:", + "_drawHeaderAndFooter", "_drawHeaderCell:withFrame:withStateFromColumn:", "_drawHeaderFillerInRect:matchLastState:", + "_drawHeaderInRect:", "_drawHeaderOfColumn:", "_drawHighlightWithFrame:inView:", "_drawHighlighted:", "_drawIcon", "_drawIndicatorInRect:", + "_drawInsertionPointIfNecessary", "_drawInsertionPointInRect:color:", "_drawKeyViewOutline:", "_drawKeyboardFocusRingWithFrame:", @@ -1480,6 +1954,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_drawKeyboardFocusRingWithFrame:inView:", "_drawKeyboardUIIndicationForView:debuggingIndex:", "_drawKeyboardUILoopStartingAtResponder:validOnly:", + "_drawLabelHighlightIfNecessaryWithFrame:inView:fullHighlight:", + "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:", "_drawLineForGlyphRange:type:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:", "_drawLiveResizeCachedImage", "_drawLiveResizeHighlightWithFrame:inView:", @@ -1488,8 +1964,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_drawMiniWindow:", "_drawOptimizedRectFills", "_drawOrientedLabel:inRect:", + "_drawOutlineCell:withFrame:inView:", "_drawOverflowHeaderInRect:", "_drawProgressArea", + "_drawRatingWithFrame:inView:", "_drawRealTitleWithFrame:inView:", "_drawRect:clip:", "_drawRect:liveResizeCacheCoveredArea:", @@ -1497,14 +1975,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_drawRect:withOpaqueAncestor:", "_drawRectIfEmpty", "_drawRectIfEmptyWhenSubviewsCoverDirtyRect:", + "_drawRelevancyWithFrame:inView:", "_drawRemainderArea", "_drawRepresentation:", "_drawResizeIndicators:", + "_drawRevealoverWithFrame:inView:forView:", + "_drawRowHeaderBackgroundInRect:", + "_drawRowHeaderSeparatorAsSurface", + "_drawRowHeaderSeparatorInClipRect:", "_drawScrollViewFocusRing:clipRect:needsFullDisplay:", "_drawSortIndicatorIfNecessaryWithFrame:inView:", "_drawStandardPopUpBorderWithFrame:inView:", "_drawTabViewItem:inRect:", "_drawTableExteriorFocusRingIfNecessaryInClipRect:", + "_drawTextFieldWithStepperWithFrame:inView:", "_drawThemeBackground", "_drawThemeBezelBorder:inRect:", "_drawThemeBezelWithFrame:inView:", @@ -1513,59 +1997,79 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_drawThemePopUpBorderWithFrame:inView:bordered:style:", "_drawThemeProgressArea:", "_drawThemeTab:withState:inRect:", + "_drawTickMarksWithFrame:inView:", "_drawTitleBar:", "_drawTitleStringIn:withColor:", "_drawTitlebar:", - "_drawTitlebarLines:inRect:clippedByRect:", - "_drawTitlebarPattern:inRect:clippedByRect:forKey:alignment:", "_drawTitledFrame:", "_drawTitlesForView:inRect:", "_drawToolbarTransitionIfNecessary", + "_drawUnifiedToolbar:", + "_drawUnifiedToolbarBackgroundInRect:withState:", + "_drawView:", "_drawViewBackgroundInRect:", - "_drawWinTab:inRect:tabColor:shadowColor:", "_drawWindowsGaugeRects:", "_drawWithImageCache", - "_drawerIsOpen", "_drawerTakeFocus", - "_drawerTransform", "_drawerVelocity", + "_drawerWindow", "_drawingEndSeparator", - "_drawingInClipTip", + "_drawingInRevealover", "_drawingRectForPart:", + "_drawnByAncestor", "_drawsBackground", "_drawsHorizontalGrid", + "_drawsNothing", + "_drawsOutsideBBox", + "_drawsOwnDescendants", "_drawsVerticalGrid", + "_drawsWithTintWhenHidden", + "_dropNode:", "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:", - "_dumpBookSegments", + "_dumpSetRepresentation:", "_dynamicColorsChanged:", + "_dynamicToolTipManager", + "_dynamicToolTipManagerClass", + "_dynamicToolTipManagerInstances", + "_dynamicToolTipsEnabled", "_edge", - "_editClickedCell:", - "_editCustomLabels:", - "_editableBinderAtIndex:forTableView:", + "_edges", "_editableBinderForTableColumn:", + "_editableStateWithMode:", "_editedDocumentCount", - "_editingBinder", + "_editingDelegateForwarder", "_editingFirstResponderIfIsASubview", "_editingInView:", + "_editor:didChangeEditingState:bindingAdaptor:", + "_effect", "_effectiveFocusRingType", - "_elementAtPoint:", - "_emptyMatrix:", + "_elementAtWindowPoint:", + "_elementAttributeRelationship", + "_elementFromTidyDoc:element:", + "_elementImpl", + "_elementIsBlockLevel:", + "_elementWithImpl:", + "_embedElementImpl", + "_emptyContents", + "_emptyStyle", "_enableAutosavingAndColumnResizingNotifications", - "_enableCellClipTipCreation", + "_enableChangeNotifications", + "_enableChangeSync", "_enableCompositing", - "_enableCursorRectsForNonHiddenViews", "_enableEnablingKeyEquivalentForDefaultButtonCell", "_enableItems", "_enableLayout", "_enableLogging:", + "_enableMatrixLiveResizeImageCacheing", "_enableMovedPosting", - "_enableNotifications", "_enablePosting", - "_enablePrivateEditing", "_enableResizedPosting", "_enableSecurity:", "_enableSelectionPostingAndPost", + "_enableToolTipCreationAndDisplay", "_enableTrackingRect:", + "_enabledStateWithMode:", + "_enablesOnWindowChangedKeyState", "_enclosingBrowser", "_enclosingBrowserView", "_enclosingSidebarItem", @@ -1576,7 +2080,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_encodeMapTable:forTypes:withCoder:", "_encodePropertyList:forKey:", "_encodeWithoutNameWithCoder:newStyle:", - "_encodingCantBeStoredInEightBitCFString", "_encounteredCloseError", "_endChanging", "_endColumnAnimationOptimization", @@ -1585,6 +2088,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_endCustomizationPanel", "_endDragging", "_endDrawForDragging", + "_endDrawView:", "_endEditingIfEditedCellIsChildOfItemEntry:", "_endEditingIfFirstResponderIsASubview", "_endEditingIfNecessaryWhenDeselectingColumnRange:", @@ -1593,105 +2097,170 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_endEditingIfNecessaryWhenSelectingRowRange:byExtendingSelection:", "_endInsertionOptimization", "_endInsertionOptimizationWithDragSource:force:", - "_endLayout", "_endListeningForApplicationStatusChanges", "_endListeningForDeviceStatusChanges", + "_endListeningForPowerStatusChanges", + "_endListeningForSessionStatusChanges", "_endLiveResize", "_endLiveResizeAsTopLevel", "_endLiveResizeForAllDrawers", "_endMyEditing", "_endMyEditingAndRemainFirstResponder", "_endOfParagraphAtIndex:", - "_endRunMethod", "_endScrolling", - "_endStateReached", "_endTabWidth", "_endToolbarEditingMode", "_endTopLevelGroupings", - "_engineDataTypeForPropertyType:", + "_enqueueEndOfEventNotification", + "_ensureAndLockPreferredLanguageLock", "_ensureCapacity:", "_ensureLayoutCompleteToEndOfCharacterRange:", + "_ensureLocalizationDictionaryIsLoaded", + "_ensureMetadataLoaded", "_ensureMinAndMaxSizesConsistentWithBounds", + "_ensureObjectsAreMutable", "_ensureRangeCapacity:", - "_ensureSelectionAfterRemoveWithPreferredIndex:", + "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:", "_ensureSubviewNextKeyViewsAreSubviews", - "_entries", + "_enterElement:tag:display:", + "_enterLibXML2ElementNode:tag:", + "_entity", + "_entityClass", + "_entityDescriptionForObjectID:", + "_entityForCurrentRow", + "_entityForExternalName:inConfigurationNamed:", + "_entityForName:", + "_entityID", + "_entityImpl", + "_entryForPath:", + "_entryForSpecifier:", "_enumeratedArgumentBindings:", "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:", - "_enumeratedDisplayPatternBindings:", + "_enumeratedDisplayPatternTitleBindings:", "_enumeratedEditableBindings:", "_enumeratedEnabledBindings:", "_enumeratedHiddenBindings:", - "_enumerationsInSuite:", + "_enumeratedPredicateBindings:", + "_enumerationBinding", + "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:", "_equalyResizeColumnsByDelta:resizeInfo:", + "_errorAlert:wasPresentedWithResult:inContext:", + "_errorWasPresentedWithRecovery:inContext:", "_errorWithCode:", - "_establishConnection", + "_escapeCharacters:amount:inString:appendingToString:", + "_escapeHTMLAttributeCharacters:withQuote:appendingToString:", + "_escapedStringForString:escapeQuotes:", "_evaluateRelativeToObjectInContainer:", "_evaluateToBeginningOrEndOfContainer:", "_evaluationErrorNumber", - "_eventDelegate", + "_eventImpl", "_eventInTitlebar:", "_eventRecordDelta:", "_eventRef", "_eventRelativeToWindow:", - "_eventWithCGSEvent:", + "_eventWithImpl:", "_evilHackToClearlastLeftHitInWindow", - "_exchangeDollarInString:withString:", + "_excludeObject:fromPropertyWithKey:", + "_excludedFromVisibleWindowList", + "_execute", + "_executeAdd:didCommitSuccessfully:actionSender:", + "_executeAddChild:didCommitSuccessfully:actionSender:", + "_executeFetch:didCommitSuccessfully:actionSender:", + "_executeInsert:didCommitSuccessfully:actionSender:", + "_executeInsertChild:didCommitSuccessfully:actionSender:", + "_executePerformAction", + "_executeSQLString:", + "_executeSave:didCommitSuccessfully:actionSender:", + "_executeSelectNext:didCommitSuccessfully:actionSender:", + "_executeSelectPrevious:didCommitSuccessfully:actionSender:", + "_executionContext", "_existsForArray:", + "_exitElement:tag:display:startIndex:", + "_exitLibXML2ElementNode:tag:startIndex:", "_expand", "_expandItemEntry:expandChildren:", "_expandItemEntry:expandChildren:startLevel:", - "_expandItemsWithItemEntries:expandChildren:", "_expandRep:", - "_expandedCFCharacterSet", + "_expandSelectionToGranularity:", + "_expandedNodesForObservedNode:", "_expirationDate", + "_expirationForResponse:", "_expiresDate", - "_exposeExtraBindings", + "_explicitlyCannotAdd", + "_explicitlyCannotAddChild", + "_explicitlyCannotInsert", + "_explicitlyCannotInsertChild", + "_explicitlyCannotRemove", + "_exposeBinding:valueClass:", "_exposedBindings", + "_expressionWithSubstitutionVariables:", + "_extendCharacterToGlyphMapToInclude:", + "_extendGlyphToWidthMapToInclude:font:", + "_extendNextScrollRelativeToCurrentPosition", + "_extendUnicodeCharacterToGlyphMapToInclude:", "_extendedCharRangeForInvalidation:editedCharRange:", + "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:", "_extensionsFromTypeInfo:", "_extraWidthForCellHeight:", - "_extractResponseStatusLineFromBytes:length:", "_faceForFamily:fontName:", - "_fadePopUpWindow", + "_familyName", "_fastCStringContents:", "_fastCharacterContents", - "_fastDrawGlyphs:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:", - "_fastHighlightGlyphRange:withinSelectedGlyphRange:", - "_fastestEncodingInCFStringEncoding", - "_fetchColorTable:", + "_fastDrawGlyphs:advances:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:", + "_fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:", + "_fastGetCachedRect:forRow:", + "_faultHandler", + "_feContext", + "_feImage", + "_feSampler", + "_feedbackWindowIsVisible", + "_fetch:", + "_fetchAllInstancesFromStore:intoContext:", "_fetchCurrentDirectory", "_fetchExpandedFrameSize", "_fetchExpandedState", "_fetchFileListMode", + "_fetchOrderedByFileProperty:orderedAscending:", + "_fetchRequestTemplatesByName", "_fetchRootDirectory", "_fetchUserSetHideExtensionButtonState", + "_fieldEditor", + "_fieldSetElementImpl", "_fileAttributes", + "_fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:", "_fileButtonOrigin", - "_fileExtensions", - "_fileListModeSwitcher", + "_fileListModeControlCell", + "_fileLocator", + "_fileModificationDate", + "_fileModificationDateForURL:", + "_fileNameExtensionsForType:forUseInSavePanel:", "_fileOperation:source:destination:files:", "_fileOperationCompleted:", "_filePathValue", "_fileURLValue", - "_filenameHasNonEmptyAllowedFileType:", + "_fileWrapperForURL:", + "_fileWrapperRepresentation", + "_filenameForCollection:", + "_filenameHasAcceptableFileType:", + "_filenameHasNonEmptyAcceptableFileType:", "_fillBackground:withAlternateColor:", - "_fillFloatArray:", "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:", "_fillGrayRect:with:", + "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:", "_fillLayoutHoleAtIndex:desiredNumberOfLines:", - "_fillPlatformGlyphArray:withGlyphsInRange:", - "_fillPlatformTextStyle:withAttributes:disableKerning:", "_fillSpellCheckerPopupButton:", + "_fillerRectHeight", "_fillsClipViewHeight", "_fillsClipViewWidth", - "_filterAndSortNodeList:", + "_filterList", "_filterNodeList:", "_filterObjects:", - "_finalObserver", + "_filterRestrictsInsertion", + "_filteredAndSortedChildrenOfNode:", + "_finalProgressComplete", "_finalScrollingOffsetFromEdge", - "_finalSlideLocation", "_finalize", + "_finalizeStatement", "_findButtonImageForState:", "_findCoercerFromClass:toClass:", "_findColorListNamed:forDeviceType:", @@ -1699,138 +2268,143 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_findDictOrBitmapSetNamed:", "_findDragTargetFrom:", "_findFirstItemInArray:withItemIdentifier:", + "_findFirstKeyViewInDirection:forKeyLoopGroupingView:", "_findFirstOne::", - "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:", + "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:byExtendingSelection:", "_findFirstValidKeyViewStartingFrom:inTabViewItem:", - "_findFont:size:matrix:flag:", "_findFrameInThisWindowNamed:", "_findFrameNamed:", "_findHitItemViewer:", "_findIndexOfFirstDuplicateItemWithItemIdentier:", "_findItemViewerAtPoint:", - "_findLastFieldLabelforAttribute:startingAt:", + "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:", "_findLastViewInKeyViewLoop", "_findLastViewInKeyViewLoopStartingAtView:", "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:", - "_findNext:", "_findParentWithLevel:beginingAtItem:childEncountered:", "_findPreviousNextTab:loop:startingAtTabItem:", - "_findRecord:ofType:", - "_findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:", "_findScrollerToAutoLiveScrollInWindow:", - "_findSidebarNodeForVirtualNode:", "_findSystemImageNamed:", "_findWindowUsingCache:", "_findWindowUsingRealWindowNumber:", - "_finishDecoding", + "_finishAutosavingWithSuccess:", + "_finishDownloadDecoding", "_finishHitTracking:", "_finishInitialization", "_finishMessagingClients:", "_finishModalOperation", "_finishPrintFilter:filter:", + "_finishPrintingDocumentsInContext:success:", "_finishSaveDocumentTo:withType:forSaveOperation:withDelegate:didSaveSelector:contextInfo:", - "_finishWritingFileNamed:in:byExchangingWithFileIn:", - "_finishWritingItemAt:byMovingItemAt:", + "_finishWritingFileAtPath:byMovingFileAtPath:", + "_finishWritingFileNamed:inFolder:byExchangingWithFileInFolder:", "_finishedLoading", "_finishedLoadingResourceFromDataSource:", "_finishedMakingConnections", - "_finishedUpdatingIndex:", "_finishedWiringNibConnections", - "_finishedWithFileDescriptor", - "_fireWithSelection:", - "_firstEnabledPart", + "_fireFirstAndSecondLevelFaultsForObject:withContext:", "_firstHighlightedCell", "_firstMoveableItemIndex", "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:", "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:", - "_firstSelectableRow", + "_firstPresentableName", + "_firstResponderIsControl", "_firstSelectableRowInMatrix:inColumn:", "_firstTextViewChanged", "_fixCommandAlphaShifts", "_fixGlyphInfo:inRange:", "_fixHeaderAndCornerViews", + "_fixJoiningOfSelectedAtoms", "_fixKeyViewForView:", - "_fixNSHostLeak", - "_fixNSMachPortLeak", - "_fixNSMessagePortLeak", - "_fixNSSocketPortLeak", "_fixSelectionAfterChangeInCharacterRange:changeInLength:", "_fixSharedData", "_fixTargetsForMenu:", + "_fixedSelectionRangeForRange:affinity:", + "_fixedSelectionRangesForRanges:affinity:", "_fixup:numElements:", + "_fixupKeyboardLoop", "_fixupSortDescriptorPlaceholdersIfNecessary", - "_flashSelectedPopUpItem", "_flattenMenu:", "_flattenMenuItem:", - "_floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:withPadding:applyRounding:attemptFontSubstitution:widths:fonts:glyphs:numGlyphs:letterSpacing:wordSpacing:smallCaps:fontFamilies:", + "_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:", "_flushAEDesc", "_flushAllCachedChildren", + "_flushCachedCarbonPrintersByName", "_flushCachedChildrenForNode:", - "_flushCachedFontInfo", + "_flushCachedObjects", "_flushNotificationQueue", - "_flushToDisk", + "_focusDidChange:", "_focusFromView:withContext:", "_focusInto:withClip:", "_focusOnCache:", + "_focusRingCGColor", "_focusRingFrameForFrame:cellFrame:", "_focusRingRect", + "_focusRingVisibleRect", "_focusedCrayon", "_fondID", + "_fontAttributesFromFontPasteboard", + "_fontDescriptor", + "_fontDescriptorForFontPanel", + "_fontElementImpl", + "_fontFaceRuleImpl", "_fontFallbackType", "_fontForName:size:", - "_fontFromBindingsAtIndex:referenceFont:fallbackFont:ignoreIfNotController:", + "_fontFromBindingsWithMode:referenceFont:fallbackFont:", "_fontFromDescriptor:", "_fontNameForFamily:face:", "_fontNameForFont:", "_fontSetChanged:", "_fontSetWithName:", - "_fontWithName:scale:skew:oblique:translation:", - "_fontWithName:size:matrix:", "_fontWithNumber:size:bold:italic:", - "_forArgument:getType:andSuite:", + "_footerHeight", "_forKey:getType:andSuite:", - "_forPropertyWithIndex:getWantsNotification:oldValue:newValue:", "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:", "_forSRSpeechObject:setObject:forProperty:usingDataSize:", "_forceAppendItem:", - "_forceAscenderDelta", + "_forceCharIndexesAllocation", "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs", "_forceFixAttributes", "_forceFlushWindowToScreen", "_forceInsertItem:atIndex:", "_forceMoveItemFromIndex:toIndex:", + "_forceOriginalFontBaseline", + "_forceRedrawDragInsertionIndicator", "_forceRemoveItemFromIndex:", "_forceReplaceItemAtIndex:withItem:", "_forceResetTexturedWindowDragMargins", "_forceSendAction:notification:firstResponder:", + "_forceSendDoubleActionForPreviewCell", "_forceSetColor:", "_forceSetLastEditedStringValue:", "_forceSetView:", - "_forceSingleLoad", - "_forceSynchronizedScrollingAnimation", "_forceUpdateDimpleLocation", - "_forget:", + "_forceUpdateFocusRing", "_forgetData:", - "_forgetRecentDocumentAt:", + "_forgetObject:propagateToObjectStore:", "_forgetSpellingFromMenu:", "_forgetWord:inDictionary:", "_formDelegate", - "_format:withDigits:", + "_formElementImpl", + "_formElementWithImpl:", + "_formatCocoaErrorString:parameters:applicableFormatters:count:", "_formatObjectValue:invalid:", - "_formatter", - "_forwardToCFNetwork", - "_forwarderForObserver:relationshipKey:valueKeyPath:", + "_fragmentData", + "_fragmentImpl", "_frame", - "_frameDidDrawTitle", - "_frameForDataSource:", + "_frameDuration", + "_frameDurationAt:", + "_frameElementImpl", + "_frameForCurrentSelection", "_frameForDataSource:fromFrame:", "_frameForView:", "_frameForView:fromFrame:", "_frameLoadDelegateForwarder", - "_frameOfCell:", "_frameOfColumns", "_frameOfOutlineCellAtRow:", "_frameOrBoundsChanged", + "_frameSetElementImpl", + "_frameViewAtWindowPoint:", "_freeCache:", "_freeClients", "_freeImage", @@ -1840,107 +2414,130 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_freeServicesMenu:", "_freeSpeechItems", "_freshnessLifetime", - "_fromContainerInfo:andKeyCode:inCommandConstructionContext:getAdjustedContainerInfo:andKey:", - "_fromRecord:inCommandConstructionContext:getContainerInfo:", - "_fromRecord:inCommandConstructionContext:getContainerInfo:andKey:", + "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:", + "_fromRecord:getContainerInfo:", + "_fromRecord:getContainerInfo:andKey:", "_fromScreenCommonCode:", "_fsRefValue", "_fullDescription:", - "_fullLabel", "_fullLayout", - "_fullName", "_fullPathForService:", - "_fullPhoneticName", "_gatherFocusStateInto:upTo:withContext:", "_gaugeImage:", + "_gc:", "_generateCompositedBackground", + "_generateErrorDetailForKey:withValue:", + "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:", "_generateFrameName", - "_generateIdentifier", + "_generateHTML", + "_generateIDWithSuperEntity:nextID:", + "_generateInverseRelationshipsAndMore", + "_generateMetalBackground", + "_generateModel:", "_generatePSCodeHelpedBy:operation:", + "_generateProperties", "_generateScaledBackground", "_generatedMIMETypeForURLScheme:", "_genericDragCursor", - "_getAllAttributesIncludeValues:", - "_getAttributesInNode:fromBuffer:listReference:count:includeValues:", + "_genericMutableSetValueForKey:", + "_genericValueForKey:withIndex:flags:", + "_getAETEElementClassDescriptions:exceptThoseWithKeys:andSupers:", + "_getATSTypesetterGuts", + "_getArguments:withParameters:", + "_getAuxData", "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:", "_getBracketedStringFromBuffer:string:", "_getBrowser:browserColumn:", - "_getBytesAsData:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:", - "_getCString:maxLength:encoding:", + "_getBucketForSeekingToPoint:", + "_getBucketForSeekingToRow:", + "_getBucketLocationForBucket:", + "_getButtonImageParts:::", + "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:", + "_getCGCustomColorSpace", + "_getCGImageRefCreateIfNecessary", "_getCacheWindow:andRect:forRep:", "_getCharactersAsStringInRange:", - "_getContents:", - "_getConvertedDataForType:", + "_getColorFromImageAtPoint:", + "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:", + "_getCommonTypeFor:", "_getConvertedDataFromPasteboard:", - "_getCounterpart", "_getCursorBitmapWidth:andHeight:", "_getData:encoding:", - "_getDefaultPreferedColumnContentWidth", - "_getDirtyRects:clippedToRect:count:", + "_getDirtyRects:clippedToRect:count:boundingBox:", + "_getDisplayDelay:inQuickMode:forView:", + "_getDisplayDelegateFadesOutWhenInactive:", "_getDocInfoForKey:", + "_getDocument", "_getDrawingRow:andCol:", - "_getEightBitRGBMeshedBitmap:rowBytes:extraSample:reverseScanLines:removeAlpha:", - "_getFSRefForApplicationName:", + "_getExternalData:", "_getFSRefForPath:", - "_getFSRefForServiceName:", - "_getFSSpecForPath:", + "_getFloat:forNode:property:", "_getFocusRingFrame", + "_getFullyFormedCellAtColumn:row:", "_getGaugeFrame", "_getGlobalWindowNumber:andRect:forRepresentation:", "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:", "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:", - "_getHiddenList", + "_getGlyphIndexForLocationInWindow:roundToClosest:fraction:layoutManager:textStorage:", + "_getITypeFor:", + "_getImageAndHotSpotFromCoreCursor", + "_getInsertionGlyphIndexForDrag:", "_getInstanceForIdentifier:", + "_getKernelFolderCPath", + "_getKeys:forPropertyDescriptionKind:", "_getLocalPoint:", + "_getLocalizedLabels:andLocalizedValues:", "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:", - "_getNextResizeEvent", + "_getNewTemporaryId", "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:", "_getNodeForKey:inTable:", + "_getPageHeaderRect:pageFooterRect:forBorderSize:", "_getPartStruct:numberOfParts:withInnerBounds:", "_getPosition:", "_getPositionFromServer", "_getProgressFrame", + "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:", "_getRemainderFrame", - "_getRemainingNominalParagraphGlyphRange:andParagraphSeparatorRange:forGlyphAtIndex:", + "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:", "_getRidOfCacheAndMarkYourselfAsDirty", "_getRow:andCol:ofCell:atRect:", "_getRow:column:nearPoint:", + "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:", + "_getSelectorForType:", + "_getSymbolForType:", + "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:", "_getTextColor:backgroundColor:", - "_getThemeImageTabBarRect:backgroundRect:fillBackgroundRect:", "_getTiffImage:ownedBy:", "_getTiffImage:ownedBy:asImageRep:", + "_getUUID", "_getUndoManager:", "_getVRefNumForPath:", - "_getValue:forKey:", - "_getValue:forObj:", - "_getValue:forType:", - "_getVolumes:iDiskRefNum:", + "_getVisibleRowRange:columnRange:", "_getWindowCache:add:", "_giveUpFirstResponder:", - "_globalWindowNum", + "_globalIDChanged:", + "_globalIDForObject:", + "_globalIDsForObjects:", "_glyph", - "_glyphAtIndex:characterIndex:glyphInscription:isValidIndex:", - "_glyphDescription", - "_glyphDrawsOutsideLineHeight:", + "_glyphAdvancementCache:", + "_glyphAdvancementCache:renderingMode:", "_glyphForFont:baseString:", - "_glyphGenerator", "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:", - "_glyphInfoAtIndex:", "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:", "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:", "_goBack", "_goForward", + "_goToHistoryState:", "_goToItem:withLoadType:", "_goneMultiThreaded", - "_goneSingleThreaded", "_gradientImage", "_graphiteAlternatingRowColor", "_graphiteControlTintColor", "_graphiteKeyboardFocusColor", - "_gray136Color", "_gray204Color", "_gray221Color", "_grestore", + "_growBoxOwner", "_growBoxRect", "_growCachedRectArrayToSize:", "_growContentReshapeContentAndToolbarView:animate:", @@ -1948,14 +2545,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_growFrameForDropGapStyleIfNecessary", "_growWindowReshapeContentAndToolbarView:animate:", "_gsave", + "_guaranteeStorageInDictionary:addBinding:", "_guess:", - "_handCursor", - "_handleAEOpen", + "_guessesForMisspelledSelection", + "_handleAEOpen:", + "_handleAEOpenContentsEvent:replyEvent:", "_handleAEOpenDocuments:", - "_handleAEPrintDocuments:", + "_handleAEPrintDocuments:withSettings:showPrintPanels:", "_handleAEQuitWithActivating:documentSaving:", "_handleAEReopen", + "_handleAppActivation:", + "_handleApplyValueError:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "_handleApplyValueResult:cachedValue:displayValue:objectValue:", "_handleAutoscrollForMouseDragged:", + "_handleBoundsChangeForSubview:", "_handleCarbonEvent:callRef:", "_handleChildAdded:", "_handleChildAddedOrRemoved:", @@ -1963,8 +2566,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_handleChildRemoved:", "_handleChildrenChanged:", "_handleCommand:", + "_handleCompletionsForPartialWordRange:indexOfSelectedItem:inTextView:", "_handleContentBoundsChanged", "_handleCoreEvent:withReplyEvent:", + "_handleCurrentBrowsingNodePathChanged", "_handleCurrentDirectoryChanged:", "_handleCurrentDirectoryNodeChanged", "_handleCursorUpdate:", @@ -1972,34 +2577,42 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_handleDisabledNodeClicked:", "_handleDocumentFileChanges:", "_handleError:delta:fromRect:toPoint:", + "_handleError:withError:", "_handleFauxDisabledNodeClicked:", "_handleFileListConfirmedSelection:", + "_handleFileListDidReloadChildrenForNode:", "_handleFileListModeChanged", "_handleFileListModeChanged:", "_handleFileListSelectionChanged:", + "_handleFocusToolbarHotKey:", + "_handleFrameChangeForSubview:", + "_handleGotoFinishedWithResult:", "_handleKeyEquivalent:", - "_handleLoadCallback", "_handleMessage:from:socket:", - "_handleMouseDragged:", "_handleMouseUpWithEvent:", "_handleNameFieldContentsChanged", - "_handleNameFieldContentsChangedAsGoto", + "_handleObservingRefresh", "_handlePhonemeCallbackWithOpcode:", + "_handleQueryStateChange:", "_handleRecognitionBeginningWithRecognitionResult:", "_handleRecognitionDoneWithRecognitionResult:", - "_handleRegistrationChange:", - "_handleRegistrationChange:forBinder:", + "_handleRedrawSidebarSelectionIfNecessary", "_handleRootBoundsChanged", "_handleRootNodeChanged", "_handleRootNodeChanged:", "_handleSelectionChanged", "_handleSelectionConfirmed", + "_handleSelfTestEvent:", "_handleSendControlSize:toCellOfView:", "_handleSendControlSize:toView:", "_handleSpeechDoneCallback", + "_handleStyleKeyEquivalent:", + "_handleTabKey:", + "_handleTestEvent:withReplyEvent:", "_handleText:", "_handleUIEvents", "_handleUnimplementablePolicyWithErrorCode:forURL:", + "_handleValidationError:description:inEditor:errorUserInterfaceHandled:bindingAdaptor:", "_handleWillPopUpNotification", "_handleWordCallbackWithParams:", "_hasActiveAppearance", @@ -2011,10 +2624,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_hasCredentials", "_hasCursorRects", "_hasCursorRectsForView:", - "_hasCustomColor", + "_hasCustomVisibilityPriority", "_hasDefaultButtonIndicator", "_hasEditableCell", "_hasExpirationDate", + "_hasFocusRing", + "_hasFocusRingInView:", "_hasGradientBackground", "_hasHorizontalOrientation", "_hasIconForIconURL:", @@ -2025,25 +2640,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_hasKeyboardFocus", "_hasKeyboardFocusInTabItem:", "_hasMainAppearance", - "_hasPressAction", + "_hasMetalSheetEffect", + "_hasNonNominalDescriptor", + "_hasObservers", + "_hasOverrideForSelector:", + "_hasPendingChanges", + "_hasQuestionMarkOnlyQueryString", + "_hasRetainedStoreResources", + "_hasRowHeaderColumn", "_hasScaledBackground", "_hasSeenRightToLeft", + "_hasSelection", + "_hasSelectionOrInsertionPoint", "_hasSeparateArrows", - "_hasShadow", + "_hasSheetFactor:", "_hasTabs", "_hasTitle", "_hasToolbar", "_hasWindowRef", "_hasWindowRefCreatedForCarbonControl", - "_hasgState", "_hash", "_hashMarkDictionary", "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:", "_hashMarkDictionaryForDocumentView:measurementUnitName:", + "_headElementImpl", "_headerCellRectOfColumn:", "_headerCellSizeOfColumn:", - "_headerFieldsForHeaderlessContent", + "_headerHeight", "_headerSizeOfColumn:", + "_headingElementImpl", "_heartBeatBufferWindow", "_heartBeatThread:", "_heedBeginningOfPage:", @@ -2051,38 +2676,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_heightIsFlexible", "_helpBundleForObject:", "_helpKeyForObject:", - "_helpWindow", "_helperDeallocatedForView:layoutManager:", "_hiddenExtension", + "_hiddenOnLaunch", + "_hiddenStateWithMode:", + "_hiddenWindows", "_hide", "_hide:", "_hideAllDrawers", "_hideChildren", - "_hideDropShadow", - "_hideHODWindow", + "_hideLanguagePopUp", + "_hideMDPartsIfNecessary", "_hideMenu:", - "_hideSheet", + "_hideQueryProgress", + "_hideSheet:", "_hideToolbar:animate:", "_hideToolbarWithAnimation:", + "_hideWithoutResizingWindowHint", "_highlightCell:atRow:column:andDraw:", "_highlightColor", + "_highlightColorDependsOnWindowState", "_highlightColorForCell:", "_highlightColumn:clipRect:", + "_highlightOutlineCell:highlight:withFrame:inView:", "_highlightRow:clipRect:", - "_highlightSelectedItem:", - "_highlightTabColor", "_highlightTextColor", - "_highlightsWithHighlightRect", + "_highlightedNodes", + "_hiliteWindow:fromWindow:", + "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:", + "_historyControlCell", "_hitTest:dragTypes:", - "_hookupWithFZService:", - "_horizontalAdjustmentForItalicAngleAtHeight:", - "_horizontalKeyboardScrollAmount", - "_horizontalResizeCursor", + "_hitTestCellContentAtColumn:row:point:", + "_hitTestContentAtPoint:inRect:ofView:", + "_horizontalKeyboardScrollDistance", + "_horizontalPageScrollDistance", "_horizontalScroller", + "_horizontalScrollerClass", "_horizontalScrollerSeparationHeight", + "_hostData", + "_hostString", "_hoverAreaIsSameAsLast:", "_htmlDocumentClass", - "_iconDictionariesAreGood", + "_htmlFromTidyNode:tidyDoc:appendingToString:", + "_iconForCarbonIcon:size:", "_iconForFileURL:withSize:", "_iconForOSType:", "_iconForOSType:creator:", @@ -2092,20 +2728,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_iconsBySplittingRepresentationsOfIcon:", "_iconsForIconURLString:", "_idleMovies", - "_ignore:", + "_ignoreForKeyViewLoop", "_ignoreSpellingFromMenu:", + "_ignoringChangeNotifications", "_ignoringScrolling", "_image", - "_imageForCell:keyWindow:", + "_imageElementImpl", + "_imageElementWithImageResource:", + "_imageExistsAtPaths:", "_imageForColorPicker:", - "_imageForDivider:keyWindow:", "_imageForDrawingInRectOfSize:fromImage:", "_imageForMenu", - "_imageForPart:keyWindow:", "_imageFromItemTitle:", "_imageFromNewResourceLocation:", - "_imageNameForPerson", "_imageNamed:", + "_imageNumber", "_imageRectWithRect:", "_imageRepClassForFileNameExtension:andHFSFileType:", "_imageRepWithData:hfsFileType:extension:", @@ -2116,172 +2753,224 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_imagesFromURL:forImage:fileType:extension:", "_imagesHaveAlpha", "_imagesWithData:hfsFileType:extension:zone:", + "_imagesWithData:zone:", "_immediateChildFrameNamed:", - "_immutableStringCharacterSetWithArray:", + "_immediateScrollToPoint:", + "_imp", "_impactsWindowMoving", "_impl", - "_importConfirmSheetDidEnd:returnCode:contextInfo:", - "_importGroups:", - "_importPeople:", - "_importThreadBegan:", - "_importThreadContinued:", - "_importThreadFinished", - "_importedCard", + "_implicitObservationInfo", + "_implicitObservationInfoForEntity:forResultingClass:", + "_importRuleImpl", + "_inAutoCompleteTyping", "_inFavMode", "_inHideCollectionsMode", "_inHideFaceMode", "_inLiveResize", "_inMiniMode", "_inPreview", + "_inQuickDisplayModeForWindow:", "_inResize:", "_inTSMPreProcess", "_inTexturedWindow", - "_inactiveButtonsNeedMask", + "_includeObject:intoPropertyWithKey:", "_incrementBy:startingAtIndex:", + "_incrementInUseCounter", "_incrementLine:", "_incrementPage:", - "_incrementProgressForConnection:data:", - "_incrementProgressForConnection:response:", + "_incrementProgressForConnectionDelegate:data:", + "_incrementProgressForConnectionDelegate:response:", + "_incrementSelectedSubfield", + "_incrementUndoTransactionID", + "_indexAtIndex:", "_indexClosestToIndex:equalAllowed:following:", - "_indexForProperty:", "_indexForRed:green:blue:", + "_indexOfColonInName", + "_indexOfColonInString:", "_indexOfFirstGlyphInTextContainer:okToFillHoles:", + "_indexOfItemWithPartialTitle:", "_indexOfKey:", "_indexOfNode:inOrderedNodes:", "_indexOfPopupItemForLanguage:", "_indexOfRangeAfterOrContainingIndex:", "_indexOfRangeBeforeOrContainingIndex:", "_indexOfRangeContainingIndex:", + "_indexOfSubfieldAtPoint:inFrame:", + "_indexPath", "_indicatorImage", "_indicatorImageForCellHeight:", - "_infoFilePath", "_infoForOSAError:", "_infoForPage:", - "_infoToSave", - "_informationForFont:glyphTable:positionTable:kerns:ligatures:disableKerningAndLigatures:", + "_informationForFont:glyphTable:positionTable:", "_init", - "_initByCopying:", - "_initClipIndicatorImage", + "_init:", + "_init::::", "_initContent:styleMask:backing:defer:contentView:", "_initContent:styleMask:backing:defer:counterpart:", - "_initContent:styleMask:backing:defer:screen:contentView:", "_initContentView", "_initData", + "_initDefaultNamespaces", + "_initEmptyHTMLNames", "_initFlippableViewCacheLock", - "_initFromAbsolutePositionRecord:inCommandConstructionContext:", - "_initFromGlobalWindow:inRect:", + "_initFromAbsolutePositionRecord:", "_initFromGlobalWindow:inRect:styleMask:", - "_initFromRangeRecord:inCommandConstructionContext:", - "_initFromRecord:inCommandConstructionContext:", - "_initFromTestRecord:inCommandConstructionContext:", + "_initFromRangeRecord:", + "_initFromRecord:", + "_initFromTestRecord:", "_initInStatusBar:withLength:withPriority:", "_initInfoDictionary", "_initJobVars", "_initLocks", - "_initNominalMappings", "_initPanelCommon", "_initRemoteWithSignature:", "_initSaveMode", "_initServicesMenu:", "_initSidebarAndPopups", + "_initSingleAttributes", "_initUI", + "_initValueTransformers", + "_initWithAbstractViewImpl:", "_initWithAddressInfo:", "_initWithArray:", - "_initWithAttributesNoCopy:pageFormatNoCopy:printSettingsNoCopy:", - "_initWithBase:addingPropertyIndexes:count:options:", - "_initWithBase:removingPropertyIndexes:count:", + "_initWithAttributesNoCopy:pageFormatNoCopy:orFlattenedData:printSettingsNoCopy:orFlattenedData:", + "_initWithBitmapImageRep:", + "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:", + "_initWithCGColorSpaceNoCache:", "_initWithCGSEvent:", "_initWithCGSEvent:eventRef:", - "_initWithClass:", - "_initWithClassDescription:synonymClassCode:", - "_initWithClassInfo:observances:", - "_initWithContainer:methods:", - "_initWithContainer:mutatingMethods:", - "_initWithContainer:nonmutatingMethods:mutatingMethods:", - "_initWithContainer:valueGetter:mutatingMethods:", - "_initWithContainer:valueGetter:valueSetter:", + "_initWithCIImage:", + "_initWithCSSStyleSheetImpl:", + "_initWithCachedResponse:originalURL:", + "_initWithClassDescription:synonymDescription:", + "_initWithCollectionImpl:", "_initWithContentSize:preferredEdge:", "_initWithContentsOfFile:error:", - "_initWithDIB:", + "_initWithCounterImpl:", + "_initWithDOMImplementationImpl:", + "_initWithDOMRange:", + "_initWithDOMStyleSheetImpl:", + "_initWithData:bytesPerRow:size:format:params:", "_initWithData:error:", "_initWithData:fileType:hfsType:", "_initWithData:tiff:imageNumber:", "_initWithDataOfUnknownEncoding:", - "_initWithDescriptorType:bytes:byteCount:", "_initWithDictionary:", - "_initWithDictionary:andValueType:", + "_initWithEntities:", + "_initWithEntity:withID:withHandler:withContext:", + "_initWithEventImpl:", + "_initWithFileSpecifierOrStandardizedPath:", + "_initWithGraph:mutable:", + "_initWithGraphicsPort:flipped:", "_initWithIconRef:includeThumbnail:", - "_initWithIdentifiers:values:labels:primaryIdentifier:", + "_initWithImage:options::", + "_initWithImage:optionsList:", "_initWithImageReader:", + "_initWithImageSource:imageNumber:properties:", "_initWithImpl:uniquedFileName:docInfo:imageData:parentWrapper:", "_initWithIncrementalImageReader:forImage:", + "_initWithLibTidyDoc:child:", + "_initWithLoadingConnection:request:response:delegate:proxy:", "_initWithLoadingResource:request:response:delegate:proxy:", + "_initWithMediaListImpl:", "_initWithName:", "_initWithName:fromCMProfileRef:", "_initWithName:fromPath:forDeviceType:lazy:", "_initWithName:host:process:bundle:serverClass:keyBindings:", "_initWithName:printer:", "_initWithName:propertyList:", + "_initWithName:type:", + "_initWithName:type:withClassName:", + "_initWithNamedNodeMapImpl:", + "_initWithNodeFilterImpl:", + "_initWithNodeImpl:", + "_initWithNodeIteratorImpl:filter:", + "_initWithNodeListImpl:", + "_initWithObjectImp:root:", "_initWithObjectNoExceptions:", - "_initWithObserver:propertyIndexes:count:options:context:", - "_initWithObserver:relationshipKey:valueKeyPath:options:context:", + "_initWithObserver:property:options:context:", + "_initWithOptionsCollectionImpl:", "_initWithOutput:", "_initWithParagraphStyle:", + "_initWithParentObjectStore:", "_initWithPath:bundle:", "_initWithPickers:", - "_initWithPluginErrorCode:contentURLString:pluginPageURLString:pluginName:MIMEType:", + "_initWithPluginErrorCode:contentURL:pluginPageURL:pluginName:MIMEType:", + "_initWithProperties:", + "_initWithProperties:commandName:resultTypeAppleEventCode:", + "_initWithProperties:defaultSubcontainerAttributeKey:inverseRelationshipKeys:", + "_initWithPropertyList:", + "_initWithRGB:", "_initWithRTFSelector:argument:documentAttributes:", + "_initWithRangeImpl:", + "_initWithRectImpl:", "_initWithRequest:delegate:directory:", + "_initWithResumeInformation:delegate:path:", "_initWithRetainedCFSocket:protocolFamily:socketType:protocol:", + "_initWithRuleImpl:", + "_initWithRuleListImpl:", "_initWithScriptIDNoCopy:", "_initWithSet:", "_initWithSharedBitmap:rect:", "_initWithSharedKitWindow:rect:", "_initWithSize:depth:separate:alpha:allowDeep:", "_initWithStream:data:topDict:", + "_initWithStyleDeclarationImpl:", + "_initWithStyleSheetListImpl:", + "_initWithSuiteName:className:implDeclaration:presoDeclaration:", + "_initWithSuiteName:commandName:implDeclaration:presoDeclaration:", + "_initWithSuiteRegistry:", "_initWithTarget:action:", + "_initWithTexture:size:params:", "_initWithThemeType:", - "_initWithURLFunnel:options:documentAttributes:", - "_initWithVCardRepresentation:", + "_initWithTreeWalkerImpl:filter:", + "_initWithValueImpl:", "_initWithWindow:", "_initWithWindowNumber:", - "_initWithoutAEDesc", - "_initialOffset", - "_initialTimedLayoutDelay", - "_initialTimedLayoutEnabled", - "_initialTimedLayoutSize", + "_initWithWindowNumber:scaleFactor:", + "_initWithfeImage:", + "_initWithfeKernel:", + "_initWithfeSampler:", "_initialize:::", + "_initializeATSUStyle", "_initializeArchiverMappings", "_initializeButtonCell", "_initializeFromKeychain", + "_initializePredefinedEntities", "_initializeRegisteredDefaults", - "_initializeSharedApplicationForCarbonAppIfNecessary", + "_initializeResumeInformation:", + "_initializeScriptDOMNodeImp", + "_initializeWithObjectImp:root:", "_inputClientChangedStatus:inputClient:", - "_inputController", + "_inputElementImpl", "_inputManagerInNextScript:", + "_insertChildOrSibling:", + "_insertDigit:", "_insertGlyphs:elasticAttributes:count:atGlyphIndex:characterIndex:", "_insertItemInSortedOrderWithTitle:action:keyEquivalent:", + "_insertMatch:", "_insertNewItemWithItemIdentifier:atIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_insertNode:byEntityName:", + "_insertObject:atArrangedObjectIndex:objectHandler:", + "_insertObject:atArrangedObjectIndexPath:objectHandler:", "_insertObjectInSortOrder:", - "_insertObjects:atIndexes:", - "_insertPopup", + "_insertObjectWithGlobalID:globalID:", "_insertRange:inArrayAtIndex:", - "_insertRecord:", "_insertStatusItemWindow:withPriority:", "_insertText:forInputManager:", - "_insertionContainerSpecifier", + "_insertText:selectInsertedText:", + "_insertablePasteboardTypes", "_insertionGapForItemViewer:forDraggingSource:", "_insertionGlyphIndexForDrag:", - "_insertionIndexForGroup:", - "_insertionIndexForPerson:", - "_insertionIndexForPoint:previousIndex:", + "_insertionIndexPathAppendChildIndex:", "_insertionOrder", "_insertionPointDisabled", "_insetRect:", "_insideAnotherHTMLView", + "_installActionButtonIfNecessary", "_installAutoreleasePoolsOnCurrentThreadIfNecessary", "_installCarbonAppDockHandlers", "_installCarbonWindowEventHandlers", + "_installHeartBeat:", "_installLabel", "_installOpenRecentMenuOpeningEventHandler:", "_installOpenRecentsMenu", @@ -2289,83 +2978,104 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_installWindowDepthHandler", "_intValue", "_integerValueForKey:", - "_interceptKeyEvent:toView:", + "_interceptEditingKeyEvent:", + "_internalChildFrames", "_internalIndicesOfObjectsByEvaluatingWithContainer:count:", "_internalInit", + "_internalLoadDelegate", "_internalNetService", + "_internalXMLStringWithOptions:appendingToString:", "_invalidLabelSize", + "_invalidNavNodePopUpLabelAction", "_invalidate", + "_invalidateAllRevealovers", + "_invalidateAllRevealoversForView:", "_invalidateBlinkTimer:", - "_invalidateCellClipTips", - "_invalidateCellClipTipsForView:", + "_invalidateCachedRect", "_invalidateCompositedBackground", "_invalidateConnectionsAsNecessary:", + "_invalidateCursorRectsForView:force:", "_invalidateDictionary:newTime:", + "_invalidateDisplayForChangeOfSelectionFromRange:toRange:", "_invalidateDisplayForMarkedOrSelectedRange", "_invalidateDisplayIfNeeded", "_invalidateFocus", - "_invalidateFocusRingRect", + "_invalidateFont", + "_invalidateForLiveResize", + "_invalidateForSubviewFrameChange:oldSize:oldTopLeft:", "_invalidateGStatesForTree", "_invalidateGlyphsForCharacterRange:editedCharacterRange:changeInLength:actualCharacterRange:", "_invalidateGlyphsForExtendedCharacterRange:changeInLength:", + "_invalidateImageProperties", "_invalidateImageTypeCaches", + "_invalidateImages", "_invalidateInsertionPoint", "_invalidateKeyToIndexTable", "_invalidateLayoutForExtendedCharacterRange:isSoft:", "_invalidateLiveResizeCachedImage", "_invalidateNumberOfRowsCache", + "_invalidateObjectValue", + "_invalidateObjectsDuringSave", + "_invalidateOrComputeNewCursorRectsIfNecessary", "_invalidatePendingPolicyDecisionCallingDefaultAction:", "_invalidateReleaseTimer", "_invalidateResourceForGraphicsContext:", "_invalidateRunLoopTimer", "_invalidateScaledBackground", "_invalidateTabsCache", - "_invalidateTimers", + "_invalidateTextColor", "_invalidateTitleCellSize", "_invalidateTitleCellWidth", "_invalidateUsageForTextContainersInRange:", + "_invalidatedAllObjectsInStore:", "_invertedSkipSet", "_invokeActionByKeyForCurrentlySelectedItem", "_invokeMultipleSelector:withArguments:onKeyPath:atIndex:", + "_invokeMultipleSelector:withArguments:onKeyPath:atIndexPath:", "_invokeSelector:withArguments:forBinding:", "_invokeSelector:withArguments:onKeyPath:", - "_invokeSelector:withArguments:onKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", + "_invokeSelector:withArguments:onKeyPath:ofObject:mode:raisesForNotApplicableKeys:", "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:", + "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:", "_invokeSingleSelector:withArguments:onKeyPath:", + "_isAXConnector", "_isAbsolute", "_isAcceptableDragSource:types:dragInfo:", "_isActivated", - "_isAncestorOf:", + "_isAllowedFileType:", "_isAncestorOfViewIdenticalTo:", "_isAnimating", "_isAnimatingDefaultCell", "_isAnimatingScroll", "_isAnyBindingInMaskBound:", "_isAnyFontBindingBoundToController:", - "_isAnyKeyInArrayBound:", "_isAutoCreated", "_isAutoPlay", + "_isBeingEdited", "_isBindingEstablished:", "_isBooleanBinding:", "_isBooleanTransformer", "_isButtonBordered", "_isCString", "_isCached", - "_isCanonEncoding", - "_isCellClipTipCreationEnabled", + "_isCachedSeparately", + "_isCaseInsensitiveEqualToCString:", + "_isCaseSensitivePredicate:", "_isClientRedirect", "_isClosable", - "_isCommitted", - "_isCompany", - "_isCompressed", "_isContinuousSpellCheckingEnabledForNewTextAreas", "_isCtrlAltForHelpDesired", - "_isCurrentCollectionFavorites", "_isCurrentlyGapStyleDropTarget", "_isDaylightSavingTimeForAbsoluteTime:", "_isDeactPending", "_isDeadkey", "_isDefaultFace", + "_isDefaultFixedPitch", + "_isDeleted", + "_isDescendantOfFrame:", + "_isDingbats", + "_isDisplayingWebArchive", + "_isDocModal", "_isDocWindow", "_isDocumentHTML", "_isDoingHide", @@ -2373,7 +3083,11 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_isDoingUnhide", "_isDraggable", "_isDrawingForDragImage", - "_isDrawingToHeartBeatWindow", + "_isDrawingMultiClippedContentAtIndex:", + "_isDrawingMultiClippedContentColumn:", + "_isDroppedConnectionException:", + "_isDying", + "_isEditable", "_isEditing", "_isEditingTextView:", "_isEmptyMovie", @@ -2382,77 +3096,104 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_isEventProcessingDisabled", "_isExpired", "_isExplicitlyNonEditable", + "_isFSObjectExchangingAllowed", "_isFSObjectExchangingAllowedOn:", "_isFSObjectExchangingDesired", "_isFakeFixedPitch", + "_isFault", "_isFauxFilePackageNode:", "_isFileClosed", - "_isFontUnavailable:", + "_isFixedPitch", + "_isForPrivateBrowsing", + "_isFromSDEF", "_isGapStyleDropTargetForRow:operation:mask:", + "_isGenericProfile", "_isGrabber", - "_isGroup:parentOfAllMembers:", "_isHidden", + "_isHiragino", "_isHiraginoFont", "_isImageCache", - "_isInConfigurationMode", "_isInCustomizationMode", "_isInUILayoutMode", + "_isIndexElementImpl", + "_isInheritedPropertyNamed:", + "_isInitialized", + "_isInserted", "_isInternalFontName:", "_isItemViewerMoveable:", - "_isJobActive:", "_isKVOA", + "_isKeyPathBound:", "_isKeyWindow", "_isKeyWindowIgnoringFocus", - "_isLastMultiValue:", - "_isLastNameFirst", - "_isLink:", - "_isLoadComplete", - "_isLoaded", + "_isLeafObject:", "_isLoading", - "_isMainFrame", - "_isMenuMnemonicString:", + "_isLoadingSDEFFiles", + "_isLocatedByURL:withCache:", + "_isLucidaGrande", + "_isMaintainingInverse", + "_isManagedController", + "_isManagedObjectOrEntityDescriptionContainerClassID:key:", "_isMiniaturizable", "_isModal", + "_isMoveDrag", "_isMoving", + "_isNSColorDrag:", "_isNSDocumentBased", "_isNodeFileTypeEnabled:", "_isNonactivatingPanel", + "_isNullExpression:", + "_isOnePieceTitleAndToolbar", + "_isOrdered", "_isPaged", "_isPaletteView", - "_isParentGroupOfRecord:", + "_isPendingDeletion", + "_isPendingInsertion", + "_isPendingUpdate", "_isPerformingProgrammaticFocus", "_isPoint:inDragZoneOfRow:", - "_isPrintFilterDeviceDependent:", + "_isPostOrRedirectAfterPost:redirectResponse:", "_isProfileBased", - "_isPublicRecord", "_isReadOnly", + "_isReferenceBinding:", + "_isReservedWordInParser:", "_isResizable", "_isReturnStructInRegisters", "_isRunningAppModal", "_isRunningDocModal", "_isRunningModal", + "_isSaveFilenameLengthLegal", "_isScriptingEnabled", "_isScrolling", "_isSelectableItemIdentifier:", "_isSelectionEvent:", + "_isSelectionMisspelled", "_isSheet", "_isShowingKeyboardFocus", "_isSidebarCollapsed", "_isStopping", + "_isStrictByParsingExcludedElements", + "_isStringDrawingTextStorage", + "_isSuitableForFastStringDrawingWithAlignment:lineBreakMode:tighteningFactorForTruncation:", + "_isSymbol", + "_isSynonym", "_isSystemFont", - "_isTableColumn:boundWithAnyKeyInArray:", - "_isTerminating", + "_isTabEnabled", + "_isTableColumn:boundWithKeyPath:", + "_isTextured", "_isThreadedAnimationLooping", + "_isTitleHidden", + "_isToolTipCreationAndDisplayEnabled", + "_isUnmarking", "_isUpdated", "_isUsedByCell", + "_isUsedForLocking", "_isUserRemovable", + "_isUsingManagedProxy", "_isUtility", "_isUtilityWindow", "_isValid", "_isVertical", "_isViewValidOriginalNextKeyView:", - "_isVisibleUsingCache:", - "_isWhite", "_item", "_itemAdded:", "_itemAtIndex:", @@ -2461,9 +3202,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_itemChanged:", "_itemChangedLabelOrPaletteLabel", "_itemChangedToolTip", + "_itemEnabledStateChanged", "_itemForRestoringDocState", "_itemForSavingDocState", - "_itemForURLString:", "_itemIdentifierForModule:", "_itemIdentifiersForColorPickers:", "_itemInStatusBar:withLength:withPriority:", @@ -2472,28 +3213,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_itemType", "_itemViewer", "_itemViewerForDraggingInfo:draggingSource:", - "_itemViewsForChildrenOfContainerNodes:", + "_itemVisibilityPriority", "_items", "_itemsFromItemViewers:", - "_itemsFromRows:", - "_ivars", + "_itemsFromRowsWithIndexes:", "_jobDispositionInPrintSession:printSettings:", "_jobSavePathInPrintSession:printSettings:", - "_justOpenedForTargetedLink", "_justOrderOut", + "_keepCacheWindow", "_key", "_key:inClass:indicatesMultipleValues:", "_keyBindingManager", - "_keyBindingMonitor", "_keyCodeFromRecord:", + "_keyEquivalentForNode:", "_keyEquivalentGlyphWidth", - "_keyEquivalentModifierMask:matchesModifierFlags:", "_keyEquivalentModifierMaskMatchesModifierFlags:", "_keyEquivalentSizeWithFont:", - "_keyForAppleEventCode:", + "_keyEquivalentsAreActive", "_keyListForKeyNode:", + "_keyPathExpressionForString:", "_keyRowOrSelectedRowOfMatrix:inColumn:", - "_keyToBinderTable", + "_keySegment", "_keyValueBindingAccessPoints", "_keyViewFollowingAccessoryView", "_keyViewFollowingModalButtons", @@ -2502,6 +3242,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_keyViewPrecedingAccesoryView", "_keyViewPrecedingModalButtons", "_keyViewPrecedingPickerViews", + "_keyViewRedirectionDisabled", "_keyWindow", "_keyWindowForHeartBeat", "_keyboardDelayForPartialSearchString:", @@ -2509,24 +3250,32 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_keyboardLoopNeedsUpdating", "_keyboardModifyRow:column:withEvent:", "_keyboardNavigateDoSelectOfFocusItem:", + "_keyboardNavigateToTabAtIndex:", "_keyboardNavigateToTabByDelta:", "_keyboardUIActionForEvent:", "_keychainItem", - "_keysBoundToController:", + "_keysForPropertyDescriptionKind:", + "_keysForValuesAffectingValueForKey:", + "_kitBundle", "_kitNewObjectSetVersion:", "_kitOldObjectSetVersion:", "_kludgeScrollBarForColumn:", + "_knownEntityKeyForObject:", + "_knownEntityKeyForObjectID:", + "_knownPrimaryKeyForObject:", + "_knownPrimaryKeyForObjectID:", "_knowsPagesFirst:last:", - "_kvcMapForClass:", - "_labelAlignment", "_labelCell", "_labelCellWillDismissNotification:", "_labelCellWillPopUpNotification:", + "_labelColor", + "_labelColorIndex", + "_labelElementImpl", "_labelForColorPicker:", "_labelOnlyShowsAsPopupMenu", + "_labelPatternColorForLabelIndex:", "_labelRectForTabRect:forItem:", "_labelType", - "_languageModel", "_largestIconFromDictionary:", "_lastCheckedRequest", "_lastChild", @@ -2535,48 +3284,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_lastDraggedOrUpEventFollowing:", "_lastDraggedOrUpEventFollowing:canceled:", "_lastEventRecordTime", - "_lastImageTag", "_lastItemIsNonSeparator", "_lastKeyView", "_lastLeftHit", "_lastModifiedDate", "_lastOnScreenContext", "_lastRightHit", + "_lastSnapshot", "_lastVisitedDate", - "_launchPrintFilter:file:deviceDependent:", + "_latin1MappingTable:", + "_latin1MappingTableWithPlatformFont:hasKernPair:", "_launchService:andWait:", "_launchSpellChecker:", - "_layoutAsTopView:", - "_layoutChildren", "_layoutDirtyItemViewersAndTileToolbar", "_layoutEnabled", "_layoutForData", + "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:", "_layoutIsSameAsCachedLayoutWithFrame:", - "_layoutItemViewForWithItemHeight:", - "_layoutLineStartingWithGlyphAtIndex:withProposedRect:", - "_layoutRowStartingAtIndex:withFirstItemPosition:allItemViewers:gridWidth:", + "_layoutItemViewForWithItemHeight:allSidebarItemViews:", + "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:", + "_layoutOrderInsertionIndexForPoint:previousIndex:", + "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:", "_layoutTabs", + "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:", "_layoutViewsVerticallyAndResize", + "_lazyLoadQueryDictionariesFromSavedQuery", "_leading", - "_learn:", "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:", "_learnSpellingFromMenu:", "_learnWord:inDictionary:", "_leftGroupRect", - "_leftmostInsertionIndexForNode:inNodes:", + "_leftmostInsertionIndexForNode:inOrderedNodes:", + "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:", + "_legalNameCheck:", + "_legendElementImpl", "_lengthForSize:", - "_lightBlueColor", + "_liElementImpl", + "_libxml2TreeRepresentation", + "_libxml2TreeRepresentationWithNamespaces:", "_lightGrayRGBColor", "_lightWeightRecursiveDisplayInRect:", "_lightYellowColor", + "_lightweightHandleChildChanged:parents:property:", "_lineBorderColor", "_lineBreakMode", - "_lineFragmentDescription:", + "_lineColor", + "_lineFragmentRectForProposedRectArgs", "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:", - "_lineGlyphVector", - "_lineLeft", - "_lineRight", "_linkDragCursor", + "_linkElementImpl", + "_listDefinitions", "_listenForProxySettingChanges", "_liveResizeCacheableBounds", "_liveResizeCachedBounds", @@ -2584,91 +3341,108 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_liveResizeCachedImageIsValid", "_liveResizeHighlightSelectionInClipRect:", "_liveResizeImageCacheingEnabled", + "_liveResizeLOptimizationEnabled", + "_load", "_loadAllPlaceholderItems", - "_loadBackForwardListFromOtherView:", + "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:", "_loadBundle", "_loadColors", - "_loadConfigPanel:", "_loadData", + "_loadData:MIMEType:textEncodingName:baseURL:unreachableURL:", "_loadDataSource:withLoadType:formState:", "_loadDeadKeyData", "_loadDefaultSetImageRep", "_loadFontFiles", + "_loadFromDOMRange", "_loadFromUDIfNecessary", - "_loadHTMLFrameworkIfNeeded", + "_loadHTMLString:baseURL:unreachableURL:", "_loadHistoryGuts:URL:error:", "_loadIcon", "_loadIconDictionaries", + "_loadIconlessMenuContentsIfNecessary", "_loadImageFromTIFF:imageNumber:", "_loadImageInfoFromTIFF:", "_loadImageWithName:", + "_loadImagesForActionType", "_loadInitialItemIdentifiers:requireImmediateLoad:", - "_loadItem:", "_loadItem:withLoadType:", "_loadItemViewsForChildrenOfContainerNodes:existingViewsToKeepTable:", "_loadKeyboardBindings", + "_loadMenuItemIconsIfNecessary", "_loadNibDataFromPath:", "_loadNibFile:nameTable:withZone:ownerBundle:", - "_loadPanelAccessoryNib", + "_loadOrSetMetadata", "_loadPickerBundlesIn:expectLibraryLayout:", - "_loadPickerUI", "_loadRecentSearchList", "_loadRequest:inFrameNamed:", + "_loadRequest:subresources:subframeArchives:", "_loadRequest:triggeringAction:loadType:formState:", - "_loadRootNode", "_loadScriptSuites", "_loadServicesMenuData", - "_loadSuitesForLoadedBundle:", - "_loadSuitesForLoadedBundles", + "_loadSuiteDescription:", + "_loadSuitesForAlreadyLoadedBundles", + "_loadSuitesForJustLoadedBundle:", + "_loadSuitesFromSDEFData:bundle:", "_loadSystemScreenColorList", "_loadType", "_loadUIIfNecessary", "_loadURL:intoChild:", "_loadURL:referrer:loadType:target:triggeringEvent:form:formValues:", + "_loadUsingHTMLDisplay", + "_loadUsingLibXML2", + "_loadUsingWebKit", "_loadViewIfNecessary", - "_loadWebKitFrameworkIfNeeded", + "_loadWebKit", + "_loadXSLT", "_loadedCellAtRow:column:inMatrix:", + "_loadingDragOperationForDraggingInfo:", "_loadingFromPageCache", - "_loadingStartedTime", + "_localObjectForGlobalID:", + "_localizationPolicy", "_localizedColorListCopyrightString", "_localizedColorListName", + "_localizedErrorDescriptionForCode:", "_localizedKeyFromBundleStringFileForKey:", "_localizedNameForColorWithName:", - "_localizedPlaceholderForMarker:attributes:", - "_locationForPopUpMenuWithFrame:", + "_localizedPropertyNameForProperty:entity:", + "_localizedStringForKey:value:", + "_locationFromUnitsValue:", "_locationOfColumn:", + "_locationOfOriginPoint:", "_locationOfPoint:", "_locationOfRow:", "_locationTemporary", "_locationsForApplications", "_lockCachedImage", "_lockFirstResponder", - "_lockFocusNoRecursion", "_lockFocusOnRep:", "_lockForReading", "_lockForWriting", - "_lockName", "_lockQuickDrawPort", "_lockUnlockCachedImage:", "_lockViewHierarchyForDrawing", "_lockViewHierarchyForDrawingWithExceptionHandler:", "_lockViewHierarchyForModification", - "_logAlertWithError:fallbackMessage:relatedToBinding:", - "_logBinderUpdateDebugInformation", - "_logUnavailableFont:", - "_logicalTestFromDescriptor:inCommandConstructionContext:", + "_lockfeContext", + "_logColumnWidths:", + "_logError:fallbackMessage:relatedToBinding:", + "_logObservingInfo", + "_logicalTestFromDescriptor:", "_longLongValue", - "_longestStringSize", "_looksLikeDomainSegment", "_loopHit:row:col:", - "_magnify:", + "_machineLibraryPath", "_mainDocumentError", "_mainFrameOverrideEncoding", "_mainReceivedBytesSoFar:fromDataSource:complete:", "_mainReceivedError:fromDataSource:complete:", + "_mainStatusChanged", "_mainStatusChanged:", "_mainWindow", "_maintainCell", + "_maintainInverseNamed:isToMany:ofRelationshipNamed:forChange:onSet:", + "_maintainInverseNamed:isToMany:oldDestination:newDestination:", + "_makeBranchTableForKeys:count:", "_makeCellForMenuItemAtIndex:", "_makeCursors", "_makeDocumentView", @@ -2677,39 +3451,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_makeEditable::::", "_makeFirstResponderForKeyboardHotKeyEvent", "_makeHODWindowsPerform:", + "_makeHistory", "_makeKeyNode:inKeyNode:", "_makeLeftCellKey", - "_makeMenuItemForNavNode:", - "_makeMiniView", + "_makeLinkFromMenu:", "_makeModalWindowsPerform:", - "_makeMutableStringWithValues", - "_makeNewCollection:", "_makeNewListFrom:", - "_makeNewToolbarAssociation:", "_makeNextCellKey", "_makeNextCellOrViewKey", "_makePreviousCellKey", "_makePreviousCellOrViewKey", - "_makePrimary:", "_makeRememberedOrNewEditingSubviewBecomeFirstResponder", "_makeRepresentation", "_makeRequestCanonicalByMakingRequestURLCanonical:", "_makeRightCellKey", "_makeRootNode", "_makeSelfMutable", - "_makeSpecialFontName:size:matrix:bit:", "_makeSureFirstResponderIsNotInInvisibleItemViewer", "_makeSureItemViewersInArray:areSubviews:from:to:", "_makeTable:inNode:", "_makeUpCellKey", "_makingFirstResponderForMouseDown", "_managedAttributeKeys", + "_managedObjectContext", + "_managedObjectsChangedInContext:", + "_managedProxy", "_managesWindowRef", + "_mapElementImpl", + "_mapNode:toEntityInModel:", "_mappedFile", + "_mappingForConfigurationNamed:", "_marginHeight", "_marginWidth", - "_markAutoCreated", + "_markAutoCreated:", + "_markCursorRectsForRemovedView:", + "_markForPrivateBrowsing", "_markHasLoadedData:", + "_markLiveResizeColumnLayoutInfo", + "_markMovementTrackingInfo", "_markRememberedEditingFirstResponderIfIsASubview", "_markSelectionIsChanging", "_markSelfAsDirtyForBackgroundLayout:", @@ -2717,8 +3496,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_markWidth", "_markedWidthDiffersFromCurrentWidth", "_markerAreaRect", + "_markerForItemNumber:isNumbered:", "_markerHitTest:", + "_markerLevelForRange:", + "_markerTypeButton", "_matchesCharacter:", + "_matrix", "_matrixWillResignFirstResponder:", "_maxAge", "_maxRuleAreaRect", @@ -2729,9 +3512,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_maxXTitlebarBorderThickness", "_maxXTitlebarButtonsWidth", "_maxXTitlebarDecorationMinWidth", - "_maxXTitlebarDragWidth", - "_maxXTitlebarLinesRectWithTitleCellRect:", - "_maxXTitlebarResizeRect", "_maxXTitlebarWidgetInset", "_maxXTitlebarWidgetInset:", "_maxXWindowBorderWidth", @@ -2739,13 +3519,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_maxXmaxYResizeRect", "_maxXminYResizeRect", "_maxYBorderRect", - "_maxYResizeRect", "_maxYTitlebarDragHeight", + "_maxYWindowBorderHeight", "_maxYmaxXResizeRect", "_maxYminXResizeRect", - "_mayStartDragWithMouseDragged:", + "_maximumItemViewerHeight", + "_mayStartDragAtEventLocation:", "_maybeScrollMenu", "_maybeSubstitutePopUpButton", + "_mdAttributes", + "_mdAttributesInLastRunSavePanel", + "_mdAttributesToWriteToFile:ofType:saveOperation:", + "_mediaListImpl", + "_mediaListWithImpl:", + "_mediaRuleImpl", "_memoryCacheAppendNodeToLRUList:", "_memoryCacheClear", "_memoryCacheGet:", @@ -2754,16 +3541,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_memoryCacheRemoveNodeFromLRUList:", "_memoryCacheTouchNode:", "_memoryCacheTruncate:", - "_menu", "_menuBarShouldSpanScreen", "_menuCellInitWithCoder:", "_menuChanged", "_menuDidSendAction:", "_menuForElement:", - "_menuFormRepresentation", "_menuFormRepresentationChanged", "_menuImpl", "_menuItemDictionaries", + "_menuListElementImpl", "_menuName", "_menuPanelInitWithCoder:", "_menuScrollAmount", @@ -2773,17 +3559,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_mergeAutoCompleteHints:", "_mergeGlyphHoles", "_mergeLayoutHoles", - "_messageColor", - "_messageString", - "_messageStringForType:", + "_mergeObjectWithChanges:array:", + "_mergeValueForKey:object:string:", + "_metaElementImpl", "_methodNameForCommand:", + "_metrics", "_middleViewFrameChanged:", "_mightHaveSpellingAttributes", + "_migrateAllObjectsInStore:toStore:", + "_migrateMappedStore:toNewSameTypeStoreAtURL:", + "_migrateMetadataFromStore:toStore:", + "_migrateSQLStore:toSQLStoreAtURL:", "_minContentRectSize", + "_minContentSizeForDrawers", "_minExpandedFrameSize", "_minLinesWidthWithSpace", + "_minNonExpandedFrameSize", "_minParentWindowContentSize", - "_minSize", "_minSizeForDrawers", "_minXBorderRect", "_minXLocOfOutlineColumn", @@ -2793,9 +3585,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_minXTitlebarButtonsWidth", "_minXTitlebarDecorationMinWidth", "_minXTitlebarDecorationMinWidth:", - "_minXTitlebarDragWidth", - "_minXTitlebarLinesRectWithTitleCellRect:", - "_minXTitlebarResizeRect", "_minXTitlebarWidgetInset", "_minXTitlebarWidgetInset:", "_minXWindowBorderWidth", @@ -2805,30 +3594,40 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_minYBorderRect", "_minYResizeRect", "_minYTitlebarButtonsOffset", - "_minYTitlebarTitleOffset", "_minYWindowBorderHeight", "_minYWindowBorderHeight:", "_minYmaxXResizeRect", "_minYminXResizeRect", "_miniaturizedOrCanBecomeMain", "_minimizeAll", + "_minimizeOnDoubleClickChanged", "_minimizeSucceeded:", "_minimizeToDock", "_minimumSizeNeedForTabItemLabel:", + "_modElementImpl", "_modalSession:sendEvent:", - "_modifySelectionIndexes:atIndex:addOrRemove:", + "_modelAndProxyKeys", + "_modelAndProxyKeysObserved", + "_modifierString", + "_modifySelectedObjects:useExistingIndexesAsStartingPoint:avoidsEmptySelection:addOrRemove:sendObserverNotifications:forceUpdate:", + "_modifySelectionIndexes:atIndex:addOrRemove:sendObserverNotifications:", "_monitorKeyBinding:flags:", + "_monitors", "_mostCompatibleCharset:", + "_mouse:force:", "_mouseActivationInProgress", "_mouseDidMoveOverElement:modifierFlags:", "_mouseDownListmode:", "_mouseDownNonListmode:", + "_mouseDownShouldMakeFirstResponder", "_mouseDownSimpleTrackingMode:", + "_mouseDragged:", + "_mouseEventImpl", "_mouseHit:row:col:", "_mouseInGroup:", "_mouseLoop::::::", - "_moveContentsAt:toIndex:", - "_moveCursor", + "_mouseUp:", + "_moveAndResizeEditedCellWithOldFrame:", "_moveDown:", "_moveDownAndModifySelection:", "_moveDownWithEvent:", @@ -2839,31 +3638,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_moveLeftWithEvent:", "_moveObjectInContainer:withKey:atIndex:toContainer:withKey:atIndex:replace:", "_moveObjectsInContainer:toContainer:withKey:atIndex:replace:", + "_moveParent:andExpandPanel:toFrame:", "_moveParent:andOpenSheet:", "_moveRightWithEvent:", + "_moveSelectionBy:", "_moveSheetByItself:delta:", + "_moveToNextBlock", + "_moveToPreviousBlock", "_moveUp:", "_moveUpAndModifySelection:", "_moveUpWithEvent:", "_movieIdle", + "_multiClipDrawingHelper", + "_multipleMutableArrayValueForKeyPath:atIndex:", + "_multipleMutableArrayValueForKeyPath:atIndexPath:", "_multipleValueForKey:atIndex:", "_multipleValueForKeyPath:atIndex:", + "_multipleValueForKeyPath:atIndexPath:", "_multipleValuesObjectAtIndex:", + "_multipleValuesObjectAtIndexPath:", "_multipleValuesObjectCount", "_multipleValuesObjectsAtIndexes:", "_mustRevalidate", "_mutableArrayValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", "_mutableArrayValueForKeyPath:ofObjectAtIndex:", "_mutableParagraphStyle", + "_mutableSetValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", + "_mutableSetValueForKeyPath:ofObjectAtIndex:", "_mutableStringClass", "_mutateTabStops", - "_name", - "_nameAtIndex:", + "_mutationEventImpl", "_nameFieldContentsAsPosixName", "_nameForCollection:", + "_nameIsEqualToNameOfNode:", "_nameOfDictionaryForDocumentTag:", + "_nameWithLooseRequiredExtensionCheck:", "_nameWithRequiredExtensionCheck:", - "_navController", + "_nameWithStrictRequiredExtensionCheck:", + "_namedNodeMapImpl", + "_namedNodeMapWithImpl:", + "_namespaceForURI:", + "_namespaces", + "_naughtDelegate", "_navView", "_nearestCrayonUnderViewPoint:", "_nearestCrayonUnderViewPoint:inRow:", @@ -2873,20 +3689,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_needsDisplayfromRow:", "_needsHighlightedTextHint", "_needsLiveResizeCacheInSyncWithSiblingView", + "_needsLiveUpdates", "_needsModalCompatibilityMode", "_needsModeConfiguration", "_needsOutline", + "_needsPopulate", + "_needsRecalc", "_needsRedisplayWhenBeginningToolbarEditing", "_needsRedrawBeforeFirstLiveResizeCache", + "_needsRedrawForMovement", + "_needsRedrawOnMouseInsideChange", + "_needsRevealoverWithFrame:trackingRect:inView:", "_needsToRemoveFieldEditor", "_needsToResetDragMargins", "_needsToUseHeartBeatWindow", "_needsViewerLayout", - "_newButtonOfClass:withNormalIconNamed:alternateIconNamed:action:", + "_nestListAtIndex:", + "_newAdapterForModel:", "_newCustomizeToolbarItem", - "_newDictionary:", - "_newDictionaryForProperties", + "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:", "_newFirstResponderAfterResigning", + "_newIconlessMenuItemForNavNode:", "_newImageName:", "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:", "_newItemFromInitPListWithItemIdentifier:", @@ -2894,60 +3717,96 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_newLazyIconRefRepresentation:ofSize:", "_newLazyRepresentation:::", "_newLegalSizeFromSize:force:roundDirection:", + "_newLineForElement:", + "_newLineForLibXML2ElementNode:", "_newNode:", + "_newNodeAtIndexPath:currentDepth:", + "_newObjectIDForCurrentRowWithEntity:", + "_newObjectIDForToOne:", "_newObjectWithSetProperties", + "_newParagraphForElement:tag:allowEmpty:suppressTrailingSpace:", + "_newParagraphForLibXML2ElementNode:tag:allowEmpty:suppressTrailingSpace:", + "_newPatternStringForGlob:", "_newPlaceholderItemWithItemIdentifier:", "_newPrintItem", + "_newRegisteredSuiteDescriptionForName:", "_newReplicatePath:ref:atPath:ref:operation:fileMap:handler:", "_newRepresentation:", + "_newRowsForFetchRequest:", "_newScroll:", "_newShowColorsItem", "_newShowFontsItem", "_newStandardItemWithItemIdentifier:", - "_newSubstringFromRange:zone:", "_newSubstringWithRange:zone:", - "_newToolbarBornNotification:", - "_newUnknownItemWithItemIdentifier:", + "_newUncommittedChangesForObject:", + "_newUncommittedChangesForObject:dictionary:", + "_newValueForColumnOfSQLType:atIndex:inStatement:", + "_newWildSubStringForGlob:wildStart:wildEnd:", "_newWithName:fromPath:forDeviceType:", + "_new_implicitlyObservedKeys", + "_nextAttributeForString:type:location:range:", "_nextDisplayMode", + "_nextFrame:", "_nextFrameWithWrap:", "_nextInputManagerInScript:", "_nextSibling", - "_nextUntitledDocumentNumber", "_nibName", - "_noUiClearField:", "_noVerticalAutosizing", + "_nodeFilterImpl", + "_nodeFilterWithImpl:", + "_nodeFromLibXML2Node:", + "_nodeFromObject:objectIDMap:", + "_nodeImpl", + "_nodeIteratorImpl", + "_nodeIteratorWithImpl:filter:", + "_nodeListImpl", + "_nodeListWithImpl:", + "_nodeWithImpl:", "_nodesToDisplayForNodeInfo:", - "_nominalChars", - "_nominalGlyphs", + "_nominalCharacterCoverage", "_nominalSizeNeedForTabItemLabel:", + "_nonAutomaticObservingKeys", + "_nonNilArrayValueWithSelector:", + "_nonNilMutableArrayValueWithSelector:", + "_nonNilSetValueWithSelector:", + "_nonPredicateValidateValue:forKey:inObject:error:", + "_noop:", "_normalListmodeDown::::", - "_normalSpeakingRate", + "_notationImpl", + "_noteAutosavedContentsOfDocument:", "_noteDefaultMenuAttributeChanged", "_noteFontCollectionsChanged", + "_noteItemUserVisibilityPriorityChanged:", "_noteLengthAndSelectedRange:", + "_noteNote1:", + "_noteNote2:", + "_noteNote3:", + "_noteNote4:", + "_notePendingRecentDocumentURLs", "_noteToolbarDisplayModeChanged", - "_noteToolbarDisplayModeChangedAndPost:", + "_noteToolbarDisplayModeChangedAndPostSyncSEL", "_noteToolbarLayoutChanged", "_noteToolbarModeChangedAndUpdateItemViewers:", + "_noteToolbarShowsBaselinePropertyChanged", "_noteToolbarSizeModeChanged", - "_noteToolbarSizeModeChangedAndPost:", + "_noteToolbarSizeModeChangedAndPostSyncSEL", "_noticeEditablePeerBinder:", "_noticeTextColorPeerBinder:", - "_notificationPostingEnabled", - "_notifyBindersWithEnumerator:keysToRefresh:", - "_notifyCookiesChanged", + "_notifyCookiesSynced", "_notifyDelegate_DidRemoveItem:", "_notifyDelegate_DidRemoveItems:", "_notifyDelegate_WillAddItem:", "_notifyEdited:range:changeInLength:invalidatedRange:", - "_notifyEditorStateChanged", + "_notifyEditor:stateChanged:", "_notifyFamily_DidRemoveItemAtIndex:", "_notifyFamily_DidSetAllCurrentItems:", "_notifyFamily_InsertedNewItem:atIndex:", "_notifyFamily_MovedFromIndex:toIndex:", - "_notifyIM:withObject:", - "_notifyTypographyPanel", + "_notifyLocalCookiesChanged:", + "_notifyObserversForKeyPath:change:", + "_notifyObserversOfAddedStores:", + "_notifyObserversOfRemovedStores:", + "_notifyOfAnyContentChange", "_notifyView_DidRemoveItemAtIndex:", "_notifyView_DidSetAllCurrentItems:", "_notifyView_InsertedNewItem:atIndex:", @@ -2957,32 +3816,46 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_numberEnumerator", "_numberOfGlyphs", "_numberOfItems", - "_numberOfNominalMappings", - "_numberOfTitlebarLines", - "_numberStringForValueObject:withBuffer:andNegativeFlag:", "_numericIndicatorCell", "_nxeventTime", + "_oListElementImpl", "_obeysHiddenBit", + "_objcClassName", "_objectCacheSize", "_objectClassName", + "_objectDidTriggerAction:bindingAdaptor:", + "_objectElementImpl", "_objectForAttributeKey:", "_objectForProperty:usingDataSize:withRequestedObjectClass:", - "_objectSpecifierFromDescriptor:inCommandConstructionContext:", + "_objectID", + "_objectIDClass", + "_objectIDFactory", + "_objectIsMatch:", + "_objectSpecifierFromDescriptor:", + "_objectSpecifierTypeDescription", + "_objectTypeDescriptionForClassAppleEventCode:isValid:", "_objectValue:forString:", + "_objectValue:forString:errorDescription:", "_objectWithName:", - "_objectsAtIndexes:", - "_observances", - "_observesContent", + "_objectsChangedInStore:", + "_observeKeyPathForBindingInfo:registerOrUnregister:", + "_observeKeyPathForRelatedBinder:registerOrUnregister:", + "_observePathOfEntry:", + "_observeSpecifierOfEntry:", + "_observeValueForKeyPath:ofObject:context:", + "_observesModelObjects", "_obtainKeyFocus", + "_obtainOpenChannel", "_offset", "_offsetFromStartRect", + "_okForOpenMode", + "_okForSaveMode", "_okToStartTextEndEditing", + "_oldBoundsDuringLiveResize", "_oldFirstResponderBeforeBecoming", "_oldFontSetNames", "_oldFontSetWithName:", "_oldPlaceWindow:", - "_oldStoredValueForKey:", - "_oldTakeStoredValue:forKey:", "_oldValueForKey:", "_oldValueForKeyPath:", "_old_encodeWithCoder_NSBrowser:", @@ -3000,58 +3873,76 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_old_initWithCoder_NSTableColumn:", "_old_initWithCoder_NSTableHeaderView:", "_old_initWithCoder_NSTableView:", + "_old_readColorsFromGlobalPreferences", + "_old_writeColorsToGlobalPreferences", + "_opString", + "_opacity", "_opacityAtPoint:inBitmapImageRep:", "_opaqueRect", + "_opaqueState", "_open:", "_open:fromImage:withName:", - "_openActionButton:", + "_openBlocksForParagraphStyle:atIndex:inString:", + "_openChannel", "_openCollections", - "_openDictionaries:", "_openDocumentFileAt:display:", - "_openDrawer", - "_openDrawerOnEdge:", "_openDrawers", "_openExtrasPopup:", "_openFile:", "_openFile:withApplication:asService:andWait:andDeactivate:", - "_openFileWithoutUI:", - "_openIndexReadOnly", - "_openIndexReadWrite", "_openLinkFromMenu:", + "_openListsForParagraphStyle:atIndex:inString:", "_openNewWindowWithRequest:", "_openOldCollections", "_openOldFavorites", "_openRecentDocument:", "_openRegularCollections", + "_openStrikeMenu:", + "_openUnderlineMenu:", "_openUntitled", "_openableFileExtensions", "_opened", "_operationInfo", - "_optimizeHighlightForCharRange:charRange:fullSelectionCharRange:oldSelectionFullCharRange:", + "_operatorForType:", + "_optGroupElementImpl", "_optimizedRectFill:gray:", + "_optionElementImpl", + "_optionsCollectionImpl", + "_optionsCollectionWithImpl:", "_optionsForBinding:specifyOnlyIfDifferentFromDefault:", "_orderFrontHelpWindow", + "_orderFrontModalColorPanel", "_orderFrontModalWindow:relativeToWindow:", "_orderFrontRelativeToWindow:", + "_orderOutAllToolTipsImmediately:", "_orderOutAndCalcKeyWithCounter:", "_orderOutHelpWindow", "_orderOutHelpWindowAfterEventMask:", "_orderOutRelativeToWindow:", + "_orderedDrawerAndWindowKeyLoopGroupingViews", + "_orderedSidebarItemViews", "_orderedWindowsWithPanels:", "_orientationInPageFormat:", "_originPointInRuler", - "_originalCard", + "_originalData", + "_originalFontA", + "_originalFontB", "_originalNextKeyView", "_originalRequest", + "_originalRowForUpdate:", + "_originalSnapshot", "_outlineAction:", "_outlineDelegate", "_outlineDoubleAction:", "_outlineIsOn", "_outlineView", + "_overflowHeaderCellPrototype", "_overrideEncoding", "_overwriteExistingFileCheck:", "_ownedByPopUp", + "_ownerElement", "_owningPopUp", + "_ownsDestinationObjectsForRelationshipKey:", "_ownsWindowGrowBox", "_packedGlyphs:range:length:", "_pageCacheSize", @@ -3062,10 +3953,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_pageFormatAttributeKeys", "_pageFormatForGetting", "_pageFormatForSetting", + "_pageHeaderAndFooterTextAttributes", "_pageHorizontally:", - "_pageLayout:didEndAndReturn:contextInfo:", - "_pageLeft", - "_pageRight", + "_pageLayout:wasPresentedWithResult:inContext:", + "_pageRuleImpl", "_pageUpWithEvent:", "_pageVertically:", "_panelInitWithCoder:", @@ -3073,7 +3964,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_paperNameForSize:", "_paperNameInPrintSession:pageFormat:", "_paperSizeInPageFormat:", - "_paragraphGlyphVector", + "_paragraphClassforParagraphStyle:range:isEmpty:headerString:alignmentString:", + "_paragraphElementImpl", + "_paramElementImpl", "_parametersForReading", "_parametersForWriting", "_parentWindow", @@ -3083,6 +3976,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_parseCharacterAttributes", "_parseCharacterAttributes1", "_parseCharacterAttributes2", + "_parseCharacterAttributesFromElement:namespaceURI:qualifiedName:attributes:", "_parseContentsDictionary", "_parseDocumentAttributes", "_parseDocumentAttributes1", @@ -3091,98 +3985,120 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_parseFonts1", "_parseFonts2", "_parseGlobals", - "_parseHeaderFromData:", + "_parseLibXML2Node:", "_parseMenuString:menuName:itemName:", + "_parseNode:", "_parsePantoneLikeList:fileName:", "_parseParagraphAttributes", "_parseParagraphAttributes1", "_parseParagraphAttributes2", + "_parseParagraphAttributesFromElement:namespaceURI:qualifiedName:attributes:", "_parsePredefinedAttributes", "_parsePredefinedAttributes1", "_parsePredefinedAttributes2", "_parseReleaseTwoList:", + "_parseSummaryInfo:", "_parseText", "_parseText1", "_parseText1Fast", "_parseText1Full", "_parseText2", - "_pasteboardDictionaryForPeople:", - "_pasteboardDictionaryForRecords:", - "_pasteboardTypes", + "_parserableCollectionDescription:", + "_parserableDateDescription:", + "_parserableStringDescription:", + "_passwordData", + "_pasteWithPasteboard:allowPlainText:", "_pasteboardWithName:", + "_pathData", "_pathForFSRef:", - "_pathForImageTaggedByEmails:", - "_pathForResource:ofType:inDirectory:forRegion:", - "_pathToFileNamed:in:", - "_pathWithUniqueFilenameForPath:", - "_pathsForResourcesOfType:inDirectory:forRegion:", + "_pathToFileNamed:inFolder:", "_patternForBinding:", "_pauseUIHeartBeatingInView:", "_pendingActCount", - "_peopleCount", - "_peoplePickerSearch:", + "_perThreadHandlingStack:", + "_performActionWithCommitEditing", + "_performActionWithCommitEditing:didCommit:contextInfo:", "_performActivationClickWithShiftDown:", + "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:", + "_performBatchWindowOrdering:", "_performCancel", + "_performChangesWithAdapterOps:", + "_performConnectionEstablishedRefresh", "_performContinueWithoutCredential", "_performDragFromMouseDown:", + "_performKeyEquivalentOnAllCells:", "_performKeyEquivalentWithDelegate:", + "_performLoad", "_performMenuFormRepresentationClick", - "_performRedoCommand:withName:", + "_performMutatorOperation:object:index:", + "_performOriginLoad", "_performRemoveFileAtPath:", - "_performSocketRead", + "_performResponderOperation:with:", "_performTimeOut", "_performToggleToolbarShown:", - "_performUndoCommand:withName:", "_performUseCredential", + "_periodicEvent:", + "_persistentStoreCoordinator", + "_persistentStoreForIdentifier:", "_persistsWidthCacheToUserDefaults", - "_person", - "_personFromRecent:", - "_personIndexer", - "_personStatusChanged:", "_physicalSizeCompare:", + "_pickUpMissingStuffFromNode:forEntity:", + "_pidString", "_pinDocRect", "_pinViews:resizeFlagsToLeaveAlone:", + "_pixelBufferAuxiliary", "_pixelFormatAuxiliary", "_pixelRectInPoints:", - "_placeAccessoryView", + "_pk", "_placeHelpWindowNear:", - "_placement", + "_placePopupWindow:", + "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:", + "_placeholderAttributedString", + "_placeholderString", "_plainFontNameForFont:", - "_platformExitInformation", + "_platformFont", + "_plugInPath", + "_plugIns", "_plugin", + "_pluginCancelledConnectionError", "_pluginClassWithObject:", "_pluginController", "_pluginProtocol", - "_pmPrintSession", - "_pointForTopOfBeginningOfCharRange:", "_pointFromColor:", "_pointInPicker:", "_pointRectInPixels:", "_policyDelegateForwarder", + "_popCompoundStack", + "_popIfTopHandling:", "_popPerformingProgrammaticFocus", "_popState", + "_popSubframeArchiveWithName:", "_popUpButton", "_popUpButtonCellInstances", "_popUpContextMenu:withEvent:forView:", "_popUpContextMenu:withEvent:forView:withFont:", "_popUpItemAction:", - "_popUpMenuCurrentlyInvokingAction", - "_popUpMenuFromView:", "_popUpMenuWithEvent:forView:", "_poppedTopHandling", "_populate:", + "_populateEntityDescription:fromNode:", "_populateMiniMode", + "_populateOpenRecentMenu:", "_populatePopup:withTableView:", "_populateReplyAppleEventWithResult:", - "_popupImage", + "_populateRowForOp:withObject:", + "_portData", + "_portInvalidated:", "_position", "_positionAllDrawers", + "_positionAndResizeSearchParts", + "_positionForPoint:", "_positionLabels", "_positionSheetAndDisplay:", "_positionSheetConstrained:andDisplay:", "_positionSheetRect:onRect:andDisplay:", "_positionWindow", - "_positionalSpecifierFromDescriptor:inCommandConstructionContext:", + "_positionalSpecifierFromDescriptor:", "_posixPathComponentsWithPath:", "_postAtStart:", "_postBoundsChangeNotification", @@ -3192,20 +4108,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_postColumnConfigurationDidChangeNotification", "_postColumnDidMoveNotificationFromColumn:toColumn:", "_postColumnDidResizeNotificationWithOldWidth:", - "_postDidCreateToolbarNotifications", "_postDidFailCallback", "_postDidFinishLoadingCallback", + "_postDidFinishNotification", "_postDidReceiveDataCallback", "_postDidReceiveResponseCallback", "_postDidScrollNotification", - "_postEventHandling", "_postEventNotification:", "_postEventNotification:fromCell:", - "_postFlagsChangedEvent:", "_postFocusChangedNotification", "_postFrameChangeNotification", "_postFromSubthread:", - "_postInit", "_postInitWithCoder:signature:valid:wireSignature:target:selector:argCount:", "_postInitialization", "_postInvalidCursorRects", @@ -3213,64 +4126,95 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_postItemDidExpandNotification:", "_postItemWillCollapseNotification:", "_postItemWillExpandNotification:", - "_postNotification:parent:", - "_postNotification:parent:child:", - "_postNotification:parent:child:fbeProperty:", + "_postNotificationForEvent:notificationName:parent:", + "_postNotificationForEvent:notificationName:parent:child:", + "_postNotificationForEvent:notificationName:parent:child:fbeProperty:", "_postPreferencesChangesNotification", + "_postQueryFinishedNotification", + "_postQueryStartedNotification", "_postSelectionDidChangeNotification", "_postSelectionIsChangingAndMark:", - "_postURLNotify:target:len:buf:file:notifyData:allowHeaders:", + "_postSessionNotificationIfNeeded", + "_postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:", "_postWillCacheResponseCallback", - "_postWillDeallocToolbarNotifications", "_postWillScrollNotification", "_postWillSendRequestCallback", "_postWindowNeedsDisplay", "_postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:", "_postingDisabled", + "_postscriptName", "_potentialMaxSize", "_potentialMinSize", + "_preElementImpl", "_preEvaluate", - "_preEventHandling", - "_preInitSetMatrix:fontSize:", "_preInitWithCoder:signature:valid:wireSignature:target:selector:argCount:", "_predefinedAttributes2ForIndex:depth:", + "_predicateOperator", + "_predicateOptionPairForBinding:", "_preferFilter", "_preferedColumnWidth", "_preferencesChangedNotification:", + "_preferredPlaceholderForMarker:onlyIfNotExplicitlySet:", "_prefersToBeShown", "_prefersTrackingWhenDisabled", + "_prefix", + "_prefixDown", + "_prefixIndex", + "_prefixUp", "_preflightChosenSpellServer", + "_preflightDatabaseAtPath:", + "_preflightSpellChecker", "_preflightSpellChecker:", + "_preflightSpellCheckerNow:", + "_prepareAlertError:responder:window:recoveryAttempter:", + "_prepareArrayControllerTree", + "_prepareConst:inManyToMany:", + "_prepareConst:inToMany:", + "_prepareContentWithNewObject:", "_prepareEventGrouping", "_prepareForDefaultKeyLoopComputation", "_prepareForDispatch", - "_prepareForOpeningOfOpenRecentMenu:", + "_prepareForPushChanges:", + "_prepareForReloadChildrenForNode:", "_prepareHelpWindow:locationHint:", "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:", - "_prepareOriginLoad", "_preparePrintStream", + "_prepareString:expressionPath:caseSensitive:wildStart:wildEnd:", + "_prepareSubstringWith:wildStart:wildEnd:", "_prepareSynchronizationOfEditedFieldForColumnWidthChange", - "_prepareToDispatch", "_prepareToMessageClients", "_prepareToMinimize", - "_prepareUpdateNotificationUserInfo:", - "_presentAlertWithError:fallbackMessage:fallbackMessageLocalized:allowDiscardEditing:relatedToBinding:", + "_prepareToRunForSavePanel:withFilepath:", + "_preparedSavePanelForOperation:", + "_presentAlertPanelForError:responder:", + "_presentDiscardEditingAlertPanelWithError:relatedToBinding:", + "_presentDiscardEditingSheetWithError:discardEditingCallback:otherCallback:callbackContextInfo:relatedToBinding:", + "_presentError:delegate:didRecoverSelector:context:", + "_presentModalAlertWithError:responder:relatedToBinding:", + "_presentSheetForError:responder:callback:callbackContextInfo:", + "_presentableDescription", + "_presentableErrorForCode:underlyingError:", + "_presentableErrorForCode:underlyingError:url:", + "_presentableNames", + "_presentablePluralName", + "_presentableReopeningErrorForUnderlyingError:url:contentsURL:", + "_presentableResultDescription", + "_presentableSavingErrorForOperation:underlyingError:url:", "_preventsActivation", - "_previousCurrentDirectoryNode", "_previousDisplayMode", "_previousFrameWithWrap:", "_previousNextTab:loop:", "_previousNibBindingConnector", - "_previousRootNode", "_previousSibling", "_primitiveInvalidateDisplayForGlyphRange:", "_primitiveSetDefaultNextKeyView:", "_primitiveSetNextKeyView:", "_primitiveSetPreviousKeyView:", + "_primitiveValueForKey:", + "_primitiveValueImpl", "_printAndPaginateWithOperation:helpedBy:", - "_printFile:", - "_printFontCollection", - "_printOperation:didReturn:contextInfo:", + "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:", + "_printOperation:wasRunWithSuccess:inContext:", "_printPagesWithOperation:helpedBy:", "_printPanel:didEndAndReturn:contextInfo:", "_printSession", @@ -3281,100 +4225,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_printSettingsAttributeKeys", "_printSettingsForGetting", "_printSettingsForSetting", + "_printSettingsValue", + "_printVerboseDebuggingInformation:", "_printer", "_printerForPrinter:", "_printerInPrintSession:", + "_proceedGivenDBInfo:", + "_processDBInfoNode:", + "_processDeletedObjects", + "_processDocument", + "_processElement:tag:display:", "_processEndOfEventNotification:", - "_processHTTPResultCode", + "_processGlobalIDChanges:", + "_processHeadElement:", "_processHeaders:", + "_processInstanceNode:", "_processKeyboardUIKey:", + "_processLibXML2ElementNode:tag:", + "_processLibXML2HeadElementNode:", + "_processLibXML2MetaNode:", + "_processLibXML2TextNode:content:", + "_processLibXML2TitleNode:", + "_processMetaElementWithName:content:", + "_processMetadataNode:", + "_processNotificationQueue", "_processNotifications:", - "_processRawData", + "_processObjectStoreChanges:", + "_processOwnedObjects:set:boolean:", + "_processRecentChanges", + "_processReferenceQueue", "_processRequest:", "_processRequest:named:usingPasteboard:", - "_processSpecialGlyphs:inRect:glyphOffset:", - "_procid", + "_processText:", + "_processingInstructionImpl", "_progress", - "_progressCompleted", + "_progressCompleted:", "_progressPanel:didEndAndReturn:contextInfo:", "_progressPanelWasCancelled:contextInfo:", - "_progressStarted", + "_progressStarted:", "_promoteGlyphStoreToFormat:", + "_propagateDelete", + "_propagateDeletesUsingTable:", "_propagateDirtyRectsToOpaqueAncestors", - "_propertyChanged:", + "_properties", + "_propertiesOfType:", + "_propertyAccessFromElement:", "_propertyContainerClassDescriptionFromDictionaryType:inSuite:", - "_propertyDictionaryForKey:", + "_propertyDescriptionForAppleEventCode:checkSubclasses:", + "_propertyDescriptionForAppleEventCode:checkSubclasses:superclasses:", + "_propertyDescriptionForKey:checkSubclasses:", + "_propertyDescriptionForKey:checkSubclasses:superclasses:", + "_propertyDescriptionsByKey", + "_propertyDescriptionsOfClass:fromImplDeclarations:presoDeclarations:suiteName:className:", "_propertyDictionaryInitializer", "_propertyForKey:", + "_propertyKeyFromElement:", + "_propertyListRepresentation", + "_propertyListsFromResources:", + "_propertyNamed:", + "_propertyRangesByType", + "_propertySearchMapping", + "_propertyType", "_protectionSpaceForURL:realm:", "_protectionSpaceWithKeychainItem:isDefault:", "_protocolClassForRequest:", "_provideAllPromisedData", "_provideNewViewFor:initialViewRequest:", "_provideTotalScaleFactorForPrintOperation:", + "_proxyFinalize", "_proxyForUIElement:", + "_proxyInitWithContainer:getter:", + "_proxyLocator", + "_proxyMutableArrayValueForKey:", "_proxyParentedChild:", + "_proxyPoolPointer", "_proxyProtectionSpaceForURL:", + "_proxySharePointer", "_proxyUsernameForURL:", "_pullsDown", "_purgePageCache", + "_pushCompoundStack:count:", "_pushHandling:", "_pushPerformingProgrammaticFocus", "_pushState", "_putKeyFormAndDataInRecord:", + "_queryData", + "_queryString", "_queueRequestForThread:invocation:conversation:sequence:coder:", + "_quoteElementImpl", "_radioHit:row:col:", + "_raiseNilValueExceptionWithSelector:", "_randomUnsignedLessThan:", "_range:containsPoint:", "_rangeByEstimatingAttributeFixingForRange:", "_rangeByTrimmingWhitespaceFromRange:", "_rangeForMoveDownFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:", "_rangeForMoveUpFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:", + "_rangeForUserBaseWritingDirectionChange", + "_rangeImpl", "_rangeOfPrefixFittingWidth:withAttributes:", - "_rangeOfPrefixFittingWidth:withFont:", "_rangeOfPrefixOfString:fittingWidth:withFont:", "_rangeOfSuffixFittingWidth:withAttributes:", - "_rangeOfSuffixFittingWidth:withFont:", + "_rangeOfTextTableRow:atIndex:", + "_rangeWithImpl:", "_ranges", + "_rangesForUserBaseWritingDirectionChange", "_rawAddColor:key:", - "_rawDefaultGlyphForChar:", "_rawKeyEquivalent", "_rawKeyEquivalentModifierMask", "_rawSetSelectedIndex:", + "_reactToDisplayChanged", + "_reactToFontSetChange", + "_reactToMatchingInsertions:deletions:", "_readAcceptCookiesPreference", - "_readAndRetainFileNamed:makeCompact:", - "_readArgument:dataStream:", "_readBBox", - "_readBasicMetricsForSize:allowFailure:", - "_readClass:", - "_readClassesInSuite:dataStream:", "_readColorIntoRange:fromPasteboard:", - "_readCommand:dataStream:", - "_readCommands:dataStream:suiteID:", + "_readColorsFromLibrary", + "_readFilenameStringsIntoRange:fromPasteboard:", "_readFilenamesIntoRange:fromPasteboard:", "_readFontIntoRange:fromPasteboard:", - "_readFromPboard", "_readHTMLIntoRange:fromPasteboard:", + "_readImageInfoWithImageSource:imageNumber:properties:", "_readImageIntoRange:fromPasteboard:", "_readMovieIntoRange:fromPasteboard:", - "_readNamedArguments:dataStream:", "_readPersistentBrowserColumns", "_readPersistentExpandItems", "_readPersistentTableColumns", - "_readPluralNameForCode:fromDict:dataStream:", "_readRTFDIntoRange:fromPasteboard:", "_readRTFIntoRange:fromPasteboard:", "_readRecentDocumentDefaultsIfNecessary", "_readRulerIntoRange:fromPasteboard:", "_readSelectionFromPasteboard:types:", "_readStringIntoRange:fromPasteboard:", - "_readSuites:dataStream:", - "_readSynonym:inSuite:dataStream:", - "_readSynonymsInSuite:dataStream:", + "_readURLIntoRange:fromPasteboard:", + "_readURLStringIntoRange:fromPasteboard:", + "_readURLStringsWithNamesIntoRange:fromPasteboard:", "_readVersion0:", "_readWidthsFromDefaults", - "_realCloneFont:withFlag:", - "_realCompositeName", + "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:", "_realControlTint", "_realControlTintForView:", "_realCopyPSCodeInside:helpedBy:", @@ -3385,219 +4373,267 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_realHeartBeatThreadContext", "_realMaximumRecents", "_realPrintPSCode:helpedBy:", + "_realStoreTypeForStoreWithType:URL:error:", "_realWindowNumber", "_reallocColors:", + "_reallocData:", "_reallyChooseGuess:", + "_reallyControlView", "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:", - "_reallyFileExtensionsFromType:", "_reallyInitWithIncrementalImageReader:", "_reallyNeedsDisplayForBounds", - "_reallySetStringValue:", + "_reallyProcessNotifications:", "_realmForURL:", - "_reattachColumnSubviews:", "_rebuildOrUpdateServicesMenu:", + "_recacheAll", "_recacheButtonColors", - "_recalcRectsForItem:forSize:", - "_recalculateDefaultVerticalLineSettings:::::::", - "_recalculateDelta:", - "_recalculateInscriptionLineHeightInGlyphVector:forGlyphRange:usesLeading:lineheight:glyphOffset:", + "_recacheString", + "_recalcRectsForCell:", "_recalculateUsageForTextContainerAtIndex:", "_receiveHandlerRef", "_receivedData:", - "_receivedError:complete:", "_receivedError:fromDataSource:", - "_recentDocumentsLimit", - "_recomputeClipTipsIfNecessary", + "_receivedMainResourceError:", + "_receivedMainResourceError:complete:", + "_recentMenuItemTitlesFromLocationComponentChains:", + "_recentPlacesNode", + "_recomputeBucketIndex:bucketFirstRowIndex:", "_recomputeLabelHeight", "_reconcileDisplayNameAndTrackingInfoToFileName", "_reconcilePageFormatAttributes", "_reconcilePrintSessionAttributes", "_reconcilePrintSettingsAttributes", + "_reconcileToSuiteRegistry:", "_reconfigureAnimationState:", - "_recordsBinderChanges", - "_recordsInIndex", - "_recordsToIndex", + "_recordForObject:", + "_recreateQuery", "_rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:", "_rectForSegment:inFrame:", + "_rectImpl", "_rectOfColumnRange:", "_rectOfItemAtIndex:", "_rectOfRowAssumingRowExists:", "_rectOfRowRange:", "_rectToDisplayForItemAtIndex:", + "_rectWithImpl:", + "_rectangularCharacterRangesForGlyphRange:from:to:granularity:", "_rectsForBounds:", + "_rectsForMultiClippedContentDrawing", "_recurWithContext:chars:glyphs:stringBuffer:font:", "_recurseToFindTargetItem", "_recursiveBreakKeyViewLoop", - "_recursiveCheckCompleteFromFrame:", + "_recursiveCheckLoadComplete", "_recursiveDisableTrackingRectsForHiddenViews", "_recursiveDisplayAllDirtyWithLockFocus:visRect:", "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:", - "_recursiveEnableItems", "_recursiveEnableTrackingRectsForNonHiddenViews", "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:", "_recursiveFindDefaultButtonCell", "_recursiveGainedHiddenAncestor", + "_recursiveGatherAllKeyViewCandidatesInArray:", "_recursiveGoToItem:fromItem:withLoadType:", "_recursiveLostHiddenAncestor", "_recursiveOrderFrontSurfacesForNonHiddenViews", "_recursiveOrderOutSurfacesForHiddenViews", + "_recursiveRecomputeToolTips", "_recursiveSetDefaultKeyViewLoop", "_recursiveStopLoading", + "_recursiveWindowDidEnableToolTipCreationAndDisplay", "_recursivelyAddItemsInMenu:toTable:", "_recursivelyRemoveItemsInMenu:fromTable:", - "_redisplayFromRow:", - "_referenceBinderAtIndex:forTableView:", - "_referenceBinderController", + "_redisplayAndResizeFromRow:", + "_redisplayTableContentWithRowIndexes:columnIndexes:", + "_refaultLocalObjectWithGlobalID:", + "_refaultObject:globalID:editingContext:boolean:", + "_refaultObjectWithGlobalID:globalID:", + "_referenceArray", "_referenceBinderForTableColumn:", "_referenceBinding", "_referenceBindingValue", "_referenceBindingValueAtIndex:", + "_referenceBindingValueAtIndexPath:", + "_referenceData", + "_referenceData64", + "_referenceDataPtr", "_reflectDocumentViewBoundsChange", "_reflectFont", + "_reflectSelection", "_reflectSelection:", - "_refresh", - "_refreshServerList", - "_refreshWindows", + "_reformListAtIndex:", + "_reformTableRow", + "_refreshDetailContentInBackground:", + "_refreshesAllModelKeys", + "_refreshesAllModelObjects", + "_regenerateFormatter", + "_region:", "_regionForOpaqueDescendants:forMove:", - "_regionsArray", "_registerAllDrawersForDraggedTypesIfNeeded", + "_registerBuiltInFormatters", + "_registerClearStateWithUndoManager", "_registerDefaultPlaceholders", - "_registerDefaults", + "_registerDefaultStoreClassesAndTypes", "_registerDragTypes:", "_registerDragTypesIfNeeded", + "_registerDragTypesLater", "_registerDraggedTypes", - "_registerEnumeration:named:inSuite:", + "_registerDynamicToolTipManagerInstance:", + "_registerForAdapterContextNotifications:", + "_registerForAutosaveNotification", "_registerForChildChangedNotifications", + "_registerForClipBoundsDidChangeNotificaitonIfNecessaryForSuperview:", "_registerForCompletion:", "_registerForCookiePreferenceNotification", + "_registerForDocViewFrameAndBoundsChangeNotifications", + "_registerForDragTypes", + "_registerForDraggedTypes:later:", "_registerForMovieIdle", + "_registerForQueryStateChangeNotifications:", "_registerForToolbarNotifications:", + "_registerFormatter:forErrorKey:parameters:", "_registerMenuForKeyEquivalentUniquing:", "_registerMenuItemForKeyEquivalentUniquing:", + "_registerObject:withID:", + "_registerObjectClass:placeholder:binding:", + "_registerObservedModelKeyPath:", + "_registerObservingForAllModelObjects", + "_registerOrCollectSuiteDescription:", + "_registerOrUnregister:observerNotificationsForKeyPath:", + "_registerOrUnregister:observerNotificationsForKeyPath:ofModelObject:", + "_registerOrUnregister:observerNotificationsForModelObject:", "_registerRequiredAEHandlers", "_registerServicesMenu:withSendTypes:andReturnTypes:addToList:", - "_registerSynonym:forClassName:inSuite:", - "_registerTableColumnBinder:toTableColumn:", + "_registerStoreClass:forStoreType:", + "_registerSuiteDescriptions:", + "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:", "_registerToolbarInstance:", + "_registerUndoForModifiedObject:", "_registerUndoObject:", "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:", - "_registerValueType:named:inSuite:", - "_registerViewClass:placeHolder:binding:", - "_registerViewClass:representationClass:forURLScheme:", "_registerWebKitErrors", "_registerWithDock", "_registerWithDockIfNeeded", - "_registerWithObject:", - "_registeredClasses", "_registeredForChildNotifications", + "_registeredObjects", + "_registeredStoreTypes", "_registrationDictionaryForUnitNamed:", - "_reinitWithFZService:", - "_relativeURLPath", + "_relatedNodes", + "_relationshipNamed:", + "_relationshipNamesByType:", "_releaseAllPendingPageCaches", + "_releaseAllPreWillChangeExpandedNodes", "_releaseBindingAdaptor", "_releaseDelegate", + "_releaseEffect", "_releaseEvents", "_releaseFutureIconForURL:", "_releaseIconForIconURLString:", "_releaseInput", "_releaseKVCMaps", "_releaseLiveResizeCachedImage", + "_releaseNodePreviewHelper", + "_releaseOneLevelPreWillChangeExpandedNodes", "_releaseOriginalIconsOnDisk", "_releasePageCache:", "_releaseProtocolClientReference", + "_releaseRowHeightStorageIfNecessary", "_releaseUndoManager", - "_releaseUserAgentStrings", "_releaseWireCount:", "_reloadAllowingStaleDataWithOverrideEncoding:", "_reloadChildrenForNode:", - "_reloadFontInfoIfNecessary:", + "_reloadForPluginChanges", "_reloadSidebarNodes", "_remainingString", "_remove:", "_remove:andAddMultipleToTypingAttributes:", - "_removeAllCellClipTips", + "_removeAllCellMouseTracking", "_removeAllDrawersImmediately:", + "_removeAllRevealovers", + "_removeAllTrackingRects", "_removeAndDecrementBy:startingAtIndex:", "_removeBinding:", "_removeBinding:byReplacingWithRemainingBindingsInArray:", - "_removeBlankLines", "_removeBottom", "_removeButtons", "_removeChild:", "_removeClipIndicatorFromSuperview", - "_removeCollection:", "_removeCursorRect:cursor:forView:", - "_removeDeclaredKey:", + "_removeEntities:fromConfiguration:", + "_removeEntity:", + "_removeEntityNamed:", "_removeFileAtPath:handler:shouldDeleteFork:", + "_removeFontDescriptor:fromCollection:save:", "_removeFontDescriptorFromDrag:point:", "_removeFrameUsingName:domain:", - "_removeFromFontCollection", "_removeFromGroups:", "_removeFromKeyViewLoop", - "_removeHandlingIfPresent:", "_removeHeartBeartClientView:", "_removeHelpKeyForObject:", "_removeHiddenWindow:", - "_removeInstance:", - "_removeInternalRedFromTextAttributesOfNegativeValues", "_removeItem:fromTable:", "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_removeMouseMovedListener:", "_removeNextPointersToMe", + "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:", + "_removeObject:objectIDMap:", + "_removeObjectAtArrangedObjectIndex:objectHandler:", "_removeObjectForAttributeKey:", - "_removeObjectsAtArrangedObjectIndexes:contentIndexes:", - "_removeObjectsAtIndexes:", - "_removeObserver:forKey:", + "_removeObjects:objectHandler:", + "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:", + "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:", + "_removeObserver:forProperty:", "_removeObserver:notificationNamesAndSelectorNames:object:", "_removeOrRename:", "_removePasswordForRealm:URL:", - "_removePermanently", + "_removePlugInStreamClient:", "_removePopUpWithTag:", "_removePreviousPointersToMe", + "_removeProperty:", + "_removePropertyNamed:", "_removeProxyPasswordForURL:", "_removeRangeInArrayAtIndex:", - "_removeRecords", "_removeReferenceForIdentifier:", - "_removeSaveFile", - "_removeSizeFromList:", "_removeSortDescriptorForTableColumn:", "_removeSpellingAttributeForRange:", "_removeStatusItemWindow:", + "_removeSubentity:", "_removeSubresourceClient:", "_removeSubview:", "_removeTabViewItems:", "_removeToolTip", "_removeToolTip:stopTimerIfNecessary:", "_removeTrackingRectForToolTip:stopTimerIfNecessary:", + "_removeTrackingRectTag:", + "_removeTrackingRects", + "_removeTrackingRects:count:", + "_removeTrackingRectsForView:stopTimerIfNecessary:", "_removeWindow:", "_removeWindowFromCache:", "_removeWindowRef", "_rename:", "_rename:as:", + "_renameChild:toName:", "_renameCollection:to:", "_renameCollectionWithName:to:", + "_renderingContextWithGlyphOrigin:", "_reorderColumn:withEvent:", "_reorderResizeImageCache", "_repTypesAllowImageTypeOmission:", "_repeatMultiplier:", "_repeatTime", + "_repetitionCount", "_replaceAccessoryView:with:topView:bottomView:previousKeyView:", - "_replaceAllAppearancesOfString:withString:", "_replaceAllItemsAndSetNewWithItemIdentifiers:", - "_replaceFirstAppearanceOfString:withString:", - "_replaceLastAppearanceOfString:withString:", - "_replaceObject:", - "_replaceObject:forKey:", + "_replaceCString:withCString:", + "_replaceFontDescriptor:withDescriptor:inCollection:", "_replaceObject:withObject:", - "_replaceObjectsAtIndexes:withObjects:", "_replaceRangeInArrayAtIndex:withRange:", + "_replaceSelectionWithArchive:selectReplacement:", "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:", "_replicatePath:atPath:operation:fileMap:handler:", - "_replySequenceNumber:ok:", - "_replyToLaunch", - "_replyToOpen:", - "_representationClass", "_representationClassForMIMEType:", "_representationExistsForURLScheme:", + "_representedObjectForString:", + "_representedObjectForString:allowNULL:", "_requestAnyEditableState", "_requestAnyEnabledState", "_requestAnyHiddenState", @@ -3607,31 +4643,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_requestNotification", "_requestTextColor:", "_requestTypeForOperationKey:", + "_requiredCarbonCatalogInfoMask", "_requiredMinSize", "_requiresCacheWithAlpha:", "_reset", + "_resetAllChanges", + "_resetAllChanges:", "_resetAllDrawersDisableCounts", "_resetAllDrawersPostingCounts", - "_resetAttachedMenuPositions", - "_resetBackForwardListToCurrent", + "_resetAlternateICUValues", "_resetCachedValidationState", "_resetCursorRects", + "_resetDictionaryRepresentation", "_resetDisableCounts", "_resetDiscardMask", "_resetDragMargins", "_resetDrawerFirstResponder", - "_resetFaceInfo:", + "_resetFirstResponder", "_resetIncrementalSearchBuffer", - "_resetIncrementalSearchOnFailure", "_resetMeasuredCell", + "_resetModificationDate", "_resetMoveAndRenameSensing", - "_resetOpacity:", "_resetOpacity:andForceSetColor:", "_resetPostingCounts", - "_resetRowEntriesToNewFilter", + "_resetProgress", "_resetScreens", - "_resetSizeList:", - "_resetTimer", "_resetTitleBarButtons", "_resetTitleFont", "_resetTitleWidths", @@ -3641,6 +4677,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_resize:", "_resizeAccordingToTextView:", "_resizeAllCaches", + "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:", "_resizeColumn:withEvent:", "_resizeColumnByDelta:resizeInfo:", "_resizeContentsOfMainBox", @@ -3648,41 +4685,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_resizeContentsOfPreviewBox", "_resizeCursorForTableColumn:", "_resizeDeltaFromPoint:toEvent:", - "_resizeEditedCellWithOldFrame:", "_resizeFromEdge", "_resizeHeight:", "_resizeImage", - "_resizeLeftCursor", - "_resizeLeftRightCursor", + "_resizeKeepingPanelOnScreen:expand:", "_resizeOutlineColumn", - "_resizeRightCursor", "_resizeSelectedTabViewItem", + "_resizeTable:level:range:column:widthDelta:", + "_resizeTable:level:range:row:heightDelta:", "_resizeTextFieldToFit:", "_resizeTextViewForTextContainer:", "_resizeToolbarImageRepViewToFit:", "_resizeToolbarViewToFit:", - "_resizeView", "_resizeViewToFit:", "_resizeViewsForOffset:coordinate:", + "_resizeWeight", + "_resizeWeightSharedWithDuplicateItems", "_resizeWeighting", "_resizeWindow:toFrame:display:", "_resizeWindowWithMaxHeight:", "_resizeWithDelta:fromFrame:beginOperation:endOperation:", "_resizedImage:", - "_resizesLastColumnOnly", "_resolveHelpKeyForObject:", "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:", + "_resolveName", + "_resolveNamespaceForPrefix:", + "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:", "_resolveTypeAlias:", - "_resourceForkAwareFileManager:removeFileAtPath:handler:", - "_resourceForkReferenceNumber", "_resourceLoadDelegateForwarder", "_resourceLoadDelegateImplementations", "_resourceLoadLoop:", - "_resourceTimedLayoutDelay", - "_resourceTimedLayoutEnabled", + "_resourcesFromPropertyLists:", "_responderInitWithCoder:", + "_response", "_responses", "_responsibleDelegateForSelector:", + "_restartEditingWithTextView:", + "_restartMovementTracking", "_restoreCursor", "_restoreDefaultSettingsCommon", "_restoreDefaultSettingsForOpenMode", @@ -3696,76 +4735,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_restoreSplitPositionFromDefaults", "_restoreSubviews", "_restoreTornOffMenus", + "_resultTypeDescription", "_resumeExecutionWithResult:", + "_resumeIfNotTopHandling:withScriptCommandResult:", + "_resumeInformation", + "_resumeLoading", "_resumeUIHeartBeatingInView:", "_retainFutureIconForURL:", "_retainIconForIconURLString:", "_retainIconInDatabase:", "_retainOriginalIconsOnDisk", - "_retainedBitmapRepresentation", + "_retainedObjectWithID:optionalHandler:", + "_retainedPrimaryKeyNumberForObject:", + "_retainedPrimaryKeyNumberForObjectID:", + "_retrieveKeyboardUIModeFromPreferences:", "_returnFirstResponderToWindowFromKeyboardHotKeyEvent", "_returnValue", - "_reverseCompare:", - "_revertPanel:didConfirm:contextInfo:", + "_revealoverInfoForCell:cellRect:", + "_revertAlertSheet:wasPresentedWithResult:inContext:", + "_revertDisplayValueBackToOriginalValue:", "_revertToOldRowSelection:fromRow:toRow:", "_rightGroupRect", "_rightMouseUpOrDown:", "_rightToLeftAtIndex:", - "_rightmostResizableColumn", + "_rightmostAutoresizingColumn", + "_rollbackTransaction:", + "_rootEntity", + "_rootNode", "_rotateCoordsForDrawLabelInRect:", - "_rotationForGlyphAtIndex:effectiveRange:", - "_rowEntryForChild:ofParent:", - "_rowEntryForItem:", - "_rowEntryForRow:", + "_rowArrayForBlock:atIndex:layoutManager:containerWidth:rowCharRange:indexInRow:previousRowBlockHelper:", + "_rowEntryForChild:ofParent:requiredRowEntryLoadMask:", + "_rowEntryForItem:requiredRowEntryLoadMask:", + "_rowEntryForRow:requiredRowEntryLoadMask:", + "_rowHeaderColumn", + "_rowHeaderFixedContentRect", + "_rowHeaderScrollableContentVisibleRect", + "_rowHeaderSeparatorLineColor", + "_rowHeaderShadowSurface", + "_rowHeaderShadowSurfaceBounds", + "_rowHeaderShadowSurfaceIsShowing", + "_rowHeaderTableColumn", + "_rowHeightStorage:", + "_rowHeightStorageBeginLayoutChange", + "_rowHeightStorageComputeRectOfRow:cacheHint:", + "_rowHeightStorageComputeRowAtPoint:cacheHint:", + "_rowHeightStorageEndLayoutChange", + "_rowHeightStorageInvalidateCacheAndStorage", + "_rowHeightStorageUpdateForDeletedRows:atIndex:", + "_rowHeightStorageUpdateForInsertedRows:atIndex:", + "_rowsChangedByLastExecute", "_rowsInRectAssumingRowsCoverVisible:", "_ruleAreaRect", + "_ruleImpl", + "_ruleListImpl", + "_ruleListWithImpl:", + "_ruleWithImpl:", "_rulerAccView", "_rulerAccViewAlignmentAction:", - "_rulerAccViewFixedLineHeightAction:", - "_rulerAccViewIncrementLineHeightAction:", - "_rulerAccViewPullDownAction:", - "_rulerAccViewSpacingAction:", - "_rulerAccViewStylesAction:", - "_rulerAccViewUpdatePullDown:", + "_rulerAccViewCenterTabWell", + "_rulerAccViewDecimalTabWell", + "_rulerAccViewLeftTabWell", + "_rulerAccViewRightTabWell", + "_rulerAccViewSetUpLists", "_rulerAccViewUpdateStyles:", "_rulerAccessoryViewAreaRect", "_rulerOrigin", - "_rulerline::last:", "_runAlertPanelForDocumentMoved:orDocumentRenamed:orDocumentInTrash:orDocumentUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:", "_runArrayHoldingAttributes", - "_runBlockingWithDuration:firingInterval:", + "_runBlocking", "_runCustomizationPanel", + "_runInNewThread", "_runInitBook:", + "_runModalWithColor:", "_runModalWithPrintInfo:", "_runningDocModal", "_sanityCheckPListDatabase:", - "_saveAllEnumeration:", - "_saveAsIntoFile:", - "_saveChanges", "_saveConfigurationUsingName:domain:", "_saveCookies", "_saveCookiesIfScheduled", "_saveCredential:forProtectionSpace:isDefault:", "_saveCurrentPanelState:", "_saveDocumentAndScrollState", - "_saveFailed", + "_saveDocuments:", "_saveFrameUsingName:domain:", "_saveHistoryGuts:URL:error:", - "_saveImageDataToDisk:", "_saveInitialMenuPosition", - "_saveLineFragmentWithGlyphRange:glyphVector:glyphOrigin:drawsOutside:lineFragmentRect:isElasticRange:", "_saveMode", - "_savePanelDidEnd:returnCode:contextInfo:", + "_saveObjects:toStore:usingContext:", + "_savePanelAccessoryViewForWritableTypes:defaultType:", + "_savePanelWasPresented:withResult:inContext:", + "_saveRequestForStore:originalRequest:", "_saveScrollPositionToItem:", "_saveSplitPositionToDefaults", - "_saveToPboard", "_saveTornOffMenus", - "_saveValueInUndo:forProperty:", "_saveVisibleFrame", "_saveWidthsToDefaults", "_savedMode", "_savedVisibleFrame", "_scaleFactor", + "_scaleFactorForPrintOperation:", "_scaleFactorForStyleMask:", "_scaleIcon:toSize:", "_scaledBackground", @@ -3773,25 +4841,45 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_scalesBackgroundHorizontally", "_scalesBackgroundVertically", "_scanDecimal:into:", + "_scanForPlugIns:", "_scanImages", "_scheduleAutoExpandTimerForItem:", "_scheduleCallbacks", "_scheduleChangeNotification", + "_scheduleDelayedAutocomplete", "_scheduleDelayedShowOpenHandCursorIfNecessary", - "_scheduleInCFRunLoop:forMode:", "_scheduleInDefaultRunLoopForMode:", - "_scheduleLayout:", - "_scheduleOriginLoad", + "_scheduleLocalNotification", "_scheduleRelease", "_scheduleReleaseTimer", "_scheduleSaveCookies", "_scheduleSetupOnLoadThread", + "_scheduleWindow:forBatchOrdering:relativeTo:", + "_schemeData", + "_schemeSeparatorWithoutColon", + "_scopeButtonsForNodes:", "_screenChanged:", "_screenRectContainingPoint:", + "_scriptClassTerminologyForName:", + "_scriptCommandTerminologyForName:", + "_scriptElementImpl", + "_scriptErrorExpectedType", + "_scriptErrorOffendingObjectDescriptor", + "_scriptIsYesForKey:default:", + "_scriptStringWithPropertyAccess:", + "_scriptStringWithTabCount:", + "_scriptTerminologyDescription", + "_scriptTerminologyName", + "_scriptTerminologyNameOrNames", + "_scriptTerminologyPluralName", + "_scriptingEnumeratorOfType:withDescriptor:", + "_scriptingObjectOfType:withDescriptor:", + "_scriptingPointWithDescriptor:", + "_scriptingRectangleWithDescriptor:", + "_scriptingTextWithDescriptor:", "_scrollArrowHeight", - "_scrollClipView:toPoint:animate:", - "_scrollColumnToLastVisible:", "_scrollColumnToVisible:private:", + "_scrollColumnToVisible:requireCompletelyVisible:", "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:", "_scrollColumnsRightBy:", "_scrollDown:", @@ -3809,13 +4897,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_scrollSelectionToVisible", "_scrollTo:", "_scrollTo:animate:", - "_scrollToBottomLeft", "_scrollToFinalPosition", "_scrollToMatchContentView", - "_scrollToPoint:animate:", "_scrollToPosition:", - "_scrollToTop", - "_scrollToTopLeft", "_scrollUp:", "_scrollVerticallyBy:", "_scrollView", @@ -3827,6 +4911,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_scrollingDirectionAndDeltas:", "_scrollingMenusAreEnabled", "_searchChanged:", + "_searchFavoriteStyleCollection", + "_searchFieldAction:", "_searchFieldCancel:", "_searchFieldClearRecents:", "_searchFieldDoRecent:", @@ -3834,37 +4920,52 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_searchForImageNamed:", "_searchForSoundNamed:", "_searchForSystemImageNamed:", + "_searchMenuForProxy", + "_searchMenuTemplate", + "_searchMenuTracking", + "_searchRegularCollection", "_secProtocolForProtectionSpace:", "_secondsFromGMTForAbsoluteTime:", "_seemsToBeVertical", "_segmentIndexForElementIndex:", + "_selectAllContent:inDetailcontroller:", + "_selectAllForMatrix:sender:", + "_selectAllNoRecurse:", "_selectAnyValidResponderOverride", "_selectCell:inColumn:", "_selectCellIfRequired", - "_selectCrayon:", + "_selectCrayon:updateSelection:", + "_selectElementImpl", "_selectFirstEnabledCell", "_selectFirstKeyView", "_selectHighlightedSegment", - "_selectItem:", - "_selectItemBestMatching:", + "_selectInTabView:itemAtIndex:", + "_selectInTabView:itemWithIdentifier:", + "_selectInTabView:itemWithLabel:", "_selectKeyCellAtRow:column:", + "_selectMarkedText", "_selectModuleOwner:", "_selectNameFieldContentsExcludingExtension", "_selectNextCellKeyStartingAtRow:column:", "_selectNextItem", - "_selectObjectsAtIndexes:avoidsEmptySelection:", - "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:", + "_selectNextSubfield", + "_selectObjectsAtIndexPaths:avoidsEmptySelection:sendObserverNotifications:", + "_selectObjectsAtIndexPathsNoCopy:avoidsEmptySelection:sendObserverNotifications:", + "_selectObjectsAtIndexes:avoidsEmptySelection:sendObserverNotifications:forceUpdate:", + "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:sendObserverNotifications:forceUpdate:", "_selectOrEdit:inView:target:editor:event:start:end:", "_selectPopUpWithTag:", "_selectPreviousItem", + "_selectPreviousSubfield", "_selectRange::::", + "_selectRangeInMarkedText:", "_selectRectRange::", - "_selectRow:subrow:byExtendingSelection:members:", "_selectRowIndexes:inColumn:", "_selectRowRange::", "_selectTabWithDraggingInfo:", "_selectTextOfCell:", "_selectWindow:", + "_selectedArchive", "_selectedCellsInColumn:", "_selectedCollectionDescriptors", "_selectedCollectionName", @@ -3874,23 +4975,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_selectedFamilyArray", "_selectedFamilyName", "_selectedFontName", + "_selectedRange", + "_selectedRanges", + "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:", "_selectedSize", + "_selectionChanged", "_selectionIndexesCount", + "_selectionIsInsideMarkedText", + "_selectionPasteboardTypes", + "_selectionStartFontAttributesAsRTF", "_selectorName", + "_selectorToGetValueWithNameForKey:", + "_selectorToGetValueWithUniqueIDForKey:", "_selfBoundsChanged", - "_send:", "_sendAction:to:row:column:", "_sendActionAndNotification", "_sendActionFrom:", "_sendCallbacks", "_sendCarbonNotification", + "_sendCarbonNotificationFor:tags:withValuePtrs:andSizes:", + "_sendCarbonNotificationForTag:withValuePtr:andSize:", "_sendChangeNotification", "_sendClientMessage:arg1:arg2:", + "_sendDataSourceSetObjectValue:", "_sendDataSourceSortDescriptorsDidChange:", + "_sendDataSourceWriteDragDataWithIndexes:toPasteboard:", "_sendDataSourceWriteDragRows:toPasteboard:", + "_sendDelegateCanSelectColumn:byExtendingSelection:", + "_sendDelegateCanSelectRow:byExtendingSelection:", + "_sendDelegateCreateRowsForColumn:inMatrix:", "_sendDelegateDidClickColumn:", "_sendDelegateDidDragColumn:", "_sendDelegateDidMouseDownInHeader:", + "_sendDelegateHeightOfRow:", + "_sendDelegateSelectRow:inColumn:", + "_sendDelegateToolTipForCell:tableColumn:rect:row:mouseLocation:", + "_sendDelegateWillDisplayCell:atRow:column:", + "_sendDelegateWillDisplayCell:forColumn:row:", + "_sendDelegateWillDisplayOutlineCell:inOutlineTableColumnAtRow:", "_sendDidBeginMessage", "_sendDidCancelAuthenticationCallback", "_sendDidFailCallback", @@ -3901,194 +5023,201 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_sendDidReceiveResponseCallback", "_sendDirectoryDidChange", "_sendDoubleActionToCellAt:", + "_sendFileSystemChangedNotificationForSavePanelInfo:", "_sendFinderAppleEvent:class:file:", "_sendFinishLaunchingNotification", "_sendNotification:entries:", "_sendNotificationForURL:", + "_sendOrEnqueueNotification:selector:", "_sendPartialString", "_sendPortMessageWithComponent:msgID:timeout:", - "_sendProgress:", "_sendQueuedAction", + "_sendSelectionDidChange", "_sendToReceiversWithIndex:andFillInResults:", + "_sendToolTipMouseEntered", + "_sendToolTipMouseExited", "_sendWillCacheResponseCallback", "_sendWillSendRequestCallback", "_senderIsInvalid:", "_sendingSocketForPort:", + "_sendingTableViewRowAction", "_separatorFinishInit", "_serverDied:", - "_servicesMenuIsVisible", - "_set:", - "_setAEDesc:", - "_setAcceptsFirstMouse:", - "_setAcceptsFirstResponder:", + "_servicesMenuHasBeenBuilt", "_setActivationState:", "_setActsAsPalette:forToolbar:", - "_setAdditionalThingsFromEvent:inConstructionContext:", - "_setAllIndexesNeedRefresh", + "_setAdditionalThingsFromEvent:", "_setAllItemsTransparentBackground:", - "_setAllKeysNeedRefresh", - "_setAllPanelsNonactivating:", "_setAllPossibleLabelsToFit:", "_setAllowsMultipleRows:", "_setAllowsNonVisibleCellsToBecomeFirstResponder:", "_setAllowsTearOffs:", "_setAltContents:", - "_setAlwaysIdle:", + "_setAlwaysUseATSU:", + "_setAnimateColumnScrollingForAnyEvent:", "_setAnimates:", - "_setAntialiased:", "_setAppleEventHandling:", - "_setAppleMenuEnabled:", "_setApplicationIconImage:setDockImage:", "_setArgFrame:", - "_setArgumentsFromEvent:inConstructionContext:", - "_setArrowsConfig:", - "_setAsSystemColor", - "_setAscending:", "_setAsideSubviews", - "_setAttributedDictionaryClass:", - "_setAttributedString:", + "_setAttributeValueClassName:", "_setAttributes:isMultiple:", "_setAttributes:newValues:range:", + "_setAutoAppendsMDAttributesToSavedFile:", + "_setAutoGeneratedInitialFirstResponder:", "_setAutoPositionMask:", - "_setAutoResizeDocView:", - "_setAutoreleaseDuringLiveResize:", "_setAutoscrollDate:", - "_setAutoscrollResponseMultiplier:", + "_setAutovalidatesItems:", "_setAvoidsActivation:", "_setBackgroundColor:", - "_setBackgroundTransparent:", + "_setBaselineRenderingMode:", + "_setBatchingParams", "_setBindingAdaptor:", - "_setBlobForCurrentObject:", + "_setBindingCreationDelegate:", "_setBlockCapacity:", "_setBool:ifNoAttributeForKey:", "_setBoolValue:forKey:", "_setBorderType:", "_setBox:enabled:", - "_setBranchImageEnabled:", + "_setBrowserOptimizationsEnabled:", "_setBulletCharacter:", "_setBundle:forClassPresentInAppKit:", "_setBundleForHelpSearch:", - "_setButtonBordered:", "_setButtonImageSource:", "_setButtonToolTip:", "_setButtonType:adjustingImage:", - "_setCFClientFlags:callback:context:", "_setCGImageRef:", "_setCacheWindowNum:forWindow:", + "_setCalculatedExpiration:", + "_setCallbackHandler:", "_setCanUseReorderResizeImageCache:", "_setCaseConversionFlags", "_setCellFrame:", - "_setCertificatePolicy:", "_setChangedFlags:", - "_setClassDescription:forAppleEventCode:", - "_setClassName:forSynonymAppleEventCode:inSuite:", + "_setChangedObjectIDs:", "_setClipIndicatorItemsFromItemViewers:", - "_setCloseEnabled:", "_setColorList:", - "_setCommandDescription:forAppleEventClass:andEventCode:", - "_setConcreteFontClass:", + "_setColorPanelColor:force:", + "_setColorToChange:", + "_setColumnName:", "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:", "_setConfigurationUsingName:domain:", - "_setConsistencyCheckingEnabled:superCheckEnabled:", "_setContainerObservesTextViewFrameChanges:", + "_setContentInBackground:", + "_setContentKindAndEncoding", "_setContentRect:", "_setContentToContentFromIndexSet:", "_setContents:", + "_setContentsDirty:", + "_setContentsDirtyForNodeWithIdentifier:", "_setContextMenuEvent:", "_setContextMenuTarget:", "_setContinuousSpellCheckingEnabledForNewTextAreas:", + "_setControl:", "_setControlTextDelegateFromOld:toNew:", "_setControlView:", - "_setController:forBinding:", - "_setConvertedData:forType:pboard:generation:inItem:", + "_setConversionFromData:type:inPasteboard:generation:item:", "_setConvertedData:pboard:generation:inItem:", "_setCookies:forURL:policyBaseURL:", - "_setCookiesWithoutSaving:", - "_setCounterpart:", + "_setCookiesWithoutSaving:whilePrivateBrowsing:", + "_setCorrelationTableName:", "_setCtrlAltForHelpDesired:", "_setCurrImageName:", - "_setCurrentActivation:", "_setCurrentAttachmentRect:index:", + "_setCurrentBrowsingNodePath:makeHistory:notify:", "_setCurrentClient:", + "_setCurrentCollectionRep:", + "_setCurrentDirectoryNode:", + "_setCurrentDirectoryNode:makeHistory:notify:", + "_setCurrentDirectoryNode:pathToNode:", "_setCurrentEvent:", "_setCurrentInputFilepath:", "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_setCurrentListLevel:", + "_setCurrentListNumber:", "_setCurrentlyEditing:", - "_setCustomizesAlwaysOnClickAndDrag:", + "_setDTDString:", + "_setData:", "_setData:encoding:", "_setDataForkReferenceNumber:", "_setDataSource:", - "_setDecimalSeparatorNoConsistencyCheck:", - "_setDeclaredKeys:", "_setDefaultButtonCell:", - "_setDefaultButtonCycleTime:", "_setDefaultButtonIndicatorNeedsDisplay", "_setDefaultButtonPaused:", "_setDefaultKeyViewLoop", "_setDefaultKeyViewLoopAndInitialFirstResponder", "_setDefaultRedColor:", "_setDefaultUserInfoFromURL:", + "_setDefaultWindowKeyViewLoop", "_setDefaults:", "_setDelegate:", "_setDelegate:forPanel:", + "_setDescriptorNoCopy:", "_setDeselectsWhenMouseLeavesDuringDrag:", - "_setDirectParameterFromEvent:inConstructionContext:", "_setDirectoryPath:", - "_setDisplayContents:", + "_setDisableLiveResizeImageCaching:", "_setDisplayContents:usingSimpleCommandDefaults:", "_setDisplayName:", - "_setDisplayPositionHint:", - "_setDisplayRelativeOrder:", - "_setDisplayableSampleText:forFamily:", + "_setDisplayValue:object:triggerRedisplay:", "_setDistanceForVerticalArrowKeyMovement:", "_setDocViewFromRead:", "_setDocumentDictionaryName:", "_setDocumentEdited:", "_setDocumentView:", "_setDocumentWindow:", + "_setDontWarnMessage:", + "_setDragAndDropCharRange:", + "_setDragAndDropCharRanges:", + "_setDragGlyphRange:", "_setDragRef:", + "_setDraggingDocumentView:", "_setDraggingMarker:", "_setDrawBackground:", + "_setDrawDelegate:", "_setDrawerEdge:", - "_setDrawerTransform:", - "_setDrawerVelocity:", "_setDrawingBackground:", - "_setDrawingInClipTip:", + "_setDrawingInRevealover:", "_setDrawingToHeartBeatWindow:", - "_setDrawsBackground:", "_setDrawsBaseline:", - "_setDrawsWithTintWhenHidden:", + "_setDrawsOwnDescendants:", + "_setDynamicToolTipsEnabled:", "_setEditingTextView:", "_setEnableDelegateNotifications:", "_setEnableFlippedImageFix:", "_setEnabled:", + "_setEnabledFileTypes:", "_setEncounteredCloseError:", "_setEndSubelementFromDescriptor:", "_setEndsTopLevelGroupingsAfterRunLoopIterations:", + "_setEntity:", + "_setEntityTag:", "_setError:", - "_setEventDelegate:", "_setEventMask:", "_setEventRef:", + "_setExcludedFromVisibleWindowList:", "_setExpectedContentLength:", - "_setExportSpecialFonts:", - "_setFallBackInitialFirstResponder:", + "_setExplicitlyCannotAdd:insert:remove:", + "_setExplicitlyCannotAdd:remove:", + "_setFault:", + "_setFaultHandler:", + "_setFetchIndex:", "_setFileSpecifier:", + "_setFileURL:", "_setFinalSlideLocation:", "_setFirstColumnTitle:", - "_setFirstMoveableItemIndex:", - "_setFlags:for:", "_setFloat:ifNoAttributeForKey:", - "_setFloatingPointFormat:left:right:", "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:", "_setFocusRingNeedsDisplay", + "_setFocusRingNeedsDisplayIfNecessary", "_setFont:", "_setFont:forCell:", "_setFontPanel:", "_setForceActiveControls:", "_setForceFixAttributes:", "_setForceItemsToBeMinSize:", - "_setFormDelegate:", - "_setFormats:", + "_setForceNotKeyWindowForInputContext:", + "_setForceOriginalFontBaseline:", + "_setFormInfoFromRequest:", "_setFrame:", "_setFrameAfterMove:", "_setFrameAutosaveName:changeFrame:", @@ -4098,107 +5227,143 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_setFrameSavedUsingTitle:", "_setFrameSize:", "_setFrameSize:forceScroll:", - "_setFrameUsingName:domain:", "_setFrameUsingName:domain:force:", - "_setGlyphGenerator:", + "_setGenericValue:forKey:withIndex:flags:", "_setGroupIdentifier:", + "_setHasBorder:", "_setHasCustomSettings:", "_setHasHorizontalScroller:", + "_setHasObservers:", + "_setHasRetainedStoreResources:", "_setHasSeenRightToLeft:", - "_setHasShadow:", "_setHaveNoIconForIconURL:", "_setHelpCursor:", "_setHelpKey:forObject:", "_setHidden:", "_setHiddenExtension:", - "_setHiddenViewsTint:", + "_setHideWithoutResizingWindowHint:", "_setHidesOnDeactivateInCache:forWindow:", "_setHighlighted:displayNow:", - "_setHorizontallyCentered:", + "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:", + "_setHorizontalScrollerHidden:", "_setIcon:forIconURL:", "_setIconRef:", "_setIconURL:", "_setIconURL:forURL:", "_setIconURL:withType:", + "_setIgnoreForKeyViewLoop:", "_setIgnoringScrolling:", "_setImage:", + "_setImage:fromWindow:", + "_setImageAndNotifyTarget:", + "_setImageForState", + "_setImageNumber:", "_setImpactsWindowMoving:", - "_setIncludeNewFolderButton:", - "_setIndexNeedsRefresh:", - "_setIndexPath:", + "_setInScaledWindow:", + "_setIndex:", "_setIndicatorImage:", "_setInitialColumnContentSizeOfColumn:", "_setInitialFirstResponder:autoGenerated:", "_setInitialNameFieldContentsFromPosixName:", + "_setInitialized:", + "_setInitiatedDrag:", + "_setInputs:", "_setInsertionPointDisabled:", "_setInstance:forIdentifier:", "_setInt:ifNoAttributeForKey:", "_setIntegerValue:forKey:", "_setInteriorNextKeyView:", + "_setInternalLoadDelegate:", + "_setInverseManyToMany:", + "_setInverseRelationship:", + "_setIsActive:", "_setIsClientRedirect:", - "_setIsDefaultFace:", + "_setIsEditable:", + "_setIsExpanded:", "_setIsGrabber:", - "_setIsInUILayoutMode:", - "_setIsUserRemovable:", + "_setIsSmallCapsRenderer:", "_setIsWhite:", "_setItemViewer:", "_setJavaClassesLoaded", "_setJobDisposition:savePath:inPrintSession:printSettings:", "_setJustOpenedForTargetedLink:", - "_setKey:", - "_setKey:forAppleEventCode:", - "_setKeyBindingMonitor:", + "_setKeepCacheWindow:", "_setKeyCellAtRow:column:", "_setKeyCellFromBottom", "_setKeyCellFromTop", "_setKeyCellNeedsDisplay", + "_setKeySegment:", + "_setKeyViewGroupBoundaryNeedsRecalc:", + "_setKeyViewLoopNeedsRecalc:", + "_setKeyViewRedirectionDisabled:", + "_setKeyViewSelectionDirection:", "_setKeyWindow:", "_setKeyboardFocusRingNeedsDisplay", + "_setKeyboardFocusRingNeedsDisplayDuringLiveResize", "_setKeyboardFocusRingNeedsDisplayForTabViewItem:", "_setKeyboardLoopNeedsUpdating:", + "_setKind:", "_setKnobThickness:usingInsetRect:", + "_setLabel:", "_setLang:", - "_setLanguageModel:", "_setLastCheckedRequest:", "_setLastDragDestinationOperation:", "_setLastGuess:", - "_setLastImageTag:", + "_setLastSnapshot:", "_setLastVisitedTimeInterval:", + "_setLazyDestinationEntityName:", "_setLength:ofStatusItemWindow:", "_setLevel", "_setLevelForAllDrawers", "_setLineBorderColor:", + "_setLineBreakMode:", + "_setLineColor:", "_setLiveResize:", "_setLiveResizeImageCacheingEnabled:", "_setLoadType:", + "_setLoadedCookiesWithoutSaving:", "_setLoading:", + "_setLocalName:", + "_setLocalizationPolicy:", "_setLocationTemporary:", "_setMIMEType:", "_setMainDocumentError:", - "_setMainMenu:", "_setMainWindow:", + "_setMaintainingInverse:", + "_setManagedObjectContext:", + "_setManagedObjectModel:", + "_setMap:", "_setMarginHeight:", "_setMarginWidth:", "_setMarkedText:selectedRange:forInputManager:", "_setMarkedWidth:", - "_setMe", + "_setMenu:", "_setMenuClassName:", "_setMenuName:", + "_setMessageAndInformativeText", + "_setMetrics:", + "_setMinColumnLayoutMinRequiredVisibleWidth:", "_setMinPickerContentSize:", "_setMinSize:", "_setMiniImageInDock", "_setMinimizeOnDoubleClick", + "_setModal:", "_setModalInCache:forWindow:", "_setModalWindowLevel", + "_setModelKeys:triggerChangeNotificationsForDependentKey:", + "_setModified:", + "_setModifier:", "_setMouseActivationInProgress:", + "_setMouseDownEvent:", "_setMouseDownFlags:", "_setMouseEnteredGroup:entered:", "_setMouseMovedEventsEnabled:", "_setMouseTrackingForCell:", "_setMouseTrackingInRect:ofView:", - "_setMultiValueIfNeeded:withLabel:inMultiValue:", "_setMultipleValue:forKey:atIndex:", + "_setMultipleValue:forKey:atIndexPath:", "_setMultipleValue:forKeyPath:atIndex:", + "_setMultipleValue:forKeyPath:atIndexPath:", "_setName:", "_setNameFieldContentsFromPosixName:", "_setNeedToFlushGlyph:", @@ -4210,35 +5375,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_setNeedsDisplayForFirstResponderChange", "_setNeedsDisplayForItemIdentifierSelection:", "_setNeedsDisplayForItemViewerSelection:", + "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:", "_setNeedsDisplayForSelectedCells", "_setNeedsDisplayForSortingChangeInColumn:", "_setNeedsDisplayForTabViewItem:", + "_setNeedsDisplayIfTopLeftChanged", "_setNeedsDisplayInColumn:", "_setNeedsDisplayInColumn:includeHeader:", "_setNeedsDisplayInColumn:row:", + "_setNeedsDisplayInColumnRange:includeHeader:", + "_setNeedsDisplayInPrimarySortColumns", + "_setNeedsDisplayInPrimarySortColumnsIfNecessary", + "_setNeedsDisplayInRectForLiveResize:", "_setNeedsDisplayInRow:", "_setNeedsDisplayInRow:column:", - "_setNeedsDisplayLaterHack", "_setNeedsHighlightedTextHint:", "_setNeedsModeConfiguration:", "_setNeedsModeConfiguration:itemViewers:", + "_setNeedsRecalc", "_setNeedsRedrawBeforeFirstLiveResizeCache:", - "_setNeedsTiling:", - "_setNeedsToReloadCoveredChars:", + "_setNeedsStateUpdate:", + "_setNeedsTiling", "_setNeedsToRemoveFieldEditor:", "_setNeedsToResetDragMargins:", "_setNeedsToUseHeartBeatWindow:", "_setNeedsViewerLayout:", "_setNeedsViewerLayout:itemViewers:", "_setNeedsZoom:", - "_setNetPathsDisabled:", "_setNewPreferedColumnWidth:", "_setNextKeyBindingManager:", "_setNextKeyViewFor:toNextKeyView:", "_setNextSizeAndDisplayMode", - "_setNextToolbarDisplayMode:", "_setNextToolbarSizeAndDisplayMode:", - "_setNextToolbarSizeMode:", "_setNoVerticalAutosizing:", "_setNonactivatingPanel:", "_setNumVisibleColumns:", @@ -4250,275 +5418,328 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_setObject:forProperty:usingDataSize:", "_setObject:ifNoAttributeForKey:", "_setObject:inReceiver:", - "_setObjectClassName:", "_setObjectHandler:", + "_setObjectID:", + "_setObjects:", "_setOneShotIsDelayed:", "_setOpenRecentMenu:", + "_setOptions:forBinding:", + "_setOptions:withBindingInfo:", "_setOrderDependency:", "_setOrientation:inPageFormat:", + "_setOriginalFileInfoFromFileAttributes:", + "_setOriginalSnapshot:", + "_setOriginalString:range:", + "_setOverflowHeaderCellPrototype:", "_setOverrideEncoding:", "_setOwnedByPopUp:", - "_setOwnsRealWindow:", + "_setPM:", "_setPageFormat:", "_setPageGenerationOrder:", "_setPaperName:inPrintSession:pageFormat:", "_setPaperSize:inPrintSession:inPageFormat:", "_setParameter:forOption:withBindingInfo:", + "_setParent:", "_setParentWindow:", + "_setParserError:", "_setPartialKeysWithTableBinder:forAllTableColumnBindersOfTableView:", "_setPartialKeysWithTableBinder:forTableColumnBinder:", + "_setPeerCertificateChain:", + "_setPendingDeletion:", + "_setPendingInsertion:", + "_setPendingUpdate:", + "_setPersistentStore:", + "_setPlaceholderAttributedString:", + "_setPlaceholderString:", "_setPolicyDataSource:", "_setPostsFocusChangedNotifications:", + "_setPrefix:", "_setPressedTabViewItem:", "_setPreventsActivation:", "_setPreviewFont:", - "_setPreviousCurrentDirectoryNode:", "_setPreviousNibBindingConnector:", - "_setPreviousRootNode:", "_setPreviousSizeAndDisplayMode", "_setPreviousToolbarSizeAndDisplayMode:", - "_setPrimaryIdentifier:", "_setPrimaryLoadComplete:", + "_setPrimitiveValue:forKey:", + "_setPrintEventRetrofitInfo:", "_setPrintSettings:", "_setPrinter:inPrintSession:", - "_setPrinting:pageWidth:", + "_setPrinting:minimumPageWidth:maximumPageWidth:adjustViewSize:", "_setProperty:forKey:", "_setProvisionalDataSource:", - "_setPullsDown:", "_setRTFDFileWrapper:", + "_setReadOnly:", + "_setRealDelegate:", "_setRealTitle:", "_setRealm:forURL:", "_setReceiveHandlerRef:", - "_setRecents", - "_setRecordsBinderChanges:", + "_setRecents:", "_setRegisteredForChildNotifications:", + "_setRegistryAttributes:", "_setRelativeOrdering:", "_setReorderResizeImageCache:", "_setRepresentation:", "_setRepresentationListCache:", "_setRepresentedFilename:", "_setRequest:", + "_setResizeControlNeedsDisplay", "_setResizeWeighting:", "_setResourceForkReferenceNumber:", "_setResponse:", + "_setRevealoversDirty:", + "_setRootNode:makeHistory:notify:", "_setRotatedFromBase:", "_setRotatedOrScaledFromBase:", - "_setRotation:forGlyphAtIndex:", + "_setRowHeaderTableColumn:", + "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:", + "_setSQLType:", "_setScaleFactor:", + "_setScriptErrorExpectedType:", "_setScriptErrorFromKVCException:", + "_setScriptErrorOffendingObjectDescriptor:", "_setScroller:", - "_setScrollerSize:", "_setSelectedCell:", "_setSelectedCell:atRow:column:", - "_setSelectedMember:withHistory:", - "_setSelectedMembers:withHistory:", - "_setSelectionFromPasteboard:", - "_setSelectionIndexes:", - "_setSelectionNeedsRefresh", + "_setSelectedNodes:", + "_setSelectedScopeLocationNodes:", "_setSelectionRange::", - "_setSelectionString:", "_setSelectorName:", + "_setServerModificationDateString:", "_setShadowParameters", - "_setSharedDocumentController:", + "_setShadowStyle:", + "_setSharedIdentifier:", "_setSheet:", - "_setShouldCreateRenderers:", "_setShouldPostEventNotifications:", "_setShowAlpha:andForce:", "_setShowOpaqueGrowBox:", - "_setShowPrintPanel:", - "_setShowProgressPanel:", + "_setShowOpaqueGrowBoxForOwner:", "_setShowingModalFrame:", "_setShowsAllDrawing:", "_setSidebarVolumesNode:favoritesNode:", "_setSidebarWidth:maintainSnap:constrain:", + "_setSingleChild:", "_setSingleValue:forKey:", "_setSingleValue:forKeyPath:", - "_setSortable:showSortIndicator:ascending:priority:", - "_setSound:", - "_setSpecialPurposeType:", + "_setSlotIfDefault:", + "_setSortable:showSortIndicator:ascending:priority:highlightForSort:", + "_setSpotlightedAttachment:", "_setStartSubelementFromDescriptor:", "_setState:", - "_setStatesImmediatelyInObject:index:triggerRedisplay:", + "_setStatesImmediatelyInObject:mode:triggerRedisplay:", "_setStoredInPageCache:", "_setStringValue:forKey:", "_setSubmenu:", - "_setSuiteName:forAppleEventCode:", + "_setSuperentity:", "_setSuperview:", - "_setSuppressAutoenabling:", "_setSurface:", - "_setSweeperInterval:", - "_setSynonymTable:inSuite:", "_setTabRect:", "_setTabState:", "_setTabView:", "_setTarget:", "_setTargetProcess:", - "_setTempHidden:", "_setTextAttributeParaStyleNeedsRecalc", + "_setTextColorInObject:mode:compareDirectly:toTextColor:", + "_setTextContainer:", "_setTextFieldStringValue:", - "_setTextShadow:", "_setTexturedBackground:", - "_setThousandSeparatorNoConsistencyCheck:", "_setThumbnailView:", "_setTitle:", "_setTitle:ofColumn:", "_setTitleFixedPointWindowFrame:display:animate:", "_setTitleNeedsDisplay", + "_setToOneSlot:objectID:", + "_setTokenFieldDelegate:", + "_setToolTip:", "_setToolTip:forView:cell:rect:owner:ownerIsDisplayDelegate:userData:", "_setToolbar:", + "_setToolbarItem:", "_setToolbarShowHideResizeWeightingOptimizationOn:", "_setToolbarView:", "_setToolbarViewWindow:", "_setTopLevelFrameName:", "_setTrackingHandlerRef:", - "_setTrackingRect:inside:owner:userData:", + "_setTrackingRect:inside:owner:userData:useTrackingNum:", + "_setTrackingRect:inside:owner:userData:useTrackingNum:install:", "_setTrackingRects", + "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:", "_setTriggeringAction:", "_setUIConstraints:", + "_setURI:", "_setURL:", - "_setUndoMenuitemAction:target:title:", - "_setUpAccessoryViewWithEditorTypes:exportableTypes:selectedType:enableExportable:", + "_setUndoRedoInProgress:", + "_setUnicodeInputEventReceived:", "_setUpAppKitCoercions", "_setUpAppKitTranslations", "_setUpDefaultTopLevelObject", "_setUpFoundationCoercions", "_setUpFoundationTranslations", "_setUpOperation:helpedBy:", - "_setUpPlatformLineLayoutContext:forGlyphRange:isParagraph:", "_setUpTextField:", - "_setUpdated:", + "_setUseCellFieldEditorUndo:", "_setUseModalAppearance:", - "_setUseSimpleTrackingMode:", - "_setUsesFastJavaBundleSetup:", "_setUsesQuickdraw:", - "_setUsesSmallTitleFont:", - "_setUsesToolTipsWhenTruncated:", "_setUtilityWindow:", "_setValidatedPosixName:", - "_setValue:forKeyPath:ofObject:atIndex:validateImmediately:raisesForNotApplicableKeys:error:", + "_setValue:forBinding:errorFallbackMessage:", + "_setValue:forKey:", + "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:", "_setValue:forKeyPath:ofObjectAtIndex:", - "_setVerticallyCentered:", + "_setValue:forKeyPath:ofObjectAtIndexPath:", + "_setValue:type:forParameter:", + "_setValueWithSelector:", + "_setVerticalScrollerHidden:", "_setVisible:", "_setVisibleInCache:forWindow:", "_setVisibleRectOfColumns:", "_setWaitingForCallback:", - "_setWantsCellClipTips:", + "_setWantsHideOnDeactivate:", "_setWantsKeyboardLoop:", + "_setWantsRevealovers:", "_setWantsToActivate:", "_setWantsToBeOnMainScreen:", "_setWantsToDestroyRealWindow:", "_setWantsToolbarContextMenu:", "_setWebFrame:", "_setWebView:", - "_setWin32MouseActivationInProgress:", + "_setWidth:", "_setWindow:", "_setWindowContextForCurrentThread:", "_setWindowDepth:", "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", "_setWindowNumber:", "_setWindowTag", + "_setWindowsNeedUpdateForSecondaryThread:", "_setWithOffset:", "_setWords:inDictionary:", - "_setWriteIndexPath:", "_setWritesCancelled:", "_settings", "_setup", - "_setupBidiSettingsInGlyphVector:", + "_setupAnimationInfo", "_setupBoundsForLineFragment:", "_setupButtonImageAndToolTips", - "_setupCallbacks", - "_setupDefaultTextViewContent", - "_setupFileModeButtons", - "_setupHistoryButtons", + "_setupCallbacksSavingToFile:", + "_setupFileListModeControl", + "_setupFont", + "_setupForWindow:", + "_setupHistoryControl", "_setupIdle", - "_setupMessagePort", "_setupOpenPanel", + "_setupProfileUI", "_setupRootForPrinting:", "_setupRunLoopTimer", + "_setupSearchParts", "_setupSegmentSwitchForControl:firstImage:secondImage:action:", "_setupSurfaceAndStartSpinning:", - "_setupToolTipsForView:", "_setupToolbar", "_setupUI", "_setupWindow", + "_shadowAsString:", "_shadowFlags", - "_shadowTabColorAtIndex:", "_shadowType", "_shapeMenuPanel", - "_sharedData", + "_sharedFieldEditor", "_sharedSecureFieldEditor", + "_sharedSecureFieldEditorCreate", "_sharedTextCell", "_sharedWebFormDelegate", "_sheetDidDismiss:returnCode:contextInfo:", "_sheetDidEnd:returnCode:contextInfo:", "_sheetDidEndShouldDelete:returnCode:contextInfo:", + "_sheetEffect", + "_sheetEffectInset", "_sheetHeightAdjustment", + "_shiftBucketDataFromIndex:by:insertionData:", "_shiftDown::::", "_shortNameFor:", "_shouldAbortMouseDownAfterDragAttempt:", + "_shouldAddObservationForwarders", + "_shouldAddObservationForwardersForKey:", "_shouldAllowAutoCollapseItemsDuringDragsDefault", "_shouldAllowAutoExpandItemsDuringDragsDefault", "_shouldAlwaysUpdateDisplayValue", + "_shouldAnimateColumnScrolling", "_shouldAttemptDroppingAsChildOfLeafItems", "_shouldAttemptIdleTimeDisposeOfLiveResizeCacheWithFrame:", "_shouldAttemptOriginLoad", "_shouldAutoscrollForDraggingInfo:", + "_shouldBeRolloverTracking", "_shouldBeTreatedAsInkEventInInactiveWindow:", + "_shouldBeginEditingInDOMRange:", "_shouldCoalesceTypingForText::", + "_shouldComputeRevealovers", "_shouldContinueExpandAtLevel:beganAtLevel:", - "_shouldCreateRenderers", + "_shouldDeleteRange:", "_shouldDispatch:invocation:sequence:coder:", - "_shouldDisplayNodeInList:", + "_shouldDrawBorder", "_shouldDrawFocus", + "_shouldDrawFocusIfInKeyWindow", "_shouldDrawRightSeparatorInView:", "_shouldDrawSelectionIndicator", + "_shouldDrawSelectionIndicatorForItem:", "_shouldDrawTwoBitGray", + "_shouldEndEditingInDOMRange:", + "_shouldExecuteDelayedAutocomplete", "_shouldForceShiftModifierWithKeyEquivalent:", + "_shouldHandleAsGotoForTypedString:", "_shouldHaveBlinkTimer", "_shouldHaveResizeCursorAtPoint:", - "_shouldInsertHyphenGlyph:atIndex:", + "_shouldHeaderShowSeparatorForColumn:", + "_shouldInsertFragment:replacingDOMRange:givenAction:", "_shouldInstallToolTip:", "_shouldLiveResizeUseCachedImage", "_shouldPostEventNotifications", "_shouldPowerOff", "_shouldReloadForCurrent:andDestination:", + "_shouldReloadToHandleUnreachableURLFromRequest:", + "_shouldReplaceSelectionWithText:givenAction:", "_shouldRepresentFilename", "_shouldRequireAutoCollapseOutlineAfterDropsDefault", + "_shouldRestartMovementTracking", + "_shouldSelectTabViewItem:", "_shouldSetHighlightToFlag:", + "_shouldShowFirstResponderAtRow:column:ignoringWindowKeyState:", "_shouldShowFirstResponderForCell:", "_shouldShowFocusRing", + "_shouldShowFocusRingInView:", "_shouldShowNode:", + "_shouldShowRollovers", "_shouldStealHitTestForCurrentEvent", + "_shouldStretchWindowIfNecessaryForUserColumnResize", "_shouldTerminate", "_shouldTerminateWithDelegate:shouldTerminateSelector:", + "_shouldTrack", "_shouldTransformMatrix", "_shouldTreatURLAsSameAsCurrent:", "_shouldUseAliasToLocate:", + "_shouldUseParensWithDescription", "_shouldUseSecondaryHighlightColor", + "_shouldValidateMenuFormRepresentation", "_show:", - "_showAs", "_showBorder", "_showDragError:forFilename:", "_showDrawRect:", - "_showDropShadow", - "_showField:", - "_showField:identifier:", + "_showEffects", "_showHideToolbar:resizeWindow:animate:", "_showKeyboardUILoop", + "_showLanguagePopUp", "_showOpaqueGrowBox", "_showOpenHandCursor:", - "_showTextColorImmediatelyInObject:index:", + "_showQueryProgress", + "_showTextColorImmediatelyInObject:mode:", "_showToolTip", "_showToolTip:", "_showToolbar:animate:", "_showToolbarWithAnimation:", "_showingFocusRingAroundEnclosingScrollView:", "_showsAllDrawing", + "_showsDontWarnAgain", "_showsNode:", - "_shutDrawer", - "_sidebar", + "_sideTitlebarWidth", + "_sideTitlebarWidth:", "_sidebarView", "_signatureValid", + "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:", "_simpleDeleteGlyphsInRange:", "_simpleDescription", "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:", @@ -4527,59 +5748,70 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_singleMutableArrayValueForKey:", "_singleMutableArrayValueForKeyPath:", "_singleValueForKey:", - "_singleValueForKey:operationKey:", "_singleValueForKeyPath:", - "_singleValueForKeyPath:operationKey:", + "_singleValueForKeyPath:operationType:", "_size", - "_sizeAllDrawers", "_sizeAllDrawersWithRect:", + "_sizeChanged", "_sizeDocumentViewToColumnsAndAlignIfNecessary:", "_sizeDownIfPossible", - "_sizeEditDone:", + "_sizeHeightBucket:withSize:toFitSize:", "_sizeHorizontallyToFit", - "_sizeLastColumnToFitIfNecessary", "_sizeListChanged:", "_sizeMatrixOfColumnToFit:", "_sizeModeIsValidForCurrentDisplayMode:", "_sizeOfTitlebarFileButton", + "_sizeRowHeaderToFitIfNecessary", + "_sizeTableColumnsToFitForAutoresizingWithStyle:", + "_sizeTableColumnsToFitForColumnResizeWithStyle:", + "_sizeTableColumnsToFitWithStyle:", + "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:", "_sizeToFit:", "_sizeToFitColumn:withEvent:", "_sizeToFitColumn:withSizeToFitType:", "_sizeToFitColumnMenuAction:", - "_sizeToFitIfNecessary", - "_sizeToFitText", + "_sizeToFitForUserColumnResize", "_sizeVerticalyToFit", "_sizeWindowForPicker:", "_sizeWithRect:", "_sizeWithSize:", - "_sizeWithSize:attributes:", - "_slideWithDelta:beginOperation:endOperation:", + "_sizeWithSize:attributedString:", + "_smallCapsFont", + "_smallCapsRenderer", "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:", - "_smallestEncodingInCFStringEncoding", "_snapPositionConstrainedResizeSplitView:", "_snapSplitPosition:forItem:snapIndex:", "_sniffForContentType", "_sortCollections", "_sortDescriptors", - "_sortLabelsUsing:", "_sortNodes:", + "_sortObjects:", "_sortOrderAutoSaveNameWithPrefix", - "_sound", + "_sortedAETEElementClassDescriptions:", + "_sortedAETEPropertyDescriptions:", + "_sortedEdges", + "_spanClassForAttributes:inParagraphClass:spanClass:flags:", "_speakingString", - "_specialControlView", - "_specialPurposeType", "_specialServicesMenuUpdate", - "_specifierTestFromDescriptor:inCommandConstructionContext:", + "_specifiedStyleForElement:", + "_specifierTestFromDescriptor:", "_spellServers", "_spellingGuessesForRange:", "_spellingSelectionRangeForProposedRange:", + "_spotlightedAttachment", + "_sqlCore", + "_sqlTypeForAttributeDescription:", "_standardCommonMenuFormRepresentationClicked:", "_standardCustomMenuFormRepresentationClicked:", "_standardFrame", + "_standardFrameForDrawersInRect:", "_startAnimation", "_startAnimationWithThread:", "_startAutoExpandingItemFlash", + "_startAutoscrollTimer:", + "_startBatchWindowAccumulation:", "_startChanging", + "_startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:", "_startDraggingUpdates", "_startDrawingThread:", "_startHeartBeating", @@ -4590,18 +5822,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_startLiveResizeAsTopLevel", "_startLiveResizeCacheOK:", "_startLiveResizeForAllDrawers", + "_startLoadWithRequest:delegate:", "_startLoading", "_startLoading:", "_startMove", + "_startObservingModelObject:", + "_startObservingSelectionIfNecessary", + "_startObservingUndoManagerNotifications", + "_startOrContinueAnimationIfNecessary", "_startRunMethod", "_startRunWithDuration:firingInterval:", - "_startSearch", + "_startRunningNonBlocking", + "_startSQL:", "_startSheet", "_startSound", + "_startTable", + "_startTableCell", "_startTearingOffWithScreenPoint:", "_startTimer:", + "_startingWindowForSendAction:", "_startingWithDocument:continueSavingAndClosingAll:contextInfo:", - "_startupThread", "_stashCollapsedOrigin:", "_stashOrigin:", "_stashedOrigin", @@ -4609,27 +5849,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_stateMarkerForValue:", "_statusItemWithLength:withPriority:", "_stepInUpDirection:", + "_stepperCell", + "_stepperCellValueChanged:", "_stopAnimation", + "_stopAnimation:", "_stopAnimationWithWait:", "_stopAutoExpandingItemFlash", + "_stopAutoscrollTimer", "_stopDraggingUpdates", + "_stopGotoWithCode:", "_stopLoading", "_stopLoadingInternal", "_stopLoadingWithError:", "_stopModal:", - "_stopObservingValue:andStartObservingValue:ofObject:", + "_stopObservingModelObject:", + "_stopObservingSelectionIfNecessary", + "_stopObservingUndoManagerNotifications", "_stopPeriodicEventsForSource:", "_stopRun", "_stopSearchTimer", "_stopTearingOff", "_stopTimerIfRunningForToolTip:", + "_stopsValidationAfterFirstError:", + "_storeClassForStoreType:", "_storeCurrentDirectory", "_storeExpandedFrameSize", "_storeExpandedState", "_storeFileListMode", + "_storeMetadataForSaving", + "_storeNewColorInColorWell:", + "_storeOrderedByFileProperty:orderedAscending:", "_storeRootDirectory", + "_storeTypeForStore:", "_storeUserSetHideExtensionButtonState", - "_storedInPageCache", + "_storeZone", + "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:", + "_string:objectValueTokenRangeForIndex:", + "_string:tokenRangeForIndex:", + "_string:tokenizeIndex:inTextStorage:", "_stringByReplacingChar:withChar:inString:", "_stringByResolvingSymlinksInPathUsingCache:", "_stringByStandardizingPathUsingCache:", @@ -4637,64 +5894,98 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_stringByTranslatingFSSpecDescriptor:toType:inSuite:", "_stringByTranslatingTextDescriptor:toType:inSuite:", "_stringByTrimmingLeadingDot", + "_stringForDatePickerElement:", "_stringForEditing", + "_stringForNode:property:", "_stringRepresentation", "_stringSearchParametersForListingViews", "_stringToWrite", "_stringValueForKey:", "_stringWithData:", + "_stringWithDocumentTypeStringAndMarkupString:", "_stringWithSavedFrame", - "_stringWithSeparator:atFrequency:", "_stripAttachmentCharactersFromAttributedString:", "_stripAttachmentCharactersFromString:", + "_styleDeclarationImpl", + "_styleDeclarationWithImpl:", + "_styleElementImpl", + "_styleForAttributeChange:", + "_styleFromColorPanelWithSelector:", + "_styleFromFontAttributes:", + "_styleFromFontManagerOperation", + "_styleRuleImpl", + "_styleSheetListImpl", + "_styleSheetListWithImpl:", "_subImageFocus", + "_subclassDescriptionsForDescription:", "_subclassManagesData", - "_subrowEqualing:inArray:", + "_subentitiesIncludes:", + "_subentityNamed:", + "_subpredicateDescription:", + "_subresourceURLs", "_subsetDescription", - "_substituteFontName:flag:", - "_substituteGlyphWithPlatformGlyphArray:length:glyphFlushCheck:", + "_substituteEntityAndProperty:inString:", + "_substituteFontForCharacters:length:families:", + "_substituteFontForString:families:", + "_subtextStorageFromRange:", "_subtractColor:", + "_subtreeDescriptionWithDepth:", "_subviews", + "_subviewsExcludingHiddenViews", "_suggestCompletionsForPartialWordRange:inString:language:", "_suggestGuessesForWord:inLanguage:", - "_suiteNameForAppleEventCode:", - "_summationRectForFont", + "_suggestedControllerKeyForController:binding:", + "_suiteDescriptions", + "_suiteDescriptionsByName", + "_sumForKeyPath:", "_superviewClipViewFrameChanged:", - "_supportsCertificatePolicy:", + "_supportedMIMETypes", + "_supportsGetValueWithNameForKey:perhapsByOverridingClass:", + "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:", "_supportsMinAndMax", + "_supportsVariableHeightRows", "_supposedNumberOfItems", + "_suppressNotification", + "_suppressNotification:", "_surface", "_surfaceBounds", "_surfaceDidComeBack:", "_surfaceNeedsUpdate:", "_surfaceWillGoAway:", - "_surrogateFontName:", - "_surroundValueInString:withLength:andBuffer:", - "_swap", - "_swapName", + "_suspendIfTopHandling:", + "_suspendLoading", + "_swapFileListKeyViewFrom:to:", "_sweeperInterval", - "_switchImage", "_switchImage:andUpdateColor:", "_switchInitialFirstResponder:lastKeyView:forTabViewItem:", "_switchTabViewItem:oldView:withTabViewItem:newView:initialFirstResponder:lastKeyView:", + "_switchToAppropriateModeForColorIfNecessary:", "_switchToPicker:", "_switchToPlatformInput:", "_switchViewForToolbarItem:", "_syncAllExpandedNodes", + "_syncCookies:", "_syncItemSet", + "_syncItemSetAndUpdateItemViewersWithSEL:setNeedsModeConfiguration:sizeToFit:setNeedsDisplay:updateKeyLoop:", "_syncLoop:", + "_syncScopeButtons", + "_syncScopeLayout", "_syncScrollerSizeOfColumn:", "_syncSwatchSizeToSavedNumVisibleRows", + "_syncToChangedToolbar:itemInserted:", + "_syncToChangedToolbar:itemMoved:", + "_syncToChangedToolbar:itemRemoved:", + "_syncToChangedToolbar:toolbarItemUserVisibilityPriorityChanged:", + "_syncToChangedToolbar:toolbarModeChanged:", + "_syncToChangedToolbar:toolbarReplacedAllItems:", + "_syncToolbarItemUserVisibilityPriorityToValues:", "_syncToolbarPosition", - "_syncWithRemoteBuddies", + "_synchronizeExpandedNodesWithOutlineExpandedItems", "_synchronizeTextView:", "_synchronizeTitlesAndColumnsViewVisibleRect", "_synchronizeTitlesAndColumnsViewWidth", "_synchronizeWindowTitles", "_synchronizeWithPeerBindersInArray:", - "_synonymTableInSuite:", - "_synonymTerminologyDictionaryForCode:inSuite:", - "_synonymsInSuite:", "_systemColorChanged:", "_systemColorsChanged:", "_tabHeight", @@ -4703,16 +5994,30 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_tabRectAdjustedForOverlap:", "_tabRectForTabViewItem:", "_tabViewWillRemoveFromSuperview", - "_table", "_tableBinderForTableView:", - "_tableColumnSizeChanged:", + "_tableBinderForTableViewSupportsSorting:", + "_tableCaptionElementImpl", + "_tableCaptionElementWithImpl:", + "_tableCellElementImpl", + "_tableCellElementWithImpl:", + "_tableColElementImpl", + "_tableElementImpl", + "_tableElementWithImpl:", + "_tableRowElementImpl", + "_tableSectionElementImpl", + "_tableSectionElementWithImpl:", + "_tableView:willAddTableColumn:", + "_tableView:willRemoveTableColumn:", "_takeApplicationMenuIfNeeded:", "_takeColorFrom:andSendAction:", "_takeColorFromAndSendActionIfContinuous:", "_takeColorFromDoAction:", - "_takeDownConverterPort", "_takeFocus", + "_takeValuesFromTextBlock:", "_target", + "_targetAndArgumentsAcceptableForMode:", + "_targetBinding", + "_targetBindingBound", "_taskNowMultiThreaded:", "_tempHide:relWin:", "_tempHideHODWindow", @@ -4723,59 +6028,62 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_temporaryFilename:", "_termOneShotWindow", "_termWindowIfOwner", + "_termedDescriptionWithTabCount:propertyKindName:", "_terminate", "_terminate:", "_terminateSendShould:", - "_terminologyDictionaryForToOneRelationship:", - "_terminologyRegistry", - "_terminologyRegistryForSuite:", - "_testBinderConfiguration:repairBindings:", + "_testPartUsingDestinationFloatValue:", "_testWithComparisonOperator:object1:object2:", + "_textAreaElementImpl", "_textAttributes", + "_textColorWithMode:", "_textDidEndEditing:", "_textDimColor", + "_textFieldWithStepperCellSize", + "_textFieldWithStepperKeyDown:inRect:ofView:", + "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:", "_textHighlightColor", - "_textLength", + "_textImpl", "_textSizeMultiplierChanged", + "_textSizeMultiplierFromWebView", + "_textTransform", "_textViewOwnsTextStorage", "_textureImage", "_texturePattern", + "_theMap", "_themeContentRect", "_themeTabAndBarArea", - "_thousandChar", "_threadContext", - "_threadedImportTipCards", - "_threadedSave:", - "_thumbnailView", - "_tightenGlyphVector:delta:maxWidth:", + "_throwIfNotEditable", + "_tidyWithData:error:isXML:", + "_tile", "_tile:", + "_tileAndRedisplayAll", "_tileContinuousScrollingBrowser", "_tileNonContinuousScrollingBrowser", - "_tileTitlebar", + "_tileTitlebarAndRedisplay:", "_timeOfLastCompletedLoad", - "_timeRemaining", "_timedAdjustTextControl:", - "_timedLayout:", "_timestamp", "_title", - "_title:", "_titleCellHeight", "_titleCellHeight:", "_titleCellOfColumn:", "_titleCellSize", "_titleCellSizeForTitle:styleMask:", - "_titleIsRepresentedFilename", + "_titleElementImpl", "_titleRectForCellFrame:", "_titleRectForTabViewItem:", "_titleSizeWithSize:", - "_titleWidth", "_titlebarHeight", "_titlebarHeight:", "_titlebarTitleRect", - "_tmpPasteboardWithCFPasteboard:", - "_toOneRelationshipTerminologyKeys", + "_toManyInformation", + "_toOneRange", + "_toggleBold", "_toggleCollapsedSplitView", "_toggleFrameAutosaveEnabled:", + "_toggleItalic", "_toggleLogging", "_toggleOrderedFrontMost:", "_toggleOrderedFrontMostWillOrderOut", @@ -4783,43 +6091,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_toggleShown:", "_toggleToolbarConfigPanel:", "_toggleTypographyPanel", + "_toggleUserVisibilityPriority:", + "_tokenAttachmentDisplayAttributeDidChange", + "_tokenAttachmentForString:", + "_tokenizeDirtyTokens", + "_tokensFromCharacterRange:inAttributedString:includePlainText:includeAttachments:asRepresentedObjects:", + "_tokensFromPasteboard:", + "_toolTipManagerWillRecomputeToolTipsByRemoving:adding:", + "_toolTipRectForCell:withFrame:", "_toolTipTimer", "_toolbar", "_toolbarAttributesChanged:", + "_toolbarAuxiliary:", "_toolbarBackgroundColor", "_toolbarButtonIsClickable", "_toolbarButtonOrigin", "_toolbarCommonBeginInit", "_toolbarCommonFinishInit", - "_toolbarContentsAttributesChanged:", - "_toolbarContentsChanged:", "_toolbarFrameSizeChanged:oldSize:", - "_toolbarInsertedNewItemNotification:", "_toolbarIsHidden", "_toolbarIsInTransition", "_toolbarIsShown", "_toolbarItemCommonInit", - "_toolbarLabelFontOfSize:", - "_toolbarLabelFontSize", - "_toolbarModeChangedNotification:", - "_toolbarMovedItemNotification:", "_toolbarPatternPhase", "_toolbarPillButtonClicked:", "_toolbarRegisterForNotifications", - "_toolbarRemovedItemNotification:", - "_toolbarReplacedAllItemsNotification:", - "_toolbarSmallLabelFontSize", "_toolbarUnregisterForNotifications", "_toolbarView", "_toolbarViewCommonInit", - "_toolbarWillDeallocNotification:", "_tooltipForColorPicker:", + "_tooltipStringForCell:column:row:point:trackingRect:", + "_topContainerView", "_topCornerSize", "_topHandling", "_topLeftResizeCursor", "_topMenuView", "_topRightResizeCursor", "_topmostChild", + "_totalAdvancementForNativeGlyphs:count:", "_totalHeightOfTableView", "_totalMinimumTabsLengthWithOverlap:", "_totalNominalTabsLengthWithOverlap:", @@ -4827,125 +6136,165 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:", "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:", "_trackButton:forEvent:inRect:ofView:", - "_trackMenuSelection", - "_trackMenuSelectionInMatrix:", "_trackMouse:", - "_trackMouseDownInWindow:withSelectedItem:", + "_trackSelectedItemMenu", "_trackingHandlerRef", + "_trackingSegment", + "_transferCache:", "_transferWindowOwnership", + "_transform", + "_transformDstRect:clipRect:", "_transformerRegistry", "_transitionToCommitted:", "_transitionToLayoutAcceptable", "_transparency", + "_transparentBackground", + "_trapezoidForRun:style:atPoint:", "_trashContainsOrIs:", + "_traverseLibXML2Node:depth:", + "_traverseNode:depth:", "_traverseToSubmenu", "_traverseToSupermenu", "_treeHasDragTypes", - "_triggerRefreshAtEndOfEvent", + "_treeWalkerImpl", + "_treeWalkerWithImpl:filter:", "_triggeringAction", "_trimRecentSearchList", "_trimWithCharacterSet:", - "_trueName", "_truncateToSizeLimit:", "_tryChallenge:", + "_tryCookieLookup:path:secure:result:", "_tryDrop:dropItem:dropChildIndex:", "_tryDrop:dropRow:dropOperation:", "_tryToSendDoubleAction", - "_turnOffVerticalScroller", - "_turnOnVerticalScroller", + "_tryUserDrillIntoHighlightedNode", + "_tryUserMoveToParentNode", "_type", - "_typeAhead:", + "_typeDescription", + "_typeDescriptionForName:", + "_typeDescriptionForName:suiteName:isValid:", + "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:", "_typeDictForType:", - "_typeOfPrintFilter:", + "_typeIdentifierFromCarbonCode:", + "_typeIdentifierFromCocoaName:", "_types", "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:", + "_typesIncludingConversionsFromTypes:", "_typesetterBehavior", - "_typesetterIsBusy", - "_uiClearField:", + "_typographicLeading", + "_typographyPanel", + "_uListElementImpl", "_umask", "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:", + "_uncachedRectHeightOfRow:", "_uncachedSize", "_under", "_underlineIsOn", "_underlineStyleForArgument:", - "_undoManager", + "_undoDelete:", + "_undoManagerCheckpoint:", + "_undoManagerForFieldEditor:defaultUndoManager:", "_undoRedoAttributedSubstringFromRange:", - "_undoRedoChangeProperties", "_undoRedoTextOperation:", "_undoStack", + "_undoUpdate:", "_unformattedAttributedStringValue:", "_ungrowFrameForDropGapStyle", "_unhide", "_unhideAllDrawers", "_unhideChildren", - "_unhideHODWindow", "_unhideSheet", - "_unhookColumnSubviews", - "_uniqueIdForTable:", + "_uninstallActionButtonIfNecessary", + "_unionOfArraysForKeyPath:", + "_unionOfObjectsForKeyPath:", "_uniqueNameForNewSubdocument:", - "_uniqueVolumeNameForName:", + "_uniquer", "_unitsForClientLocation:", "_unitsForRulerLocation:", "_unlock", "_unlockFirstResponder", - "_unlockFocusNoRecursion", "_unlockQuickDrawPort", "_unlockViewHierarchyForDrawing", "_unlockViewHierarchyForModification", - "_unnamedArgumentDescription", + "_unlockfeContext", + "_unnestListAtIndex:markerRange:", "_unobstructedPortionOfRect:", + "_unobstructedVisibleHeaderRectOfColumn:", + "_unobstructedVisibleRectOfColumn:", "_unpinViews:resizeMasks:", "_unregisterDragTypes", + "_unregisterDynamicToolTipManagerInstance:", + "_unregisterForAdapterContextNotifications:", "_unregisterForChildChangedNotifications", + "_unregisterForClipBoundsDidChangeNotificaitonIfNecessaryForSuperview:force:", "_unregisterForCompletion:", + "_unregisterForDocViewFrameAndBoundsChangeNotifications", "_unregisterForMovieIdle", + "_unregisterForNotifications", "_unregisterForToolbarNotifications:", "_unregisterMenuForKeyEquivalentUniquing:", "_unregisterMenuItemForKeyEquivalentUniquing:", + "_unregisterObservedModelKeyPath:", "_unregisterTableColumnBinder:fromTableColumn:", "_unregisterToolbarInstance:", - "_unregisterWithObject:", + "_unregisterViewClassAndRepresentationClassForMIMEType:", "_unresolveTypeAlias:", - "_unscheduleFromCFRunLoop:forMode:", "_unsetFinalSlide", + "_unsetInputs", "_unshowOpenHandCursor:", "_untitledDocumentNumber", + "_untitledNumberForDocument:", "_update", - "_update:", "_updateAllViews", "_updateAntialiasingThreshold", "_updateAppleMenu:", "_updateAttributes", + "_updateAutosavedRecents:", "_updateAutoscrollingStateWithTrackingViewPoint:event:", "_updateButtonState", "_updateButtons", + "_updateCell", + "_updateCellIfNotEditing", + "_updateCellImage:", "_updateCommandDisplayWithRecognizer", + "_updateContent", "_updateContentsIfNecessary", - "_updateCookiesFromServer", - "_updateCountLabelForLayout:", "_updateCrayonsFromColorList", + "_updateCreatedTime:", + "_updateDataCellControlView", "_updateDateColumnDetailLevelWidths", "_updateDateColumnDetailLevels", "_updateDefaultState:forCredential:protectionSpace:", - "_updateDefaults", "_updateDependenciesWithPeerBinders:", + "_updateDocumentMetadata", "_updateDragInsertion:", "_updateDragInsertionIndicatorWith:", + "_updateDraggingInfo:dragInside:", + "_updateDrawer:withVisibilityState:", + "_updateDrawsBackground", "_updateEnabled", + "_updateExpansionButtonEnabledState", "_updateExpirationTimer:", "_updateFileDatabase", "_updateFileNamesForChildren", - "_updateFirstItem", + "_updateFilterPredicate:", + "_updateFirstItemIfNecessary", "_updateFocusRing", + "_updateFontPanel", "_updateForEditedMovie:", - "_updateFormats:", + "_updateForLiveResizeWithOldSize:", + "_updateForVersion:", "_updateFrameWidgets", + "_updateFromDeltas:", "_updateFromPath:checkOnly:exists:", + "_updateFromSnapshot:", + "_updateGlyphEntryForCharacter:glyphID:font:", + "_updateHeaderCellControlView", "_updateHideExtensionButtonStateFromNameFieldContents", "_updateHighlightedItemWithTrackingViewPoint:event:", "_updateIconDatabaseWithURL:", - "_updateIndex", "_updateInputManagerState", + "_updateInvalidatedObjectValue:", "_updateKeychainItem:", "_updateKnownNotVisibleAppleMenu:", "_updateLabel", @@ -4954,94 +6303,95 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_updateLengthAndSelectedRange:", "_updateLoading", "_updateMenuForClippedItems", - "_updateMenuMatrix", + "_updateMenuItemIcon:", "_updateMouseTracking", - "_updateMouseTracking:", "_updateMouseoverWithEvent:", "_updateMouseoverWithFakeEvent", "_updateNameFieldContentsFromHideExtensionButtonState", + "_updateNewFolderButtonEnabledState", "_updateNodeList:byAddingNode:", - "_updateNodeList:byRemovingNode:", + "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:", "_updateNodeList:forChangedProperty:ofNode:", "_updateNumberOfTitleCellsIfNecessary", - "_updateObject:atIndex:ignoreIfNotController:", - "_updateObject:forChangeInController:", + "_updateNumberOfTitleCellsIfNecessary:", + "_updateObject:observedController:observedKeyPath:context:", + "_updateObservingRegistration:", "_updateOkButtonEnabledState", - "_updateParagraphStyleSettings:attributes:", + "_updateOkButtonEnabledStateAndErrorMessage", + "_updateParagraphStyleCache:", "_updatePlaceholdersForBindingInfo:", "_updateProxySettings", "_updateRulerlineForRuler:oldPosition:newPosition:vertical:", "_updateSearchMenu", "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:", - "_updateSelectedItem:forKeyDown:", + "_updateSelectionForInputManager", + "_updateSelectionIndexPaths:", "_updateSelectionIndexes:", + "_updateSizeAndLocation", "_updateSortDescriptors:", + "_updateSubfieldStringsForDateChange", "_updateSubmenuKnownStale:", + "_updateTable", + "_updateTableColumn", + "_updateTableColumn:withWidth:", + "_updateTableRow", "_updateTearOffPositionWithScreenPoint:", - "_updateTitle", + "_updateTextSizeMultiplier", + "_updateTextViewWidth", + "_updateToNewPrefs:", "_updateUIToMatchCachedValues", + "_updateUnprocessedOwnDestinations:", "_updateUsageForTextContainer:addingUsedRect:", "_updateWebCoreSettingsFromPreferences:", "_updateWidgets", + "_updateWindow:withVisibilityState:", + "_updateWindow:withWidth:height:", "_updateWindowsUsingCache", - "_updatedCardWithChanges:", - "_updatingIndex:", - "_url", + "_updatedItemViewsForChildrenOfContainerNodes:", + "_useErrorPresenter:", + "_useFSRefsEvenOnPathBasedFileSystems", "_useIconNamed:from:", "_usePolicy:", "_useSharedKitWindow:rect:", "_useSimpleTrackingMode", "_useSquareToolbarSelectionHighlight", - "_useUserKeyEquivalent", "_userCanChangeSelection", "_userCanEditTableColumn:row:", + "_userCanMoveColumn:toColumn:", "_userCanSelectAndEditTableColumn:row:", - "_userCanSelectColumn:", - "_userCanSelectRow:", + "_userCanSelectColumn:byExtendingSelection:", + "_userCanSelectRow:byExtendingSelection:", "_userChangeSelection:fromAnchorRow:toRow:lastExtensionRow:selecting:", - "_userDefaultsKeysForIB", - "_userDeleteRange:", + "_userClickOrKeyInColumnShouldMaintainColumnPosition", + "_userData", "_userDeselectColumn:", "_userDeselectRow:", "_userInsertItemWithItemIdentifier:atIndex:", - "_userKeyEquivalentForTitle:", - "_userKeyEquivalentModifierMaskForTitle:", - "_userLoggedOut", + "_userLibraryPath", "_userMoveItemFromIndex:toIndex:", "_userRemoveItemAtIndex:", "_userReplaceRange:withString:", "_userResetToDefaultConfiguration", "_userSelectColumn:byExtendingSelection:", "_userSelectColumnRange:toColumn:byExtendingSelection:", + "_userSelectIndexesInRange:toIndex:byExtendingSelection:indexType:", "_userSelectRow:byExtendingSelection:", "_userSelectRowRange:toRow:byExtendingSelection:", "_userSelectTextOfNextCell", "_userSelectTextOfNextCellInSameColumn", "_userSelectTextOfPreviousCell", "_userSetCurrentItemsToItemIdentifiers:", + "_userVisibilityPriorityValues", "_usernameForRealm:URL:", - "_usesATSTypesetter", "_usesCorrectContentSize", "_usesCustomTrackImage", "_usesFastJavaBundleSetup", - "_usesNoRulebook", "_usesPageCache", "_usesProgrammingLanguageBreaks", - "_usesQuickdraw", "_usesScreenFonts", "_usesToolTipsWhenTruncated", - "_usesUnnamedArgumentsInSuite:", - "_usesUserKeyEquivalent", "_usingAlternateHighlightColorWithFrame:inView:", "_usingToolbarShowHideWeightingOptimization", - "_vCard21RepresentationOfRecords:", - "_vCard30RepresentationOfRecords:", - "_vCardKeyForAddressLabel:vCard3:", - "_vCardKeyForEmailLabel:", - "_vCardKeyForGenericLabel:", - "_vCardKeysForPhoneLabel:", - "_vCardRepresentation", - "_vCardRepresentationAsString", "_validDestinationForDragsWeInitiate", "_validFrameForResizeFrame:fromResizeEdge:", "_validIndexes:indexType:", @@ -5050,28 +6400,51 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_validItemViewerBoundsAssumingClipIndicatorShown", "_validRememberedEditingFirstResponder", "_validSize:force:", + "_validateAndCommitTokens", + "_validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:bindingAdaptor:", "_validateAsCommonItem:", "_validateAsCustomItem:", + "_validateAttributes:", "_validateBundleSecurity", + "_validateCarbonCatalogInfo", + "_validateCarbonNameAndCatalogInfo", + "_validateChangesForSave:", "_validateCollections:", + "_validateDeletesUsingTable:withError:", "_validateDisplayValue", "_validateEditing:", "_validateEntryString:uiHandled:", + "_validateEnumeratedProperties:forPropertyType:error:", + "_validateError:forPresentationMethod:", "_validateExtrasButton:", "_validateFaces:", - "_validateGroupsSelection", - "_validateLDAPServer", + "_validateForDelete:", + "_validateForInsert:", + "_validateForSave:", + "_validateForUpdate:", + "_validateIsSymbolicLink", + "_validateLinkTargetCarbonCatalogInfo", + "_validateLinkTargetSpecifier", "_validateMenuFormRepresentation:", "_validateMultipleValue:forKeyPath:atIndex:error:", + "_validateMultipleValue:forKeyPath:atIndexPath:error:", "_validateNewWidthOfColumn:width:", + "_validateOpacitySlider", "_validatePaginationAttributes", + "_validatePath", "_validateSingleValue:forKey:error:", "_validateSingleValue:forKeyPath:error:", "_validateSizes:", + "_validateSpecifier", "_validateStyleMask:", + "_validateTable:kind:exceptions:exhaustive:forSave:", + "_validateToOnes", + "_validateValue:forKey:error:", "_validateValue:forKeyPath:ofObjectAtIndex:error:", + "_validateValue:forKeyPath:ofObjectAtIndexPath:error:", "_validateViewIsInViewHeirarchy:", "_validateVisibleToolbarItems", + "_validateWithSchemaAndReturnError:", "_validatedPosixName", "_validatedStoredUsageForTextContainerAtIndex:", "_value", @@ -5079,56 +6452,77 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:", "_valueClass", "_valueClass:", - "_valueForDepth:", - "_valueForIdentifier:", - "_valueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", + "_valueClassIsSortableWithBinding:", + "_valueForBindingWithResolve:mode:", + "_valueForBindingWithoutResolve:mode:", + "_valueForKey:", + "_valueForKey:withInputs:", + "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:", "_valueForKeyPath:ofObjectAtIndex:", - "_valueInMultiValue:", + "_valueForKeyPath:ofObjectAtIndexPath:", + "_valueForOptionalCocoaAttributeKey:fromElement:", + "_valueForParameter:", + "_valueForRequiredCocoaAttributeKey:fromElement:", + "_valueImpl", + "_valueListImpl", + "_valueOfType:", "_valueTransformerNameForBinding:", - "_valueTypesInSuite:", + "_valueTypeForParameter:", + "_valueWithImpl:", "_valueWithOperatorKeyPath:", - "_verifyDataIsPICT:withFrame:", - "_verifyDefaultButtonCell", + "_variableValueInBindings:", + "_verifyDataIsPICT:", + "_verifyDefaultButtonCell:", + "_verifyNoChangesToReadonlyEntity:", "_verifySelectionIsOK", "_verticalDistanceForLineScroll", "_verticalDistanceForPageScroll", - "_verticalKeyboardScrollAmount", - "_verticalOriginForRow:", - "_verticalResizeCursor", + "_verticalKeyboardScrollDistance", + "_verticalPageScrollDistance", + "_verticalScrollerClass", "_view", "_viewAboveAccessoryView", + "_viewClass:andRepresentationClass:forMIMEType:", "_viewClassForMIMEType:", "_viewDetaching:", + "_viewDidEndLiveResize_handleRowHeaderSurfaces", "_viewDidMoveToHostWindow", "_viewFreeing:", "_viewTypesAllowImageTypeOmission:", + "_viewVisibleBoundsChanged", "_viewWillMoveToHostWindow:", + "_viewWillStartLiveResize_handleRowHeaderSurfaces", "_visibleAndCanBecomeKey", "_visibleAndCanBecomeKeyLimitedOK:", + "_visibleColumnIndexesForKeyPath:", "_visibleItemViewers", "_visibleRectOfColumns", + "_visibleRowIndexesForObject:", "_volumeIsEjectableForRefNum:", "_volumeIsLocalForRefNum:", - "_waitCursor", "_waitForLoadThreadSetup", "_wakeup", - "_wantToBeModal", - "_wantsCellClipTips", - "_wantsCellClipTipsWhenDisplayedInRect:inView:", "_wantsDeviceDependentEventModifierFlags", + "_wantsFiles:", "_wantsHeartBeat", + "_wantsHideOnDeactivate", "_wantsKeyboardLoop", "_wantsLiveResizeToUseCachedImage", - "_wantsOldValueForKey:", + "_wantsRevealoverAtColumn:row:", + "_wantsRevealovers", "_wantsToActivate", "_wantsToDestroyRealWindow", - "_wantsToHaveLeadingBelow", + "_wantsToolTipAtColumn:row:", "_wantsToolbarContextMenu", + "_wasFirstResponderAtMouseDownTime:", "_wasRedirectedToRequest:redirectResponse:", + "_webArchiveClass", "_webDataRequestBaseURL", "_webDataRequestData", "_webDataRequestEncoding", "_webDataRequestExternalRequest", + "_webDataRequestExternalURL", + "_webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:", "_webDataRequestMIMEType", "_webDataRequestParametersForReading", "_webDataRequestParametersForWriting", @@ -5136,30 +6530,37 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_webDataRequestSetData:", "_webDataRequestSetEncoding:", "_webDataRequestSetMIMEType:", - "_webDataRequestURLForData:", + "_webDataRequestSetUnreachableURL:", + "_webDataRequestUnreachableURL", "_webIsDataProtocolURL:", - "_webKitErrorWithCode:failingURL:", + "_webKitBundle", + "_webKitErrorWithDomain:code:URL:", "_webPreferences", + "_webResourceClass", "_webView", "_webViewClass", "_web_HTTPStyleLanguageCode", "_web_HTTPStyleLanguageCodeWithoutRegion", "_web_RFC1123DateString", "_web_RFC1123DateStringWithTimeInterval:", - "_web_URLByRemovingFragment", "_web_URLByRemovingLastPathComponent", "_web_URLByRemovingUserAndPath", "_web_URLByRemovingUserAndQueryAndFragment", + "_web_URLCString", "_web_URLComponents", "_web_URLFragment", "_web_URLWithComponents:", + "_web_URLWithData:relativeToURL:", + "_web_URLWithDataAsString:", + "_web_URLWithDataAsString:relativeToURL:", "_web_URLWithString:", "_web_URLWithString:relativeToURL:", + "_web_URLWithUserTypedString:", "_web_acceptLanguageHeaderForPreferredLanguages", "_web_addDefaultsChangeObserver", "_web_addDotLocalIfNeeded", "_web_addErrorsWithCodesAndDescriptions:inDomain:", - "_web_arrayByRemovingIfSelector:", + "_web_background", "_web_backgroundRemoveFileAtPath:", "_web_backgroundRemoveLeftoverFiles:", "_web_bestURL", @@ -5172,155 +6573,171 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_web_changeFinderAttributes:forFileAtPath:", "_web_characterSetFromContentTypeHeader", "_web_checkLastReferenceForIdentifier:", + "_web_clearPrintingModeRecursive", "_web_compareDay:", "_web_countOfString:", "_web_createDirectoryAtPathWithIntermediateDirectories:attributes:", "_web_createFileAtPath:contents:attributes:", "_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:", "_web_createIntermediateDirectoriesForPath:attributes:", - "_web_dateByAdjustingFor1950Cutoff", + "_web_dataForKey:", + "_web_dataForURLComponentType:", "_web_dateFromHTTPDateString:", + "_web_declareAndWriteDragImage:URL:title:archive:source:", + "_web_decodeHostNameWithRange:", "_web_defaultsDidChange", "_web_dissolveToFraction:", "_web_doesEveryElementSatisfyPredicate:", "_web_domainFromHost", "_web_domainMatches:", - "_web_doubleForKey:", + "_web_dragImage:rect:event:pasteboard:source:offset:", "_web_dragOperationForDraggingInfo:", - "_web_dragPromisedImage:rect:URL:fileType:title:event:", - "_web_dragShouldBeginFromMouseDown:withExpiration:", "_web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:", "_web_dragTypesForURL", "_web_drawAtPoint:font:textColor:", + "_web_drawDoubledAtPoint:withTopColor:bottomColor:font:", + "_web_encodeHostNameWithRange:", "_web_encodeWWWFormURLData", "_web_encodeWWWFormURLData:", - "_web_errorIsInDomain:", - "_web_errorWithDomain:code:failingURL:", - "_web_extractFourCharCode", - "_web_failingURL", + "_web_encodingForResource:", + "_web_errorWithDomain:code:URL:", + "_web_errorWithDomain:code:URL:userInfoObjectsAndKeys:", "_web_fileExistsAtPath:isDirectory:traverseLink:", "_web_fileNameFromContentDispositionHeader", "_web_filenameByFixingIllegalCharacters", - "_web_filteredArrayWithSelector:", - "_web_filteredArrayWithSelector:withObject:", "_web_firstOccurrenceOfCharacter:", + "_web_firstResponderCausesFocusDisplay", + "_web_firstResponderIsSelfOrDescendantView", "_web_fixedCarbonPOSIXPath", - "_web_floatForKey:", "_web_guessedMIMEType", - "_web_guessedMIMETypeForExtension:", + "_web_guessedMIMETypeForExtension:originalType:", + "_web_guessedMIMETypeForXML", "_web_hasCaseInsensitivePrefix:", "_web_hasCaseInsensitiveSubstring:", "_web_hasCaseInsensitiveSuffix:", "_web_hasCountryCodeTLD", - "_web_hasSubstring:atIndex:", - "_web_hostWithPort", - "_web_inHTMLView", - "_web_indexOfObjectSatisfyingPredicate:withObject:", + "_web_hasQuestionMarkOnlyQueryString", + "_web_hostData", + "_web_hostNameNeedsDecodingWithRange:", + "_web_hostNameNeedsEncodingWithRange:", + "_web_initWithDomain:code:URL:", "_web_initWithDomain:code:failingURL:", "_web_intForKey:", - "_web_isAllStrings", + "_web_isCaseInsensitiveEqualToCString:", "_web_isCaseInsensitiveEqualToString:", + "_web_isEmpty", "_web_isFTPDirectoryURL", "_web_isFileURL", "_web_isJavaScriptURL", - "_web_isToday", + "_web_isKeyEvent:", + "_web_isTabKeyEvent", "_web_lastOccurrenceOfCharacter:", - "_web_localizedDescription", + "_web_layoutIfNeededRecursive:testDirtyRect:", "_web_locationAfterFirstBlankLine", - "_web_longForKey:", "_web_looksLikeAbsoluteURL", "_web_looksLikeDomainName", "_web_looksLikeIPAddress", "_web_lowercaseStrings", - "_web_makeObjectsPerformSelector:withObject:withObject:", "_web_makePluginViewsPerformSelector:withObject:", + "_web_mapHostNameWithRange:encode:makeString:", "_web_mappedArrayWithFunction:context:", "_web_mappedArrayWithSelector:", "_web_mimeTypeFromContentTypeHeader", "_web_noteFileChangedAtPath:", "_web_numberForKey:", "_web_objectForMIMEType:", + "_web_originalData", + "_web_originalDataAsString", + "_web_pageSetupScaleFactor", "_web_parentWebFrameView", + "_web_parentWebView", "_web_parseAsKeyValuePair", "_web_parseAsKeyValuePairHandleQuotes:", "_web_parseRFC822HeaderFields", - "_web_pathWithQuery", + "_web_pathWithUniqueFilenameForPath:", "_web_performBooleanSelector:", "_web_performBooleanSelector:withObject:", "_web_preferredLanguageCode", - "_web_propagateDirtyRectToAncestor", - "_web_rangeOfURLHost", - "_web_rangeOfURLPassword", - "_web_rangeOfURLPort", "_web_rangeOfURLResourceSpecifier", "_web_rangeOfURLScheme", - "_web_rangeOfURLUser", "_web_rangeOfURLUserPasswordHostPort", "_web_removeFileOnlyAtPath:", - "_web_saveAndOpen", + "_web_safeMakeObjectsPerformSelector:", "_web_scaleToMaxSize:", - "_web_scanForURLsInString:tag:attribute:relativeToURL:", + "_web_schemeData", "_web_scriptIfJavaScriptURL", "_web_selectorValue", "_web_setBool:forKey:", - "_web_setDouble:forKey:", "_web_setFindPasteboardString:withOwner:", - "_web_setFloat:forKey:", "_web_setInt:forKey:", - "_web_setLong:forKey:", "_web_setObject:forUncopiedKey:", "_web_setObjectIfNotNil:forKey:", - "_web_setShort:forKey:", - "_web_setUnsignedInt:forKey:", - "_web_setUnsignedLong:forKey:", - "_web_setUnsignedShort:forKey:", - "_web_shortForKey:", - "_web_shouldLoadAsEmptyDocument", + "_web_setObjectUsingSetIfNecessary:forKey:", + "_web_setPrintingModeRecursive", "_web_spaceSeparatedPrefix", "_web_spaceSeparatedSuffix", "_web_splitAtNonDateCommas", "_web_startsWithBlankLine", "_web_startupVolumeName", + "_web_stringByAbbreviatingWithTildeInPath", "_web_stringByCollapsingNonPrintingCharacters", - "_web_stringByExpandingTildeInPath", "_web_stringByReplacingValidPercentEscapes", "_web_stringByStrippingCharactersFromSet:", + "_web_stringByStrippingReturnCharacters", "_web_stringByTrimmingWhitespace", "_web_stringForKey:", "_web_stringRepresentationForBytes:", - "_web_stringRepresentationForBytes:ofTotal:", "_web_stringWithUTF8String:length:", "_web_suggestedFilenameWithMIMEType:", "_web_superviewOfClass:", "_web_superviewOfClass:stoppingAtClass:", - "_web_timeoutFromKeepAliveHeader", - "_web_unsignedIntForKey:", - "_web_unsignedLongForKey:", - "_web_unsignedShortForKey:", + "_web_textSizeMultiplierChanged", + "_web_uniqueWebDataURL", + "_web_uniqueWebDataURLWithRelativeString:", + "_web_userVisibleString", "_web_valueWithSelector:", "_web_visibleItemsInDirectoryAtPath:", "_web_widthWithFont:", - "_web_writeURL:andTitle:withOwner:", - "_web_writeURL:andTitle:withOwner:types:", + "_web_writableTypesForImage", + "_web_writableTypesForURL", + "_web_writeFileWrapperAsRTFDAttachment:", + "_web_writeImage:URL:title:archive:types:", + "_web_writeURL:andTitle:types:", + "_webcore_effectiveFirstResponder", + "_webcore_initWithHeaderString:", + "_webkit_URLByRemovingFragment", + "_webkit_canonicalize", + "_webkit_isFTPDirectoryURL", + "_webkit_isJavaScriptURL", + "_webkit_scriptIfJavaScriptURL", + "_webkit_shouldLoadAsEmptyDocument", + "_webkit_stringByReplacingValidPercentEscapes", "_whenDrawn:fills:", "_whiteRGBColor", + "_widthForStringRange:", "_widthIsFlexible", "_widthOfColumn:", "_widthOfLongestDateStringWithLevel:format:", "_widthOfPackedGlyphs:count:", "_widthRequiredForLabelLayout", + "_widthToStartRolloverTracking", + "_willAccessValueForKey:", + "_willChangeBackForwardKeys", + "_willChangeValueForKey:", + "_willChangeValuesForArrangedKeys:objectKeys:indexPathKeys:", + "_willDeallocIndexPath:", "_willPopUpNotification:", "_willPowerOff", + "_willSave", "_willStartTrackingMouseInMatrix:withEvent:", "_willUnmountDeviceAtPath:ok:", "_win32ChangeKeyAndMain", - "_win32TitleString", "_window", "_windowAnimationVelocity", "_windowBorderThickness", "_windowBorderThickness:", + "_windowChangedHilite:", "_windowChangedKeyState", - "_windowChangedMain:", "_windowChangedNumber:", "_windowDepth", "_windowDeviceRound", @@ -5329,360 +6746,232 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "_windowDidComeBack:", "_windowDidHideToolbar", "_windowDidLoad", - "_windowDidMove:", "_windowDying", "_windowExposed:", + "_windowFileButtonSpacingWidth", "_windowInitWithCoder:", "_windowMoved:", - "_windowMovedToPoint:", "_windowMovedToRect:", "_windowNumber:changedTo:", - "_windowRef", - "_windowRefCreatedForCarbonApp", "_windowRefCreatedForCarbonControl", "_windowResizeBorderThickness", "_windowResizeCornerThickness", + "_windowSideTitlebarTitleMinWidth:", "_windowTitlebarButtonSpacingWidth", "_windowTitlebarButtonSpacingWidth:", - "_windowTitlebarTitleMinHeight", "_windowTitlebarTitleMinHeight:", "_windowTitlebarXResizeBorderThickness", "_windowTitlebarYResizeBorderThickness", "_windowWillClose:", "_windowWillGoAway:", "_windowWillLoad", + "_windowWillOrderOut:", "_windowWillShowToolbar", "_windowWithRealWindowNumber:", - "_windowsForMenu:", "_wiringNibConnections", "_wordsInDictionary:", + "_workspaceDidResignOrBecomeActive:", + "_wrappingAttributes", + "_writeCallback:", + "_writeCharacterAttributes:", "_writeCharacterData", "_writeCharacters:range:", + "_writeColorsToLibrary", "_writeDataForkData:resourceForkData:", - "_writeDocFontsUsed", + "_writeDocumentAttributes", "_writeDocumentData", + "_writeDocumentProperties", + "_writeDocumentPropertiesToString:", + "_writeDocumentProperty:value:", + "_writeDocumentProperty:value:toString:", "_writeFontInRange:toPasteboard:", + "_writeFonts", "_writeForkData:isDataFork:", - "_writeItemAt:in:makingTemporaryCopyIn:withType:forSaveOperation:", - "_writeItemAt:withType:forSaveOperation:", - "_writeOldAttributesFrom:andNewAttributes:to:", - "_writePageFontsUsed", + "_writeImageElement:withPasteboardTypes:toPasteboard:", + "_writeLinkElement:withPasteboardTypes:toPasteboard:", "_writeParagraphData", + "_writeParagraphStyle:", "_writePersistentBrowserColumns", "_writePersistentExpandItems", "_writePersistentTableColumns", - "_writeRTFDInRange:toPasteboard:", - "_writeRTFInRange:toPasteboard:", + "_writeRTFDInRanges:toPasteboard:", + "_writeRTFInRanges:toPasteboard:", "_writeRecentDocumentDefaults", "_writeRulerInRange:toPasteboard:", + "_writeSafelyToURL:ofType:forSaveOperation:error:", "_writeSelectionToPasteboard:", - "_writeStringInRange:toPasteboard:", + "_writeStringInRanges:toPasteboard:", "_writeTIFF:usingCompression:factor:", + "_writeToURL:ofType:forSaveOperation:error:", + "_writeToURL:ofType:forSaveOperation:inFolder:makingTemporaryCopyInFolder:error:", + "_writeTokensInCharacterRange:textStorage:toPasteboard:", + "_writeURLInRange:toPasteboard:", + "_writeURLNameInRange:toPasteboard:", + "_writeURLStringInRange:toPasteboard:", + "_writeURLStringsWithNamesInRange:toPasteboard:", "_writeVersionsAndEncodings", - "_wsmIconInitFor:", "_wsmOwnsWindow", + "_zapResultArray", "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:", "_zeroScreen", "_zoomButtonOrigin", - "abAppendString:", - "abDecodeBase64", - "abDecodedUTF7", - "abEllipsizeWithFont:withWidth:", - "abEncodeBase64DataBreakLines:allowSlash:padChar:", - "abEndOfParagraphStartingAtIndex:", - "abEscapeStringForUnichar:and:advance:", - "abIsUTF16EntourageVCard", - "abRankOfPhoneNumberMatchingString:", - "abShowWindowDragProxie", - "abStandardizedPhoneNumber", - "abStringAtRange:inEncoding:", - "abVCardDataRepresenation", - "abVCardKoshify", - "abWords", - "ab_queryPieces", - "ab_queryPiecesNoLowerCase", "abbreviation", "abbreviationDictionary", "abbreviationForDate:", - "abbreviationForTimeInterval:", + "abortAllToolTips", "abortEditing", "abortModal", "abortParsing", "abortToolTip", "absolutePathForAppBundleWithIdentifier:", - "absolutePositionString", "absoluteString", "absoluteURL", - "acceptChanges:", + "absoluteX", + "absoluteY", + "absoluteZ", "acceptColor:atPoint:", - "acceptConnectionInBackgroundAndNotify", "acceptConnectionInBackgroundAndNotifyForModes:", - "acceptInputForMode:beforeDate:", "acceptLastEnteredText", + "acceptNode:", + "acceptVisitor:flags:", "acceptableDragTypes", - "acceptsArrowKeys", - "acceptsBinary", "acceptsFirstMouse:", "acceptsFirstResponder", - "acceptsFirstResponderForView:", "acceptsGlyphInfo", "acceptsMarker:binding:overrideWithPlaceholderIfDefined:", "acceptsMouseMovedEvents", "acceptsStyleChanges", + "access", "accessInstanceVariablesDirectly", + "accessibilityAXAttributedStringForCharacterRange:includingLinksAndAttachments:", "accessibilityActionDescription:", "accessibilityActionNames", "accessibilityArrayAttributeCount:", "accessibilityArrayAttributeValues:index:maxCount:", + "accessibilityAttachmentAtIndex:", + "accessibilityAttachments", "accessibilityAttributeNames", "accessibilityAttributeValue:", "accessibilityAttributeValue:forParameter:", "accessibilityBoundsForCharacterRange:", "accessibilityBoundsForRangeAttributeForParameter:", - "accessibilityCancelButtonAttribute", "accessibilityCharacterRangeForLineNumber:", "accessibilityCharacterRangeForPosition:", "accessibilityChildForColumn:", "accessibilityChildrenAttribute", "accessibilityClearButtonAttribute", - "accessibilityClearButtonUIElementAttribute", - "accessibilityCloseButtonAttribute", "accessibilityColumnForChild:", "accessibilityColumnTitlesAttribute", - "accessibilityColumnsAttribute", "accessibilityContentsAttribute", "accessibilityCurrentEditor", "accessibilityCurrentEditorForCell:", "accessibilityDecrementButtonAttribute", - "accessibilityDefaultButtonAttribute", - "accessibilityDisclosedByRowAttribute", - "accessibilityDisclosedRowsAttribute", - "accessibilityDisclosingAttribute", - "accessibilityDocumentAttribute", - "accessibilityEditedAttribute", + "accessibilityElementForAttachment:", "accessibilityElementWithParent:", - "accessibilityEnabledAttribute", - "accessibilityExpandedAttribute", "accessibilityFocusRingBounds", "accessibilityFocusRingBoundsForBounds:", - "accessibilityFocusedAttribute", "accessibilityFocusedUIElement", - "accessibilityFocusedUIElementAttribute", - "accessibilityFocusedWindowAttribute", - "accessibilityFrontmostAttribute", "accessibilityGrowAreaAttribute", "accessibilityHeaderAttribute", - "accessibilityHelpAttribute", "accessibilityHelpStringForChild:", - "accessibilityHiddenAttribute", - "accessibilityHitTest", "accessibilityHitTest:", "accessibilityHorizontalScrollBarAttribute", "accessibilityIncrementButtonAttribute", + "accessibilityIndexForAttachment:", "accessibilityIndexOfChild:", + "accessibilityInsertionPointLineNumber", "accessibilityIsAttributeSettable:", - "accessibilityIsCancelButtonAttributeSettable", "accessibilityIsChildFocusable:", "accessibilityIsChildOfApp", - "accessibilityIsChildrenAttributeSettable", - "accessibilityIsClearButtonUIElementAttributeSettable", - "accessibilityIsCloseButtonAttributeSettable", - "accessibilityIsColumnTitlesAttributeSettable", - "accessibilityIsColumnsAttributeSettable", - "accessibilityIsContentsAttributeSettable", - "accessibilityIsDecrementButtonAttributeSettable", - "accessibilityIsDefaultButtonAttributeSettable", - "accessibilityIsDisclosedByRowAttributeSettable", - "accessibilityIsDisclosedRowsAttributeSettable", - "accessibilityIsDisclosingAttributeSettable", - "accessibilityIsDocumentAttributeSettable", - "accessibilityIsEditedAttributeSettable", - "accessibilityIsEnabledAttributeSettable", - "accessibilityIsExpandedAttributeSettable", - "accessibilityIsFocusedAttributeSettable", - "accessibilityIsFocusedUIElementAttributeSettable", - "accessibilityIsFocusedWindowAttributeSettable", - "accessibilityIsFrontmostAttributeSettable", - "accessibilityIsGrowAreaAttributeSettable", - "accessibilityIsHeaderAttributeSettable", - "accessibilityIsHelpAttributeSettable", - "accessibilityIsHiddenAttributeSettable", - "accessibilityIsHorizontalScrollBarAttributeSettable", "accessibilityIsIgnored", - "accessibilityIsIncrementButtonAttributeSettable", - "accessibilityIsMainAttributeSettable", - "accessibilityIsMainWindowAttributeSettable", - "accessibilityIsMaxValueAttributeSettable", - "accessibilityIsMenuBarAttributeSettable", - "accessibilityIsMinValueAttributeSettable", - "accessibilityIsMinimizeButtonAttributeSettable", - "accessibilityIsMinimizedAttributeSettable", - "accessibilityIsModalAttributeSettable", - "accessibilityIsNextContentsAttributeSettable", - "accessibilityIsNumberOfCharactersAttributeSettable", - "accessibilityIsOrientationAttributeSettable", - "accessibilityIsOverflowButtonAttributeSettable", - "accessibilityIsParentAttributeSettable", - "accessibilityIsPositionAttributeSettable", - "accessibilityIsPreviousContentsAttributeSettable", - "accessibilityIsProxyAttributeSettable", - "accessibilityIsRoleAttributeSettable", - "accessibilityIsRoleDescriptionAttributeSettable", - "accessibilityIsRowsAttributeSettable", - "accessibilityIsSearchButtonUIElementAttributeSettable", - "accessibilityIsSelectedAttributeSettable", - "accessibilityIsSelectedChildrenAttributeSettable", - "accessibilityIsSelectedColumnsAttributeSettable", "accessibilityIsSelectedRangeSettable", - "accessibilityIsSelectedRowsAttributeSettable", - "accessibilityIsSelectedTextAttributeSettable", - "accessibilityIsSelectedTextRangeAttributeSettable", "accessibilityIsSelectedTextSettable", - "accessibilityIsSharedCharacterRangeAttributeSettable", - "accessibilityIsSharedTextUIElementsAttributeSettable", "accessibilityIsSingleCelled", - "accessibilityIsSizeAttributeSettable", - "accessibilityIsSplittersAttributeSettable", - "accessibilityIsSubroleAttributeSettable", - "accessibilityIsTabsAttributeSettable", - "accessibilityIsTitleAttributeSettable", - "accessibilityIsTitleUIElementAttributeSettable", - "accessibilityIsToolbarButtonAttributeSettable", - "accessibilityIsValueAttributeSettable", - "accessibilityIsValueIndicatorAttributeSettable", - "accessibilityIsVerticalScrollBarAttributeSettable", - "accessibilityIsVisibleCharacterRangeAttributeSettable", + "accessibilityIsSortButton", "accessibilityIsVisibleCharacterRangeSettable", - "accessibilityIsVisibleChildrenAttributeSettable", - "accessibilityIsVisibleColumnsAttributeSettable", - "accessibilityIsVisibleRowsAttributeSettable", - "accessibilityIsWindowAttributeSettable", - "accessibilityIsWindowsAttributeSettable", - "accessibilityIsZoomButtonAttributeSettable", "accessibilityLineForIndexAttributeForParameter:", "accessibilityLineNumberForCharacterIndex:", - "accessibilityMainAttribute", - "accessibilityMainWindowAttribute", - "accessibilityMaxValueAttribute", "accessibilityMenuBarAttribute", - "accessibilityMinValueAttribute", - "accessibilityMinimizeButtonAttribute", - "accessibilityMinimizedAttribute", - "accessibilityModalAttribute", - "accessibilityNextContentsAttribute", - "accessibilityNumberOfCharactersAttribute", - "accessibilityOrientationAttribute", "accessibilityOverflowButtonAttribute", + "accessibilityOverriddenAttributes", "accessibilityParameterizedAttributeNames", - "accessibilityParentAttribute", "accessibilityPerformAction:", - "accessibilityPositionAttribute", + "accessibilityPopUpMenuCreated:", + "accessibilityPopUpMenuParent:", "accessibilityPositionOfChild:", "accessibilityPostNotification:", - "accessibilityPreviousContentsAttribute", - "accessibilityProxyAttribute", "accessibilityRTFForCharacterRange:", - "accessibilityRTFForRangeAttributeForParameter:", - "accessibilityRangeForIndexAttributeForParameter:", "accessibilityRangeForLineAttributeForParameter:", "accessibilityRangeForPositionAttributeForParameter:", "accessibilityRoleAttribute", - "accessibilityRoleDescriptionAttribute", - "accessibilityRowsAttribute", + "accessibilityRulerMarkerType", + "accessibilityRulerMarkerTypeDescription", "accessibilitySearchButtonAttribute", - "accessibilitySearchButtonUIElementAttribute", - "accessibilitySearchMenuAttribute", - "accessibilitySelectedAttribute", "accessibilitySelectedChildrenAttribute", - "accessibilitySelectedColumnsAttribute", "accessibilitySelectedRange", - "accessibilitySelectedRowsAttribute", "accessibilitySelectedText", - "accessibilitySelectedTextAttribute", - "accessibilitySelectedTextRangeAttribute", - "accessibilitySetDisclosingAttribute:", - "accessibilitySetExpandedAttribute:", "accessibilitySetFocus:forChild:", - "accessibilitySetFocusedAttribute:", - "accessibilitySetFrontmostAttribute:", - "accessibilitySetHiddenAttribute:", - "accessibilitySetMainAttribute:", - "accessibilitySetMinimizedAttribute:", - "accessibilitySetPositionAttribute:", - "accessibilitySetSelectedAttribute:", - "accessibilitySetSelectedChildrenAttribute:", - "accessibilitySetSelectedColumnsAttribute:", + "accessibilitySetOverrideValue:forAttribute:", "accessibilitySetSelectedRange:", - "accessibilitySetSelectedRowsAttribute:", "accessibilitySetSelectedText:", - "accessibilitySetSelectedTextAttribute:", - "accessibilitySetSelectedTextRangeAttribute:", - "accessibilitySetSizeAttribute:", "accessibilitySetValue:forAttribute:", - "accessibilitySetValueAttribute:", "accessibilitySetVisibleCharacterRange:", - "accessibilitySetVisibleCharacterRangeAttribute:", "accessibilitySharedCharacterRange", - "accessibilitySharedCharacterRangeAttribute", - "accessibilitySharedTextUIElementsAttribute", "accessibilitySharedTextViews", "accessibilityShouldUseUniqueId", - "accessibilitySizeAttribute", "accessibilitySizeOfChild:", "accessibilitySplittersAttribute", - "accessibilityStringForRangeAttributeForParameter:", "accessibilityStyleRangeForCharacterIndex:", - "accessibilityStyleRangeForIndexAttributeForParameter:", "accessibilitySubroleAttribute", + "accessibilitySupportsOverriddenAttributes", "accessibilityTabsAttribute", + "accessibilityTextLinkAtIndex:", + "accessibilityTextLinks", "accessibilityTextView", - "accessibilityTitleAttribute", "accessibilityTitleUIElementAttribute", - "accessibilityToolbarButtonAttribute", + "accessibilityTopLevelUIElementAttributeValueHelper", + "accessibilityTree", "accessibilityValueAttribute", "accessibilityValueIndicatorAttribute", "accessibilityVerticalScrollBarAttribute", "accessibilityVisibleCharacterRange", "accessibilityVisibleCharacterRangeAttribute", - "accessibilityVisibleChildrenAttribute", - "accessibilityVisibleColumnsAttribute", - "accessibilityVisibleRowsAttribute", "accessibilityWindowAttribute", + "accessibilityWindowAttributeValueHelper", + "accessibilityWindowNumber", "accessibilityWindowsAttribute", - "accessibilityZoomButtonAttribute", "accessoryView", - "acquireLock:lockMode:", + "accessoryViewContainerContentFrameDidChange:", + "accumulate::minRadius:factor:", "action", "action:", + "actionForControlCharacterAtIndex:", "actionHasBegun:sender:", "actionHasEnded:sender:", + "actionType", "activate:", - "activateContextHelpMode:", "activateIgnoringOtherApps:", "activateInputManagerFromMenu:", - "activeApplication", - "activeColumnFilter", - "activeColumnIdentifier", + "activeColorSpace", "activeConversationChanged:toNewConversation:", "activeConversationWillChange:fromOldConversation:", - "activeDirectoryPassword", - "activeDirectoryUser", "activeFileListDelegate", "actualBitsPerPixel", "actualIndexForIndex:filtered:", + "adapter", + "adapterOperations", + "adapterOperator", "add:", + "add:to:", "addAcceptFieldsToHeader", - "addAction:", - "addAdditionalField:", - "addAddress:stringAttribute:endOfRange:", - "addAddressMultiValues", + "addAdapterOperation:", + "addAnimatingRenderer:inView:", + "addAttribute:", "addAttribute:value:range:", - "addAttribute:values:", - "addAttribute:values:mergeValues:", - "addAttributedString:inRect:", "addAttributes:range:", "addAttributesWeakly:range:", "addAuthenticationFieldsToHeader", + "addBindVariable:", "addBinder:", "addBinding:toController:withKeyPath:valueTransformer:options:", "addButtonWithTitle:", @@ -5690,22 +6979,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "addCharactersInString:", "addChild:", "addChildItem:", + "addChildObject:", "addChildWindow:ordered:", - "addChildWithPath:", "addChildren:", + "addChildrenToArray:", "addClassNamed:version:", "addClient:", "addClip", - "addCollection:options:", "addColumn", - "addColumnFilter:forColumnTitle:", - "addColumnFilter:forColumnTitle:andIdentifier:", - "addColumnWithCells:", + "addColumns:", "addCommon:docInfo:value:zone:", "addConditionalFieldsToHeader", + "addConnection:forKey:", "addConnection:toRunLoop:forMode:", "addConnectionFieldToHeader", - "addContentObject:value:tag:cellOrControl:", + "addContentObject:isPlaceholder:value:tag:cellOrControl:", "addConversation:", "addCookieFieldToHeader", "addCrayon:", @@ -5714,236 +7002,165 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "addCredentialsToRetryHTTPRequest:afterFailureResponse:nsFailureResponse:failureCount:protocol:withCallback:context:", "addCursorRect:cursor:", "addData:", - "addData:name:", + "addDefaultTable", + "addDelta:forManyToManyKey:", + "addDescription:forSubelementName:", "addDirNamed:lazy:", "addDocument:", - "addDocumentIconButton", - "addDrawerWithView:", - "addElement:", - "addEntries:fromSession:", + "addEntity:index:", "addEntriesFromDictionary:", - "addEntry:", + "addEnumeration:", + "addEventListener:::", "addExpandedNode:", "addExtraFieldsToHeader", "addFavorite", - "addFavorite:inWindow:", "addFavoriteInWindow:", - "addFieldWithNoPopup:", - "addFieldWithPopup:property:stringAttribute:endOfRange:", - "addFile:", + "addFeatureDescriptions:", "addFileButton:", "addFileNamed:fileAttributes:", - "addFileWithPath:", "addFileWrapper:", + "addFontDescriptorToRecents:", "addFontDescriptors:toCollection:", "addFontTrait:", - "addFormat:", "addGlyphs:advances:count:at::", - "addGroupFromDictionary:", - "addGroupView", - "addGroupsFromPasteboard:toGroup:", - "addHeaderValue:forKey:", "addHeartBeatView:", "addHostFieldToHeader", - "addIMValueTo:", "addIndex:", "addIndexRange:", "addIndexes:", - "addIndexesFromIndexSet:", "addIndexesInRange:", "addItem:", "addItemForURL:", - "addItemWithImage:", "addItemWithObjectValue:", "addItemWithTitle:", "addItemWithTitle:action:keyEquivalent:", - "addItemWithTitle:andIdentifier:", + "addItemWithTitle:action:tag:", "addItems:", - "addItemsWithImages:", - "addItemsWithImagesInReverseOrder:", "addItemsWithObjectValues:", "addItemsWithTitles:", + "addJoinForDirectToManyToMany:", + "addJoinForManyToManyRelationship:sourcePath:destinationPath:", + "addJoinForToManyRelationship:sourcePath:destinationPath:", + "addJoinForToOneRelationship:sourcePath:destinationPath:", "addLayoutManager:", - "addLink:", + "addListenerIfAbsent:", "addMarker:", - "addMember:", - "addMembers:", "addMessageBodyToRequest", + "addMessageToConsole:", "addMouseMovedObserver", - "addMultiValues:toProperty:", + "addNamespace:", "addNewColor:andShowInWell:", - "addNumberOfIndexes:toSelectionIndexesAtIndex:", "addObject:", + "addObject:objectIDMap:", "addObject:toBothSidesOfRelationshipWithKey:", "addObject:toPropertyWithKey:", - "addObject:withSorter:", - "addObjectIfAbsent:", - "addObjectToMasterArrayRelationship:", - "addObjects:", + "addObjectToMasterArrayRelationship:selectionMode:", "addObjectsFromArray:", - "addObjectsToMasterArrayRelationship:", + "addObjectsToMasterArrayRelationship:selectionMode:", "addObserver:forKeyPath:options:context:", "addObserver:selector:name:object:", "addObserver:selector:name:object:suspensionBehavior:", - "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", - "addPeopleFromPasteboard:toGroup:", - "addPerson:", + "addOrNestTable", + "addPathToLibrarySearchPaths:", + "addPersistentStoreWithType:configuration:URL:readOnly:error:", "addPlugin:", + "addPolicy:", "addPort:forMode:", "addPortsToAllRunLoops", "addPortsToRunLoop:", "addPreferenceNamed:owner:", - "addPropertiesAndTypes:", - "addProperty:", - "addRecord:", - "addRecordsToGroup", "addRect:", "addReferrerFieldToHeader", - "addRegion:", "addRegularFileWithContents:preferredFilename:", "addRepresentation:", "addRepresentations:", - "addRequestMode:", - "addRollOver:", "addRow", "addRowWithCells:", + "addRows:", "addRunLoop:", - "addSelectedObjects:", - "addSelectionIndexes:", - "addServer:", "addServiceProvider:", "addSpecialGStateView:", "addStatistics:", - "addString:attributes:inRect:", - "addString:inRect:", - "addSubgroup:", - "addSubrecord:", + "addSubresource:", "addSubview:", "addSubview:positioned:relativeTo:", - "addSuiteNamed:", "addSuperviewObservers", - "addSymbolicLinkWithDestination:preferredFilename:", "addTabStop:", - "addTabViewItem:", "addTableColumn:", "addTemporaryAttributes:forCharacterRange:", "addTextContainer:", "addTimeInterval:", "addTimer:forMode:", "addTimerToModes", - "addToDirectoryResults:", "addToPageSetup", "addToolTipRect:owner:userData:", "addTrackingRect:owner:userData:assumeInside:", - "addTrackingRectForToolTip:", - "addType:", - "addTypes:", + "addTrackingRectForToolTip:reuseExistingTrackingNum:", "addTypes:owner:", "addUserAgentFieldToHeader", "addValue:forHTTPHeaderField:", - "addValue:withLabel:", + "addVariationDescriptions:", "addView:frame:toView:characterIndex:layoutManager:", "addWebView:toSetNamed:", "addWindowController:", "addWindowObservers", "addWindowsItem:title:filename:", - "addedGroups:", - "addedMembers:", - "addedMembers:toGroup:", - "addedPeople", - "addedToGroup", "additionalClip", + "additionalPatternPhase", "address", - "addressBookCompactedDataFile", - "addressBookDataFile", - "addressBookDirectory", - "addressBookImagesDirectory", - "addressBookLockFile", - "addressBookProperty", - "addressBookSaveFile", - "addressFormats", - "addressInfoForHost:", "addresses", - "addrinfo", "adjustCTM:", "adjustControls:", - "adjustFrames:", + "adjustFrameOriginX:", + "adjustFrameSize", "adjustHalftonePhase", "adjustOffsetToNextWordBoundaryInString:startingAt:", "adjustPageHeightNew:top:bottom:limit:", "adjustPageWidthNew:left:right:limit:", - "adjustRulersForMaxSize", "adjustScroll:", "adjustScrollView", "adjustSubviews", "adjustView:frame:forView:characterIndex:layoutManager:", - "adjustVolumePath:", - "adminGroup", - "advancePastEOL", - "advancePastEOLSingle", - "advancePastEOLUnicode", - "advanceToEOL", - "advanceToEOLSingle", - "advanceToEOLUnicode", - "advanceToPeakPoint", - "advanceToSingleByteString", - "advanceToString", - "advanceToToken:throughTypes:", - "advanceToUnicodeString", + "adjustViewSize", + "advanceProxyArray", + "advanceToNextMisspelling", + "advanceToNextMisspellingStartingJustBeforeSelection", "advancementForGlyph:", "aeDesc", "aeteResource:", - "afmDictionary", - "afmFileContents", - "aggregateExceptionWithExceptions:", - "alertStyle", - "alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:", + "affineTransform", + "afterEntityLookup", + "alertDidEnd:returnCode:contextInfo:", + "alertShowHelp:", + "alertWithError:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "alignment", - "allAttributeKeys", "allBundles", - "allCards", "allConnections", "allCredentials", - "allDirectoriesServer", "allFrameworks", - "allGroup", - "allGroups", "allHTTPHeaderFields", "allHeaderFields", - "allImportableFilesFromPaths:", "allKeys", "allKeysForObject:", - "allLabelsForProperty:", - "allMemberNames", - "allMembers", - "allModes", "allObjects", - "allPeople", - "allPersonProperties", - "allProperties", + "allOrderedScopeButtons", "allPropertyKeys", - "allServices", - "allToManyRelationshipKeys", - "allToOneRelationshipKeys", - "allUniqueRecordsIn:", "allValues", "alloc", "allocFromZone:", "allocWithZone:", "allocateGState", - "allowDatabaseCleanup", - "allowEditing", + "allocateObjectIDForPayload:withType:", + "allowDHTMLDrag:UADrag:", "allowEmptySel:", - "allowGroupSelection", - "allowableCharacters", + "allowFlushing", + "allowedContentBindingMask", "allowedFileTypes", "allowedValueBindingMask", - "allowsAnimatedImageLooping", - "allowsAnimatedImages", "allowsAnyHTTPSCertificateForHost:", "allowsBranchSelection", "allowsColumnReordering", @@ -5956,27 +7173,18 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "allowsEmptySelection", "allowsExpandingMultipleDirectories", "allowsFloats", - "allowsGroupEditing", - "allowsGroupSelection", - "allowsHorizontalScrolling", - "allowsIncrementalSearching", - "allowsIndividualValueSelection", "allowsKeyedCoding", "allowsMixedState", "allowsMultipleSelection", - "allowsMultipleSubrowSelection", "allowsNaturalLanguage", "allowsNullArgumentWithBinding:", + "allowsOtherFileTypes", "allowsReverseTransformation", "allowsScrolling", - "allowsSubrowSelection", "allowsTickMarkValuesOnly", "allowsToolTipsWhenApplicationIsInactive", - "allowsTruncatedLabels", "allowsUndo", - "allowsUserConfiguration", "allowsUserCustomization", - "allowsVerticalScrolling", "alpha", "alphaComponent", "alphaControlAddedOrRemoved:", @@ -5984,96 +7192,124 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "alphanumericCharacterSet", "altIncrementValue", "altModifySelection:", + "alterCurrentSelection:direction:granularity:", + "alterCurrentSelection:verticalDistance:", + "alternateArrangeInFront:", "alternateImage", - "alternateMnemonic", "alternateMnemonicLocation", - "alternateName", - "alternateSecondarySelectedControlColor", "alternateSelectedControlColor", "alternateSelectedControlTextColor", "alternateTitle", - "altersStateOfSelectedItem", "alwaysAttemptToUsePageCache", + "alwaysPresentsApplicationModalAlerts", + "alwaysPresentsApplicationModalAlertsWithBinding:", + "alwaysUsesMultipleValuesMarker", + "analyzeKeyPath:registerOrUnregister:", "ancestorSharedWithView:", "ancestorsStartingWith:", + "anchorElement", + "andPredicateOperator", + "angledROI:forRect:", "animate", "animate:", - "animates", - "animationDelay", + "animation:didReachProgressMark:", + "animation:valueForProgress:", + "animationBlockingMode", + "animationCurve", + "animationDidEnd:", + "animationDidStop:", "animationResizeTime:", + "animationShouldStart:", "anyObject", "appDidActivate:", "appearanceChanged:", - "append:", "appendAttributedString:", "appendBezierPath:", "appendBezierPathWithArcFromPoint:toPoint:radius:", "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:", "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:", - "appendBezierPathWithGlyph:inFont:", "appendBezierPathWithGlyphs:count:inFont:", "appendBezierPathWithOvalInRect:", - "appendBezierPathWithPackedGlyphs:", "appendBezierPathWithPoints:count:", "appendBezierPathWithRect:", "appendBytes:length:", "appendCharacter:", - "appendCharacters:length:", "appendChild:", + "appendClause:forKeyPath:allowToMany:", + "appendClause:forKeyPathExpression:allowToMany:", + "appendClause:forProperty:keypath:", "appendData:", - "appendData:length:", "appendDisplayedNode:identifier:title:displaysChildren:", - "appendField:label:withText:", + "appendElementClassDeclarationToAETEData:", + "appendEnumerationDeclarationToAETEData:", "appendFormat:", - "appendLabel:toVCardRep:inGroup:", - "appendList:", + "appendJoinClauseToSQL", + "appendLimitClauseToSQL:", + "appendObjectClassDeclarationToAETEData:", + "appendOrderByClauseToSQL", + "appendParameterDeclarationsToAETEData:", + "appendPropertyDeclarationToAETEData:", + "appendPropertyDeclarationsToAETEData:", + "appendReceivedData:fromDataSource:", + "appendRecordTypeDeclarationsToAETEData:", + "appendSQL:", + "appendSelectListToSQL", + "appendSelectableScopeLocationNode:", "appendString:", - "appendString:withFont:", - "appendString:withFont:andAttribute:", - "appendTemporaryField:andLabel:font:", + "appendSuiteDeclarationsToAETEData:", "appendTransform:", - "appleEvent", + "appendWhereClause:", + "appendWhereClauseToSQL", "appleEventClassCode", "appleEventCode", - "appleEventCodeForArgumentWithName:", "appleEventCodeForKey:", "appleEventCodeForReturnType", - "appleEventCodeForSuite:", - "appleEventForSuspensionID:", - "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:", + "application:delegateHandlesKey:", + "application:openFile:", + "application:openFileWithoutUI:", + "application:openFiles:", + "application:openTempFile:", + "application:printFile:", + "application:printFiles:", + "application:printFiles:withSettings:showPrintPanels:", + "application:receivedEvent:dequeuedEvent:", + "application:runTest:duration:", + "application:willPresentError:", + "applicationDelegateHandlesKey::", "applicationDidBecomeActive:", + "applicationDockMenu:", "applicationIcon", - "applicationIconImage", - "applicationLaunched:handle:", "applicationName", - "applicationNameForUserAgent", - "applicationQuit:handle:", - "applicationWillTerminate:", + "applicationOpenUntitledFile:", + "applicationShouldHandleReopen:hasVisibleWindows:", + "applicationShouldOpenUntitledFile:", + "applicationShouldTerminate:", + "applicationShouldTerminateAfterLastWindowClosed:", "appliesImmediately", - "appliesToRequest:", - "apply", "apply:", - "apply:context:", - "applyDisplayedValue", - "applyFontTraits:range:", - "applyObjectValue:forBinding:operation:", - "applyToAll:", - "applyToRequest:", - "applyValueTransformerToValue:forBinding:reverse:", - "archiveButtonImageSourceWithName:toDirectory:", + "apply:arguments:options:", + "apply:to:", + "apply:to:options1:options2:", + "apply:to:options:", + "apply:to:params:", + "applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "applyEditingStyleToBodyElement", + "applyObjectValue:forBinding:operation:needToRunAlert:error:", + "applyStyle:", + "archive", "archiveRootObject:toFile:", "archivedDataWithRootObject:", - "archiverData", - "areAllContextsOutputTraced", - "areAllContextsSynchronized", + "archiver:didEncodeObject:", + "archiver:willEncodeObject:", + "archiver:willReplaceObject:withObject:", + "archiverDidFinish:", + "archiverWillFinish:", "areCursorRectsEnabled", - "areEventsTraced", "arePlugInsEnabled", "areScrollbarsVisible", "areToolbarsVisible", - "argumentNames", + "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:", "arguments", - "argumentsRetained", "arrangeInFront:", "arrangeObjects:", "arrangedObjects", @@ -6081,36 +7317,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "arrayByAddingObject:", "arrayByAddingObjects:count:", "arrayByAddingObjectsFromArray:", - "arrayByApplyingSelector:", - "arrayByExcludingIdenticalObjectsInArray:", "arrayByExcludingObjectsInArray:", "arrayByExcludingObjectsInArray:identical:", - "arrayByExcludingToObjectsInArray:", "arrayForKey:", + "arrayForOptionalSubelementName:", + "arrayOrNumberFromResolutions:andValues:withCount:", "arrayRepresentation", "arrayWithArray:", "arrayWithArray:copyItems:", "arrayWithCapacity:", "arrayWithContentsOfFile:", - "arrayWithContentsOfURL:", "arrayWithIFURLsWithTitlesPboardType", + "arrayWithIndexes:", "arrayWithObject:", "arrayWithObjects:", "arrayWithObjects:count:", + "arrayWithRange:", + "arrayWithRanges:count:", "arrowCursor", "arrowPosition", - "arrowsPosition", "asRef", "ascender", "ascending", "ascent", "aspectRatio", - "associatePopup:withProperty:", + "assignValuesForInsertedObject:", "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:", - "asyncResolveWithCallbackClient:", - "atEOF", + "atomAttachmentCell", "attachColorList:", - "attachColorList:makeSelected:", "attachColorList:systemList:makeSelected:", "attachPopUpWithFrame:inView:", "attachSubmenuForItemAtIndex:", @@ -6122,32 +7356,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "attachedViewFrameDidChange:", "attachment", "attachmentCell", + "attachmentMenu", "attachmentSizeForGlyphAtIndex:", "attemptOverwrite:", - "attemptToBind", - "attrImpl", - "attrWithImpl:", + "attemptRecoveryFromError:optionIndex:", + "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:", + "attemptRetryAfter3xxResponse", "attribute:atIndex:effectiveRange:", "attribute:atIndex:longestEffectiveRange:inRange:", - "attributeCount", + "attributeColumnDefinitions", + "attributeColumns", "attributeDescriptorForKeyword:", - "attributeExists:withValue:", + "attributeForLocalName:URI:", + "attributeForName:", "attributeKeys", - "attributeRuns", + "attributeMappings", + "attributeType", + "attributeTypeForXMLInfo:", + "attributeValueClassName", + "attributeValueForSlot:", "attributedAlternateTitle", "attributedString", - "attributedStringByWeaklyAddingAttributes:", "attributedStringForNil", "attributedStringForNotANumber", "attributedStringForObjectValue:withDefaultAttributes:", "attributedStringForZero", "attributedStringFrom:startOffset:to:endOffset:", - "attributedStringToEndOfGroup", "attributedStringValue", "attributedStringWithAttachment:", + "attributedStringWithHTML:documentAttributes:", + "attributedStringWithHTML:useEncoding:documentAttributes:", "attributedSubstringForMarkedRange", "attributedSubstringFromRange:", - "attributedText", "attributedTitle", "attributes", "attributesAtEndOfGroup", @@ -6155,251 +7395,259 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "attributesAtIndex:effectiveRange:inRange:", "attributesAtIndex:longestEffectiveRange:inRange:", "attributesAtPath:traverseLink:", - "attributesForVoice:", + "attributesByName", + "attributesForExtraLineFragment", "attributesWithStat:", - "authenticate:", - "authenticateName:withPassword:", - "authenticateName:withPassword:authOnly:", - "authenticateWithBufferItems:authType:authOnly:", + "authenticateComponents:withData:", "authenticateWithDelegate:", - "authenticationInfoWithAuthentication:forUser:andPass:", - "authenticationList", + "authenticationDataForComponents:", "authenticationMethod", - "autoPositionMask", - "autoResizesOutlineColumn", "autoenablesItems", - "autofill", - "autofillColor", - "autohidesScrollers", "automaticallyNotifiesObserversForKey:", "automaticallyPreparesContent", + "autorecalculatesKeyViewLoop", "autorelease", - "autoreleasePoolExists", - "autoreleasedObjectCount", "autorepeat", "autoresizesAllColumnsToFit", - "autoresizesOutlineColumn", "autoresizesSubviews", "autoresizingMask", - "autosaveExpandedItems", + "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:", "autosaveName", "autosaveTableColumns", - "autosaves", + "autosavedContentsFileURL", "autosavesConfiguration", - "autosavesConfigurationUsingIdentifier", + "autosavingFileType", "autoscroll:", "autosizesCells", + "autovalidates", "availableBindings", - "availableCollatorElements", - "availableCollators", "availableColorLists", "availableData", "availableFontFamilies", - "availableFontNamesWithTraits:", "availableFonts", "availableLanguageContextNames", - "availableLanguageNames", "availableMembersOfFontFamily:", - "availablePPDTypeFiles", + "availableProfiles", "availableResourceData", - "availableStringEncodings", "availableTypeFromArray:", - "availableUserServers", - "availableVoices", + "average:", "avoidsEmptySelection", - "awaitReturnValues", "awake", "awakeAfterUsingCoder:", + "awakeFromFetch", + "awakeFromInsert", "awakeFromNib", "backForwardList", "backItem", "backListCount", "backListWithLimit:", - "backgrounQueriesRunning", + "background", "backgroundColor", - "backgroundGray", - "backgroundImage", - "backgroundLayoutEnabled", + "backgroundEdgeColor", "backgroundLoadDidFailWithReason:", "backingType", - "backupDatabaseToPath:", + "base64DecodeData:", "baseAffineTransform", - "baseOfTypesetterGlyphInfo", + "baseGetter", + "baseSetter", "baseSpecifier", "baseURL", "baseWritingDirection", "baseline", "baselineLocation", "baselineOffsetInLayoutManager:glyphIndex:", - "becameVisible", "becomeFirstResponder", "becomeKeyWindow", "becomeMainWindow", "becomeMultiThreaded:", "becomeSingleThreaded:", "becomesKeyOnlyIfNeeded", - "beginAnimationInRect:fromRect:", + "beginConstructionWithSuiteRegistry:", "beginDataLoad", "beginDocument", "beginDocumentWithTitle:", "beginEditing", + "beginLayoutChange", + "beginLineWithGlyphAtIndex:", "beginLoadInBackground", - "beginLoadingImageDataForClient:", - "beginLoadingImageForEmails:forClient:", "beginModalSessionForWindow:", "beginModalSessionForWindow:relativeToWindow:", "beginPage:", "beginPage:label:bBox:fonts:", "beginPageInRect:atPlacement:", "beginPageSetupRect:placement:", + "beginParagraph", "beginPrologueBBox:creationDate:createdBy:fonts:forWhom:pages:title:", "beginSetup", "beginSheet", "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:", "beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:", + "beginSheetForSavePanel:withFilepath:didEndSelector:contextInfo:", "beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:", "beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:", "beginTrailer", + "beginTransaction", "beginUndoGrouping", "beginUpdateInsertionAnimationAtIndex:throwAwayCacheWhenDone:", - "beginUsingMenuRepresentation:", - "bestLocationRepFromPath:", + "beginUsingMenuFormRepresentation:", + "bestLocationRep", + "bestLocationRep:matchesBestLocationRep:", "bestLocationRepFromURL:", + "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:", "bestRepresentationForDevice:", "bestVisualFrameSizeForCharacterCount:", "bezelStyle", - "bezelStyleForState:", "bezierPath", - "bezierPathByFlatteningPath", - "bezierPathByReversingPath", "bezierPathWithOvalInRect:", "bezierPathWithRect:", "bidiProcessingEnabled", - "binaryAttributes", "binaryCollator", + "binaryOperatorForSelector", "bind:toObject:withKeyPath:options:", "bindHIViewToNSView:nsView:", + "bindVariables", "binderClassesForObject:", "binderClassesSuperseded", "binderSpecificFlagAtIndex:", - "binderUpdateType", "binders", "binding", "bindingCategory", + "bindingRunsAlerts:", "bindingsForObject:", - "birthDate", - "birthdayFieldPresent", "bitmapData", - "bitmapDataPlanes", - "bitmapImage", + "bitmapFormat", "bitmapRepresentation", "bitsPerPixel", "bitsPerSample", "blackColor", "blackComponent", "blendedColorWithFraction:ofColor:", - "blocksOtherRecognizers", + "blue", "blueColor", "blueComponent", "blueControlTintColor", - "bluetoothButton", - "body", + "blur1ROI:::", + "blur2ROI:::", + "blur:pass:", + "blurRegionOf:destRect:userInfo:", + "bodyBackgroundColor", "boldSystemFontOfSize:", "boolForKey:", + "boolParameterValue:", "boolValue", "booleanForKey:inTable:", "booleanValue", + "borderColorForEdge:", "borderRect", "borderType", "bottomCornerRounded", "bottomMargin", "boundingBox", + "boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:", "boundingRectForFont", "boundingRectForGlyph:", "boundingRectForGlyphRange:inTextContainer:", + "boundingRectWithSize:options:", + "boundingRectWithSize:options:attributes:", "bounds", - "boundsAsQDRect", "boundsForButtonCell:", "boundsForTextCell:", - "boundsRotation", + "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:", + "boundsRectForContentRect:inRect:textContainer:characterRange:", + "boundsRectForTextBlock:atIndex:effectiveRange:", + "boundsRectForTextBlock:glyphRange:", "boxType", "branchImage", "breakConnection", "breakLineAtIndex:", "breakLock", - "bridgeCount", + "bridgeForDOMDocument:", + "bridgeForView:", "brightColor", "brightnessComponent", - "brightnessSlider:", "broadcast", - "brownColor", "browser", "browser:createRowsForColumn:inMatrix:", "browser:didClickOnDisabledCell:atRow:column:", + "browser:isColumnValid:", "browser:numberOfRowsInColumn:", + "browser:selectCellWithString:inColumn:", + "browser:selectRow:inColumn:", "browser:shouldSizeColumn:forUserResize:toWidth:", + "browser:sizeToFitWidthOfColumn:", + "browser:titleOfColumn:", "browser:willDisplayCell:atRow:column:", - "browserColumnConfigurationDidChange:", - "bufferIsEmpty", + "browserDidScroll:", + "browserWillScroll:", + "buddhistCalendar", "bufferingSize", + "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:", "buildAlertStyle:title:message:first:second:third:oldStyle:args:", "buildFilterCache", "buildHTTPRequest", - "buildPropertyDict:", - "buildRequest", - "buildString", + "buildOrderByClauseWithSortDescriptors:", + "buildWhereClauseForRow:", + "buildWhereClauseWithSelectPredicate:", "builderForClass:", - "builderForObject:", - "builtInLabelsForProperty:", "builtInPlugInsPath", - "builtInProperties", "bundle", + "bundleForClass", "bundleForClass:", - "bundleForSuite:", "bundleIdentifier", - "bundleLanguages", - "bundleObject", "bundlePath", "bundleWithIdentifier:", "bundleWithPath:", + "busyButClickableCursor", + "buttonHeight", + "buttonImageForHeightReference", + "buttonImageNamePrefixForButtonState:", "buttonImageSourceWithName:", + "buttonImagesForButtonState:", + "buttonMask", "buttonNumber", "buttonPressed:", + "buttonROI:forRect:", + "buttonRectForBounds:", + "buttonRectangleForResolutionData:", + "buttonResult:buttonImage:inlayImage:highlightImage:figure:figureOffset:stripeGradient:phase:", + "buttonResultForResolutionData:", "buttons", "bytes", "bytesPerPlane", "bytesPerRow", "cString", - "cStringForStatus:", "cStringLength", + "cStringUsingEncoding:", + "cache", "cacheDepthMatchesImageDepth", - "cacheImageInRect:", + "cacheInsertStatement:", "cacheMiniwindowTitle:guess:", - "cacheMode", "cachePolicy", "cacheRect:", + "cacheStringImage:whiteText:", + "cachedChildren", + "cachedChildrenForExpandedNode:", "cachedChildrenForNode:", - "cachedDateForEmail:", "cachedDrawingImage", "cachedFontFromFamily:traits:size:", "cachedHandleForURL:", - "cachedImageForEmail:", - "cachedImagePathForEmail:", "cachedResponse", "cachedResponseForRequest:", "cachedResponseMustBeRevalidated", "cachedResponseRevalidated", - "cachesBezierPath", + "cachedSQLiteStatement", "calcDrawInfo:", "calcSize", + "calculateFigureCenter:", + "calculateFigureSize:", "calculatesAllSizes", + "calendar", "calendarDate", "calendarFormat", - "callbackBased", "canAdd", "canAddBinding:toController:", - "canAddField:", + "canAddChild", "canApplyValueTransformer:toBinding:", "canBeCompressedUsing:", "canBeConvertedToEncoding:", @@ -6407,108 +7655,97 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "canBecomeKeyView", "canBecomeKeyWindow", "canBecomeMainWindow", + "canBrowseNode:allowInteraction:", "canCachePage", "canChooseDirectories", "canChooseFiles", + "canChooseNode:", "canClickDisabledFiles", "canCloseDocument", "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", - "canCompleteForforPartialWordRange:", - "canConvertToBMPRepresentation", + "canConnect", "canCreateCollapsedSpecifierFromAbsolutePositionRecord:", "canCreateCollapsedSpecifierFromRangeRecord:", "canCreateDirectories", "canCycle", - "canDecodeHeaderData:", + "canDecodeDownloadHeaderData:", + "canDragRowsWithIndexes:atPoint:", "canDraw", "canGoBack", + "canGoBackOrForward:", "canGoForward", "canHandleRequest:", "canHide", + "canHighlightNode:", + "canIgnorePopulatingObject:", + "canIgnoreSettingMinAndMaxForObject:", "canImportData:", "canInitWithData:", "canInitWithPasteboard:", "canInitWithRequest:", "canInitWithURL:", "canInsert", + "canInsertChild", "canMakeTextLarger", "canMakeTextSmaller", + "canPaste", "canPopulateWithPlaceholders", "canProvideDocumentSource", - "canReachAddress:", "canRedo", "canRemove", - "canRunModal", + "canResumeDownloadDecodedWithEncodingMIMEType:", + "canSearch", "canSelectHiddenExtension", "canSelectNext", "canSelectPrevious", "canShowFile:", "canShowMIMEType:", "canShowMIMETypeAsHTML:", - "canSpawnSeparateThread", "canStart", "canStoreColor", "canSupportMinAndMaxForObject:", "canTakeFindStringFromSelection", + "canTargetLoadInFrame:", "canUndo", - "canUsePlugin:", - "canVolumeBeUnmounted", "cancel", "cancel:", "cancelAddCredentialsToRetryHTTPRequest:", - "cancelAllQueries", "cancelAuthentication:", "cancelAuthenticationChallenge:", - "cancelButtonCell", - "cancelButtonPressed:", "cancelButtonRectForBounds:", - "cancelChanges:", "cancelContentPolicy", - "cancelEditing", - "cancelImport:", - "cancelImporting:", - "cancelIncrementalLoad", + "cancelDelayedUpdate", "cancelIncrementalLoadForImage:", "cancelInput:conversation:", + "cancelLoadAndDestroyStreamWithError:", "cancelLoadInBackground", - "cancelLoadingImageDataForTag:", + "cancelLoadWithError:", "cancelOperation:", "cancelPerformSelector:target:argument:", - "cancelPerformSelectorsWithTarget:", "cancelPreviousPerformRequestsWithTarget:", "cancelPreviousPerformRequestsWithTarget:selector:object:", - "cancelQueries:", - "cancelQuery", - "cancelSheet:", + "cancelPreviouslScheduleRolloverWindow", "cancelUserAttentionRequest:", "cancelWithError:", "cancelledError", - "canonicalFormOfID:", "canonicalHTTPURLForURL:", "canonicalRequestForRequest:", - "canonicalString", + "canonicalXMLStringPreservingComments:", + "canonicalizeHTTPEncodingString", "capHeight", "capabilityMask", "capacity", - "capacityOfTypesetterGlyphInfo", - "capitalizeWord:", - "capitalizedAttributes", "capitalizedLetterCharacterSet", "capitalizedString", "captionTextField", - "carbonDelegate", "carbonHICommandIDFromActionSelector:", - "carbonPickerWindow", - "cardPane", - "cardScrollView", - "cardsFromGroup", - "cardsWithCategory:", + "carbonNotificationProc", + "caretRectAtNode:offset:affinity:", "cascadeTopLeftFromPoint:", - "caseConversionFlags", "caseInsensitiveCompare:", "caseSensitive", + "castObject:toType:", "catalogNameComponent", - "categories", "cell", "cellAtIndex:", "cellAtPoint:row:column:", @@ -6519,16 +7756,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "cellBackgroundColor", "cellBaselineOffset", "cellClass", - "cellEnabled:", - "cellForItemAtIndex:", "cellForRow:column:tableView:", "cellForRow:tableColumn:", "cellFrameAtRow:column:", "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:", + "cellMenuForSearchField", "cellOrControlForObject:", + "cellPadding", "cellPrototype", "cellSize", "cellSizeForBounds:", + "cellSpacing", "cellWithTag:", "cells", "center", @@ -6536,54 +7774,44 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "center:didRemoveObserver:name:object:", "centerOverMainWindow", "centerScanRect:", + "centerSelectionInVisibleArea", "centerSelectionInVisibleArea:", "centerTabMarkerWithRulerView:location:", - "centerTruncateString:toWidth:", "centerTruncateString:toWidth:withFont:", "cgsRegionObj", - "chainChildContext:", - "changeAction:", - "changeAddressFormat:", - "changeAttribute:index:newValue:", - "changeAttribute:oldValue:newValue:", "changeAttributes:", + "changeBaseWritingDirection:", "changeColor:", - "changeCompanyStatus:", "changeCount", "changeCurrentDirectoryPath:", "changeDestinationToPoint:", "changeDestinationToRect:", + "changeDisplayedColorName:", "changeDocumentBackgroundColor:", - "changeFieldLabel:", "changeFileAttributes:atPath:", "changeFont:", + "changeFontTrait:", "changeInLength", - "changeInstantField:", "changeOptionsPanelSettings:", - "changePassword:toNewPassword:", - "changeSaveType:", "changeSpelling:", "changeToolbarDisplayMode:", - "changeValue:forKey:", "changeWillBeUndone:", "changeWindowFrameSizeByDelta:display:animate:", "changeWindowsItem:title:filename:", - "changedGroups:", - "changedMembers:", - "changedValues", "charIndex", + "charRefToUnicode:", "charValue", "character:hasNumericProperty:", "character:hasProperty:", "characterAtIndex:", "characterCollection", - "characterDataImpl", + "characterEncoding", "characterIdentifier", "characterIndexForGlyphAtIndex:", "characterIndexForPoint:", "characterIsMember:", + "characterRange", "characterRangeForGlyphRange:actualGlyphRange:", - "characterSetCoveredByFont:language:", "characterSetWithBitmapRepresentation:", "characterSetWithCharactersInString:", "characterSetWithContentsOfFile:", @@ -6592,37 +7820,33 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "characters", "charactersIgnoringModifiers", "charactersToBeSkipped", - "chatWithPerson:", + "cheapBlur", + "cheapBlurROI:::", + "check:", "checkContentPolicyForResponse:", "checkForAuthenticationFailureInHTTPResponse:withURL:", "checkForRemovableMedia", + "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:", "checkSpaceForParts", "checkSpelling:", - "checkSpellingOfString:startingAt:", "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:", "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:", "childAtIndex:", - "childContext", "childCount", "childFrames", + "childGlyphStorageWithGlyphRange:cleanCopy:", "childItemWithName:", - "childNodes", - "childNodesMatchingString:", - "childSpecifier", + "childOfNode:atIndex:", + "childStore:didForgetObjectsWithObjectIDs:", + "childStores", "childWindows", - "childWithName:", "children", + "childrenChanged", + "childrenKeyPath", + "chineseCalendar", "chooseButtonPressed:", - "chooseCustomImage:", - "chooseFilename:", - "chooseRollOverIdentifier:withSelection:", - "chooseSize:", - "chooseSizeFromField:", - "chooseSizeFromList:", - "chooseSizeFromSlider:", "class", "classCode", - "classDelegate", "classDescription", "classDescriptionForClass:", "classDescriptionForDestinationKey:", @@ -6630,63 +7854,54 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "classDescriptionForKey:", "classDescriptionForKeyPath:", "classDescriptionWithAppleEventCode:", + "classDescriptions", + "classDescriptionsByName", "classDescriptionsInSuite:", + "classFallbacksForKeyedArchiver", "classForArchiver", "classForClassName:", "classForCoder", "classForKeyedArchiver", "classForKeyedUnarchiver", "classForPortCoder", - "classHintsForKeyedArchiver", "className", "classNameDecodedForArchiveClassName:", - "classNameEncodedForTrueClassName:", "classNameForClass:", "classNamed:", "classPropertyKeys", - "classTerminologyDictionary:", - "cleanUp", "cleanUpAfterDragOperation", - "cleanUpCardState", "cleanUpForRetry", "cleanUpOperation", "clear", "clear:", - "clearAll", - "clearAllFieldVisiblity", + "clearAllModelObjectObserving", "clearAsMainCarbonMenuBar", "clearAttributesCache", - "clearBackingStore", - "clearCacheForGroup:", + "clearCaches", + "clearChildren", + "clearClipping", "clearColor", "clearControlTintColor", + "clearController", "clearConversationRequest", "clearCurrentContext", - "clearCustomImage:", - "clearDataFileInfo", - "clearDirectoriesSelection", - "clearDirectoryResults", - "clearDirectoryResultsSelection", + "clearCurrentValues", "clearDrawable", - "clearField:", "clearFilterCache", "clearGLContext", "clearGlyphCache", - "clearGroupsSelection", "clearMarkedRange", - "clearMembersSelection", "clearNewAvailableData", - "clearPrivateFields", "clearProperties", "clearRecentDocuments:", - "clearSearchField", - "clearSearchField:", - "clearShadow", - "clearTempClickedRow", - "clearTemporaryCaches", + "clearRolloverTrackingRect", + "clearStartAnimation", + "clearStopAnimation", + "clearTableParameters", + "clearsFilterPredicateOnInsertion", "clickCount", "clickableContentRectForBounds:", - "clicked:", + "clicked", "clickedColumn", "clickedOnLink:atIndex:", "clickedRow", @@ -6694,34 +7909,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "clientView", "clientWrapperWithRealClient:", "clip:", + "clipForDrawingRow:column:", "clipFrameChanged:", "clipRect:", "clipToQDRegion:", "clippedItems", "clipviewBoundsChangedNotification:", - "cloneNode:", + "clockPreferencesChanged:", + "cloneRange", "close", "close:", "closeAllDocuments", "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:", "closeButton", - "closeDataFile", "closeFile", "closePath", "closeResourceFile:", "closeSpellDocumentWithTag:", "closeURL", "closeWidgetInView:withButtonID:action:", - "closeWindowForPerson:", "closeWindowSoon", "closedHandCursor", "closestTickMarkValueToValue:", "coalesceAffectedRange:replacementRange:selectedRange:text:", "coalesceInTextView:affectedRange:replacementRange:", "coalesceTextDrawing", + "cocoaSubVersion", "cocoaVersion", "code", - "codeSegment", "coerceArray:toColor:", "coerceColor:toArray:", "coerceColor:toData:", @@ -6737,28 +7952,33 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "coerceValue:toClass:", "collapseItem:", "collapseItem:collapseChildren:", - "collator:", + "collapsed", "collatorElementWithName:", "collatorWithName:", "collectResources", - "collectionNames", "color", "colorAtIndex:filtered:", - "colorForControlTint:", - "colorForProperty:", "colorFromPasteboard:", "colorFromPoint:", "colorList", "colorListChanged:", "colorListNamed:", - "colorMask", + "colorMatrixBiasKernel", "colorNameComponent", "colorPanel", "colorPanelColorChanged:", + "colorPanelColorDidChange:", "colorPanelDidSelectColorPicker:", + "colorProfile", + "colorSpace", + "colorSpaceForColorSpaceName:", + "colorSpaceModel", "colorSpaceName", + "colorSwathesChangedInAnotherApplicationNotification:", "colorSyncData", + "colorSyncProfile", "colorTable", + "colorUsingColorSpace:", "colorUsingColorSpaceName:", "colorUsingColorSpaceName:device:", "colorWithAlphaComponent:", @@ -6766,101 +7986,112 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "colorWithCalibratedRed:green:blue:alpha:", "colorWithCalibratedWhite:alpha:", "colorWithCatalogName:colorName:", + "colorWithColorSpace:components:count:", "colorWithDeviceCyan:magenta:yellow:black:alpha:", "colorWithDeviceHue:saturation:brightness:alpha:", "colorWithDeviceRed:green:blue:alpha:", "colorWithDeviceWhite:alpha:", "colorWithKey:", "colorWithPatternImage:", + "colorWithRed:green:blue:", + "colorWithRed:green:blue:alpha:", + "colorWithString:", "colorizeByMappingGray:toColor:blackMapping:whiteMapping:", "column", "columnAtPoint:", + "columnAutoresizingStyle", "columnContentWidthForColumnWidth:", - "columnFilters", - "columnNumber", + "columnDefinitions", + "columnName", "columnOfMatrix:", "columnResizeButtonImage", "columnResizeButtonRect", "columnResizingType", - "columnTitleForIdentifier:", - "columnTitleForProperty:", + "columnSpan", "columnWidthForColumnContentWidth:", "columnWithIdentifier:", "columnsAutosaveName", "columnsInRect:", - "combineStructures:withCustom:", + "columnsToFetch", + "comboBox:completedString:", "comboBox:indexOfItemWithStringValue:", "comboBox:objectValueForItemAtIndex:", "comboBoxCell:completedString:", "comboBoxCell:indexOfItemWithStringValue:", "comboBoxCell:objectValueForItemAtIndex:", - "comboBoxCellSelectionDidChange:", - "comboBoxCellSelectionIsChanging:", - "comboBoxCellWillDismiss:", - "comboBoxCellWillPopUp:", "comboBoxTextDidEndEditing:", + "command", "commandClassName", "commandDescription", "commandDescriptionWithAppleEventClass:andAppleEventCode:", + "commandDescriptions", + "commandDescriptionsByName", "commandDescriptionsInSuite:", "commandDisplay", "commandName", - "commandTerminologyDictionary:", + "commandWithEditCommand:", "commands", "comment", - "commentImpl", "commentURL", - "commentWithImpl:", + "commitChanges:", "commitEditing", - "commitPendingChanges", - "commitPendingChangesAndSave:", - "commonPrefixWithString:options:", + "commitEditingWithDelegate:didCommitSelector:contextInfo:", + "commitTransaction", + "committedSnapshotForObject:", + "commonAncestorContainer", "compare:", "compare:options:", "compare:options:range:", "compare:options:range:locale:", - "compareAscending:", - "compareCaseInsensitiveAscending:", - "compareCaseInsensitiveDescending:", - "compareContainsSubString:", - "compareContainsSubStringCaseInsensitive:", - "compareDescending:", + "compareBoundaryPoints::", "compareGeometry:", + "compareGeometryInWindowCoordinates:", "compareObject:toObject:", - "comparePrefixMatch:", - "comparePrefixMatchCaseInsensitive:", + "compareObjectValue:toObjectValue:", "compareSelector", - "compareWithRecordValue:", + "comparisonPredicateModifier", "compileAndReturnError:", "complete:", - "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:", + "completedSpoolToFile", "completedString:", "completes", - "completionEnabled", + "completionDelay", "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:", "completionsForPartialWordRange:indexOfSelectedItem:", "components", "componentsJoinedByString:", "componentsSeparatedByString:", - "componentsToDisplayForPath:", - "compositeName", "compositeToPoint:fromRect:operation:", "compositeToPoint:fromRect:operation:fraction:", "compositeToPoint:operation:", "compositeToPoint:operation:fraction:", - "computeCountForKey:", + "compoundPredicateType", + "computeButton", + "computeFigureRectangle:", + "computeHighlight", + "computeInlay", + "computeInsideShadow", + "computeInterpolatedResolution:data:", + "computeLinearA:andB:fromX0:y0:x1:y1:", + "computeOutline", + "computeOutsideShadow", + "computePageRectsWithPrintWidthScaleFactor:printHeight:", + "computeRectOfRow:cacheHint:", + "computeRowAtPoint:cacheHint:", + "computeTableHeight", "concat", "concat:", + "concludeDragForDraggingInfo:", + "concludeDragForDraggingInfo:actionMask:", "concludeDragOperation:", - "condition", + "conditionalBehaviorOffByDefault:", "conditionallySetsEditable", "conditionallySetsEnabled", "conditionallySetsHidden", - "configNode", "configurationDictionary", - "configurationPaletteIsRunning", - "configureAsServer", - "configureForActiveStateWithCurrentDirectoryNode:", + "configurationName", + "configurations", + "configureForActiveState", "configureForAllowsExpandingMultipleDirectories:", "configureForAllowsMultipleSelection:", "configureForCalculatesAllSizes:", @@ -6871,25 +8102,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "configureForDisplayedFileProperties:", "configureForInactiveState", "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:", + "configureForRolloverTrackingIfNecessary", + "configureForRolloverTrackingIfNecessaryForClipViewFrameChange", "configureForShowsPreviews:", "configureForSortedByFileProperty:ascending:caseSensitive:", "configureForTreatsDirectoryAliasesAsDirectories:", "configureForTreatsFilePackagesAsDirectories:", + "configurePersistentStoreCoordinatorForURL:ofType:error:", "confirmCloseSheetIsDone:returnCode:contextInfo:", - "confirmSheet:", "conformsTo:", "conformsToProtocol:", - "connectToLDAPServer:", + "connect", "connectedToInternet:", "connection", "connection:didCancelAuthenticationChallenge:", - "connection:didFailLoadingWithError:", "connection:didFailWithError:", "connection:didReceiveAuthenticationChallenge:", "connection:didReceiveData:", + "connection:didReceiveData:lengthReceived:", "connection:didReceiveResponse:", + "connection:handleRequest:", + "connection:shouldMakeNewConnection:", + "connection:willCacheResponse:", "connection:willSendRequest:redirectResponse:", - "connectionDidDie:", "connectionDidFinishLoading:", "connectionForProxy", "connectionWasBroken:", @@ -6897,14 +8132,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "connectionWithReceivePort:sendPort:", "connectionWithRegisteredName:host:", "connectionWithRegisteredName:host:usingNameServer:", - "connectionWithRequest:delegate:", - "connectionsCount", + "connectionsForKey:", + "constantValue", "constrainFrameRect:toScreen:", "constrainResizeEdge:withDelta:elapsedTime:", "constrainScrollPoint:", - "consumeImageData:forTag:", - "consumeJobEntry:", + "constraintDefinitions", "containerClassDescription", + "containerComponent", "containerIsObjectBeingTested", "containerIsRangeContainerObject", "containerNode", @@ -6912,46 +8147,52 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "containerSize", "containerSpecifier", "containsAttachments", - "containsGroupName:", "containsIndex:", - "containsIndexes:", "containsIndexesInRange:", - "containsItem:", + "containsItemForURLLatin1:length:", "containsItemForURLString:", - "containsKey:", + "containsItemForURLUnicode:length:", "containsObject:", - "containsObject:inRange:", "containsObjectIdenticalTo:", - "containsObjectsNotIdenticalTo:", "containsPoint:", "containsPort:forMode:", "containsRect:", - "containsTimer:forMode:", "containsURL:", "containsValueForKey:", "content", "contentAlpha", - "contentAspectRatio", "contentBinder", + "contentCountWithEditedMode:", + "contentDocument", "contentFill", + "contentFrame", + "contentKind", "contentMaxSize", "contentMinSize", + "contentObjectKey", + "contentObjectWithEditedMode:contentIndex:", "contentRect", "contentRectForFrameRect:", "contentRectForFrameRect:styleMask:", - "contentResizeIncrements", "contentSize", "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:", + "contentValueKey", + "contentValueWithEditedMode:contentIndex:", "contentView", - "contentViewMargins", + "contentWidth", + "contentWidthValueType", "contentsAtPath:", "contentsEqualAtPath:andPath:", "context", - "contextForSecondaryThread", "contextHelpForKey:", "contextHelpForObject:", "contextID", - "contextMenuRepresentation", + "contextMenuItemsForElement:", + "contextWithBitmap:rowBytes:bounds:format:options:", + "contextWithCGContext:", + "contextWithCGContext:options:", + "contextWithCGLContext:pixelFormat:options:", + "contextWithOptions:", "continue", "continueAfterBytesAvailable", "continueAfterContentPolicy:", @@ -6959,11 +8200,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "continueAfterEndEncountered", "continueAfterNavigationPolicy:formState:", "continueBeginLoadInBackgroundAfterCreatingHTTPRequest", - "continueHeaderReadAfter3xxResponseAndCall:", - "continueHeaderReadAfterFailureResponseAndCall:", + "continueHeaderReadAfterFailureResponse", "continueTracking:at:inView:", "continueTrackingWithEvent:", "continueWithoutCredentialForAuthenticationChallenge:", + "continuouslyUpdatesValue", + "control", "control:didFailToFormatString:errorDescription:", "control:didFailToFormatString:errorDescription:inFrame:", "control:didFailToValidatePartialString:errorDescription:", @@ -6974,8 +8216,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "control:textShouldBeginEditing:inFrame:", "control:textShouldEndEditing:", "control:textShouldEndEditing:inFrame:", + "control:textView:completions:forPartialWordRange:", + "control:textView:completions:forPartialWordRange:indexOfSelectedItem:", "control:textView:doCommandBySelector:", "control:textView:doCommandBySelector:inFrame:", + "control:textView:shouldHandleEvent:", + "control:textView:shouldHandleEvent:inFrame:", "controlAlternatingRowBackgroundColors", "controlAlternatingRowColor", "controlBackgroundColor", @@ -6983,6 +8229,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "controlColor", "controlContentFontOfSize:", "controlDarkShadowColor", + "controlDrawsSelectionHighlights", "controlFillColor", "controlHighlightColor", "controlLightHighlightColor", @@ -6997,27 +8244,25 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "controlTextDidChange:inFrame:", "controlTextDidEndEditing:", "controlTextDidEndEditing:inFrame:", - "controlTint", "controlView", - "controlViewWillBecomeFirstResponder:", - "controlViewWillResignFirstResponder:", "controller", + "controller:didChangeToFilterPredicate:", + "controller:didChangeToSelectionIndexPaths:", + "controller:didChangeToSelectionIndexes:", + "controller:didChangeToSortDescriptors:", "controllerForBinding:", "controlsInForm:", - "conversation", "conversationIdentifier", "conversationRequest", "convertAttributes:", "convertBaseToScreen:", - "convertCharacters:length:toGlyphs:skipControlCharacters:", + "convertCString:toUnsignedInt64:withBase:", "convertFont:", - "convertFont:toApproximateTraits:", "convertFont:toFace:", "convertFont:toFamily:", "convertFont:toHaveTrait:", "convertFont:toNotHaveTrait:", "convertFont:toSize:", - "convertOldFactor:newFactor:", "convertPoint:fromView:", "convertPoint:toView:", "convertRect:fromView:", @@ -7025,12 +8270,13 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "convertScreenToBase:", "convertSize:fromView:", "convertSize:toView:", + "convertStringToUChar:", + "convertToDictionary", + "convertToRGBA:", "convertType:data:to:inPasteboard:usingFilter:", - "convertUnicodeCharacters:length:toGlyphs:", "convertWeight:ofFont:", - "converterLockFileName", + "convolveROI:forRect:", "cookieAcceptPolicy", - "cookieRequestHeaderFieldsForURL:", "cookieWithProperties:", "cookieWithV0Spec:forURL:locationHeader:", "cookies", @@ -7041,8 +8287,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "copiesOnScroll", "copy", "copy:", - "copy:into:", - "copyAttributesFromContext:withMask:", + "copyBindingsFromObject:toObject:", + "copyCachedInstance", "copyDOMNode:copier:", "copyDOMTree:", "copyDropDirectory", @@ -7053,23 +8299,27 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "copyLinkToClipboard:", "copyOfCalendarDate", "copyPath:toPath:handler:", + "copyPreviewIcon", "copyRenderNode:copier:", "copyRenderTree:", "copyRuler:", "copySerializationInto:", + "copyToObject:", "copyWithZone:", "copyright", "cornerView", + "correlation", + "correlationTableName", "count", "countFiltered:", - "countForKey:", + "countForIndexPath:", + "countForNode:", "countForObject:", - "countOccurrences:", - "countWordsInString:language:", + "countKeyPath", + "countOfCachedChildrenForNode:", "coveredCharacterCache", + "coveredCharacterCacheData", "coveredCharacterSet", - "coversAllCharactersInString:", - "coversCharacter:", "crayonAtIndex:", "crayonClosestToIndex:", "crayonToLeft", @@ -7077,101 +8327,113 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "crayonToRight", "crayonToRightOfCrayon:", "crayons", - "createAttribute:", - "createAttributeNS::", - "createCDATASection:", + "createAdapterOperationsForDatabaseOperation:", + "createAndCacheRowHeightSumsIfNecessary", + "createCGImage:", + "createCGImage:format:", + "createCGImage:fromRect:format:", + "createCMYKColorSpace", + "createCSSStyleDeclaration", + "createCTTypesetter", "createChildFrameNamed:withURL:renderPart:allowsScrolling:marginWidth:marginHeight:", "createClassDescription", "createCommandInstance", "createCommandInstanceWithZone:", - "createComment:", + "createConnection", "createContext", + "createConversationForConnection:", + "createCopy:", "createDictHashTable:", "createDirectoryAtPath:attributes:", - "createDocument:::", "createDocumentFragment", - "createDocumentType:::", - "createDragProgressWindow:forRow:", "createElement:", - "createElementNS::", - "createEntityReference:", + "createElementContent:", + "createElementContentFromString:", "createFTPReadStream", "createFileAtPath:contents:attributes:", - "createFirstLastSortingNamePart1:part2:", + "createGrayColorSpace", "createKHTMLViewWithNSView:marginWidth:marginHeight:", "createKeyValueBindingForKey:typeMask:", - "createLastFirstSortingNamePart1:part2:", - "createProcessingInstruction::", + "createMDQueryNodeRefIfNecessary", + "createMetadata", + "createNamedNodeFromNode:reader:", + "createPredicateForFetchFromPredicate:", + "createRGBColorSpace", "createRandomKey:", + "createRange", "createRealObject", + "createSchema", "createSharedAdapter", + "createSharedBridge", "createSharedFactory", + "createSharedGenerator", + "createStream:", "createSymbolicLinkAtPath:pathContent:", - "createTextNode:", - "createTexture:fromView:internalFormat:", + "createTablesForEntities:", "createUniqueKey:", "createWindowWithURL:frameName:", + "createsSortDescriptor", "creationDate", "credentialWithKeychainItem:", "credentialWithUser:password:persistence:", "credentialsForProtectionSpace:", "credits", - "crop", - "croppedImage", + "criticalValue", "crosshairCursor", + "cssText", + "cssValueType", + "ctFontRef", + "cubeImage", "current", "currentAppleEvent", - "currentCommand", - "currentContainer", + "currentBrowsingNodePath", + "currentButtonCell", + "currentButtonClicked:", + "currentButtonState", + "currentClipRect", + "currentConstructionContext", "currentContext", "currentContextDrawingToScreen", - "currentControlTint", - "currentConversation", "currentCursor", "currentDirectory", "currentDirectoryNode", "currentDirectoryPath", - "currentDiskUsage", "currentDocument", "currentEditor", - "currentEditorForEitherField", - "currentEditorForSecureField", "currentEvent", "currentForm", "currentFrame", "currentFrameDuration", "currentHandler", "currentHost", - "currentImageNumber", "currentInputContext", "currentInputManager", "currentItem", - "currentLayoutManager", - "currentMainStructure:", - "currentMemoryUsage", + "currentLocalSearchScopeNode", + "currentLocale", "currentMode", "currentOperation", "currentPage", "currentParagraphStyle", - "currentPassNumber", - "currentPicture", "currentPluginView", "currentPoint", + "currentProgress", "currentReplyAppleEvent", + "currentResolvedDirectoryNode", "currentRunLoop", + "currentSuiteAppleEventCode", + "currentSuiteTerminology", "currentTaskDictionary", "currentTextContainer", - "currentTextStorage", - "currentTextView", "currentThread", - "currentVirtualScreen", + "currentTypeSelectDirectoryNode", + "currentValue", "currentVoiceIdentifier", "currentWindow", "cursiveFontFamily", - "cursor", "curveToPoint:controlPoint1:controlPoint2:", + "customAttributes", "customTextEncodingName", - "customUserAgent", "customizationPaletteIsRunning", "cut:", "cyanColor", @@ -7181,112 +8443,113 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "cycleToNextInputScript:", "cycleToNextInputServerInLanguage:", "darkGrayColor", + "dashboardRegions", + "dashboardRegionsChanged:", "data", "data1", "data2", - "dataBaseChanged:", "dataCell", "dataCellForRow:", - "dataFile", - "dataForFile:", "dataForKey:", + "dataForObjectID:", + "dataForObjectID:withContext:", + "dataForPPI:", + "dataForResolutionData:", "dataForType:", "dataForType:fromPasteboard:", "dataFromPropertyList:format:errorDescription:", + "dataFromRange:documentAttributes:error:", + "dataOfType:error:", "dataRepresentation", "dataRepresentationOfType:", "dataSource", - "dataSourceCount", "dataSourceUpdated:", - "dataTypeDoesNotExist:forKey:inCurrentStruct:inCustomStruct:", + "dataStampForTriplet:littleEndian:", "dataUsingEncoding:", "dataUsingEncoding:allowLossyConversion:", - "dataValueOfProperty:", "dataWithBytes:length:", "dataWithBytesNoCopy:length:", "dataWithBytesNoCopy:length:freeWhenDone:", "dataWithCapacity:", "dataWithContentsOfFile:", + "dataWithContentsOfFile:options:error:", "dataWithContentsOfMappedFile:", "dataWithContentsOfURL:", + "dataWithContentsOfURL:options:error:", "dataWithData:", "dataWithEPSInsideRect:", "dataWithLength:", "dataWithPDFInsideRect:", - "databaseChanged:", - "databaseChangedExternally:", - "databaseChangedForUserInfo:groupsChanged:peopleChanged:", + "database", + "databaseOperationForGlobalID:", + "databaseOperationForObject:", + "databaseOperator", + "databaseUUID", + "databaseVersion", "date", "dateByAddingYears:months:days:hours:minutes:seconds:", "dateFormat", - "dateFromISO8601String:", - "dateWithCalendarFormat:timeZone:", - "dateWithDate:", + "datePickerCell:validateProposedDateValue:timeInterval:", + "datePickerElements", + "datePickerMode", + "datePickerStyle", + "dateValue", "dateWithNaturalLanguageString:", "dateWithNaturalLanguageString:date:locale:", "dateWithNaturalLanguageString:locale:", - "dateWithString:", - "dateWithString:calendarFormat:", "dateWithString:calendarFormat:locale:", - "dateWithTimeInterval:sinceDate:", "dateWithTimeIntervalSince1970:", "dateWithTimeIntervalSinceNow:", "dateWithTimeIntervalSinceReferenceDate:", "dateWithYear:month:day:hour:minute:second:timeZone:", - "dayOfCommonEra", "dayOfMonth", "dayOfWeek", "dayOfYear", + "dbSnapshot", "deactivate", "dealloc", + "deallocAllExpandedNodes", "deallocateCFNetworkResources", + "deallocatePayloadForObjectID:", + "debugDefault", "debugDescription", + "decObservationCount", "decimalDigitCharacterSet", - "decimalNumberByAdding:", "decimalNumberByAdding:withBehavior:", "decimalNumberByDividingBy:", "decimalNumberByDividingBy:withBehavior:", - "decimalNumberByMultiplyingBy:", "decimalNumberByMultiplyingBy:withBehavior:", - "decimalNumberByMultiplyingByPowerOf10:", "decimalNumberByMultiplyingByPowerOf10:withBehavior:", - "decimalNumberByRaisingToPower:", "decimalNumberByRaisingToPower:withBehavior:", "decimalNumberByRoundingAccordingToBehavior:", - "decimalNumberBySubstracting:", - "decimalNumberBySubstracting:withBehavior:", - "decimalNumberBySubtracting:", "decimalNumberBySubtracting:withBehavior:", "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", "decimalNumberWithDecimal:", - "decimalNumberWithMantissa:exponent:isNegative:", "decimalNumberWithString:", "decimalNumberWithString:locale:", "decimalSeparator", "decimalTabMarkerWithRulerView:location:", "decimalValue", "declareTypes:owner:", - "decodeAllIntoBuffer:size:", + "decodeAllIntoBuffer:size:useZeroBytesForCRC:", "decodeArrayOfObjCType:count:at:", "decodeBoolForKey:", "decodeBytesForKey:returnedLength:", "decodeBytesWithReturnedLength:", "decodeClassName:asClassName:", - "decodeColumns:", "decodeData:", - "decodeData:dataForkData:resourceForkData:", "decodeDataObject", "decodeDoubleForKey:", + "decodeDownloadData:dataForkData:resourceForkData:", + "decodeDownloadHeader", + "decodeDownloadHeader:headerLength:modificationTime:filename:", "decodeFloatForKey:", "decodeForkWithData:count:CRCCheckFlag:", - "decodeHeader", - "decodeHeader:headerLength:modificationTime:filename:", "decodeInt32ForKey:", "decodeInt64ForKey:", "decodeIntForKey:", - "decodeIntoBuffer:size:", + "decodeIntoBuffer:size:useZeroBytesForCRC:", "decodeNXColor", - "decodeNXObject", "decodeObject", "decodeObjectForKey:", "decodePoint", @@ -7305,31 +8568,39 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "decomposableCharacterSet", "decomposedStringWithCanonicalMapping", "decomposedStringWithCompatibilityMapping", + "decreaseUseCount", "decrementButtonWithParent:", - "decrementNumberOfThreadsAlive:withSessionUID:", - "decrementOriginLoadCount", + "decrementRefCount", + "decrementRefCountForObjectID:", + "decrementSnapshotCountForGlobalID:", + "decryptComponents:", "decryptWithDelegate:", + "deepNodeCopy:", + "deepPropertiesCopy:", + "deepSubnodeCopy:", "deepestScreen", - "defaultAddressBookPreferencesFile", "defaultAttachmentScaling", - "defaultAttributes", "defaultBaselineOffsetForFont:", "defaultBehavior", "defaultButtonCell", "defaultCStringEncoding", "defaultCenter", + "defaultClassPath", "defaultCollator", - "defaultConnection", - "defaultCountryCode", + "defaultCompletionDelay", "defaultCredentialForProtectionSpace:", + "defaultDateFormatter", "defaultDecimalNumberHandler", "defaultDepthLimit", "defaultFixedFontSize", "defaultFlatness", "defaultFocusRingType", "defaultFontSize", + "defaultFormatterBehavior", + "defaultHandler", "defaultIconSize", "defaultIconWithSize:", + "defaultLabelFontAttribute", "defaultLanguage", "defaultLanguageCode", "defaultLanguageContext", @@ -7339,80 +8610,71 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "defaultLineJoinStyle", "defaultLineWidth", "defaultManager", + "defaultMappingGenerator", "defaultMenu", "defaultMiterLimit", - "defaultNameOrdering", - "defaultNameServerPortNumber", - "defaultObjectValue", + "defaultNamespaceForPrefix:", + "defaultNamespaceForURI:", "defaultParagraphStyle", "defaultPixelFormat", "defaultPlaceholderForBinding:onObjectClass:", "defaultPlaceholderForMarker:withBinding:", "defaultPlaceholderLookupClassForBinding:object:", - "defaultPortNameServer", "defaultPreferencesClass", "defaultPrinter", "defaultQueue", - "defaultRowHeight", + "defaultShadowColor", + "defaultSortDescriptorPrototypeForTableColumn:", "defaultStringDrawingTypesetterBehavior", "defaultSubcontainerAttributeKey", "defaultTabInterval", "defaultTextColor", "defaultTextColorWhenObjectValueIsUsed:", - "defaultTextEncoding", "defaultTextEncodingName", "defaultTimeZone", - "defaultTimeoutInterval", + "defaultTokenizingCharacterSet", + "defaultType", "defaultTypesetterBehavior", + "defaultValue", + "defaultValueFontAttribute", "defaultVoice", "defaultWindingRule", "defaultWritingDirectionForLanguage:", "defaults", "defaultsChanged:", - "defaultsDictionary", "deferSync", "defersCallbacks", "defersLoading", - "delay", - "delayDatabaseCleanup", - "delayWindowOrdering", + "definition", + "delayedProcessGetInfoButtonClick:", + "delayedProcessLogonButtonClick:", "delegate", - "delegateBased", - "delegatedObject", - "delete", "delete:", - "deleteAction:", "deleteBackward:", - "deleteBackwardByDecomposingPreviousCharacter:", "deleteCharactersInRange:", - "deleteConfirmSheetDidEnd:returnCode:contextInfo:", - "deleteCookie:", "deleteCookies:", - "deleteData::", - "deleteForward:", + "deleteCorrelation:", "deleteGlyphsInRange:", - "deleteKey:", + "deleteImageTexture:name:userInfo:", + "deleteKeyPressed", "deleteLastCharacter", + "deleteObject:", "deleteObjectsInRange:", - "deleteToBeginningOfLine:", - "deleteToBeginningOfParagraph:", - "deleteToEndOfLine:", - "deleteToEndOfParagraph:", - "deleteToMark:", - "deleteWordBackward:", - "deleteWordForward:", - "deletedGroups:", - "deletedMembers:", + "deleteRow:", + "deleteRows:atIndex:", + "deleteRule", + "deleteSelectionWithSmartDelete:", + "deletedObjects", + "deletesObjectsOnRemove", + "deliverResource", + "deliverResourceAfterDelay", "deliverResult", "deltaX", "deltaY", "deltaZ", "deminiaturize:", - "departmentFieldPresent", "depth", "depthLimit", - "dequeueNotificationsMatching:coalesceMask:", - "dereferencedEntity:", "descender", "descent", "description", @@ -7420,7 +8682,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "descriptionForInstanceMethod:", "descriptionForMIMEType:", "descriptionForMethod:", - "descriptionInStringsFileFormat", + "descriptionForOptionalSubelementName:", "descriptionWithCalendarFormat:", "descriptionWithCalendarFormat:locale:", "descriptionWithCalendarFormat:timeZone:locale:", @@ -7430,7 +8692,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "descriptorByTranslatingObject:ofType:inSuite:", "descriptorForKeyword:", "descriptorType", - "descriptorWithBoolean:", "descriptorWithDescriptorType:bytes:length:", "descriptorWithDescriptorType:data:", "descriptorWithEnumCode:", @@ -7441,23 +8702,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "deselectAll:", "deselectAllCells", "deselectColumn:", - "deselectDirectoryResultRow:subrow:", - "deselectGroup:", - "deselectIdentifier:forPerson:", "deselectItemAtIndex:", - "deselectMemberRow:subrow:", - "deselectRecord:", "deselectRow:", - "deselectRow:subrow:", "deselectSelectedCell", + "deselectText", "deserializeAlignedBytesLengthAtCursor:", - "deserializeBytes:length:atCursor:", "deserializeData:", - "deserializeDataAt:ofObjCType:atCursor:context:", "deserializeIntAtCursor:", "deserializeIntAtIndex:", "deserializeInts:count:atCursor:", - "deserializeInts:count:atIndex:", "deserializeList:", "deserializeListItemIn:at:length:", "deserializeNewData", @@ -7466,226 +8719,206 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "deserializeNewObject", "deserializeNewPList", "deserializeNewString", + "deserializeObjectAt:ofObjCType:fromData:atCursor:", "deserializePList:", "deserializePListKeyIn:", "deserializePListValueIn:key:length:", "deserializePropertyListFromData:atCursor:mutableContainers:", "deserializePropertyListFromData:mutableContainers:", - "deserializePropertyListLazilyFromData:atCursor:length:mutableContainers:", - "deserializeServers:", "deserializeString:", "deserializer", - "deserializerStream", + "destKey", + "destNode", "destination", + "destinationAttributeName", + "destinationEntity", + "destinationEntityExternalName", + "destinationsForRelationship:", "destroyAllPlugins", "destroyContext", "destroyStream:reason:", - "destroyStreamWithReason:", + "destroyStreamWithError:", + "detach", "detachColorList:", - "detachDrawingThread:toTarget:withObject:", + "detachInstanceInfo:", "detachNewThreadSelector:toTarget:withObject:", + "detachQButton", + "detachQComboBox", + "detachQLineEdit", + "detachQScrollBar", + "detachQSlider", + "detachQTextEdit", "detachSubmenu", - "detailedDescription", "detailedDescriptionForClass:", + "determineContentEncoding", "determineErrorAndFail", + "determineHTTPEncodingFromString:", "determineTransferEncoding", - "developmentLocalization", + "deviceCMYKColorSpace", "deviceDescription", + "deviceGrayColorSpace", "deviceID", + "deviceRGBColorSpace", "dictionary", - "dictionaryForKey:", + "dictionaryForOptionalSubelementName:", "dictionaryInfo:", + "dictionaryNesting:", "dictionaryRepresentation", "dictionaryWithCapacity:", "dictionaryWithContentsOfFile:", - "dictionaryWithContentsOfURL:", "dictionaryWithDictionary:", "dictionaryWithObject:forKey:", "dictionaryWithObjects:forKeys:", "dictionaryWithObjects:forKeys:count:", "dictionaryWithObjectsAndKeys:", "dictionaryWithValuesForKeys:", + "didAccessValueForKey:", "didAddCredentials:toRequest:context:", "didAddSubview:", + "didCancelAuthenticationChallenge:", "didChange", "didChange:valuesAtIndexes:forKey:", + "didChangeExpandedNodes", "didChangeText", "didChangeValueForKey:", + "didChangeValueForKey:withSetMutation:usingObjects:", + "didChangeValuesForArrangedKeys:objectKeys:indexKeys:", "didEndAlert:returnCode:contextInfo:", "didEndSheet:returnCode:contextInfo:", + "didFailWithError:", "didFinishColumnScrollWithHelper:", + "didFinishLoading", + "didFirstLayout", "didLoadBytes:loadComplete:", "didLoadData:", - "didNotOpenURL:", + "didNotOpenURL:pageCache:", + "didPostNotificationForNodeEventKind:notification:", + "didReceiveAuthenticationChallenge:", + "didReceiveData:lengthReceived:", + "didReceiveResponse:", + "didSave", + "didSendActionNotification:", + "didSetName:", "didStart", + "didTurnIntoFault", + "differenceParameter:new:old:into:", "directDataAvailable:", "directDataComplete", "directParameter", - "directionalType:", - "directories", - "directoriesController", - "directoriesGroup", - "directoriesPane", - "directoriesSelectionChanged:", "directory", - "directoryAtIndex:", - "directoryAttributes", "directoryCanBeCreatedAtPath:", "directoryContentsAtPath:", "directoryContentsAtPath:matchingExtension:options:keepExtension:", - "directoryDataHasArrived:", - "directoryResultAtIndex:", - "directoryResults", - "directoryResultsController", - "directoryResultsPane", - "directoryResultsSelectionChanged:", - "directoryResultsSubrows", - "directorySelectionPopUpButtonClick:", - "directoryServicesNodes", - "directoryServicesServer", - "directoryServicesServer:", "disableCursorRects", - "disableDelegateMessages", "disableDisplayPositing", "disableFlush", "disableFlushWindow", "disableHeartBeating", "disableKeyEquivalentForDefaultButtonCell", - "disableSelectionChanging", - "disableUndoRegistration", + "disableMakeHistory", + "disableUpdates", "disabledControlTextColor", - "disabledImageForControlTint:", - "disabledSelectedImageForControlTint:", - "disabledUnselectedImage", - "discardCachedImage", + "disabledWhenInactive", + "disappearingItemCursor", "discardCursorRects", "discardEditing", "discardEventsMatchingMask:beforeEvent:", - "disconnect:", - "diskCapacity", + "disconnect", "dismissPopUp", "dismissPopUp:", "dispatch", - "dispatchDoubleAction:", - "dispatchGroupDoubleClick:", - "dispatchGroupSelection:", + "dispatchEvent:", "dispatchInvocation:", - "dispatchNameDoubleClick:", - "dispatchNameSelection:", - "dispatchPropertyChanged:", "dispatchRawAppleEvent:withRawReply:handlerRefCon:", - "dispatchValueSelection:", + "displaceROI:forRect:userInfo:", "display", - "displayAllColumns", - "displayColumn:", - "displayCompletions:forPartialWordRange:originalString:atPoint:forTextView:", + "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:", "displayIfNeeded", "displayIfNeededIgnoringOpacity", "displayIfNeededInRect:", "displayIfNeededInRectIgnoringOpacity:", "displayIgnoringOpacity", - "displayImageInPicker:", "displayMode", "displayName", "displayNameAtPath:", - "displayNameForKey:", - "displayNameForObjectName:", "displayNameForType:", "displayPattern", "displayRect:", "displayRectIgnoringOpacity:", "displayStateForNode:", + "displayString", "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:", "displayStringsForAttributes:includeBoldItalic:", "displayStringsForParagraphStyle:", - "displayTitleInPicker:", "displayToolTip:", "displayValueForObjectValue:", - "displayableSampleText", - "displayableSampleTextForLanguage:", "displayableString", - "displayedCard", - "displayedColumns", - "displayedCommandsTitle", "displayedFileProperties", - "displayedGroups", - "displayedMemberMatching:", - "displayedMembers", - "displayedMembersSubrows", - "displayedProperties", - "displayedProperty", - "displayedRecords", "displayedStringsArray", "displayedTitle", + "displaysEnabledAtRow:", + "displaysTokenWhileEditing", "displaysTooltips", + "displaysWhenScreenProfileChanges", + "disposeGlyphStack", "dissolveToPoint:fraction:", "dissolveToPoint:fromRect:fraction:", "distantFuture", "distantPast", - "distributionIdentifierForProperty:person:", - "distributionIndexForProperty:person:", - "distributionStringsForMembers", - "distributionValueForProperty:person:", + "divide:by:", "dividerThickness", - "doAwakeFromNib", + "doCalcDrawInfo:", "doClick:", - "doClose:", "doCommandBySelector:", "doCommandBySelector:client:", - "doDelete:", - "doDeleteInReceiver:", + "doCompletion", "doDoubleClick:", - "doFileCompletion:", - "doIconify:", - "doIt", + "doFileCompletion:isAutoComplete:reverseCycle:", "doProgressiveLoad", "doProgressiveLoadHeader", "doProgressiveLoadImage", "doQueuedWork", - "doRemoveFromGroup", - "doSelectAll:", + "doRegexForString:pattern:flags:", "docFormatData", - "docFormatFromRange:documentAttributes:", "dockTitleIsGuess", - "doctype", "document", + "documentAttribute:", "documentAttributes", "documentClassForType:", + "documentClassNames", + "documentContentKind", "documentCursor", "documentEdited", "documentElement", "documentForFileName:", + "documentForURL:", "documentForWindow:", - "documentFragmentImpl", - "documentFragmentWithImpl:", - "documentImpl", + "documentFragmentForDocument:", + "documentFragmentWithMarkupString:baseURLString:", + "documentFragmentWithText:", "documentRect", "documentRef", "documentSource", "documentState", - "documentTypeImpl", - "documentTypeWithImpl:", "documentView", + "documentViewAtWindowPoint:", "documentVisibleRect", - "documentWithImpl:", "documents", "doesContain:", "doesNotRecognize:", "doesNotRecognizeSelector:", - "doesPropertyExist:inTable:", "domain", "done", + "doneLoading", + "doneProcessingData", + "doneSendingPopUpAction:", "doneTrackingMenu:", "doubleAction", - "doubleAction:", - "doubleClickAction", "doubleClickAtIndex:", "doubleClickAtIndex:inRange:", "doubleClickHandler", "doubleClickInString:atIndex:useBook:", - "doubleForKey:", "doubleValue", - "doubleValueOfProperty:", "download", "download:decideDestinationWithSuggestedFilename:", "download:didBeginChildDownload:", @@ -7697,6 +8930,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "download:didReceiveResponse:", "download:shouldBeginChildDownloadOfSource:delegate:", "download:shouldDecodeSourceDataOfMIMEType:", + "download:willResumeWithResponse:fromByte:", "download:willSendRequest:redirectResponse:", "downloadDelegate", "downloadDidBegin:", @@ -7704,28 +8938,37 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "downloadImageToDisk:", "downloadLinkToDisk:", "downloadURL:element:", - "dragAnimationComplete:toRow:", + "downloadWindowForAuthenticationSheet:", + "dragCaretDOMRange", "dragColor:withEvent:fromView:", - "dragColor:withEvent:inView:", - "dragFile:fromRect:slideBack:event:", + "dragExitedWithDraggingInfo:", + "dragImage", "dragImage:at:offset:event:pasteboard:source:slideBack:", "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:", + "dragImageForAtomAttachmentCell:", "dragImageForRows:event:dragImageOffset:", + "dragImageForRowsWithIndexes:tableColumns:event:offset:", "dragImageForSelectionWithEvent:origin:", + "dragOperationForDraggingInfo:", "dragOperationForDraggingInfo:type:", - "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:", "dragRectForFrameRect:", "dragSelectionWithEvent:offset:slideBack:", + "dragSourceEndedAt:operation:", + "dragSourceMovedTo:", "draggedColumn", "draggedDistance", "draggedImage", "draggedImage:beganAt:", + "draggedImage:endedAt:deposited:", "draggedImage:endedAt:operation:", "draggedImage:movedTo:", "draggedImageLocation", + "draggingCancelledWithDraggingInfo:", "draggingDestinationWindow", + "draggingEnded:", "draggingEntered:", "draggingExited:", + "draggingKeyBindingManager", "draggingLocation", "draggingPasteboard", "draggingSequenceNumber", @@ -7733,26 +8976,29 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "draggingSourceOperationMask", "draggingSourceOperationMaskForLocal:", "draggingUpdated:", + "draggingUpdatedWithDraggingInfo:actionMask:", + "drain", "draw", "drawArrow:highlight:", "drawArrow:highlightPart:", "drawAtPoint:", "drawAtPoint:fromRect:operation:fraction:", + "drawAtPoint:inContext:", "drawAtPoint:withAttributes:", + "drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:", "drawBackgroundForGlyphRange:atPoint:", "drawBackgroundInClipRect:", "drawBackgroundInRect:", "drawBackgroundInRect:inView:highlight:", + "drawBackgroundWithFrame:inView:characterRange:layoutManager:", "drawBarInside:flipped:", "drawBevel:", + "drawBevel:inFrame:topCornerRounded:", "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:", + "drawBezelWithFrame:inView:", "drawBorderAndBackgroundWithFrame:inView:", "drawCell:", - "drawCellAtIndex:", "drawCellAtRow:column:", - "drawCellInside:", - "drawCharacters:stringLength:fromCharacterPosition:toCharacterPosition:atPoint:withPadding:withTextColor:backgroundColor:rightToLeft:letterSpacing:wordSpacing:smallCaps:fontFamilies:", - "drawClippedToValidInRect:fromRect:", "drawColor", "drawColor:", "drawCrayonLayer", @@ -7762,12 +9008,18 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "drawGlyphsForGlyphRange:atPoint:", "drawGridInClipRect:", "drawHashMarksAndLabelsInRect:", - "drawHighlightWithFrame:inView:", + "drawHighlightForRun:style:geometry:", + "drawImage:inRect:fromRect:", + "drawImage:withFrame:inView:", + "drawImageAtIndex:inRect:fromRect:adjustedSize:compositeOperation:context:", + "drawImageAtIndex:inRect:fromRect:compositeOperation:context:", + "drawImageInRect:fromRect:", + "drawImageInRect:fromRect:compositeOperator:context:", "drawImageWithFrame:inView:", "drawInRect:", "drawInRect:fromRect:operation:fraction:", - "drawInRect:onView:", "drawInRect:onView:pinToTop:", + "drawInRect:withAlpha:operation:flipped:", "drawInRect:withAttributes:", "drawInView:", "drawInsertionPointInRect:color:turnedOn:", @@ -7778,39 +9030,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "drawKnobSlotInRect:highlight:", "drawLabel:inRect:", "drawLineForCharacters:yOffset:withWidth:withColor:", + "drawLineForMisspelling:withWidth:", "drawMarkersInRect:", "drawNormalInteriorWithFrame:inView:", - "drawPackedGlyphs:atPoint:", "drawPageBorderWithSize:", - "drawParts", "drawPreviewInteriorWithFrame:inView:", "drawRect:", "drawRect:withPainter:", "drawRepresentation:inRect:", "drawResizeIndicator:", + "drawRevealoverTextWithFrame:inView:forView:", "drawRow:clipRect:", + "drawRowIndexes:clipRect:", + "drawRun:style:geometry:", "drawScroller:", "drawSegment:inFrame:withView:", - "drawSelection:selected:inView:withRoundedLeftEdges:", "drawSelectionIndicatorInRect:", - "drawSelector", "drawSeparatorInRect:", "drawSeparatorItemWithFrame:inView:", - "drawShadowLayer", - "drawSheetBorderWithSize:", "drawSortIndicatorWithFrame:inView:ascending:priority:", "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", "drawStateImageWithFrame:inView:", - "drawStatusBarBackgroundInRect:withHighlight:", "drawStrikethroughForGlyphRange:strikethroughType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", "drawSwatchInRect:", "drawTextContainer:inRect:onView:", "drawTextContainer:inRect:onView:pinToTop:", "drawThemeContentFill:inView:", + "drawTitle:withFrame:inView:", "drawTitleOfColumn:inRect:", "drawTitleWithFrame:inView:", "drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", "drawViewBackgroundInRect:", + "drawViewInRect:", "drawWellInside:", "drawWindowBackgroundRect:", "drawWindowBackgroundRect:level:", @@ -7819,64 +9070,68 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "drawWithFrame:inView:", "drawWithFrame:inView:characterIndex:", "drawWithFrame:inView:characterIndex:layoutManager:", + "drawWithRect:options:", + "drawWithRect:options:attributes:", + "drawer:didChangeToState:", "drawerDidClose:", "drawerDidOpen:", + "drawerShouldClose:", + "drawerShouldOpen:", + "drawerWillResizeContents:toSize:", "drawers", + "drawingAttributes", + "drawingRect", "drawingRectForBounds:", + "drawingRectForCellFrame:", + "drawingStyle", + "drawnInSelectedRow", "drawsBackground", "drawsCellBackground", - "drawsContainmentIndicator", "drawsGrid", - "drawsOutsideLineFragmentForGlyphAtIndex:", - "drawsSpecialSelection", - "dsDataBuffer", - "dsDataList", - "dsDataNode", - "dsDirRef", - "dsNodeReference", - "dsRecordReference", + "dropFirstComponent:", + "dropLastComponent:", "dstDraggingDepositedAtPoint:draggingInfo:", "dstDraggingEnteredAtPoint:draggingInfo:", "dstDraggingExitedAtPoint:draggingInfo:", "dstDraggingMovedToPoint:draggingInfo:", - "dummyAction:", - "duplicatesForPeople:", - "dynamicVerticalScroller", - "earlierDate:", + "duration", + "dynamicToolTipRectAtPoint:", + "dynamicToolTipRevealoverInfoAtPoint:trackingRect:", + "dynamicToolTipStringAtPoint:trackingRect:", + "eMapResult:eMap:arcsinTable:", "echosBullets", "edge", - "edit:", - "editButton", - "editCard:", "editColumn:row:withEvent:select:", - "editDisplayedCard:", - "editInAddressBook:", - "editInput:", - "editMode", - "editPerson:", - "editSelectedGroupWithUndo:", - "editServerAction:", "editWithFrame:inView:editor:delegate:event:", "editableBinder", + "editableDOMRangeForPoint:", "editableState", "editableStateAtIndex:", + "editableStateAtIndexPath:", "edited", "edited:range:changeInLength:", "editedColumn", - "editedIndex:", "editedMask", + "editedMode:forEditingOrAction:", "editedRange", "editedRow", + "editedToolbar", "editingBinderForControl:", "editingColorAdjustableObject:", + "editingContextMenuItemsForElement:", + "editingDelegate", "editingHasBegun:", "editingHasEnded:", "editingStringForObjectValue:", "editingWasAborted:", "editor", - "editorDidEnd:returnCode:contextInfo:", + "editorDidBeginEditing:", + "editorDidEndEditing:", "editorWithObject:", - "ejectVolume", + "eject", + "ejectButtonPressedAction:", + "element", + "elementAt:", "elementAtIndex:", "elementAtIndex:associatedPoints:", "elementAtIndex:effectiveRange:", @@ -7884,45 +9139,41 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "elementCount", "elementDoesAutoComplete:", "elementForView:", - "elementImpl", "elementIsPassword:", - "elementSize", - "elementWithImpl:", + "elementName", + "elementTypeDescription", "elementWithName:inForm:", "elementWithRole:parent:", - "email", - "emailDomains", - "emailList", + "elementWithRole:subrole:parent:", + "elementsForLocalName:URI:", + "elementsForName:", + "emapROI:forRect:", "empty", "emptyAttributeDictionary", - "emptyCache", - "emulateUpdateCard:withImportedCard:changes:", "enable:", "enableAll:", "enableCursorRects", - "enableCustomAttributeFixing", - "enableDelegateMessages", "enableFlushWindow", "enableFreedObjectCheck:", "enableKeyEquivalentForDefaultButtonCell", + "enableMakeHistory", "enableMultipleThreads", "enableRelease:", + "enableSecureInput:", "enableSecureString:", - "enableUndoRegistration", - "enabled", + "enableUpdates", "enabledFileTypes", - "enabledSelectionChanging", "enabledState", "enabledStateAtIndex:", + "enabledStateAtIndexPath:", + "enabledStateForMenuItem:", + "enclosingClipViewBoundsOrFrameDidChangeNotification:", "enclosingScrollView", "encodeArrayOfObjCType:count:at:", "encodeBool:forKey:", "encodeBycopyObject:", - "encodeByrefObject:", "encodeBytes:length:", "encodeBytes:length:forKey:", - "encodeClassName:intoClassName:", - "encodeColumns", "encodeConditionalObject:", "encodeConditionalObject:forKey:", "encodeDataObject:", @@ -7931,7 +9182,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "encodeInt32:forKey:", "encodeInt64:forKey:", "encodeInt:forKey:", - "encodeNXObject:", "encodeObject:", "encodeObject:forKey:", "encodeObject:isBycopy:isByref:", @@ -7949,63 +9199,86 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "encodeValuesOfObjCTypes:", "encodeWithCoder:", "encodeWithCoder:colorSpaceCode:", - "encodedLineForValue:", "encodingScheme", + "encryptComponents:", "encryptWithDelegate:", "end", "endCoalesceTextDrawing", + "endConstruction", + "endContainer", "endDisplay", "endDocument", "endEditing", "endEditing:", "endEditingFor:", + "endFetch", "endHeaderComments", "endInputStream", + "endLayoutChange", + "endLineWithGlyphRange:", "endLoadInBackground", "endModalSession:", + "endOffset", "endPage", "endPageSetup", + "endParagraph", "endPrologue", + "endRevertingChange:moveLeft:", "endSetup", "endSheet:", "endSheet:returnCode:", - "endSheetReturningTag:", "endSpecifier", "endSubelementIdentifier", "endSubelementIndex", "endTrailer", "endUndoGrouping", + "enoiseROI:forRect:userInfo:", + "enqueueChallenge:forWindow:", "enqueueNotification:postingStyle:", "enqueueNotification:postingStyle:coalesceMask:forModes:", "ensureAttributesAreFixedInRange:", + "ensureSelectionVisible", "enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:", "enterProximity", "entities", + "entitiesByName", + "entitiesForConfiguration:", + "entity", + "entityDeclarationForName:", + "entityDescription", + "entityForEntityDescription:", + "entityForFetchRequest:", + "entityForID:", + "entityForName:inManagedObjectContext:", + "entityForObject:", + "entityID", "entityName", - "entityReferenceImpl", - "entityReferenceWithImpl:", + "entityNameOrderingArrayForEntities:", + "entityNamed:", + "entryForNode:inCachedChildrenForNode:", "entryState:", "entryType", - "entryWithURL:", "enumCodeValue", - "enumerationTerminologyDictionary:", + "enumerationDescriptionFromName:implDeclaration:presoDeclaration:", + "enumerations", "enumeratorAtPath:", - "environment", - "eoMKKDInitializer", - "equalID:andID:", - "equalsContentsOf:", + "enumeratorDescriptions", "error", "error:", - "errorAction", - "errorCount", - "errorInSetImageFromPath", - "errorProc", + "errorExpectedType", + "errorForReason:", + "errorNumber", + "errorOffendingObjectDescriptor", "errorStringForFTPStatusCode:fromURL:", "errorWithDomain:code:userInfo:", - "escapeKey:", "establishConnection", - "estimatedProgress", "evaluate", + "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:", + "evaluateJavaScriptPluginRequest:", + "evaluatePredicates:withObject:variableBindings:", + "evaluateWithObject:", + "evaluateWithObject:variableBindings:", + "evaluateXQuery:constants:contextItem:error:", "evaluatedArguments", "evaluatedReceivers", "evaluationErrorNumber", @@ -8013,49 +9286,59 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "event", "eventClass", "eventID", - "eventMask", + "eventMayStartDrag:", "eventNumber", "eventQueue", + "exactSizeToCellsSize", "exceptionAddingEntriesToUserInfo:", "exceptionDuringOperation:error:leftOperand:rightOperand:", "exceptionRememberingObject:key:", "exceptionWithName:reason:userInfo:", - "exchange::", - "exchangeObjectAtIndex:withObjectAtIndex:", - "exchangeServer", + "exclusives", "executablePath", "executableType", "execute", - "executeAndReturnError:", - "executeAppleEvent:error:", "executeCommand", - "exit", + "executeFetchRequest:error:", + "executeFetchRequest:withContext:", + "executeRequest:withContext:", + "executeSaveChangesRequest:withContext:", + "executionContextForView:", + "expandIndexPath:", "expandItem:", "expandItem:expandChildren:", "expandedNodes", - "expandedView", + "expandedNodesForObservedNode:", + "expandedRingROI:::", "expect:", "expectEndOfInput", "expectSeparatorEqualTo:", - "expectTokenEqualTo:mask:", "expectedContentLength", - "expectedResourceDataSize", "expiresDate", - "exportRecords:", - "exportVCard:", + "expiresTimeForResponse:", "exposeBinding:", "exposedBindings", - "extendCharacterToGlyphMapToInclude:", - "extendGlyphToWidthMapToInclude:font:", + "expressionForConstantValue:", + "expressionForKeyPath:", + "expressionType", + "expressionValueWithObject:context:", "extendPowerOffBy:", - "extendUnicodeCharacterToGlyphMapToInclude:", "extensionEnumerator", "extensionsForMIMEType:", + "extent", + "externalDataForObjectID:timestamp:", + "externalDataForSourceObjectID:key:timestamp:", + "externalName", + "externalNameForEntityName:", + "externalNameForPropertyName:", + "externalPrecision", + "externalScale", + "externalType", + "extraArgument2", "extraLineFragmentRect", "extraLineFragmentTextContainer", "extraLineFragmentUsedRect", "extractHeaderInfo:", - "fadePopUpWindowImmediately", "fadeToolTip:", "failWithError:", "failureReason", @@ -8065,214 +9348,193 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "fantasyFontFamily", "fastDrawAttributedString:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:", "fastDrawString:attributes:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:", + "fastIndexForKnownKey:", "fastestEncoding", + "faultHandler", + "faultHandlerClass", "fauxFilePackageTypes", "favoriteAttributesForName:", "favoriteAttributesNames", "fbeNode", - "fetchNoteOutOfRecordWithEmptyTemplate:", - "fieldContentsForProperty:", + "fetch:", + "fetchIndex", + "fetchLimit", + "fetchMaxPrimaryKeyForEntity:", + "fetchMetadata", + "fetchObjectsWithSortDescriptors:error:", + "fetchPredicate", + "fetchRequest", + "fetchRequestTemplateForName:", + "fetchedValueForDataValue:attribute:", + "fetchedValueForDateValue:attribute:", + "fetchedValueForNumberValue:attribute:", + "fetchedValueForStringValue:attribute:", + "fidelity", + "fidelityMask", + "fieldDescriptionForAppleEventCode:", + "fieldDescriptions", "fieldEditableControl", "fieldEditor:forObject:", - "fieldEditorDidMouseDown:", "fieldEditorTextDidChange:", "file", "fileAttributes", "fileAttributesAtPath:traverseLink:", "fileAttributesToWriteToFile:ofType:saveOperation:", + "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:", "fileButton", - "fileCreationDate", + "fileButtonWithDelegate:", "fileDescriptor", "fileExistsAtPath:", "fileExistsAtPath:isDirectory:", - "fileExtensionHidden", "fileExtensionsFromType:", - "fileGroupOwnerAccountID", - "fileGroupOwnerAccountName", - "fileGroupOwnerAccountNumber", "fileHFSCreatorCode", "fileHFSTypeCode", "fileHandleForReading", "fileHandleForReadingAtPath:", - "fileHandleForUpdatingAtPath:", "fileHandleForWriting", - "fileHandleForWritingAtPath:", "fileHandleWithNullDevice", "fileHandleWithStandardError", "fileHandleWithStandardInput", "fileHandleWithStandardOutput", - "fileIsAppendOnly", - "fileIsImmutable", "fileListMode", "fileListOrderedByFileProperty", "fileManager:shouldProceedAfterError:", - "fileManagerShouldProceedAfterError:", + "fileManager:willProcessPath:", "fileModificationDate", "fileName", "fileNameExtensionWasHiddenInLastRunSavePanel", "fileNameFromRunningSavePanelForSaveOperation:", "fileNamesFromRunningOpenPanel", - "fileOperationCompleted:ok:", - "fileOwnerAccountID", - "fileOwnerAccountName", - "fileOwnerAccountNumber", "filePosixPermissions", "fileProperty", - "fileSize", "fileSpecForName:atDestination:", - "fileSpecifier", "fileSystemAttributesAtPath:", - "fileSystemChanged", - "fileSystemFileNumber", - "fileSystemNumber", "fileSystemRepresentation", "fileSystemRepresentationWithPath:", "fileType", "fileTypeFromLastRunSavePanel", + "fileURL", "fileURLWithPath:", "fileWrapper", + "fileWrapperForURL:", + "fileWrapperFromRange:documentAttributes:error:", + "fileWrapperOfType:error:", "fileWrapperRepresentationOfType:", "fileWrappers", "filelistDelegate", - "filelock", "filename", "filenameChanged:", - "filenameHasAllowedFileType:", "filenameToDrag:", + "filenameWithOriginalFilename:", "filenames", "filepath", "filepathLabel", "fill", "fillAttributesCache", - "fillBodyTemplate:withReplacements:", "fillObjCType:count:at:", "fillRect", "fillRect:", - "fillSubrowList:forDisplayedRecords:withDelegate:", - "filterAndSortObjectNames:", - "filterChanged:", + "filter", + "filterClassDescription", "filterEvents:", + "filterKeyDown:", + "filterNamesInCategories:", + "filterPredicate", + "filterUsingPredicate:", + "filterWithName:", + "filterWithName:keysAndValues:", + "filteredArrayUsingPredicate:", + "filteredImage:keysAndValues:", "filteredIndexForActualIndex:", "finalWritePrintInfo", - "find:", - "findApplications", - "findAttachement:", - "findAttributeNamed:value:", + "finalize", + "finalizeForWebScript", "findBundleResources:callingMethod:directory:languages:name:types:limit:", "findClass:", - "findColorNamed:inList:usingLocalName:", "findCombinationForLetter:accent:", - "findEntryListFor:", - "findFontDebug:", "findFontLike:forCharacter:inLanguage:", "findFontLike:forString:withRange:inLanguage:", - "findFontLike:traits:forCharacter:inLanguage:checkCoveredCache:", "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:", "findFrameNamed:", - "findGroup:", "findInView:forward:", "findIndex:forDay:", - "findNextAndOrderFindPanelOut:", - "findNextOccuranceOfAttributeNamed:startingRange:", - "findNode:", - "findNode:matchType:", - "findNode:matchType:useFirst:", - "findNodeNames:matchType:", - "findNodeViaEnum:", "findPPDFileName:", - "findPanel", - "findPartialMatch:withComparer:", - "findPopupForField:excludingRange:", - "findPreviousOccuranceOfAttributeNamed:startingRange:", - "findRecord:ofType:", - "findRecordNames:andAttributes:ofType:matchType:", - "findRecordNames:ofType:matchType:", - "findRecordNamesOfTypes:withAttribute:value:matchType:", - "findRecordTypes", - "findRecordsInServer:withNode:withServer:withCounter:", - "findRecordsOfTypes:withAttribute:value:matchType:", - "findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:", - "findSelection:", + "findPanel:", "findSidebarNodeForNode:", + "findSoundFor:", "findString", - "findString:", - "findString:inBook:", "findString:selectedRange:options:", "findString:selectedRange:options:wrap:", - "findType:", - "findUser:", "findVoiceByIdentifier:returningCreator:returningID:", - "finderPath", + "fini", "finish", "finishDataLoad", "finishDecoding", + "finishDownloadDecoding", "finishEncoding", "finishEncoding:", "finishJobAndHandle", "finishLaunching", "finishProgressiveLoad:", - "finishTextFieldSetup", + "finishProvideNewSubviewSetup", + "finishUnarchiving", "finishUsingMenuRepresentation", - "finished", "finishedLoadingWithData:", "finishedLoadingWithDataSource:", - "fire", "fireDate", "firstChild", - "firstGlyphIndexOfCurrentLineFragment", + "firstComponent:", "firstIndentMarkerWithRulerView:location:", "firstIndex", - "firstLastSortingNamePart1:part2:", "firstLineHeadIndent", - "firstLineParagraphStyle", - "firstName", "firstObjectCommonWithArray:", + "firstPresentableName", + "firstRange", "firstRectForCharacterRange:", - "firstRepProperty:", + "firstRectForDOMRange:", "firstResponder", - "firstStringValueOfProperty:", "firstTextView", "firstTextViewForTextStorage:", "firstUnlaidCharacterIndex", "firstUnlaidGlyphIndex", "firstVisibleColumn", - "fixAddressRulersInRange:", "fixAttachmentAttributeInRange:", "fixAttributesInRange:", "fixFontAttributeInRange:", "fixGlyphInfoAttributeInRange:", "fixInvalidatedFocusForFocusView", - "fixNotesRulersInRange:", "fixParagraphStyleAttributeInRange:", "fixedFontFamily", "fixesAttributesLazily", "fixupDirInfo:", + "fk", + "flags", "flagsChanged:", "flatness", - "flippedView", + "flattenIntoPath:", + "floatCocoaVersion", "floatForKey:", - "floatForKey:inTable:", + "floatParameterValue:forResolution:", "floatValue", - "floatValueOfProperty:", - "floatWidthForCharacters:stringLength:characterPosition:", - "floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:", - "floatWidthForCharacters:stringLength:fromCharacterPosition:numberOfCharacters:withPadding:applyRounding:attemptFontSubstitution:widths:letterSpacing:wordSpacing:smallCaps:fontFamilies:", + "floatWidthForRun:style:widths:", "flush", + "flushAllCachedChildren", + "flushAllCaches", "flushAllKeyBindings", - "flushAttributeCache", - "flushBuffer", "flushBufferedKeyEvents", + "flushCachedChildren", + "flushCachedChildrenForNode:", "flushCachedData", + "flushCaches", "flushClassKeyBindings", + "flushDataForTriplet:littleEndian:", "flushGraphics", "flushHostCache", "flushKeyBindings", - "flushLocalCopiesOfSharedRulebooks", + "flushRasterCache", "flushTextForClient:", "flushWindow", - "flushWindowIfNeeded", - "focusRingImageForState:", - "focusRingImageSize", + "focusChanged:", "focusRingType", "focusStack", "focusView", @@ -8280,151 +9542,163 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "focusWindow", "focusedSwatchRect", "focusedView", - "followsItalicAngle", + "folderPath", "font", + "fontAttributes", + "fontAttributesForSelectionStart", "fontAttributesInRange:", "fontDescriptor", + "fontDescriptorByAddingAttributes:", + "fontDescriptorWithFamily:", "fontDescriptorWithFontAttributes:", + "fontDescriptorWithMatrix:", + "fontDescriptorWithName:matrix:", "fontDescriptorWithName:size:", - "fontDescriptorsInCollection:", + "fontDescriptorWithSize:", + "fontForSelection:", + "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:", + "fontInstanceForRenderingMode:", + "fontInvalidationCapableObjectForObject:", "fontMenu:", "fontName", "fontNameWithFamily:traits:weight:", - "fontNamed:hasTraits:", "fontPanel:", + "fontPanelDidChooseCollection:", + "fontPanelDidChooseFace:", + "fontPanelDidChooseFamily:", + "fontPanelDidChooseSize:", "fontSize", + "fontWithDescriptor:size:", + "fontWithDescriptor:textTransform:", "fontWithFamilies:traits:size:", "fontWithFamily:traits:size:", "fontWithFamily:traits:weight:size:", "fontWithName:matrix:", "fontWithName:size:", - "forceLayout", - "forceLayoutForPageWidth:", + "forceLayoutAdjustingViewSize:", + "forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:", + "forcePromise:", "forceRedraw", - "forceSet", "forceSetMode:", - "foregroundColor", + "foreignEntityKey", + "foreignEntityKeyColumns", + "foreignEntityKeyForSlot:", + "foreignKey", + "foreignKeyColumnDefinitions", + "foreignKeyColumns", + "foreignKeyConstraintDefinitions", + "foreignKeyForSlot:", + "foreignKeys", + "forgetAllExternalData", + "forgetAllSnapshots", + "forgetExternalDataForObjectID:", + "forgetSnapshotForGlobalID:", + "forgetSnapshotsForGlobalIDs:", "forgetWord:", "forgetWord:language:", "form", "formContentType", "formData", "formForElement:", - "formIntersectionWithCharacterSet:", "formReferrer", "formUnionWithCharacterSet:", "formalName", - "format", - "formatAutosaveName", - "formats", - "formattedAddressFromDictionary:", + "formattedValueInObject:errorEncountered:error:", "formatter", + "formatterBehavior", "formatterOfObject:", "forward::", "forwardInvocation:", "forwardItem", "forwardListCount", - "forwardListWithLimit:", - "foundCardsForName:label:inRecord:", - "foundError:", "fractionOfDistanceThroughGlyphForPoint:inTextContainer:", "fragment", "frame", "frame:resizedFromEdge:withDelta:", "frame:sourceFrame:willSubmitForm:withValues:submissionListener:", "frameAutosaveName", - "frameBorderStyle", - "frameChanged:", - "frameColor", "frameCount", "frameDetached", - "frameDuration", - "frameHighlightColor", + "frameDidChange:", + "frameElement", "frameLength", "frameLoadDelegate", "frameName", - "frameNeedsDisplay", "frameOfCellAtColumn:row:", "frameOfColumn:", "frameOfInsideOfColumn:", + "frameRate", "frameRectForContentRect:", "frameRectForContentRect:styleMask:", - "frameRequiredForMIMEType:", - "frameRotation", - "frameShadowColor", + "frameRequiredForMIMEType:URL:", "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:", - "frameStateChanged:", "frameView", "frameViewClassForStyleMask:", "free", - "freeAttributes", + "freeAttributeKeysAndValues", "freeBitsAndReleaseDataIfNecessary", - "freeObjects", "freeSerialized:length:", "freeSpace", - "frontWindow", + "from:subtract:", + "fulfillAggregateFaultForObject:andRelationship:withContext:", + "fulfillFault:withContext:", "fullJustifyLineAtGlyphIndex:", + "fullMetadata", "fullPathForApplication:", "gState", + "gamma", "garbageCollect", - "garbageCollectJavaScriptObjects", + "gaussianBlur", "generalPasteboard", "generateFrameName", "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:", "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:", - "genericLabel", - "getAllAttributes", - "getAllAttributesAndValues", + "generatePropertyName:", + "generateTableName:", + "generatesCalendarDates", + "generatesDecimalNumbers", + "generatorClass", + "genericCMYKColorSpace", + "genericColorSpace", + "genericGrayColorSpace", + "genericRGBColorSpace", + "getAdvancements:forGlyphs:count:", + "getAdvancements:forPackedGlyphs:length:", + "getAppletInView:", "getArgument:atIndex:", "getArgumentTypeAtIndex:", - "getAttrValuePtrForTypeNode:value:", "getAttribute:", - "getAttribute:index:", - "getAttribute:range:", - "getAttributeFirstValue:", - "getAttributeNS::", - "getAttributeNode:", - "getAttributeNodeNS::", - "getAttributeValueCount:", - "getAttributesAndValuesForPlugin:", - "getAttributesAndValuesInNode:fromBuffer:listReference:count:", "getAttributesForCharacterIndex:", - "getAttributesInNode:fromBuffer:listReference:count:", "getBitmapDataPlanes:", - "getBuffer:length:", - "getBufferSize", "getByte", "getBytes:", "getBytes:length:", "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:", + "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:", "getBytes:range:", "getCFRunLoop", "getCString:", - "getCString:maxLength:", + "getCString:maxLength:encoding:", "getCString:maxLength:range:remainingRange:", "getCarbonEvent:", "getCarbonEvent:withEvent:", "getCharacters:", "getCharacters:range:", + "getClasses", + "getClassesFromResourceLocator:", + "getComponents:", "getCompression:factor:", - "getCount", + "getComputedStyle::", "getCursorPositionAsIndex:inParagraph:", + "getCustomAdvance:forIndex:", "getCyan:magenta:yellow:black:alpha:", - "getDataLength", "getDirInfo:", "getDocument:docInfo:", - "getElementById:", - "getElementsByTagName:", - "getElementsByTagNameNS::", - "getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:", "getFileSystemRepresentation:maxLength:", "getFileSystemRepresentation:maxLength:withPath:", "getFilenamesAndDropLocation", "getFirstUnlaidCharacterIndex:glyphIndex:", - "getGid", - "getGlobalWindowNum:frame:", - "getGlyphs:range:", - "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:", + "getFloatValue:", "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:", "getHIViewForNSView:", "getHue:saturation:brightness:alpha:", @@ -8432,61 +9706,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "getHyphenLocations:inString:wordAtIndex:", "getImage:rect:", "getIndexes:maxCount:inIndexRange:", - "getInfoForFile:application:type:", - "getKeys:", + "getInfoButtonCell", "getLELong", "getLEWord", - "getLineDash:count:phase:", "getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:", + "getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:", "getLineStart:end:contentsEnd:forRange:", "getLocal:", + "getLocalizedFormattedDisplayLabels:andLocalizedFormattedDisplayValues:", + "getLocalizedLabels:andLocalizedValues:", "getMarkedText:selectedRange:", + "getMaximumAscender:minimumDescender:", "getMoreInput", - "getName", - "getNamedItem:", - "getNamedItemNS::", + "getNewIDForObject:", + "getNodeAsContainerNodeForBrowsing:", + "getNodeAsDeepResolvedNode:", + "getNodeAsInfoNode:", + "getNodeAsResolvedNode:", "getNumberOfRows:columns:", - "getObject:atIndex:", "getObjectCacheSize", "getObjectValue:forString:errorDescription:", + "getObjectValue:forString:range:error:", "getObjects:", "getObjects:andKeys:", "getObjects:range:", "getParagraphStart:end:contentsEnd:forRange:", + "getPath", "getPeriodicDelay:interval:", "getPluginInfoFromBundleAndMIMEDictionary:", "getPluginInfoFromPLists", "getPluginInfoFromResources", - "getPluginList", + "getProperties", + "getProperty::", + "getPropertyCSSValue:", + "getPropertyValue:", + "getRGBColorValue", "getRects:count:", "getRectsBeingDrawn:count:", + "getRectsExposedDuringLiveResize:count:", "getRed:green:blue:alpha:", - "getRef:forObjectName:", "getReleasedProxies:length:", "getRemote:", + "getResourceLocator", "getReturnValue:", "getRotationAngle", - "getRow", "getRow:column:forPoint:", "getRow:column:ofCell:", + "getRulebookData:makeSharable:littleEndian:", "getSavedNumVisibleRows:", "getSnapToWidthList:snapRadiusList:count:", "getState:", - "getStreamsToHost:port:inputStream:outputStream:", - "getTIFFCompressionTypes:count:", - "getType", + "getStringValue", + "getTypographicLineHeight:baselineOffset:leading:", "getURL:target:", "getURLNotify:target:notifyData:", - "getUid", "getValue:", "getValueFromObject:", - "getValues:forAttribute:forVirtualScreen:", - "getValues:forParameter:", + "getVariable:value:", "getWhite:alpha:", "globallyUniqueString", "glyphAtIndex:", "glyphAtIndex:isValidIndex:", "glyphBufferForFont:andColor:", + "glyphGenerator", "glyphGeneratorForEncoding:language:font:", "glyphGeneratorForEncoding:language:font:makeSharable:", "glyphGeneratorForTriplet:makeSharable:", @@ -8501,6 +9783,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "glyphIsEncoded:", "glyphName", "glyphPacking", + "glyphRange", "glyphRangeForBoundingRect:inTextContainer:", "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:", "glyphRangeForCharacterRange:actualCharacterRange:", @@ -8509,169 +9792,144 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "goBack", "goBack:", "goBackOrForward:", + "goBackwardInHistoryIfPossible", "goForward", "goForward:", + "goForwardInHistoryIfPossible", "goToBackForwardItem:", "goToItem:", + "goUpDirectory", "gotString", - "gotoBeginning:", - "gotoEnd:", - "gotoPosterFrame:", + "gotoSheetDidEnd:returnCode:contextInfo:", "grabberImage", - "gradientType", + "gradientROI:forRect:", "graphicsContextWithAttributes:", - "graphicsContextWithWindow:", "graphicsPort", "graphiteControlTintColor", "grayColor", + "green", "greenColor", "greenComponent", + "gregorianCalendar", "greySliderFrameChangedNotification:", "gridColor", "gridStyleMask", - "groupAtIndex:", - "groupDoubleAction", "groupIdentifier", "groupName", - "grouping", - "groupingLevel", - "groups", + "groupingSeparator", "groupsByEvent", - "groupsChanged:", - "groupsController", - "groupsPane", - "groupsSelectionChanged:", - "grow:", "growBoxWithParent:", "growBuffer:current:end:factor:", "growGlyphCaches:fillGlyphInfo:", "guessDockTitle:", "guessesForWord:", - "halt", "handleAppTermination:", "handleAutoscrollForMouseDragged:", "handleCarbonBoundsChange", "handleCloseScriptCommand:", "handleCommandEvent:withReplyEvent:", - "handleCommentWithCode:", - "handleDataSourceChangedCurrentDirectory", - "handleDataSourceChangedSelection", - "handleDataSourceClickedFauxDisabledNode:", - "handleDataSourceConfirmedSelection", + "handleCurrentDirectoryNodeChanged", + "handleDelayedUpdate:", "handleDelegateChangedCurrentDirectory", "handleDelegateChangedSelection", "handleDelegateClickedFauxDisabledNode:", "handleDelegateConfirmedSelection", "handleDelegateMovedDiplayedProperty:toIndex:", - "handleDelegatePickedNewRootNode:", + "handleDroppedConnection", "handleEndEncountered", "handleFailureInFunction:file:lineNumber:description:", "handleFailureInMethod:object:file:lineNumber:description:", - "handleFontName", + "handleFetchRequest:", + "handleFileListModeChanged", "handleGetAETEEvent:withReplyEvent:", "handleHasBytesAvailable", - "handleHeaderOp", + "handleKeyboardShortcutWithEvent:", + "handleMachMessage:", + "handleMetadataCallback", "handleMouseDownEvent:at:inPart:withMods:", - "handleMouseDragged:", "handleMouseEvent:", - "handleOpenScriptCommand:", - "handlePicVersion", + "handleNodePropertyChanged", + "handleObservingRefresh:", "handlePortCoder:", "handlePortMessage:", + "handlePreviewTextChange", + "handlePreviewTextUpdate", "handlePrintScriptCommand:", "handleQueryWithUnboundKey:", - "handleQuickTimeWithCode:", - "handleQuitScriptCommand:", "handleReadStreamEvent:event:", "handleReleasedProxies:length:", "handleRequest:sequence:", - "handleRollOverAtPoint:", - "handleRollOverSelection:", "handleRootNodeChanged", "handleSaveScriptCommand:", "handleSetFrameCommonRedisplay", - "handleShadowHilite", - "handleSwitchToCardAndColumnsFrom:animate:", - "handleSwitchToCardOnlyFrom:animate:", - "handleSwitchToColumnsOnlyFrom:animate:", - "handleSwitchToDirectoriesFrom:animate:", "handleTakeValue:forUnboundKey:", + "handleUserGoUpDirectory", + "handleValidationError:description:inEditor:errorUserInterfaceHandled:", + "handlesContentAsCompoundValue", + "handlesObject:", + "handlesRequest:", "hasAdditionalClip", "hasAlpha", - "hasAttribute:", - "hasAttributeNS::", - "hasAttributes", + "hasAttachmentMenu", "hasBackingStore", - "hasBytesAvailable", - "hasCardWithEmail:", - "hasChanged", + "hasChanges", "hasChangesPending", "hasChildNodes", - "hasChildren", "hasCloseBox", "hasCredentials", - "hasCustomImage", + "hasDirectoryNode", "hasDynamicDepthLimit", "hasEditedDocuments", "hasEditor", - "hasFeature::", - "hasFullInfo", + "hasElasticRange", "hasHorizontalRuler", "hasHorizontalScroller", "hasImageWithAlpha", - "hasImportErrors", "hasItemsToDisplayInPopUp", "hasMarkedText", - "hasMemberInPlane:", + "hasMetadataTable", + "hasNodeLabel", + "hasOpenTransaction", "hasPageCache", "hasPassword", "hasPrefix:", - "hasRecordsOfType:", "hasRunLoop:", "hasSelectedColor", - "hasSelection", "hasShadow", - "hasSpaceAvailable", + "hasSubentities", "hasSubmenu", "hasSuffix:", - "hasTag:", "hasThousandSeparators", - "hasTitleBar", "hasUndoManager", - "hasUnsavedChanges", - "hasValidObjectValue", "hasVerticalRuler", "hasVerticalScroller", "hash", + "hashForID:", + "haveCompleteImage", "haveCredentialForURL:", "headIndent", "headerCell", "headerColor", + "headerLevel", "headerRectOfColumn:", "headerTextColor", "headerView", "heartBeat:", - "heartBeatCycle", + "hebrewCalendar", "heightAdjustLimit", "heightForNumberOfVisibleRows:", - "heightString", "heightTracksTextView", - "help:", "helpAnchor", - "helpCursorShown", "helpRequested:", + "helpText", + "hexString", "hiddenState", "hiddenStateAtIndex:", + "hiddenStateAtIndexPath:", "hide", "hide:", - "hideAddPeopleButton", - "hideExtension", - "hideExtensionButtonClick:", - "hideOtherApplications", "hideOtherApplications:", - "hideRecentsPopUp", - "hideShowLastImport:", - "hideShowLastImportGroup:", + "hideRolloverWindow", "hideToolbar:", "hidesOnDeactivate", "highlight:", @@ -8682,220 +9940,180 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "highlightColorInView:", "highlightColorWithFrame:inView:", "highlightMode", + "highlightROI:forRect:", "highlightSelectionInClipRect:", "highlightWithLevel:", "highlightedBranchImage", "highlightedItemIndex", - "highlightedMenuColor", - "highlightedMenuTextColor", "highlightedTableColumn", "highlightsBy", "hintCapacity", + "historyAgeInDaysLimit", + "historyItemLimit", "historyLength", "historyProvider", "hitPart", "hitTest:", - "homePageFieldPresent", "horizontalEdgePadding", "horizontalLineScroll", - "horizontalPageScroll", "horizontalPagination", "horizontalRulerView", "horizontalScroller", + "horizontalScrollingMode", "host", - "hostName", "hostNameResolved:", "hostWindow", - "hostWithAddress:", "hostWithName:", - "hostname", "hotSpot", "hourOfDay", + "href", "hueComponent", "hyphenCharacterForGlyphAtIndex:", "hyphenGlyph", - "hyphenGlyphForFont:language:", - "hyphenGlyphForLanguage:", + "hyphenGlyphForLocale:", "hyphenationFactor", - "iDiskMount", - "iDiskName", - "iDiskRegister", - "iDiskType", - "iDiskUserName", - "iDiskVolumeRefNum", + "hyphenationFactorForGlyphAtIndex:", + "iDiskNode", "icon", + "iconAsAttributedString", "iconForFile:", "iconForFileType:", - "iconForFiles:", + "iconForSize:", + "iconForSpecifier:size:", "iconForURL:withSize:", "iconForURL:withSize:cache:", - "iconPopUp", "iconRect", - "iconRef:label:", - "iconRef:label:forObjectName:", "iconSize", - "iconsAreSaved", "identifier", - "identifierAtIndex:", "identity", "ignore", "ignoreModifierKeysWhileDragging", "ignoreSpelling:", "ignoreWord:inSpellDocumentWithTag:", - "ignoredWordsInSpellDocumentWithTag:", "ignoresAlpha", - "ignoresAntialiasThreshold", "ignoresMouseEvents", - "ignoresMultiClick", "illegalCharacterSet", "image", + "image:didLoadPartOfRepresentation:withValidRows:", + "image:didLoadRepresentation:withStatus:", + "image:didLoadRepresentationHeader:", "image:focus:", + "image:willLoadRepresentation:", "imageAlignment", "imageAndTitleOffset", "imageAndTitleWidth", - "imageData", - "imageDimsWhenDisabled", + "imageAtIndex:", + "imageBounds", + "imageByApplyingTransform:", + "imageDidNotDraw:inRect:", "imageFileTypes", - "imageForControlTint:", "imageForPreferenceNamed:", "imageForSegment:", "imageForState:", "imageFrameStyle", "imageInterpolation", "imageNamed:", - "imageNamed:ofType:inBundle:", - "imageOfSelectedItem", - "imageOffset", - "imageOrigin", "imagePasteboardTypes", - "imagePicker:selectedImage:", "imagePosition", "imageRectForBounds:", - "imageRectForPaper:", "imageRectInRuler", + "imageRef", "imageRenderer", "imageRendererWithBytes:length:", "imageRendererWithBytes:length:MIMEType:", + "imageRendererWithData:MIMEType:", "imageRendererWithMIMEType:", "imageRendererWithName:", "imageRendererWithSize:", - "imageRep", "imageRepClassForData:", "imageRepClassForFileType:", "imageRepClassForPasteboardType:", "imageRepWithContentsOfFile:", "imageRepWithContentsOfURL:", "imageRepWithData:", - "imageRepWithPasteboard:", "imageRepsWithContentsOfFile:", "imageRepsWithContentsOfURL:", "imageRepsWithData:", - "imageRepsWithPasteboard:", "imageScaling", "imageSize", "imageUnfilteredFileTypes", "imageUnfilteredPasteboardTypes", "imageWidth", - "imageWithoutAlpha", - "imageablePageBounds", - "impl", - "implementation", - "implementionatWithImpl:", + "imageWithCGImage:", + "imageWithCGImage:options:", + "imageWithCVImageBuffer:options:", + "imageWithContentsOfURL:options:", + "imageWithData:bytesPerRow:size:format:colorSpace:", + "imageWithPDF:atSize:center:withOffset:intoRect:fillWith:red:green:blue:", + "imageWithPath:", + "imageWithPathInner:", + "immutableCopy", "implementorAtIndex:", "implementsSelector:", - "importBegan:", - "importContinued:", - "importFinished", - "importLock", - "importNode::", "importObject:", - "importPeople:intoGroup:", - "importPromisedFiles:intoGroup:", - "importPumaAddressBook:", - "importPumaLDAPServers", - "importToPerson:", - "importUnlock", - "importVCardData:intoGroup:", - "importVCardFiles:intoGroup:", - "importVCards", "importedObjects", "importsGraphics", "inLiveResize", - "includeNotesInVCards", + "inNextKeyViewOutsideWebFrameViews", + "inPalette", + "incObservationCount", "incomingReferrer", "increaseLengthBy:", + "increaseSizesToFit:", + "increaseUseCount", "increment", "incrementButtonWithParent:", - "incrementBy:", - "incrementOriginLoadCount", + "incrementRefCount", + "incrementRefCountForObjectID:", + "incrementSnapshotCountForGlobalID:", "incrementalImageReaderForRep:", - "incrementalLoadFromData:complete:", "incrementalLoadWithBytes:length:complete:", "increments", "indentationLevel", - "indentationMarkerFollowsCell", "indentationPerLevel", - "independentConversationQueueing", "index", - "indexEnumerator", + "indexAtPosition:", "indexFollowing:", - "indexForIdentifier:", "indexForKey:", "indexGreaterThanIndex:", "indexGreaterThanOrEqualToIndex:", "indexLessThanIndex:", - "indexLessThanOrEqualToIndex:", - "indexOf:", - "indexOf:::", - "indexOfAllGroup", - "indexOfAttributeBySelector:equalToObject:", - "indexOfCellWithTag:", + "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:", "indexOfCrayon:", - "indexOfDirectoriesGroup", - "indexOfDirectory:", - "indexOfDirectoryResult:", - "indexOfGroup:", - "indexOfIdentifier:", + "indexOfFirstRangeContainingOrFollowing:", "indexOfItem:", "indexOfItemAtPoint:", "indexOfItemWithObjectValue:", + "indexOfItemWithRepresentedNavNode:", "indexOfItemWithRepresentedObject:", "indexOfItemWithSubmenu:", "indexOfItemWithTag:", "indexOfItemWithTarget:andAction:", "indexOfItemWithTitle:", - "indexOfLastImportGroup", - "indexOfLastSpecialGroup", - "indexOfMember:", - "indexOfMember:inSortedMembers:", "indexOfNode:inCachedChildrenForNode:", "indexOfObject:", - "indexOfObject:inRange:", "indexOfObject:range:identical:", "indexOfObjectIdenticalTo:", "indexOfObjectIdenticalTo:inRange:", - "indexOfRecord:", "indexOfSelectedItem", "indexOfTabViewItem:", "indexOfTabViewItemWithIdentifier:", "indexOfTickMarkAtPoint:", "indexPath", - "indexPreceding:", + "indexPathByAddingIndex:", + "indexPathByRemovingLastIndex", + "indexPathForOutlineView:row:", + "indexPathWithIndex:", + "indexReferenceModelObjectArray", "indexSet", "indexSetWithIndex:", "indexSetWithIndexesInRange:", - "indicatorImageInTableColumn:", + "indicesOfObjectsByEvaluatingObjectSpecifier:", "indicesOfObjectsByEvaluatingWithContainer:count:", - "info", "infoDictionary", - "infoForPerson:", - "informativeText", + "infoForBinding:", "init", "initAndTestWithTests:", - "initAsPeoplePicker:mainSplit:searchLabel:searchField:", - "initAsRegistered:", - "initAsTearOff", - "initAtPoint:inWindow:", "initAtPoint:withSize:callbackInfo:", "initByReferencingFile:", "initByReferencingURL:", @@ -8904,41 +10122,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initDirectoryWithFileWrappers:", "initEPSOperationWithView:insideRect:toData:printInfo:", "initFileURLWithPath:", + "initForActionType:", "initForDeserializerStream:", "initForDirectImageRep:", - "initForIncrementalLoad", + "initForExpression:usingIteratorExpression:predicate:", + "initForExpression:usingIteratorVariable:predicate:", + "initForKeyBackPointer:", + "initForKeys:", + "initForKeys:count:", + "initForMetal:", "initForReadingWithData:", "initForSerializerStream:", "initForToolbar:withWidth:", + "initForURL:withContentsOfURL:ofType:error:", "initForWritingWithMutableData:", "initFromDictionaryRepresentation:", "initFromDocument:", - "initFromElement:ofDocument:", "initFromImage:rect:", - "initFromInfo:", "initFromMemoryNoCopy:length:freeWhenDone:", - "initFromName:device:inode:", - "initFromPList:target:andIdentifier:", - "initFromPath:", - "initFromSerialized:", "initFromSerializerStream:length:", + "initGlyphStack:", "initImageCell:", - "initInNode:name:", - "initInNode:recordRef:", - "initInNode:recordRef:type:", - "initInNode:type:name:", - "initInNode:type:name:create:", - "initIndexForClass:", - "initIsCocoa", "initListDescriptor", "initNotTestWithTest:", - "initOffscreen:withDepth:", "initOrTestWithTests:", "initPopUpWindow", + "initPriv", "initRecordDescriptor", "initRegularFileWithContents:", "initRemoteWithProtocolFamily:socketType:protocol:address:", - "initRemoteWithTCPPort:host:", "initSymbolicLinkWithDestination:", "initTextCell:", "initTextCell:pullsDown:", @@ -8948,80 +10160,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initToBuffer:capacity:", "initToFileAtPath:append:", "initToMemory", - "initUnixFile:", - "initValues", + "initWith::::", + "initWith:options:", "initWithAEDescNoCopy:", "initWithAction:", + "initWithAdapter:", + "initWithAdapterOperator:correlation:", + "initWithAdapterOperator:row:", "initWithAffectedRange:layoutManager:undoManager:", "initWithAffectedRange:layoutManager:undoManager:replacementRange:", + "initWithAppleEventCode:", + "initWithAppleEventCode:presentableDescription:name:", + "initWithAppleEventCode:presentableDescription:name:value:", "initWithArray:", "initWithArray:copyItems:", + "initWithArray:forTarget:andRange:andCopyItems:", + "initWithAssignmentExpression:expression:", + "initWithAssignmentVariable:expression:", "initWithAttributeDictionary:", "initWithAttributedString:", "initWithAttributes:", "initWithAttributes:range:", - "initWithAuthentication:forUser:andPass:", "initWithAuthenticationChallenge:sender:", "initWithBaseString:", "initWithBestLocationRep:", "initWithBinder:object:", + "initWithBitmap:rowBytes:bounds:format:", + "initWithBitmap:rowBytes:bounds:format:options:", + "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:", + "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:size:", "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:", - "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:size:", "initWithBitmapRepresentation:", "initWithBool:", - "initWithBridge:", - "initWithButton:", + "initWithBridge:delegate:", "initWithButtonID:", "initWithBytes:length:", "initWithBytes:length:copy:freeWhenDone:bytesAreVM:", "initWithBytes:length:encoding:", - "initWithBytes:objCType:", "initWithBytesNoCopy:length:", + "initWithBytesNoCopy:length:encoding:freeWhenDone:", "initWithBytesNoCopy:length:freeWhenDone:", "initWithCFNetService:", + "initWithCGColor:", + "initWithCGColorSpace:", + "initWithCGContext:", + "initWithCGContext:options:", "initWithCGImage:", + "initWithCGImage:options:", + "initWithCGLContext:pixelFormat:", + "initWithCGLContext:pixelFormat:options:", + "initWithCGLSContext:pixelFormat:", + "initWithCGLSContext:pixelFormat:options:", "initWithCGSContext:", + "initWithCGSRegion:", "initWithCGSRegionObj:", + "initWithCIImage:", "initWithCString:", "initWithCString:length:", - "initWithCStringNoCopy:length:", + "initWithCString:noCopy:", "initWithCStringNoCopy:length:freeWhenDone:", + "initWithCVImageBuffer:options:", "initWithCachedResponse:request:key:", "initWithCallback:selector:", - "initWithCallbacks:", "initWithCapacity:", "initWithCapacity:compareSelector:", - "initWithCapacity:origin:image:", + "initWithCapacity:origin:image:yOffset:", "initWithCarbonWindowRef:takingOwnership:", "initWithCarbonWindowRef:takingOwnership:disableOrdering:", "initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:", - "initWithCards:duplicates:group:selectGroup:uiController:", "initWithCatalogName:colorName:genericColor:", "initWithCell:", "initWithChar:", "initWithCharacterIdentifier:collection:baseString:", "initWithCharacterRange:isSoft:", + "initWithCharacterRange:parent:", "initWithCharacterSet:", "initWithCharacters:length:", "initWithCharactersInString:", - "initWithCharactersNoCopy:length:", "initWithCharactersNoCopy:length:freeWhenDone:", + "initWithClass:", + "initWithClassDescription:", + "initWithClassPath:", "initWithClient:", "initWithCode:key:object:", "initWithCoder:", + "initWithCoercer:selector:", + "initWithCollection:", + "initWithColorProfile:", + "initWithColorSpace:components:count:", + "initWithColorSyncInfo:", + "initWithColorSyncProfile:", + "initWithColumnName:sqlType:", "initWithCommandDescription:", "initWithCompareSelector:", - "initWithCondition:", - "initWithConjunctionOperator:children:", "initWithConnection:components:", - "initWithContainerClass:key:", - "initWithContainerClass:key:baseGetter:baseSetter:", - "initWithContainerClass:key:baseGetter:mutatingMethods:", - "initWithContainerClass:key:getMethod:", - "initWithContainerClass:key:ivar:", - "initWithContainerClass:key:methods:", - "initWithContainerClass:key:nonmutatingMethods:mutatingMethods:", - "initWithContainerClass:key:setMethod:", + "initWithContainer:key:mutableSet:", + "initWithContainer:key:mutableSet:mutationMethods:", + "initWithContainerClass:keyPath:", + "initWithContainerClass:keyPath:firstDotIndex:", + "initWithContainerClassDescription:", "initWithContainerClassDescription:containerSpecifier:key:", "initWithContainerClassDescription:containerSpecifier:key:index:", "initWithContainerClassDescription:containerSpecifier:key:name:", @@ -9029,9 +10266,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithContainerClassDescription:containerSpecifier:key:startSpecifier:endSpecifier:", "initWithContainerClassDescription:containerSpecifier:key:test:", "initWithContainerClassDescription:containerSpecifier:key:uniqueID:", + "initWithContainerClassID:key:baseGetter:baseSetter:containerIsa:proxyClass:", + "initWithContainerClassID:key:baseGetter:mutatingMethods:proxyClass:", + "initWithContainerClassID:key:containerIsa:", + "initWithContainerClassID:key:containerIsa:ivar:", + "initWithContainerClassID:key:containerIsa:ivar:proxyClass:", + "initWithContainerClassID:key:implementation:selector:extraArguments:count:", + "initWithContainerClassID:key:ivar:", + "initWithContainerClassID:key:method:", + "initWithContainerClassID:key:methods:proxyClass:", + "initWithContainerClassID:key:mutableCollectionGetter:proxyClass:", + "initWithContainerClassID:key:nonmutatingMethods:mutatingMethods:proxyClass:", + "initWithContainerClassID:key:proxyClass:", "initWithContainerSize:", "initWithContainerSpecifier:key:", "initWithContent:", + "initWithContentKind:occurrence:", "initWithContentRect:", "initWithContentRect:comboBoxCell:", "initWithContentRect:styleMask:backing:defer:", @@ -9039,91 +10289,109 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithContentRect:styleMask:backing:defer:screen:", "initWithContentSize:preferredEdge:", "initWithContentsOfFile:", - "initWithContentsOfFile:byReference:", + "initWithContentsOfFile:encoding:error:", + "initWithContentsOfFile:error:", "initWithContentsOfFile:ofType:", + "initWithContentsOfFile:options:error:", + "initWithContentsOfFile:usedEncoding:error:", "initWithContentsOfMappedFile:", "initWithContentsOfMappedFile:withFileAttributes:", "initWithContentsOfURL:", "initWithContentsOfURL:byReference:", - "initWithContentsOfURL:error:", + "initWithContentsOfURL:encoding:error:", "initWithContentsOfURL:ofType:", + "initWithContentsOfURL:ofType:error:", + "initWithContentsOfURL:options:", + "initWithContentsOfURL:options:error:", + "initWithContentsOfURL:usedEncoding:error:", "initWithController:", - "initWithController:key:valueTransformer:binding:", - "initWithController:key:valueTransformerName:binding:", - "initWithCountryCode:identifier:label:insertPopups:andInputController:", + "initWithController:keyPath:", + "initWithController:retainController:key:valueTransformer:binding:", + "initWithCurrentBrowsingNodePath:fileListMode:", "initWithCurrentQDPort", + "initWithCustomSelector:modifier:", "initWithCyan:magenta:yellow:black:alpha:", + "initWithDOMRange:", "initWithData:", "initWithData:DIBFormat:", "initWithData:MIMEType:", + "initWithData:URL:MIMEType:textEncodingName:frameName:", + "initWithData:bytesPerRow:size:format:colorSpace:", + "initWithData:bytesPerRow:size:format:options:", + "initWithData:documentClass:isSingleDTDNode:options:error:", + "initWithData:documentClass:options:error:", "initWithData:encoding:", "initWithData:hfsTypeCode:", + "initWithData:isSingleDTDNode:options:error:", + "initWithData:options:", + "initWithData:options:documentAttributes:error:", + "initWithData:options:error:", "initWithData:range:", - "initWithDataFile:lockMode:cardClass:snoop:", - "initWithDataList:", - "initWithDataNoCopy:freeWhenDone:", + "initWithDataNoCopy:", "initWithDataRepresentation:", "initWithDataSource:", "initWithDataSource:ascending:", - "initWithDate:", "initWithDateFormat:allowNaturalLanguage:", "initWithDecimal:", "initWithDefaultAttributes:", "initWithDefaults:initialValues:", "initWithDelegate:", "initWithDelegate:name:", + "initWithDescription:kernelFile:filterBundle:", "initWithDescriptorType:bytes:length:", "initWithDescriptorType:data:", "initWithDictionary:", "initWithDictionary:copyItems:", - "initWithDir:", - "initWithDir:bufferSize:", - "initWithDir:bufferSize:dataLength:data:", - "initWithDir:cString:", - "initWithDir:cStrings:", - "initWithDir:copyOfDsDataNode:", - "initWithDir:dsDataList:", - "initWithDir:dsDataNode:", - "initWithDir:nodeRef:nodeName:", - "initWithDir:separator:pattern:", - "initWithDir:string:", - "initWithDir:strings:", - "initWithDocFormat:documentAttributes:", - "initWithDocument:URL:windowProperties:locationProperties:", + "initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:", + "initWithDocument:forStore:", + "initWithDocumentView:", "initWithDomain:code:userInfo:", "initWithDomain:type:name:", "initWithDomain:type:name:port:", "initWithDomainName:key:title:image:", "initWithDouble:", - "initWithDownload:", - "initWithDragInfo:tableView:completion:andRow:", - "initWithDrawSelector:delegate:", + "initWithDrawingView:rects:", + "initWithDuration:animationCurve:", "initWithDynamicMenuItemDictionary:", + "initWithEditCommand:", "initWithElement:fauxParent:", - "initWithElementName:", + "initWithElement:frame:stringValue:", "initWithElementSize:capacity:", + "initWithElementTypeDescription:", + "initWithEntity:", + "initWithEntity:foreignKey:", + "initWithEntity:insertIntoManagedObjectContext:", + "initWithEntity:inverseToMany:", + "initWithEntity:propertyDescription:", + "initWithEntity:propertyDescription:virtualForToMany:", + "initWithEntity:sqlString:", + "initWithEntity:toOneRelationship:", "initWithEvent:replyEvent:", "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:", "initWithExactName:data:", + "initWithExpressionType:", + "initWithExpressionType:operand:selector:argumentArray:", + "initWithExtent:format:", + "initWithExternalName:", "initWithFBENode:", - "initWithFD:expiry:", - "initWithFZService:named:", + "initWithFactory:", "initWithFile:", "initWithFileAtPath:", "initWithFileAttributes:", - "initWithFileDescriptor:", "initWithFileDescriptor:closeOnDealloc:", "initWithFileName:markerName:", "initWithFileProperty:dataSource:ascending:", - "initWithFileSpecifier:", "initWithFileWrapper:", + "initWithFilter:closure:", + "initWithFilter:connectionID:", + "initWithFilter:options::", "initWithFireDate:interval:target:selector:userInfo:repeats:", "initWithFloat:", "initWithFocusedViewRect:", - "initWithFolderType:createFolder:", "initWithFont:color:", "initWithFont:usingPrinterFont:", "initWithFontAttributes:", + "initWithFontDescriptor:", "initWithForm:values:sourceFrame:", "initWithFormat:", "initWithFormat:arguments:", @@ -9135,93 +10403,108 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithFrame:error:", "initWithFrame:frameName:groupName:", "initWithFrame:inStatusBar:", - "initWithFrame:inWindow:", "initWithFrame:menuView:", "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:", "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:", "initWithFrame:node:", - "initWithFrame:pixelFormat:", "initWithFrame:plugin:URL:baseURL:MIMEType:attributeKeys:attributeValues:", "initWithFrame:prototypeRulerMarker:", "initWithFrame:pullsDown:", "initWithFrame:styleMask:owner:", - "initWithFrame:text:alignment:", "initWithFrame:textContainer:", - "initWithFrame:view:", "initWithFunc:forImp:selector:", "initWithFunc:ivarOffset:", + "initWithGLContext:pixelFormat:vtable:options:", "initWithGlyph:forFont:baseString:", "initWithGlyphIndex:characterRange:", "initWithGlyphName:glyph:forFont:baseString:", "initWithGrammar:", + "initWithGraph:", "initWithGraphicsContext:", - "initWithGroup:", - "initWithGroup:members:", - "initWithGroup:members:showAs:", - "initWithGroup:newMe:", - "initWithGroup:newName:", - "initWithGroup:originalPeople:", - "initWithGroup:person:properties:", - "initWithGroup:records:", - "initWithGroups:", - "initWithHTML:baseURL:documentAttributes:", "initWithHTML:documentAttributes:", "initWithHTML:options:documentAttributes:", "initWithHTMLView:", "initWithHistory:", "initWithHost:port:protocol:realm:authenticationMethod:", - "initWithHost:user:password:", - "initWithHostName:serverName:textProc:errorProc:timeout:secure:encapsulated:", "initWithHue:saturation:brightness:alpha:", + "initWithICCProfileData:", "initWithIdentifier:", "initWithIdentifier:forColorPanel:", "initWithImage:", "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:", "initWithImage:hotSpot:", - "initWithImpl:", + "initWithImage:keysAndValues:", + "initWithImage:options:", + "initWithImageProvider:size::format:colorSpace:options:", + "initWithImageProvider:userInfo:size:format:flipped:colorSpace:", "initWithIncrements:parent:", "initWithIndex:", "initWithIndex:parent:", "initWithIndexSet:", + "initWithIndexes:", + "initWithIndexes:length:", "initWithIndexesInRange:", - "initWithInfo:", - "initWithInputController:", - "initWithInputController:andField:", + "initWithInstanceInfo:renderingMode:", "initWithInt:", "initWithInvocation:conversation:sequence:importedObjects:connection:", "initWithItem:", "initWithItem:forToolbarView:", "initWithItemIdentifier:", + "initWithJPEGFile:", + "initWithJPEGFile:options:", + "initWithJob:", "initWithKWQFileButton:", + "initWithKey:appleEventCode:type:isOptional:presentableDescription:name:", + "initWithKey:appleEventCode:type:isOptional:presentableDescription:nameOrNames:", + "initWithKey:appleEventCode:type:presentableDescription:name:", + "initWithKey:appleEventCode:typeDescription:presentableDescription:name:", "initWithKey:ascending:", "initWithKey:ascending:selector:", "initWithKey:isStored:", "initWithKey:mask:binding:", + "initWithKey:type:access:", + "initWithKey:type:access:appleEventCode:presentableDescription:name:", + "initWithKey:type:isReadOnly:appleEventCode:isLocationRequiredToCreate:", + "initWithKey:type:isReadOnly:appleEventCode:presentableDescription:nameOrNames:", "initWithKey:value:", + "initWithKeyPath:", "initWithKeychainItem:", "initWithKeys:", - "initWithLDAPManager:forServer:queryString:sessionUID:", - "initWithLDAPManager:forServer:sessionUID:", + "initWithKind:", + "initWithKind:name:stringValue:", + "initWithKind:name:stringValue:URI:", + "initWithKind:options:", + "initWithLeftExpression:rightExpression:customSelector:", + "initWithLeftExpression:rightExpression:modifier:type:options:", "initWithLength:", - "initWithListBox:items:", + "initWithListBox:", "initWithLoader:dataSource:", - "initWithLoader:job:", - "initWithLocal", "initWithLocal:connection:", + "initWithLocalName:URI:", + "initWithLocaleIdentifier:", "initWithLong:", "initWithLongLong:", "initWithMIMEType:", "initWithMKKDInitializer:index:", - "initWithMachMessage:", "initWithMachPort:", + "initWithMainResource:subresources:subframeArchives:", + "initWithManagedObjectModel:", + "initWithManagedObjectModel:configurationName:", "initWithMantissa:exponent:isNegative:", + "initWithManyToMany:fk:invfk:", + "initWithMarkerFormat:options:", "initWithMemoryCapacity:diskCapacity:diskPath:", "initWithMethodSignature:", + "initWithModel:entityDescription:", + "initWithModelObserver:availableModelAndProxyKeys:", "initWithMovie:", "initWithMovieView:selector:operation:", "initWithMutableAttributedString:", - "initWithMutableData:forDebugging:languageEncoding:nameEncoding:textProc:errorProc:", "initWithName:", + "initWithName:appleEventCode:enumeratorDescriptions:", + "initWithName:appleEventCode:fieldDescriptions:presentableDescription:", + "initWithName:appleEventCode:objcClassName:", + "initWithName:attributes:", "initWithName:color:image:", "initWithName:data:", "initWithName:element:", @@ -9229,30 +10512,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithName:fromFile:", "initWithName:host:", "initWithName:object:userInfo:", - "initWithName:parent:resolve:", "initWithName:position:rect:view:children:", "initWithName:reason:userInfo:", + "initWithName:stringValue:", "initWithName:value:source:children:", "initWithName:webFrameView:webView:", + "initWithNamespaces:", "initWithNavView:", - "initWithNewPerson:selectedGroup:", + "initWithNestedDictionary:", "initWithNibNamed:bundle:", - "initWithNode:", + "initWithNode:delegate:", "initWithNotificationCenter:", "initWithNotificationObject:", "initWithObjCType:count:at:", "initWithObject:", + "initWithObject:entity:", + "initWithObjectID:", "initWithObjectSpecifier:comparisonOperator:testObject:", + "initWithObjectStore:andClass:forEntity:withType:", "initWithObjects:", "initWithObjects:count:", "initWithObjects:count:target:reverse:freeWhenDone:", "initWithObjects:forKeys:", "initWithObjects:forKeys:count:", "initWithObjectsAndKeys:", + "initWithObjects_ex:count:", + "initWithObjects_ex:forKeys:count:", + "initWithObservedNode:", "initWithObserver:name:object:", + "initWithObserver:relationshipKey:keyPathFromRelatedObject:options:context:", "initWithOffset:", - "initWithOriginalImage:", - "initWithOriginalImage:crop:smallIcon:", + "initWithOperand:andKeyPath:", + "initWithOperatorType:", + "initWithOperatorType:modifier:", + "initWithOperatorType:modifier:negate:", + "initWithOperatorType:modifier:options:", + "initWithOperatorType:modifier:variant:", + "initWithOperatorType:modifier:variant:position:", + "initWithOptions:", + "initWithOriginalClass:", + "initWithOriginalString:range:", + "initWithPNGFile:", + "initWithPNGFile:options:", "initWithPanel:", "initWithPartCode:parent:", "initWithPasteboard:", @@ -9260,71 +10561,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithPath:", "initWithPath:documentAttributes:", "initWithPath:flags:createMode:", - "initWithPeople:", - "initWithPerson:imageData:", - "initWithPerson:model:", + "initWithPath:logonOK:", + "initWithPath:traverseLink:", + "initWithPersistenceStore:", "initWithPickerMask:colorPanel:", "initWithPosition:objectSpecifier:", + "initWithPredicate:", + "initWithPredicateOperator:leftExpression:rightExpression:", + "initWithPredicateOperator:leftKeyPath:rightKeyPath:", + "initWithPredicateOperator:leftKeyPath:rightValue:", "initWithPrintInfo:", "initWithPrompt:text:", "initWithProperties:", - "initWithProperty:label:key:value:searchPeople:comparison:", - "initWithProperty:withPopup:", + "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:", + "initWithProperty:", "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:", "initWithProtocol:httpRequest:challenge:callback:context:", "initWithProtocolFamily:socketType:protocol:address:", - "initWithProtocolFamily:socketType:protocol:socket:", "initWithProxyHost:port:type:realm:authenticationMethod:", "initWithQButton:", "initWithQComboBox:", "initWithQLineEdit:", "initWithQObject:timerId:", "initWithQScrollBar:", + "initWithQSlider:", "initWithQTextEdit:", "initWithRTF:", "initWithRTF:documentAttributes:", "initWithRTFD:", "initWithRTFD:documentAttributes:", "initWithRTFDFileWrapper:", - "initWithRTFDFileWrapper:documentAttributes:", "initWithRange:", - "initWithRawCatalogInfo:name:parentRef:ref:hfsName:hidden:", + "initWithRanges:count:", "initWithRealClient:", "initWithRealTextStorage:", "initWithReceivePort:sendPort:", "initWithReceivePort:sendPort:components:", "initWithRect:", + "initWithRect:clip:type:", "initWithRect:color:ofView:", "initWithRects:count:", "initWithRed:green:blue:alpha:", "initWithRef:", - "initWithRef:containerType:", - "initWithRef:hidden:iDisk:", "initWithRefCountedRunArray:", - "initWithRefNoCopy:", "initWithRegistryClass:andObjectClass:", "initWithRegistryString:andObjectClass:", "initWithRemoteName:", + "initWithRenderer:", "initWithRequest:", "initWithRequest:cachedResponse:client:", "initWithRequest:delegate:", - "initWithRequest:frameName:notifyData:", - "initWithRequest:monitor:", - "initWithRequest:pluginPointer:notifyData:", - "initWithResponse:data:", + "initWithRequest:delegate:priority:", + "initWithRequest:frameName:notifyData:sendNotification:", + "initWithRequest:pluginPointer:notifyData:sendNotification:", + "initWithRequestURL:pluginPointer:notifyData:sendNotification:", "initWithResponse:data:userInfo:storagePolicy:", + "initWithResumeInformation:", "initWithRole:parent:", + "initWithRole:subrole:parent:", + "initWithRootElement:", + "initWithRootStore:configurationName:readOnly:url:", "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", "initWithRow:column:tableView:", "initWithRow:ofTableView:", "initWithRow:tableColumn:", - "initWithRulebookSet:", + "initWithRulerMarker:parent:", + "initWithRulerView:", "initWithRulerView:markerLocation:image:imageOrigin:", "initWithRunStorage:", - "initWithScheme:host:path:", + "initWithRuns:glyphOrigin:lineFragmentWidth:", + "initWithSQLCore:", + "initWithSQLEntity:objectID:", + "initWithSavedQueryNode:", "initWithScrollView:orientation:", - "initWithSelectedGroup:addedToGroup:updatedPeople:updatedPeopleProperties:addedPeople:", + "initWithSearchStrategy:", "initWithSelector:", + "initWithSelector:argumentArray:", "initWithSendPort:receivePort:components:", "initWithSerializedRepresentation:", "initWithSet:", @@ -9332,14 +10644,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithSetFunc:forImp:selector:", "initWithSetFunc:ivarOffset:", "initWithSetHeader:", + "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:", "initWithShadow:", "initWithShort:", + "initWithSimpleQueryString:", "initWithSize:", "initWithSize:depth:separate:alpha:", "initWithSize:forSpaceItem:", "initWithSource:", - "initWithSource:destination:delegate:", + "initWithSource::dest::", + "initWithSource:forRelationship:asFault:", + "initWithSourceAttributeName:destinationAttributeName:", "initWithSparseArray:", + "initWithSpecifier:", + "initWithStatement:", + "initWithStore:", + "initWithStore:fromPath:", "initWithStream:", "initWithStream:view:", "initWithString:", @@ -9347,12 +10667,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithString:calendarFormat:", "initWithString:calendarFormat:locale:", "initWithString:locale:", - "initWithString:nodeType:", "initWithString:relativeToURL:", - "initWithSuiteName:bundle:", + "initWithStringValue:", "initWithSuiteName:className:dictionary:", "initWithSuiteName:commandName:dictionary:", "initWithTCPPort:", + "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:", + "initWithTableView:", + "initWithTableView:clipRect:", "initWithTarget:", "initWithTarget:action:", "initWithTarget:connection:", @@ -9361,38 +10683,47 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithTarget:protocol:", "initWithTarget:selector:object:", "initWithTextAlignment:location:options:", + "initWithTextBlock:charIndex:layoutManager:containerWidth:", + "initWithTextBlock:charRange:glyphRange:layoutRect:boundsRect:layoutManager:containerWidth:", + "initWithTextBlock:charRange:layoutManager:containerWidth:", "initWithTextControl:colorPanel:delegate:", + "initWithTextField:QLineEdit:", "initWithTextStorage:", "initWithTextStorage:range:", - "initWithTimeInterval:sinceDate:", - "initWithTimeIntervalSince1970:", + "initWithTextTable:charIndex:layoutManager:containerWidth:", + "initWithTexture:size:flipped:colorSpace:", + "initWithTexture:size:options:", + "initWithTidyNode:", "initWithTimeIntervalSinceNow:", "initWithTimeIntervalSinceReferenceDate:", "initWithTitle:", "initWithTitle:action:keyEquivalent:", - "initWithTitle:inputController:", + "initWithTitle:action:keyEquivalent:representedNavNode:", "initWithTransform:", + "initWithTranslator:selector:", + "initWithTreeController:", + "initWithTreeController:keyPath:", "initWithType:", "initWithType:arg:", - "initWithType:itemIdentifier:", + "initWithType:error:", "initWithType:location:", - "initWithUIController:", - "initWithUIController:group:", - "initWithUID:", - "initWithUID:dataFile:", + "initWithType:subpredicates:", + "initWithTypefaceInfo:key:", + "initWithTypesetter:", "initWithURL:", "initWithURL:MIMEType:expectedContentLength:textEncodingName:", + "initWithURL:allowNonExecutable:", "initWithURL:byReference:", "initWithURL:cachePolicy:timeoutInterval:", "initWithURL:cached:", "initWithURL:documentAttributes:", - "initWithURL:httpStream:readStreamToProxy:writeStreamToProxy:", + "initWithURL:options:documentAttributes:error:", "initWithURL:target:parent:title:", "initWithURL:title:", + "initWithURL:traverseLink:", "initWithURLString:title:lastVisitedTimeInterval:", "initWithUTF8String:", - "initWithUndoManager:", - "initWithUniqueId:", + "initWithUnavoidableSpecifier:path:url:isSymbolicLink:", "initWithUnsignedChar:", "initWithUnsignedInt:", "initWithUnsignedLong:", @@ -9400,38 +10731,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "initWithUnsignedShort:", "initWithUser:", "initWithUser:password:persistence:", - "initWithUser:password:url:", - "initWithVCardRepresentation:", - "initWithValue:label:property:", + "initWithValue:sqlType:", + "initWithValues:count:", + "initWithValues:objectID:", "initWithView:", "initWithView:className:", + "initWithView:context:", + "initWithView:height:fill:isHorizontal:", "initWithView:layoutManager:characterIndex:attachmentCell:", "initWithView:printInfo:", "initWithVoice:", "initWithWebFrame:", "initWithWebFrameView:", "initWithWhite:alpha:", - "initWithWidget:", "initWithWindow:", "initWithWindow:rect:", "initWithWindowNibName:", "initWithWindowNibName:owner:", - "initWithWindowNibPath:owner:", - "initWithWindowRef:", + "initWithX:", + "initWithX:Y:", + "initWithX:Y:Z:", + "initWithX:Y:Z:W:", + "initWithXMLNode:objectID:", + "initWithXMLString:", "initWithYear:month:day:hour:minute:second:timeZone:", - "initialEvent", - "initialFieldsForProperty:", "initialFirstResponder", "initialPoint", "initialRequest", "initialValues", "initialize", - "initializeDataFileInfo:", + "initialize:", + "initializeButtonStructureAtX:y:forResolution:", "initializeFromDefaults", "initializeItem:", + "initializeRecipe:", "initializeSettings:", - "initializeUserAndSystemFonts", "initializerFromKeyArray:", + "inlayROI:forRect:", "innerRect", "innerTitleRect", "inputClientBecomeActive:", @@ -9439,78 +10775,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "inputClientEnabled:", "inputClientResignActive:", "inputContext", + "inputContextForFirstTextView:", "inputContextWithClient:", - "inputController", "inputElementAltText", "inputKeyBindingManager", + "inputKeys", + "inputStreamWithFileAtPath:", "insert:", - "insert:before:", "insertAttributedString:atIndex:", "insertBacktab:", + "insertChild:atIndex:", "insertColor:key:atIndex:", "insertColumn:", "insertColumn:withCells:", "insertCompletion:forPartialWordRange:movement:isFinal:", - "insertCustomLabel:", - "insertData::", + "insertCorrelation:", "insertDescriptor:atIndex:", "insertElement:atIndex:", "insertElement:range:coalesceRuns:", "insertElements:count:atIndex:", + "insertEntity:intoOrderingArray:withDependencies:processingSet:", "insertEntry:atIndex:", - "insertFormat:atIndex:", "insertGlyph:atGlyphIndex:characterIndex:", + "insertGlyphs:", "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:", - "insertInAttachments:", "insertItem:atDateIndex:", "insertItem:atIndex:", "insertItem:path:dirInfo:zone:plist:", "insertItemViewer:atIndex:", - "insertItemWithImage:atIndex:", "insertItemWithItemIdentifier:atIndex:", "insertItemWithObjectValue:atIndex:", "insertItemWithTitle:action:keyEquivalent:atIndex:", "insertItemWithTitle:atIndex:", + "insertLineBreak", "insertNewButtonImage:in:", "insertNewline:", - "insertNewlineIgnoringFieldEditor:", + "insertNode:atSubNodeIndex:", + "insertObject:", "insertObject:at:", "insertObject:atArrangedObjectIndex:", + "insertObject:atArrangedObjectIndexPath:", "insertObject:atIndex:", + "insertObject:inAttributesAtIndex:", + "insertObject:inNamespacesAtIndex:", "insertObject:range:", - "insertObjectIntoMasterArrayRelationship:atIndex:", + "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:", "insertObjects:atArrangedObjectIndexes:", "insertObjects:atIndexes:", - "insertObjectsIntoMasterArrayRelationship:atIndexes:", - "insertParagraphSeparator:", + "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:", + "insertParagraphSeparator", + "insertParagraphSeparatorInQuotedContent", "insertPopItemWithTitle:andObject:", "insertProxy:", "insertRow:", "insertRow:withCells:", - "insertRulers", - "insertSpace:atIndex:", - "insertSpinningArrows", + "insertRows:atIndex:", + "insertStatement", "insertString:atIndex:", "insertTab:", - "insertTabIgnoringFieldEditor:", - "insertTabViewItem:atIndex:", + "insertTable:", "insertText:", "insertText:client:", + "insertText:selectInsertedText:", "insertTextContainer:atIndex:", "insertValue:atIndex:inPropertyWithKey:", "insertValue:inPropertyWithKey:", - "insertValue:withLabel:atIndex:", - "insertedNullPlaceholder", + "insertedObjects", "insertionContainer", "insertionIndex", - "insertionIndexForGroup:", - "insertionIndexForMember:inSortedMembers:", "insertionKey", "insertionPointColor", "insertionReplaces", "insertsNullPlaceholder", + "insetByX:Y:", "installInFrame:", "installInputManagerMenu:", + "installKeyEventHandler", "installedPlugins", "instanceMethodDescFor:", "instanceMethodDescriptionForSelector:", @@ -9520,158 +10860,155 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "instancesImplementSelector:", "instancesRespondTo:", "instancesRespondToSelector:", + "instantiate::", "instantiateNibWithExternalNameTable:", "instantiateNibWithOwner:topLevelObjects:", "instantiateObject:", "instantiateWithObjectInstantiator:", "int32Value", "intAttribute:forGlyphAtIndex:", - "intForKey:inTable:", + "intParameterValue:", "intValue", - "intValueOfProperty:", "integerForKey:", "intercellSpacing", "interceptKeyEvent:toView:", "interfaceStyle", - "internalName", + "internCString:pointer:", + "internalNameForEntityName:version:", + "internalNameForPropertyName:version:", "internalSaveTo:removeBackup:errorHandler:", "internalSaveTo:removeBackup:errorHandler:temp:backup:", - "internalSubset", - "internalWritePath:errorHandler:remapContents:", + "internalWritePath:errorHandler:remapContents:hardLinkPath:", "interpretEventAsCommand:forClient:", "interpretEventAsText:forClient:", "interpretKeyEvents:", "interpretKeyEvents:forClient:", "interpretKeyEvents:sender:", + "interpreterBuiltins", "interpreterCount", - "interrupt", - "interruptExecution", "interruptForPolicyChangeError", - "intersectGroupMembers:withSearchResult:", "intersectSet:", + "intersectWith:", "intersectWithRect:", - "intersectsIndexesInRange:", "intersectsSet:", - "interval", "intervalSinceLastActive", "invTransform:", "invTransformRect:", "invalidate", "invalidate:", "invalidateAttributesInRange:", + "invalidateCacheAndStorage", "invalidateCachedDrawingImage", - "invalidateClassDescriptionCache", "invalidateConnectionsAsNecessary:", "invalidateCursorRectsForView:", "invalidateDisplayForCharacterRange:", "invalidateDisplayForGlyphRange:", - "invalidateDisplayedMembersList", "invalidateFocus:", "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:", "invalidateHashMarks", - "invalidateInvisible", "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:", - "invalidateParagraphStyles", + "invalidateObjectValueInObject:", + "invalidateObjectsWithGlobalIDs:", "invalidateProxy", "invalidateRect:", "invalidateRegion:", - "invalidateResourceCache", "invalidateShadow", "invalidateTextContainerOrigin", - "invalidateWrapper", + "inverseColumnName", "inverseForRelationshipKey:", + "inverseManyToMany", + "inverseRelationship", + "inverseToOne", "invert", - "invertedDictionary", "invertedSet", - "invocation", + "invfk", "invocationWithMethodSignature:", "invoke", + "invokeDefaultMethodWithArguments:", "invokeSelector:withArguments:forBinding:atIndex:error:", + "invokeSelector:withArguments:forBinding:atIndexPath:error:", "invokeSelector:withArguments:forBinding:error:", "invokeSelector:withArguments:forBinding:object:", "invokeServiceIn:msg:pb:userData:error:", "invokeServiceIn:msg:pb:userData:menu:remoteServices:", + "invokeUndefinedMethodFromWebScript:withArguments:", "invokeWithTarget:", "invokesSeparatelyWithArrayObjectsWithBinding:", - "isAClassOfObject:", "isARepeat", "isAbsolutePath", + "isAbstract", "isActive", - "isAddressBook", - "isAdmin", "isAlias", "isAlternate", "isAncestorOfObject:", "isAnimating", - "isAnyApplicationSpeaking", - "isApplication", + "isAnimationFinished", "isAtEnd", "isAttached", + "isAttribute", "isAutodisplay", - "isAutoscroll", - "isAvaliable:", - "isBaseFont", "isBeginMark", "isBeingEdited", "isBezeled", - "isBidirectionalControlCharacter:", "isBindingKeyOptional:", "isBindingKeyless:", "isBindingReadOnly:", + "isBooleanValueBindingForObject:", "isBordered", - "isBorderedForState:", "isButtonBordered", - "isBycopy", "isByref", "isCachedSeparately", - "isCanonical", - "isCardDisplayed", - "isCardPaneVisible", "isCaseInsensitiveLike:", + "isCharacterSmartReplaceExempt:isPreviousCharacter:", "isCoalescing", - "isCocoa", "isColor", + "isColumn", "isColumnSelected:", - "isCompact", "isCompiled", "isConnected", "isContainer", + "isContentEditable", "isContextHelpModeActive", "isContinuous", + "isContinuousGrammarCheckingEnabled", "isContinuousSpellCheckingEnabled", - "isControllerVisible", "isCopyingOperation", "isCurrListEditable", "isDataRetained", "isDaylightSavingTime", "isDaylightSavingTimeForDate:", - "isDaylightSavingTimeForTimeInterval:", - "isDeadKeyProcessingEnabled", - "isDeferred", + "isDebugEnabled", "isDeletableFileAtPath:", + "isDeleted", "isDescendantOf:", - "isDirectoriesPaneVisible", + "isDescendantOfNode:", "isDirectory", - "isDirectoryGroupSelected", "isDirectoryNode:", + "isDisconnectedMountPoint", "isDisplayPostingDisabled", - "isDisplayedWhenStopped", "isDocumentEdited", + "isDone", "isDragging", + "isDrawingContentAtIndex:", "isDrawingToScreen", + "isDroppedConnectionException:", "isEPSOperation", "isEditable", + "isEditableIfEnabled", + "isEditableQuery", "isEditing", "isEditingAtIndex:withObject:", - "isEditingGroupName", + "isEditingAtIndexPath:withObject:", "isEditingWithObject:", + "isEjectable", "isEmpty", - "isEmptyPerson", + "isEmptyHTMLElement:", "isEnabled", "isEnabledForSegment:", - "isEnabledWithSelection:", "isEndMark", + "isEnteringProximity", "isEntryAcceptable:", + "isEnumeration", "isEqual:", "isEqualTo:", "isEqualToArray:", @@ -9679,7 +11016,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "isEqualToData:", "isEqualToDate:", "isEqualToDictionary:", - "isEqualToHost:", "isEqualToIndexSet:", "isEqualToNumber:", "isEqualToSet:", @@ -9687,179 +11023,173 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "isEqualToTimeZone:", "isEqualToValue:", "isErrorStatusCode:", - "isEventCoalescingEnabled", "isExcludedFromWindowsMenu", "isExecutableFileAtPath:", "isExpandable:", + "isExpandableAtArrangedObjectIndexPath:", "isExpanded", "isExpandedNode:", - "isExpired", - "isExplicitlyNonEditable", "isExtensionHidden", "isFault", "isFauxDisabled", "isFauxDisabledNode:", + "isFetchInProgress", "isFieldEditor", - "isFieldVisible:", "isFileListOrderedAscending", "isFileListOrderedCaseSensitive", "isFilePackageAtPath:", "isFilePropertyDisplayed:", "isFileURL", + "isFinishedDecoding", "isFirstAndKey", "isFixedPitch", "isFlipped", "isFloatingPanel", "isFlushDisabled", "isFlushWindowDisabled", - "isFontAvailable:", "isFontFixedPitch:", "isFrameSet", - "isFrontWindow", + "isGatheringResults", "isGreaterThan:", "isGreaterThanOrEqualTo:", - "isGroupsPaneVisible", "isHeartBeatThread", "isHidden", "isHiddenOrHasHiddenAncestor", "isHighlighted", - "isHitByPath:", - "isHitByPoint:", - "isHitByRect:", "isHorizontal", "isHorizontallyCentered", "isHorizontallyResizable", - "isHostCacheEnabled", - "isInFrontWindow", + "isInInterfaceBuilder", "isInMotion", - "isInResponderChain", "isIndeterminate", + "isInserted", + "isInvalidationCapableObject:withSelector:", "isItemExpanded:", + "isItemSelected", "isItemShownInPopupIfSoleEntry:", "isJavaEnabled", + "isJavaPlugIn", "isJavaScriptEnabled", "isKey:inTable:", + "isKeyExcludedFromWebScript:", "isKeyWindow", "isKindOf:", "isKindOfClass:", "isKindOfClassNamed:", - "isKindOfGivenName:", - "isLastImportGroupVisible", "isLeaf", + "isLenient", "isLessThan:", "isLessThanOrEqualTo:", "isLike:", + "isLinearX0:y0:x1:y1:x2:y2:", + "isList", "isLoaded", "isLoading", - "isLocalMount", + "isLocationRequiredToCreate", "isLocationRequiredToCreateForKey:", "isLocking", - "isMainInputController", "isMainWindow", - "isMember:", + "isMakeHistoryEnabled", + "isManyToMany", + "isMaster", "isMemberOf:", "isMemberOfClass:", "isMemberOfClassNamed:", - "isMemberOfGivenName:", - "isMembersPaneVisible", - "isMiniaturizable", "isMiniaturized", - "isModalPanel", "isMovable", "isMovableByWindowBackground", "isMultiThreaded", - "isMultiple", "isMutable", "isMuted", "isNSIDispatchProxy", "isNativeType:", - "isNewPerson:", + "isNegation", "isNewWindowEqualToOldWindow", "isNotEqualTo:", "isNull", + "isObjectID:equalTo:", + "isObjectTableColumnDataCell:", "isObscured", "isOneShot", "isOneway", "isOpaque", - "isOpaqueForState:", "isOpen", - "isOptionalArgumentWithName:", - "isOutputStackInReverseOrder", - "isOutputTraced", + "isOptional", "isPackage", "isPaged", - "isPaneSplitter", "isPartialStringValid:newEditingString:errorDescription:", "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:", - "isPeoplePicker", "isPlaceholderForMarkerExplicitlySet:", "isPlanar", "isPlaying", + "isPlugInView:", "isPluginViewStarted", - "isPoint:inRectangle:", "isPreview", - "isPrimary", + "isPreviewColumn", + "isPrimaryKey", "isProxy", - "isProxyNeededForURL:", - "isReachable", - "isReadOnlyKey:", + "isQuery", + "isQuickTimePlugIn", + "isReadOnly", "isReadableFileAtPath:", "isRedoing", + "isReflexive", "isRegularFile", + "isRelationship", "isReleasedWhenClosed", "isReloading", - "isRemovable", "isResizable", "isRichText", + "isRightToLeft", + "isRootEntity", "isRotatedFromBase", "isRotatedOrScaledFromBase", "isRowSelected:", - "isRowSelected:subRow:", "isRulerVisible", "isRunning", "isScalarProperty", - "isScreenFont", "isScrollable", + "isSearchable", "isSecure", "isSelectable", "isSelected", "isSelectedForSegment:", "isSelectionByRect", + "isSelectionEditable", + "isSelectorExcludedFromWebScript:", "isSeparatorItem", "isSessionOnly", - "isSetOnMouseEntered", - "isSetOnMouseExited", "isSheet", - "isShown", "isSimpleRectangularTextContainer", + "isSingleAttribute:", + "isSingleDTDNode", + "isSingleTableEntity", "isSizeDisplayedForNode:", "isSpeaking", - "isSpecialGroup", - "isSpecialGroupSelected", + "isStandalone", "isStarted", "isStatusBarVisible", - "isStrokeHitByPath:", - "isStrokeHitByPoint:", - "isStrokeHitByRect:", "isSubclassOfClass:", "isSubsetOfSet:", "isSubviewCollapsed:", "isSuperclassOfClass:", - "isSupersetOfSet:", - "isSupported::", - "isSupportingCoalescing", - "isSuspended", "isSymbolicLink", - "isSynchronized", "isTargetItem", + "isTemporary", + "isTemporaryID", + "isTestingInterface", "isTitled", + "isToMany", "isToManyKey:", + "isToOne", "isTornOff", "isTracking", + "isTransient", "isTransparent", "isTrue", - "isUndoRegistrationEnabled", + "isTypeNotExclusive:", "isUndoing", + "isUpdated", "isUsableWithObject:", "isValid", "isValidGlyphIndex:", @@ -9867,27 +11197,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "isVerticallyCentered", "isVerticallyResizable", "isViewOfPickerLoaded:", + "isVirtual", "isVisible", "isVolume", - "isVolumeEjectable", - "isVolumeLocal", - "isWaitCursorEnabled", "isWellFormed", "isWindowInFocusStack:", "isWindowLoaded", "isWord:inDictionaries:caseSensitive:", "isWordInUserDictionaries:caseSensitive:", - "isWrapper", "isWritableFileAtPath:", - "isZoomable", "isZoomed", - "isiDisk", - "issueChangePropertiesCommand", - "issueCommand", - "issueSetImageCommandWithData:", - "italicAngle", + "isaForAutonotifying", + "islamicCalendar", + "islamicCivilCalendar", + "issueCopyCommand", + "issueCutCommand", + "issuePasteCommand", "item", - "item:", "itemAdded:", "itemArray", "itemAtIndex:", @@ -9901,32 +11227,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "itemMatrix", "itemObjectValueAtIndex:", "itemRemoved:", - "itemRolledOut", - "itemRolledOver", - "itemSize", - "itemSpacing", "itemTitleAtIndex:", "itemTitles", - "itemType", "itemWithTag:", "itemWithTitle:", "items", + "ivar", + "japaneseCalendar", "javaScriptCanOpenWindowsAutomatically", - "javaScriptInterpretersCount", - "javaScriptNoGCAllowedObjectsCount", - "javaScriptObjectsCount", - "javaScriptReferencedObjectsCount", - "javaScriptRootObjectClasses", "jobDisposition", - "jobStyleHint", - "jobTitleFieldPresent", "jobWillBeDeallocated", + "joinSemantic", + "joinWithSourceAttributeName:destinationAttributeName:", + "joins", + "joinsForRelationship:", "jumpSlider:", "jumpToSelection", "jumpToSelection:", + "justifyWithFactor:", "keepBackupFile", - "keepWorkLoopAlive", + "kernelsWithString:", "key", + "keyBackPointer", "keyBindingManager", "keyBindingManagerForClient:", "keyBindingState", @@ -9934,6 +11256,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "keyClassDescription", "keyCode", "keyDown:", + "keyDown:inRect:ofView:", "keyEnumerator", "keyEquivalent", "keyEquivalentAttributedString", @@ -9943,13 +11266,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "keyEquivalentRectForBounds:", "keyEquivalentWidth", "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", - "keyForBinding:", "keyForFileWrapper:", + "keyForParameter:", "keyMessageForEvent:", - "keyNavigationView", "keyPath", + "keyPathExpressionForString:", + "keyPathForBinding:", + "keyPathIfAffectedByValueForKey:exactMatch:", "keySpecifier", "keyUp:", + "keyUp:inRect:ofView:", "keyValueBindingForKey:typeMask:", "keyViewSelectionDirection", "keyWindow", @@ -9957,25 +11283,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "keyWindowFrameShadowColor", "keyWithAppleEventCode:", "keyboardFocusIndicatorColor", + "keyboardUIMode", "keys", - "keysSortedByValueUsingSelector:", - "keysTriggeringChangeNotificationsForDependentKey:", "keywordForDescriptorAtIndex:", "kind", "knobColor", "knobProportion", "knobRectFlipped:", "knobThickness", - "knownTimeZoneNames", + "knownKeyValuesForObjectID:withContext:", + "knownKeyValuesPointer", "knowsPageRange:", "knowsPagesFirst:last:", "label", - "labelAtIndex:", + "labelColor", "labelFontOfSize:", - "labelFontSize", "labelForSegment:", + "labelOnlyMenuDidSendActionNotification:", + "labelRectOfRow:", "labelSizeForBounds:", - "labels", + "lanczosTable", "language", "languageCode", "languageContext", @@ -9986,58 +11313,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "languageWithName:", "lastChild", "lastColumn", + "lastComponent:", "lastComponentOfFileName", "lastConversation", "lastCrayon", - "lastDirectoriesSearchString", - "lastFirstSortingNamePart1:part2:", - "lastImportGroup", "lastIndex", "lastItem", - "lastName", + "lastModifiedDate", "lastObject", "lastPathComponent", + "lastRange", + "lastResortFont", "lastSelectedItem", "lastVisibleColumn", - "lastVisitedTimeInterval", - "laterDate:", "launch", "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:", "launchApplication:", - "launchApplication:showIcon:autolaunch:", - "launchPath", "launchRealPlayer", "launchWithDictionary:", "launchedApplications", - "launchedTaskWithDictionary:", "launchedTaskWithLaunchPath:arguments:", "layout", - "layoutChanged:", "layoutControlGlyphForLineFragment:", + "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:", "layoutGlyphsInHorizontalLineFragment:baseline:", "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:", "layoutManager", "layoutManager:didCompleteLayoutForTextContainer:atEnd:", + "layoutManagerDidInvalidateLayout:", "layoutManagerOwnsFirstResponderInWindow:", "layoutManagers", "layoutOptions", "layoutParagraphAtPoint:", - "layoutSanityCheck", - "layoutStatusbar", + "layoutRectForTextBlock:atIndex:effectiveRange:", "layoutTab", "layoutToFitInIconWidth:", "layoutToFitInMinimumIconSize", "layoutToFitInViewerFrameHeight:", - "layoutToPageWidth:", - "layoutType", + "layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:", "lazyBrowserCell", + "lazyGetChildrenForNodeWithIdentifier:", "lazySync:", + "leading", "leadingOffset", + "leafKeyPath", "learnWord:", "learnWord:language:", + "leftChild", + "leftExpression", "leftIndentMarkerWithRulerView:location:", "leftMargin", - "leftMarginMarkerWithRulerView:location:", "leftSplitItem", "leftTabMarkerWithRulerView:location:", "leftView", @@ -10046,8 +11371,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "level", "levelForItem:", "levelForRow:", - "levelsOfUndo", + "libxml2Content", "lightGrayColor", + "lightweightHandleChildChanged:parent:property:", + "like:", "limitDateForMode:", "lineBreakBeforeIndex:withinRange:", "lineBreakByHyphenatingBeforeIndex:withinRange:", @@ -10057,31 +11384,39 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "lineCapStyle", "lineFragmentPadding", "lineFragmentRectForGlyphAtIndex:effectiveRange:", + "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", "lineFragmentRectForProposedRect:remainingRect:", "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:", "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:", - "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:allowLayout:", + "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", + "lineFragmentWidth", "lineHeightMultiple", "lineJoinStyle", "lineNumber", "lineRangeForRange:", - "lineScroll", "lineSpacing", "lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:", "lineToPoint:", "lineWidth", + "lineWidthForType:", "linkPath:toPath:handler:", "linkTextAttributes", + "linkWithCharacterRange:parent:", "listDescriptor", "listDictionary", + "listOptions", + "listeners", "listensInForegroundOnly", "load", + "load:", + "loadAndRestoreCurrentBrowsingNodePath:selectedNodes:", + "loadArchive", + "loadArchive:", "loadBitmapFileHeader", "loadBitmapInfoHeader", + "loadClass:", "loadColorLists", "loadColumnZero", - "loadContent", - "loadCookies", "loadData:MIMEType:textEncodingName:baseURL:", "loadDataRepresentation:ofType:", "loadDidFinish", @@ -10093,61 +11428,65 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "loadFindStringToPasteboard", "loadFinished", "loadFromURL:error:", - "loadHTMLString:baseURL:", "loadImage:", - "loadImage:forImageRep:", "loadImageHeader", "loadImageWithName:", "loadInBackground", "loadInForeground", - "loadMovieFromFile:", - "loadMovieFromURL:", + "loadKernel", + "loadLibrary:", "loadNib", "loadNibFile:externalNameTable:withZone:", "loadNibNamed:owner:", "loadPanelNamed:", - "loadPluginIfNeededForMIMEType:", + "loadPlugIn", + "loadPlugIn:allowNonExecutable:", "loadPluginRequest:", + "loadRecipeOverrides:", "loadRequest:", - "loadRequest:inTarget:withNotifyData:", - "loadResourceDataNotifyingClient:usingCache:", - "loadRoot", + "loadRequest:inTarget:withNotifyData:sendNotification:", "loadRulebook:", - "loadServersFromDefaultsFile", "loadSoundWithName:", "loadSuiteWithDictionary:fromBundle:", "loadSuitesFromBundle:", + "loadTidy", "loadType", "loadUI", - "loadURL:referrer:reload:target:triggeringEvent:form:formValues:", + "loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:", "loadWindow", "loadWithRequest:", + "loadWithRequestNow:", "loadedBundles", "loadedCellAtRow:column:", "loadsImagesAutomatically", - "localDrag", "localName", - "localNode", + "localNameForName:", "localObjects", "localProxies", + "localSnapshotForGlobalID:", + "localSnapshotForSourceGlobalID:relationshipName:", "localTimeZone", "locale", + "localeIdentifier", + "localizationDictionary", "localizations", + "localizationsToSearch", "localizedCaseInsensitiveCompare:", - "localizedCatalogNameComponent", "localizedColorNameComponent", "localizedCompare:", - "localizedDefaults", "localizedDescription", + "localizedEntityNameForEntity:", + "localizedFormattedDisplayLabels", "localizedInfoDictionary", "localizedInputManagerName", + "localizedModelStringForKey:", + "localizedName", "localizedNameForFamily:face:", - "localizedNameForTIFFCompressionType:", "localizedNameOfStringEncoding:", - "localizedPaperName", - "localizedScannerWithString:", + "localizedPropertyNameForProperty:", + "localizedRecoveryOptions", + "localizedRecoverySuggestion", "localizedStringForKey:value:table:", - "localizedStringForStatusCode:", "localizedStringWithFormat:", "localizesFormat", "location", @@ -10160,167 +11499,182 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "locationY", "locationZ", "lock", - "lockBeforeDate:", - "lockDate", + "lockDocument", "lockFocus", "lockFocusForView:inRect:needsTranslation:", "lockFocusIfCanDraw", + "lockFocusIfCanDrawInFrame:flipped:clip:", "lockFocusOnRepresentation:", "lockForReading", "lockForReadingWithExceptionHandler:", "lockForWriting", + "lockObjectStore", + "lockParentStore", "lockWhenCondition:", "lockWhenCondition:beforeDate:", - "lockWithPath:", - "logIn:", "logicalSize", - "logs", + "loginWindowDidSwitchFromUser:", + "loginWindowDidSwitchToUser:", + "logonButtonCell", "longCharacterIsMember:", - "longForKey:", "longLongValue", - "longMonthNames", "longValue", - "longWeekdayNames", "loopCount", - "loopMode", "loosenKerning:", "lossyCString", "lowerBaseline:", "lowercaseLetterCharacterSet", "lowercaseString", - "lowercaseWord:", - "lowercasedAttributes", "machPort", "magentaColor", "magentaComponent", - "maidenNameFieldPresent", - "mailRecentForEmail:", - "mailRecents", - "mailRecentsMatching:", "mainBundle", "mainDocumentURL", "mainFrame", "mainMenu", + "mainResource", "mainScreen", - "mainSplit", "mainWindow", "mainWindowFrameColor", "mainWindowFrameHighlightColor", "mainWindowFrameShadowColor", - "makeBTAvailable:", - "makeBTUnavailable:", + "maintainsInactiveSelection", "makeCellAtRow:column:", "makeCharacterSetCompact", "makeCharacterSetFast", "makeCurrentContext", + "makeDocumentForURL:withContentsOfURL:ofType:error:", "makeDocumentWithContentsOfFile:ofType:", - "makeDocumentWithContentsOfURL:ofType:", + "makeDocumentWithContentsOfURL:ofType:error:", "makeFirstResponder:", "makeIdentity", "makeImmutable", "makeKeyAndOrderFront:", "makeKeyWindow", "makeMainWindow", - "makeObjectsPerform:", - "makeObjectsPerform:with:", - "makeObjectsPerform:withObject:", + "makeNewConnection:sender:", + "makeNextSegmentKey", "makeObjectsPerformSelector:", "makeObjectsPerformSelector:withObject:", - "makeProperties:verifyWith:", - "makeQueries:", - "makeSelectedPrimary:", - "makeShown:", + "makePreviousSegmentKey", + "makeRegexFindSafe:", + "makeRegexSafe:", + "makeStale", "makeTextLarger:", "makeTextSmaller:", - "makeUID", "makeUntitledDocumentOfType:", + "makeUntitledDocumentOfType:error:", + "makeWebViewsPerformSelector:", "makeWindowControllers", "makeWindowsPerform:inOrder:", + "managedObjectClassName", + "managedObjectContext", + "managedObjectIDFromURIRepresentation:", + "managedObjectModel", + "manyToMany", + "manyToManyDeltas", + "manyToManyRelationships", "mapConversationToThread:", + "mapData", "mapForClass:", + "mapROI:forRect:", + "mapping", + "mappingForAttribute:forConfigurationWithName:", + "mappingForEntity:forConfigurationWithName:", + "mappingForRelationship:forConfigurationWithName:", + "mappingsForConfigurationWithName:inModel:", "markBegin", + "markDOMRange", "markEnd", "markNumRowsToToggleVisible", "markedRange", "markedTextAbandoned:", "markedTextAttributes", + "markedTextDOMRange", "markedTextSelectionChanged:client:", "marker", + "markerForItemNumber:", + "markerFormat", "markerLocation", - "markerName", + "markerWithRulerMarker:parent:", "markers", - "masterTemplateHasChanged:", + "markupStringFromNode:nodes:", + "markupStringFromRange:nodes:", "matchLabels:againstElement:", "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:", - "matchesAppleEventCode:", - "matchesLocationBestRepresentedBy:", + "matches:", "matchesOnMultipleResolution", - "matchesPattern:", "matchesPattern:caseInsensitive:", - "matchesRecord:", + "matchesWithoutOperatorComponentsKeyPath:", + "matchingFontDescriptorsWithMandatoryKeys:", "matrix", - "matrixClass", "matrixInColumn:", "max", "maxContentSize", - "maxRecents", - "maxResults", + "maxCount", + "maxDate", + "maxFormattedDisplayLabelWidth", "maxSize", - "maxUserData", "maxValue", - "maxVisibleColumns", "maxWidth", + "maximizeWindow:", "maximum", - "maximumAdvancement", - "maximumAttributeCacheSize", "maximumDecimalNumber", "maximumHeight", "maximumLength", "maximumLineHeight", - "maximumRecents", - "mayStartDragWithMouseDragged:", - "me", + "maximumRange", + "maximumRecentDocumentCount", + "mayDHTMLCopy", + "mayDHTMLCut", + "mayDHTMLPaste", + "mayStartDragAtEventLocation:", + "mblurROI:forRect:userInfo:", "measurementUnits", + "measurements:fromResolutionData:", "mediaBox", + "mediaStyle", "member:", - "memberAtIndex:", - "members", - "members:notFoundMarker:", - "membersAndSubgroups", - "membersChanged:", - "membersController", - "membersOfGroup:", - "membersSelectionChanged:", - "memoryCapacity", "menu", - "menuBarFontOfSize:", + "menu:updateItem:atIndex:shouldCancel:", "menuBarHeight", "menuBarVisible", "menuChanged:", "menuChangedMessagesEnabled", + "menuClass", "menuClassName", + "menuDelegateChanged", "menuFontOfSize:", "menuForEvent:", "menuForEvent:inRect:ofView:", + "menuForSegment:", "menuFormRepresentation", + "menuHasKeyEquivalent:forEvent:", + "menuHasKeyEquivalent:forEvent:target:action:", "menuItem", "menuItemCellForItemAtIndex:", "menuItemWithTag:", + "menuKeyEquivalentAction:forEvent:", + "menuKeyEquivalentTarget:forEvent:", + "menuLocation", "menuNeedsUpdate:", "menuRepresentation", "menuView", "menuZone", - "mergeMultiValue:forProperty:", - "mergeNote:", - "mergeSingleValue:forProperty:", - "message", + "mergeAttributesInto:", + "mergeCells", + "mergeFontFeaturesInto:", + "mergeFontVariationsInto:", + "mergeInVariations:", + "mergeStyleInto:", + "mergedModelFromBundles:", "messageFontOfSize:", - "messageImage", - "messageText", - "messageType", - "messageWidthForMessage:", + "metadataColumns", + "metadataForPersistentStoreWithURL:error:", + "metadataQuery:replacementObjectForResultObject:", + "metadataQuery:replacementValueForAttribute:value:", + "method", "methodArgSize:", - "methodDescFor:", "methodDescriptionForSelector:", "methodFor:", "methodForSelector:", @@ -10329,12 +11683,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "methodSignature", "methodSignatureForSelector:", "methods", - "metrics", - "microsecondOfSecond", - "middleNameFieldPresent", + "migratePersistentStore:toURL:withType:error:", "minColumnWidth", "minContentSize", "minContentSizeForMinFrameSize:styleMask:", + "minCount", + "minDate", "minFrameSize", "minFrameSizeForMinContentSize:styleMask:", "minFrameWidthWithTitle:styleMask:", @@ -10343,18 +11697,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "minValue", "minWidth", "miniaturize:", - "miniaturizeAll:", - "miniaturizedSize", "minimizeButton", + "minimizeWindow:", "minimum", "minimumDecimalNumber", "minimumFontSize", "minimumHeight", "minimumLineHeight", - "minimumSize", + "minimumLogicalFontSize", "minimumWidth", - "minimunWindowWidth:", - "miniwindowImage", "miniwindowTitle", "minusSet:", "minuteOfHour", @@ -10363,25 +11714,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "mnemonic", "mnemonicLocation", "modDate", - "modalMode", "modalWindow", "mode", "modeButton", "model", + "modelAndProxyKeysObserved", + "modelByMergingModels:", + "modifier", "modifierFlags", - "modifierFlagsChanged:", "modifiersForEvent:", "modifyFont:", "modifyFontTrait:", "modifyFontViaPanel:", - "modifyOptionsViaPanel:", + "moduleCanBeRemoved", "moduleWasInstalled", "moduleWillBeRemoved", "monthOfYear", "mostCompatibleStringEncoding", - "mountNewRemovableMedia", - "mounted:", - "mountedLocalVolumePaths", "mountedRemovableMedia", "mouse:", "mouse:inRect:", @@ -10395,12 +11744,13 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "mouseEnteredToolTip:inWindow:withEvent:", "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", "mouseExited:", - "mouseHit:", "mouseLocation", "mouseLocationOutsideOfEventStream", "mouseMoved:", "mouseMovedNotification:", + "mouseTracker:constrainPoint:withEvent:", "mouseTracker:didStopTrackingWithEvent:", + "mouseTracker:handlePeriodicEvent:", "mouseTracker:shouldContinueTrackingWithEvent:", "mouseTracker:shouldStartTrackingWithEvent:", "mouseUp:", @@ -10410,82 +11760,56 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "moveColumn:toColumn:", "moveCurrentPointInDirection:", "moveDown:", - "moveDownAndModifySelection:", - "moveFormatAtIndex:toIndex:", + "moveDragCaretToPoint:", "moveForward:", "moveForwardAndModifySelection:", + "moveGlyphsTo:from:", "moveInDirection:", "moveLeft:", - "moveLeftAndModifySelection:", - "moveParagraphBackwardAndModifySelection:", - "moveParagraphForwardAndModifySelection:", "movePath:toPath:handler:", "moveRight:", - "moveRightAndModifySelection:", - "moveRulerlineFromLocation:toLocation:", - "moveSelectionLeft", - "moveSelectionRight", - "moveToBeginningOfDocument:", - "moveToBeginningOfDocumentAndModifySelection:", - "moveToBeginningOfLine:", - "moveToBeginningOfLineAndModifySelection:", - "moveToBeginningOfParagraph:", - "moveToBeginningOfParagraphAndModifySelection:", - "moveToEndOfDocument:", - "moveToEndOfDocumentAndModifySelection:", - "moveToEndOfLine:", - "moveToEndOfLineAndModifySelection:", - "moveToEndOfParagraph:", - "moveToEndOfParagraphAndModifySelection:", + "moveSelectionToDragCaret:smartMove:", "moveToPoint:", "moveUp:", - "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", - "moveWordLeft:", - "moveWordLeftAndModifySelection:", - "moveWordRight:", - "moveWordRightAndModifySelection:", "movie", "movieController", "movieRect", "movieUnfilteredFileTypes", "movieUnfilteredPasteboardTypes", - "msgPrint:ok:", - "msgid", - "multiValueForProperty:", "multipleThreadsEnabled", - "mutableArrayValueForBinding:atIndex:resolveMarkersToPlaceholders:", + "multiply:by:", "mutableArrayValueForBinding:resolveMarkersToPlaceholders:", "mutableArrayValueForKey:", "mutableArrayValueForKeyPath:", - "mutableAttributedString", "mutableAttributes", "mutableBytes", + "mutableCollectionGetter", "mutableCopy", "mutableCopyWithZone:", - "mutableData", - "mutableDictionary", + "mutableSetValueForBinding:resolveMarkersToPlaceholders:", + "mutableSetValueForKey:", + "mutableSetValueForKeyPath:", "mutableString", "mutableSubstringFromRange:", - "myStatusChanged:", + "mutatingMethods", "name", - "name:reason:status:", "nameAtIndex:filtered:", - "nameDoubleAction", "nameFieldLabel", - "nameForDisplay", "nameFromPath:extra:", - "nameOfGlyph:", - "nameSorting", - "namedNodeMapWithImpl:", "names", "namesOfPromisedFilesDroppedAtDestination:", - "namespaceURI", + "namespaceForPrefix:", + "namespaces", "navNodeClass", + "navNodeWithSimpleQueryString:", "navView", + "navView:compareFilename:with::caseSensitive:", + "navView:compareFilename:with:caseSensitive:", + "navView:shouldShowNode:", "needsAction", "needsDelegate", "needsDisplay", @@ -10493,13 +11817,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "needsPanelToBecomeKey", "needsResyncWithDefaultVoice", "needsSizing", - "needsToBeUpdatedFromPath:", "needsToDrawRect:", - "needsUpdateNotifications", "negativeFormat", + "negativeInfinitySymbol", "nestingLevel", "netService:didNotPublish:", "netService:didNotResolve:", + "netService:didUpdateTXTRecordData:", + "netServiceBrowser:didFindDomain:moreComing:", + "netServiceBrowser:didFindService:moreComing:", + "netServiceBrowser:didNotSearch:", + "netServiceBrowser:didRemoveDomain:moreComing:", + "netServiceBrowser:didRemoveService:moreComing:", + "netServiceBrowserDidStopSearch:", + "netServiceBrowserWillSearch:", + "netServiceDidResolveAddress:", "netServiceDidStop:", "netServiceWillPublish:", "netServiceWillResolve:", @@ -10511,264 +11843,148 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "newColorName:", "newConversation", "newCount:", + "newCreateTableStatementForEntity:", + "newCreateTableStatementForManyToMany:", "newDataAvailable", - "newDictionaryFromDictionary:subsetMapping:zone:", + "newDeleteStatementWithCorrelation:", + "newDeleteStatementWithRow:", "newDistantObjectWithCoder:", "newDocument:", + "newFetchedArray", + "newFetchedRow", + "newFetchedRowForObjectID:", + "newFetchedRowsForObjectID:forManyToMany:", + "newFetchedRowsForObjectID:forToMany:", "newFileButton", "newFlipped:", - "newFolder:", - "newGroup", - "newGroup:", - "newGroupFromSelection:", + "newForeignEntityKeyNumberForSlot:", + "newForeignKeyID:entity:", + "newForeignKeyNumberForSlot:", + "newGeneratorWithStatement:", + "newInsertStatementWithCorrelation:", + "newInsertStatementWithRow:", + "newInsertedObject", "newInstanceWithKeyCount:sourceDescription:destinationDescription:zone:", "newInvocationWithCoder:", "newInvocationWithMethodSignature:", "newLegalColorSwatchHeightFromHeight:", - "newList:", "newListName:", "newMiniaturizeButton", "newNode", + "newNodeWithIndex:belowIndexPath:firstChild:sibling:", "newObject", - "newRecord:ofType:", - "newSeparatorItem", + "newObjectIDForEntity:", + "newObjectIDForEntity:pk:", + "newPrimaryKey64", + "newPrimaryKeyForEntity:", + "newRowsForFetchRequest:", + "newSelectStatementWithFetchRequest:", + "newSiblingNodeAtIndex:", "newStandardItemWithItemIdentifier:", + "newStatementWithEntity:", + "newStatementWithSQLString:", + "newStatementWithoutEntity", "newStream:target:stream:", + "newTempNotificationWithName:object:userInfo:", "newToolbarButton", "newType:data:firstIndirectType:", + "newUpdateStatementWithRow:", "newViewForToolbar:inWindow:attachedToEdge:", "newWithCoder:zone:", + "newWithColorSpace:components:count:", "newWithDictionary:", "newWithInitializer:", - "newWithInitializer:objects:zone:", "newWithInitializer:zone:", "newWithKey:object:", "newWithKeyArray:", "newWithKeyArray:zone:", "newWithPath:prepend:attributes:cross:", "newZoomButton", - "nextArraySeperatedByToken:stoppingAt:inEncoding:", - "nextBase64Data", - "nextBase64Line:", - "nextCard:", - "nextData", - "nextEscapedCharacter", "nextEventForWindow:", "nextEventMatchingMask:", "nextEventMatchingMask:untilDate:inMode:dequeue:", - "nextFrame:", - "nextKeySegment", "nextKeyView", "nextKeyViewInsideWebFrameViews", "nextKeyViewOutsideWebFrameViews", "nextObject", - "nextPersonWithLength:", - "nextPreviousCard:", - "nextQuotedPrintableData", + "nextPK64", "nextResponder", "nextSibling", - "nextSingleByteBase64Line:", - "nextSingleByteStringInEncoding:quotedPrintable:stopTokens:trim:", "nextState", - "nextStringInEncoding:quotedPrintable:stopTokens:trim:", - "nextText", "nextToken", - "nextTokenPeak:", - "nextTokenPeakSingle:length:", - "nextTokenPeakUnicode:length:", - "nextUnicodeBase64Line:", - "nextUnicodeStringStopTokens:quotedPrintable:trim:", "nextValidKeyView", "nextWordFromIndex:forward:", "nextWordInString:fromIndex:useBook:forward:", "nibInstantiate", - "nibInstantiateWithOwner:", "nibInstantiateWithOwner:topLevelObjects:", - "nibName", - "nickNameFieldPresent", - "noCurrentPicture", + "nilSymbol", "noGCAllowedObjectCount", "noResponderFor:", "node", - "nodeCount", - "nodeListWithImpl:", - "nodeName", + "nodeAtIndexPath:", + "nodeFromManagedObject:objectIDMap:", "nodeType", - "nodeValue", "nodeWithFBENode:", - "nodeWithImpl:", "nodeWithName:position:rect:view:children:", "nodeWithName:value:source:children:", "nodeWithPath:", - "nonAllowableCharacters", + "nodesForXPath:error:", + "nodesFromList:", + "noiseImage", "nonBaseCharacterSet", - "nonThreadedSave", + "nonmutatingMethods", "nonretainedObjectValue", - "nonspacingMarkPriority:", "normalSpeakingRate", - "normalize", + "normalizeAdjacentTextNodesPreservingCDATA:", + "normalizeWhitespace:", + "normalizedFontDescriptor", "normalizedRect:", "notANumber", + "notANumberSymbol", "notActiveWindowFrameColor", "notActiveWindowFrameHighlightColor", "notActiveWindowFrameShadowColor", - "notActiveWindowTitlebarTextColor", - "notImplemented:", + "notPredicateOperator", "notShownAttributeForGlyphAtIndex:", - "notations", - "note", - "noteDirectoriesListChanged", - "noteDirectoriesSelectionChanged", - "noteDirectoryResultsChanged", - "noteDirectoryResultsSelectionChanged", - "noteFileSystemChanged", + "notationName", + "noteContentValueHasChanged", "noteFileSystemChanged:", - "noteFirstLineParagraphStyle", "noteFontCollectionsChanged", - "noteFontFavoritesChanged", - "noteGroupsListChanged", - "noteGroupsSelectionChanged", - "noteMembersListChanged", - "noteMembersSelectionChanged:", + "noteHeightOfRowsWithIndexesChanged:", "noteNewRecentDocument:", "noteNewRecentDocumentURL:", "noteNumberOfItemsChanged", "noteNumberOfRowsChanged", - "noteRollOverPath:", - "noteSecondLineParagraphStyle", - "noteUserDefaultsChanged", + "noteQueryAttributesChanged", "notificationCenter", "notificationCenterForType:", "notificationWithName:object:", "notificationWithName:object:userInfo:", "notifyData", - "notifyDataIsReady", - "notifyObjectWhenFinishedExecuting:", - "notifyOnSelectionChanged", - "nsipArrayByApplyingSelector:", - "nsipArrayByApplyingSelector:withObject:", - "nsipContainsObjectIdenticalTo:", - "nsipDrawNicelyScaledInRect:inView:operation:fraction:", - "nsipDrawNicelyScaledInRect:operation:fraction:", - "nsipFrame:constrainedToScreen:", - "nsipImageWithMaxSize:", - "nsipImageWithMaxSize:withLeftPad:", - "nsipJPEGDataWithMaxSize:compression:", - "nsipLargestRepSize", - "nsipMakeDirectoriesInPath:mode:", - "nsipMenuWindowBackgroundColor", - "nsipSetFrame:constrainedToScreen:", - "nsipSetFrame:constrainedToScreen:display:animate:", - "nts_AddPropertiesAndTypes:toTable:needsReadWriteMode:registerDataTypes:", - "nts_AddRecord:", - "nts_AddTable:withPropertiesAndTypes:needsReadWriteMode:", - "nts_AddTable:withPropertiesAndTypes:needsReadWriteMode:registerDataTypes:", - "nts_AddToCache", - "nts_AddToModifiedRecordsList:", - "nts_AlternateName", - "nts_BeginLoadingImageDataForClient:", - "nts_BeginLoadingImageForPerson:forClient:orCallback:withRefcon:", - "nts_CacheDataFileSchema", - "nts_CacheNewRecord:", - "nts_CacheRecord:", - "nts_CachedRecordWithUID:", - "nts_CascadeRemove", - "nts_ChangedProperties", - "nts_Cleanup", - "nts_ClearCaches", - "nts_ClearInstanceCaches", - "nts_ClearTemporaryCache", - "nts_ConvertPumaAddressBook", - "nts_DeletedUID", - "nts_DistributionIdentifierForProperty:", - "nts_DoesPropertyExist:inTable:", - "nts_FindMemberUID:inArray:", - "nts_GroupContents", - "nts_GroupUID", - "nts_Groups", - "nts_HasChangedProperties", - "nts_ImageData", - "nts_ImportMacBuddyMeCard", - "nts_ImportTipCards", - "nts_IndexOfMemberWithUID:", - "nts_Info", - "nts_InitDefaultContactManager", - "nts_InitWithDeletedUID:", - "nts_InitWithGroupUID:memberUID:", - "nts_InsertInArray:", - "nts_Logs", - "nts_MailRecents", - "nts_MatchesRecord:", - "nts_Me", - "nts_MemberUID", - "nts_Members", - "nts_OpenContactManagerWithMode:cacheSchema:", - "nts_ParentGroups", - "nts_PathForLocalImage", - "nts_PathForUIDTaggedImage", - "nts_People", - "nts_PropertiesForTable:", - "nts_Reconnect", - "nts_RecordForUniqueId:", - "nts_RecursiveContainsGroup:", - "nts_RegisterQualifiedTable:forTable:hashView:", - "nts_RemoveFromCache", - "nts_RemoveProperties:fromTable:", - "nts_RemoveRecord:", - "nts_Save", - "nts_SchemaForTable:", - "nts_SetDistributionIdentifier:forProperty:", - "nts_SetDistributionIdentifier:forProperty:person:", - "nts_SetHasUnsavedChanges:", - "nts_SetImageData:", - "nts_SetMe:", - "nts_SetValue:forProperty:", - "nts_SetValueInChangedProperties:forProperty:", - "nts_SetValueInTemporaryCache:forProperty:", - "nts_SetupWithSharedAddressBook:", - "nts_SharedAddressBook", - "nts_Subgroups", - "nts_SyncCount", - "nts_SynchronizeCaches", - "nts_SynchronizeData", - "nts_Touch", - "nts_TypeOfProperty:forTable:", - "nts_UncacheRecord:", - "nts_ValueForProperty:", - "nts_ValueInTemporaryCacheForProperty:", - "nts_WriteAtRow:", - "nts__fullName", - "nts__fullPhoneticName", - "nts__isLastNameFirst", - "nts_recordDidSave", "null", "nullDescriptor", "numPendingOrLoadingRequests", "numRowsToToggleVisible", "numberOfArguments", + "numberOfColorComponents", "numberOfColumns", - "numberOfContentItems", + "numberOfComponents", "numberOfGlyphs", "numberOfGroups", - "numberOfImageItems", "numberOfImages", "numberOfItems", "numberOfItemsInComboBox:", "numberOfItemsInComboBoxCell:", - "numberOfItemsPerRow", + "numberOfItemsInMenu:", + "numberOfMajorTickMarks", "numberOfPages", - "numberOfPaletteEntries", "numberOfPlanes", "numberOfRows", "numberOfRowsInTableView:", - "numberOfSamplesPerPaletteEntry", "numberOfSelectedColumns", "numberOfSelectedRows", - "numberOfSubrowsInTableView:forRow:", "numberOfTabViewItems", - "numberOfThreadsAlive", "numberOfTickMarks", - "numberOfVirtualScreens", "numberOfVisibleCols", "numberOfVisibleColumns", "numberOfVisibleItems", @@ -10787,11 +12003,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "numberWithUnsignedLongLong:", "numberWithUnsignedShort:", "objCType", + "objcClassName", + "objcCreationMethodName", "object", + "object:shouldBind:toObject:withKeyPath:options:", + "object:shouldUnbind:", "objectAt:", "objectAtIndex:", "objectAtIndex:effectiveRange:", "objectAtIndex:effectiveRange:runIndex:", + "objectAtIndexPath:", "objectAtRunIndex:length:", "objectBeingTested", "objectByTranslatingDescriptor:toType:inSuite:", @@ -10800,70 +12021,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "objectDidBeginEditing:", "objectDidEndEditing:", "objectDidTriggerAction:", + "objectDidTriggerDoubleClickAction:", "objectEnumerator", - "objectExists:", "objectForIndex:dictionary:", "objectForInfoDictionaryKey:", "objectForKey:", "objectForKey:inDomain:", "objectForServicePath:", "objectForServicePath:app:doLaunch:limitDate:", - "objectGraphDescription", - "objectHasHiddenExtension:", - "objectHasSubFolders:", - "objectIsAlias:", - "objectIsApplication:", - "objectIsContainer:", - "objectIsForcedForKey:", - "objectIsForcedForKey:inDomain:", - "objectIsKnown:", - "objectIsLeaf:", - "objectIsRegisterediDisk:", - "objectIsVisible:", - "objectIsiDisk:", + "objectForWebScript", + "objectFrom:withIndex:", + "objectID", + "objectIDDataSize", + "objectIDDataType", + "objectIDFactoryForEntity:", + "objectIDFactoryForSQLEntity:", + "objectIDWithInteger32:", + "objectIDWithInteger64:", + "objectIDWithObject:", + "objectIDsForRelationship:forObjectID:", "objectLoadedFromCacheWithURL:response:size:", "objectMechanismsRequired", "objectMechanismsRequiredForObject:", - "objectNames", + "objectRegisteredForID:", "objectSpecifier", + "objectStore", "objectValue", "objectValueForDisplayValue:", + "objectValueInvalidationCapableObjectForObject:", "objectValueOfSelectedItem", "objectValues", + "objectWillChange:", "objectZone", "objectsAtIndexes:", "objectsByEvaluatingSpecifier", "objectsByEvaluatingWithContainers:", - "objectsFileType:", + "objectsForFetchRequest:inContext:", "objectsForKeys:notFoundMarker:", + "objectsForXQuery:constants:error:", + "observationCount", "observationInfo", + "observeKeyPathForBindingInfo:registerOrUnregister:object:", "observeValueForKeyPath:ofObject:change:context:", + "observedNode", + "observedNodeForExpandedNode:createIfNeeded:", + "observedNodesSet", + "observedObject", "observer", + "observingBinder", + "occurrence", "offStateImage", - "offset", - "offsetInFile", - "ok:", - "okForOpenMode", - "okForSaveMode", "oldSystemColorWithCoder:", "onStateImage", - "one", - "onlineStatusButton", - "opWithCode:key:object:", + "oneOrMoreDescriptionsForSubelementName:", "opaqueAncestor", - "opcode", "open", "open:", "openAppleMenuItem:", - "openCustomLabelEditorForProperty:withPopup:", + "openCategoryFile:", "openDocument:", "openDocumentWithContentsOfFile:display:", - "openDocumentWithContentsOfURL:display:", - "openDrawers", + "openDocumentWithContentsOfURL:display:error:", "openFile:", - "openFile:fromImage:at:inView:", "openFile:ok:", - "openFile:operation:", "openFile:withApplication:", "openFile:withApplication:andDeactivate:", "openFirstDrawer:", @@ -10871,77 +12091,70 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "openGLContext", "openHandCursor", "openHelpAnchor:inBook:", - "openHost:user:password:", "openImageInNewWindow:", - "openInSeparateWindow:", - "openInSeparateWindow:model:mainWindow:", "openInclude:", "openLinkInNewWindow:", - "openList:", "openListFromFile:", - "openLocalHost", "openNewWindowWithURL:element:", - "openNotesChanged:", "openOnEdge:", "openPanel", "openResourceFile", - "openTempFile:", + "openRoot", "openTempFile:ok:", "openURL:", "openURL:reload:contentType:refresh:lastModified:pageCache:", "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:", + "openUntitledDocumentAndDisplay:error:", "openUntitledDocumentOfType:display:", "openUserDictionary:", "openWithApplication", + "openWithFinder:", + "operand", "operatingSystem", - "operatingSystemName", - "operatingSystemVersionString", - "optionClick:", - "optionSetting:", + "operationNotAllowedCursor", + "operatorType", + "operatorWithCustomSelector:modifier:", + "operatorWithType:modifier:options:", "optionalSharedHistory", "options", "optionsAttributes", "optionsFromPanel", + "orPredicateOperator", "orangeColor", - "order", - "orderBack", - "orderBack:", + "orderAdapterOperations", "orderFront", "orderFront:", "orderFrontCharacterPalette:", - "orderFrontColorOptionsPanelInWindow:", "orderFrontColorPanel:", "orderFrontFindPanel:", "orderFrontFontOptionsPanel:", "orderFrontFontPanel:", + "orderFrontLinkPanel:", + "orderFrontListPanel:", "orderFrontRegardless", + "orderFrontSpacingPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardAboutPanelWithOptions:", "orderFrontStylesPanel:", "orderFrontStylesPanelInWindow:textView:", + "orderFrontTableOptionsPanel:", + "orderFrontTablePanel:", "orderOut", "orderOut:", "orderOutPopUpWindow:", "orderOutToolTip", "orderOutToolTipImmediately:", "orderString:range:string:range:flags:", - "orderString:string:", "orderString:string:flags:", "orderSurface:relativeTo:", "orderWindow:relativeTo:", "orderedDocuments", - "orderedIndex", "orderedItemsLastVisitedOnDay:", "orderedLastVisitedDays", "orderedWindows", "orientation", "origin", - "originLoadLimit", - "originLoadTimeout", - "originOffset", - "originalImage", - "originalImagePath", - "originalNode", + "originalBodyStream", "originalURLString", "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", "otherMouseDown:", @@ -10949,30 +12162,48 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "otherMouseUp:", "outline", "outline:", + "outlineColumn:willDisplayCell:row:", + "outlineColumn:willDisplayOutlineCell:row:", "outlineTableColumn", + "outlineView:acceptDrop:item:childIndex:", "outlineView:child:ofItem:", "outlineView:didClickOnDisabledCell:forTableColumn:byItem:", + "outlineView:didClickTableColumn:", + "outlineView:didDragTableColumn:", + "outlineView:heightOfRowByItem:", "outlineView:isItemExpandable:", + "outlineView:itemForPersistentObject:", + "outlineView:keyDownEvent:", + "outlineView:labelShouldDisplayEnabledAtRow:", + "outlineView:mouseDownInHeaderOfTableColumn:", + "outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:", "outlineView:numberOfChildrenOfItem:", "outlineView:objectValueForTableColumn:byItem:", + "outlineView:performKeyEquivalent:", + "outlineView:persistentObjectForItem:", + "outlineView:setObjectValue:forTableColumn:byItem:", + "outlineView:shouldCollapseItem:", "outlineView:shouldEditTableColumn:item:", + "outlineView:shouldExpandItem:", "outlineView:shouldHighlightWithoutSelectingCell:forTableColumn:byItem:", "outlineView:shouldSelectItem:", + "outlineView:shouldSelectItem:byExtendingSelection:", + "outlineView:shouldSelectRowIndexes:byExtendingSelection:", + "outlineView:shouldSelectTableColumn:", "outlineView:sortDescriptorsDidChange:", + "outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:", + "outlineView:validateDrop:proposedItem:proposedChildIndex:", "outlineView:willDisplayCell:forTableColumn:item:", - "outlineViewColumnDidMove:", - "outlineViewItemDidCollapse:", - "outlineViewItemDidExpand:", - "outlineViewSelectionDidChange:", - "outlookWebAccessServer", + "outlineView:willDisplayCell:forTableColumn:row:", + "outlineView:willDisplayOutlineCell:forTableColumn:item:", + "outlineView:willDisplayOutlineCell:forTableColumn:row:", + "outlineView:writeItems:toPasteboard:", "outputFormat", - "outputStreamToBuffer:capacity:", - "outputStreamToFileAtPath:append:", - "outputStreamToMemory", + "outputImage", + "outputKeys", + "overrideMediaType", "owner", - "ownerCard", "ownerDocument", - "ownerElement", "ownsDestinationObjectsForRelationshipKey:", "pListForPath:createFile:", "page", @@ -10980,93 +12211,78 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "pageCacheSize", "pageCount", "pageDown:", - "pageDownAndModifySelection:", + "pageFooter", + "pageHeader", "pageLayout", "pageOrder", - "pageScroll", "pageSizeForPaper:", "pageTitle", "pageUp:", - "pageUpAndModifySelection:", "pair", - "pairWithKey:value:", - "palette", "paletteFontOfSize:", "paletteImageRep", "paletteLabel", - "pane", "panel", + "panel:compareFilename:with:caseSensitive:", + "panel:directoryDidChange:", + "panel:isValidFilename:", + "panel:shouldShowFilename:", + "panel:userEnteredFilename:confirmed:", + "panel:willExpand:", "panelConvertFont:", - "paperName", + "panelSelectionDidChange:", "paperSize", "paragraphAttributesAtIndex:effectiveRange:inRange:", + "paragraphCharacterRange", "paragraphGlyphRange", "paragraphRangeForRange:", - "paragraphSeparatorGlyphRange", + "paragraphSeparatorCharacterRange", "paragraphSpacing", + "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:", "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:", "paragraphSpacingBefore", "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:", - "paragraphs", "paramDescriptorForKeyword:", - "parameterString", + "parameter:differs:from:", "parent", - "parentContext", "parentCrayonRow", "parentCrayonView", "parentForItem:", "parentFrame", - "parentGroups", "parentItemRepresentedObjectForMenu:", "parentNode", + "parentObject", + "parentObjectUnignored", + "parentSpecifier", + "parentStore", "parentWindow", "parse", "parse:", - "parseABDATE", - "parseABExtensionType:", - "parseABOrder", - "parseABPhoto", - "parseABReleatedNames", - "parseABShowAs", - "parseADD", - "parseADR", - "parseBDAY", - "parseData", - "parseData:", - "parseDictionaryOfKey:value:", - "parseEMAIL", "parseError:", - "parseItem", "parseKey:", "parseMachMessage:localPort:remotePort:msgid:components:", - "parseMetaRuleBody", "parseMetaSyntaxLeafResultShouldBeSkipped:", - "parseMetaSyntaxSequence", - "parseN", - "parseNICKNAME", - "parseNumber", - "parseORG", - "parsePhoto:", - "parseQuotedString", - "parseSeparator", "parseSeparatorEqualTo:", - "parseSingleValue", "parseStream", - "parseString", - "parseSuite:separator:allowOmitLastSeparator:", "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:", - "parseTEL", "parseTokenEqualTo:mask:", "parseTokenWithMask:", - "parseURL", - "parseUnquotedString", - "parseVERSION", - "parsedGrammarForString:", "parser:didEndElement:namespaceURI:qualifiedName:", "parser:didStartElement:namespaceURI:qualifiedName:attributes:", + "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:", + "parser:foundCDATA:", "parser:foundCharacters:", - "parserError", - "parserForData:", + "parser:foundComment:", + "parser:foundElementDeclarationWithName:model:", + "parser:foundExternalEntityDeclarationWithName:publicID:systemID:", + "parser:foundIgnorableWhitespace:", + "parser:foundNotationDeclarationWithName:publicID:systemID:", + "parser:foundNotationDeclarationWithName:publicID:systemID:notationName:", + "parser:foundProcessingInstructionWithTarget:data:", + "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:", + "parser:parseErrorOccurred:", + "parserDidEndDocument:", + "parserDidStartDocument:", "part", "partCode", "partHit:", @@ -11075,82 +12291,66 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "partialObjectKey", "passesFilterAtIndex:", "password", - "passwordMode", "paste:", - "pasteAsPlainText:", - "pasteAsRichText:", "pasteFont:", - "pasteItemUpdate:", + "pasteImageNamed:", "pasteRuler:", "pasteboard:provideDataForType:", "pasteboard:provideDataForType:itemIdentifier:", - "pasteboardByFilteringData:ofType:", "pasteboardByFilteringFile:", "pasteboardByFilteringTypesInPasteboard:", - "pasteboardDataRepresentation", + "pasteboardChangedOwner:", + "pasteboardTypesForSelection", "pasteboardWithName:", "pasteboardWithUniqueName", "path", "pathByResolvingSymlinksAndAliasesInPath:", "pathComponents", "pathContentOfSymbolicLinkAtPath:", + "pathExpression", "pathExtension", - "pathForAuxiliaryExecutable:", - "pathForDisplay", "pathForImageResource:", "pathForResource:ofType:", - "pathForResource:ofType:inDirectory:", - "pathForResource:ofType:inDirectory:forLanguage:", "pathForResource:ofType:inDirectory:forLocalization:", "pathForSoundResource:", - "pathNameForImage", - "pathNamesForRecords:", - "pathSeparator", "pathStoreWithCharacters:length:", "pathToColumn:", - "pathToObjectWithName:", - "pathToiDisk", "pathWithComponents:", + "pathnameForDatabase", "pathsForResourcesOfType:inDirectory:", - "pathsForResourcesOfType:inDirectory:forLanguage:", "pathsForResourcesOfType:inDirectory:forLocalization:", - "pathsMatchingExtensions:", "patternImage", - "patternPhase", - "pause", "pausedActions", - "peek", - "peekAt:", - "peekTokenType", - "peekTokenWithMask:", - "people", - "peopleFromVCardData:", - "peopleOrCompaniesSelection", - "peoplePane", - "peoplePickerView", + "peerCertificateChain", + "percentEscapeDecodeBuffer:range:stripWhitespace:", "perform:", "perform:with:", "perform:with:with:", "perform:withEachObjectInArray:", - "perform:withObject:", - "perform:withObject:withObject:", + "performAction:", "performActionFlashForItemAtIndex:", "performActionForItemAtIndex:", "performActionWithHighlightingForItemAtIndex:", "performActivity:modes:", + "performAdapterOperation:", + "performAdapterOperations:", + "performChanges", + "performClick", "performClick:", "performClickWithFrame:inView:", "performClose:", "performDefaultImplementation", + "performDelayedComplete", "performDragOperation:", - "performFileOperation:source:destination:files:tag:", "performFindPanelAction:", "performFindPanelAction:forClient:", - "performHTTPHeaderRead:andCall:", + "performHTTPHeaderRead:", "performKeyEquivalent:", "performMenuAction:withTarget:", "performMiniaturize:", "performMnemonic:", + "performOperationUsingObject:andObject:", + "performPrimitiveOperationUsingObject:andObject:", "performRemoveObjectForKey:", "performSelector:", "performSelector:object:afterDelay:", @@ -11165,230 +12365,262 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "performSetObject:forKey:", "performStreamRead", "performStreamRead:", - "performWithName:", "performZoom:", + "performsContentDecoding", "performv::", "persistence", + "persistenceStore", "persistentDomainForName:", - "persistentDomainNames", - "personChanged:", - "personFromDictionary:", - "personImageView", - "personSelected:", - "personValue", - "phoneFormatsDictionary", - "phoneLabel", - "phoneticFieldsPresent", - "photoCacheDirectoryPath", + "persistentStore", + "persistentStoreCoordinator", + "persistentStoreForURL:", + "persistentStoreTypeForFileType:", + "persistentStores", "physicalSize", - "pickedAllPages:", - "pickedButton:", - "pickedLayoutList:", - "pickedOrientation:", - "pickedPaperSize:", - "pickedUnits:", - "pickerView", - "pictFrame", - "pictureDirPath", "pipe", - "pixelFormat", "pixelsHigh", "pixelsWide", + "pk64", "placeButtons:firstWidth:secondWidth:thirdWidth:", "placeholderAttributedString", "placeholderForMarker:", - "placeholderForMarker:withBinding:", "placeholderString", "play", - "playsEveryFrame", - "playsSelectionOnly", + "plugInViewWithArguments:", + "plugInViewWithArguments:fromPluginPackage:", "plugin", "pluginClassForObject:andBinderClass:requiredPluginProtocol:", "pluginDescription", - "pluginEnabled:", + "pluginDestroy", "pluginForExtension:", "pluginForKey:withEnumeratorSelector:", "pluginForMIMEType:", + "pluginInitialize", "pluginPointer", - "pluginViewWithPackage:attributes:baseURL:", + "pluginScriptableObject", + "pluginStart", + "pluginStop", + "pluginViewWithArguments:", + "pluginViewWithPackage:attributeNames:attributeValues:baseURL:", "pluginWithPath:", "plugins", - "pluginsEnabled", "pluginsInfo", - "pmPageFormat", - "pmPrintSettings", "pointSize", + "pointToOffset:style:position:reversed:includePartialGlyphs:", "pointValue", "pointerID", "pointerSerialNumber", - "pointerToElement:directlyAccessibleElements:", "pointerType", "pointerValue", + "pointingDeviceID", + "pointingDeviceSerialNumber", + "pointingDeviceType", "pointingHandCursor", "policyDelegate", - "poolCountHighWaterMark", - "poolCountHighWaterResolution", + "pollForAppletInView:", + "pollForAppletInWindow:", "pop", "popAndInvoke", "popBundleForImageSearch", + "popGlyph:", + "popSubnode", "popTopView", "popUndoObject", "popUp:", "popUpContextMenu:withEvent:forView:", "popUpContextMenu:withEvent:forView:withFont:", "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:", - "popUpStatusItemMenu:", - "popUpWithEvent:inView:", "populateCacheFromStream:data:", - "populateObject:withContent:valueKey:insertsNullPlaceholder:", - "populatePicker:", - "popupForProperty:", + "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:", "popupStatusBarMenu:inRect:ofView:withEvent:", "port", "portCoderWithComponents:", - "portCoderWithReceivePort:sendPort:components:", "portForName:", "portForName:host:", "portForName:host:nameServerPortNumber:", - "portForName:onHost:", "portList", - "portWithMachPort:", "portalDied:", - "portsForMode:", "poseAs:", "poseAsClass:", + "position", "positionButton", "positionOfGlyph:forCharacter:struckOverRect:", "positionOfGlyph:forLongCharacter:struckOverRect:", "positionOfGlyph:precededByGlyph:isNominal:", "positionOfGlyph:struckOverGlyph:metricsExist:", - "positionOfGlyph:struckOverRect:metricsExist:", "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:", "positionRelativeToAttachedView", - "positionString", - "positionsForCompositeSequence:numberOfGlyphs:pointArray:", "positiveFormat", - "positivePassDirection", + "positiveInfinitySymbol", + "postColorSwatchesChangedDistributedNotification", "postEvent:atStart:", "postNotification:", "postNotificationName:object:", "postNotificationName:object:userInfo:", "postNotificationName:object:userInfo:deliverImmediately:", - "postQueryHasBeenCanceledNotification", - "postQueryHasFinishedNotification", - "postResultsAreInNotificationNotification:", + "postNotificationName:object:userInfo:options:", "postURL:target:len:buf:file:", "postURLNotify:target:len:buf:file:notifyData:", "postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:", - "postsBoundsChangedNotifications", "postsFrameChangedNotifications", - "powerOffIn:andSave:", "precomposedStringWithCanonicalMapping", "precomposedStringWithCompatibilityMapping", "predefinedAttributesForIndex:", + "predefinedEntityDeclarationForName:", + "predefinedNamespaceForPrefix:", + "predicate", + "predicateFormat", + "predicateName", + "predicateOperator", + "predicateOperatorType", + "predicateString", + "predicateWithFormat:argumentArray:", + "predicateWithFormat:arguments:", + "predicateWithLeftExpression:rightExpression:modifier:type:options:", + "predicateWithSubstitutionVariables:", + "predicateWithValue:", "preferences", "preferencesContentSize", "preferencesHaveChanged:", "preferencesIdentifier", "preferencesNibName", + "preferencesWindowShouldClose", "preferredEdge", "preferredExtensionForMIMEType:", "preferredFilename", - "preferredFontNames", "preferredLocalizationName", "preferredLocalizations", "preferredLocalizationsFromArray:", - "preferredLocalizationsFromArray:forPreferences:", "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:", "preferredPlaceholderForMarker:", "prefersAllColumnUserResizing", "prefersColorMatch", + "prefersEnabledOverEditable:", "prefersTrackingUntilMouseUp", "prefix", + "prefixForName:", "prepare", + "prepareBeginsWith:", "prepareCallbacks", + "prepareComparisonPredicate:", "prepareContent", - "prepareForDifferentCard", - "prepareForDifferentCard:", + "prepareDeleteStatementWithCorrelation:", + "prepareDeleteStatementWithRow:", + "prepareEndsWith:", "prepareForDragOperation:", + "prepareForReloadChildrenForNode:", + "prepareForSave", + "prepareForSave:", "prepareGState", + "prepareIn:", + "prepareInsertStatementWithCorrelation:", + "prepareInsertStatementWithRow:", + "prepareLike:", + "prepareMatches:", + "prepareOpenGL", "preparePageLayout:", + "prepareSQLStatement:", "prepareSavePanel:", + "prepareSelectStatementWithFetchRequest:", + "prepareUpdateStatementWithRow:originalRow:", "prepareWithInvocationTarget:", - "prependTransform:", - "preprefersTrackingUntilMouseUp", + "presentError:", + "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:", + "presentableDescription", + "presentableName", + "presentableNameForSpecifier:", + "presentableNames", + "presentationWindowForError:originatedInWindow:", + "preservesContentDuringLiveResize", "preservesSelection", - "pressedCancel:", - "pressedImage", - "pressedImageForControlTint:", - "pressedOK:", "pressure", "preventWindowOrdering", - "previousCard:", - "previousEvent", + "previewHelperClass", "previousFailureCount", "previousItem", - "previousKeySegment", "previousKeyView", "previousKeyViewInsideWebFrameViews", "previousKeyViewOutsideWebFrameViews", - "previousPoint", "previousSibling", - "previousText", "previousValidKeyView", - "primaryIdentifier", + "primaryKey", + "primaryKeyColumnDefinitions", + "primaryKeyForEntity:", + "primaryKeyGeneration", + "primaryKeys", + "primitiveType", + "primitiveValueForKey:", "principalClass", + "print", "print:", "printDocument:", - "printForDebugger:", - "printFormat:", - "printFormat:arguments:", + "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:", + "printFile:ok:", "printInfo", "printInfoIsBeingDeallocated", "printJobTitle", + "printOperationWithSettings:error:", "printOperationWithView:", "printOperationWithView:printInfo:", "printPanel", "printShowingPrintPanel:", "printer", "printerFont", - "printerNames", - "printerTypes", - "printerWithName:", - "printerWithName:domain:includeUnavailable:", "printerWithType:", "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:", "priorityForFlavor:", - "privateFrameworksPath", - "privateVCardEnabled", - "proceedWithImport:", + "privateBrowsingEnabled", + "processCDATA:", + "processComment:", + "processDocument:", + "processDocumentFragment:", + "processDocumentType:", "processEditing", + "processElement:", + "processEndElement:", + "processEndEntity:", + "processEntity:", + "processEntityReference:", "processIdentifier", "processInfo", "processInputKeyBindings:", "processKeyword:option:keyTran:arg:argTran:", "processKeyword:option:keyTran:arg:argTran:quotedArg:", "processName", + "processNode:", + "processNotation:", + "processPendingChanges", + "processProcessingInstruction:", + "processRealDocument:", + "processSignificantWhitespace:", "processString:", + "processText:", "processType:file:isDir:", - "processingInstructionImpl", - "processingInstructionWithImpl:", + "processWhitespace:", + "processXMLDeclaration:", "progressIndicator", "progressIndicatorColor", "progressPanel", + "promise:keysAndValues:", + "promotedImage:", "prompt", "propagateFrameDirtyRects:", + "propagatesDeletesAtEndOfEvent", "properties", + "propertiesAtIndex:", + "propertiesByName", "property", + "propertyDescription", + "propertyDescriptionFromKey:implDeclaration:presoDeclaration:suiteName:className:", "propertyForKey:", "propertyForKey:inRequest:", "propertyForKeyIfAvailable:", - "propertyLineForGenericABProperty:vCardProperty:is21:groupCount:", "propertyList", - "propertyList:isValidForFormat:", "propertyListForType:", "propertyListFromData:mutabilityOption:format:errorDescription:", "propertyListFromStringsFileFormat", + "propertyMappings", + "propertyNamed:", "propertyTableAtIndex:", "propertyTableCount", "propertyType", @@ -11397,16 +12629,19 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "protocol", "protocolCheckerWithTarget:protocol:", "protocolFamily", - "protocolSpecificInformation", "prototype", + "provideImageData:bytesPerRow:origin::size::userInfo:", + "provideImageTexture:bounds:userInfo:", "provideNewButtonImage", "provideNewSubview:", "provideNewView:", "providerRespondingToSelector:", "provisionalDataSource", "provisionalItem", + "provisionalLoadStarted", + "proxyClass", + "proxyDictionary", "proxyFor:fauxParent:", - "proxyForObject:", "proxyForRulebookServer", "proxyPropertiesForURL:", "proxyType", @@ -11414,40 +12649,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "proxyWithLocal:connection:", "proxyWithTarget:connection:", "publicID", - "publicId", "publish", "pullsDown", - "pumaLDAPServers", - "pumpCRCTwice", "punctuationCharacterSet", - "purgeExtras", + "purgeCookiesFromPrivateBrowsing", "purpleColor", "push", "push:", "pushBundleForImageSearch:", + "pushGlyph:", + "pushSubnode:", "put:", - "put:URL:", + "put::", "putByte:", "putCell:atRow:column:", "putLELong:", "putLEWord:", - "qdCreatePortForWindow:", - "qdPort", - "query", - "queryAttributes", - "queryLDAPServer", - "queryOperator", - "queryType", + "queryNode", "quotedStringRepresentation", "raise", "raise:format:", "raise:format:arguments:", + "raise:toPower:", "raiseBaseline:", - "raiseWithStatus:", "raisesForNotApplicableKeys", - "raisesForNotApplicableKeysWithBinding:", "range", "rangeAtIndex:", + "rangeByAlteringCurrentSelection:direction:granularity:", + "rangeByAlteringCurrentSelection:verticalDistance:", + "rangeByExpandingSelectionWithGranularity:", "rangeContainerClassDescription", "rangeContainerObject", "rangeCount", @@ -11458,40 +12688,46 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "rangeOfCharacterFromSet:", "rangeOfCharacterFromSet:options:", "rangeOfCharacterFromSet:options:range:", + "rangeOfCharactersAroundCaret", "rangeOfComposedCharacterSequenceAtIndex:", - "rangeOfGraphicalSegmentAtIndex:", - "rangeOfNominallySpacedGlyphsContainingIndex:", "rangeOfString:", "rangeOfString:options:", "rangeOfString:options:range:", + "rangeOfTextBlock:atIndex:", + "rangeOfTextList:atIndex:", + "rangeOfTextTable:atIndex:", "rangeValue", + "rangesForUserCharacterAttributeChange", + "rangesForUserParagraphAttributeChange", + "rangesForUserTextChange", "rasterize:", - "rate", - "reSetAcceptsMouseMovedEvents", - "read:", - "read:maxLength:", + "rawData", "readAlignedDataSize", + "readBinaryStoreFromData:originalPath:error:", "readColors", "readData:length:", "readDataOfLength:", "readDataOfLength:buffer:", "readDataToEndOfFile", + "readDocumentFragment:", "readDocumentFromPbtype:filename:", - "readFileContentsType:toFile:", - "readFileWrapper", + "readFromData:ofType:error:", "readFromData:options:documentAttributes:", + "readFromData:options:documentAttributes:error:", "readFromFile:", + "readFromFile:error:", "readFromFile:ofType:", - "readFromStream:", + "readFromFileWrapper:ofType:error:", "readFromURL:ofType:", + "readFromURL:ofType:error:", "readFromURL:options:documentAttributes:", - "readInBackgroundAndNotify", + "readFromURL:options:documentAttributes:error:", "readInBackgroundAndNotifyForModes:", "readInt", "readLock", + "readMetadataFromFile:error:", + "readObsoleteBinaryStoreFromData:error:", "readPrintInfo", - "readRTFDFromFile:", - "readRichText:forView:", "readSelectionFromPasteboard:", "readSelectionFromPasteboard:type:", "readToEndOfFileInBackgroundAndNotify", @@ -11502,211 +12738,225 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "realAddDirNamed:", "realElement", "reallyDealloc", + "reallyInsertObject:atIndex:", + "reallyRemoveAllObjects", + "reallyRemoveObject:", + "reallyRemoveObjectAtIndex:", + "reallyReplaceObjectAtIndex:withObject:", "realm", "reapplyStyles", "reapplyStylesForDeviceType:", - "rearrangeObjects:", "reason", - "recache", - "recacheAllColors", + "reasonForError:", + "recacheAllColors:", "recacheColor", + "recalcFigure:path:button:offset:", + "recalcFigureForResolution:", + "recalculateKeyViewLoop", "receivePort", "receivedData:", + "receivedData:textEncodingName:", "receivedData:withDataSource:", "receivedError:", "receivedError:withDataSource:", "receivedResponse:", "receiversSpecifier", "receivesCredentialSecurely", - "recentDocumentURLs", - "recentPictures", - "recentPicturesPopUp", "recentSearches", - "recentSmallIcons", "recentsAutosaveName", - "recognizableAttributes", + "recipe", + "recipeDifference:with:", + "recipeDiffers:from:", "recomputeToolTipsForView:remove:add:", + "reconcileSelfToSuiteRegistry:", + "reconcileSubdescriptionsToSuiteRegistry:", "reconcileToCarbonWindowBounds", - "reconstructedDocumentSource", - "recordAtIndex:", - "recordClassFromUniqueID:", - "recordClassFromUniqueId:", + "reconcileToSuiteRegistry:suiteName:", + "reconcileToSuiteRegistry:suiteName:className:", + "reconcileToSuiteRegistry:suiteName:commandName:", + "reconcileToSuiteRegistry:suiteName:recordTypeName:", + "reconnectBindings:", + "recordChangesInContext:", + "recordDatabaseOperation:", + "recordDeleteForObject:", "recordDescriptor", - "recordForUniqueId:", - "recordTypesToSearchFor", - "records", - "recordsForUIDs:", - "recordsMatchingSearchElement:", - "recordsUserChanges", + "recordPrimaryKeyForInsertedObject:", + "recordSnapshot:forGlobalID:", + "recordSnapshot:forSourceGlobalID:relationshipName:", + "recordSnapshots:", + "recordToManySnapshots:", + "recordUpdateForObject:", + "recoveryAttempter", + "recoveryOptionIndex", "rect", "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:", - "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:forCursorPosition:", "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:", + "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:", "rectForIndex:", "rectForKey:inTable:", + "rectForLayoutAtPoint:inRect:textContainer:characterRange:", "rectForPage:", "rectForPart:", + "rectForRolloverTracking", "rectIncludingShadow", "rectOfColumn:", "rectOfItemAtIndex:", "rectOfRow:", - "rectOfSwatchInteriorAtIndex:", "rectOfTickMarkAtIndex:", + "rectPreservedDuringLiveResize", "rectValue", "rectWithoutShadow", - "recursiveContainsGroup:", + "recycle", + "red", "redColor", "redComponent", "redeliverStream", - "redisplayPopup", + "redirectedToURL:", "redo", "redo:", "redoActionName", - "redoIt", + "redoEditing:", "redoMenuItemTitle", "redoMenuTitleForUndoActionName:", "reenableDisplayPosting", "reenableFlush", "reenableHeartBeating:", - "ref", + "refCount", + "refaultObject:globalID:editingContext:", "referenceBinder", "referencedObjectCount", "referrer", "reflectScrolledClipView:", - "reformatValueAtLocation:", - "reformatValueAtLocationInNumber:", + "refrROI:forRect:", "refreashUI", "refresh", - "refreshDisplayedCard", - "refreshRow:", - "refreshesAllKeys", - "refreshesAllObjects", + "refreshDetailContent", + "refreshObjects:", + "refreshPlugins:", "refusesFirstResponder", - "refusesToBeShown", - "registerAddress:", + "regionOf:destRect:", + "regionOf:destRect:userInfo:", + "regionOfFindEdges:destRect:userInfo:", + "registerChannel:", "registerClass:", "registerClassDescription:", "registerClassDescription:forClass:", "registerCoercer:selector:toConvertFromClass:toClass:", "registerCommandDescription:", + "registerConnection:", "registerDefaults:", "registerDragTypes:forWindow:", + "registerExternalData:forObjectID:options:", + "registerExternalData:forSourceObjectID:key:options:", + "registerFilterName:constructor:classAttributes:", + "registerFilters", "registerForCommandDescription:", "registerForDraggedTypes:", "registerForDrags", + "registerForEdgeChanges:", + "registerForEditingDelegateNotification:selector:", + "registerForEnclosingClipViewNotifications", "registerForFilenameDragTypes", + "registerForPropertyChangedNotifications", "registerForServices", + "registerForWindowNotifications", + "registerHelpBook", "registerImageRepClass:", - "registerLanguage:byVendor:", - "registerModel:", "registerName:", "registerName:withNameServer:", "registerObject:withServicePath:", "registerPluginClass:forObjectClass:andBinderClass:", - "registerPort:forName:", "registerPort:name:", "registerPort:name:nameServerPortNumber:", - "registerServiceProvider:withName:", "registerServicesMenuSendTypes:returnTypes:", "registerTranslator:selector:toTranslateFromClass:", "registerTranslator:selector:toTranslateFromDescriptorType:", "registerURLHandleClass:", "registerUndoOperation", - "registerUndoWithTarget:selector:arguments:argumentCount:", "registerUndoWithTarget:selector:object:", - "registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:", "registerViewClass:representationClass:forMIMEType:", "registeredImageRepClasses", + "registeredObjects", "regularFileContents", - "reinsertRecord:inSortedList:", - "relatedObject", - "relativeCurveToPoint:controlPoint1:controlPoint2:", + "rel", + "relatedIDsForKey:", + "relationship", + "relationshipDataWithSourceID:forRelationship:", + "relationshipDataWithSourceID:forRelationship:withContext:", + "relationshipDescription", + "relationshipMappings", + "relationshipNamed:", + "relationshipsByName", "relativeLineToPoint:", - "relativeMoveToPoint:", - "relativePath", "relativePosition", "relativeString", "release", "releaseAllPools", - "releaseConnection", + "releaseCaches", + "releaseConnectionWithSynchronizePeerBinders:", "releaseGState", "releaseGlobally", "releaseIconForURL:", - "releaseLock:", "releaseName:count:", "releaseResources", + "releaseSQLStatement", "releaseView:", + "relinquishFocus", "reload", "reload:", - "reloadAll:", "reloadChildrenForNode:", "reloadColumn:", "reloadData", "reloadDefaultFontFamilies", - "reloadGroups", - "reloadItem:", "reloadItem:reloadChildren:", - "reloadMembers", "reloadRootNode", "rememberedSnapToIndex", "remoteObjects", "remove:", "removeAllActions", "removeAllActionsWithTarget:", - "removeAllButCurrent", - "removeAllCachedResponses", - "removeAllColumnFilters", + "removeAllBindVariables", "removeAllContentObjectsInCellOrControl:", - "removeAllDrawersImmediately", "removeAllExpandedNodes", - "removeAllFormats", "removeAllIndexes", - "removeAllIndices", "removeAllItems", "removeAllObjects", "removeAllObjectsWithTarget:", "removeAllPoints", - "removeAllProperties", - "removeAllRequestModes", + "removeAllSubNodes", "removeAllToolTips", "removeAllToolTipsForView:", - "removeAllToolTipsForView:withOwner:", - "removeAttribute:", - "removeAttribute:index:", + "removeAnimatingRenderer:", "removeAttribute:range:", - "removeAttribute:value:", - "removeAttribute:values:", - "removeAttributeNS::", - "removeAttributeNode:", + "removeAttributeForName:", "removeBinder:", "removeBinding:", - "removeCachedResponseForRequest:", - "removeCharactersInRange:", "removeCharactersInString:", "removeChild:", + "removeChildAtIndex:", "removeChildWindow:", + "removeClassDescriptions:", "removeClient:", "removeCollection:", "removeColor:", "removeColorSheetDidEnd:returnCode:context:", "removeColorWithKey:", - "removeColumn:", - "removeColumnFilter:", - "removeConfirmSheetDidEnd:returnCode:contextInfo:", + "removeColumns:", + "removeCommandDescriptions:", + "removeConnection:forKey:", "removeConnection:fromRunLoop:forMode:", "removeContextHelpForObject:", "removeConversation", "removeCredential:forProtectionSpace:", "removeCursorRect:cursor:", - "removeDecriptorAtIndex:", "removeDescriptorAtIndex:", - "removeDescriptorWithKeyword:", "removeDocument:", + "removeDragCaret", + "removeEditingStyleFromBodyElement", "removeElementAtIndex:", "removeElementsInRange:", "removeElementsInRange:coalesceRuns:", - "removeEntryAtIndex:", - "removeEventHandlerForEventClass:andEventID:", + "removeEventListener:::", "removeExpandedNode:", "removeExpandedNodesStartingWithIndex:", "removeFavoriteInWindow:", @@ -11715,139 +12965,105 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "removeFileAtPath:handler:", "removeFileWrapper:", "removeFontDescriptor:fromCollection:", - "removeFontTrait:", - "removeFormatAtIndex:", "removeFrameUsingName:", "removeFreedView:", "removeFreedWindow:", "removeFromFrame", + "removeFromOriginLoadSet", "removeFromRunLoop:forMode:", "removeFromSuperview", "removeFromSuperviewWithoutNeedingDisplay", - "removeGrayExampleString", "removeHeartBeatView:", "removeImmediately:", "removeIndex:", "removeIndexRange:", "removeIndexes:", - "removeIndexesFromIndexSet:", "removeIndexesInRange:", "removeItem:", "removeItemAtIndex:", "removeItemForURLString:", "removeItemViewerAtIndex:", - "removeItemWithIdentifier:", "removeItemWithObjectValue:", "removeItemWithTitle:", "removeItems:", - "removeKeysForObject:", + "removeKeyEventHandler", "removeLastObject", "removeLayoutManager:", "removeList:", "removeListSheetDidEnd:returnCode:context:", + "removeListener:", "removeLocal:", "removeMarker:", - "removeMember:", "removeMouseMovedObserver", - "removeNamedItem:", - "removeNamedItemNS::", - "removeNumberOfIndexes:fromSelectionIndexesAtIndex:", + "removeNamespaceForPrefix:", "removeObject:", "removeObject:fromBothSidesOfRelationshipWithKey:", "removeObject:fromPropertyWithKey:", - "removeObject:inRange:", + "removeObject:objectIDMap:", "removeObject:range:identical:", "removeObjectAt:", "removeObjectAtArrangedObjectIndex:", "removeObjectAtIndex:", "removeObjectForKey:", "removeObjectForKey:inDomain:", - "removeObjectFromMasterArrayRelationshipAtIndex:", + "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:", "removeObjectIdenticalTo:", - "removeObjectIdenticalTo:inRange:", "removeObjects:", + "removeObjectsAtArrangedObjectIndexPaths:", "removeObjectsAtArrangedObjectIndexes:", "removeObjectsAtIndexes:", "removeObjectsForKeys:", "removeObjectsFromIndices:numIndices:", - "removeObjectsFromMasterArrayRelationshipAtIndexes:", + "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:", "removeObjectsInArray:", "removeObjectsInRange:", "removeObserver:", "removeObserver:forKeyPath:", - "removeObserver:fromObjectsAtIndexes:forKeyPath:", "removeObserver:name:object:", - "removeParamDescriptorWithKeyword:", - "removePersistentDomainForName:", + "removePathFromLibrarySearchPaths:", + "removePersistentStore:error:", "removePort:forMode:", "removePortForName:", "removePortsFromAllRunLoops", "removePortsFromRunLoop:", - "removeProperties:", - "removeProperty:", "removeProxy:", - "removeRecord", - "removeRecord:", - "removeRecordsFromGroup", - "removeRepresentation:", "removeRequestMode:", "removeRow:", + "removeRows:", "removeRunLoop:", - "removeSavedColumnsWithAutosaveName:", - "removeSelectedObjects:", - "removeSelectionIndexes:", - "removeServer:", "removeServiceProvider:", - "removeSpace:atIndex:", - "removeSpinningArrows", - "removeStatusItem:", - "removeSubgroup:", - "removeSubrecord:", - "removeSuiteNamed:", + "removeSubNodeAtIndex:", "removeSuperviewObservers", "removeTabStop:", - "removeTabViewItem:", + "removeTable", "removeTableColumn:", "removeTemporaryAttribute:forCharacterRange:", "removeTextContainerAtIndex:", - "removeTimer:forMode:", "removeToolTip:", "removeToolTipForView:tag:", "removeToolbarItem:", "removeTrackingRect", "removeTrackingRect:", - "removeTrackingRects", - "removeValueAndLabelAtIndex:", "removeValueAtIndex:fromPropertyWithKey:", - "removeValueForProperty:", "removeView:fromView:layoutManager:", - "removeVolatileDomainForName:", "removeWebView:fromSetNamed:", "removeWindowController:", "removeWindowObservers", "removeWindowsItem:", - "removedMembers:fromGroup:", - "rename:", "renameColor:", "renameColorSheetDidEnd:returnCode:context:", "renameList:", "renameListSheetDidEnd:returnCode:context:", - "renderBitsWithCode:withSize:", - "renderLineWithCode:", - "renderPICTWithSize:", - "renderPart", - "renderShapeWithCode:", - "renderTextWithCode:", + "render:", + "renderResolutionData:toBitmap:width:height:bytesPerRow:", "renderTreeAsExternalRepresentation", - "renderer", "rendererWithFont:usingPrinterFont:", + "renderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:maximumWidth:", + "renderingMode", "renewGState", "renewRows:columns:", - "reopen", + "reopenDocumentForURL:withContentsOfURL:error:", "rep", - "repeatCount", - "repetitionCount", - "replace:child:", "replaceAllInView:selectionOnly:", "replaceAndFindInView:", "replaceBytesInRange:withBytes:", @@ -11858,54 +13074,49 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "replaceCharactersInRange:withRTF:", "replaceCharactersInRange:withRTFD:", "replaceCharactersInRange:withString:", - "replaceCustomLabel:", - "replaceData:::", - "replaceElementAtIndex:withElement:", + "replaceChildAtIndex:withNode:", "replaceElementsInRange:withElement:coalesceRuns:", - "replaceFile:data:", "replaceFile:path:", - "replaceFormatAtIndex:withFormat:", "replaceGlyphAtIndex:withGlyph:", "replaceInView:", - "replaceLabelAtIndex:withLabel:", + "replaceIndexReferenceModelObjectArrayWithEqualCopy:", "replaceLayoutManager:", + "replaceNodeWithIdentifier:withDataFromDelegate:", "replaceNodeWithIdentifier:withNode:", - "replaceObject:with:", "replaceObject:withObject:", - "replaceObjectAt:with:", "replaceObjectAtIndex:withObject:", "replaceObjectsAtIndexes:withObjects:", "replaceObjectsInRange:withObject:length:", - "replaceObjectsInRange:withObjects:count:", "replaceObjectsInRange:withObjectsFromArray:", "replaceObjectsInRange:withObjectsFromArray:range:", "replaceOccurrencesOfString:withString:options:range:", - "replaceString:withString:range:options:inView:replacementRange:", + "replaceSelectionWithFragment:selectReplacement:smartReplace:", + "replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:", + "replaceSelectionWithNode:selectReplacement:smartReplace:", + "replaceSelectionWithText:selectReplacement:smartReplace:", + "replaceString:withString:ranges:options:inView:replacementRange:", "replaceSubview:with:", "replaceSubviewWith:", - "replaceTextContainer:", + "replaceTemporaryIDInObject:", "replaceTextStorage:", "replaceValueAtIndex:inPropertyWithKey:withValue:", - "replaceValueAtIndex:withValue:", + "replacementClassForClass:", "replacementObjectForArchiver:", "replacementObjectForCoder:", "replacementObjectForKeyedArchiver:", "replacementObjectForPortCoder:", - "replacementUpdateBinder", - "replacementUpdateBinder:", "replyAppleEventForSuspensionID:", "replyEvent", - "replyMode", - "replyTimeout", "replyToApplicationShouldTerminate:", - "replyToOpenOrPrint:", "replyWithException:", - "repopulatedContent", - "reportClientRedirectCancelled", + "reportClientRedirectCancelled:", "reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:", + "reportDataToClient:", + "reportDidFinishToClient", "reportError", "reportException:", "reportStreamError", + "repositionRolloverTrackingRectIfNecessary", "representation", "representationOfCoveredCharacters", "representationOfImageRepsInArray:usingType:properties:", @@ -11917,61 +13128,43 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "request", "requestHeaderFieldsWithCookies:", "requestIsCacheEquivalent:toRequest:", - "requestLimit", - "requestModes", - "requestTimeout", + "requestStreamForTransmission", "requestUserAttention:", "requestWithURL:", - "requestWithURL:cachePolicy:timeoutInterval:", "requestWithURLCString:", - "requestedURL", + "requestedURLString", "requiredFileType", "requiredMinSize", "requiredMinSizeFor:", - "requiredReferenceBinderControllerProtocol", "requiredThickness", "requiresDirectKeyValueCodingCall", "reservedSpaceLength", - "reservedThicknessForAccessoryView", - "reservedThicknessForMarkers", "reset", "resetAdditionalClip", - "resetAllPorts", - "resetAlpha", "resetButtonDefaultLabel", - "resetBytesInRange:", "resetCancelButtonCell", - "resetCommunication", "resetCursorRect:inView:", "resetCursorRects", "resetDateFormats", - "resetDirectoryResultsSubrows", "resetDisplayDisableCount", - "resetDisplayedMemberSubrows", - "resetFirstLastName:", "resetFlushDisableCount", - "resetGroupAndPeopleFromDefaults", - "resetLDAPManager", - "resetProfiling", + "resetMeasurements:forInterpolatedResolutionData:", + "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:", + "resetQueryForChangedAttributes:", "resetSearchButtonCell", - "resetStandardUserDefaults", "resetState", - "resetSubrows", - "resetSystemTimeZone", "resetToolbarToDefaultConfiguration:", - "resetTotalAutoreleasedObjects", "resetTrackingRect", "reshape", "resignFirstResponder", "resignKeyWindow", "resignMainWindow", "resize:", - "resizeColumnAtIndex:toWidth:", - "resizeColumnsToMinimun", "resizeDownCursor", "resizeEdgeForEvent:", "resizeFlags", "resizeIncrements", + "resizeIndicatorRect", "resizeLeftCursor", "resizeLeftRightCursor", "resizeRightCursor", @@ -11979,79 +13172,75 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "resizeToScreenWithEvent:", "resizeUpCursor", "resizeUpDownCursor", - "resizeWindow:animate:fromLayout:toLayout:paneWidths:numberOfPanes:", "resizeWithDelta:fromFrame:beginOperation:endOperation:", "resizeWithEvent:", - "resizeWithMagnification:", "resizeWithOldSuperviewSize:", - "resizeableColumns", "resizedColumn", + "resizingMask", "resolve", "resolveMarkerToPlaceholder:binding:", + "resolveNamespaceForName:", + "resolvePrefixForNamespaceURI:", "resolvedKeyDictionary", "resolvesAliases", "resourceData", "resourceDataUsingCache:", "resourceLoadDelegate", "resourceLoaderRunLoop", + "resourceNamed:", "resourcePath", "resourceSpecifier", + "respectStandardStyleKeyEquivalents", + "respondToChangedContents", + "respondToChangedSelection", "respondsTo:", - "respondsToProperty:", "respondsToSelector:", "response", - "responseAsString", - "responseDate", - "responseList", + "restOfKeyPathIfContainedByValueForKeyPath:", "restartNullEvents", "restore", + "restoreAttributes:", "restoreAttributesOfTextStorage:", - "restoreCachedImage", - "restoreCardWindowStateWithModel:", "restoreDefaults", "restoreDocumentState", "restoreGraphicsState", - "restoreNameColumnWidth", + "restoreParameter:from:", "restorePortState:", "restoreSavedSettings", "restoreWindowOnDockDeath", "restoreWindowOnDockReincarnation", - "resultCode", - "resume", + "resultAtIndex:", + "resultCount", "resumeExecutionWithResult:", + "resumeInformation", "resumeWithScriptCommandResult:", "resumeWithSuspensionID:", "retain", "retainArguments", + "retainCaches", "retainCount", "retainIconForURL:", + "retainOrCopyIfNeeded", "retainWireCount", + "retainedXmlInfoForRelationship:", "retryAfterAuthenticationFailure:", - "retryAfterConnectingToInternet", + "retryAfterTLSFailure", "retryWithRedirectedURLAndResultCode:", - "returnCompletes", - "returnHeader", - "returnID", + "returnDisconnectedBindingsOfObject:", "returnResult:exception:sequence:imports:", "returnType", - "reusesColumns", "reverseObjectEnumerator", "reverseTransformedValue:", "reversedSortDescriptor", "revert:", "revertDocumentToSaved:", - "revertToBackupFromPath:", - "revertToInitialValues:", + "revertToContentsOfURL:ofType:error:", "revertToSavedFromFile:ofType:", - "revertToSavedFromURL:ofType:", - "reviewCards:", - "reviewUnsavedDocumentsWithAlertTitle:cancellable:", "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:", - "richTextForView:", - "richTextSource", + "rightChild", + "rightExpression", "rightIndentMarkerWithRulerView:location:", "rightMargin", - "rightMarginMarkerWithRulerView:location:", "rightMouseDown:", "rightMouseDragged:", "rightMouseUp:", @@ -12059,18 +13248,23 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "rightTabMarkerWithRulerView:location:", "rightTruncateString:toWidth:withFont:", "rightView", - "rolloverMenuForSelection:", - "rootContainer", - "rootName", + "role", + "roleDescription", + "rollback", + "rollbackChanges", + "rollbackTransaction", + "rolloverXLocation", + "root", + "rootDocument", + "rootElement", + "rootEntity", "rootNode", "rootObject", "rootObjectClasses", + "rootObjectStore", "rootProxy", - "rootProxyForConnectionWithRegisteredName:host:", - "rootProxyForConnectionWithRegisteredName:host:usingNameServer:", "rotateByAngle:", "rotateByDegrees:", - "rotateByRadians:", "rotated", "rotation", "roundingBehavior", @@ -12078,16 +13272,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "row", "rowAtPoint:", "rowForItem:", + "rowForObjectID:", + "rowForObjectID:after:", + "rowForUpdate", "rowHeight", - "rowHeightForRow:", - "rows", + "rowSpan", "rowsInRect:", - "ruleThickness", "ruler", "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:", "rulerAttributesInRange:", "rulerMarkersForTextView:paragraphStyle:ruler:", - "rulerStateDescription", "rulerView:didAddMarker:", "rulerView:didMoveMarker:", "rulerView:didRemoveMarker:", @@ -12095,9 +13289,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "rulerView:shouldAddMarker:", "rulerView:shouldMoveMarker:", "rulerView:shouldRemoveMarker:", - "rulerView:userClickedOnMarker:", "rulerView:willAddMarker:atLocation:", "rulerView:willMoveMarker:toLocation:", + "rulerView:willRemoveMarker:", "rulerView:willSetClientView:", "rulerViewClass", "rulersVisible", @@ -12105,20 +13299,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "run:", "runAsModalDialogWithChallenge:", "runAsSheetOnWindow:withChallenge:", - "runBeforeDate:", - "runConfigurationPalette:", "runCustomizationPalette:", - "runInNewThread", "runInitialization", "runJavaScriptAlertPanelWithMessage:", "runJavaScriptConfirmPanelWithMessage:", "runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:", "runLoop", - "runLoopModes", + "runLoopModesForAnimating", "runModal", "runModalForCarbonWindow:", "runModalForDirectory:file:", - "runModalForDirectory:file:relativeToWindow:", "runModalForDirectory:file:types:", "runModalForDirectory:file:types:relativeToWindow:", "runModalForSavePanel:", @@ -12127,7 +13317,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "runModalForWindow:", "runModalForWindow:relativeToWindow:", "runModalOpenPanel:forTypes:", - "runModalPageLayoutWithPrintInfo:", "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:", "runModalPrintOperation:delegate:didRunSelector:contextInfo:", "runModalSavePanel:withAccessoryView:", @@ -12135,19 +13324,19 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "runModalSession:", "runModalWithPrintInfo:", "runMode:beforeDate:", - "runMode:untilDate:", "runOpenPanelForFileButtonWithResultListener:", "runOperation", "runOperationModalForWindow:delegate:didRunSelector:contextInfo:", "runPageLayout:", "runPoof", - "runPoofAtPoint:", "runPoofAtPoint:withSize:callbackInfo:", - "runToolbarConfigurationPalette:", "runToolbarCustomizationPalette:", "runUntilDate:", - "safeForwarderWithTarget:defaultTarget:templateClass:", - "sampleTextForEncoding:language:font:", + "sampleTextForTriplet:", + "samplerOptionForKey:", + "samplerOptions", + "samplerWithImage:", + "samplerWithImage:keysAndValues:", "samplesPerPixel", "sansSerifFontFamily", "saturationComponent", @@ -12156,37 +13345,45 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "saveAllDocuments:", "saveAndSetPortState", "saveAndSetPortStateForUpdate:", - "saveCardWindowState", "saveChanges", - "saveCofigurationUsingName:", + "saveChanges:", + "saveConfigurationUsingName:", "saveDefaults", "saveDocument:", "saveDocumentAs:", "saveDocumentState", "saveDocumentState:", - "saveDocumentTo:", "saveDocumentToPageCache", "saveDocumentToPageCache:", + "saveDocumentToPath:", "saveDocumentWithDelegate:didSaveSelector:contextInfo:", "saveFavoritesToDefaults", - "saveFontCollection:withName:", + "saveFontCollection:", "saveFrameUsingName:", "saveGraphicsState", - "saveImageInCache:forEmail:", "saveImageNamed:andShowWarnings:", - "saveLastImportContent", "saveList:", - "saveNameColumnWidth", + "saveMetadata:", + "saveMorphedGlyphs:", "saveNumVisibleRows", "saveOptions", "savePanel", - "savePanelDidEnd:returnCode:contextInfo:", + "saveParameter:to:", + "savePreviewHeightInDefaults:", + "saveRecipeChanges", + "saveResource", + "saveResourceWithCachedResponse:", + "saveRoot", "saveToDocument:removeBackup:errorHandler:", "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:", + "saveToPath:", "saveToURL:error:", - "saveWeighting", + "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", + "saveToURL:ofType:forSaveOperation:error:", + "saveWithGlyphOrigin:", "scale", "scaleBy:", + "scaleRegionOf:destRect:userInfo:", "scaleTo::", "scaleUnitSquareToSize:", "scaleXBy:yBy:", @@ -12204,16 +13401,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "scanUpToString:intoString:", "scannerWithString:", "schedule", - "scheduleFrame", + "scheduleDelayedUpdate", "scheduleInRunLoop:forMode:", - "scheduleSearch:", + "scheduleShowRolloverWindow", "scheduleUpdate", "scheduledTimerWithTimeInterval:invocation:repeats:", "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", "scheme", - "scope", + "scopeButtonAction:", "screen", "screenFont", + "screenFontWithRenderingMode:", "screens", "scriptCommand", "scriptErrorNumber", @@ -12229,7 +13427,6 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "scriptingProperties", "scroll:", "scrollBarColor", - "scrollBarVisible", "scrollCellToVisibleAtRow:column:", "scrollClipView:toPoint:", "scrollColumnToVisible:", @@ -12240,18 +13437,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "scrollItemAtIndexToVisible:", "scrollLineDown:", "scrollLineUp:", + "scrollOverflowInDirection:granularity:", + "scrollOverflowWithScrollWheelEvent:", "scrollPageDown:", "scrollPageUp:", "scrollPoint", "scrollPoint:", - "scrollPoint:fromView:", "scrollRangeToVisible:", "scrollRect:by:", "scrollRectToVisible:", - "scrollRectToVisible:fromView:", "scrollRectToVisible:inScrollView:animate:", "scrollRowToVisible:", - "scrollSelectionToView", "scrollToAnchor:", "scrollToAnchorWithURL:", "scrollToBeginningOfDocument:", @@ -12261,125 +13457,86 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "scrollUp", "scrollViaScroller:", "scrollView", + "scrollViewDidTile", "scrollWheel:", "scrollerWidth", "scrollerWidthForControlSize:", - "scrollsDynamically", - "searchAttributes:", - "searchBase", "searchButtonCell", "searchButtonRectForBounds:", - "searchController", - "searchElementForConjunction:children:", - "searchElementForProperty:label:key:value:comparison:", + "searchFieldCellOrControlDidClearRecents:", "searchFor:direction:caseSensitive:wrap:", - "searchForAllDomains", + "searchForBrowsableDomains", "searchForLabels:beforeElement:", - "searchForRegistrationDomains", - "searchForServicesOfType:inDomain:", - "searchGroups", - "searchIndexForRecordsMatching:", - "searchLabel", - "searchList", "searchMenuTemplate", - "searchNode", - "searchPeople", - "searchResult", - "searchState", - "searchString", + "searchScopeDisplayName", "searchTextRectForBounds:", "searchableIndexIntroduction", - "secondLineParagraphStyle", "secondOfMinute", "secondaryInvocation", "secondarySelectedControlColor", "secondsFromGMT", "secondsFromGMTForDate:", - "secondsFromGMTForTimeInterval:", - "seekToEndOfFile", + "seedPrimaryKeyInt:", + "seedPrimaryKeys", "seekToFileOffset:", "segmentCount", - "segmentWidth", + "segmentWithIndex:parent:", + "segmentedCell", "selectAll", "selectAll:", + "selectAllInView:selectionOnly:", + "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:", "selectCell:", "selectCellAtRow:column:", - "selectCellWithTag:", "selectColumn:byExtendingSelection:", - "selectColumnIdentifier:", "selectColumnIndexes:byExtendingSelection:", - "selectColumnTitle:", "selectDefaultRange", - "selectDirectoryResultRow:subrow:byExtendingSelection:", + "selectDraggedFileNode:", "selectFarthestRangeForward:", - "selectFile:inFileViewerRootedAtPath:", - "selectFirstTabViewItem:", - "selectGroup:byExtendingSelection:", - "selectIdentifier:forPerson:byExtendingSelection:", - "selectInAddressBook:", "selectItem:", "selectItemAtIndex:", - "selectItemWithIdentifier:", "selectItemWithObjectValue:", + "selectItemWithTag:", "selectItemWithTitle:", "selectKeyViewFollowingView:", "selectKeyViewPrecedingView:", - "selectLastTabViewItem:", - "selectLine:", - "selectMemberRow:subrow:byExtendingSelection:", "selectNext:", "selectNextKeyView:", "selectNextRangeForward:", "selectNextTabViewItem:", - "selectParagraph:", + "selectNode:", "selectPrevious:", "selectPreviousKeyView:", - "selectPreviousTabViewItem:", - "selectRecord:byExtendingSelection:", "selectRow:byExtendingSelection:", "selectRow:inColumn:", - "selectRow:subrow:byExtendingSelection:", "selectRowIndexes:byExtendingSelection:", + "selectRowsWithFetchRequest:", + "selectSegmentWithTag:", "selectTabViewItem:", "selectTabViewItemAtIndex:", - "selectTabViewItemWithIdentifier:", "selectText:", - "selectTextAtIndex:", "selectTextAtRow:column:", - "selectToMark:", "selectWithFrame:inView:editor:delegate:start:length:", "selectWord:", "selectableItemIdentifiers", + "selectableScopeLocationNodes", "selectedAttributedString", "selectedAttributes", "selectedCell", "selectedCellInColumn:", "selectedCells", + "selectedColorSpace", "selectedColumn", "selectedColumnEnumerator", - "selectedColumnIndexes", "selectedControlColor", "selectedControlTextColor", - "selectedDirectories", - "selectedDirectoryResult", - "selectedDirectoryResults", - "selectedDirectoryResultsSubrows", - "selectedFont", - "selectedGroup", - "selectedGroups", - "selectedGroupsInMembersColumn", - "selectedIdentifiersForPerson:", - "selectedImageBackgroundPiece", - "selectedImageForControlTint:", - "selectedInactiveColor", + "selectedDOMRange", + "selectedFontChangedTo:", "selectedIndex", "selectedIndexAndQuality:", "selectedItem", "selectedItemIdentifier", "selectedKnobColor", - "selectedMember", - "selectedMembers", - "selectedMembersSubrows", "selectedMenuItemColor", "selectedMenuItemTextColor", "selectedName", @@ -12387,36 +13544,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "selectedNodes", "selectedObjects", "selectedRange", - "selectedRecord", - "selectedRecords", + "selectedRanges", + "selectedResolvedNodes", "selectedRow", "selectedRowEnumerator", "selectedRowInColumn:", "selectedRowIndexes", + "selectedScopeLocationNodes", "selectedSegment", "selectedString", - "selectedSubrowObjectsAtIndex:", - "selectedSubrows", "selectedTabViewItem", - "selectedTag", "selectedTextAttributes", "selectedTextBackgroundColor", "selectedTextColor", - "selectedValues", - "selection", "selectionAffinity", - "selectionChanged", - "selectionEnd", - "selectionEndOffset", + "selectionColor", "selectionGranularity", "selectionImage", - "selectionIndex", + "selectionIndexPaths", "selectionIndexes", "selectionRangeForProposedRange:granularity:", "selectionRect", + "selectionShouldChangeInOutlineView:", "selectionShouldChangeInTableView:", - "selectionStart", - "selectionStartOffset", + "selectionStartHasStyle:", + "selectionState", "selector", "selectorForCommand:", "selectsAllWhenSettingContent", @@ -12425,11 +13577,9 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "send", "sendAction", "sendAction:to:", - "sendAction:to:forAllCells:", "sendAction:to:from:", "sendActionOn:", "sendActivateEvent:", - "sendBeforeDate:", "sendBeforeDate:components:from:reserved:", "sendBeforeDate:msgid:components:from:reserved:", "sendBeforeTime:sendReplyPort:", @@ -12438,38 +13588,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "sendCarbonProcessHICommandEvent:", "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:", "sendConsumedMouseUpIfNeeded", + "sendContextMenuEvent:", "sendDoubleAction", - "sendEOF", - "sendEmailToGroup:", "sendEvent:", - "sendInv", "sendInvocation:", + "sendModifierEventWithKeyCode:character:", "sendMouseUpActionForDisabledCell:atRow:column:", + "sendNotification", "sendNullEvent", "sendOpenEventFor:", "sendPort", - "sendPort:withAllRights:", "sendReleasedProxies", "sendResizeEvent", "sendResponseAvailableCallback", + "sendScrollEvent", "sendSelectionChangedNotification", "sendSuperEvent:", "sendSynchronousRequest:returningResponse:error:", - "sendTaggedMsg:", "sendTimerEvent", "sendUpdateEvent", "sendWireCountForTarget:port:", "sender", "senderDidBecomeActive:", "senderDidResignActive:", - "sendsActionOnArrowKeys", "sendsActionOnEndEditing", + "sendsSearchStringImmediately", "sendsWholeSearchString", - "separateWindowForPerson:", "separatesColumns", + "separatorColor", "separatorItem", - "separatorItemIdentifier", - "serialize", "serialize:length:", "serializeAlignedBytes:length:", "serializeAlignedBytesLength:", @@ -12477,110 +13624,69 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "serializeDataAt:ofObjCType:context:", "serializeInt:", "serializeInt:atIndex:", - "serializeInts:count:", - "serializeInts:count:atIndex:", "serializeList:", "serializeListItemIn:at:", "serializeObject:", + "serializeObjectAt:ofObjCType:intoData:", "serializePListKeyIn:key:value:", "serializePListValueIn:key:value:", "serializePropertyList:", "serializePropertyList:intoData:", - "serializeServers:", "serializeString:", "serializeToData", "serializedRepresentation", - "serializerStream", "serifFontFamily", "server", - "serverExists:inServerList:", - "serverName", - "serverType", - "service:buddy:shareDirectory:listing:", - "service:buddyGroupsChanged:", - "service:buddyPictureChanged:imageData:", - "service:buddyPropertiesChanged:", - "service:cancelVCInviteFrom:", - "service:chat:member:statusChanged:", - "service:chat:messageReceived:", - "service:chat:showError:", - "service:chat:statusChanged:", - "service:counterProposalFrom:connectData:", - "service:defaultsChanged:", - "service:directIMRequestFrom:invitation:", - "service:handleVCOOB:action:param:", - "service:invitedToChat:isChatRoom:invitation:", - "service:invitedToVC:audioOnly:callerExtIP:callerExtSIP:", - "service:loginStatusChanged:message:reason:", - "service:providePiggyback:", - "service:requestIncomingFileXfer:", - "service:requestOutgoingFileXfer:", - "service:responseToVCRequest:response:connectData:", - "service:shareUploadStarted:", - "service:youAreDesignatedNotifier:", "serviceError:error:", "serviceListener", - "serviceWithInternalName:", + "servicesInfoIdentifier:", "servicesMenu", + "servicesMenuData:forUser:", "servicesProvider", - "sessionUID", "set", - "setAcceptsArrowKeys:", + "setAbsorbedCount:forIndex:", "setAcceptsColorDrops:", "setAcceptsGlyphInfo:", "setAcceptsMouseMovedEvents:", "setAccessoryView:", "setAction:", - "setAction:atRow:column:", "setActionName:", "setActivated:sender:", - "setActiveDirectoryPassword:", - "setActiveDirectoryUser:", + "setActivationEventNumber:", + "setActiveColorSpace:", "setActsLikeButton:", "setAdditionalClip:", + "setAdditionalPatternPhase:", + "setAdvance:forIndex:", + "setAffectedStores:", + "setAfterEntityLookup:", "setAlertStyle:", "setAlignment:", "setAlignment:range:", - "setAllContextsOutputTraced:", - "setAllContextsSynchronized:", + "setAllDestinations:", "setAllHTTPHeaderFields:", "setAllHeaderFields:", - "setAllIndexesNeedRefresh", - "setAllProperties:", - "setAllowEditing:", - "setAllowGroupSelection:", - "setAllowMultipleSubrowSelection:", - "setAllowSubrowSelection:", "setAllowedFileTypes:", "setAllowsAnimatedImageLooping:", "setAllowsAnimatedImages:", - "setAllowsAnyHTTPSCertificate:forHost:", "setAllowsBranchSelection:", "setAllowsColumnReordering:", "setAllowsColumnResizing:", "setAllowsColumnSelection:", - "setAllowsDocumentBackgroundColorChange:", "setAllowsEditingMultipleValuesSelection:", "setAllowsEditingTextAttributes:", "setAllowsEmptySelection:", "setAllowsExpandingMultipleDirectories:", "setAllowsFloats:", - "setAllowsGroupEditing:", - "setAllowsGroupSelection:", - "setAllowsHorizontalScrolling:", "setAllowsIncrementalSearching:", - "setAllowsIndividualValueSelection:", "setAllowsMixedState:", "setAllowsMultipleSelection:", - "setAllowsNullArgument:withBinding:", + "setAllowsOtherFileTypes:", "setAllowsScrolling:", "setAllowsTickMarkValuesOnly:", "setAllowsToolTipsWhenApplicationIsInactive:", - "setAllowsTruncatedLabels:", "setAllowsUndo:", - "setAllowsUserConfiguration:", "setAllowsUserCustomization:", - "setAllowsVerticalScrolling:", "setAlpha:", "setAlphaValue:", "setAltIncrementValue:", @@ -12588,15 +13694,12 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setAlternateImage:", "setAlternateMnemonicLocation:", "setAlternateTitle:", - "setAlternateTitleWithMnemonic:", - "setAltersStateOfSelectedItem:", - "setAlwaysAttemptToUsePageCache:", + "setAlwaysPresentsApplicationModalAlerts:", + "setAlwaysUsesMultipleValuesMarker:", "setAnimates:", + "setAnimationBlockingMode:", "setAnimationDelay:", "setAppleMenu:", - "setApplicationIconImage:", - "setApplicationNameForUserAgent:", - "setAppliesImmediately:", "setArgument:atIndex:", "setArgumentBinding:", "setArguments:", @@ -12605,19 +13708,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setArrowsPosition:", "setAsMainCarbonMenuBar", "setAspectRatio:", - "setAssociatedPoints:atIndex:", + "setAssociatedInputManager:", "setAttachment:", "setAttachmentCell:", "setAttachmentSize:forGlyphRange:", "setAttribute::", - "setAttribute:value:", - "setAttribute:values:", - "setAttributeDescriptor:forKeyword:", "setAttributeKeys:andValues:", - "setAttributeNS:::", - "setAttributeNode:", - "setAttributeNodeNS:", - "setAttributeRuns:", + "setAttributeSlot:withObject:", + "setAttributeType:", "setAttributedAlternateTitle:", "setAttributedString:", "setAttributedStringForNil:", @@ -12626,77 +13724,79 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setAttributedStringValue:", "setAttributedTitle:", "setAttributes:", + "setAttributes:Values:ValueSizes:Count:", "setAttributes:range:", "setAttributesInTextStorage:", "setAutoAddExtensionToNextInput:", - "setAutoPositionMask:", - "setAutoResizesOutlineColumn:", "setAutodisplay:", "setAutoenablesItems:", - "setAutofill:", - "setAutofillColor:", "setAutohidesScrollers:", - "setAutomaticallyPreparesContent:", + "setAutorecalculatesKeyViewLoop:", "setAutorepeat:", "setAutoresizesAllColumnsToFit:", - "setAutoresizesOutlineColumn:", "setAutoresizesSubviews:", "setAutoresizingMask:", - "setAutosaveExpandedItems:", "setAutosaveName:", "setAutosaveTableColumns:", + "setAutosavedContentsFileURL:", "setAutosaves:", "setAutosavesConfiguration:", - "setAutosavesConfigurationUsingIdentifier:", "setAutoscroll:", - "setAutosizesCells:", - "setAvailableCapacity:", + "setAutovalidates:", + "setAvoidableSpecifier:path:", "setAvoidsEmptySelection:", "setBackgroundColor:", "setBackgroundLayoutEnabled:", - "setBackingType:", "setBaseAffineTransform:", "setBaseSpecifier:", "setBaseURL:", "setBaseWritingDirection:", + "setBaseWritingDirection:range:", "setBecomesKeyOnlyIfNeeded:", "setBezelStyle:", "setBezeled:", "setBidiLevels:forGlyphRange:", - "setBidiProcessingEnabled:", - "setBinaryAttributes:", "setBinderSpecificFlag:atIndex:", "setBinding:", - "setBitmapImageRep:forItemIdentifiers:", + "setBitmap:rowBytes:bounds:format:", "setBitsPerSample:", - "setBlocksOtherRecognizers:", - "setBluetoothButton:", - "setBody:", "setBool:forKey:", + "setBoolParameterValue:to:", + "setBoolParameterValue:to:inResolutionData:", + "setBorderColor:", + "setBorderColor:forEdge:", "setBorderType:", + "setBorderWidth:", "setBordered:", "setBottomCornerRounded:", "setBottomMargin:", "setBounds:", - "setBoundsAsQDRect:", "setBoundsOrigin:", - "setBoundsRotation:", + "setBoundsRect:forTextBlock:glyphRange:", "setBoundsSize:", "setBoxType:", "setBrightness:", "setBrowser:", "setBulletCharacter:", + "setBundle:", + "setBundlePath:", "setButtonBordered:", "setButtonID:", "setButtonType:", + "setCGCompositeOperation:inContext:", + "setCGCompositeOperationFromString:inContext:", "setCGContext:", + "setCTM:", "setCacheDepthMatchesImageDepth:", - "setCacheDisabled:", + "setCacheHint:", "setCacheMode:", "setCachePolicy:", + "setCachedChildren:", + "setCachedChildren:forObservedNode:", + "setCachedSQLiteStatement:", "setCachedSeparately:", - "setCachesBezierPath:", "setCalculatesAllSizes:", + "setCalendar:", "setCalendarFormat:", "setCanChooseDirectories:", "setCanChooseFiles:", @@ -12705,63 +13805,50 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setCanCycle:", "setCanHide:", "setCanSelectHiddenExtension:", - "setCanSpawnSeparateThread:", "setCancelButtonCell:", "setCancellationDelegate:wasCancelledSelector:contextInfo:", - "setCapacity:", - "setCapitalizedAttributes:", - "setCarbonDelegate:", - "setCarbonNotification:", "setCaseSensitive:", - "setCategories:", "setCell:", - "setCell:enabled:", - "setCell:selected:", "setCellAttribute:to:", "setCellBackgroundColor:", "setCellClass:", "setCellPrototype:", "setCellSize:", "setCertificatePolicyOnStream", - "setChanged:", - "setChangedValues:", + "setCharacterEncoding:", "setCharacterIndex:forGlyphAtIndex:", "setCharacterIndex:layoutManager:", - "setCharacters:", "setCharactersToBeSkipped:", "setChildSpecifier:", "setChildren:", - "setChooser:", - "setClass:forClassName:", - "setClassDelegate:", - "setClassName:", - "setClassName:forClass:", + "setChildrenKeyPath:", + "setClassDescription:", + "setClearsFilterPredicateOnInsertion:", + "setClient:", "setClientView:", "setClip", - "setClipRgn", "setClippedItems:", - "setCloseAction:", - "setCloseTarget:", + "setCocoaSubVersion:", "setCocoaVersion:", + "setCollapsesBorders:", "setColor:", + "setColor:forAttribute:", "setColor:forKey:", "setColorList:", - "setColorMask:", "setColorSpaceName:", + "setColumnAutoresizingStyle:", "setColumnResizingType:", - "setColumnTitle:forIdentifier:", - "setColumnTitle:forProperty:", "setColumnsAutosaveName:", - "setCommands:", - "setComment:", + "setColumnsToFetch:", + "setCommandDescription:", "setCompareSelector:", "setCompletes:", - "setCompletionEnabled:", + "setCompletionDelay:", "setCompression:factor:", "setConditionallySetsEditable:", "setConditionallySetsEnabled:", "setConditionallySetsHidden:", - "setConfigurationFromDictionary:", + "setConfiguratioName:", "setConfigurationUsingName:", "setConstrainedFrameSize:", "setContainerClassDescription:", @@ -12769,11 +13856,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setContainerIsRangeContainerObject:", "setContainerSize:", "setContainerSpecifier:", + "setContainingWindow:", "setContent:", - "setContentAspectRatio:", "setContentMaxSize:", "setContentMinSize:", - "setContentResizeIncrements:", "setContentSize:", "setContentView:", "setContentViewMargins:", @@ -12782,30 +13868,34 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setContextHelpModeActive:", "setContextMenuRepresentation:", "setContinuous:", + "setContinuousGrammarCheckingEnabled:", "setContinuousSpellCheckingEnabled:", + "setContinuouslyUpdatesValue:", + "setControl:", "setControlSize:", "setControlTint:", "setControlView:", "setController:", + "setController:retainController:", "setConversationRequest:", - "setCookie:", - "setCookieAcceptPolicy:", - "setCookies:", "setCookies:forURL:mainDocumentURL:", "setCookies:forURL:policyBaseURL:", - "setCookiesFromResponseHeader:forURL:policyBaseURL:", + "setCookies:whilePrivateBrowsing:", "setCopiesOnScroll:", "setCornerView:", - "setCountLabel:", - "setCreationDate:", + "setCountKeyPath:", + "setCreatesSortDescriptor:", "setCredential:forProtectionSpace:", - "setCrop:smallIcon:", + "setCriticalValue:", + "setCssText:", "setCurrListName:", - "setCurrent", + "setCurrent:", "setCurrentAppleEventAndReplyEventWithSuspensionID:", + "setCurrentBrowsingNodePath:", + "setCurrentConstructionContext:", "setCurrentContext:", "setCurrentDirectoryNode:", - "setCurrentDirectoryPath:", + "setCurrentEntity:", "setCurrentFrame:", "setCurrentImageNumber:", "setCurrentInputManager:", @@ -12813,165 +13903,158 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setCurrentOperation:", "setCurrentPage:", "setCurrentPluginView:", - "setCurrentVirtualScreen:", + "setCurrentProgress:", "setCurrentVoiceIdentifier:", "setCursiveFontFamily:", "setCursorPositionToIndex:inParagraph:", - "setCustomTextEncodingName:", - "setCustomUserAgent:", "setCustomizationSheetWidth:", + "setDBSnapshot:", + "setDTD:", + "setDTDKind:", "setData:", "setData:forType:", - "setData:length:", "setDataCell:", - "setDataLength:", "setDataRetained:", "setDataSource:", - "setDeadKeyProcessingEnabled:", + "setDatabaseOperator:", + "setDatabaseUUID:", + "setDatabaseVersion:", + "setDateFormat:", + "setDatePickerElements:", + "setDatePickerMode:", + "setDatePickerStyle:", + "setDateStyle:", + "setDateValue:", + "setDebugDefault:", "setDecimalSeparator:", "setDefaultAttachmentScaling:", - "setDefaultBehavior:", + "setDefaultBorderColor:", "setDefaultButtonCell:", - "setDefaultCollator:", - "setDefaultCountryCode:", "setDefaultCredential:forProtectionSpace:", "setDefaultFixedFontSize:", "setDefaultFlatness:", "setDefaultFontSize:", - "setDefaultLanguage:", + "setDefaultFormatterBehavior:", "setDefaultLineCapStyle:", "setDefaultLineJoinStyle:", "setDefaultLineWidth:", "setDefaultMenu:", "setDefaultMiterLimit:", - "setDefaultNameServerPortNumber:", "setDefaultParagraphStyle:", "setDefaultPlaceholder:forBinding:onObjectClass:", "setDefaultPlaceholder:forMarker:withBinding:", - "setDefaultPreferencesClass:", - "setDefaultPrinter:", - "setDefaultPriority:", - "setDefaultRowHeight:", "setDefaultTabInterval:", "setDefaultTextColor:", - "setDefaultTextColor:whenObjectValueIsUsed:", "setDefaultTextEncoding:", - "setDefaultTextEncodingName:", - "setDefaultTimeZone:", - "setDefaultTimeoutInterval:", + "setDefaultType:", "setDefaultWindingRule:", "setDeferSync:", - "setDeferred:", "setDefersCallbacks:", "setDefersLoading:", "setDelegate:", "setDelegate:withNotifyingTextView:", - "setDepth:", + "setDeletedObjects:", + "setDeletesObjectsOnRemove:", "setDepthLimit:", "setDescriptor:forKeyword:", "setDestination:", "setDestination:allowOverwrite:", + "setDestinationEntityExternalName:", "setDestinationOrigin:travelTimeInSeconds:", + "setDestinations:forRelationship:", "setDictionary:", "setDirectParameter:", - "setDirectoriesSubrowDelegate:", "setDirectory:", - "setDirectory:file:", "setDisabled:", - "setDisabledImage:forControlTint:", - "setDisabledSelectedImage:forControlTint:", - "setDisabledUnselectedImage:", + "setDisabledWhenInactive:", "setDiskCapacity:", "setDisplayMode:", - "setDisplayName:", "setDisplayPattern:", - "setDisplayedCard:", - "setDisplayedCard:withHistory:", - "setDisplayedCommandsTitle:", "setDisplayedContainerNodes:", - "setDisplayedProperty:", "setDisplayedStringsArray:", "setDisplayedTitle:", - "setDisplayedWhenStopped:", - "setDisplaysTooltips:", - "setDistributionIdentifier:forProperty:person:", - "setDoSelectGroup:", - "setDockMenu:", + "setDisplaysTokenWhileEditing:", + "setDisplaysWithFocusAttributes:", "setDocument:", "setDocumentAttributes:", "setDocumentCursor:", "setDocumentEdited:", "setDocumentState:", "setDocumentView:", - "setDouble:forKey:", "setDoubleAction:", - "setDoubleClickTarget:andAction:", "setDoubleValue:", - "setDownloadDelegate:", + "setDragAndDropCharRanges:", "setDragWindowImage:", + "setDraggingImage:at:", + "setDrawingAttributes:", + "setDrawingStyle:", + "setDrawnInSelectedRow:", "setDrawsBackground:", - "setDrawsCellBackground:", - "setDrawsContainmentIndicator:", "setDrawsGrid:", "setDrawsOutsideLineFragment:forGlyphAtIndex:", "setDrawsOutsideLineFragment:forGlyphRange:", - "setDrawsSpecialSelection:", "setDrawsTrackAsColorScaleType:", "setDropItem:dropChildIndex:", "setDropRow:dropOperation:", "setDynamicDepthLimit:", - "setDynamicVerticalScroller:", "setEchosBullets:", - "setEditButton:", - "setEditMode:", "setEditable:", + "setEditableIfEnabled:", "setEdited:", "setEditedFlag:", + "setElementName:", "setEmpty", - "setEmpty:", - "setEnableCustomAttributeFixing:", - "setEnableFloatParsing:", - "setEnableIntegerParsing:", + "setEnableSelectionHighlightDrawing:", + "setEnableTextHighlightDrawing:", + "setEnabled", "setEnabled:", "setEnabled:forSegment:", "setEnabledFileTypes:", "setEncoding:userChosen:", + "setEnd::", "setEndSpecifier:", "setEndSubelementIdentifier:", "setEndSubelementIndex:", + "setEndWhitespace:", + "setEntities:", + "setEntities:forConfiguration:", + "setEntity:", + "setEntityName:", "setEntryType:", - "setEntryWidth:", - "setEnvironment:", - "setErrorAction:", - "setErrorProc:", + "setError:info:fatal:", + "setErrorExpectedType:", + "setErrorNumber:", + "setErrorOffendingObjectDescriptor:", "setEvaluationErrorNumber:", - "setEventCoalescingEnabled:", "setEventHandler:andSelector:forEventClass:andEventID:", - "setEventMask:", - "setEventsTraced:", - "setExchangeServer:", - "setExcludedFromWindowsMenu:", "setExpanded:", "setExpandedView:", "setExtensionHidden:", + "setExternalName:", + "setExternalPrecision:", + "setExternalScale:", + "setExternalType:", "setExtraLineFragmentRect:usedRect:textContainer:", + "setFBENode:", "setFantasyFontFamily:", "setFauxFilePackageTypes:", + "setFetchPredicate:", + "setFetchRequestTemplate:forName:", + "setFidelity:", "setFieldEditor:", - "setFieldVisible:withBool:", - "setFile:", "setFileAttributes:", "setFileListMode:", "setFileListOrderedByFileProperty:", "setFileListOrderedByFileProperty:ascending:", "setFileListOrderedByFileProperty:ascending:caseSensitive:", + "setFileModificationDate:", "setFileName:", "setFileType:", - "setFileWrapper:", + "setFileURL:", "setFilename:", - "setFilepathLabel:", "setFill", "setFilter:", + "setFilterPredicate:", "setFindString:writeToPasteboard:updateUI:", "setFireDate:", "setFirstLineHeadIndent:", @@ -12980,32 +14063,32 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setFlatness:", "setFlipped:", "setFloat:forKey:", + "setFloatParameterValue:forResolution:to:", + "setFloatParameterValue:to:inResolutionData:", "setFloatValue:", "setFloatValue:knobProportion:", "setFloatingPanel:", "setFloatingPointFormat:left:right:", + "setFocusRingStyle:radius:color:", "setFocusRingType:", "setFocusStack:", "setFocusedColorChipIndex:", - "setFollowsItalicAngle:", "setFont:", - "setFont:range:", "setFontDescriptorKey:", - "setFontManagerFactory:", + "setFontFamily:", "setFontMenu:", - "setFontName:", "setFontPanel:", - "setFontPanelFactory:", "setFontSize:", + "setFontStyle:", + "setFontWeight:", "setForegroundColor:", - "setFormContentType:", - "setFormData:", - "setFormReferrer:", + "setForeignEntityKeySlot:unsigned:", + "setForeignKeySlot:int64:", + "setForeignKeys:", "setFormat:", - "setFormatAutosaveName:", "setFormatter:", + "setFormatterBehavior:", "setFrame:", - "setFrame:animate:fromLayout:toLayout:paneWidths:numberOfPanes:", "setFrame:display:", "setFrame:display:animate:", "setFrameAutosaveName:", @@ -13017,37 +14100,24 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setFrameSize:", "setFrameTopLeftPoint:", "setFrameUsingName:", - "setFrameUsingName:force:", - "setFullScreen", - "setGradientType:", - "setGraphicAttributeWithCode:", - "setGraphicsState:", - "setGreyButton0:", - "setGreyButton1:", - "setGreyButton2:", - "setGreyButton3:", - "setGreyButton4:", - "setGreyButton5:", + "setFullMetadata:", + "setGlyphGenerator:", + "setGlyphID:forIndex:", + "setGlyphRange:characterRange:", "setGridColor:", "setGridStyleMask:", - "setGroup:", - "setGroupDoubleAction:", - "setGroupDoubleClickTarget:andAction:", "setGroupIdentifier:", "setGroupName:", - "setGrouping:", - "setGroupsByEvent:", + "setGroupingSeparator:", "setHTTPBody:", "setHTTPContentType:", - "setHTTPCookiePolicyBaseURL:", - "setHTTPExtraCookies:", "setHTTPMethod:", - "setHTTPPageNotFoundCacheLifetime:", "setHTTPReferrer:", - "setHTTPShouldHandleCookies:", "setHTTPUserAgent:", "setHandle:", + "setHandlesContentAsCompoundValue:", "setHardInvalidation:forGlyphRange:", + "setHasBorder:", "setHasFocus:", "setHasHorizontalRuler:", "setHasHorizontalScroller:", @@ -13055,17 +14125,17 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setHasShadow:", "setHasThousandSeparators:", "setHasUndoManager:", - "setHasVerticalRuler:", "setHasVerticalScroller:", "setHeadIndent:", "setHeader", "setHeaderCell:", + "setHeaderLevel:", "setHeaderView:", - "setHeartBeatCycle:", "setHeightTracksTextView:", "setHelpAnchor:", "setHidden:", "setHiddenUntilMouseMoves:", + "setHidesEmptyCells:", "setHidesOnDeactivate:", "setHighlightMode:", "setHighlighted:", @@ -13073,259 +14143,215 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setHighlightedTableColumn:", "setHighlightsBy:", "setHintCapacity:", + "setHistoryAgeInDaysLimit:", + "setHistoryItemLimit:", "setHistoryProvider:", "setHorizontal:", + "setHorizontalAlignment:", "setHorizontalEdgePadding:", "setHorizontalLineScroll:", "setHorizontalPageScroll:", "setHorizontalPagination:", - "setHorizontalRulerView:", - "setHorizontalScroller:", + "setHorizontalScrollingMode:", "setHorizontallyCentered:", "setHorizontallyResizable:", - "setHostCacheEnabled:", - "setHostName:", - "setHostWindow:", "setHyphenationFactor:", "setIcon:", - "setIconForFileName:", - "setIconRef:", "setIconURL:", "setIconURL:withType:", "setIdentifier:", "setIgnoredWords:inSpellDocumentWithTag:", "setIgnoresAlpha:", - "setIgnoresAntialiasThreshold:", "setIgnoresMouseEvents:", - "setIgnoresMultiClick:", + "setIgnoresViewTransformations:", "setImage:", - "setImage:forControlTint:", + "setImage:dirtyRect:", "setImage:forSegment:", - "setImage:startRect:andEndRect:", "setImageAlignment:", - "setImageData:", - "setImageDimsWhenDisabled:", "setImageFrameStyle:", - "setImageFromPath:", "setImageInterpolation:", "setImageNamed:forView:", - "setImageOrigin:", "setImagePosition:", "setImageRep:", "setImageRep:forImage:", + "setImageRep:forItemIdentifiers:", "setImageScaling:", - "setImageSize:", "setImplementor:atIndex:", "setImportsGraphics:", + "setInContext:", + "setInDrawingMachinery:", "setInPalette:", - "setIncludeNotesInVCards:", "setIncrement:", "setIndentationLevel:", - "setIndentationMarkerFollowsCell:", "setIndentationPerLevel:", - "setIndependentConversationQueueing:", "setIndeterminate:", "setIndex:", - "setIndexNeedsRefresh:", - "setIndicatorImage:inTableColumn:", - "setInfo:", + "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:", "setInformativeText:", "setInitialFirstResponder:", "setInitialGState:", - "setInitialToolTipDelay:", "setInitialValues:", - "setInsertedNullPlaceholder:", + "setInnerHTML:", + "setInsertedObjects:", "setInsertionClassDescription:", + "setInsertionGlyphIndex:", "setInsertionPointColor:", "setInsertsNullPlaceholder:", "setIntAttribute:value:forGlyphAtIndex:", + "setIntParameterValue:to:", + "setIntParameterValue:to:inResolutionData:", "setIntValue:", "setInteger:forKey:", "setIntercellSpacing:", "setInterfaceStyle:", - "setInterlineSpacing:", - "setInvokesSeparatelyWithArrayObjects:withBinding:", "setIsActive:", - "setIsAlias:", "setIsClosable:", "setIsContainer:", "setIsEmptyColumn:", - "setIsEnabled:", - "setIsExpanded:", - "setIsExtensionHidden:", "setIsFileListOrderedAscending:", "setIsFileListOrderedCaseSensitive:", "setIsFileProperty:displayed:", - "setIsFlipped:", - "setIsMe:", - "setIsMiniaturized:", - "setIsPackage:", - "setIsPaneSplitter:", - "setIsPrimary:", "setIsResizable:", + "setIsSelected:", + "setIsSelected:forView:", "setIsTargetItem:", "setIsUp:", - "setIsVisible:", - "setIsVolume:", - "setIsZoomed:", "setItemHeight:", - "setItemSize:", - "setItemSpacing:", "setJavaEnabled:", "setJavaScriptCanOpenWindowsAutomatically:", "setJavaScriptEnabled:", "setJobDisposition:", "setJobStyleHint:", + "setJoinSemantic:", + "setJoins:", "setKey:", "setKeyBindingManager:", "setKeyCell:", "setKeyEquivalent:", "setKeyEquivalentFont:", - "setKeyEquivalentFont:size:", "setKeyEquivalentModifierMask:", - "setKeyNeedsRefresh:", - "setKeyNeedsRefresh:atIndex:", - "setKeyNeedsRefresh:forObject:", "setKeyPath:", - "setKeyView:", "setKeyboardFocusRingNeedsDisplayIfNeededInRect:", "setKeyboardFocusRingNeedsDisplayInRect:", "setKeys:triggerChangeNotificationsForDependentKey:", - "setKind:", "setKnobThickness:", "setLabel:", "setLabel:forSegment:", "setLanguage:", "setLanguageModel:", "setLastColumn:", - "setLastComponentOfFileName:", "setLastEditedStringValue:", "setLaunchPath:", + "setLayoutAlgorithm:", "setLayoutManager:", - "setLayoutType:animate:", + "setLayoutRect:forTextBlock:glyphRange:", "setLeadingOffset:", "setLeaf:", + "setLeafKeyPath:", + "setLeftChild:", "setLeftMargin:", "setLength:", "setLevel:", - "setLevelsOfUndo:", "setLineBreakMode:", "setLineCapStyle:", "setLineDash:count:phase:", "setLineFragmentPadding:", "setLineFragmentRect:forGlyphRange:usedRect:", "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:", - "setLineFragmentUsedRect:forGlyphRange:", "setLineHeightMultiple:", "setLineJoinStyle:", "setLineScroll:", "setLineSpacing:", "setLineWidth:", + "setLinkInWindow:string:delegate:", "setLinkTextAttributes:", - "setListensInForegroundOnly:", "setLoadType:", "setLoaded:", "setLoadsImagesAutomatically:", - "setLocalDrag:", "setLocale:", "setLocaleListForDefaultFontFallback:", - "setLocalizationFromDefaults", + "setLocalizationDictionary:", "setLocalizesFormat:", "setLocation:forStartOfGlyphRange:", "setLocation:forStartOfGlyphRange:coalesceRuns:", "setLocation:withAdvancements:forStartOfGlyphRange:", - "setLogicalSize:", - "setLong:forKey:", "setLoopMode:", - "setLowercasedAttributes:", "setMIMEToDescriptionDictionary:", "setMIMEToExtensionsDictionary:", "setMIMEType:", "setMainDocumentURL:", "setMainMenu:", "setMaintainsBackForwardList:", + "setManagedObjectContext:", + "setMapData:", "setMark:", + "setMarkDOMRange:", "setMarkedText:selectedRange:", "setMarkedTextAttributes:", - "setMarker:", + "setMarkedTextDOMRange:", + "setMarkerFormatInWindow:delegate:", "setMarkerLocation:", "setMarkers:", "setMasterObjectRelationship:", - "setMatchesOnMultipleResolution:", + "setMasterObjectRelationship:refreshDetailContent:", + "setMatchedColor:", "setMatrixClass:", "setMax:", "setMaxContentSize:", - "setMaxResults:", + "setMaxCount:", + "setMaxDate:", "setMaxSize:", "setMaxValue:", "setMaxVisibleColumns:", "setMaxWidth:", "setMaximum:", - "setMaximumAttributeCacheSize:", "setMaximumLength:", "setMaximumLineHeight:", "setMaximumRecents:", - "setMe:", - "setMeasurementUnits:", - "setMembersSubrowDelegate:", "setMemoryCapacity:", "setMenu:", - "setMenuBarVisible:", + "setMenu:forSegment:", "setMenuChangedMessagesEnabled:", "setMenuFormRepresentation:", "setMenuItem:", - "setMenuItemCell:forItemAtIndex:", "setMenuRepresentation:", "setMenuView:", - "setMenuZone:", "setMessage:", "setMessageText:", - "setMessageType:", "setMinColumnWidth:", "setMinContentSize:", - "setMinNumberOfRows:", + "setMinCount:", + "setMinDate:", "setMinSize:", "setMinValue:", "setMinWidth:", "setMinimum:", "setMinimumFontSize:", "setMinimumLineHeight:", - "setMiniwindowImage:", - "setMiniwindowTitle:", + "setMinimumLogicalFontSize:", "setMiterLimit:", "setMixedStateImage:", "setMnemonicLocation:", - "setModDate:", - "setModalMode:", "setMode:", - "setModel:", "setMonoCharacterSeparatorCharacters:usualPunctuation:", - "setMovable:", "setMovableByWindowBackground:", "setMovie:", "setMsgid:", - "setMultiValue:forProperty:", "setMultipleCharacterSeparators:", "setMutableAttributedString:", - "setMutableDictionary:", - "setMuted:", "setName:", - "setNameDoubleAction:", "setNameFieldLabel:", - "setNamedItem:", - "setNamedItemNS:", + "setNames:", + "setNamespaces:", "setNavNodeClass:", - "setNeedsDisplay", "setNeedsDisplay:", "setNeedsDisplayForItemAtIndex:", "setNeedsDisplayForResponderChange", + "setNeedsDisplayIfSelectionNeedsToRedraw", "setNeedsDisplayInRect:", "setNeedsDisplayInRect:avoidAdditionalLayout:", - "setNeedsDisplayLater", - "setNeedsLayout", "setNeedsLayout:", "setNeedsReapplyStyles", - "setNeedsRefresh", "setNeedsResyncWithDefaultVoice:", "setNeedsSizing:", "setNeedsToApplyStyles:", @@ -13334,69 +14360,58 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setNextKeyView:", "setNextResponder:", "setNextState", - "setNextText:", + "setNextUndoManager:", + "setNilSymbol:", "setNilValueForKey:", - "setNoImage:", + "setNode:", "setNode:displayState:", "setNode:isDirectory:displayState:", - "setNodeValue:", + "setNotANumberSymbol:", "setNotShownAttribute:forGlyphAtIndex:", "setNotShownAttribute:forGlyphRange:", + "setNotationName:", "setNotificationCenterSerializeRemoves:", - "setNotifyOnSelectionChanged:", "setNumRowsToToggleVisible:", - "setNumberOfItemsPerRow:", + "setNumberOfColumns:", + "setNumberOfMajorTickMarks:", "setNumberOfTickMarks:", "setNumberOfVisibleItems:", - "setObject:atIndex:", - "setObject:forIndex:dictionary:", "setObject:forKey:", "setObject:forKey:inDomain:", "setObjectBeingTested:", "setObjectClass:", "setObjectForCurrentRecognition:", - "setObjectNeedsRefresh:", + "setObjectID:", "setObjectValue:", + "setObjectValuePreservingEntitiesForNode:string:", "setObjectZone:", "setObscured:", "setObservationInfo:", - "setOffScreen:width:height:rowbytes:", + "setObservedObject:", + "setObservingBinder:", + "setObservingToModelObjectsRange:", "setOffStateImage:", - "setOnMouseEntered:", - "setOnMouseExited:", + "setOffset:", "setOnStateImage:", "setOneShot:", "setOpaque:", - "setOpenGLContext:", "setOptimizableColumn:", - "setOption:value:", - "setOptionalSharedHistory:", + "setOption:forKey:", + "setOptional:", "setOptions:", "setOptionsAttributes:string:", "setOptionsDictionary:", - "setOptionsPopUp:", - "setOrderedIndex:", "setOrientation:", "setOrigin:", - "setOriginLoadLimit:", - "setOriginLoadTimeout:", "setOriginOffset:", - "setOriginalNode:", "setOriginalURLString:", "setOutline:", "setOutlineTableColumn:", - "setOutlookWebAccessServer:", "setOutputFormat:", - "setOutputTraced:", - "setPMPageFormat:", - "setPMPrintSettings:", "setPackage:", "setPage:", - "setPageCacheSize:", "setPageOrder:", - "setPageScroll:", "setPaletteLabel:", - "setPalettePopUp:", "setPanel:", "setPanelFont:isMultiple:", "setPaperName:", @@ -13405,32 +14420,26 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setParagraphSpacing:", "setParagraphSpacingBefore:", "setParagraphStyle:", - "setParagraphs:", "setParamDescriptor:forKeyword:", "setParameter:forOption:", "setParent:", "setParentCrayonRow:", "setParentCrayonView:", + "setParentNode:", + "setParentStore:", "setParentWindow:", - "setPassword:", - "setPasswordMode:", + "setParsesCocoaElements:", "setPath:", "setPathSeparator:", - "setPatternPhase:", "setPausedActions:", - "setPenAttributeWithCode:", - "setPeopleDoubleClickTarget:andAction:", - "setPeoplePickerView:", + "setPerformsContentDecoding:", "setPeriodicDelay:interval:", "setPersistentDomain:forName:", - "setPhysicalSize:", - "setPickerMask:", - "setPickerMode:", - "setPixelFormat:", + "setPersistentStoreCoordinator:", + "setPhase:", "setPixelsHigh:", "setPixelsWide:", "setPlaceholder:forMarker:isDefault:", - "setPlaceholder:forMarker:withBinding:", "setPlaceholderAttributedString:", "setPlaceholderString:", "setPlaysEveryFrame:", @@ -13443,215 +14452,196 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setPolicyDelegate:", "setPoolCountHighWaterMark:", "setPoolCountHighWaterResolution:", - "setPort:", + "setPopulatingMenu:", "setPositiveFormat:", "setPostsBoundsChangedNotifications:", "setPostsFrameChangedNotifications:", + "setPredicate:", + "setPredicateName:", + "setPredicateOperator:", + "setPredicateString:", "setPreferences:", - "setPreferencesIdentifier:", - "setPreferencesView:", "setPreferredEdge:", "setPreferredFilename:", - "setPreferredFontNames:", - "setPrefersAllColumnUserResizing:", - "setPrefersColorMatch:", - "setPrefix:", + "setPreservesContentDuringLiveResize:", "setPreservesSelection:", - "setPressedImage:", - "setPressedImage:forControlTint:", "setPreviewNode:", "setPreviousItem:", - "setPreviousText:", - "setPrimaryIdentifier:", + "setPrimaryKeyGeneration:", + "setPrimaryKeys:", + "setPrimitiveValue:forKey:", "setPrintInfo:", "setPrintPanel:", "setPrinter:", "setPriority:forFlavor:", - "setPrivateVCardEnabled:", - "setProcessName:", "setPrompt:", + "setPropagatesDeletesAtEndOfEvent:", + "setProperties:", "setProperty:", - "setProperty:forKey:", + "setProperty:::", "setProperty:forKey:inRequest:", "setProperty:withValue:", "setPropertyList:forType:", + "setPropertyMappings:", + "setProps:forIndex:", "setProtocolForProxy:", - "setProtocolSpecificInformation:", "setPrototype:", "setProvisionalDataSource:", "setProvisionalItem:", "setProxyPropertiesForURL:onStream:", + "setPublicID:", "setPullsDown:", - "setQueryAttributes:", - "setQueryType:", + "setQueryNode:", "setQuoteBinding:", "setQuotingWithSingleQuote:double:", + "setROISelector:", "setRaisesForNotApplicableKeys:", - "setRaisesForNotApplicableKeys:withBinding:", "setRangeContainerClassDescription:", - "setRangeContainerObject:", + "setRanges:", "setRate:", + "setReadLimit:", "setReadOnly:", "setRealDelegate:", "setReceiversSpecifier:", "setRecentSearches:", "setRecentsAutosaveName:", - "setRecordTypesToSearchFor:", - "setRecordsUserChanges:", - "setRefreshesAllKeys:", - "setRefreshesAllObjects:", "setRefusesFirstResponder:", "setRefusesToBeShown:", "setRegistryClass:", "setRegistryString:", - "setRelatedObject:", + "setRelatedIDs:forKey:options:", "setRelativePosition:", "setReleasedWhenClosed:", "setReleasesAfterPoofing:", "setRememberedSnapToIndex:", "setRemovable:", "setRenderPart:", - "setRepeatCountForNextCommand:", - "setReplyMode:", "setReplyTimeout:", - "setRepopulatedContentWithNumberOfContentItems:", - "setReporter:selector:", "setRepresentedFilename:", "setRepresentedObject:", + "setRequestError:", "setRequestTimeout:", + "setRequestURL:", "setRequiredFileType:", "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:", "setReservedThicknessForAccessoryView:", "setReservedThicknessForMarkers:", - "setResizable:", + "setResizable", "setResizeIncrements:", - "setResizeableColumns:", + "setResizingMask:", "setResolvesAliases:", - "setResourceData:", "setResourceLoadDelegate:", - "setResponse:", + "setResourceLocator:", "setResponseHeader:", - "setResponseHeaderUsingHTTPResponse:andCall:context:", - "setReturnCompletes:", + "setResponseHeaderUsingHTTPResponse:", + "setResponseURL:", "setReturnValue:", - "setReusesColumns:", "setRichText:", + "setRightChild:", "setRightMargin:", + "setRoot:", + "setRootElement:", "setRootNode:", "setRootObject:", + "setRootObjectStore:", "setRootPath:", - "setRoundedEdges:", "setRoundingBehavior:", + "setRoundingMode:", + "setRowForUpdate:", "setRowHeight:", - "setRuleThickness:", - "setRulerViewClass:", "setRulerVisible:", "setRulersVisible:", "setRunLoop:", - "setRunLoopModes:", + "setSQLString:", "setSRRecognitionSystem:", "setSRRecognizer:", + "setSamplerOption:forKey:", + "setSamplerOptionsFromDictionary:", "setSansSerifFontFamily:", "setSaveWeighting:", "setScalesWhenResized:", "setScanLocation:", - "setScope:", + "setScopeLocationNodes:", "setScriptCommand:", "setScriptErrorNumber:", "setScriptErrorString:", "setScriptingProperties:", + "setScrollBarsSuppressed:repaintOnUnsuppress:", "setScrollPoint:", "setScrollView:", "setScrollable:", "setScrollbarsVisible:", - "setScrollsDynamically:", - "setSearchBase:", + "setScrollingMode:", "setSearchButtonCell:", - "setSearchList:", "setSearchMenuTemplate:", - "setSearchState:", - "setSearchString:", - "setSearchValue:", + "setSearchScopeDisplayName:", "setSegmentCount:", - "setSegmentWidth:", "setSelectable:", "setSelected:forSegment:", "setSelectedAttributes:isMultiple:", - "setSelectedDirectories:", - "setSelectedDirectoryResult:", - "setSelectedDirectoryResults:", + "setSelectedDOMRange:affinity:", "setSelectedFont:isMultiple:", - "setSelectedGroup:", - "setSelectedGroups:", - "setSelectedImage:forControlTint:", + "setSelectedIndexPaths:", "setSelectedItemIdentifier:", - "setSelectedMember:", - "setSelectedMembers:", - "setSelectedObjects:", "setSelectedRange:", "setSelectedRange:affinity:stillSelecting:", - "setSelectedRecord:", - "setSelectedRecords:", + "setSelectedRanges:", + "setSelectedRanges:affinity:stillSelecting:", + "setSelectedScopeLocationNodes:", "setSelectedSegment:", "setSelectedTextAttributes:", "setSelectionByRect:", - "setSelectionFrom:startOffset:to:endOffset:", "setSelectionFrom:to:anchor:highlight:", + "setSelectionFromDroppedNode:selectionHelper:", + "setSelectionFromNone", + "setSelectionFromPasteboard:selectionHelper:", "setSelectionGranularity:", "setSelectionIndex:", + "setSelectionIndexPaths:", "setSelectionIndexes:", + "setSelectionToDragCaret", "setSelector:", "setSelectsAllWhenSettingContent:", "setSelectsInsertedObjects:", - "setSendsActionOnArrowKeys:", "setSendsActionOnEndEditing:", "setSendsWholeSearchString:", - "setSeparatesColumns:", "setSerifFontFamily:", - "setServer:", - "setServersInDefaultsFile:", "setServicesMenu:", "setServicesProvider:", - "setSessionUID:", "setSet:", "setShadowBlurRadius:", + "setShadowColor:", "setShadowOffset:", "setShadowState:", - "setSharedPrintInfo:", - "setSharedScriptSuiteRegistry:", - "setSharedURLCache:", - "setShortVersion:", "setShouldAntialias:", - "setShouldCascadeWindows:", "setShouldCloseDocument:", "setShouldCreateRenderers:", "setShouldCreateUI:", + "setShouldPrintBackgrounds:", "setShouldPrintExceptions:", - "setShouldProcessNamespaces:", - "setShouldReportNamespacePrefixes:", "setShouldResolveExternalEntities:", - "setShouldValidate:", - "setShowFlare:", - "setShowGroupMembership:", "setShowPanels:", "setShownAboveComboBox:", - "setShowsAlpha:", "setShowsBorderOnlyWhileMouseInside:", "setShowsControlCharacters:", "setShowsFirstResponder:", + "setShowsGetInfoButton:", "setShowsHelp:", "setShowsHiddenFiles:", "setShowsInvisibleCharacters:", + "setShowsLogonButton:", "setShowsPreviews:", + "setShowsPrintPanel:", + "setShowsProgressPanel:", "setShowsResizeIndicator:", + "setShowsRollover:", "setShowsStateBy:", - "setSibling1:", - "setSibling2:", "setSimpleCommandsArray:", + "setSimpleQueryString:", + "setSingleTableEntity:", "setSize:", "setSizeLimit:", "setSizeMode:", - "setSizeTitle:", "setSliderType:", "setSmartInsertDeleteEnabled:", "setSortDescriptorPrototype:", @@ -13659,97 +14649,98 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setSound:", "setSource:", "setSpacing:inWindow:delegate:", + "setSpeakingSpeechFeedbackServices:", "setSpeakingString:", "setSpeechChannelWithVoiceCreator:voiceID:", "setSpeechChannelWithVoiceIdentifier:", - "setStandardError:", + "setSpeechFeedbackServicesTimer:", + "setSpeechFinishedSuccessfully:", + "setSpoolPath:", + "setStandalone:", "setStandardFontFamily:", "setStandardInput:", "setStandardOutput:", - "setStandardUserDefaults:", + "setStart::", "setStartSpecifier:", "setStartSubelementIdentifier:", "setStartSubelementIndex:", - "setStartsNewProcessGroup:", "setState:", - "setState:atRow:column:", + "setStateToSelected", + "setStateToUnselected", "setStatusBar:", "setStatusBarVisible:", "setStatusCode:", "setStatusMenu:", "setStatusText:", + "setStoreMetadata:", "setString:", "setString:forType:", - "setStringEncoding:", + "setStringIndex:forIndex:", + "setStringParameterValue:to:", "setStringValue:", + "setStringValue:resolvingEntities:", "setStroke", - "setStyle:", - "setStyleMask:", + "setSubentities:", + "setSubentityColumn:", + "setSubentityID:", "setSubmenu:", "setSubmenu:forItem:", "setSubmenuRepresentedObjectsAreStale", - "setSubrowSelection:", + "setSuperentity:", "setSupermenu:", "setSuppressLayout:", "setSuspended:", - "setSyncCount:", - "setSynchronized:", + "setSynthesizerIsRetained:", "setSystemCharacterProperties:", - "setSystemLanguage:", - "setSystemLanguages:", + "setSystemID:", + "setTXTRecordData:", "setTabKeyTraversesCells:", "setTabStops:", - "setTabViewType:", "setTableColumn:", "setTableView:", "setTag:", - "setTag:atRow:column:", - "setTag:target:action:atRow:column:", + "setTag:forSegment:", "setTailIndent:", "setTakesTitleFromPreviousColumn:", "setTarget:", - "setTarget:atRow:column:", - "setTarget:selector:userInfo:", - "setTaskDictionary:", "setTearOffMenuRepresentation:", - "setTemplate:", - "setTemplateChangedObserver:withSelector:", - "setTemporaryAttributes:forCharacterRange:", + "setTemporaryID:", "setTest:", "setTestedObjectClassDescription:", "setText:", - "setTextAlignment:", - "setTextAttributeWithCode:", + "setTextAlign:", "setTextAttributesForNegativeValues:", + "setTextAttributesForNil:", + "setTextAttributesForNotANumber:", "setTextAttributesForPositiveValues:", + "setTextAttributesForZero:", + "setTextBlocks:", "setTextColor:", - "setTextColor:range:", "setTextColor:whenObjectValueIsUsed:", "setTextContainer:", "setTextContainer:forGlyphRange:", - "setTextContainerInset:", - "setTextFont:", - "setTextProc:", + "setTextDecoration:", + "setTextLists:", + "setTextShadow:", "setTextSizeMultiplier:", "setTextStorage:", "setTextView:", - "setThemeFrameWidgetState:", "setThousandSeparator:", - "setThread:withObject:withSessionUID:", - "setThreadPriority:", "setTickMarkPosition:", - "setTighenThresholdForTruncation:", + "setTighteningFactorForTruncation:", + "setTimeInterval:", "setTimeIntervalSince1970:", - "setTimeLimit:", + "setTimeStyle:", "setTimeZone:", "setTimeoutInterval:", "setTimer", + "setTimestampToNow", "setTitle:", "setTitle:andDefeatWrap:", "setTitle:andMessage:", "setTitle:ofColumn:", - "setTitle:ofItemWithIdentifier:", "setTitleAlignment:", + "setTitleBaseWritingDirection:", "setTitleCell:", "setTitleColor:", "setTitleFont:", @@ -13757,21 +14748,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setTitlePosition:", "setTitleWidth:", "setTitleWithMnemonic:", - "setTitleWithRepresentedFilename:", - "setTitleWithRepresentedObject:", "setTitled:", + "setTokenStyle:", + "setTokenizingCharacterSet:", "setToolTip:", "setToolTip:forCell:", + "setToolTip:forSegment:", "setToolTip:forView:cell:", - "setToolTipForView:rect:displayDelegate:userData:", + "setToolTipForView:rect:displayDelegate:displayInfo:", "setToolTipForView:rect:owner:userData:", - "setToolTipWithOwner:forView:cell:", + "setToolTipString:", "setToolbar:", "setToolbarsVisible:", "setTopLevelObject:", "setTopMargin:", - "setTrackingConstraint:", - "setTrackingConstraintKeyMask:", "setTrackingMode:", "setTrailingOffset:", "setTransformStruct:", @@ -13784,193 +14774,163 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "setTypesetter:", "setTypesetterBehavior:", "setTypingAttributes:", - "setUIController:", - "setUID:", - "setUIDelegate:", + "setTypingStyle:", + "setURI:", "setURL:", + "setURLString:", "setUndoActionName:", "setUndoManager:", "setUniqueID:", "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:", "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:", - "setUnselectedImage:", - "setUpDataSources", - "setUpDataSourcesAndSelection", "setUpFieldEditorAttributes:", "setUpForChallenge:", "setUpGState", "setUpPrintOperationDefaultValues", "setUpSourceForData:", - "setUpTextField:", - "setUpTrackingRects", - "setUseOffsetImageHack:", - "setUseSSL:", - "setUsedSize:", - "setUserFixedPitchFont:", - "setUserFont:", + "setUpdatedObjects:", + "setUseSSLOnly:forKey:", + "setUserColumnResizingAutoresizesWindow:", + "setUserInfo:", "setUserStyleSheetEnabled:", "setUserStyleSheetLocation:", - "setUsesAlternatingRowBackgroundColors:", - "setUsesContinuousChangeNotification:", "setUsesDataSource:", - "setUsesDistinct:", - "setUsesEPSOnResolutionMismatch:", "setUsesFeedbackWindow:", - "setUsesFindPanel:", "setUsesFontLeading:", "setUsesFontPanel:", - "setUsesInactiveTextBackgroundColor:", + "setUsesGroupingSeparator:", "setUsesItemFromMenu:", - "setUsesMultiThreaded:", "setUsesRuler:", "setUsesScreenFonts:", "setUsesThreadedAnimation:", "setUsesUserKeyEquivalents:", - "setUsesVectorMovement:", "setUsingDefaultVoice:", - "setVCardField:isPrivate:", - "setValid:", "setValidateSize:", "setValidatesImmediately:", - "setValidatesImmediately:withBinding:", "setValue:", "setValue:forBinding:atIndex:error:", + "setValue:forBinding:atIndexPath:error:", "setValue:forBinding:error:", "setValue:forHTTPHeaderField:", "setValue:forKey:", "setValue:forKeyPath:", - "setValue:forProperty:", "setValue:forUndefinedKey:", "setValue:inObject:", - "setValueInTemporaryCache:forProperty:", - "setValueSelectionBehavior:", + "setValue:type:forDimension:", "setValueTransformer:", "setValueTransformer:forName:", "setValueTransformerName:", "setValueWraps:", "setValues:forParameter:", "setValuesForKeysWithDictionary:", - "setVariableRows:", "setVersion:", "setVertical:", + "setVerticalAlign:", + "setVerticalAlignment:", "setVerticalLineScroll:", - "setVerticalMotionCanBeginDrag:", "setVerticalPageScroll:", "setVerticalPagination:", - "setVerticalRulerView:", - "setVerticalScroller:", + "setVerticalScrollingMode:", "setVerticallyCentered:", "setVerticallyResizable:", "setView:", + "setViewAnimations:", "setViewKind:", "setViewOfPickerIsLoaded:", "setViewScale:", "setViewSize:", - "setViewZoom:", "setViewsNeedDisplay:", + "setVisibilityPriority:", "setVisible:", - "setVisitCount:", "setVisualFrame:", "setVoice:", "setVolatileDomain:forName:", "setVolume:", - "setWaitCursorEnabled:", - "setWaitOnTake:", "setWantsNotificationForMarkedText:", - "setWantsToBeColor:", + "setWarningValue:", "setWebFrameView:", "setWebView:", + "setWhitespace:", "setWidget:", "setWidth:", + "setWidth:forSegment:", "setWidth:ofColumn:", + "setWidth:type:forLayer:", + "setWidth:type:forLayer:edge:", "setWidthTracksTextView:", "setWillLoadImagesAutomatically:", "setWindingRule:", - "setWindow", "setWindow:", "setWindowContentRect:", "setWindowController:", "setWindowFrame:", "setWindowFrameAutosaveName:", "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", + "setWindowIfNecessary", "setWindowIsResizable:", "setWindowsMenu:", "setWindowsNeedUpdate:", "setWithArray:", "setWithCapacity:", - "setWithObject:", "setWithObjects:", - "setWithObjects:count:", "setWithSet:", - "setWordFieldStringValue:", "setWordWrap:", - "setWords:", "setWorksWhenModal:", "setWraps:", + "setZeroSymbol:", "settings", - "setup", - "setupAsPeoplePicker:", + "setupAttributes", "setupCarbonMenuBar", "setupForNoMenuBar", "setupGuessesBrowser", - "setupImportPanelWithTitle:selector:target:object:", - "setupKeyboardNavigation:", + "setupLoadedNib", "shadeColorWithDistance:towardsColor:", - "shadow", "shadowBlurRadius", "shadowColor", - "shadowDirtyRect", - "shadowImageAroundPath:", "shadowOffset", "shadowState", "shadowWithLevel:", "shapeWindow", + "shapeWithCGSRegion:", + "shapeWithRect:", "sharedAEDescriptorTranslator", "sharedAdapter", - "sharedAddressBook", "sharedAppleEventManager", "sharedApplication", - "sharedBuddyStatus", + "sharedBridge", "sharedCoercionHandler", "sharedColorPanel", "sharedColorPanelExists", "sharedController", "sharedCredentialStorage", - "sharedDBCache", "sharedDocumentController", "sharedDragManager", - "sharedExchangeSetup", + "sharedEditingDelegate", "sharedFactory", + "sharedFileInfoCache", "sharedFocusState", "sharedFontManager", "sharedFontOptions", "sharedFontPanel", "sharedFontPanelExists", "sharedFrameLoadDelegate", - "sharedFrameworksPath", + "sharedGenerator", "sharedGlyphGenerator", - "sharedGlyphGeneratorForTypesetterBehavior:", "sharedHTTPAuthenticator", "sharedHTTPCookieStorage", "sharedHandler", "sharedHeartBeat", "sharedHelpManager", "sharedIconDatabase", - "sharedImagePickerControllerCreate:", "sharedInfoPanel", - "sharedInit", "sharedInstance", "sharedKeyBindingManager", - "sharedLDAPManagerInstance", "sharedMagnifier", "sharedMappings", - "sharedNetworkController", "sharedNetworkSettings", "sharedPolicyDelegate", - "sharedPreferences", "sharedPrintInfo", "sharedRegistry", - "sharedRemoteImageLoader", "sharedResourceLoadDelegate", "sharedScriptExecutionContext", "sharedScriptSuiteRegistry", @@ -13978,14 +14938,15 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "sharedServiceMaster", "sharedSpellChecker", "sharedSpellCheckerExists", - "sharedSupportPath", - "sharedSystemTypesetter", "sharedSystemTypesetterForBehavior:", + "sharedTableOptions", "sharedTextFinder", "sharedTextRulerOptions", "sharedToolTipManager", + "sharedToolTipStringDrawingLayoutManager", "sharedTracer", "sharedTypesetter", + "sharedTypographyPanel", "sharedUIDelegate", "sharedURLCache", "sharedUserDefaultsController", @@ -13993,20 +14954,22 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "sheetDidEnd:returnCode:contextInfo:", "shiftIndexesStartingAtIndex:by:", "shiftModifySelection:", - "shortMonthNames", - "shortName", "shortTimeFormat", "shortValue", "shortVersion", - "shortWeekdayNames", "shouldAllowUserColumnResizing", "shouldAlwaysUpdateDisplayValue", "shouldAntialias", "shouldBeTreatedAsInkEvent:", + "shouldBecomeAETEPropertyDeclaration", + "shouldBeginEditing:", + "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:", + "shouldBreakLineByWordBeforeCharacterAtIndex:", "shouldBufferTextDrawing", "shouldCascadeWindows", "shouldChangePrintInfo:", "shouldChangeTextInRange:replacementString:", + "shouldChangeTextInRanges:replacementStrings:", "shouldCloseDocument", "shouldCloseWindowController:", "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", @@ -14017,75 +14980,73 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "shouldDrawColor", "shouldDrawInsertionPoint", "shouldEdit:inRect:ofView:", - "shouldEditOnSingleClick:inRow:tableColumn:", - "shouldFetchImageForEmail:withCacheDate:", - "shouldHighlightWithoutSelectingCell:atRow:column:", + "shouldEndEditing:", "shouldIgnoreAction:", - "shouldNotImplement:", + "shouldPersist", + "shouldPrintBackgrounds", "shouldPrintExceptions", - "shouldProcessNamespaces", - "shouldReportNamespacePrefixes", - "shouldResolveExternalEntities", + "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:", + "shouldProvideSortDescriptor:optionsAdvertisingOnly:", + "shouldRefresh", "shouldRunSavePanelWithAccessoryView", - "shouldUnmount:", - "shouldValidate", - "showAsCompany:", - "showAsPerson:", + "shouldShowPreviewColumn:", + "shouldSubstituteCustomClass", + "shouldSuppressNotificationFromObject:keyPath:", + "shouldUseEnabledTextColor", + "shouldUseInvalidationForObject:", "showAttachmentCell:atPoint:", "showAttachmentCell:inRect:characterIndex:", "showCMYKView:", - "showCard:", - "showCardAndColumns:", - "showColumns:", - "showContextHelp:", "showContextHelpForObject:locationHint:", "showController:adjustingSize:", "showDeminiaturizedWindow", - "showDirectories:", - "showFlare", + "showFeaturesPanel:", "showGotoWithInitialFilename:", "showGreyScaleView:", - "showGroupMembership", "showGuessPanel:", "showHSBView:", "showHelp:", - "showHelpFile:context:", "showInfoPanel:", - "showLastImport:", - "showModalPreferencesPanel", "showModalPreferencesPanelForOwner:", + "showNode:inDirectory:selectIfEnabled:", "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:", "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:", + "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:", "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:", "showPanel:andNotify:with:", - "showPanels", - "showPeopleButton", - "showPicker", - "showPools", "showPopup", - "showPreferencesPanel", "showPreferencesPanelForOwner:", "showPrimarySelection", "showRGBView:", - "showStatus:", + "showRelativeToView:", + "showRolloverWindow", "showToolbar:", - "showURL:inFrame:", + "showUI", "showValue:inObject:", "showWindow", "showWindow:", "showWindows", "shownValueInObject:", + "shownValueInObject:errorEncountered:error:", "showsAlpha", + "showsBaselineSeparator", "showsBorderOnlyWhileMouseInside", "showsControlCharacters", "showsFirstResponder", + "showsGetInfoButton", "showsHelp", "showsHiddenFiles", "showsInvisibleCharacters", + "showsLogonButton", + "showsOutlineCell", "showsPreviews", "showsResizeIndicator", + "showsRollover", + "showsShadowedText", "showsStateBy", + "showsToolbarButton", "shutAllDrawers:", + "sidebar", "sidebarContainerNodes", "sidebarFavoritesNode", "sidebarView", @@ -14093,25 +15054,25 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "signal", "signature", "signatureWithObjCTypes:", + "signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:", "significantText", "simpleCommandsArray", - "simpleControllerWithUIController:", - "singlestep:", + "simpleQueryString", + "singleLineTypesetter", "size", "sizeCreditsView", + "sizeForDisplayingAttributedString:", "sizeForKey:inTable:", "sizeForMagnification:", - "sizeForPaperName:", "sizeHeightToFit", "sizeLastColumnToFit", "sizeLimit", "sizeMode", - "sizeOfDictionary:", "sizeOfLabel:", + "sizeOfString:", "sizeOfTitlebarButtons", "sizeOfTitlebarButtons:", "sizeOfTitlebarToolbarButton", - "sizeOfTypesetterGlyphInfo", "sizeToCells", "sizeToFit", "sizeToFitAndAdjustWindowHeight", @@ -14120,17 +15081,16 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "sizeWhenSizedToFit", "sizeWidthToFit", "sizeWithAttributes:", + "sizeWithBehavior:usesFontLeading:baselineDelta:", + "sizeWithColumns:rows:", "skipDescendents", - "skipUnimplementedOpcode:", - "sleepForTimeInterval:", "sleepUntilDate:", + "slide:", "slideDraggedImageTo:", "slideImage:from:to:", "sliderType", + "slot", "slotForKey:", - "slowFirstLastSortingNamePart1:part2:", - "slowLastFirstSortingNamePart1:part2:", - "smallIcon", "smallSystemFontSize", "smallestEncoding", "smartDeleteRangeForProposedRange:", @@ -14138,94 +15098,123 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "smartInsertBeforeStringForString:replacingRange:", "smartInsertDeleteEnabled", "smartInsertForString:replacingRange:beforeString:afterString:", - "socket", + "smemapROI:forRect:", + "snapshotForSourceGlobalID:relationshipName:after:", + "snapshots", "socketType", - "sortDescriptorForFileProperty:dataSource:ascending:", "sortDescriptorPrototype", "sortDescriptors", "sortIndicatorRectForBounds:", - "sortKeyForString:range:flags:", - "sortMembers:", - "sortSubviewsUsingFunction:context:", "sortUsingDescriptors:", "sortUsingFunction:context:", - "sortUsingFunction:context:range:", "sortUsingSelector:", - "sortedArrayHint", "sortedArrayUsingDescriptors:", "sortedArrayUsingFunction:context:", "sortedArrayUsingFunction:context:hint:", "sortedArrayUsingSelector:", - "sortedArrayUsingSelector:hint:", + "sortedClassDescriptions:", + "sortsChildrenEfficiently", "sound", + "sound:didFinishPlaying:", "soundNamed:", "soundUnfilteredFileTypes", - "soundUnfilteredPasteboardTypes", "source", + "sourceAttributeName", + "sourceEntity", "sourceFrame", + "sourceKey", + "sourceNode", "spaceForScrollbarAndScrollViewBorder", - "spaceItemIdentifier", "speakString:", "speakingString", - "specified", - "specifierFromPath:", + "specialColorSpaceWithID:", + "specifier", + "specifierTraverseLink:", + "specifierWithPath:", + "specifierWithPath:traverseLink:", "speechChannel", + "speechFeedbackServicesRef", + "speechFeedbackServicesTimer", + "speechFinishedSuccessfully", + "speechRecognizer:didRecognizeCommand:", + "speechSynthesizer:didEncounterError:characterPos:", + "speechSynthesizer:didFinishSpeaking:", + "speechSynthesizer:didSync:", + "speechSynthesizer:willSpeakPhoneme:", + "speechSynthesizer:willSpeakWord:ofString:", "spellCheckerDocumentTag", + "spellServer:checkGrammarInString:language:details:", + "spellServer:didForgetWord:inLanguage:", + "spellServer:didLearnWord:inLanguage:", "spellServer:findMisspelledWordInString:language:wordCount:countOnly:", + "spellServer:suggestCompletionsForPartialWordRange:inString:language:", "spellServer:suggestGuessesForWord:inLanguage:", "spellingPanel", - "spinningArrows", - "splitText:", + "spherePullROI:forRect:", + "splitCell:range:", + "splitCells", "splitView:canCollapseSubview:", "splitView:constrainMaxCoordinate:ofSubviewAt:", + "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:", "splitView:constrainMinCoordinate:ofSubviewAt:", "splitView:constrainSplitPosition:ofSubviewAt:", - "splitView:didMoveDivider:distance:", "splitView:resizeSubviewsWithOldSize:", - "splitView:willMoveDivider:distance:", - "splitViewDidResizeSubviews:", "splitViewDidTrackOrResize:", "splitViewDoubleClick:", "splitViewWillTrackOrResize:", "splitterWithIndex:parent:", + "spoolPath", + "spotlight:", + "spotlightColor", + "spotlightEdgeColor", + "sqlCore", + "sqlStatement", + "sqlString", + "sqlType", + "sqlTypeForExpressionConstantValue:", "srRecognitionSystem", "srRecognizer", - "standardError", + "src", + "stalenessInterval", "standardFontFamily", - "standardInput", - "standardItemWithItemIdentifier:", - "standardOutput", "standardPreferences", "standardUserDefaults", "standardWindowButton:", "standardWindowButton:forStyleMask:", + "standardizedPath", "standardizedURL", "standardizedURLPath", "start", "start:", "startAllPlugins", "startAnimation:", + "startArchiving:", "startAuthentication:window:", "startCoalesceTextDrawing", - "startDirectorySearch", - "startEditingNewPerson:inGroup:", + "startContainer", + "startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:", "startInputStream:closeOnEnd:", - "startListening", "startLoading", - "startLoadingResource:withURL:", - "startLoadingResource:withURL:referrer:forDataSource:", - "startObservingContentObject:", + "startLoadingResource:withRequest:customHeaders:referrer:forDataSource:", + "startLoadingResource:withURL:customHeaders:", + "startLoadingResource:withURL:customHeaders:postData:", + "startLoadingResource:withURL:customHeaders:postData:referrer:forDataSource:", + "startLoadingResource:withURL:customHeaders:referrer:forDataSource:", + "startObservingModelObject:", + "startObservingModelObjectAtReferenceIndex:", + "startObservingModelObjectsAtReferenceIndexes:", + "startObservingNode", + "startObservingPreviewNode:", + "startOffset", "startOriginLoad", "startPeriodicEventsAfterDelay:withPeriod:", - "startProfiling", "startProgressiveLoad", - "startQueryForString:withServers:", + "startQuery", "startRectForSheet:", "startSpeaking:", - "startSpeakingString:", - "startSpeakingString:toURL:", "startSpecifier", - "startSpinning", + "startStreamResponseURL:expectedContentLength:lastModifiedDate:MIMEType:", + "startStreamWithResponse:", "startSubelementIdentifier", "startSubelementIndex", "startTextTimer", @@ -14233,25 +15222,20 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "startTimerForSpeaking", "startTrackingAt:inView:", "startTrackingWithEvent:inView:withDelegate:", - "startWaitCursorTimer", - "started", + "startingColumn", + "startingRow", "stashSize", "state", "stateImageOffset", "stateImageRectForBounds:", "stateImageWidth", + "statementClass", "statistics", "status", "status:", "statusBar", - "statusCString", "statusCode", - "statusForTable:", - "statusItemWithLength:", "statusMenu", - "statusString", - "stepBack:", - "stepForward:", "stepKey:elements:number:state:", "stepTowardsDestinationAtleastAsFarAs:", "stop", @@ -14270,14 +15254,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "stopModal", "stopModalWithCode:", "stopNullEvents", - "stopObservingContentObject:", + "stopObservingModelObjectAtReferenceIndex:", + "stopObservingModelObjectsAtReferenceIndexes:", + "stopObservingNode", + "stopObservingPreviewNode", + "stopObservingRelatedObject:", "stopPeriodicEvents", - "stopProfiling", - "stopSearching", - "stopSendingConversionUpdates", "stopSpeaking", "stopSpeaking:", - "stopSpinning", "stopTextTimer", "stopTimer", "stopTimerForSpeaking", @@ -14285,16 +15269,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "stopTrackingWithEvent:", "stopUpdateInsertionAnimation", "storagePolicy", + "store", "storeCachedResponse:forRequest:", "storeColorPanel:", + "storeCurrentBrowsingNodePath:", + "storeMetadata", "storeMin:andMax:ofObject:", + "storeType", "storedAttributes", "storedValueForKey:", - "stream", - "streamError", - "streamStatus", + "stores", + "stream:handleEvent:", + "strengthMenuItemTitles", "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", "string", + "string:", "stringArrayForKey:", "stringByAbbreviatingWithTildeInPath", "stringByAddingPercentEscapes", @@ -14303,35 +15292,31 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "stringByAppendingPathComponent:", "stringByAppendingPathExtension:", "stringByAppendingString:", - "stringByConvertingPathToURL", - "stringByConvertingURLToPath", "stringByDeletingLastPathComponent", "stringByDeletingPathExtension", "stringByEvaluatingJavaScriptFromString:", "stringByExpandingTildeInPath", "stringByPaddingToLength:withString:startingAtIndex:", - "stringByRemovingPercentEscapes", "stringByReplacingPercentEscapesUsingEncoding:", "stringByResolvingSymlinksInPath", "stringByStandardizingPath", "stringByTrimmingCharactersInSet:", - "stringDrawingTextStorage", - "stringEncoding", - "stringForDPSError:", - "stringForIndexing", + "stringForEditing", "stringForKey:", "stringForKey:inTable:", "stringForObjectValue:", "stringForRange:", - "stringForStatus:", "stringForStringListID:andIndex:", "stringForType:", + "stringFromDate:", "stringListForKey:inTable:", "stringMarkingUpcaseTransitionsWithDelimiter2:", + "stringParameterValue:", "stringValue", - "stringValueOfProperty:", - "stringValuesOfProperty:", + "stringValueForObject:", + "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:", "stringWithCString:", + "stringWithCString:encoding:", "stringWithCString:length:", "stringWithCapacity:", "stringWithCharacters:length:", @@ -14341,63 +15326,63 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "stringWithData:textEncodingName:", "stringWithFileSystemRepresentation:length:", "stringWithFormat:", - "stringWithFormat:locale:", "stringWithSavedFrame", "stringWithString:", "stringWithUTF8String:", "stringWithoutAmpersand", "stringsByAppendingPathComponent:", "stringsByAppendingPaths:", - "stringsFromRows:", - "stringsFromRows:expanding:", - "stringsFromSelection", - "stringsFromSelectionExpanding:", + "stripDiacriticsFromString:", "stroke", "strokeLineFromPoint:toPoint:", "strokeRect:", "style", "styleMask", - "subRowIndexAtPoint:", + "styleSheetForPrinting", + "subNodeAtIndex:", + "subNodes", "subarrayWithRange:", - "subclassResponsibility:", "subdataWithRange:", "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:", - "subgroups", + "subentities", + "subentitiesByName", + "subentityColumn", + "subentityID", + "subentityKey", + "subentityMaxID", + "subexpression", + "subframeArchives", "submenu", + "submenuAction:", "submenuRepresentedObjects", "submenuRepresentedObjectsAreStale", "submitButtonDefaultLabel", - "subpathsAtPath:", - "subrowObjectsAtIndex:", - "subrowObjectsForPerson:", - "subrows", + "subpredicate", + "subpredicates", + "subresourceForURL:", + "subresources", "subscript:", "subscriptRange:", - "subsetMappingForSourceDictionaryInitializer:", - "subsetMappingForSourceDictionaryInitializer:sourceKeys:destinationKeys:", - "substituteFontForCharacters:length:families:", "substituteFontForFont:", - "substituteFontForString:families:", "substituteGlyphsInRange:withGlyphs:", - "substringData::", + "substitutedValueForPredicate:", "substringFromIndex:", "substringToIndex:", "substringWithRange:", + "subtractRect:", "subtractRegion:", "subtype", - "subviewFrameAtIndex:", "subviews", - "suffixFieldPresent", - "suggestedFileExtensionForMIMEType:", "suggestedFilename", - "suiteDescription", - "suiteForAppleEventCode:", + "suiteDescriptionFromPropertyListDeclaration:bundle:", + "suiteDescriptions", "suiteName", - "suiteNameArray", - "suiteNames", + "suiteRegistry", + "sum:", "superClass", "superclass", "superclassDescription", + "superentity", "supermenu", "superscript:", "superscriptRange:", @@ -14405,42 +15390,38 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "superviewFrameChanged:", "supportedImageMIMETypes", "supportedMIMETypes", - "supportedWindowDepths", "supportsCommand:", "supportsMode:", - "supportsReverseTransformation", + "supportsMutableFBENode", "supportsSortingByFileProperties", + "supportsTableEditing", "supportsTextEncoding", - "suppressCapitalizedKeyWarning", + "suppressAllNotificationsFromObject:", + "suppressSpecificNotificationFromObject:keyPath:", "surfaceID", "suspend", - "suspendCount", "suspendCurrentAppleEvent", "suspendExecution", "suspended", - "swapFirstLastName:", - "swapWithMark:", + "swapGlyph:withIndex:", "swatchWidth", "switchCell", "switchImage:", - "switchLayoutTo:withAnimation:", - "switchList:", - "switchPanes:", "switchToListNamed:", + "symbol", "symbolCharacterSet", "symbolicLinkDestination", + "symbolicTraits", "sync", - "syncCount", + "syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:", "syncToView:", "syncToViewUnconditionally", "syncWithRemoteToolbars", - "synchSelectedRows", "synchronize", - "synchronizeFile", "synchronizeTableViewSelectionWithText:", "synchronizeTitleAndSelectedItem", "synchronizeWindowTitleWithDocumentName", - "synonymTerminologyDictionary:", + "synthesizerIsRetained", "systemCharacterProperties", "systemColorsDidChange:", "systemDefaultPortNameServer", @@ -14448,12 +15429,10 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "systemFontSize", "systemFontSizeForControlSize:", "systemID", - "systemId", "systemLanguage", "systemLanguageContext", - "systemStatusBar", + "systemLocale", "systemTabletID", - "systemTimeZone", "systemVersion", "tabKeyTraversesCells", "tabState", @@ -14461,110 +15440,131 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "tabStops", "tabView", "tabView:didSelectTabViewItem:", + "tabView:shouldSelectTabViewItem:", + "tabView:willSelectTabViewItem:", "tabViewAdded", + "tabViewDidChangeNumberOfTabViewItems:", "tabViewItemAtIndex:", "tabViewItemAtPoint:", "tabViewItems", "tabViewRemoved", "tabViewType", + "table", "tableAction:", - "tableColumn", + "tableColumn:didChangeToWidth:", + "tableColumn:willDisplayCell:row:", "tableColumnWithIdentifier:", "tableColumns", - "tableContentChanged:", + "tableName", + "tableOptionsPanel:", + "tableParameters", "tableRow:ofTableView:", "tableView", "tableView:acceptDrop:row:dropOperation:", - "tableView:defaultSubRowForRow:", - "tableView:heightForRow:", + "tableView:didChangeToSelectedRowIndexes:", + "tableView:didChangeToSortDescriptors:", + "tableView:didClickTableColumn:", + "tableView:didDragTableColumn:", + "tableView:heightOfRow:", + "tableView:mouseDownInHeaderOfTableColumn:", + "tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:", "tableView:objectValueForTableColumn:row:", + "tableView:objectValueForTableColumn:row:localized:", "tableView:setObjectValue:forTableColumn:row:", "tableView:shouldEditTableColumn:row:", "tableView:shouldSelectRow:", + "tableView:shouldSelectTableColumn:", "tableView:sortDescriptorsDidChange:", + "tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:", + "tableView:updateVisibleRowInformation:", "tableView:validateDrop:proposedRow:proposedDropOperation:", "tableView:willDisplayCell:forTableColumn:row:", "tableView:writeRows:toPasteboard:", + "tableView:writeRowsWithIndexes:toPasteboard:", "tableViewAction:", - "tableViewSelectionDidChange:", "tableViewSelectionIsChanging:", "tabletEvent", "tabletID", + "tabletPoint:", + "tabletProximity:", + "tabsToLinks", "tag", - "tagList", + "tagForSegment:", "tagName", "tailIndent", "take", "takeColorFrom:", - "takeDoubleValueFrom:", + "takeColorSpaceFrom:", "takeFindStringFromSelection:", "takeFindStringFromView:", - "takeFloatValueFrom:", - "takeIntValueFrom:", - "takeObjectValueFrom:", - "takeSelectedTabViewItemFromSender:", "takeStoredValue:forKey:", "takeStoredValuesFromDictionary:", - "takeStringURLFrom:", - "takeStringValueFrom:", "takeValue:forKey:", "takeValue:forKeyPath:", "takeValuesFromDictionary:", - "takesTitleFromPreviousColumn", "tangentialPressure", "target", - "targetClass", + "targetAndArgumentsAcceptable", + "targetAndArgumentsAcceptableAtIndex:", + "targetAndArgumentsAcceptableAtIndexPath:", + "targetAndArgumentsAcceptableForPerformAction", + "targetAnimationRect", "targetForAction:", "targetForAction:to:from:", - "targetItem", "targetOrigin", "targetWithQObject:member:", "targetWithQTimer:", - "taskDictionary", - "tearDown", "tearOffMenuRepresentation", - "tearOffTitlebarHighlightColor", - "tearOffTitlebarShadowColor", "tellQuickTimeToChill", - "template", - "templateChanged", "temporaryAttributesAtCharacterIndex:effectiveRange:", + "temporaryID", + "temporaryObjectIDWithEntity:", "terminate", "terminate:", "terminateForClient:", - "terminateTask", - "terminationReason", - "terminationStatus", "test", "testPart:", - "testStructArrayAtIndex:", + "testSelector", "testedObjectClassDescription", "text", + "textAttachment", "textAttributes", + "textAttributesForNegativeInfinity", "textAttributesForNegativeValues", + "textAttributesForNil", + "textAttributesForNotANumber", + "textAttributesForPositiveInfinity", "textAttributesForPositiveValues", + "textAttributesForZero", + "textAttributesRegular", + "textAttributesWhiteText", "textBackgroundColor", + "textBlocks", + "textChanged", "textColor", "textColorAtIndex:", + "textColorAtIndexPath:", + "textColorForButtonState:", + "textColorInvalidationCapableObjectForObject:", "textColorWhenObjectValueIsUsed:", "textContainer", "textContainerChangedGeometry:", "textContainerChangedTextView:", "textContainerForAttributedString:", + "textContainerForAttributedString:containerSize:lineFragmentPadding:", "textContainerForGlyphAtIndex:effectiveRange:", + "textContainerForGlyphAtIndexWithoutAdditionalLayout:", "textContainerInset", "textContainerOrigin", "textContainers", - "textDidBeginEditing:", "textDidChange:", "textDidEndEditing:", "textEncoding", "textEncodingName", - "textFileTypes", - "textImpl", + "textLists", "textObjectToSearchIn", "textPasteboardTypes", - "textProc", + "textShadowForButtonState:", "textShouldBeginEditing:", "textShouldEndEditing:", "textSizeMultiplier", @@ -14572,36 +15572,57 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "textStorage:edited:range:changeInLength:invalidatedRange:", "textTabForGlyphLocation:writingDirection:maxLocation:", "textTimerFired:", + "textTransform", + "textUnderElement", "textUnfilteredFileTypes", "textUnfilteredPasteboardTypes", "textView", + "textView:clickedOnCell:inRect:", + "textView:clickedOnCell:inRect:atIndex:", "textView:clickedOnLink:", "textView:clickedOnLink:atIndex:", + "textView:completions:forPartialWordRange:", "textView:completions:forPartialWordRange:indexOfSelectedItem:", + "textView:didHandleEvent:", "textView:doCommandBySelector:", + "textView:doubleClickedOnCell:inRect:", + "textView:doubleClickedOnCell:inRect:atIndex:", + "textView:draggedCell:inRect:event:", + "textView:draggedCell:inRect:event:atIndex:", "textView:shouldChangeTextInRange:replacementString:", - "textView:shouldSetForegroundColor:", + "textView:shouldChangeTextInRanges:replacementStrings:", + "textView:shouldChangeTypingAttributes:toAttributes:", + "textView:shouldDrawInsertionPointInRect:color:turnedOn:", + "textView:shouldHandleEvent:", + "textView:shouldSetColor:", "textView:willChangeSelectionFromCharacterRange:toCharacterRange:", + "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:", + "textView:willDisplayToolTip:forCharacterAtIndex:", + "textView:writablePasteboardTypesForCell:atIndex:", + "textView:writeCell:atIndex:toPasteboard:type:", + "textViewDidChangeSelection:", "textViewForBeginningOfSelection", "textWithHardLineBreaks", - "textWithImpl:", + "textWithStringValue:", + "textureIsDestination:name:userInfo:", + "textureROI:forRect:", "thickness", "thicknessRequiredInRuler", - "thisIsACompany:", - "thisIsMe:", "thousandSeparator", - "thousandsSeparator", "threadDictionary", - "threadPriority", - "threadedSave", "tickMarkPosition", + "tickMarkValueAtIndex", "tickMarkValueAtIndex:", - "tighenThresholdForTruncation", "tightenKerning:", + "tightenThresholdForTruncation", + "tighteningFactorForTruncation", "tile", "tileAndSetWindowShape:", + "tileForView:", "tileIfNecessary", - "tileInRect:fromPoint:", + "tileInRect:fromPoint:context:", + "tileVertically", + "tilt", "tiltX", "tiltY", "timeInterval", @@ -14609,324 +15630,325 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "timeIntervalSinceDate:", "timeIntervalSinceNow", "timeIntervalSinceReferenceDate", - "timeLimit", "timeZone", - "timeZoneDetail", "timeZoneForSecondsFromGMT:", "timeZoneWithAbbreviation:", "timeZoneWithName:", - "timeZoneWithName:data:", "timeoutInterval", "timer:", "timerFired", "timerFired:", - "timerWithFireDate:target:selector:userInfo:", - "timerWithTimeInterval:invocation:repeats:", "timerWithTimeInterval:target:selector:userInfo:repeats:", - "timersForMode:", "timestamp", + "timestampForKey:", "title", - "titleAlignment", "titleBarFontOfSize:", "titleButtonOfClass:", "titleCell", "titleColor", - "titleFieldPresent", "titleFont", "titleForIdentifier:", "titleFrameOfColumn:", "titleHeight", - "titleOfColumn:", "titleOfSelectedItem", "titlePosition", "titleRect", "titleRectForBounds:", "titleWidth", "titleWidth:", - "titleWithSelection:", "titlebarRect", - "titlesFromPasteboard:", - "tmpNameFromPath:", "tmpNameFromPath:extension:", "toManyRelationshipKeys", + "toOneRelationship", "toOneRelationshipKeys", - "toggle:", "toggleBaseWritingDirection:", + "toggleContinuousGrammarChecking:", "toggleContinuousSpellChecking:", "toggleExpanded:", "toggleIsExpanded:", + "toggleKeepVisibleToolbarItem:", "togglePlatformInputSystem:", "togglePreview:", "toggleRuler:", - "toggleShown:", + "toggleSmartInsertDelete:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "toggleUsingSmallToolbarIcons:", - "tokenAtCursor", - "tokenName:", - "tokenSetForLength:", + "tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:", + "tokenField:displayStringForRepresentedObject:", + "tokenField:editingStringForRepresentedObject:", + "tokenField:hasMenuForRepresentedObject:", + "tokenField:menuForRepresentedObject:", + "tokenField:readFromPasteboard:", + "tokenField:representedObjectForEditingString:", + "tokenField:shouldAddObjects:atIndex:", + "tokenField:styleForRepresentedObject:", + "tokenField:tooltipStringForRepresentedObject:", + "tokenField:writeRepresentedObjects:toPasteboard:", + "tokenFieldCell", + "tokenFieldCell:completionsForSubstring:indexOfToken:indexOfSelectedItem:", + "tokenFieldCell:displayStringForRepresentedObject:", + "tokenFieldCell:hasMenuForRepresentedObject:", + "tokenFieldCell:menuForRepresentedObject:", + "tokenFieldCell:readFromPasteboard:", + "tokenFieldCell:representedObjectForEditingString:", + "tokenFieldCell:shouldAddObjects:atIndex:", + "tokenFieldCell:styleForRepresentedObject:", + "tokenFieldCell:tooltipStringForRepresentedObject:", + "tokenFieldCell:writeRepresentedObjects:toPasteboard:", + "tokenStyle", + "tokenizerProcessedData", + "tokenizingCharacterSet", "toolTip", "toolTipColor", "toolTipForCell:", + "toolTipForSegment:", "toolTipForView:cell:", + "toolTipManagerWillRecomputeToolTipsByRemoving:adding:", + "toolTipString", "toolTipTextColor", "toolTipsFontOfSize:", "toolbar", + "toolbar:didRemoveItem:", "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", + "toolbar:itemForItemIdentifier:willInsertIntoToolbar:", + "toolbar:newItemForItemIdentifier:", + "toolbar:willAddItem:", "toolbarAllowedItemIdentifiers:", "toolbarBackgroundColor", "toolbarButton", "toolbarDefaultItemIdentifiers:", "toolbarInstancesWithIdentifier:", "toolbarItemClicked:", + "toolbarLabelFontOfSize:", + "toolbarLabelFontSizeForToolbarSize:", "toolbarSelectableItemIdentifiers:", - "top", - "topAutoreleasePoolCount", "topLevelNode", "topLevelObject", "topLevelObjectClassDescription", "topMargin", "topUndoObject", - "totalAutoreleasedObjects", - "totalCount", + "totalNumberOfItemViewersAndSeparators", "touch", - "touchCachedImageForEmail:", "trace", - "traceWithFlavor:priority:format:", "traceWithFlavor:priority:format:arguments:", - "trackKeyEvent:inView:", "trackKnob:", "trackMagnifierForPanel:", "trackMarker:withMouseEvent:", "trackMouse:adding:", "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:", "trackMouse:inRect:ofView:untilMouseUp:", - "trackMouse:inRect:ofView:untilMouseUp:inColumn:", - "trackMouseEvent:inView:", + "trackMouseForPopupMenuFormRepresentation:", "trackPagingArea:", - "trackRect", "trackScrollButtons:", "trackWithEvent:", "trackWithEvent:inView:withDelegate:", - "trackingConstraint", - "trackingConstraintKeyMask", "trackingMode", "trackingNumber", "trailingOffset", "traitsOfFont:", - "transactionID", - "transferMode", + "transactionDidBegin", + "transactionDidCommit", + "transactionDidRollback", "transform", "transform:", - "transformBezierPath:", + "transformBy:interior:", "transformPoint:", "transformRect:", - "transformSize:", "transformStruct", "transformUsingAffineTransform:", + "transformedImage:", "transformedValue:", "transformedValueClass", "translateOriginToPoint:", "translateTo::", "translateXBy:yBy:", "transparentBackground", - "transpose:", + "treatNilValuesLikeEmptyCollections", "treatsDirectoryAliasesAsDirectories", "treatsFilePackagesAsDirectories", - "triggerSearch", - "trimVolumeName:", - "truncateFileAtOffset:", + "tryDHTMLCopy", + "tryDHTMLCut", + "tryDHTMLPaste", "tryLock", - "tryLockForReading", - "tryLockForWriting", - "tryLockWhenCondition:", "tryNewColorListNameSheetDidEnd:returnCode:context:", + "tryNextChallengeForWindow:", "tryToPerform:with:", - "turnOffEditMode", + "turnObject:intoFaultWithContext:", "turnOffKerning:", "turnOffLigatures:", "type", - "typeAhead:", "typeCodeValue", - "typeForArgumentWithName:", + "typeDescription", + "typeDescriptions", + "typeForContentsOfURL:error:", "typeForKey:", + "typeForParameter:", "typeFromFileExtension:", - "typeOfProperty:", - "typeOfProperty:forTable:", + "typeSelectNodeInTypeSelectDirectoryWithKeyDownEvent:recursively:", + "typeStringForColumn:", "typeToUnixName:", + "typefaceInfoForFontDescriptor:", + "typefaceInfoForKnownFontDescriptor:", + "typefaceInfoForPostscriptName:", "types", "typesFilterableTo:", "typesetter", "typesetterBehavior", + "typesetterLaidOneGlyph:", "typingAttributes", - "uiController", - "unSelectedImageBackgroundPiece", + "typingStyle", "unableToSetNilForKey:", - "unadjustedFrameDuration", "unarchiveObjectWithData:", "unarchiveObjectWithFile:", - "unassociatePopup:", + "unarchiver:cannotDecodeObjectOfClassName:originalClasses:", + "unarchiver:didDecodeObject:", + "unarchiver:willReplaceObject:withObject:", + "unarchiverDidFinish:", + "unarchiverWillFinish:", "unbind:", "unbindNSView:", - "unchainContext", + "undefined", "underline:", "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", - "underlinePosition", "underlineThickness", "undo", "undo:", "undoActionName", "undoEdit", - "undoHack:", - "undoIt", + "undoEditing:", "undoManager", + "undoManagerForTextView:", + "undoManagerForWebView:", + "undoManagerForWindow:", "undoMenuItemTitle", "undoMenuTitleForUndoActionName:", "undoNestedGroup", "undoRedo:", - "undoer", "unfocusView:", "unfocusWindow", "unhide", "unhide:", "unhideAllApplications:", - "unhideApplication", "unhideWithoutActivation", "unionSet:", + "unionWith:", + "unionWithRect:", "uniqueID", - "uniqueId", "uniqueKey:", + "uniqueNameWithBase:", + "uniqueNodeForIndexes:count:indexPath:", "uniqueSpellDocumentTag", "unixToTypeName:", "unload", "unloadNib:", "unloadWithoutShutdown", "unlock", + "unlockDocument", "unlockFocus", "unlockFocusInRect:", + "unlockObjectStore", + "unlockParentStore", "unlockTopMostReader", "unlockWithCondition:", "unmarkText", - "unmountAndEjectDeviceAtPath:", - "unmounted:", - "unregisterClass:", + "unpackROI:forRect:", + "unreachableURL", "unregisterDragTypesForWindow:", "unregisterDraggedTypes", - "unregisterImageRepClass:", - "unregisterModel:", + "unregisterForEnclosingClipViewNotifications", + "unregisterForPropertyChangedNotifications", + "unregisterForWindowNotifications", "unregisterObjectWithServicePath:", - "unregisterServiceProviderNamed:", "unscript:", "unscriptRange:", - "unselectedImage", "unsignedCharValue", "unsignedIntValue", "unsignedLongLongValue", "unsignedLongValue", "unsignedShortValue", "unsupportedTextMIMETypes", - "upToDateImageForEmail:", + "unsuppressAllNotificationsFromObject:", + "unsuppressSpecificNotificationFromObject:keyPath:", + "untrashedLeafFileLocationComponentWithLocator:", + "unvalidatedPath", + "unvalidatedSpecifier", "update", - "updateAppleMenu:", - "updateArrowState", - "updateAttachmentsFromPath:", - "updateCard:withImportedCard:", + "updateAndSetWindow", + "updateCacheForStreamDisposal", "updateCell:", "updateCellInside:", "updateCellOrControl:forMaxValue:", "updateCellOrControl:forMinValue:", "updateChangeCount:", "updateColorOptionsUI", - "updateColumns", - "updateCountLabel", + "updateConnectionForResponse:", "updateCurGlyphOffset", - "updateDragProgress", - "updateDragRectWithProgress:", + "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:", "updateDragTypeRegistration", - "updateEditButton:", + "updateDynamicServices:", "updateFavoritesFromDefaults", "updateFavoritesUI", - "updateFlare", - "updateFlareWindow", + "updateFocusDisplay", "updateFontPanel", - "updateForChangeInBinderController:", - "updateForChangeInBinderController:dataChangedWithKeys:atIndexes:selectionChangedToIndexes:", - "updateForChangeInBinderController:dataChangedWithKeys:atIndexes:selectionIndexesUnchanged:", - "updateForChangeInBinderController:selectionChangedToIndexes:", - "updateForChangeInBinderController:selectionIndexes:", - "updateForDirectKeyValueCodingCallStateChange:", "updateFrameColors:", "updateFromPath:", "updateFromPrintInfo", - "updateGlyphEntryForCharacter:glyphID:font:", - "updateGroupMembership", - "updateGroupsSelection:", "updateHeartBeatState", - "updateInDock", - "updateIndex", - "updateIndex:", - "updateInfo:parent:rootObject:resolve:", "updateInputContexts", "updateInsertionPointStateAndRestartTimer:", + "updateInvalidatedFont:forObject:", + "updateInvalidatedObjectValue:forObject:", + "updateInvalidatedTextColor:forObject:", "updateLabel", "updateLineSpacingUI", - "updateLockFileTimeStamp", - "updateMarkers", - "updateMembersSelection:", - "updateMultiValue:forProperty:changes:", - "updateNameMap", "updateNib", - "updateNote:changes:", - "updateNotifications", - "updateObject:", - "updateObject:resolve:", - "updateOnlineStatus", "updateOptions:", "updateOptionsUI", "updateOptionsWithApplicationIcon:", "updateOptionsWithApplicationName:", "updateOptionsWithCopyright:", "updateOptionsWithCredits:", - "updateOptionsWithProjectVersion:", + "updateOptionsWithMarketingVersion:", "updateOptionsWithVersion:", - "updatePersonPicture", - "updatePlusMinus:", + "updateOutlineColumnDataCell:forDisplayAtIndexPath:", + "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:", "updatePoofAnimation", + "updateQueryNode:", + "updateReferenceIndexesToReflectInsertionAtIndex:", + "updateReferenceIndexesToReflectInsertionAtIndexes:", + "updateReferenceIndexesToReflectRemovalAtIndex:", + "updateReferenceIndexesToReflectRemovalAtIndexes:", + "updateRoot", + "updateRow:", "updateRuler", "updateScroller", "updateScrollers", - "updateSecureFieldFrame", - "updateSingleValue:forProperty:changes:", + "updateSearchFieldWithPredicate:", "updateSpellingPanelWithMisspelledWord:", "updateSubmenu:", "updateSwatch", "updateTableColumnDataCell:forDisplayAtIndex:", - "updateTextBackgroundColor", + "updateTextAttributes:", + "updateTextColor", "updateUI", - "updateWidth", - "updateWidth:", "updateWindows", "updateWindowsItem:", "updateWithFocusRing", - "updatedPeople", - "upload", + "updateWithFocusRingForWindowKeyChange", + "updatedObjects", "uppercaseLetterCharacterSet", "uppercaseString", - "uppercaseWord:", "url", - "urlForEmail:", - "urlPathRelativeToPath:", - "usableParts", "usage", "use", "useAllLigatures:", "useCredential:forAuthenticationChallenge:", "useDisabledEffectForState:", - "useFont:", "useHighlightEffectForState:", + "useMap", "useOptimizedDrawing:", - "useSSL", - "useSSL:", + "useSSLOnlyForKey:", "useStandardKerning:", "useStandardLigatures:", "useStoredAccessor", @@ -14935,66 +15957,59 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "user", "userAgent", "userAgentForURL:", + "userColumnResizingAutoresizesWindow", "userData", - "userDefaultsChanged", "userFixedPitchFontOfSize:", "userFontOfSize:", - "userFullName", - "userHomeDirectory", + "userHomeNode", "userInfo", "userKeyEquivalent", "userKeyEquivalentModifierMask", - "userName", - "userServer", - "userServer:", + "userSpaceScaleFactor", "userStyleSheetEnabled", "userStyleSheetLocation", "usesAlternatingRowBackgroundColors", "usesButtons", - "usesContinuousChangeNotification", "usesDataSource", - "usesDistinct", "usesEPSOnResolutionMismatch", "usesFeedbackWindow", "usesFindPanel", "usesFontLeading", "usesFontPanel", - "usesInactiveTextBackgroundColor", + "usesGroupingSeparator", "usesItemFromMenu", - "usesMultiThreaded", + "usesMenuFormRepresentationInDisplayMode:", "usesRuler", "usesScreenFonts", - "usesThreadedAnimation", + "usesUnnamedArguments", "usesUserKeyEquivalents", - "usesVectorMovement", - "usingActiveDirectory", "usingDefaultVoice", - "vCardControllerWithUIController:", - "vCardForRows:", - "vCardRepresentation", - "vCardRepresentationOfRecords:", "validAttributesForMarkedText", + "validModesForFontPanel:", "validRequestorForSendType:returnType:", "validRows", "validStartCharacter:", "validate", - "validateAction:", + "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:", "validateEditing", "validateFindPanelAction:forClient:", + "validateForDelete:", + "validateForInsert:", + "validateForUpdate:", + "validateItem:", "validateMenuItem:", "validateObjectValue:", - "validatePath:ignore:", "validateRename", "validateTakeValue:forKeyPath:", + "validateToolbarItem:", "validateUserInterfaceItem:", "validateValue:forKey:", "validateValue:forKey:error:", "validateValue:forKeyPath:error:", - "validateVisibleColumns", "validateVisibleItems", "validatesImmediately", - "validatesImmediatelyWithBinding:", - "validationExceptionWithFormat:", + "validationPredicates", + "validationWarnings", "value", "value:withObjCType:", "valueAtIndex:", @@ -15002,26 +16017,28 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "valueClass:", "valueClass:forBinding:", "valueClassForBinding:", + "valueForAttribute:", "valueForBinding:atIndex:resolveMarkersToPlaceholders:", + "valueForBinding:atIndexPath:resolveMarkersToPlaceholders:", "valueForBinding:resolveMarkersToPlaceholders:", + "valueForDimension:", "valueForHTTPHeaderField:", "valueForKey:", + "valueForKey:keys:values:", + "valueForKey:withInputs:", "valueForKeyPath:", + "valueForOptionalAttributeKey:", "valueForProperty:", + "valueForRequiredAttributeKey:", "valueForUndefinedKey:", - "valueInAttributeRunsAtIndex:", - "valueInCharactersAtIndex:", - "valueInOrderedWindowsWithUniqueID:", - "valueInParagraphsAtIndex:", - "valueInTemporaryCacheForProperty:", - "valueInWordsAtIndex:", - "valueOfProperty:", - "valueSelectionBehavior", + "valueOfAttribute:forResultAtIndex:", "valueTransformer", "valueTransformerForBinding:", "valueTransformerForName:", "valueTransformerName", "valueTransformerNames", + "valueTypeDescriptionFromName:declaration:", + "valueTypeForDimension:", "valueWithBytes:objCType:", "valueWithName:inPropertyWithKey:", "valueWithNonretainedObject:", @@ -15033,82 +16050,87 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "valueWithUniqueID:inPropertyWithKey:", "valueWraps", "values", - "valuesForKey:", + "values:forResolutions:withCount:fromArrayOrNumber:", "valuesForKeys:", - "variableRows", - "vcardFieldisPrivate:", + "variable", + "variableExpression", + "variant", + "vectorWithString:", + "vectorWithValues:count:", + "vectorWithX:", + "vectorWithX:Y:", + "vectorWithX:Y:Z:", + "vectorWithX:Y:Z:W:", "vendor1", "vendor2", "vendor3", + "vendorDefined", "vendorID", "vendorPointerType", - "verifiedDirRef", - "verifyDataType:forKey:", + "vendorPointingDeviceType", "verifyWithDelegate:", "version", "versionForClassName:", "versionForClassNamed:", - "versionNumber", "versionString", + "verticalAlignment", "verticalLineScroll", - "verticalMotionCanBeginDrag", "verticalPageScroll", "verticalPagination", "verticalRulerView", "verticalScroller", + "verticalScrollingMode", "view", - "view:displayToolTipInWindowContentView:userData:", - "view:frameForToolTip:point:userData:", + "view:customToolTip:drawInView:displayInfo:", + "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:", + "view:customToolTip:frameForToolTipWithDisplayInfo:", "view:stringForToolTip:point:userData:", "viewBoundsChanged:", - "viewCount", "viewDidEndLiveResize", + "viewDidLiveResizeFromRect:", "viewDidMoveToHostWindow", "viewDidMoveToSuperview", "viewDidMoveToWindow", "viewFactory", "viewForCharacterIndex:layoutManager:", - "viewForJavaAppletWithFrame:attributes:baseURLString:", + "viewForJavaAppletWithFrame:attributeNames:attributeValues:baseURL:", "viewForObject:", - "viewForPluginWithURLString:attributes:baseURLString:MIMEType:", + "viewForPluginWithURL:attributeNames:attributeValues:MIMEType:", "viewForPreferenceNamed:", "viewFrameChanged:", "viewHasMoved:", - "viewHasToolTips:", "viewSize", "viewSizeChanged:", - "viewToolTipCanFadeOutDueToInactivity:", + "viewWillDealloc", "viewWillMoveToHostWindow:", "viewWillMoveToSuperview:", "viewWillMoveToWindow:", + "viewWillResetCursorRects", "viewWillStartLiveResize", "viewWithFrame:forView:characterIndex:layoutManager:", "viewWithTag:", - "viewsNeedDisplay", + "visibilityPriority", "visibleFrame", "visibleItems", "visibleRect", - "visitCount", + "visibleSelectionRect", + "visitPredicate:", + "visitPredicateExpression:", + "visitPredicateOperator:", + "visitor", "visualFrame", - "voice", + "visualRootNode", "voiceIdentifierForVoiceCreator:voiceID:", "volatileDomainForName:", - "volatileDomainNames", - "volume", "wait", - "waitForDataInBackgroundAndNotify", "waitForDataInBackgroundAndNotifyForModes:", - "waitForThreadsToFinish", "waitInterval:", - "waitOnTake", - "waitTillConversionIsDone", - "waitUntilDate:", - "waitUntilExit", + "wakeup:", "wantsDefaultClipping", "wantsDoubleBuffering", "wantsNotificationForMarkedText", + "wantsPeriodicDraggingUpdates", "wantsScrollWheelEvent:", - "wantsToBeColor", "wantsToDelayTextChangeNotifications", "wantsToDrawIconInDisplayMode:", "wantsToDrawIconIntoLabelAreaInDisplayMode:", @@ -15116,13 +16138,35 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "wantsToHandleMouseEvents", "wantsToInterpretAllKeystrokes", "wantsToTrackMouse", - "wantsToTrackMouseForEvent:", + "wantsToTrackMouseForEvent:inRect:ofView:", "wantsToTrackMouseForEvent:inRect:ofView:atCharacterIndex:", + "warningValue", + "wasFirstResponderAtMouseDownTime:", + "wavePattern", + "webArchive", + "webArchiveData", + "webFallbackFontFamily", "webFrame", + "webFrame:didFinishLoadWithError:", + "webFrame:didFinishLoadWithReason:", "webFrameView", + "webPlugInCallJava:method:returnType:arguments:", + "webPlugInContainerLoadRequest:inFrame:", + "webPlugInContainerSelectionColor", + "webPlugInContainerShowStatus:", + "webPlugInDestroy", + "webPlugInGetApplet", + "webPlugInInitialize", + "webPlugInSetIsSelected:", + "webPlugInStart", + "webPlugInStop", + "webScriptNameForKey:", + "webScriptNameForSelector:", "webView", + "webView:addMessageToConsole:", "webView:contextMenuItemsForElement:defaultMenuItems:", "webView:createWebViewWithRequest:", + "webView:dashboardRegionsChanged:", "webView:decidePolicyForMIMEType:request:frame:decisionListener:", "webView:decidePolicyForNavigationAction:request:frame:decisionListener:", "webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:", @@ -15132,14 +16176,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "webView:didFailLoadWithError:forFrame:", "webView:didFailProvisionalLoadWithError:forFrame:", "webView:didFinishLoadForFrame:", + "webView:didFirstLayoutInFrame:", "webView:didReceiveIcon:forFrame:", "webView:didReceiveServerRedirectForProvisionalLoadForFrame:", "webView:didReceiveTitle:forFrame:", "webView:didStartProvisionalLoadForFrame:", + "webView:doCommandBySelector:", + "webView:dragDestinationActionMaskForDraggingInfo:", + "webView:dragSourceActionMaskForPoint:", + "webView:drawFooterInRect:", + "webView:drawHeaderInRect:", "webView:identifierForInitialRequest:fromDataSource:", "webView:makeFirstResponder:", "webView:mouseDidMoveOverElement:modifierFlags:", "webView:plugInFailedWithError:dataSource:", + "webView:printFrameView:", "webView:resource:didCancelAuthenticationChallenge:fromDataSource:", "webView:resource:didFailLoadingWithError:fromDataSource:", "webView:resource:didFinishLoadingFromDataSource:", @@ -15151,55 +16202,82 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "webView:runJavaScriptConfirmPanelWithMessage:", "webView:runJavaScriptTextInputPanelWithPrompt:defaultText:", "webView:runOpenPanelForFileButtonWithResultListener:", - "webView:setContentRect:", "webView:setFrame:", "webView:setResizable:", "webView:setStatusBarVisible:", "webView:setStatusText:", "webView:setToolbarsVisible:", + "webView:shouldApplyStyle:toElementsInDOMRange:", + "webView:shouldBeginEditingInDOMRange:", + "webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:", + "webView:shouldDeleteDOMRange:", + "webView:shouldEndEditingInDOMRange:", + "webView:shouldInsertNode:replacingDOMRange:givenAction:", + "webView:shouldInsertText:replacingDOMRange:givenAction:", "webView:unableToImplementPolicyWithError:frame:", "webView:willCloseFrame:", "webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:", + "webView:willPerformDragDestinationAction:forDraggingInfo:", + "webView:willPerformDragSourceAction:fromPoint:withPasteboard:", + "webView:windowScriptObjectAvailable:", "webViewAreToolbarsVisible:", "webViewClose:", "webViewContentRect:", - "webViewCount", + "webViewDidBeginEditing:", + "webViewDidChange:", + "webViewDidChangeSelection:", + "webViewDidChangeTypingStyle:", + "webViewDidEndEditing:", "webViewFirstResponder:", "webViewFocus:", + "webViewFooterHeight:", "webViewFrame:", + "webViewHeaderHeight:", "webViewIsResizable:", "webViewIsStatusBarVisible:", + "webViewPrint:", "webViewShow:", - "webViewStatusText:", - "webViewUnfocus:", "webViewsInSetNamed:", "weightOfFont:", - "whatIsKeyType:", "whiteColor", "whiteComponent", + "whitespace", "whitespaceAndNewlineCharacterSet", "whitespaceCharacterSet", "widget", "widgetInView:withButtonID:action:", "width", "widthAdjustLimit", - "widthForCharacters:length:", - "widthForString:", - "widthOfColumn:", + "widthForLayer:edge:", + "widthForSegment:", "widthOfString:", - "widthString", "widthTracksTextView", + "widthValueTypeForLayer:edge:", + "willAccessValueForKey:", "willBeDisplayed", + "willCacheResponse:", "willChange:valuesAtIndexes:forKey:", + "willChangeExpandedNodes", "willChangeValueForKey:", + "willChangeValueForKey:withSetMutation:usingObjects:", + "willChangeValuesForArrangedKeys:objectKeys:indexKeys:", "willForwardSelector:", "willHaveItemsToDisplayForItemViewers:", - "willLoadImagesAutomatically", + "willPopUpNotification:", + "willPresentError:", + "willRead", "willRemoveSubview:", + "willSave", + "willSendRequest:redirectResponse:", + "willSetLineFragmentRect:forGlyphRange:usedRect:", + "willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:", "windingRule", "window", + "window:didChangeToVisibleState:", + "window:willPositionSheet:usingRect:", "windowBackgroundColor", "windowBecameKey:", + "windowChangedKeyState", "windowContentRect", "windowController", "windowControllerDidLoadNib:", @@ -15207,8 +16285,8 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "windowControllers", "windowDidBecomeKey:", "windowDidBecomeKeyNotification:", - "windowDidBecomeMain:", "windowDidDeminiaturize:", + "windowDidEnableToolTipCreationAndDisplay", "windowDidLoad", "windowDidMiniaturize:", "windowDidResignKey:", @@ -15227,10 +16305,14 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "windowNibName", "windowNibPath", "windowNumber", + "windowObjectCleared", "windowProperties", "windowRef", "windowResignedKey:", + "windowScriptNPObject", + "windowScriptObject", "windowShouldClose:", + "windowShouldZoom:toFrame:", "windowTitle", "windowTitleForDocumentDisplayName:", "windowTitlebarLinesSpacingWidth", @@ -15238,6 +16320,7 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "windowTitlebarTitleLinesSpacingWidth", "windowTitlebarTitleLinesSpacingWidth:", "windowWillClose:", + "windowWillCloseNotification:", "windowWillLoad", "windowWillResize:toSize:", "windowWillReturnFieldEditor:toObject:", @@ -15245,28 +16328,21 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "windowWillUseStandardFrame:defaultFrame:", "windowWithWindowNumber:", "windows", - "windowsMenu", "wordMovementHandler", "wordWrap", - "words", - "workLoop", "workQueue", "worksWhenModal", - "wrapperExtensions", + "wrapMode", + "wrapROI:forRect:", "wraps", "writablePasteboardTypes", "writableTypes", - "write:", + "writableTypesForSaveOperation:", "write:len:buffer:", - "write:maxLength:", "writeAlignedDataSize:", "writeAttachment:", - "writeBOSArray:count:ofType:", - "writeBOSNumString:length:ofType:scale:", - "writeBOSString:length:", "writeBackgroundColor", "writeBaselineOffset:", - "writeBinaryObjectSequence:length:", "writeBody", "writeCharacterAttributes:previousAttributes:", "writeCharacterShape:", @@ -15275,69 +16351,72 @@ static const char * const _objc_builtin_selectors[NUM_BUILTIN_SELS] = { "writeColors", "writeData:", "writeData:length:", + "writeDate:", + "writeDateDocumentAttribute:withRTFKeyword:", "writeDefaultTabInterval", "writeDelayedInt:for:", "writeDocument:pbtype:filename:", - "writeEPSInsideRect:toPasteboard:", "writeEscapedUTF8String:", "writeExpansion:", - "writeFd:", - "writeFile:", - "writeFileContents:", - "writeFileWrapper:", "writeFont:", "writeFontTable", "writeGlyphInfo:", "writeHeader", "writeHyphenation", - "writeImageToPasteboard:", - "writeIndexPath", + "writeImageToPasteboard:types:", + "writeInfo", "writeInt:", "writeKern:", + "writeKeywordsDocumentAttribute", "writeLigature:", + "writeLinkInfo:", + "writeListTable", "writeLock", "writeObliqueness:", - "writePDFInsideRect:toPasteboard:", - "writePaneGeometryToDefaults", "writePaperSize", "writeParagraphStyle:", - "writePath:docInfo:errorHandler:remapContents:", - "writePostScriptWithLanguageEncodingConversion:", + "writePath:docInfo:errorHandler:remapContents:hardLinkPath:", + "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:", "writePrintInfo", - "writeProfilingDataToPath:", "writeProperty:forKey:", "writeRTF", - "writeRTFDToFile:atomically:", "writeRoomForInt:", - "writeSelectedGroupsAndPeopleToDefaults", + "writeSafelyToURL:ofType:forSaveOperation:error:", "writeSelectionToPasteboard:type:", "writeSelectionToPasteboard:types:", + "writeSelectionWithPasteboardTypes:toPasteboard:", "writeShadow:", "writeStrikethroughStyle:", + "writeStringDocumentAttribute:withRTFKeyword:", "writeStrokeWidth:", "writeStyleSheetTable", "writeSuperscript:", + "writeTableHeader:forRowNumber:atIndex:", "writeToFile:", "writeToFile:atomically:", + "writeToFile:atomically:error:", "writeToFile:atomically:updateFilenames:", + "writeToFile:error:", "writeToFile:ofType:", "writeToFile:ofType:originalFile:saveOperation:", + "writeToFile:options:error:", "writeToPasteboard:", - "writeToPath:safely:", "writeToURL:atomically:", - "writeToURL:ofType:", + "writeToURL:ofType:error:", + "writeToURL:ofType:forSaveOperation:originalContentsURL:error:", "writeURLs:andTitles:toPasteboard:", "writeUnderlineStyle:allowStrikethrough:", "writeUnlock", "writeWithBackupToFile:ofType:saveOperation:", "xHeight", - "yank:", - "yankAndSelect:", + "xmlInfoForAttribute:", + "xmlNode", "yearOfCommonEra", - "years:months:days:hours:minutes:seconds:sinceDate:", "yellowColor", "yellowComponent", "zero", + "zeroOrMoreDescriptionsForSubelementName:", + "zeroSymbol", "zone", "zoom:", "zoomButton" diff --git a/runtime/objc-sel.m b/runtime/objc-sel.m index 89b4927..cb9c9e1 100644 --- a/runtime/objc-sel.m +++ b/runtime/objc-sel.m @@ -31,17 +31,41 @@ */ #include -#include #import "objc-private.h" +#import "objc-auto.h" +#import "objc-rtp.h" +#import "objc-sel-set.h" // NUM_BUILTIN_SELS, LG_NUM_BUILTIN_SELS, _objc_builtin_selectors #include "objc-sel-table.h" #define NUM_NONBUILTIN_SELS 3500 -// Panther CFSet grows at 3571, 5778, 9349. +// objc_sel_set grows at 3571, 5778, 9349. // Most apps use 2000..7000 extra sels. Most apps will grow zero to two times. static const char *_objc_empty_selector = ""; +static OBJC_DECLARE_LOCK(_objc_selector_lock); +static struct __objc_sel_set *_objc_selectors = NULL; + + +static inline int ignore_selector(const char *sel) +{ + // force retain/release/autorelease to be a constant value when GC is on + // note that the selectors for "Protocol" are registered before we can + // see the executable image header that sets _WantsGC, so we can't cache + // this result (sigh). + return (UseGC && + ( (sel[0] == 'r' && sel[1] == 'e' && + (_objc_strcmp(&sel[2], "lease") == 0 || + _objc_strcmp(&sel[2], "tain") == 0 || + _objc_strcmp(&sel[2], "tainCount") == 0 )) + || + (_objc_strcmp(sel, "dealloc") == 0) + || + (sel[0] == 'a' && sel[1] == 'u' && + _objc_strcmp(&sel[2], "torelease") == 0))); +} + static SEL _objc_search_builtins(const char *key) { int c, idx, lg = LG_NUM_BUILTIN_SELS; @@ -50,10 +74,12 @@ static SEL _objc_search_builtins(const char *key) { #if defined(DUMP_SELECTORS) if (NULL != key) printf("\t\"%s\",\n", key); #endif - /* The builtin table contains only sels starting with '[A-z]', including '_' */ + /* The builtin table contains only sels starting with '[.A-z]', including '_' */ if (!key) return (SEL)0; if ('\0' == *key) return (SEL)_objc_empty_selector; - if (*key < 'A' || 'z' < *key) return (SEL)0; + if ((*key < 'A' || 'z' < *key) && *key != '.') return (SEL)0; + if (ignore_selector(key)) return (SEL)kIgnore; + s = _objc_builtin_selectors[-1 + (1 << lg)]; c = _objc_strcmp(s, key); if (c == 0) return (SEL)s; @@ -67,19 +93,6 @@ static SEL _objc_search_builtins(const char *key) { return (SEL)0; } -static OBJC_DECLARE_LOCK(_objc_selector_lock); -static CFMutableSetRef _objc_selectors = NULL; - -static Boolean _objc_equal_selector(const void *v1, const void *v2) { - if (v1 == v2) return TRUE; - if ((v1 == NULL) || (v2 == NULL)) return FALSE; - return _objc_strcmp((const unsigned char *)v1, (const unsigned char *)v2) == 0; -} - -static CFHashCode _objc_hash_selector(const void *v) { - if (!v) return 0; - return (CFHashCode)_objc_strhash(v); -} const char *sel_getName(SEL sel) { return sel ? (const char *)sel : ""; @@ -88,56 +101,52 @@ const char *sel_getName(SEL sel) { BOOL sel_isMapped(SEL name) { SEL result; - const void *value; if (NULL == name) return NO; result = _objc_search_builtins((const char *)name); if ((SEL)0 != result) return YES; OBJC_LOCK(&_objc_selector_lock); - if (_objc_selectors && CFSetGetValueIfPresent(_objc_selectors, name, &value)) { - result = (SEL)value; + if (_objc_selectors) { + result = __objc_sel_set_get(_objc_selectors, name); } OBJC_UNLOCK(&_objc_selector_lock); return ((SEL)0 != (SEL)result) ? YES : NO; } -// CoreFoundation private API -extern void _CFSetSetCapacity(CFMutableSetRef set, CFIndex cap); - -static SEL __sel_registerName(const char *name, int lockAndCopy) { +static SEL __sel_registerName(const char *name, int lock, int copy) { SEL result = 0; - const void *value; + if (NULL == name) return (SEL)0; result = _objc_search_builtins(name); - if ((SEL)0 != result) return result; + if (result != NULL) return result; - if (lockAndCopy) OBJC_LOCK(&_objc_selector_lock); - if (!_objc_selectors || !CFSetGetValueIfPresent(_objc_selectors, name, &value)) { - if (!_objc_selectors) { - CFSetCallBacks cb = {0, NULL, NULL, NULL, - _objc_equal_selector, _objc_hash_selector}; - _objc_selectors = CFSetCreateMutable(kCFAllocatorDefault, 0, &cb); - _CFSetSetCapacity(_objc_selectors, NUM_NONBUILTIN_SELS); - CFSetAddValue(_objc_selectors, (void *)NULL); - } - //if (lockAndCopy > 1) printf("registering %s for sel_getUid\n",name); - value = lockAndCopy ? strdup(name) : name; - CFSetAddValue(_objc_selectors, (void *)value); + if (lock) OBJC_LOCK(&_objc_selector_lock); + + if (_objc_selectors) { + result = __objc_sel_set_get(_objc_selectors, (SEL)name); + } + if (result == NULL) { + if (!_objc_selectors) { + _objc_selectors = __objc_sel_set_create(NUM_NONBUILTIN_SELS); + } + result = (SEL)(copy ? _strdup_internal(name) : name); + __objc_sel_set_add(_objc_selectors, result); #if defined(DUMP_UNKNOWN_SELECTORS) - printf("\t\"%s\",\n", value); + printf("\t\"%s\",\n", name); #endif } - result = (SEL)value; - if (lockAndCopy) OBJC_UNLOCK(&_objc_selector_lock); + + if (lock) OBJC_UNLOCK(&_objc_selector_lock); return result; } + SEL sel_registerName(const char *name) { - return __sel_registerName(name, 1); + return __sel_registerName(name, 1, 1); // YES lock, YES copy } -__private_extern__ SEL sel_registerNameNoCopyNoLock(const char *name) { - return __sel_registerName(name, 0); +__private_extern__ SEL sel_registerNameNoLock(const char *name, BOOL copy) { + return __sel_registerName(name, 0, copy); // NO lock, maybe copy } __private_extern__ void sel_lock(void) @@ -156,5 +165,5 @@ __private_extern__ void sel_unlock(void) // did not check for NULL, so, in fact, never return NULL // SEL sel_getUid(const char *name) { - return __sel_registerName(name, 2); + return __sel_registerName(name, 2, 1); // YES lock, YES copy } diff --git a/runtime/objc-sync.m b/runtime/objc-sync.m index 86be2a1..fe8e3a2 100644 --- a/runtime/objc-sync.m +++ b/runtime/objc-sync.m @@ -32,6 +32,7 @@ #include #include #include +#include #include #include "objc-sync.h" @@ -161,13 +162,17 @@ done: int objc_sync_enter(id obj) { int result = OBJC_SYNC_SUCCESS; - - SyncData* data = id2data(obj, ACQUIRE); - require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_INITIALIZED, "id2data failed"); + + if (obj) { + SyncData* data = id2data(obj, ACQUIRE); + require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_INITIALIZED, "id2data failed"); - result = pthread_mutex_lock(&data->mutex); - require_noerr_string(result, done, "pthread_mutex_lock failed"); - + result = pthread_mutex_lock(&data->mutex); + require_noerr_string(result, done, "pthread_mutex_lock failed"); + } else { + // @synchronized(nil) does nothing + } + done: return result; } @@ -179,11 +184,15 @@ int objc_sync_exit(id obj) { int result = OBJC_SYNC_SUCCESS; - SyncData* data = id2data(obj, RELEASE); - require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_OWNING_THREAD_ERROR, "id2data failed"); - - result = pthread_mutex_unlock(&data->mutex); - require_noerr_string(result, done, "pthread_mutex_unlock failed"); + if (obj) { + SyncData* data = id2data(obj, RELEASE); + require_action_string(data != NULL, done, result = OBJC_SYNC_NOT_OWNING_THREAD_ERROR, "id2data failed"); + + result = pthread_mutex_unlock(&data->mutex); + require_noerr_string(result, done, "pthread_mutex_unlock failed"); + } else { + // @synchronized(nil) does nothing + } done: if ( result == EPERM ) diff --git a/runtime/objc.h b/runtime/objc.h index 6e2f638..d936162 100644 --- a/runtime/objc.h +++ b/runtime/objc.h @@ -56,6 +56,9 @@ typedef signed char BOOL; #define nil 0 /* id of Nil instance */ #endif +#ifndef __OBJC_GC__ +# define __strong +#endif #if !defined(STRICT_OPENSTEP) -- 2.45.2