From b3962a83cab9a7d9db4cade06e15ac26e01d4078 Mon Sep 17 00:00:00 2001 From: Apple Date: Tue, 29 Jan 2008 04:02:33 +0000 Subject: [PATCH] objc4-371.tar.gz --- Makefile | 121 +- libobjc.order | 322 +- markgc.c | 451 + objc-exports | 187 - .../objc-accessors-arch.s} | 27 +- .../Accessors.subproj/objc-accessors-i386.s | 157 + .../Accessors.subproj/objc-accessors-ppc.s | 24 + .../Accessors.subproj/objc-accessors-ppc64.s | 24 + .../Accessors.subproj/objc-accessors-table.h | 166 + .../Accessors.subproj/objc-accessors-x86_64.s | 24 + runtime/Accessors.subproj/objc-accessors.h | 51 + runtime/Accessors.subproj/objc-accessors.m | 231 + runtime/Auto.subproj/objc-auto-i386.s | 64 +- runtime/Auto.subproj/objc-auto-ppc.s | 6 +- runtime/Auto.subproj/objc-auto-ppc64.s | 24 + runtime/Auto.subproj/objc-auto-x86_64.s | 78 + runtime/Auto.subproj/objc-auto.s | 27 +- runtime/Messengers.subproj/objc-msg-i386.s | 476 +- runtime/Messengers.subproj/objc-msg-ppc.s | 258 +- runtime/Messengers.subproj/objc-msg-ppc64.s | 1434 + .../Messengers.subproj/objc-msg-stub-i386.s | 8 +- .../Messengers.subproj/objc-msg-stub-ppc.s | 6 +- .../Messengers.subproj/objc-msg-stub-ppc64.s | 57 + .../Messengers.subproj/objc-msg-stub-x86_64.s | 38 + runtime/Messengers.subproj/objc-msg-stub.s | 9 +- runtime/Messengers.subproj/objc-msg-x86_64.s | 1279 + runtime/Messengers.subproj/objc-msg.s | 11 +- runtime/Object.h | 29 +- runtime/Object.m | 650 +- runtime/OldClasses.subproj/List.h | 80 +- runtime/OldClasses.subproj/List.m | 11 +- runtime/Protocol.h | 30 +- runtime/Protocol.m | 183 +- runtime/error.h | 13 +- runtime/hashtable2.h | 19 +- runtime/hashtable2.m | 71 +- runtime/lookupa.h | 24 + runtime/lookupa.m | 244 + runtime/maptable.h | 15 +- runtime/maptable.m | 112 +- runtime/message.h | 173 + runtime/objc-api.h | 43 +- runtime/objc-auto.h | 89 +- runtime/objc-auto.m | 1352 +- runtime/objc-cache.m | 1806 + runtime/objc-class-old.m | 2211 + runtime/objc-class.h | 259 +- runtime/objc-class.m | 4016 +- runtime/objc-config.h | 15 +- runtime/objc-errors.m | 229 +- runtime/objc-exception.h | 44 +- runtime/objc-exception.m | 950 +- runtime/objc-file.m | 311 +- runtime/objc-initialize.h | 32 + runtime/objc-initialize.m | 356 + runtime/objc-layout.m | 797 + runtime/objc-load.h | 23 +- runtime/objc-load.m | 22 +- runtime/objc-loadmethod.h | 37 + runtime/objc-loadmethod.m | 353 + runtime/objc-lockdebug.m | 148 + runtime/objc-private.h | 760 +- runtime/objc-rtp-sym.s | 8 +- runtime/objc-rtp.h | 19 +- runtime/objc-rtp.m | 169 +- runtime/objc-runtime-new.h | 159 + runtime/objc-runtime-new.m | 3953 ++ runtime/objc-runtime-old.m | 2834 + runtime/objc-runtime.h | 202 +- runtime/objc-runtime.m | 3260 +- runtime/objc-sel-set.h | 4 +- runtime/objc-sel-set.m | 4 +- runtime/objc-sel-table.h | 49193 ++++++++++------ runtime/objc-sel.m | 39 +- runtime/objc-sync.h | 11 +- runtime/objc-sync.m | 215 +- runtime/objc-typeencoding.m | 403 + runtime/objc.h | 51 +- runtime/phash.h | 17 + runtime/phash.m | 573 + runtime/runtime.h | 483 + runtime/standard.h | 54 + 82 files changed, 56905 insertions(+), 25813 deletions(-) create mode 100644 markgc.c delete mode 100644 objc-exports rename runtime/{objc-moninit.c => Accessors.subproj/objc-accessors-arch.s} (69%) create mode 100644 runtime/Accessors.subproj/objc-accessors-i386.s create mode 100644 runtime/Accessors.subproj/objc-accessors-ppc.s create mode 100644 runtime/Accessors.subproj/objc-accessors-ppc64.s create mode 100644 runtime/Accessors.subproj/objc-accessors-table.h create mode 100644 runtime/Accessors.subproj/objc-accessors-x86_64.s create mode 100644 runtime/Accessors.subproj/objc-accessors.h create mode 100644 runtime/Accessors.subproj/objc-accessors.m create mode 100644 runtime/Auto.subproj/objc-auto-ppc64.s create mode 100644 runtime/Auto.subproj/objc-auto-x86_64.s create mode 100644 runtime/Messengers.subproj/objc-msg-ppc64.s create mode 100644 runtime/Messengers.subproj/objc-msg-stub-ppc64.s create mode 100644 runtime/Messengers.subproj/objc-msg-stub-x86_64.s create mode 100644 runtime/Messengers.subproj/objc-msg-x86_64.s create mode 100644 runtime/lookupa.h create mode 100644 runtime/lookupa.m create mode 100644 runtime/message.h create mode 100644 runtime/objc-cache.m create mode 100644 runtime/objc-class-old.m create mode 100644 runtime/objc-initialize.h create mode 100644 runtime/objc-initialize.m create mode 100644 runtime/objc-layout.m create mode 100644 runtime/objc-loadmethod.h create mode 100644 runtime/objc-loadmethod.m create mode 100644 runtime/objc-lockdebug.m create mode 100644 runtime/objc-runtime-new.h create mode 100644 runtime/objc-runtime-new.m create mode 100644 runtime/objc-runtime-old.m create mode 100644 runtime/objc-typeencoding.m create mode 100644 runtime/phash.h create mode 100644 runtime/phash.m create mode 100644 runtime/runtime.h create mode 100644 runtime/standard.h diff --git a/Makefile b/Makefile index ee26d8e..47d8553 100644 --- a/Makefile +++ b/Makefile @@ -28,8 +28,11 @@ default: build all: build +test: + make -C test + .SUFFIXES: -.PHONY: default all build optimized debug profile installsrc installhdrs install clean prebuild build-optimized build-debug build-profile prebuild-optimized prebuild-debug prebuild-profile compile-optimized compile-debug compile-profile link-optimized link-debug link-profile postbuild +.PHONY: default all test build optimized debug profile installsrc installhdrs install clean prebuild build-optimized build-debug build-profile prebuild-optimized prebuild-debug prebuild-profile compile-optimized compile-debug compile-profile link-optimized link-debug link-profile postbuild CURRENT_PROJECT_VERSION = 227 @@ -79,7 +82,7 @@ NMEDIT = /usr/bin/nmedit LIPO = /usr/bin/lipo ifeq "$(PLATFORM)" "Darwin" -WARNING_FLAGS = -Wmost -Wno-four-char-constants +WARNING_FLAGS = -Wall -Wno-four-char-constants -Wshorten-64-to-32 -Wno-deprecated-declarations endif ARCH_LIST= @@ -104,7 +107,7 @@ ifeq "$(ORDERFILE)" "" ORDERFILE = $(SRCROOT)/libobjc.order endif ifneq "$(ORDERFILE)" "" -ORDER = -sectorder __TEXT __text $(ORDERFILE) +ORDER = -Wl,-order_file,$(ORDERFILE) else ORDER = endif @@ -113,7 +116,7 @@ ifeq "$(USER)" "" USER = unknown endif -CFLAGS = -g -fno-common -fobjc-exceptions -fdollars-in-identifiers -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders +CFLAGS = -g -fno-common -fdollars-in-identifiers -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders LDFLAGS = LIBRARY_EXT = .dylib @@ -126,18 +129,23 @@ ifeq "$(PLATFORM)" "Darwin" LDFLAGS += -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) endif +ifeq "$(PLATFORM)" "Darwin" +# GC flags +LDFLAGS += -lauto +#CFLAGS += -fobjc-gc -Wassign-intercept +endif CFLAGS += $(OTHER_CFLAGS) $(RC_CFLAGS) LDFLAGS += $(OTHER_LDFLAGS) ifndef OPTIMIZATION_CFLAGS -OPTIMIZATION_CFLAGS = -Os +OPTIMIZATION_CFLAGS = -Os -DNDEBUG endif ifndef DEBUG_CFLAGS DEBUG_CFLAGS = -DDEBUG endif ifndef PROFILE_CFLAGS -PROFILE_CFLAGS = -DPROFILE -pg -Os +PROFILE_CFLAGS = -DPROFILE -pg -Os -DNDEBUG endif CFLAGS_OPTIMIZED = $(OPTIMIZATION_CFLAGS) $(CFLAGS) @@ -148,7 +156,7 @@ LDFLAGS_OPTIMIZED = $(LDFLAGS) -g LDFLAGS_DEBUG = $(LDFLAGS) -g LDFLAGS_PROFILE = $(LDFLAGS) -g -pg -SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Auto.subproj +SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Accessors.subproj runtime/Auto.subproj # files to compile SOURCES= @@ -165,16 +173,25 @@ 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 \ + Object.m Protocol.m hashtable2.m maptable.m objc-class.m \ + objc-errors.m objc-cache.m objc-initialize.m \ + objc-file.m objc-load.m objc-runtime.m objc-sel.m \ objc-sync.m objc-exception.m objc-auto.m objc-sel-set.m objc-rtp.m \ + objc-layout.m objc-loadmethod.m objc-class-old.m objc-runtime-old.m \ + objc-runtime-new.m objc-typeencoding.m objc-lockdebug.m \ + phash.m lookupa.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 objc-auto.h \ + objc.h runtime.h message.h \ + objc-class.h objc-api.h objc-load.h objc-runtime.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 +PRIVATE_HEADERS += $(addprefix runtime/, \ + objc-private.h objc-config.h objc-sel-table.h objc-sel-set.h \ + objc-rtp.h objc-initialize.h objc-loadmethod.h objc-runtime-new.h \ + phash.h lookupa.h standard.h \ + ) OTHER_HEADERS += runtime/maptable.h runtime/objc-auto.h # OldClasses @@ -183,11 +200,17 @@ PUBLIC_HEADERS += runtime/OldClasses.subproj/List.h # Messengers SOURCES += runtime/Messengers.subproj/objc-msg.s -OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-i386.s +OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-ppc64.s runtime/Messengers.subproj/objc-msg-i386.s runtime/Messengers.subproj/objc-msg-x86_64.s + +# Property Accessors +SOURCES += runtime/Accessors.subproj/objc-accessors.m runtime/Accessors.subproj/objc-accessors-arch.s +PRIVATE_HEADERS += runtime/Accessors.subproj/objc-accessors.h runtime/Accessors.subproj/objc-accessors-table.h +OTHER_SOURCES += runtime/Accessors.subproj/objc-accessors-ppc.s runtime/Accessors.subproj/objc-accessors-ppc64.s +OTHER_SOURCES += runtime/Accessors.subproj/objc-accessors-i386.s runtime/Accessors.subproj/objc-accessors-x86_64.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 +OTHER_SOURCES += runtime/Auto.subproj/objc-auto-ppc.s runtime/Auto.subproj/objc-auto-ppc64.s runtime/Auto.subproj/objc-auto-i386.s runtime/Auto.subproj/objc-auto-x86_64.s # RTP symbols for gdb # See also $(OBJROOT)/runtime/objc-rtp-sym.ppc.o rule below. @@ -197,10 +220,15 @@ OTHER_SOURCES += runtime/objc-rtp-sym.s # 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 +OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-stub-ppc.s runtime/Messengers.subproj/objc-msg-stub-ppc64.s runtime/Messengers.subproj/objc-msg-stub-i386.s runtime/Messengers.subproj/objc-msg-stub-x86_64.s # project root -OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports libobjc.order +OTHER_SOURCES += Makefile APPLE_LICENSE libobjc.order + +# The GC Mark tool that marks our .o files as if they had been compiled with write-barriers +OTHER_SOURCES += markgc.c +MARKGC = $(OBJROOT)/markgc + OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(SOURCES) ) ) ) OBJECTS_OPTIMIZED = $(OBJECTS:.o=.opt.o) @@ -217,41 +245,44 @@ MODULE_OBJECTS_PROFILE = $(MODULE_OBJECTS:.o=.profile.o) DEPEND_HEADERS = $(addprefix $(SRCROOT)/, \ $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) ) -$(OBJROOT)/%.opt.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) +$(OBJROOT)/%.opt.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) $(MARKGC) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" + $(SILENT) $(MARKGC) -p "$@" -$(OBJROOT)/%.debug.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) +$(OBJROOT)/%.debug.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) $(MARKGC) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_DEBUG) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG) "$<" -c -o "$@" + $(SILENT) $(MARKGC) -p "$@" -$(OBJROOT)/%.profile.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) +$(OBJROOT)/%.profile.o : $(SRCROOT)/%.m $(DEPEND_HEADERS) $(MARKGC) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_PROFILE) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE) "$<" -c -o "$@" + $(SILENT) $(MARKGC) -p "$@" $(OBJROOT)/%.opt.o : $(SRCROOT)/%.c $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" $(OBJROOT)/%.debug.o : $(SRCROOT)/%.c $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_DEBUG) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG) "$<" -c -o "$@" $(OBJROOT)/%.profile.o : $(SRCROOT)/%.c $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_PROFILE) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE) "$<" -c -o "$@" $(OBJROOT)/%.opt.o : $(SRCROOT)/%.s $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@" $(OBJROOT)/%.debug.o : $(SRCROOT)/%.s $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_DEBUG) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG) "$<" -c -o "$@" $(OBJROOT)/%.profile.o : $(SRCROOT)/%.s $(DEPEND_HEADERS) $(SILENT) $(ECHO) " ... $<" - $(SILENT) $(CC) $(CFLAGS_PROFILE) "$<" -c -o "$@" + $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE) "$<" -c -o "$@" # Additional dependency: objc-msg.s depends on objc-msg-ppc.s and # objc-msg-i386.s, which it includes. @@ -259,7 +290,9 @@ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.opt.o \ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.debug.o \ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.profile.o : \ $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc.s \ - $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc64.s \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-x86_64.s # Additional dependency: objc-msg-sutb.s depends on objc-msg-stub-ppc.s and # objc-msg-stub-i386.s, which it includes. @@ -267,7 +300,9 @@ $(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 + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-ppc64.s \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-i386.s \ + $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-x86_64.s # Additional dependency: objc-auto.s depends on objc-auto-ppc.s and # objc-auto-i386.s, which it includes. @@ -275,7 +310,9 @@ $(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 + $(SRCROOT)/runtime/Auto.subproj/objc-auto-ppc64.s \ + $(SRCROOT)/runtime/Auto.subproj/objc-auto-i386.s \ + $(SRCROOT)/runtime/Auto.subproj/objc-auto-x86_64.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 @@ -286,11 +323,29 @@ $(OBJROOT)/runtime/objc-rtp-sym.ppc.o: $(SRCROOT)/runtime/objc-rtp-sym.s $(SILENT) $(STRIP) -S "$@.temp" $(SILENT) $(LD) -arch ppc -seg1addr 0xfffec000 "$@.temp" -r -o "$@" +$(OBJROOT)/runtime/objc-rtp-sym.ppc64.o: $(SRCROOT)/runtime/objc-rtp-sym.s + $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch ppc64 "$<" -c -o "$@.temp" + $(SILENT) $(STRIP) -S "$@.temp" + $(SILENT) $(LD) -arch ppc64 -seg1addr 0xfffffffffffec000 "$@.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 "$@" +$(OBJROOT)/runtime/objc-rtp-sym.x86_64.o: $(SRCROOT)/runtime/objc-rtp-sym.s + $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch x86_64 "$<" -c -o "$@.temp" + $(SILENT) $(STRIP) -S "$@.temp" + $(SILENT) $(LD) -arch x86_64 -seg1addr 0xfffffffffffec000 "$@.temp" -r -o "$@" + +# Additional rule: markgc tool to pretend we compiled with GC write-barriers +$(MARKGC): $(SRCROOT)/markgc.c + $(SILENT) $(ECHO) "Building markgc tool ..." + $(SILENT) $(CC) -std=gnu99 "$<" -o "$@" + +# Additional linkage: LP64 targets require libstdc++ +LIBS_ppc64 = -lstdc++ +LIBS_x86_64 = -lstdc++ # These are the main targets: # build builds the library to OBJROOT and SYMROOT @@ -411,6 +466,8 @@ clean: $(SILENT) $(REMOVE) -rf $(SYMROOT)/ProjectHeaders + $(SILENT) $(REMOVE) -f $(MARKGC) + prebuild: $(SILENT) $(ECHO) "Prebuild-setup..." @@ -462,7 +519,7 @@ define link $3 ; \ $(SILENT) $(CC) $2 \ -arch $A \ - -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \ + $(LIBS_$(A)) \ $(ORDER) \ -sectcreate __DATA __commpage $(OBJROOT)/runtime/objc-rtp-sym.$A.o \ -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \ diff --git a/libobjc.order b/libobjc.order index de39416..5301ba8 100644 --- a/libobjc.order +++ b/libobjc.order @@ -1,135 +1,257 @@ -__objc_notify_images -___i686.get_pc_thunk.bx +__objc_init _map_images +_sel_registerName +___sel_registerName +__objc_search_builtins +_phash +_lookup +_exception_init +__getImageSlide +__getObjcImageInfo _getsegbynamefromheader -___i686.get_pc_thunk.cx +__getObjcModules +__malloc_internal +__objc_internal_zone _verify_gc_readiness -_objc_msgSend -__class_lookupMethodAndLoadCache -_class_initialize -_objc_getClass -_look_up_class +_gc_init +_rtp_init +__read_images +__objc_init_class_hash +_NXCreateHashTableFromZone _NXHashGet +_hashPrototype +_isEqualPrototype +_NXHashInsert +__NXHashRehashToCapacity +_freeBuckets +_NXNoEffectFree +_log2u +__NXHashCapacity +__class_hasLoadMethod +__class_getLoadMethod_nocheck _classHash +__class_getName +_resolve_categories_for_class +_lookupNamedMethodInMethodList _classIsEqual +_objc_lookUpClass +_look_up_class +__objc_insertMethods +__calloc_internal +__class_clearInfo __class_changeInfo -__fetchInitializingClassList -__cache_getMethod -_fixupSelectorsInMethodList -__malloc_internal -__objc_internal_zone +__class_setInfo +__class_addProperties +__memdup_internal +_allocateExt +_connect_class +_class_is_connected +_NXHashMember +_really_connect_class +_set_superclass +_NXHashRemove +_NXCountHashTable +_NXFreeHashTable +__getObjcClassRefs +__getObjcSelectorRefs _sel_lock _sel_registerNameNoLock -___sel_registerName -__objc_search_builtins -___objc_sel_set_get -___objc_sel_set_findBuckets +___objc_sel_set_create ___objc_sel_set_add +___objc_sel_set_findBuckets +___objc_sel_set_get _sel_unlock +_objc_getClass +_NXCreateMapTableFromZone +_NXCreateHashTable +_NXPtrHash +__getObjcProtocols +__getObjcClassNames +_map_method_descs +_NXMapGet +__mapStrHash +_NXMapKeyCopyingInsert +__strdup_internal +_NXMapInsert +__mapStrIsEqual +__mapPtrHash +__mapPtrIsEqual +__NXMapRehash +__free_internal +_load_images +_prepare_load_methods +_schedule_class_load +_add_class_to_loadable_list +__class_getLoadMethod +_call_load_methods +__realloc_internal +_add_category_to_loadable_list +__category_getLoadMethod +_object_getClass +_protocol_copyMethodDescriptionList +_class_getClassMethod +__class_getMeta +_look_up_method +__class_getMethod +_fixupSelectorsInMethodList +_method_getTypeEncoding +_method_getImplementation +_method_getName +_class_addMethod +__class_addMethod +_flush_caches +__cache_flush +__class_getCache +_class_getInstanceMethod +_class_replaceMethod +_method_setImplementation +_class_addProtocol +_objc_exception_get_functions +_objc_exception_set_functions +_objc_setForwardHandler +_objc_setEnumerationMutationHandler +_objc_collecting_enabled +_objc_getFutureClass +_objc_setFutureClass +_setOriginalClassForFutureClass +_change_class_references +_NXInitHashState +_NXNextHashState +__objc_headerStart +_objc_msgSend +__class_lookupMethodAndLoadCache +__class_getFreedObjectClass +__class_getNonexistentObjectClass +__class_isInitialized +__class_initialize +__class_isMetaClass +__class_getSuperclass +__class_isInitializing +__class_setInitializing +__fetchInitializingClassList +__objc_fetch_pthread_data +__cache_getMethod +__class_getMethodNoSuper +_log_and_fill_cache __cache_fill +_objc_assign_global +_class_setVersion +__class_setInitialized __cache_getImp -__cache_create __cache_malloc -__calloc_internal -_objc_assign_global -_objc_collecting_enabled +__class_setCache +__class_setGrowCache +_class_getInstanceSize +__class_getInstanceSize +_class_createInstanceFromZone +__objc_warn_deprecated __internal_class_createInstanceFromZone _object_cxxConstructFromClass +__class_hasCxxStructorsNoSuper _object_getClassName +_object_getIndexedIvars +_objc_assign_strongCast +__class_shouldGrowCache +_class_createInstance +__internal_class_createInstance _objc_msgSendSuper _objc_assign_ivar -dyld_stub_binding_helper __cache_collect_free -_sel_registerName +_class_getSuperclass +__category_getClass +__class_isLoadable +_object_dispose __internal_object_dispose -_object_cxxDestruct _object_cxxDestructFromClass __objc_getFreedObjectClass _objc_exception_try_enter _objc_exception_try_exit -__strdup_internal -_class_respondsToMethod +_class_getVersion +_class_respondsToSelector +__class_resolveMethod __cache_addForwardEntry -_objc_assign_strongCast -_objc_msgSend_stret _objc_msgSend_fpret -_class_getInstanceMethod -_objc_memmove_collectable --[Protocol descriptionForInstanceMethod:] -_class_nextMethodList -_objc_getOrigClass -_NXMapGet -__mapStrHash -__free_internal -_NXUniqueString -_NXCreateHashTable -_NXCreateHashTableFromZone -_hashPrototype -_isEqualPrototype -_NXHashInsert -__NXHashRehashToCapacity -_freeBuckets -_NXNoEffectFree -_NXStrHash -_NXStrIsEqual -_class_poseAs -__objc_addOrigClass -__mapStrIsEqual -_NXMapInsert -_objc_getClasses -_NXHashRemove -__mapPtrHash -_NXInitHashState -_NXNextHashState -__objc_headerStart -__getObjcClassRefs -_sel_getName -_object_setInstanceVariable -_class_getInstanceVariable -_objc_setMultithreaded --[Object self] -__objc_defaultClassHandler -_class_lookupMethod -__internal_object_copyFromZone -__objc_msgForward -_objc_msgSendv -_objc_loadModule -__getObjcModules -__getObjcImageInfo -__getImageSlide -__NXHashCapacity -_lookupNamedMethodInMethodList -_log2 -_resolve_categories_for_class -_connect_class -_class_is_connected -_NXHashMember -_really_connect_class -_NXCountHashTable -_NXFreeHashTable -__objc_fixup_selector_refs -__getObjcMessageRefs -__getObjcProtocols -+[Protocol _fixup:numElements:] --[Protocol conformsTo:] -__objc_insertMethods -__objc_flush_caches -_flush_caches -_objc_getClassList -__realloc_internal -__cache_flush -__class_setInfo -__class_clearInfo -_map_method_descs -_objc_msgSendSuper_stret -_cache_region_calloc -_objc_msgSendv_stret _objc_sync_enter _id2data +_fetch_cache +_class_getImageName +__objc_getOrigClass +_class_getName _objc_sync_exit -__mapPtrIsEqual +_objc_finalizeOnMainThread +__cache_free_block +_class_conformsToProtocol +_protocol_conformsToProtocol ++[Object initialize] +_object_setInstanceVariable +__class_getVariable +_ivar_getOffset +_gc_enforcer +_flush_marked_caches +_class_getMethodImplementation +_objc_setProperty +_objc_assign_weak +_objc_read_weak +_objc_allocateClassPair +__objc_defaultClassHandler +_objc_registerClassPair +_NXHashInsertIfAbsent +_method_getNumberOfArguments +_encoding_getNumberOfArguments +_SkipFirstType +_method_copyArgumentType +_encoding_copyArgumentType +_encoding_getArgumentInfo +_method_copyReturnType +_encoding_copyReturnType +_objc_getProperty +_cache_region_calloc +_class_copyProtocolList +_class_isMetaClass +_protocol_getMethodDescription +_lookup_protocol_method +_method_getDescription +_sel_getName __objc_pthread_destroyspecific __destroyInitializingClassList +__destroyLockList +__destroySyncCache +__destroyAltHandlerList +_objc_msgSend_stret +_objc_is_finalized +_class_getInstanceVariable +_objc_msgSendSuper_stret +__objc_msgForward +_objc_memmove_collectable +_objc_atomicCompareAndSwapInstanceVariableBarrier +_object_setClass +_flush_cache +_objc_atomicCompareAndSwapGlobalBarrier +_ivar_getTypeEncoding +_class_getProperty +_property_list_nth +_property_getAttributes +_object_copyFromZone +__internal_object_copyFromZone +_class_copyIvarList +_ivar_getName __objcInit +_objc_copyStruct +_objc_sync_nil +_objc_getClassList +_objc_copyImageNames +_objc_copyClassNamesForImage +__objc_copyClassNamesForImage +_objc_setMultithreaded +_sel_getUid +_class_poseAs +__objc_addOrigClass +_objc_exception_throw _objc_exception_extract _objc_exception_match +_object_getIvar +_object_setIvar +_method_invoke +_unmap_image +_class_copyPropertyList +_property_getName diff --git a/markgc.c b/markgc.c new file mode 100644 index 0000000..1224e5f --- /dev/null +++ b/markgc.c @@ -0,0 +1,451 @@ +/* + * Copyright (c) 2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +#include +#include +#include +#import +#include +#import +#import +#import +#import + +typedef char bool; +#define true 1 +#define false 0 + +bool debug; +bool verbose; +bool quiet; +bool rrOnly; +bool patch = true; + +struct gcinfo { + bool hasObjC; + bool hasInfo; + uint32_t flags; + char *arch; +} GCInfo[4]; + +void dumpinfo(char *filename); + +int Errors = 0; +char *FileBase; +size_t FileSize; +const char *FileName; + +int main(int argc, char *argv[]) { + //NSAutoreleasePool *pool = [NSAutoreleasePool new]; + int i; + //dumpinfo("/System/Library/Frameworks/AppKit.framework/AppKit"); + if (argc == 1) { + printf("Usage: gcinfo [-v] [-r] [--] library_or_executable_image [image2 ...]\n"); + printf(" prints Garbage Collection readiness of named images, ignoring those without ObjC segments\n"); + printf(" 'GC' - compiled with write-barriers, presumably otherwise aware\n"); + printf(" 'RR' - retain/release (presumed) aware for non-GC\n"); + printf(" 'GC-only' - compiled with write-barriers and marked at compile time as not being retain/release savvy\n"); + printf(" -v - provide archtectural details\n"); + printf(" -r - only show libraries that are non-GC, e.g. RR only\n"); + printf(" -- - read files & directories from stdin, e.g. find /Plug-ins | gcinfo --\n"); + printf("\nAuthor: blaine@apple.com\n"); + exit(0); + } + for (i = 1; i < argc; ++i) { + if (!strcmp(argv[i], "-v")) { + verbose = true; + continue; + } + if (!strcmp(argv[i], "-d")) { + debug = true; + continue; + } + if (!strcmp(argv[i], "-q")) { + quiet = true; + continue; + } + if (!strcmp(argv[i], "-r")) { + quiet = true; + rrOnly = true; + continue; + } + if (!strcmp(argv[i], "-p")) { + patch = true; + continue; + } + if (!strcmp(argv[i], "--")) { + char buf[1024]; + while (fgets(buf, 1024, stdin)) { + int len = strlen(buf); + buf[len-1] = 0; + dumpinfo(buf); + } + continue; + } + dumpinfo(argv[i]); + } + return Errors; +} + +struct imageInfo { + uint32_t version; + uint32_t flags; +}; + +void patchFile(uint32_t value, size_t offset) { + int fd = open(FileName, 1); + off_t lresult = lseek(fd, offset, SEEK_SET); + if (lresult == -1) { + printf("couldn't seek to %x position on fd %d\n", offset, fd); + ++Errors; + return; + } + int wresult = write(fd, &value, 4); + if (wresult != 4) { + ++Errors; + printf("didn't write new value\n"); + } + else { + printf("patched %s at offset %p\n", FileName, offset); + } + close(fd); +} + +uint32_t iiflags(struct imageInfo *ii, uint32_t size, bool needsFlip) { + if (needsFlip) { + ii->flags = OSSwapInt32(ii->flags); + } + if (debug) printf("flags->%x, nitems %d\n", ii->flags, size/sizeof(struct imageInfo)); + uint32_t flags = ii->flags; + if (patch && (flags&0x2)==0) { + //printf("will patch %s at offset %p\n", FileName, (char*)(&ii->flags) - FileBase); + uint32_t newvalue = flags | 0x2; + if (needsFlip) newvalue = OSSwapInt32(newvalue); + patchFile(newvalue, (char*)(&ii->flags) - FileBase); + } + for(int niis = 1; niis < size/sizeof(struct imageInfo); ++niis) { + if (needsFlip) ii[niis].flags = OSSwapInt32(ii[niis].flags); + if (ii[niis].flags != flags) { + // uh, oh. + printf("XXX ii[%d].flags %x != ii[0].flags %x\n", niis, ii[niis].flags, flags); + ++Errors; + } + } + return flags; +} + +void printflags(uint32_t flags) { + if (flags & 0x1) printf(" F&C"); + if (flags & 0x2) printf(" GC"); + if (flags & 0x4) printf(" GC-only"); + else printf(" RR"); +} + +/* +void doimageinfo(struct imageInfo *ii, uint32_t size, bool needsFlip) { + uint32_t flags = iiflags(ii, size, needsFlip); + printflags(flags); +} +*/ + + +void dosect32(void *start, struct section *sect, bool needsFlip, struct gcinfo *gcip) { + if (debug) printf("section %s from segment %s\n", sect->sectname, sect->segname); + if (strcmp(sect->segname, "__OBJC")) return; + gcip->hasObjC = true; + if (strcmp(sect->sectname, "__image_info")) return; + gcip->hasInfo = true; + if (needsFlip) { + sect->offset = OSSwapInt32(sect->offset); + sect->size = OSSwapInt32(sect->size); + } + // these guys aren't inline - they point elsewhere + gcip->flags = iiflags(start + sect->offset, sect->size, needsFlip); +} + +void dosect64(void *start, struct section_64 *sect, bool needsFlip, struct gcinfo *gcip) { + if (debug) printf("section %s from segment %s\n", sect->sectname, sect->segname); + if (strcmp(sect->segname, "__OBJC") && strcmp(sect->segname, "__DATA")) return; + if (strcmp(sect->sectname, "__image_info") && strncmp(sect->sectname, "__objc_imageinfo", 16)) return; + gcip->hasObjC = true; + gcip->hasInfo = true; + if (needsFlip) { + sect->offset = OSSwapInt32(sect->offset); + sect->size = OSSwapInt64(sect->size); + } + // these guys aren't inline - they point elsewhere + gcip->flags = iiflags(start + sect->offset, sect->size, needsFlip); +} + +void doseg32(void *start, struct segment_command *seg, bool needsFlip, struct gcinfo *gcip) { + // lets do sections + if (needsFlip) { + seg->fileoff = OSSwapInt32(seg->fileoff); + seg->nsects = OSSwapInt32(seg->nsects); + } + if (debug) printf("segment name: %s, nsects %d\n", seg->segname, seg->nsects); + if (seg->segname[0]) { + if (strcmp("__OBJC", seg->segname)) return; + } + int nsects; + struct section *sect = (struct section *)(seg + 1); + for (int nsects = 0; nsects < seg->nsects; ++nsects) { + // sections directly follow + + dosect32(start, sect + nsects, needsFlip, gcip); + } +} +void doseg64(void *start, struct segment_command_64 *seg, bool needsFlip, struct gcinfo *gcip) { + if (debug) printf("segment name: %s\n", seg->segname); + if (seg->segname[0] && strcmp("__OBJC", seg->segname) && strcmp("__DATA", seg->segname)) return; + gcip->hasObjC = true; + // lets do sections + if (needsFlip) { + seg->fileoff = OSSwapInt64(seg->fileoff); + seg->nsects = OSSwapInt32(seg->nsects); + } + int nsects; + struct section_64 *sect = (struct section_64 *)(seg + 1); + for (int nsects = 0; nsects < seg->nsects; ++nsects) { + // sections directly follow + + dosect64(start, sect + nsects, needsFlip, gcip); + } +} + +#if 0 +/* + * A variable length string in a load command is represented by an lc_str + * union. The strings are stored just after the load command structure and + * the offset is from the start of the load command structure. The size + * of the string is reflected in the cmdsize field of the load command. + * Once again any padded bytes to bring the cmdsize field to a multiple + * of 4 bytes must be zero. + */ +union lc_str { + uint32_t offset; /* offset to the string */ +#ifndef __LP64__ + char *ptr; /* pointer to the string */ +#endif +}; + +struct dylib { + union lc_str name; /* library's path name */ + uint32_t timestamp; /* library's build time stamp */ + uint32_t current_version; /* library's current version number */ + uint32_t compatibility_version; /* library's compatibility vers number*/ +}; + + * A dynamically linked shared library (filetype == MH_DYLIB in the mach header) + * contains a dylib_command (cmd == LC_ID_DYLIB) to identify the library. + * An object that uses a dynamically linked shared library also contains a + * dylib_command (cmd == LC_LOAD_DYLIB, LC_LOAD_WEAK_DYLIB, or + * LC_REEXPORT_DYLIB) for each library it uses. + +struct dylib_command { + uint32_t cmd; /* LC_ID_DYLIB, LC_LOAD_{,WEAK_}DYLIB, + LC_REEXPORT_DYLIB */ + uint32_t cmdsize; /* includes pathname string */ + struct dylib dylib; /* the library identification */ +}; +#endif + +void dodylib(void *start, struct dylib_command *dylibCmd, bool needsFlip) { + if (!verbose) return; + if (needsFlip) { + } + int count = dylibCmd->cmdsize - sizeof(struct dylib_command); + //printf("offset is %d, count is %d\n", dylibCmd->dylib.name.offset, count); + if (dylibCmd->dylib.name.offset > count) return; + //printf("-->%.*s<---", count, ((void *)dylibCmd)+dylibCmd->dylib.name.offset); + if (verbose) printf("load %s\n", ((void *)dylibCmd)+dylibCmd->dylib.name.offset); +} + +struct load_command *doloadcommand(void *start, struct load_command *lc, bool needsFlip, bool is32, struct gcinfo *gcip) { + if (needsFlip) { + lc->cmd = OSSwapInt32(lc->cmd); + lc->cmdsize = OSSwapInt32(lc->cmdsize); + } + + switch(lc->cmd) { + case LC_SEGMENT_64: + if (debug) printf("...segment64\n"); + if (is32) printf("XXX we have a 64-bit segment in a 32-bit mach-o\n"); + doseg64(start, (struct segment_command_64 *)lc, needsFlip, gcip); + break; + case LC_SEGMENT: + if (debug) printf("...segment32\n"); + doseg32(start, (struct segment_command *)lc, needsFlip, gcip); + break; + case LC_SYMTAB: if (debug) printf("...dynamic symtab\n"); break; + case LC_DYSYMTAB: if (debug) printf("...symtab\n"); break; + case LC_LOAD_DYLIB: + dodylib(start, (struct dylib_command *)lc, needsFlip); + break; + case LC_SUB_UMBRELLA: if (debug) printf("...load subumbrella\n"); break; + default: if (debug) printf("cmd is %x\n", lc->cmd); break; + } + + return (struct load_command *)((void *)lc + lc->cmdsize); +} + +void doofile(void *start, uint32_t size, struct gcinfo *gcip) { + struct mach_header *mh = (struct mach_header *)start; + bool isFlipped = false; + if (mh->magic == MH_CIGAM || mh->magic == MH_CIGAM_64) { + if (debug) printf("(flipping)\n"); + mh->magic = OSSwapInt32(mh->magic); + mh->cputype = OSSwapInt32(mh->cputype); + mh->cpusubtype = OSSwapInt32(mh->cpusubtype); + mh->filetype = OSSwapInt32(mh->filetype); + mh->ncmds = OSSwapInt32(mh->ncmds); + mh->sizeofcmds = OSSwapInt32(mh->sizeofcmds); + mh->flags = OSSwapInt32(mh->flags); + isFlipped = true; + } + if (rrOnly && mh->filetype != 6) return; // ignore executables + NXArchInfo *info = (NXArchInfo *)NXGetArchInfoFromCpuType(mh->cputype, mh->cpusubtype); + //printf("%s:", info->description); + gcip->arch = (char *)info->description; + //if (debug) printf("...description is %s\n", info->description); + bool is32 = (mh->cputype == 18 || mh->cputype == 7); + if (debug) printf("is 32? %d\n", is32); + if (debug) printf("filetype -> %d\n", mh->filetype); + if (debug) printf("ncmds -> %d\n", mh->ncmds); + struct load_command *lc = (is32 ? (struct load_command *)(mh + 1) : (struct load_command *)((struct mach_header_64 *)start + 1)); + int ncmds; + for (ncmds = 0; ncmds < mh->ncmds; ++ncmds) { + lc = doloadcommand(start, lc, isFlipped, is32, gcip); + } + //printf("\n"); +} + +void initGCInfo() { + bzero((void *)GCInfo, sizeof(GCInfo)); +} + +void printGCInfo(char *filename) { + if (!GCInfo[0].hasObjC) return; // don't bother + // verify that flags are all the same + uint32_t flags = GCInfo[0].flags; + bool allSame = true; + for (int i = 1; i < 4 && GCInfo[i].arch; ++i) { + if (flags != GCInfo[i].flags) { + allSame = false; + } + } + if (rrOnly) { + if (allSame && (flags & 0x2)) + return; + printf("*** not all GC in %s:\n", filename); + } + if (allSame && !verbose) { + printf("%s:", filename); + printflags(flags); + printf("\n"); + } + else { + printf("%s:\n", filename); + for (int i = 0; i < 4 && GCInfo[i].arch; ++i) { + printf("%s:", GCInfo[i].arch); + printflags(GCInfo[i].flags); + printf("\n"); + } + printf("\n"); + } +} + +void dofat(void *start) { + struct fat_header *fh = start; + bool needsFlip = false; + if (fh->magic == FAT_CIGAM) { + fh->nfat_arch = OSSwapInt32(fh->nfat_arch); + needsFlip = true; + } + if (debug) printf("%d architectures\n", fh->nfat_arch); + int narchs; + struct fat_arch *arch_ptr = (struct fat_arch *)(fh + 1); + for (narchs = 0; narchs < fh->nfat_arch; ++narchs) { + if (needsFlip) { + arch_ptr->offset = OSSwapInt32(arch_ptr->offset); + arch_ptr->size = OSSwapInt32(arch_ptr->size); + } + doofile(start+arch_ptr->offset, arch_ptr->size, &GCInfo[narchs]); + arch_ptr++; + } +} + +bool openFile(const char *filename) { + FileName = filename; + // get size + struct stat statb; + int fd = open(filename, 0); + if (fd < 0) { + printf("couldn't open %s for reading\n", filename); + return false; + } + int osresult = fstat(fd, &statb); + if (osresult != 0) { + printf("couldn't get size of %s\n", filename); + close(fd); + return false; + } + FileSize = statb.st_size; + FileBase = malloc(FileSize); + if (!FileBase) { + printf("couldn't malloc %d bytes\n", FileSize); + close(fd); + return false; + } + off_t readsize = read(fd, FileBase, FileSize); + if (readsize != FileSize) { + printf("read %d bytes, wanted %d\n", readsize, FileSize); + close(fd); + return false; + } + close(fd); + return true; +} + +void closeFile() { + free(FileBase); +} + +void dumpinfo(char *filename) { + initGCInfo(); + openFile(filename); + struct fat_header *fh = (struct fat_header *)FileBase; + if (fh->magic == FAT_MAGIC || fh->magic == FAT_CIGAM) { + dofat((void *)FileBase); + //printGCInfo(filename); + } + else if (fh->magic == MH_MAGIC || fh->magic == MH_CIGAM || fh->magic == MH_MAGIC_64 || fh->magic == MH_CIGAM_64) { + doofile((void *)FileBase, FileSize, &GCInfo[0]); + //printGCInfo(filename); + } + else if (!quiet) { + printf("don't understand %s!\n", filename); + } + closeFile(); + } + diff --git a/objc-exports b/objc-exports deleted file mode 100644 index b42dfb8..0000000 --- a/objc-exports +++ /dev/null @@ -1,187 +0,0 @@ -# Functions and variables explicitly exported from ObjC. -# GrP 2002-2-4 -# Note that some commonly used functions are *not* listed in the -# ObjC headers (e.g. objc_flush_caches()) -# List.h -.objc_class_name_List -# objc-class.h -_object_setInstanceVariable -_object_getInstanceVariable -_class_createInstance -_class_createInstanceFromZone -_class_setVersion -_class_getVersion -_class_getInstanceVariable -_class_getInstanceMethod -_class_getClassMethod -_class_addMethods -_class_removeMethods -_class_poseAs -_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 -_objc_exception_try_exit -_objc_exception_extract -_objc_exception_match -_objc_exception_get_functions -_objc_exception_set_functions -# objc-sync.h -_objc_sync_enter -_objc_sync_exit -_objc_sync_wait -_objc_sync_notify -_objc_sync_notifyAll -# objc-load.h -_objc_loadModules -_objc_loadModule -_objc_unloadModules -# objc-runtime.h -_objc_getClass -_objc_getMetaClass -_objc_msgSend -# non-nil entry points disabled for now -# _objc_msgSendNonNil -_objc_msgSend_fpret -_objc_msgSend_stret -# _objc_msgSendNonNil_stret -_objc_msgSendSuper -_objc_msgSendSuper_stret -_objc_msgSendv -_objc_msgSendv_fpret -_objc_msgSendv_stret -_objc_getClassList -_objc_getClasses -_objc_lookUpClass -_objc_getRequiredClass -_objc_addClass -_objc_setClassHandler -_objc_setMultithreaded -__alloc -__copy -__realloc -__dealloc -__zoneAlloc -__zoneRealloc -__zoneCopy -__error -# objc.h -_sel_isMapped -_sel_getName -_sel_getUid -_sel_registerName -_object_getClassName -_object_getIndexedIvars -# Object.h -.objc_class_name_Object -_object_dispose -_object_copy -_object_copyFromZone -_object_realloc -_object_reallocFromZone -# Protocol.h -.objc_class_name_Protocol -# error.h -# everything inside is declared but no longer defined?! -# hashtable2.h -_NXCreateHashTableFromZone -_NXCreateHashTable -_NXFreeHashTable -_NXEmptyHashTable -_NXResetHashTable -_NXCompareHashTables -_NXCopyHashTable -_NXCountHashTable -_NXHashMember -_NXHashGet -_NXHashInsert -_NXHashInsertIfAbsent -_NXHashRemove -_NXInitHashState -_NXNextHashState -_NXPtrHash -_NXStrHash -_NXPtrIsEqual -_NXStrIsEqual -_NXNoEffectFree -_NXReallyFree -_NXPtrPrototype -_NXStrPrototype -_NXPtrStructKeyPrototype -_NXStrStructKeyPrototype -_NXUniqueString -_NXUniqueStringWithLength -_NXUniqueStringNoCopy -_NXCopyStringBuffer -_NXCopyStringBufferFromZone -# maptable.h -_NXCreateMapTableFromZone -_NXCreateMapTable -_NXFreeMapTable -_NXResetMapTable -_NXCompareMapTables -_NXCountMapTable -_NXMapMember -_NXMapGet -_NXMapInsert -_NXMapRemove -_NXInitMapState -_NXNextMapState -_NXPtrValueMapPrototype -_NXStrValueMapPrototype -_NXObjectMapPrototype -# -# Functions that aren't in the headers but are used or are useful. -# -# sudo find / -xdev -type f -perm -0111 \! -name "libobjc*dylib" -print -exec nm -u {} \; > /tmp/all-used-symbols -# (repeat with any other disks you want checked, appending to the same file) -# nm /usr/lib/libobjc.dylib | awk '$2 ~ /^[ADST]$/' | colrm 1 11 | sort -u > /tmp/objc-exports -# (note that you need an unstripped, un-nmedited libobjc.dylib) -# grep -f /tmp/objc-exports /tmp/all-used-symbols | sort -u > /tmp/used-objc-symbols -# grep -v -f /tmp/used-objc-symbols /tmp/objc-exports | sort -u > /tmp/unused-objc-symbols -# -__class_printDuplicateCacheEntries -__class_printMethodCaches -__class_printMethodCacheStatistics -__objc_create_zone -__objc_error -__objc_flush_caches -__objc_msgForward -__objc_resolve_categories_for_class -__objc_setClassLoader -__objc_setNilReceiver -__objc_getNilReceiver -__objcInit -_class_lookupMethod -_class_respondsToMethod -_instrumentObjcMessageSends -_objc_getOrigClass -# magic, or garbage? -__dummy -_do_not_remove_this_dummy_function -# used by debugging tools like heap -__objc_debug_class_hash -# used by Foundation's NSAutoreleaseFreedObjectCheckEnabled -__objc_getFreedObjectClass diff --git a/runtime/objc-moninit.c b/runtime/Accessors.subproj/objc-accessors-arch.s similarity index 69% rename from runtime/objc-moninit.c rename to runtime/Accessors.subproj/objc-accessors-arch.s index f764048..b44adff 100644 --- a/runtime/objc-moninit.c +++ b/runtime/Accessors.subproj/objc-accessors-arch.s @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -23,15 +21,14 @@ * @APPLE_LICENSE_HEADER_END@ */ -#ifdef moninitobjc -#undef moninitobjc - -unsigned long * -moninitobjc(unsigned long moncount_addr) -{ - extern void _objc_inform(const char *format, ...); - _objc_inform ("moninitobjc is obsoleted, refer to documentation for how to do profiling\n"); - return (0); -} - +#if defined (__i386__) || defined (i386) + #include "objc-accessors-i386.s" +#elif defined (__ppc__) || defined(ppc) + #include "objc-accessors-ppc.s" +#elif defined (__ppc64__) || defined(ppc64) + #include "objc-accessors-ppc64.s" +#elif defined (__x86_64__) + #include "objc-accessors-x86_64.s" +#else + #error Architecture not supported #endif diff --git a/runtime/Accessors.subproj/objc-accessors-i386.s b/runtime/Accessors.subproj/objc-accessors-i386.s new file mode 100644 index 0000000..97e8f74 --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors-i386.s @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +////////////////////////////////////////////////////////////////////// +// +// ENTRY functionName +// +// Assembly directives to begin an exported function. +// +// Takes: functionName - name of the exported function +////////////////////////////////////////////////////////////////////// + +.macro ENTRY + .text + .globl $0 +$0: +.endmacro + +////////////////////////////////////////////////////////////////////// +// +// END_ENTRY functionName +// +// Assembly directives to end an exported function. Just a placeholder, +// a close-parenthesis for ENTRY, until it is needed for something. +// +// Takes: functionName - name of the exported function +////////////////////////////////////////////////////////////////////// + +.macro END_ENTRY +.endmacro + +////////////////////////////////////////////////////////////////////// +// +// OBJC_GET_PROPERTY_OFFSET offset +// +// Optimized id typed accessor methods. +// Generates an accesssor for a specified compile time offset. +// +// Takes: offset - offset of an id typed instance variable +////////////////////////////////////////////////////////////////////// + +.macro OBJC_GET_PROPERTY_OFFSET + .private_extern __objc_getProperty_offset_$0 + ENTRY __objc_getProperty_offset_$0 + movl 4(%esp), %eax + movl $0(%eax), %eax + ret + END_ENTRY __objc_getProperty_offset_$0 +.endmacro + +/* + * Thunk to retrieve PC. + * `call 1; 1: pop` sequence breaks any branch-prediction stack. + */ +L_get_pc_thunk.edx: + movl (%esp,1), %edx + ret + +.macro LAZY_PIC_FUNCTION_STUB +.data +.picsymbol_stub +L$0$stub: + .indirect_symbol $0 + call L_get_pc_thunk.edx +L0$$0: + movl L$0$lz - L0$$0(%edx), %ecx + jmp *%ecx +L$0$stub_binder: + lea L$0$lz - L0$$0(%edx),%eax + pushl %eax + jmp dyld_stub_binding_helper + nop +.data +.lazy_symbol_pointer +L$0$lz: + .indirect_symbol $0 + .long L$0$stub_binder +.endmacro + +LAZY_PIC_FUNCTION_STUB _objc_assign_ivar_gc +#define OBJC_ASSIGN_IVAR L_objc_assign_ivar_gc$stub // call objc_assign_ivar_gc() directly to avoid extra levels of testing/branching + +.macro OBJC_SET_PROPERTY_OFFSET + .private_extern __objc_setProperty_offset_$0 + ENTRY __objc_setProperty_offset_$0 + movl 4(%esp), %eax + movl %eax, 8(%esp) // pass self as the second parameter. + movl 12(%esp), %eax + movl %eax, 4(%esp) // pass value as the first parameter. + movl $$$0, 12(%esp) // pass the offset as the third parameter. + jmp OBJC_ASSIGN_IVAR // objc_assign_ivar_gc() is __private_extern__ + END_ENTRY __objc_setProperty_offset_$0 +.endmacro + +/******************************************************************** + * id _objc_getProperty_offset_N(id self, SEL _cmd); + ********************************************************************/ + + OBJC_GET_PROPERTY_OFFSET 0 + OBJC_GET_PROPERTY_OFFSET 4 + OBJC_GET_PROPERTY_OFFSET 8 + OBJC_GET_PROPERTY_OFFSET 12 + OBJC_GET_PROPERTY_OFFSET 16 + OBJC_GET_PROPERTY_OFFSET 20 + OBJC_GET_PROPERTY_OFFSET 24 + OBJC_GET_PROPERTY_OFFSET 28 + OBJC_GET_PROPERTY_OFFSET 32 + OBJC_GET_PROPERTY_OFFSET 36 + OBJC_GET_PROPERTY_OFFSET 40 + OBJC_GET_PROPERTY_OFFSET 44 + OBJC_GET_PROPERTY_OFFSET 48 + OBJC_GET_PROPERTY_OFFSET 52 + OBJC_GET_PROPERTY_OFFSET 56 + OBJC_GET_PROPERTY_OFFSET 60 + OBJC_GET_PROPERTY_OFFSET 64 + +/******************************************************************** + * id _objc_setProperty_offset_N(id self, SEL _cmd, id value); + ********************************************************************/ + + OBJC_SET_PROPERTY_OFFSET 0 + OBJC_SET_PROPERTY_OFFSET 4 + OBJC_SET_PROPERTY_OFFSET 8 + OBJC_SET_PROPERTY_OFFSET 12 + OBJC_SET_PROPERTY_OFFSET 16 + OBJC_SET_PROPERTY_OFFSET 20 + OBJC_SET_PROPERTY_OFFSET 24 + OBJC_SET_PROPERTY_OFFSET 28 + OBJC_SET_PROPERTY_OFFSET 32 + OBJC_SET_PROPERTY_OFFSET 36 + OBJC_SET_PROPERTY_OFFSET 40 + OBJC_SET_PROPERTY_OFFSET 44 + OBJC_SET_PROPERTY_OFFSET 48 + OBJC_SET_PROPERTY_OFFSET 52 + OBJC_SET_PROPERTY_OFFSET 56 + OBJC_SET_PROPERTY_OFFSET 60 + OBJC_SET_PROPERTY_OFFSET 64 diff --git a/runtime/Accessors.subproj/objc-accessors-ppc.s b/runtime/Accessors.subproj/objc-accessors-ppc.s new file mode 100644 index 0000000..df6aa0e --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors-ppc.s @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 ppc version needs to be implemented. diff --git a/runtime/Accessors.subproj/objc-accessors-ppc64.s b/runtime/Accessors.subproj/objc-accessors-ppc64.s new file mode 100644 index 0000000..b7a0603 --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors-ppc64.s @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 ppc64 version needs to be implemented. diff --git a/runtime/Accessors.subproj/objc-accessors-table.h b/runtime/Accessors.subproj/objc-accessors-table.h new file mode 100644 index 0000000..81fdb33 --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors-table.h @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2006 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +/* Support for optimized accessor methods. Currently optimized accessor methods are provided for ivar offsets from 0 to 64. */ + +#define ALWAYS_USE_C_ACCESSOR_METHODS 0 + +// set of property getters for specific offsets. +#define GETPROPERTY_OFFSET(offset) _objc_getProperty_offset_ ## offset +#define DECLARE_GETPROPERTY_OFFSET(offset) extern id GETPROPERTY_OFFSET(offset)(id self, SEL _cmd) +#define IMPLEMENT_GETPROPERTY_OFFSET(offset) static id GETPROPERTY_OFFSET(offset)(id self, SEL _cmd) { return *(id*)((char*)self + offset); } + +#if ALWAYS_USE_C_ACCESSOR_METHODS || defined(__ppc__) || defined(__ppc64__) || defined(__x86_64__) +// C versions with hard-coded offsets. may be good enough in most cases. +IMPLEMENT_GETPROPERTY_OFFSET(0) +IMPLEMENT_GETPROPERTY_OFFSET(4) +IMPLEMENT_GETPROPERTY_OFFSET(8) +IMPLEMENT_GETPROPERTY_OFFSET(12) +IMPLEMENT_GETPROPERTY_OFFSET(16) +IMPLEMENT_GETPROPERTY_OFFSET(20) +IMPLEMENT_GETPROPERTY_OFFSET(24) +IMPLEMENT_GETPROPERTY_OFFSET(28) +IMPLEMENT_GETPROPERTY_OFFSET(32) +IMPLEMENT_GETPROPERTY_OFFSET(36) +IMPLEMENT_GETPROPERTY_OFFSET(40) +IMPLEMENT_GETPROPERTY_OFFSET(44) +IMPLEMENT_GETPROPERTY_OFFSET(48) +IMPLEMENT_GETPROPERTY_OFFSET(52) +IMPLEMENT_GETPROPERTY_OFFSET(56) +IMPLEMENT_GETPROPERTY_OFFSET(60) +IMPLEMENT_GETPROPERTY_OFFSET(64) +#else +// forward delcarations to assembly versions. only on i386 right now. +DECLARE_GETPROPERTY_OFFSET(0); +DECLARE_GETPROPERTY_OFFSET(4); +DECLARE_GETPROPERTY_OFFSET(8); +DECLARE_GETPROPERTY_OFFSET(12); +DECLARE_GETPROPERTY_OFFSET(16); +DECLARE_GETPROPERTY_OFFSET(20); +DECLARE_GETPROPERTY_OFFSET(24); +DECLARE_GETPROPERTY_OFFSET(28); +DECLARE_GETPROPERTY_OFFSET(32); +DECLARE_GETPROPERTY_OFFSET(36); +DECLARE_GETPROPERTY_OFFSET(40); +DECLARE_GETPROPERTY_OFFSET(44); +DECLARE_GETPROPERTY_OFFSET(48); +DECLARE_GETPROPERTY_OFFSET(52); +DECLARE_GETPROPERTY_OFFSET(56); +DECLARE_GETPROPERTY_OFFSET(60); +DECLARE_GETPROPERTY_OFFSET(64); +#endif + +static void* _getProperty_offset_table[] = { + GETPROPERTY_OFFSET(0), + GETPROPERTY_OFFSET(4), + GETPROPERTY_OFFSET(8), + GETPROPERTY_OFFSET(12), + GETPROPERTY_OFFSET(16), + GETPROPERTY_OFFSET(20), + GETPROPERTY_OFFSET(24), + GETPROPERTY_OFFSET(28), + GETPROPERTY_OFFSET(32), + GETPROPERTY_OFFSET(36), + GETPROPERTY_OFFSET(40), + GETPROPERTY_OFFSET(44), + GETPROPERTY_OFFSET(48), + GETPROPERTY_OFFSET(52), + GETPROPERTY_OFFSET(56), + GETPROPERTY_OFFSET(60), + GETPROPERTY_OFFSET(64), +}; + +#undef GETPROPERTY_OFFSET +#undef DECLARE_GETPROPERTY_OFFSET +#undef IMPLEMENT_GETPROPERTY_OFFSET +#define GETPROPERTY_IMP(offset) ((offset <= 64) ? (IMP)_getProperty_offset_table[offset >> 2] : NULL) + +// set of property setters for specific offsets. +#define SETPROPERTY_OFFSET(offset) _objc_setProperty_offset_ ## offset +#define DECLARE_SETPROPERTY_OFFSET(offset) extern id SETPROPERTY_OFFSET(offset)(id self, SEL _cmd, ...) +#define IMPLEMENT_SETPROPERTY_OFFSET(offset) __private_extern__ void SETPROPERTY_OFFSET(offset)(id self, SEL _cmd, id value) { objc_assign_ivar_gc(value, self, offset); } + +#if ALWAYS_USE_C_ACCESSOR_METHODS || !defined(__i386__) +// C versions with hard-coded offsets. may be good enough in most cases. +IMPLEMENT_SETPROPERTY_OFFSET(0) +IMPLEMENT_SETPROPERTY_OFFSET(4) +IMPLEMENT_SETPROPERTY_OFFSET(8) +IMPLEMENT_SETPROPERTY_OFFSET(12) +IMPLEMENT_SETPROPERTY_OFFSET(16) +IMPLEMENT_SETPROPERTY_OFFSET(20) +IMPLEMENT_SETPROPERTY_OFFSET(24) +IMPLEMENT_SETPROPERTY_OFFSET(28) +IMPLEMENT_SETPROPERTY_OFFSET(32) +IMPLEMENT_SETPROPERTY_OFFSET(36) +IMPLEMENT_SETPROPERTY_OFFSET(40) +IMPLEMENT_SETPROPERTY_OFFSET(44) +IMPLEMENT_SETPROPERTY_OFFSET(48) +IMPLEMENT_SETPROPERTY_OFFSET(52) +IMPLEMENT_SETPROPERTY_OFFSET(56) +IMPLEMENT_SETPROPERTY_OFFSET(60) +IMPLEMENT_SETPROPERTY_OFFSET(64) +#else +// forward delcarations to assembly versions. only on i386 right now. +DECLARE_SETPROPERTY_OFFSET(0); +DECLARE_SETPROPERTY_OFFSET(4); +DECLARE_SETPROPERTY_OFFSET(8); +DECLARE_SETPROPERTY_OFFSET(12); +DECLARE_SETPROPERTY_OFFSET(16); +DECLARE_SETPROPERTY_OFFSET(20); +DECLARE_SETPROPERTY_OFFSET(24); +DECLARE_SETPROPERTY_OFFSET(28); +DECLARE_SETPROPERTY_OFFSET(32); +DECLARE_SETPROPERTY_OFFSET(36); +DECLARE_SETPROPERTY_OFFSET(40); +DECLARE_SETPROPERTY_OFFSET(44); +DECLARE_SETPROPERTY_OFFSET(48); +DECLARE_SETPROPERTY_OFFSET(52); +DECLARE_SETPROPERTY_OFFSET(56); +DECLARE_SETPROPERTY_OFFSET(60); +DECLARE_SETPROPERTY_OFFSET(64); +#endif + +static void* _setProperty_offset_table[] = { + SETPROPERTY_OFFSET(0), + SETPROPERTY_OFFSET(4), + SETPROPERTY_OFFSET(8), + SETPROPERTY_OFFSET(12), + SETPROPERTY_OFFSET(16), + SETPROPERTY_OFFSET(20), + SETPROPERTY_OFFSET(24), + SETPROPERTY_OFFSET(28), + SETPROPERTY_OFFSET(32), + SETPROPERTY_OFFSET(36), + SETPROPERTY_OFFSET(40), + SETPROPERTY_OFFSET(44), + SETPROPERTY_OFFSET(48), + SETPROPERTY_OFFSET(52), + SETPROPERTY_OFFSET(56), + SETPROPERTY_OFFSET(60), + SETPROPERTY_OFFSET(64), +}; + +#undef SETPROPERTY_OFFSET +#undef DECLARE_SETPROPERTY_OFFSET +#undef IMPLEMENT_SETPROPERTY_OFFSET +#define SETPROPERTY_IMP(offset) ((offset <= 64) ? (IMP)_setProperty_offset_table[offset >> 2] : NULL) diff --git a/runtime/Accessors.subproj/objc-accessors-x86_64.s b/runtime/Accessors.subproj/objc-accessors-x86_64.s new file mode 100644 index 0000000..ea1026d --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors-x86_64.s @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 x86-64 version needs to be implemented. diff --git a/runtime/Accessors.subproj/objc-accessors.h b/runtime/Accessors.subproj/objc-accessors.h new file mode 100644 index 0000000..5342bd2 --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +#ifndef _OBJC_ACCESSORS_H_ +#define _OBJC_ACCESSORS_H_ + +#import +#import + +// Called under non-GC for retain or copy attributed properties +void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, BOOL shouldCopy); +id objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, BOOL atomic); + +// Called under GC by compiler for copying structures containing objects or other strong pointers when +// the destination memory is not known to be stack local memory. +// Called to read instance variable structures (or other non-word sized entities) atomically +void objc_copyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, BOOL hasStrong); + +// OBSOLETE + +@protocol NSCopying; + +// called for @property(copy) +id object_getProperty_bycopy(id object, SEL _cmd, ptrdiff_t offset); +void object_setProperty_bycopy(id object, SEL _cmd, id value, ptrdiff_t offset); + +// called for @property(retain) +id object_getProperty_byref(id object, SEL _cmd, ptrdiff_t offset); +void object_setProperty_byref(id object, SEL _cmd, id value, ptrdiff_t offset); + +#endif diff --git a/runtime/Accessors.subproj/objc-accessors.m b/runtime/Accessors.subproj/objc-accessors.m new file mode 100644 index 0000000..3add7d2 --- /dev/null +++ b/runtime/Accessors.subproj/objc-accessors.m @@ -0,0 +1,231 @@ +/* + * Copyright (c) 2006-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 +#import + +#import + +#import "objc-accessors.h" +#import +#import +#import "../objc-private.h" + +#import "/usr/local/include/auto_zone.h" + +#import "objc-accessors-table.h" + +// stub interface declarations to make compiler happy. + +@interface __NSCopyable +- (id)copyWithZone:(void *)zone; +@end + +@interface __NSRetained +- (id)retain; +- (oneway void)release; +- (id)autorelease; +@end + +static /*inline*/ IMP optimized_getter_for_gc(id self, SEL name, ptrdiff_t offset) { + // replace this method with a faster version that does no message sends, and fewer tests. + IMP getter = GETPROPERTY_IMP(offset); + if (getter != NULL) { + // HACK ALERT: replaces the IMP in the cache! + Class cls = self->isa; + Method method = class_getInstanceMethod(cls, name); + if (method_getImplementation(method) != getter) + method_setImplementation(method, getter); + } + return getter; +} + +static /*inline*/ IMP optimized_setter_for_gc(id self, SEL name, ptrdiff_t offset) { + // replace this method with a faster version that does no message sends. + IMP setter = SETPROPERTY_IMP(offset); + if (setter != NULL) { + // HACK ALERT: replaces the IMP in the cache! + Class cls = self->isa; + Method method = class_getInstanceMethod(cls, name); + if (method_getImplementation(method) != setter) + method_setImplementation(method, setter); + } + return setter; +} + +// ATOMIC entry points + +typedef uintptr_t spin_lock_t; +extern void _spin_lock(spin_lock_t *lockp); +extern int _spin_lock_try(spin_lock_t *lockp); +extern void _spin_unlock(spin_lock_t *lockp); + +/* need to consider cache line contention - space locks out XXX */ + +#define GOODPOWER 7 +#define GOODMASK ((1<> 5) & GOODMASK) +static spin_lock_t PropertyLocks[1 << GOODPOWER] = { 0 }; + +id objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, BOOL atomic) { + if (UseGC) { + // FIXME: we could optimize getters when a class is first initialized, then KVO won't get confused. + if (false) { + IMP getter = optimized_getter_for_gc(self, _cmd, offset); + if (getter) return getter(self, _cmd); + } + return *(id*) ((char*)self + offset); + } + + // Retain release world + id *slot = (id*) ((char*)self + offset); + if (!atomic) return *slot; + + // Atomic retain release world + spin_lock_t *slotlock = &PropertyLocks[GOODHASH(slot)]; + _spin_lock(slotlock); + id value = [*slot retain]; + _spin_unlock(slotlock); + + // for performance, we (safely) issue the autorelease OUTSIDE of the spinlock. + return [value autorelease]; +} + + +void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, BOOL shouldCopy) { + if (UseGC) { + if (shouldCopy) { + newValue = [newValue copyWithZone:NULL]; + } + else if (false) { + IMP setter = optimized_setter_for_gc(self, _cmd, offset); + if (setter) { + setter(self, _cmd, newValue); + return; + } + } + objc_assign_ivar_internal(newValue, self, offset); + return; + } + + // Retain release world + id oldValue, *slot = (id*) ((char*)self + offset); + + // atomic or not, if slot would be unchanged, do nothing. + if (!shouldCopy && *slot == newValue) return; + + newValue = (shouldCopy ? [newValue copyWithZone:NULL] : [newValue retain]); + + if (!atomic) { + oldValue = *slot; + *slot = newValue; + } else { + spin_lock_t *slotlock = &PropertyLocks[GOODHASH(slot)]; + _spin_lock(slotlock); + oldValue = *slot; + *slot = newValue; + _spin_unlock(slotlock); + } + + [oldValue release]; +} + + +__private_extern__ auto_zone_t *gc_zone; + +// This entry point was designed wrong. When used as a getter, src needs to be locked so that +// if simultaneously used for a setter then there would be contention on src. +// So we need two locks - one of which will be contended. +void objc_copyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, BOOL hasStrong) { + static spin_lock_t StructLocks[1 << GOODPOWER] = { 0 }; + spin_lock_t *lockfirst = NULL; + spin_lock_t *locksecond = NULL; + if (atomic) { + lockfirst = &StructLocks[GOODHASH(src)]; + locksecond = &StructLocks[GOODHASH(dest)]; + // order the locks by address so that we don't deadlock + if (lockfirst > locksecond) { + lockfirst = locksecond; + locksecond = &StructLocks[GOODHASH(src)]; + } + else if (lockfirst == locksecond) { + // lucky - we only need one lock + locksecond = NULL; + } + _spin_lock(lockfirst); + if (locksecond) _spin_lock(locksecond); + } + if (UseGC && hasStrong) { + auto_zone_write_barrier_memmove(gc_zone, dest, src, size); + } + else { + memmove(dest, src, size); + } + if (atomic) { + _spin_unlock(lockfirst); + if (locksecond) _spin_unlock(locksecond); + } +} + +// PRE-ATOMIC entry points + +id object_getProperty_bycopy(id self, SEL _cmd, ptrdiff_t offset) { + if (UseGC) { + IMP getter = optimized_getter_for_gc(self, _cmd, offset); + if (getter) return getter(self, _cmd); + } + id *slot = (id*) ((char*)self + offset); + return *slot; +} + +void object_setProperty_bycopy(id self, SEL _cmd, id value, ptrdiff_t offset) { + id *slot = (id*) ((char*)self + offset); + id oldValue = *slot; + objc_assign_ivar_internal([value copyWithZone:NULL], self, offset); + [oldValue release]; +} + +id object_getProperty_byref(id self, SEL _cmd, ptrdiff_t offset) { + if (UseGC) { + IMP getter = optimized_getter_for_gc(self, _cmd, offset); + if (getter) return getter(self, _cmd); + } + id *slot = (id*) ((char*)self + offset); + return *slot; +} + +void object_setProperty_byref(id self, SEL _cmd, id value, ptrdiff_t offset) { + if (UseGC) { + IMP setter = optimized_setter_for_gc(self, _cmd, offset); + if (setter) { + setter(self, _cmd, value); + return; + } + } + id *slot = (id*) ((char*)self + offset); + id oldValue = *slot; + if (oldValue != value) { + objc_assign_ivar_internal([value retain], self, offset); + [oldValue release]; + } +} diff --git a/runtime/Auto.subproj/objc-auto-i386.s b/runtime/Auto.subproj/objc-auto-i386.s index 082949e..9d16245 100644 --- a/runtime/Auto.subproj/objc-auto-i386.s +++ b/runtime/Auto.subproj/objc-auto-i386.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004, 2007 Apple 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 @@ -23,4 +21,62 @@ * @APPLE_LICENSE_HEADER_END@ */ -#warning Intel version needs to be implemented. +/* + This file defines the non-GC variants of objc_assign_* on a dedicated + page in the (__DATA,__data) section. At load time under GC, each + routine is overwritten with a jump to its GC variant. It is necessary + for these routines to exist on a dedicated page for vm_protect to + work properly in the GC case. The page exists in the data segment to + reduce the kernel's page table overhead. + + Note: To avoid wasting more space than necessary at runtime, this file + must not contain anything other than the objc_assign_* routines. +*/ + +.data +.align 12 // align to page boundary + +LNonGCAssigns$Begin: + +// id objc_assign_ivar(id value, id dest, ptrdiff_t offset); +.globl _objc_assign_ivar +_objc_assign_ivar: + pushl %ebp + movl %esp,%ebp + movl 0x08(%ebp),%eax // value + movl 0x0c(%ebp),%ecx // dest + movl 0x10(%ebp),%edx // offset + movl %eax,(%ecx,%edx) // return (*(dest + offset) = value); + leave + ret + +// id objc_assign_global(id value, id *dest); +.globl _objc_assign_global +_objc_assign_global: + pushl %ebp + movl %esp,%ebp + movl 0x08(%ebp),%eax // value + movl 0x0c(%ebp),%edx // dest + movl %eax,(%edx) // return (*dest = value); + leave + ret + +// As of OS X 10.5, objc_assign_strongCast_non_gc is identical to +// objc_assign_global_non_gc. + +// id objc_assign_strongCast(id value, id *dest); +.globl _objc_assign_strongCast +_objc_assign_strongCast: + pushl %ebp + movl %esp,%ebp + movl 0x08(%ebp),%eax // value + movl 0x0c(%ebp),%edx // dest + movl %eax,(%edx) // return (*dest = value); + leave + ret + +LNonGCAssigns$End: + +// Claim the remainder of the page. +.set L$set$assignsSize,LNonGCAssigns$End-LNonGCAssigns$Begin +.space 4096-L$set$assignsSize diff --git a/runtime/Auto.subproj/objc-auto-ppc.s b/runtime/Auto.subproj/objc-auto-ppc.s index 33eb98f..026467b 100644 --- a/runtime/Auto.subproj/objc-auto-ppc.s +++ b/runtime/Auto.subproj/objc-auto-ppc.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004, 2006 Apple 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 @@ -42,7 +40,7 @@ _$0: ; primary entry point ba $1 ; branch to runtime page - .globl _$0_non_gc ; non_gc entry point name + .private_extern _$0_non_gc ; non_gc entry point name _$0_non_gc: ; non_gc entry point .endmacro diff --git a/runtime/Auto.subproj/objc-auto-ppc64.s b/runtime/Auto.subproj/objc-auto-ppc64.s new file mode 100644 index 0000000..a17f1a5 --- /dev/null +++ b/runtime/Auto.subproj/objc-auto-ppc64.s @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2004 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 ppc64 version needs to be implemented. diff --git a/runtime/Auto.subproj/objc-auto-x86_64.s b/runtime/Auto.subproj/objc-auto-x86_64.s new file mode 100644 index 0000000..561b38e --- /dev/null +++ b/runtime/Auto.subproj/objc-auto-x86_64.s @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2006-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 file defines the non-GC variants of objc_assign_* on a dedicated + page in the (__DATA,__data) section. At load time under GC, each + routine is overwritten with a jump to its GC variant. It is necessary + for these routines to exist on a dedicated page for vm_protect to + work properly in the GC case. The page exists in the data segment to + reduce the kernel's page table overhead. + + Note: To avoid wasting more space than necessary at runtime, this file + must not contain anything other than the objc_assign_* routines. +*/ + +.data +.align 12 // align to page boundary + +LNonGCAssigns$Begin: + +// id objc_assign_ivar(id value, id dest, ptrdiff_t offset); +.globl _objc_assign_ivar +_objc_assign_ivar: + pushq %rbp + movq %rsp,%rbp + movq %rdi,(%rsi,%rdx) // *(dest + offset) = value); + movq %rdi,%rax // return value; + leave + ret + +// id objc_assign_global(id value, id *dest); +.globl _objc_assign_global +_objc_assign_global: + pushq %rbp + movq %rsp,%rbp + movq %rdi,(%rsi) // *(dest = value); + movq %rdi,%rax // return value; + leave + ret + +// As of OS X 10.5, objc_assign_strongCast_non_gc is identical to +// objc_assign_global_non_gc. + +// id objc_assign_strongCast(id value, id *dest); +.globl _objc_assign_strongCast +_objc_assign_strongCast: + pushq %rbp + movq %rsp,%rbp + movq %rdi,(%rsi) // *(dest = value); + movq %rdi,%rax // return value; + leave + ret + +LNonGCAssigns$End: + +// Claim the remainder of the page. +.set L$set$assignsSize,LNonGCAssigns$End-LNonGCAssigns$Begin +.space 4096-L$set$assignsSize diff --git a/runtime/Auto.subproj/objc-auto.s b/runtime/Auto.subproj/objc-auto.s index 220e3d0..601515c 100644 --- a/runtime/Auto.subproj/objc-auto.s +++ b/runtime/Auto.subproj/objc-auto.s @@ -1,23 +1,22 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2006 Apple 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. + * 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 + * 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. + * 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@ */ @@ -27,6 +26,10 @@ #include "objc-auto-i386.s" #elif defined (__ppc__) || defined(ppc) #include "objc-auto-ppc.s" +#elif defined (__ppc64__) || defined(ppc64) + #include "objc-auto-ppc64.s" +#elif defined (__x86_64__) + #include "objc-auto-x86_64.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 d379ddc..959791a 100644 --- a/runtime/Messengers.subproj/objc-msg-i386.s +++ b/runtime/Messengers.subproj/objc-msg-i386.s @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -30,18 +28,10 @@ ******************************************************************** ********************************************************************/ -// The assembler syntax for an immediate value is the same as the -// syntax for a macro argument number (dollar sign followed by the -// digits). Argument number wins in this ambiguity. Until the -// 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 +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" + /******************************************************************** * Data used by the ObjC runtime. @@ -52,7 +42,7 @@ // Substitute receiver for messages sent to nil (usually also nil) // id _objc_nilReceiver .align 4 -.globl __objc_nilReceiver +.private_extern __objc_nilReceiver __objc_nilReceiver: .long 0 @@ -60,7 +50,7 @@ __objc_nilReceiver: // to get the critical regions for which method caches // cannot be garbage collected. -.globl _objc_entryPoints +.private_extern _objc_entryPoints _objc_entryPoints: .long __cache_getImp .long __cache_getMethod @@ -71,7 +61,7 @@ _objc_entryPoints: .long _objc_msgSendSuper_stret .long 0 -.globl _objc_exitPoints +.private_extern _objc_exitPoints _objc_exitPoints: .long LGetImpExit .long LGetMethodExit @@ -83,20 +73,6 @@ _objc_exitPoints: .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. @@ -114,15 +90,15 @@ L_get_pc_thunk.edx: .picsymbol_stub ;\ L ## name ## $stub: ;\ .indirect_symbol name ;\ - call L_get_pc_thunk.edx ;\ + call L0$ ## name ;\ L0$ ## name: ;\ + popl %edx ;\ movl L ## name ## $lz-L0$ ## name(%edx),%ecx ;\ - jmp %ecx ;\ + jmp *%ecx ;\ L ## name ## $stub_binder: ;\ lea L ## name ## $lz-L0$ ## name(%edx),%eax ;\ pushl %eax ;\ jmp dyld_stub_binding_helper ;\ - nop ;\ .data ;\ .lazy_symbol_pointer ;\ L ## name ## $lz: ;\ @@ -246,8 +222,8 @@ EXTERNAL_SYMBOL = 1 .macro LOAD_STATIC_WORD #if defined(__DYNAMIC__) - call L_get_pc_thunk.edx -1: + call 1f +1: popl %edx .if $2 == EXTERNAL_SYMBOL movl L$1-1b(%edx),$0 movl 0($0),$0 @@ -278,8 +254,8 @@ EXTERNAL_SYMBOL = 1 .macro LEA_STATIC_DATA #if defined(__DYNAMIC__) - call L_get_pc_thunk.edx -1: + call 1f +1: popl %edx .if $2 == EXTERNAL_SYMBOL movl L$1-1b(%edx),$0 .elseif $2 == LOCAL_SYMBOL @@ -336,7 +312,7 @@ $0: // Current stack contents: ret pushl %ebp movl %esp,%ebp - subl $kEight,%esp + subl $$8,%esp // Current stack contents: ret, ebp, pad, pad CALL_EXTERN(mcount) movl %ebp,%esp @@ -357,6 +333,8 @@ $0: // 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) +// selector in %ecx +// class to search in %edx // // cacheMissLabel = label to branch to iff method is not cached // @@ -381,33 +359,9 @@ CACHE_GET = 2 // first argument is class, search that class .macro CacheLookup // load variables and save caller registers. -// Overlapped to prevent AGI -.if $0 == WORD_RETURN // Regular word return -.if $1 == MSG_SEND // MSG_SEND - movl isa(%eax), %eax // class = self->isa - movl selector(%esp), %ecx // get selector -.elseif $1 == MSG_SENDSUPER // MSG_SENDSUPER - movl super(%esp), %eax // get objc_super address - movl class(%eax), %eax // class = caller->class - movl selector(%esp), %ecx // get selector -.else // CACHE_GET - movl selector(%esp), %ecx // get selector - class already in eax -.endif -.else // Struct return -.if $1 == MSG_SEND // MSG_SEND (stret) - movl isa(%eax), %eax // class = self->isa - movl (selector_stret)(%esp), %ecx // get selector -.elseif $1 == MSG_SENDSUPER // MSG_SENDSUPER (stret) - movl super_stret(%esp), %eax // get objc_super address - movl class(%eax), %eax // class = caller->class - movl (selector_stret)(%esp), %ecx // get selector -.else // CACHE_GET - !! This should not happen. -.endif -.endif pushl %edi // save scratch register - movl cache(%eax), %eax // cache = class->cache + movl cache(%edx), %edi // cache = class->cache pushl %esi // save scratch register #if defined(OBJC_INSTRUMENTED) @@ -415,19 +369,15 @@ CACHE_GET = 2 // first argument is class, search that class pushl %eax // save cache pointer xorl %ebx, %ebx // probeCount = 0 #endif - leal buckets(%eax), %edi // buckets = &cache->buckets - movl mask(%eax), %esi // mask = cache->mask + movl mask(%edi), %esi // mask = cache->mask + leal buckets(%edi), %edi // buckets = &cache->buckets movl %ecx, %edx // index = selector -#ifdef NO_MACRO_CONSTS - shrl $kTwo, %edx // index = selector >> 2 -#else - shrl $2, %edx // index = selector >> 2 -#endif + shrl $$2, %edx // index = selector >> 2 // search the receiver's cache LMsgSendProbeCache_$0_$1_$2: #if defined(OBJC_INSTRUMENTED) - addl $kOne, %ebx // probeCount += 1 + addl $$1, %ebx // probeCount += 1 #endif andl %esi, %edx // index &= mask movl (%edi, %edx, 4), %eax // method = buckets[index] @@ -436,7 +386,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 - addl $kOne, %edx // bump index ... + addl $$1, %edx // bump index ... jmp LMsgSendProbeCache_$0_$1_$2 // ... and loop // not found in cache: restore state and go to callers handler @@ -448,17 +398,13 @@ LMsgSendCacheMiss_$0_$1_$2: je LMsgSendMissInstrumentDone_$0_$1_$2 // ... emptyCache, do not record anything // locate and update the CacheInstrumentation structure - addl $kOne, %esi // entryCount = mask + 1 -#ifdef NO_MACRO_CONSTS - shll $kTwo, %esi // tableSize = entryCount * sizeof(entry) -#else - shll $2, %esi // tableSize = entryCount * sizeof(entry) -#endif + addl $$1, %esi // entryCount = mask + 1 + shll $$2, %esi // tableSize = entryCount * sizeof(entry) addl $buckets, %esi // offset = buckets + tableSize addl %edx, %esi // cacheData = &cache->buckets[mask+1] movl missCount(%esi), %edi // - addl $kOne, %edi // + addl $$1, %edi // movl %edi, missCount(%esi) // cacheData->missCount += 1 movl missProbes(%esi), %edi // addl %ebx, %edi // @@ -475,14 +421,10 @@ LMsgSendMaxMissProbeOK_$0_$1_$2: movl $(CACHE_HISTOGRAM_SIZE-1), %ebx LMsgSendMissHistoIndexSet_$0_$1_$2: LEA_STATIC_DATA %esi, _CacheMissHistogram, EXTERNAL_SYMBOL -#ifdef NO_MACRO_CONSTS - shll $kTwo, %ebx // convert probeCount to histogram index -#else - shll $2, %ebx // convert probeCount to histogram index -#endif + shll $$2, %ebx // convert probeCount to histogram index addl %ebx, %esi // calculate &CacheMissHistogram[probeCount<<2] movl 0(%esi), %edi // get current tally - addl $kOne, %edi // + addl $$1, %edi // movl %edi, 0(%esi) // tally += 1 LMsgSendMissInstrumentDone_$0_$1_$2: popl %ebx // restore non-volatile register @@ -537,17 +479,13 @@ LMsgSendCacheHit_$0_$1_$2: je LMsgSendHitInstrumentDone_$0_$1_$2 // ... emptyCache, do not record anything // locate and update the CacheInstrumentation structure - addl $kOne, %esi // entryCount = mask + 1 -#ifdef NO_MACRO_CONSTS - shll $kTwo, %esi // tableSize = entryCount * sizeof(entry) -#else - shll $2, %esi // tableSize = entryCount * sizeof(entry) -#endif + addl $$1, %esi // entryCount = mask + 1 + shll $$2, %esi // tableSize = entryCount * sizeof(entry) addl $buckets, %esi // offset = buckets + tableSize addl %edx, %esi // cacheData = &cache->buckets[mask+1] movl hitCount(%esi), %edi - addl $kOne, %edi + addl $$1, %edi movl %edi, hitCount(%esi) // cacheData->hitCount += 1 movl hitProbes(%esi), %edi addl %ebx, %edi @@ -564,14 +502,10 @@ LMsgSendMaxHitProbeOK_$0_$1_$2: movl $(CACHE_HISTOGRAM_SIZE-1), %ebx LMsgSendHitHistoIndexSet_$0_$1_$2: LEA_STATIC_DATA %esi, _CacheHitHistogram, EXTERNAL_SYMBOL -#ifdef NO_MACRO_CONSTS - shll $kTwo, %ebx // convert probeCount to histogram index -#else - shll $2, %ebx // convert probeCount to histogram index -#endif + shll $$2, %ebx // convert probeCount to histogram index addl %ebx, %esi // calculate &CacheHitHistogram[probeCount<<2] movl 0(%esi), %edi // get current tally - addl $kOne, %edi // + addl $$1, %edi // movl %edi, 0(%esi) // tally += 1 LMsgSendHitInstrumentDone_$0_$1_$2: popl %ebx // restore non-volatile register @@ -624,20 +558,12 @@ 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 + subl $$4, %esp // 16-byte align the stack // push args (class, selector) pushl %ecx pushl %eax CALL_EXTERN(__class_lookupMethodAndLoadCache) -#ifdef NO_MACRO_CONSTS - addl $kTwelve, %esp // pop parameters and alignment -#else - addl $12, %esp // pop parameters and alignment -#endif + addl $$12, %esp // pop parameters and alignment .endmacro @@ -656,10 +582,12 @@ LMsgSendHitInstrumentDone_$0_$1_$2: * to do the (PIC) lookup once in the caller than repeatedly here. ********************************************************************/ + .private_extern __cache_getMethod ENTRY __cache_getMethod -// load the class into eax - movl self(%esp), %eax +// load the class and selector + movl selector(%esp), %ecx + movl self(%esp), %edx // do lookup CacheLookup WORD_RETURN, CACHE_GET, LGetMethodMiss @@ -686,10 +614,12 @@ LGetMethodExit: * If not found, returns NULL. ********************************************************************/ + .private_extern __cache_getImp ENTRY __cache_getImp -// load the class into eax - movl self(%esp), %eax +// load the class and selector + movl selector(%esp), %ecx + movl self(%esp), %edx // do lookup CacheLookup WORD_RETURN, CACHE_GET, LGetImpMiss @@ -713,17 +643,32 @@ LGetImpExit: * ********************************************************************/ + ENTRY _objc_msgSend_fixup_rtp +// selector(%esp) is address of message ref instead of SEL + movl selector(%esp), %edx + movl 4(%edx), %ecx + movl %ecx, selector(%esp) // convert selector + jmp _objc_msgSend + END_ENTRY _objc_msgSend_fixup_rtp + ENTRY _objc_msgSend CALL_MCOUNTER +// load receiver and selector + movl selector(%esp), %ecx movl self(%esp), %eax +// check whether selector is ignored + cmpl $ kIgnore, %ecx + je LMsgSendDone // return self from %eax + // check whether receiver is nil testl %eax, %eax je LMsgSendNilSelf -// receiver is non-nil: search the cache +// receiver (in %eax) is non-nil: search the cache LMsgSendReceiverOk: + movl isa(%eax), %edx // class = self->isa CacheLookup WORD_RETURN, MSG_SEND, LMsgSendCacheMiss movl $kFwdMsgSend, %edx // flag word-return for _objc_msgForward jmp *%eax // goto *imp @@ -736,12 +681,13 @@ LMsgSendCacheMiss: // message sent to nil: redirect to nil receiver, if any LMsgSendNilSelf: - call L_get_pc_thunk.edx // load new receiver -1: movl __objc_nilReceiver-1b(%edx),%eax + call 1f // load new receiver +1: popl %edx + movl __objc_nilReceiver-1b(%edx),%eax testl %eax, %eax // return nil if no new receiver je LMsgSendReturnZero movl %eax, self(%esp) // send to new receiver - jmp LMsgSendReceiverOk + jmp LMsgSendReceiverOk // receiver must be in %eax LMsgSendReturnZero: // %eax is already zero movl $0,%edx @@ -767,12 +713,32 @@ LMsgSendExit: * }; ********************************************************************/ + ENTRY _objc_msgSendSuper2_fixup_rtp + // super(%esp) is objc_super struct with subclass instead of superclass + mov super(%esp), %edx // edx = objc_super + mov class(%edx), %eax // eax = objc_super->class + mov 4(%eax), %eax // eax = objc_super->class->super_class + mov %eax, class(%edx) // objc_super->class = eax + // selector(%esp) is address of message ref instead of SEL + mov selector(%esp), %eax + mov 4(%eax), %eax + mov %eax, selector(%esp) + jmp _objc_msgSendSuper + END_ENTRY _objc_msgSendSuper2_fixedup_rtp + ENTRY _objc_msgSendSuper CALL_MCOUNTER - movl super(%esp), %eax +// load selector and class to search + movl super(%esp), %eax // struct objc_super + movl selector(%esp), %ecx + movl class(%eax), %edx // struct objc_super->class -// receiver is non-nil: search the cache +// check whether selector is ignored + cmpl $ kIgnore, %ecx + je LMsgSendSuperIgnored // return self from %eax + +// search the cache (class in %edx) CacheLookup WORD_RETURN, MSG_SENDSUPER, LMsgSendSuperCacheMiss movl $kFwdMsgSend, %edx // flag word-return for _objc_msgForward jmp *%eax // goto *imp @@ -783,6 +749,12 @@ LMsgSendSuperCacheMiss: movl $kFwdMsgSend, %edx // flag word-return for _objc_msgForward jmp *%eax // goto *imp +// ignored selector: return self +LMsgSendSuperIgnored: + movl super(%esp), %eax + movl receiver(%eax), %eax + ret + LMsgSendSuperExit: END_ENTRY _objc_msgSendSuper @@ -844,17 +816,32 @@ LMsgSendvArgsOK: * ********************************************************************/ + ENTRY _objc_msgSend_fpret_fixup_rtp +// selector(%esp) is address of message ref instead of SEL + movl selector(%esp), %edx + movl 4(%edx), %ecx + movl %ecx, selector(%esp) // convert selector + jmp _objc_msgSend_fpret + END_ENTRY _objc_msgSend_fpret_fixup_rtp + ENTRY _objc_msgSend_fpret CALL_MCOUNTER +// load receiver and selector + movl selector(%esp), %ecx movl self(%esp), %eax +// check whether selector is ignored + cmpl $ kIgnore, %ecx + je LMsgSendFpretDone // return self from %eax + // check whether receiver is nil testl %eax, %eax je LMsgSendFpretNilSelf -// receiver is non-nil: search the cache +// receiver (in %eax) is non-nil: search the cache LMsgSendFpretReceiverOk: + movl isa(%eax), %edx // class = self->isa CacheLookup WORD_RETURN, MSG_SEND, LMsgSendFpretCacheMiss movl $kFwdMsgSend, %edx // flag word-return for _objc_msgForward jmp *%eax // goto *imp @@ -867,12 +854,13 @@ LMsgSendFpretCacheMiss: // message sent to nil: redirect to nil receiver, if any LMsgSendFpretNilSelf: - call L_get_pc_thunk.edx // load new receiver -1: movl __objc_nilReceiver-1b(%edx),%eax + call 1f // load new receiver +1: popl %edx + movl __objc_nilReceiver-1b(%edx),%eax testl %eax, %eax // return zero if no new receiver je LMsgSendFpretReturnZero movl %eax, self(%esp) // send to new receiver - jmp LMsgSendFpretReceiverOk + jmp LMsgSendFpretReceiverOk // receiver must be in %eax LMsgSendFpretReturnZero: fldz LMsgSendFpretDone: @@ -947,17 +935,28 @@ LMsgSendvFpretArgsOK: * (sp+12) is the selector ********************************************************************/ + ENTRY _objc_msgSend_stret_fixup_rtp +// selector_stret(%esp) is address of message ref instead of SEL + movl selector_stret(%esp), %edx + movl 4(%edx), %ecx + movl %ecx, selector_stret(%esp) // convert selector + jmp _objc_msgSend_stret + END_ENTRY _objc_msgSend_stret_fixup_rtp + ENTRY _objc_msgSend_stret CALL_MCOUNTER +// load receiver and selector movl self_stret(%esp), %eax + movl (selector_stret)(%esp), %ecx // check whether receiver is nil testl %eax, %eax je LMsgSendStretNilSelf -// receiver is non-nil: search the cache +// receiver (in %eax) is non-nil: search the cache LMsgSendStretReceiverOk: + movl isa(%eax), %edx // class = self->isa CacheLookup STRUCT_RETURN, MSG_SEND, LMsgSendStretCacheMiss movl $kFwdMsgSendStret, %edx // flag struct-return for _objc_msgForward jmp *%eax // goto *imp @@ -970,12 +969,13 @@ LMsgSendStretCacheMiss: // message sent to nil: redirect to nil receiver, if any LMsgSendStretNilSelf: - call L_get_pc_thunk.edx // load new receiver -1: movl __objc_nilReceiver-1b(%edx),%eax + call 1f // load new receiver +1: popl %edx + 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 - jmp LMsgSendStretReceiverOk + jmp LMsgSendStretReceiverOk // receiver must be in %eax LMsgSendStretDone: ret $4 // pop struct return address (#2995932) @@ -1008,12 +1008,28 @@ LMsgSendStretExit: * ********************************************************************/ + ENTRY _objc_msgSendSuper2_stret_fixup_rtp + // super_stret(%esp) is objc_super with subclass instead of superclass + mov super_stret(%esp), %edx // edx = objc_super + mov class(%edx), %eax // eax = objc_super->class + mov 4(%eax), %eax // eax = objc_super->class->super_class + mov %eax, class(%edx) // objc_super->class = eax + // selector_stret(%esp) is address of message ref instead of SEL + mov selector_stret(%esp), %eax + mov 4(%eax), %eax + mov %eax, selector_stret(%esp) + jmp _objc_msgSendSuper_stret + END_ENTRY _objc_msgSendSuper2_stret_fixedup_rtp + ENTRY _objc_msgSendSuper_stret CALL_MCOUNTER - movl super_stret(%esp), %eax +// load selector and class to search + movl super_stret(%esp), %eax // struct objc_super + movl (selector_stret)(%esp), %ecx // get selector + movl class(%eax), %edx // struct objc_super->class -// receiver is non-nil: search the cache +// search the cache (class in %edx) CacheLookup STRUCT_RETURN, MSG_SENDSUPER, LMsgSendSuperStretCacheMiss movl $kFwdMsgSendStret, %edx // flag struct-return for _objc_msgForward jmp *%eax // goto *imp @@ -1029,11 +1045,11 @@ LMsgSendSuperStretExit: /******************************************************************** - * id objc_msgSendv_stret(void *st_addr, id self, SEL _cmd, unsigned size, marg_list frame); + * void objc_msgSendv_stret(void *st_addr, id self, SEL _cmd, unsigned size, marg_list frame); * * objc_msgSendv_stret is the struct-return form of msgSendv. - * The ABI calls for (sp+4) to be used as the address of the structure - * being returned, with the parameters in the succeeding locations. + * This function does not use the struct-return ABI; instead, the + * structure return address is passed as a normal parameter. * * On entry: (sp+4) is the address in which the returned struct is put, * (sp+8) is the message receiver, @@ -1093,134 +1109,154 @@ LMsgSendvStretArgsOK: * ********************************************************************/ -// Location LFwdStr contains the string "forward::" -// Location LFwdSel contains a pointer to LFwdStr, that can be changed -// to point to another forward:: string for selector uniquing -// purposes. ALWAYS dereference LFwdSel to get to "forward::" !! - .objc_meth_var_names - .align 2 -LFwdStr:.ascii "forward::\0" - - .objc_message_refs - .align 2 -LFwdSel:.long LFwdStr +// _FwdSel is @selector(forward::), set up in map_images(). +// ALWAYS dereference _FwdSel to get to "forward::" !! + .data + .align 2 + .private_extern _FwdSel +_FwdSel: .long 0 .cstring - .align 2 -LUnkSelStr: .ascii "Does not recognize selector %s\0" + .align 2 +LUnkSelStr: .ascii "Does not recognize selector %s\0" + + .data + .align 2 + .private_extern __objc_forward_handler +__objc_forward_handler: .long 0 + + .data + .align 2 + .private_extern __objc_forward_stret_handler +__objc_forward_stret_handler: .long 0 + ENTRY __objc_msgForward -#if defined(KERNEL) - trap // _objc_msgForward is not for the kernel -#else - cmpl $kFwdMsgSendStret, %edx // check secret flag for word vs struct return - je LForwardStretVersion // jump to struct return version... + // Check return type (stret or not) + cmpl $kFwdMsgSendStret, %edx + je LMsgForwardStret - // non-stret version ... + // Get PIC base into %edx + call L__objc_msgForward$pic_base +L__objc_msgForward$pic_base: + popl %edx + + // Non-struct return + + // Call user handler, if any + movl __objc_forward_handler-L__objc_msgForward$pic_base(%edx),%ecx + testl %ecx, %ecx // if not NULL + je 1f // skip to default handler + jmp *%ecx // call __objc_forward_handler +1: + // No user handler + // Push stack frame pushl %ebp - movl %esp,%ebp + movl %esp, %ebp + + // Die if forwarding "forward::" movl (selector+4)(%ebp), %eax -#if defined(__DYNAMIC__) - call L_get_pc_thunk.edx -L__objc_msgForward$pic_base: - leal LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx + movl _FwdSel-L__objc_msgForward$pic_base(%edx),%ecx cmpl %ecx, %eax -#else - cmpl LFwdSel, %eax -#endif je LMsgForwardError + // Call [receiver forward:sel :margs] subl $8, %esp // 16-byte align the stack leal (self+4)(%ebp), %ecx - pushl %ecx - pushl %eax -#if defined(__DYNAMIC__) - movl LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx -#else - movl LFwdSel,%ecx -#endif - pushl %ecx - pushl (self+4)(%ebp) + pushl %ecx // &margs + pushl %eax // sel + movl _FwdSel-L__objc_msgForward$pic_base(%edx),%ecx + pushl %ecx // forward:: + pushl (self+4)(%ebp) // receiver + call _objc_msgSend - movl %ebp,%esp + + movl %ebp, %esp popl %ebp ret -// call error handler with unrecognized selector message - .align 4, 0x90 LMsgForwardError: + // Call __objc_error(receiver, "unknown selector %s", "forward::") subl $12, %esp // 16-byte align the stack -#if defined(__DYNAMIC__) - leal LFwdSel-L__objc_msgForward$pic_base(%edx),%eax + movl _FwdSel-L__objc_msgForward$pic_base(%edx),%eax pushl %eax leal LUnkSelStr-L__objc_msgForward$pic_base(%edx),%eax pushl %eax -#else - pushl $LFwdSel - pushl $LUnkSelStr -#endif pushl (self+4)(%ebp) - CALL_EXTERN(___objc_error) // volatile, will not return + CALL_EXTERN(___objc_error) // never returns + -// ***** Stret version of function below -// ***** offsets have been changed (by adding a word to make room for the -// ***** structure, and labels have been changed to be unique. +LMsgForwardStret: + // Struct return -LForwardStretVersion: - pushl %ebp - movl %esp,%ebp - movl (selector_stret+4)(%ebp), %eax - -#if defined(__DYNAMIC__) - call L_get_pc_thunk.edx + // Get PIC base into %edx + call L__objc_msgForwardStret$pic_base L__objc_msgForwardStret$pic_base: - leal LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx + popl %edx + + // Call user handler, if any + movl __objc_forward_stret_handler-L__objc_msgForwardStret$pic_base(%edx), %ecx + testl %ecx, %ecx // if not NULL + je 1f // skip to default handler + jmp *%ecx // call __objc_forward_stret_handler +1: + // No user handler + // Push stack frame + pushl %ebp + movl %esp, %ebp + + // Die if forwarding "forward::" + movl (selector_stret+4)(%ebp), %eax + movl _FwdSel-L__objc_msgForwardStret$pic_base(%edx), %ecx cmpl %ecx, %eax -#else - cmpl LFwdSel, %eax -#endif je LMsgForwardStretError + // Call [receiver forward:sel :margs] subl $8, %esp // 16-byte align the stack leal (self_stret+4)(%ebp), %ecx - pushl %ecx - pushl %eax -#if defined(__DYNAMIC__) - movl LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx -#else - movl LFwdSel,%ecx -#endif - pushl %ecx - pushl (self_stret+4)(%ebp) + pushl %ecx // &margs + pushl %eax // sel + movl _FwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx + pushl %ecx // forward:: + pushl (self_stret+4)(%ebp) // receiver + call _objc_msgSend - movl %ebp,%esp + + movl %ebp, %esp popl %ebp ret $4 // pop struct return address (#2995932) -// call error handler with unrecognized selector message - .align 4, 0x90 LMsgForwardStretError: + // Call __objc_error(receiver, "unknown selector %s", "forward::") subl $12, %esp // 16-byte align the stack -#if defined(__DYNAMIC__) - leal LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax + leal _FwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax pushl %eax leal LUnkSelStr-L__objc_msgForwardStret$pic_base(%edx),%eax pushl %eax -#else - pushl $LFwdSel - pushl $LUnkSelStr -#endif pushl (self_stret+4)(%ebp) - CALL_EXTERN(___objc_error) // volatile, will not return + CALL_EXTERN(___objc_error) // never returns -#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 + ENTRY _method_invoke + + movl selector(%esp), %ecx + movl method_name(%ecx), %edx + movl method_imp(%ecx), %eax + movl %edx, selector(%esp) + jmp *%eax + + END_ENTRY _method_invoke + + + ENTRY _method_invoke_stret + + movl selector_stret(%esp), %ecx + movl method_name(%ecx), %edx + movl method_imp(%ecx), %eax + movl %edx, selector_stret(%esp) + jmp *%eax + + END_ENTRY _method_invoke_stret diff --git a/runtime/Messengers.subproj/objc-msg-ppc.s b/runtime/Messengers.subproj/objc-msg-ppc.s index da2bc6e..43a6e78 100644 --- a/runtime/Messengers.subproj/objc-msg-ppc.s +++ b/runtime/Messengers.subproj/objc-msg-ppc.s @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -72,7 +70,7 @@ ; Substitute receiver for messages sent to nil (usually also nil) ; id _objc_nilReceiver .align 4 -.globl __objc_nilReceiver +.private_extern __objc_nilReceiver __objc_nilReceiver: .long 0 @@ -80,7 +78,7 @@ __objc_nilReceiver: ; caching code to figure out whether any threads are actively ; in the cache for dispatching. The labels surround the asm code ; that do cache lookups. The tables are zero-terminated. -.globl _objc_entryPoints +.private_extern _objc_entryPoints _objc_entryPoints: .long __cache_getImp .long __cache_getMethod @@ -91,7 +89,7 @@ _objc_entryPoints: .long _objc_msgSend_rtp .long 0 -.globl _objc_exitPoints +.private_extern _objc_exitPoints _objc_exitPoints: .long LGetImpExit .long LGetMethodExit @@ -559,11 +557,8 @@ LLoop_$0_$1: #if !defined(KERNEL) ; Save the FP parameter registers. -; Note: If we (the compiler) could determine that no FP arguments were in use, -; we could use a different variant of this macro and avoid the need to spill the FP -; registers (provided the runtime uses no FP). -; We still do not spill vector argument registers, for which we really should have an alternate -; entry point. +; We do not spill vector argument registers. This is +; harmless because vector parameters are unsupported. stfd f1, -104(r1) ; stfd f2, -96(r1) ; stfd f3, -88(r1) ; @@ -616,11 +611,6 @@ LLoop_$0_$1: #if !defined(KERNEL) ; Restore FP parameter registers -; Note: If we (the compiler) could determine that no FP arguments were in use, -; we could use a different variant of this macro and avoid the need to restore the FP -; registers (provided the runtime uses no FP). -; We still do not restore vector argument registers, for which we really should have an alternate -; entry point. lfd f1, -104(r1) ; lfd f2, -96(r1) ; lfd f3, -88(r1) ; @@ -750,6 +740,7 @@ LLoop_$0_$1: * to do the (PIC) lookup once in the caller than repeatedly here. ********************************************************************/ + .private_extern __cache_getMethod ENTRY __cache_getMethod ; do profiling if enabled CALL_MCOUNT @@ -781,6 +772,7 @@ LGetMethodExit: * If not found, returns NULL. ********************************************************************/ + .private_extern __cache_getImp ENTRY __cache_getImp ; do profiling if enabled CALL_MCOUNT @@ -821,6 +813,10 @@ LGetImpExit: _objc_msgSend_rtp = 0xfffeff00 _objc_msgSend_rtp_exit = 0xfffeff00+0x100 + ENTRY _objc_msgSend_fixup_rtp + lwz r4, 4(r4) ; load _cmd from message_ref + b _objc_msgSend + END_ENTRY _objc_msgSend_fixup_rtp ENTRY _objc_msgSend ; check whether receiver is nil or selector is to be ignored @@ -919,6 +915,11 @@ LMsgSendExit: * r5 is the selector ********************************************************************/ + ENTRY _objc_msgSend_stret_fixup_rtp + lwz r5, 4(r5) ; load _cmd from message_ref + b _objc_msgSend_stret + END_ENTRY _objc_msgSend_stret_fixup_rtp + ENTRY _objc_msgSend_stret ; check whether receiver is nil cmplwi r4,0 ; receiver nil? @@ -976,6 +977,15 @@ LMsgSendStretExit: * }; ********************************************************************/ + ENTRY _objc_msgSendSuper2_fixup_rtp + ; objc_super->class is superclass of the class to search + lwz r11, CLASS(r3) + lwz r4, 4(r4) ; load _cmd from message_ref + lwz r11, 4(r11) ; r11 = cls->super_class + stw r11, CLASS(r3) + b _objc_msgSendSuper + END_ENTRY _objc_msgSendSuper2_fixup_rtp + ENTRY _objc_msgSendSuper ; do profiling when enabled CALL_MCOUNT @@ -1032,6 +1042,15 @@ LMsgSendSuperExit: * r5 is the selector ********************************************************************/ + ENTRY _objc_msgSendSuper2_stret_fixup_rtp + ; objc_super->class is superclass of the class to search + lwz r11, CLASS(r4) + lwz r5, 4(r5) ; load _cmd from message_ref + lwz r11, 4(r11) ; r11 = cls->super_class + stw r11, CLASS(r4) + b _objc_msgSendSuper_stret + END_ENTRY _objc_msgSendSuper2_stret_fixup_rtp + ENTRY _objc_msgSendSuper_stret ; do profiling when enabled CALL_MCOUNT @@ -1094,103 +1113,125 @@ LMsgSendSuperStretExit: * * typedef struct objc_sendv_margs { * double floatingPointArgs[13]; - * int linkageArea[6]; - * int registerArgs[8]; - * int stackArgs[variable]; + * intptr_t linkageArea[6]; + * intptr_t registerArgs[8]; + * intptr_t stackArgs[variable]; * }; * ********************************************************************/ -; Location LFwdStr contains the string "forward::" -; Location LFwdSel contains a pointer to LFwdStr, that can be changed -; to point to another forward:: string for selector uniquing -; purposes. ALWAYS dereference LFwdSel to get to "forward::" !! - .objc_meth_var_names - .align 1 -LFwdStr: .ascii "forward::\0" - - .objc_message_refs +; _FwdSel is @selector(forward::), set up in map_images(). +; ALWAYS dereference _FwdSel to get to "forward::" !! + .data .align 2 -LFwdSel: .long LFwdStr + .private_extern _FwdSel +_FwdSel: .long 0 .cstring - .align 1 + .align 2 LUnkSelStr: .ascii "Does not recognize selector %s\0" + .data + .align 2 + .private_extern __objc_forward_handler +__objc_forward_handler: .long 0 + + .data + .align 2 + .private_extern __objc_forward_stret_handler +__objc_forward_stret_handler: .long 0 + + ENTRY __objc_msgForward ; do profiling when enabled CALL_MCOUNT -#if !defined(KERNEL) - LOAD_STATIC_WORD r12, LFwdSel, LOCAL_SYMBOL ; get uniqued selector for "forward::" - cmplwi r11,kFwdMsgSendStret ; via objc_msgSend or objc_msgSend_stret? - beq LMsgForwardStretSel ; branch for objc_msgSend_stret - cmplw r12,r4 ; if (sel == @selector (forward::)) - b LMsgForwardSelCmpDone ; check the result in common code -LMsgForwardStretSel: - cmplw r12,r5 ; if (sel == @selector (forward::)) -LMsgForwardSelCmpDone: - beq LMsgForwardError ; goto error + ; Check return type (stret or not) + cmplwi r11,kFwdMsgSendStret + beq LMsgForwardStretSel + + ; Non-stret return + ; Call user handler, if any + LOAD_STATIC_WORD r12, __objc_forward_handler, LOCAL_SYMBOL + cmplwi r12, 0 + mtctr r12 + bnectr ; call _objc_forward_handler if not NULL + ; No user handler + mr r11, r3 ; r11 = receiver + mr r12, r4 ; r12 = SEL + b LMsgForwardSelCmp + +LMsgForwardStretSel: + ; Stret return + ; Call user handler, if any + LOAD_STATIC_WORD r12, __objc_forward_stret_handler, LOCAL_SYMBOL + cmplwi r12, 0 + mtctr r12 + bnectr ; call _objc_forward_stret_handler if not NULL + ; No user handler + mr r11, r4 ; r11 = receiver + mr r12, r5 ; r12 = SEL + +LMsgForwardSelCmp: + ; r11 is the receiver + ; r12 is the selector + + ; Die if forwarding "forward::" + LOAD_STATIC_WORD r2, _FwdSel, LOCAL_SYMBOL + cmplw r2, r12 + beq LMsgForwardError + ; Save registers to margs + ; Link register mflr r0 - stw r0, 8(r1) ; save lr - - stw r3, 24(r1) ; put register arguments on stack for forwarding - stw r4, 28(r1) ; (stack based args already follow this area) - stw r5, 32(r1) ; - stw r6, 36(r1) ; - stw r7, 40(r1) ; + stw r0, 8(r1) + + ; GPR parameters + stw r3, 24(r1) + stw r4, 28(r1) + stw r5, 32(r1) + stw r6, 36(r1) + stw r7, 40(r1) stw r8, 44(r1) stw r9, 48(r1) stw r10,52(r1) - stfd f1, -104(r1) ; prepend floating point registers to marg_list - stfd f2, -96(r1) ; - stfd f3, -88(r1) ; - stfd f4, -80(r1) ; - stfd f5, -72(r1) ; - stfd f6, -64(r1) ; - stfd f7, -56(r1) ; - stfd f8, -48(r1) ; - stfd f9, -40(r1) ; - stfd f10, -32(r1) ; - stfd f11, -24(r1) ; - stfd f12, -16(r1) ; - stfd f13, -8(r1) ; - - cmplwi r11,kFwdMsgSendStret ; via objc_msgSend or objc_msgSend_stret? - beq LMsgForwardStretParams ; branch for objc_msgSend_stret - ; first arg (r3) remains self - mr r5,r4 ; third arg is previous selector - b LMsgForwardParamsDone - -LMsgForwardStretParams: - mr r3,r4 ; first arg is self - ; third arg (r5) remains previous selector -LMsgForwardParamsDone: - mr r4,r12 ; second arg is "forward::" - subi r6,r1,13*8 ; fourth arg is &objc_sendv_margs - - stwu r1,-56-(13*8)(r1) ; push aligned linkage and parameter areas, set stack link + ; FP parameters + stfd f1, -104(r1) + stfd f2, -96(r1) + stfd f3, -88(r1) + stfd f4, -80(r1) + stfd f5, -72(r1) + stfd f6, -64(r1) + stfd f7, -56(r1) + stfd f8, -48(r1) + stfd f9, -40(r1) + stfd f10, -32(r1) + stfd f11, -24(r1) + stfd f12, -16(r1) + stfd f13, -8(r1) + + ; Call [receiver forward:sel :margs] + mr r3, r11 ; receiver + mr r4, r2 ; forward:: + mr r5, r12 ; sel + subi r6,r1,13*8 ; &margs (on stack) + + stwu r1,-56-(13*8)(r1) ; push stack frame bl _objc_msgSend ; [self forward:sel :objc_sendv_margs] - addi r1,r1,56+13*8 ; deallocate linkage and parameters areas + addi r1,r1,56+13*8 ; pop stack frame lwz r0,8(r1) ; restore lr mtlr r0 ; blr ; -; call error handler with unrecognized selector message LMsgForwardError: - cmplwi r11,kFwdMsgSendStret ; via objc_msgSend or objc_msgSend_stret? - bne LMsgForwardErrorParamsOK; branch for objc_msgSend - mr r3,r4 ; first arg is self -LMsgForwardErrorParamsOK: + ; Call __objc_error(receiver, "unknown selector %s", "forward::") + mr r3, r11 LEA_STATIC_DATA r4, LUnkSelStr, LOCAL_SYMBOL - mr r5,r12 ; third arg is "forward::" - CALL_EXTERN(___objc_error) ; never returns -#endif /* !defined(KERNEL) */ - trap ; ___objc_error should never return - ; _objc_msgForward is not for the kernel - kernel code ends up here + mr r5, r2 + CALL_EXTERN(___objc_error) ; never returns + trap END_ENTRY __objc_msgForward @@ -1308,27 +1349,16 @@ LMsgSendvSendIt: END_ENTRY _objc_msgSendv_fpret /******************************************************************** - * struct_type objc_msgSendv_stret(id self, - * SEL op, - * unsigned arg_size, - * marg_list arg_frame); - * - * objc_msgSendv_stret is the struct-return form of msgSendv. - * The ABI calls for r3 to be used as the address of the structure - * being returned, with the parameters in the succeeding registers. - * - * An equally correct way to prototype this routine is: - * * void objc_msgSendv_stret(void *structStorage, * id self, * SEL op, * unsigned arg_size, * marg_list arg_frame); * - * which is useful in, for example, message forwarding where the - * structure-return address needs to be passed in. - * - * The ABI for the two cases are identical. + * objc_msgSendv_stret is the struct-return form of msgSendv. + * This function does not use the struct-return ABI; instead, the + * structure return address is passed as a normal parameter. + * The two are functionally identical on ppc, but not on other architectures. * * On entry: r3 is the address in which the returned struct is put, * r4 is the message receiver, @@ -1418,9 +1448,21 @@ LMsgSendvStretSendIt: 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 + ENTRY _method_invoke + + lwz r12, METHOD_IMP(r4) + lwz r4, METHOD_NAME(r4) + mtctr r12 + bctr + + END_ENTRY _method_invoke + + + ENTRY _method_invoke_stret + + lwz r12, METHOD_IMP(r5) + lwz r5, METHOD_NAME(r5) + mtctr r12 + bctr + + END_ENTRY _method_invoke_stret diff --git a/runtime/Messengers.subproj/objc-msg-ppc64.s b/runtime/Messengers.subproj/objc-msg-ppc64.s new file mode 100644 index 0000000..9f24607 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-ppc64.s @@ -0,0 +1,1434 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-msg-ppc64.s - PowerPC code to support objc messaging. + * Based on objc-msg-ppc.s, copyright 1988-1996 NeXT Software, Inc. + ********************************************************************/ + +#define __OBJC2__ 1 + +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" + +/******************************************************************** + * Data used by the ObjC runtime. + * + ********************************************************************/ + + .data +; Substitute receiver for messages sent to nil (usually also nil) +; id _objc_nilReceiver + .align 4 +.private_extern __objc_nilReceiver +__objc_nilReceiver: + .quad 0 + +; 8 bytes of zero, for floating-point zero return +L_zero: + .space 8 + +; _objc_entryPoints and _objc_exitPoints are used by method dispatch +; caching code to figure out whether any threads are actively +; in the cache for dispatching. The labels surround the asm code +; that do cache lookups. The tables are zero-terminated. +.private_extern _objc_entryPoints +_objc_entryPoints: + .quad __cache_getImp + .quad __cache_getMethod + .quad _objc_msgSend + .quad _objc_msgSend_stret + .quad _objc_msgSendSuper + .quad _objc_msgSendSuper_stret + .quad _objc_msgSend_rtp + .quad 0 + +.private_extern _objc_exitPoints +_objc_exitPoints: + .quad LGetImpExit + .quad LGetMethodExit + .quad LMsgSendExit + .quad LMsgSendStretExit + .quad LMsgSendSuperExit + .quad LMsgSendSuperStretExit + .quad _objc_msgSend_rtp_exit + .quad 0 + +/* + * Handcrafted dyld stubs for each external call. + * They should be converted into a local branch after linking. aB. + */ + +/* asm_help.h version is not what we want */ +#undef CALL_EXTERN + +#define CALL_EXTERN(name) bl L ## name ## $stub + +#define LAZY_PIC_FUNCTION_STUB(name) \ +.data @\ +.section __TEXT, __picsymbol_stub, symbol_stubs, pure_instructions, 32 @\ +L ## name ## $stub: @\ + .indirect_symbol name @\ + mflr r0 @\ + bcl 20,31,L0$ ## name @\ +L0$ ## name: @\ + mflr r11 @\ + addis r11,r11,ha16(L ## name ## $lazy_ptr-L0$ ## name) @\ + mtlr r0 @\ + ldu r12,lo16(L ## name ## $lazy_ptr-L0$ ## name)(r11) @\ + mtctr r12 @\ + bctr @\ +.data @\ +.lazy_symbol_pointer @\ +L ## name ## $lazy_ptr: @\ + .indirect_symbol name @\ + .quad dyld_stub_binding_helper + +; _class_lookupMethodAndLoadCache +LAZY_PIC_FUNCTION_STUB(__class_lookupMethodAndLoadCache) + +#if __OBJC2__ +; _objc_fixupMessageRef +LAZY_PIC_FUNCTION_STUB(__objc_fixupMessageRef) +#endif + +; __objc_error +LAZY_PIC_FUNCTION_STUB(___objc_error) /* No stub needed */ + +#if defined(PROFILE) +; mcount +LAZY_PIC_FUNCTION_STUB(mcount) +#endif /* PROFILE */ + + +/******************************************************************** + * + * Structure definitions. + * + ********************************************************************/ + +; objc_super parameter to sendSuper +#define RECEIVER 0 +#define CLASS 8 + +; Selected field offsets in class structure +#define ISA 0 +#if __OBJC2__ +# define CACHE 16 +#else +# define CACHE 64 +#endif + +; Method descriptor +#define METHOD_NAME 0 +#define METHOD_IMP 16 + +; Cache header +#define MASK 0 +#define OCCUPIED 4 +#define BUCKETS 8 // variable length array + +#if defined(OBJC_INSTRUMENTED) +; Cache instrumentation data, follows buckets +#define hitCount 0 +#define hitProbes hitCount + 4 +#define maxHitProbes hitProbes + 4 +#define missCount maxHitProbes + 4 +#define missProbes missCount + 4 +#define maxMissProbes missProbes + 4 +#define flushCount maxMissProbes + 4 +#define flushedEntries flushCount + 4 +#endif + +/******************************************************************** + * + * Constants. + * + ********************************************************************/ + +// In case the implementation is _objc_msgForward, indicate to it +// whether the method was invoked as a word-return or struct-return. +// The li instruction costs nothing because it fits into spare +// processor cycles. We choose to make the MsgSend indicator non-zero +// as r11 is already guaranteed non-zero for a cache hit (no li needed). + +#define kFwdMsgSend 1 +#define kFwdMsgSendStret 0 + + +/******************************************************************** + * + * Useful macros. Macros are used instead of subroutines, for speed. + * + ********************************************************************/ + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; LOAD_STATIC_WORD targetReg, symbolName, LOCAL_SYMBOL | EXTERNAL_SYMBOL +; +; Load the value of the named static data word. +; +; Takes: targetReg - the register, other than r0, to load +; symbolName - the name of the symbol +; LOCAL_SYMBOL - symbol name used as-is +; EXTERNAL_SYMBOL - symbol name gets nonlazy treatment +; +; Eats: r0 and targetReg +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; Values to specify whether the symbols is plain or nonlazy +#define LOCAL_SYMBOL 0 +#define EXTERNAL_SYMBOL 1 + +.macro LOAD_STATIC_WORD + + mflr r0 + bcl 20,31,1f ; 31 is cr7[so] +1: mflr $0 + mtlr r0 +.if $2 == EXTERNAL_SYMBOL + addis $0,$0,ha16(L$1-1b) + ld $0,lo16(L$1-1b)($0) + ld $0,0($0) +.elseif $2 == LOCAL_SYMBOL + addis $0,$0,ha16($1-1b) + ld $0,lo16($1-1b)($0) +.else + !!! Unknown symbol type !!! +.endif + +.endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; LEA_STATIC_DATA targetReg, symbolName, LOCAL_SYMBOL | EXTERNAL_SYMBOL +; +; Load the address of the named static data. +; +; Takes: targetReg - the register, other than r0, to load +; symbolName - the name of the symbol +; LOCAL_SYMBOL - symbol is local to this module +; EXTERNAL_SYMBOL - symbol is imported from another module +; +; Eats: r0 and targetReg +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +.macro LEA_STATIC_DATA + mflr r0 + bcl 20,31,1f ; 31 is cr7[so] +1: mflr $0 + mtlr r0 +.if $2 == EXTERNAL_SYMBOL + addis $0,$0,ha16(L$1-1b) + ld $0,lo16(L$1-1b)($0) +.elseif $2 == LOCAL_SYMBOL + addis $0,$0,ha16($1-1b) + addi $0,$0,lo16($1-1b) +.else + !!! Unknown symbol type !!! +.endif + +.endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; ENTRY functionName +; +; Assembly directives to begin an exported function. +; We align on cache boundaries for these few functions. +; +; Takes: functionName - name of the exported function +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +.macro ENTRY + .text + .align 5 + .globl $0 +$0: +.endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; END_ENTRY functionName +; +; Assembly directives to end an exported function. Just a placeholder, +; a close-parenthesis for ENTRY, until it is needed for something. +; +; Takes: functionName - name of the exported function +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +.macro END_ENTRY +.endmacro + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; FixupMessageRef receiver, super, ref +; +; Look up a method and fix up a message ref. +; +; Takes: +; receiver = receiver register +; super = register address of objc_super2 struct or NULL +; ref = message ref register +; These arguments must use the REGx macros. Some combinations +; are disallowed. +; +; On exit: +; *ref is fixed up +; r12 is imp to call +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; $0 = receiver register + ; $1 = register address of objc_super2 struct, or NULL + ; $2 = message ref register + ; Returns imp in r12 and ctr. + ; 3,2,4 4,2,5 2,3,4 2,4,5 + ; 5<4 3<4 4<3,5<4 +#define REG2 2 +#define REG3 3 +#define REG4 4 +#define REG5 5 + + +.macro MR_REG3 +.if $0 == REG2 + mr r3, r2 +.elseif $0 == REG3 + ; mr r3, r3 +.elseif $0 == REG4 + mr r3, r4 +.elseif $0 == REG5 + mr r3, r5 +.else + error unknown register +.endif +.endmacro + +.macro MR_REG4 +.if $0 == REG2 + mr r4, r2 +.elseif $0 == REG3 + mr r4, r3 +.elseif $0 == REG4 + ; mr r4, r4 +.elseif $0 == REG5 + mr r4, r5 +.else + error unknown register +.endif +.endmacro + +.macro MR_REG5 +.if $0 == REG2 + mr r5, r2 +.elseif $0 == REG3 + mr r5, r3 +.elseif $0 == REG4 + mr r5, r4 +.elseif $0 == REG5 + ; mr r5, r5 +.else + error unknown register +.endif +.endmacro + +#if __OBJC2__ +.macro FixupMessageRef + ; Save lr + mflr r0 + std r0, 16(r1) + + ; Save parameter registers + std r3, 48(r1) + std r4, 56(r1) + std r5, 64(r1) + std r6, 72(r1) + std r7, 80(r1) + std r8, 88(r1) + std r9, 96(r1) + std r10, 104(r1) + + ; Save fp parameter registers + stfd f1, -104(r1) + stfd f2, -96(r1) + stfd f3, -88(r1) + stfd f4, -80(r1) + stfd f5, -72(r1) + stfd f6, -64(r1) + stfd f7, -56(r1) + stfd f8, -48(r1) + stfd f9, -40(r1) + stfd f10, -32(r1) + stfd f11, -24(r1) + stfd f12, -16(r1) + stfd f13, -8(r1) + + ; Push stack frame + stdu r1,-120-(13*8)(r1) ; must be 16-byte aligned + +.if REG5 != $1 & REG5 != $0 & REG4 != $0 + MR_REG5 $2 + MR_REG4 $1 + MR_REG3 $0 +.elseif REG3 != $1 & REG3 != $2 & REG4 != $2 + MR_REG3 $0 + MR_REG4 $1 + MR_REG5 $2 +.else + error register collision +.endif + + CALL_EXTERN(__objc_fixupMessageRef) + + ; Save returned IMP in r12 and ctr + mtctr r3 + mr r12, r3 + + ; Pop stack frame + ld r1,0(r1) + + ; Restore lr + ld r0,16(r1) + mtlr r0 + + ; Restore fp parameter registers + lfd f1, -104(r1) + lfd f2, -96(r1) + lfd f3, -88(r1) + lfd f4, -80(r1) + lfd f5, -72(r1) + lfd f6, -64(r1) + lfd f7, -56(r1) + lfd f8, -48(r1) + lfd f9, -40(r1) + lfd f10, -32(r1) + lfd f11, -24(r1) + lfd f12, -16(r1) + lfd f13, -8(r1) + + ; Restore parameter registers + ld r3, 48(r1) + ld r4, 56(r1) + ld r5, 64(r1) + ld r6, 72(r1) + ld r7, 80(r1) + ld r8, 88(r1) + ld r9, 96(r1) + ld r10, 104(r1) + +.endmacro +#endif + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; CacheLookup selectorRegister, cacheMissLabel +; +; Locate the implementation for a selector in a class method cache. +; +; 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 +; +; On exit: (found) method triplet in r2, imp in r12, r11 is non-zero +; (not found) jumps to cacheMissLabel +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +.macro CacheLookup + +#if defined(OBJC_INSTRUMENTED) + ; when instrumented, we use r6 and r7 + std r6,72(r1) ; save r6 for use as cache pointer + std r7,80(r1) ; save r7 for use as probe count + li r7,0 ; no probes so far! +#endif + + ld r2,CACHE(r12) ; cache = class->cache + std r9,96(r1) ; save r9 + +#if defined(OBJC_INSTRUMENTED) + mr r6,r2 ; save cache pointer +#endif + + lwz r11,MASK(r2) ; mask = cache->mask + addi r0,r2,BUCKETS ; buckets = cache->buckets + sldi r11,r11,3 ; r11 = mask << 3 + and r9,$0,r11 ; bytes = sel & (mask<<3) + +#if defined(OBJC_INSTRUMENTED) + b LLoop_$0_$1 + +LMiss_$0_$1: + ; r6 = cache, r7 = probeCount + lwz r9,MASK(r6) ; entryCount = mask + 1 + addi r9,r9,1 ; + sldi r9,r9,2 ; tableSize = entryCount * sizeof(entry) + addi r9,r9,BUCKETS ; offset = buckets + tableSize + add r11,r6,r9 ; cacheData = &cache->buckets[mask+1] + ld r9,missCount(r11) ; cacheData->missCount += 1 + addi r9,r9,1 ; + std r9,missCount(r11) ; + ld r9,missProbes(r11) ; cacheData->missProbes += probeCount + add r9,r9,r7 ; + std r9,missProbes(r11) ; + ld r9,maxMissProbes(r11) ; if (probeCount > cacheData->maxMissProbes) + cmpld r7,r9 ; maxMissProbes = probeCount + ble .+8 ; + std r7,maxMissProbes(r11) ; + + ld r6,72(r1) ; restore r6 + ld r7,80(r1) ; restore r7 + + b $1 ; goto cacheMissLabel +#endif + +; search the cache +LLoop_$0_$1: +#if defined(OBJC_INSTRUMENTED) + addi r7,r7,1 ; probeCount += 1 +#endif + + ldx r2,r9,r0 ; method = buckets[bytes/8] + addi r9,r9,8 ; bytes += 8 + cmpldi r2,0 ; if (method == NULL) +#if defined(OBJC_INSTRUMENTED) + beq- LMiss_$0_$1 +#else + beq- $1 ; goto cacheMissLabel +#endif + + ld r12,METHOD_NAME(r2) ; name = method->method_name + and r9,r9,r11 ; bytes &= (mask<<3) + cmpld r12,$0 ; if (name != selector) + bne- LLoop_$0_$1 ; goto loop + +; cache hit, r2 == method triplet address +; Return triplet in r2 and imp in r12 + ld r12,METHOD_IMP(r2) ; imp = method->method_imp + +#if defined(OBJC_INSTRUMENTED) + ; r6 = cache, r7 = probeCount + lwz r9,MASK(r6) ; entryCount = mask + 1 + addi r9,r9,1 ; + sldi r9,r9,2 ; tableSize = entryCount * sizeof(entry) + addi r9,r9,BUCKETS ; offset = buckets + tableSize + add r11,r6,r9 ; cacheData = &cache->buckets[mask+1] + lwz r9,hitCount(r11) ; cache->hitCount += 1 + addi r9,r9,1 ; + stw r9,hitCount(r11) ; + lwz r9,hitProbes(r11) ; cache->hitProbes += probeCount + add r9,r9,r7 ; + stw r9,hitProbes(r11) ; + lwz r9,maxHitProbes(r11) ; if (probeCount > cache->maxMissProbes) + cmplw r7,r9 ;maxMissProbes = probeCount + ble .+8 ; + stw r7,maxHitProbes(r11) ; + + ld r6,72(r1) ; restore r6 + ld r7,80(r1) ; restore r7 +#endif + + ld r9,96(r1) ; restore r9 + +.endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; CacheLookup cache locking - 2001-11-12 +; The collecting cache mechanism precludes the need for a cache lock +; in objc_msgSend. The cost of the collecting cache is small: a few +; K of memory for uncollected caches, and less than 1 ms per collection. +; A large app will only run collection a few times. +; Using the code below to lock the cache almost doubles messaging time, +; costing several seconds of CPU across several minutes of operation. +; The code below probably could be improved, but almost all of the +; locking slowdown is in the sync and isync. +; +; 40 million message test times (G4 1x667): +; no lock 4.390u 0.030s 0:04.59 96.2% 0+0k 0+1io 0pf+0w +; with lock 9.120u 0.010s 0:09.83 92.8% 0+0k 0+0io 0pf+0w +; +;; LockCache mask_dest, cache +;.macro LockCache +; ; LOCKED mask is NEGATIVE +; lwarx $0, mask, $1 ; mask = reserve(cache->mask) +; cmpwi $0, 0 ; +; blt .-8 ; try again if mask < 0 +; neg r0, $0 ; +; stwcx. r0, mask, $1 ; cache->mask = -mask ($0 keeps +mask) +; bne .-20 ; try again if lost reserve +; isync ; flush prefetched instructions after locking +;.endmacro +; +;; UnlockCache (mask<<2), cache +;.macro UnlockCache +; sync ; finish previous instructions before unlocking +; srwi r0, $0, 2 ; r0 = (mask<<2) >> 2 +; stw r0, mask($1) ; cache->mask = +mask +;.endmacro +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; +; MethodTableLookup WORD_RETURN | STRUCT_RETURN, MSG_SEND | MSG_SENDSUPER +; +; 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) +; +; Eats: r0, r2, r11, r12 +; On exit: restores r9 saved by CacheLookup +; 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 + std r0, 16(r1) ; + + std r3, 48(r1) ; save arguments + std r4, 56(r1) ; + std r5, 64(r1) ; + std r6, 72(r1) ; + std r7, 80(r1) ; + std r8, 88(r1) ; + ; r9 was saved by CacheLookup + std r10, 104(r1) ; + +; Save the FP parameter registers. +; We do not spill vector argument registers. This is +; harmless because vector parameters are unsupported. + stfd f1, -104(r1) ; + stfd f2, -96(r1) ; + stfd f3, -88(r1) ; + stfd f4, -80(r1) ; + stfd f5, -72(r1) ; + stfd f6, -64(r1) ; + stfd f7, -56(r1) ; + stfd f8, -48(r1) ; + stfd f9, -40(r1) ; + stfd f10, -32(r1) ; + stfd f11, -24(r1) ; + stfd f12, -16(r1) ; + stfd f13, -8(r1) ; + + stdu r1,-120-(13*8)(r1) ; grow the stack. Must be 16-byte-aligned. + +; Pass parameters to __class_lookupMethodAndLoadCache. First parameter is +; the class pointer. Second parameter is the selector. Where they come +; from depends on who called us. In the int return case, the selector is +; already in r4. +.if $0 == WORD_RETURN ; WORD_RETURN +.if $1 == MSG_SEND ; MSG_SEND + ld r3,ISA(r3) ; class = receiver->isa +.else ; MSG_SENDSUPER + ld r3,CLASS(r3) ; class = super->class +.endif + +.else ; STRUCT_RETURN +.if $1 == MSG_SEND ; MSG_SEND + ld r3,ISA(r4) ; class = receiver->isa +.else ; MSG_SENDSUPER + ld r3,CLASS(r4) ; class = super->class +.endif + mr r4,r5 ; selector = selector +.endif + + ; We code the call inline rather than using the CALL_EXTERN macro because + ; that leads to a lot of extra unnecessary and inefficient instructions. + CALL_EXTERN(__class_lookupMethodAndLoadCache) + + mr r12,r3 ; copy implementation to r12 + mtctr r3 ; copy imp to ctr + ld r1,0(r1) ; restore the stack pointer + ld r0,16(r1) ; + mtlr r0 ; restore return pc + +; Restore FP parameter registers + lfd f1, -104(r1) ; + lfd f2, -96(r1) ; + lfd f3, -88(r1) ; + lfd f4, -80(r1) ; + lfd f5, -72(r1) ; + lfd f6, -64(r1) ; + lfd f7, -56(r1) ; + lfd f8, -48(r1) ; + lfd f9, -40(r1) ; + lfd f10, -32(r1) ; + lfd f11, -24(r1) ; + lfd f12, -16(r1) ; + lfd f13, -8(r1) ; + + ld r3, 48(r1) ; restore parameter registers + ld r4, 56(r1) ; + ld r5, 64(r1) ; + ld r6, 72(r1) ; + ld r7, 80(r1) ; + ld r8, 88(r1) ; + ld r9, 96(r1) ; r9 was saved by CacheLookup + ld r10, 104(r1) ; + +.endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; CALL_MCOUNT +; +; Macro to call mcount function in profiled builds. +; +; NOTE: Makes sure to save/restore r11 and r12, even though they +; are not defined to be volatile, because they are used during +; forwarding. +; +; Takes: lr Callers return PC +; +; Eats: r0 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + .macro CALL_MCOUNT +#if defined(PROFILE) + mflr r0 ; save return pc + std r0, 16(r1) ; + + stdu r1,-304(r1) ; push aligned areas, set stack link + + std r3, 112(r1) ; save all volatile registers + std r4, 120(r1) ; + std r5, 128(r1) ; + std r6, 136(r1) ; + std r7, 144(r1) ; + std r8, 152(r1) ; + std r9, 160(r1) ; + std r10,168(r1) ; + std r11,176(r1) ; save r11 and r12, too + std r12,184(r1) ; + + stfd f1, 192(r1) ; + stfd f2, 200(r1) ; + stfd f3, 208(r1) ; + stfd f4, 216(r1) ; + stfd f5, 224(r1) ; + stfd f6, 232(r1) ; + stfd f7, 240(r1) ; + stfd f8, 248(r1) ; + stfd f9, 256(r1) ; + stfd f10,264(r1) ; + stfd f11,272(r1) ; + stfd f12,280(r1) ; + stfd f13,288(r1) ; + + mr r3, r0 ; pass our callers address + + CALL_EXTERN(mcount) + + ld r3, 112(r1) ; restore all volatile registers + ld r4, 120(r1) ; + ld r5, 128(r1) ; + ld r6, 136(r1) ; + ld r7, 144(r1) ; + ld r8, 152(r1) ; + ld r9, 160(r1) ; + ld r10,168(r1) ; + ld r11,176(r1) ; restore r11 and r12, too + ld r12,184(r1) ; + + lfd f1, 192(r1) ; + lfd f2, 200(r1) ; + lfd f3, 208(r1) ; + lfd f4, 216(r1) ; + lfd f5, 224(r1) ; + lfd f6, 232(r1) ; + lfd f7, 240(r1) ; + lfd f8, 248(r1) ; + lfd f9, 256(r1) ; + lfd f10,264(r1) ; + lfd f11,272(r1) ; + lfd f12,280(r1) ; + lfd f13,288(r1) ; + + ld r1, 0(r1) ; restore the stack pointer + ld r0, 16(r1) ; + mtlr r0 ; restore return pc +#endif + .endmacro + + +/******************************************************************** + * Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp) + * + * On entry: r3 = class whose cache is to be searched + * r4 = selector to search for + * r5 = _objc_msgForward IMP + * + * If found, returns method triplet pointer. + * If not found, returns NULL. + * + * NOTE: _cache_getMethod never returns any cache entry whose implementation + * is _objc_msgForward. It returns NULL instead. This prevents thread- + * safety and memory management bugs in _class_lookupMethodAndLoadCache. + * See _class_lookupMethodAndLoadCache for details. + * + * _objc_msgForward is passed as a parameter because it's more efficient + * to do the (PIC) lookup once in the caller than repeatedly here. + ********************************************************************/ + + .private_extern __cache_getMethod + ENTRY __cache_getMethod +; do profiling if enabled + CALL_MCOUNT + +; do lookup + mr r12,r3 ; move class to r12 for CacheLookup + CacheLookup r4, LGetMethodMiss + +; cache hit, method triplet in r2 and imp in r12 + cmpld r12, r5 ; check for _objc_msgForward + mr r3, r2 ; optimistically get the return value + bnelr ; Not _objc_msgForward, return the triplet address + +LGetMethodMiss: + li r3, 0 ; cache miss or _objc_msgForward, return nil + blr + +LGetMethodExit: + END_ENTRY __cache_getMethod + + +/******************************************************************** + * IMP _cache_getImp(Class cls, SEL sel) + * + * On entry: r3 = class whose cache is to be searched + * r4 = selector to search for + * + * If found, returns method implementation. + * If not found, returns NULL. + ********************************************************************/ + + .private_extern __cache_getImp + ENTRY __cache_getImp +; do profiling if enabled + CALL_MCOUNT + +; do lookup + mr r12,r3 ; move class to r12 for CacheLookup + CacheLookup r4, LGetImpMiss + +; cache hit, method triplet in r2 and imp in r12 + mr r3, r12 ; return method imp address + blr + +LGetImpMiss: +; cache miss, return nil + li r3, 0 ; return nil + blr + +LGetImpExit: + END_ENTRY __cache_getImp + + +/******************************************************************** + * id objc_msgSend(id self, + * SEL op, + * ...); + * + * On entry: r3 is the message receiver, + * 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 = 0xfffffffffffeff00 +_objc_msgSend_rtp_exit = 0xfffffffffffeff00+0x100 + + ENTRY _objc_msgSend +; check whether receiver is nil or selector is to be ignored + cmpldi r3,0 ; receiver nil? + not r11, r4 + xoris r11, r11, ((~kIgnore >> 16) & 0xffff) + beq- LMsgSendNilSelf ; if nil receiver, call handler or return nil + ld r12,ISA(r3) ; class = receiver->isa + cmpldi r11, (~kIgnore & 0xffff) + beqlr- ; if ignored selector, return self immediately + +; guaranteed non-nil entry point (disabled for now) +; .globl _objc_msgSendNonNil +; _objc_msgSendNonNil: + +; do profiling when enabled + CALL_MCOUNT + +; receiver is non-nil: search the cache +LMsgSendReceiverOk: + ; 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; + +; 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: + ; 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) + ld r11,lo16(__objc_nilReceiver-1b)(r11) + mtlr r0 ; restore return address + ; DO NOT CHANGE THE PREVIOUS SIX INSTRUCTIONS - see note above + + cmpldi r11,0 ; return nil if no new receiver + beq LMsgSendReturnZero + + mr r3,r11 ; send to new receiver + ld r12,ISA(r11) ; class = receiver->isa + b LMsgSendReceiverOk + +LMsgSendReturnZero: + li r3, 0 + li r4, 0 + ; fixme this breaks RTP + LEA_STATIC_DATA r11, L_zero, LOCAL_SYMBOL + lfd f1, 0(r11) + lfd f2, 0(r11) + +; 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 + + +#if __OBJC2__ + ENTRY _objc_msgSend_fixup + + cmpldi r3, 0 + li r2, 0 + beq- LMsgSendFixupNilSelf + + ; r3 = receiver + ; r2 = 0 (not msgSend_super) + ; r4 = address of message ref + FixupMessageRef REG3, REG2, REG4 + + ; imp is in r12 and ctr + ; Load _cmd from the message_ref + ld r4, 8(r4) + ; Be ready for objc_msgForward + li r11, kFwdMsgSend + bctr + +LMsgSendFixupNilSelf: + li r3, 0 + li r4, 0 + LEA_STATIC_DATA r11, L_zero, LOCAL_SYMBOL + lfd f1, 0(r11) + lfd f2, 0(r11) + blr + + END_ENTRY _objc_msgSend_fixup + + + ENTRY _objc_msgSend_fixedup + ; Load _cmd from the message_ref + ld r4, 8(r4) + b _objc_msgSend + END_ENTRY _objc_msgSend_fixedup +#endif + + +/******************************************************************** + * + * double objc_msgSend_fpret(id self, SEL op, ...); + * + ********************************************************************/ + + ENTRY _objc_msgSend_fpret + b _objc_msgSend + END_ENTRY _objc_msgSend_fpret + +/******************************************************************** + * struct_type objc_msgSend_stret(id self, + * SEL op, + * ...); + * + * objc_msgSend_stret is the struct-return form of msgSend. + * The ABI calls for r3 to be used as the address of the structure + * being returned, with the parameters in the succeeding registers. + * + * On entry: r3 is the address where the structure is returned, + * r4 is the message receiver, + * r5 is the selector + ********************************************************************/ + + ENTRY _objc_msgSend_stret +; check whether receiver is nil + cmpldi r4,0 ; receiver nil? + beq LMsgSendStretNilSelf ; if so, call handler or just return + +; guaranteed non-nil entry point (disabled for now) +; .globl _objc_msgSendNonNil_stret +; _objc_msgSendNonNil_stret: + +; do profiling when enabled + CALL_MCOUNT + +; receiver is non-nil: search the cache +LMsgSendStretReceiverOk: + ld 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; + +; cache miss: go search the method lists +LMsgSendStretCacheMiss: + MethodTableLookup STRUCT_RETURN, MSG_SEND + li r11,kFwdMsgSendStret ; indicate struct-return to _objc_msgForward + bctr ; goto *imp; + +; message sent to nil: redirect to nil receiver, if any +LMsgSendStretNilSelf: + mflr r0 ; load new receiver + bcl 20,31,1f ; 31 is cr7[so] +1: mflr r11 + addis r11,r11,ha16(__objc_nilReceiver-1b) + ld r11,lo16(__objc_nilReceiver-1b)(r11) + mtlr r0 + + cmpldi r11,0 ; return nil if no new receiver + beqlr + + mr r4,r11 ; send to new receiver + b LMsgSendStretReceiverOk + +LMsgSendStretExit: + END_ENTRY _objc_msgSend_stret + + +#if __OBJC2__ + ENTRY _objc_msgSend_stret_fixup + + cmpldi r4, 0 + li r2, 0 + beqlr- ; return if nil receiver + + ; r4 = receiver + ; r2 = 0 (not msgSend_super) + ; r5 = address of message ref + FixupMessageRef REG4, REG2, REG5 + + ; imp is in r12 and ctr + ; Load _cmd from the message_ref + ld r5, 8(r5) + ; Be ready for objc_msgForward + li r11, kFwdMsgSendStret + bctr + + END_ENTRY _objc_msgSend_stret_fixup + + + ENTRY _objc_msgSend_stret_fixedup + ; Load _cmd from the message_ref + ld r5, 8(r5) + b _objc_msgSend_stret + END_ENTRY _objc_msgSend_stret_fixedup +#endif + + +/******************************************************************** + * id objc_msgSendSuper(struct objc_super *super, + * SEL op, + * ...); + * + * struct objc_super { + * id receiver; + * Class class; + * }; + ********************************************************************/ + + + ENTRY _objc_msgSendSuper +; do profiling when enabled + CALL_MCOUNT + +; check whether selector is to be ignored + not r11, r4 + xoris r11, r11, ((~kIgnore >> 16) & 0xffff) + ld r12,CLASS(r3) ; class = super->class + cmpldi r11, (~kIgnore & 0xffff) + beqlr- ; if ignored selector, return self immediately + +; search the cache + ; class is already in r12 + CacheLookup r4, LMsgSendSuperCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 + ld r3,RECEIVER(r3) ; receiver is the first arg + ; r11 guaranteed non-zero after cache hit + ; li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward + bctr ; goto *imp; + +; cache miss: go search the method lists +LMsgSendSuperCacheMiss: + MethodTableLookup WORD_RETURN, MSG_SENDSUPER + ld r3,RECEIVER(r3) ; receiver is the first arg + li r11,kFwdMsgSend ; indicate word-return to _objc_msgForward + bctr ; goto *imp; + +; ignored selector: return self +LMsgSendSuperIgnored: + ld r3,RECEIVER(r3) + blr + +LMsgSendSuperExit: + END_ENTRY _objc_msgSendSuper + + +#if __OBJC2__ + ENTRY _objc_msgSendSuper2_fixup + + ld r2, RECEIVER(r3) + + ; r2 = receiver + ; r3 = address of objc_super2 + ; r4 = address of message ref + FixupMessageRef REG2, REG3, REG4 + + ; imp is in r12 and ctr + ; Load _cmd from the message_ref + ld r4, 8(r4) + ; Load receiver from objc_super2 + ld r3, RECEIVER(r3) + bctr + + END_ENTRY _objc_msgSendSuper2_fixup + + + ENTRY _objc_msgSendSuper2_fixedup + ; objc_super->class is superclass of the class to search + ld r11, CLASS(r3) ; cls = objc_super->class + ld r4, 8(r4) ; load _cmd from message_ref + ld r11, 8(r11) ; cls = cls->superclass + std r11, CLASS(r3) ; objc_super->class = cls + ; objc_super->class is now the class to search + b _objc_msgSendSuper + END_ENTRY _objc_msgSendSuper2_fixedup +#endif + + +/******************************************************************** + * struct_type objc_msgSendSuper_stret(objc_super *super, + * SEL op, + * ...); + * + * struct objc_super { + * id receiver; + * Class class; + * }; + * + * + * objc_msgSendSuper_stret is the struct-return form of msgSendSuper. + * The ABI calls for r3 to be used as the address of the structure + * being returned, with the parameters in the succeeding registers. + * + * On entry: r3 is the address to which to copy the returned structure, + * r4 is the address of the objc_super structure, + * r5 is the selector + ********************************************************************/ + + ENTRY _objc_msgSendSuper_stret +; do profiling when enabled + CALL_MCOUNT + +; search the cache + ld r12,CLASS(r4) ; class = super->class + CacheLookup r5, LMsgSendSuperStretCacheMiss + ; CacheLookup placed imp in r12 + mtctr r12 + ld r4,RECEIVER(r4) ; receiver is the first arg + li r11,kFwdMsgSendStret ; indicate struct-return to _objc_msgForward + bctr ; goto *imp; + +; cache miss: go search the method lists +LMsgSendSuperStretCacheMiss: + MethodTableLookup STRUCT_RETURN, MSG_SENDSUPER + ld r4,RECEIVER(r4) ; receiver is the first arg + li r11,kFwdMsgSendStret ; indicate struct-return to _objc_msgForward + bctr ; goto *imp; + +LMsgSendSuperStretExit: + END_ENTRY _objc_msgSendSuper_stret + + +#if __OBJC2__ + ENTRY _objc_msgSendSuper2_stret_fixup + + ld r2, RECEIVER(r4) + + ; r2 = receiver + ; r4 = address of objc_super2 + ; r5 = address of message ref + FixupMessageRef REG2, REG4, REG5 + + ; imp is in r12 and ctr + ; Load _cmd from the message_ref + ld r5, 8(r5) + ; Load receiver from objc_super2 + ld r4, RECEIVER(r4) + bctr + + END_ENTRY _objc_msgSendSuper2_stret_fixup + + + ENTRY _objc_msgSendSuper2_stret_fixedup + ; objc_super->class is superclass of the class to search + ld r11, CLASS(r4) ; cls = objc_super->class + ld r5, 8(r5) ; load _cmd from message_ref + ld r11, 8(r11) ; cls = cls->superclass + std r11, CLASS(r4) ; objc_super->class = cls + ; objc_super->class is now the class to search + b _objc_msgSendSuper_stret + END_ENTRY _objc_msgSendSuper2_stret_fixedup +#endif + + +/******************************************************************** + * + * Out-of-band parameter r11 indicates whether it was objc_msgSend or + * objc_msgSend_stret that triggered the message forwarding. The + * + * Iff r11 == kFwdMsgSend, it is the word-return (objc_msgSend) case, + * and the interface is: + * + * id _objc_msgForward(id self, + * SEL sel, + * ...); + * + * Iff r11 == kFwdMsgSendStret, it is the structure-return + * (objc_msgSend_stret) case, and the interface is: + * + * struct_type _objc_msgForward(id self, + * SEL sel, + * ...); + * + * There are numerous reasons why it is better to have one + * _objc_msgForward, rather than adding _objc_msgForward_stret. + * The best one is that _objc_msgForward is the method that + * gets cached when respondsToMethod returns false, and it + * wouldnt know which one to use. + * + * Sends the message to a method having the signature + * + * - forward:(SEL)sel :(marg_list)args; + * + * But the marg_list is prepended with the 13 double precision + * floating point registers that could be used as parameters into + * the method (fortunately, the same registers are used for either + * single or double precision floats). These registers are layed + * down by _objc_msgForward, and picked up by _objc_msgSendv. So + * the "marg_list" is actually: + * + * typedef struct objc_sendv_margs { + * double floatingPointArgs[13]; + * intptr_t linkageArea[6]; + * intptr_t registerArgs[8]; + * intptr_t stackArgs[variable]; + * }; + * + ********************************************************************/ + +; _FwdSel is @selector(forward::), set up in map_images(). +; ALWAYS dereference _FwdSel to get to "forward::" !! + .data + .align 3 + .private_extern _FwdSel +_FwdSel: .quad 0 + + .cstring + .align 3 +LUnkSelStr: .ascii "Does not recognize selector %s\0" + + .data + .align 3 + .private_extern __objc_forward_handler +__objc_forward_handler: .quad 0 + + .data + .align 3 + .private_extern __objc_forward_stret_handler +__objc_forward_stret_handler: .quad 0 + + ENTRY __objc_msgForward +; do profiling when enabled + CALL_MCOUNT + + ; Check return type (stret or not) + cmpldi r11, kFwdMsgSendStret + beq LMsgForwardStretSel + + ; Non-stret return + ; Call user handler, if any + LOAD_STATIC_WORD r12, __objc_forward_handler, LOCAL_SYMBOL + cmpldi r12, 0 + mtctr r12 + bnectr ; call _objc_forward_handler if not NULL + ; No user handler + mr r11, r3 ; r11 = receiver + mr r12, r4 ; r12 = SEL + b LMsgForwardSelCmp + +LMsgForwardStretSel: + ; Stret return + ; Call user handler, if any + LOAD_STATIC_WORD r12, __objc_forward_stret_handler, LOCAL_SYMBOL + cmpldi r12, 0 + mtctr r12 + bnectr ; call _objc_forward_stret_handler if not NULL + ; No user handler + mr r11, r4 ; r11 = receiver + mr r12, r5 ; r12 = SEL + +LMsgForwardSelCmp: + ; r11 is the receiver + ; r12 is the selector + + ; Die if forwarding "forward::" + LOAD_STATIC_WORD r2, _FwdSel, LOCAL_SYMBOL + cmpld r2, r12 + beq LMsgForwardError + + ; Save registers to margs + ; Link register + mflr r0 + std r0, 16(r1) + + ; GPR parameters + std r3, 48(r1) + std r4, 56(r1) + std r5, 64(r1) + std r6, 72(r1) + std r7, 80(r1) + std r8, 88(r1) + std r9, 96(r1) + std r10,104(r1) + + ; FP parameters + stfd f1, -104(r1) + stfd f2, -96(r1) + stfd f3, -88(r1) + stfd f4, -80(r1) + stfd f5, -72(r1) + stfd f6, -64(r1) + stfd f7, -56(r1) + stfd f8, -48(r1) + stfd f9, -40(r1) + stfd f10, -32(r1) + stfd f11, -24(r1) + stfd f12, -16(r1) + stfd f13, -8(r1) + + ; Call [receiver forward:sel :margs] + mr r3, r11 ; receiver + mr r4, r2 ; forward:: + mr r5, r12 ; sel + subi r6,r1,13*8 ; &margs (on stack) + + stdu r1,-120-(13*8)(r1) ; push stack frame + bl _objc_msgSend ; [self forward:sel :objc_sendv_margs] + addi r1,r1,120+13*8 ; pop stack frame + + ld r0,16(r1) ; restore lr + mtlr r0 ; + blr ; + + +LMsgForwardError: + ; Call __objc_error(receiver, "unknown selector %s", "forward::") + mr r3, r11 + LEA_STATIC_DATA r4, LUnkSelStr, LOCAL_SYMBOL + mr r5, r2 + CALL_EXTERN(___objc_error) ; never returns + trap + + END_ENTRY __objc_msgForward + + + ENTRY _method_invoke + + ld r12, METHOD_IMP(r4) + ld r4, METHOD_NAME(r4) + mtctr r12 + bctr + + END_ENTRY _method_invoke + + + ENTRY _method_invoke_stret + + ld r12, METHOD_IMP(r5) + ld r5, METHOD_NAME(r5) + mtctr r12 + bctr + + END_ENTRY _method_invoke_stret diff --git a/runtime/Messengers.subproj/objc-msg-stub-i386.s b/runtime/Messengers.subproj/objc-msg-stub-i386.s index ff8549a..c91ba5b 100644 --- a/runtime/Messengers.subproj/objc-msg-stub-i386.s +++ b/runtime/Messengers.subproj/objc-msg-stub-i386.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004, 2006 Apple 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 @@ -44,7 +42,7 @@ L_objc_msgSend$stub: call L_get_pc_thunk.edx 1: movl L_objc_msgSend$lz-1b(%edx),%ecx - jmp %ecx + jmp *%ecx L_objc_msgSend$stub_binder: lea L_objc_msgSend$lz-1b(%edx),%eax pushl %eax @@ -59,6 +57,6 @@ L_objc_msgSend$lz: .text .align 4, 0x90 - .globl _objc_msgSend_stub + .private_extern _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 index 9b2a768..8cc525b 100644 --- a/runtime/Messengers.subproj/objc-msg-stub-ppc.s +++ b/runtime/Messengers.subproj/objc-msg-stub-ppc.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004, 2006 Apple 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 @@ -54,7 +52,7 @@ L_objc_msgSend$lazy_ptr: .text .align 4 - .globl _objc_msgSend_stub + .private_extern _objc_msgSend_stub _objc_msgSend_stub: b L_objc_msgSend$stub diff --git a/runtime/Messengers.subproj/objc-msg-stub-ppc64.s b/runtime/Messengers.subproj/objc-msg-stub-ppc64.s new file mode 100644 index 0000000..9376960 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-stub-ppc64.s @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2004-2006 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 + .section __TEXT, __picsymbol_stub, symbol_stubs, pure_instructions, 32 +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 + ldu r12,lo16(L_objc_msgSend$lazy_ptr-1b)(r11) + mtctr r12 + bctr + + .data + .lazy_symbol_pointer +L_objc_msgSend$lazy_ptr: + .indirect_symbol _objc_msgSend + .quad dyld_stub_binding_helper + + .text + .align 4 + .private_extern _objc_msgSend_stub + +_objc_msgSend_stub: + b L_objc_msgSend$stub diff --git a/runtime/Messengers.subproj/objc-msg-stub-x86_64.s b/runtime/Messengers.subproj/objc-msg-stub-x86_64.s new file mode 100644 index 0000000..1295567 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-stub-x86_64.s @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2004-2006 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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. + */ + +#warning x86_64 interposing stub not implemented + + .text + .align 2, 0x90 + .globl _objc_msgSend_stub +_objc_msgSend_stub: + jmp _objc_msgSend diff --git a/runtime/Messengers.subproj/objc-msg-stub.s b/runtime/Messengers.subproj/objc-msg-stub.s index 9111c26..2e1859c 100644 --- a/runtime/Messengers.subproj/objc-msg-stub.s +++ b/runtime/Messengers.subproj/objc-msg-stub.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2006 Apple 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 @@ -29,7 +27,10 @@ #include "objc-msg-stub-i386.s" #elif defined (__ppc__) || defined(ppc) #include "objc-msg-stub-ppc.s" - +#elif defined (__ppc64__) || defined(ppc64) + #include "objc-msg-stub-ppc64.s" +#elif defined (__x86_64__) + #include "objc-msg-stub-x86_64.s" #else #error Architecture not supported #endif diff --git a/runtime/Messengers.subproj/objc-msg-x86_64.s b/runtime/Messengers.subproj/objc-msg-x86_64.s new file mode 100644 index 0000000..a74f421 --- /dev/null +++ b/runtime/Messengers.subproj/objc-msg-x86_64.s @@ -0,0 +1,1279 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-msg-x86_64.s - x86-64 code to support objc messaging. + ** + ******************************************************************** + ********************************************************************/ + +#define __OBJC2__ 1 + +#undef OBJC_ASM +#define OBJC_ASM +#include "objc-rtp.h" + + +/******************************************************************** +* Data used by the ObjC runtime. +* +********************************************************************/ + +.data +// Substitute receiver for messages sent to nil (usually also nil) +// id _objc_nilReceiver +.align 4 +.globl __objc_nilReceiver +__objc_nilReceiver: + .quad 0 + +// _objc_entryPoints and _objc_exitPoints are used by objc +// to get the critical regions for which method caches +// cannot be garbage collected. + +.globl _objc_entryPoints +_objc_entryPoints: + .quad __cache_getImp + .quad __cache_getMethod + .quad _objc_msgSend + .quad _objc_msgSend_fpret + .quad _objc_msgSend_fp2ret + .quad _objc_msgSend_stret + .quad _objc_msgSendSuper + .quad _objc_msgSendSuper_stret + .quad 0 + +.globl _objc_exitPoints +_objc_exitPoints: + .quad LGetImpExit + .quad LGetMethodExit + .quad LMsgSendExit + .quad LMsgSendFpretExit + .quad LMsgSendFp2retExit + .quad LMsgSendStretExit + .quad LMsgSendSuperExit + .quad LMsgSendSuperStretExit + .quad 0 + + +/******************************************************************** + * + * Names for parameter registers. + * + ********************************************************************/ + +#define a1 rdi +#define a2 rsi +#define a3 rdx +#define a4 rcx +#define a5 r8 +#define a6 r9 +#define a6d r9d + + +/******************************************************************** + * + * Structure definitions. + * + ********************************************************************/ + +// objc_super parameter to sendSuper + receiver = 0 + class = 8 + +// Selected field offsets in class structure + isa = 0 +#if __OBJC2__ + cache = 16 +#else + cache = 64 +#endif + +// Method descriptor + method_name = 0 + method_imp = 16 + +// Cache header + mask = 0 + occupied = 4 + buckets = 8 // variable length array + +// typedef struct { +// uint128_t floatingPointArgs[8]; // xmm0..xmm7 +// long linkageArea[4]; // r10, rax, ebp, ret +// long registerArgs[6]; // a1..a6 +// long stackArgs[0]; // variable-size +// } *marg_list; +#define FP_AREA 0 +#define LINK_AREA (FP_AREA+8*16) +#define REG_AREA (LINK_AREA+4*8) +#define STACK_AREA (REG_AREA+6*8) + + +#if defined(OBJC_INSTRUMENTED) +// Cache instrumentation data, follows buckets + hitCount = 0 + hitProbes = hitCount + 4 + maxHitProbes = hitProbes + 4 + missCount = maxHitProbes + 4 + missProbes = missCount + 4 + maxMissProbes = missProbes + 4 + flushCount = maxMissProbes + 4 + flushedEntries = flushCount + 4 + +// Buckets in CacheHitHistogram and CacheMissHistogram + CACHE_HISTOGRAM_SIZE = 512 +#endif + + +////////////////////////////////////////////////////////////////////// +// +// ENTRY functionName +// +// Assembly directives to begin an exported function. +// +// Takes: functionName - name of the exported function +////////////////////////////////////////////////////////////////////// + +.macro ENTRY + .text + .globl $0 + .align 2, 0x90 +$0: +.endmacro + +////////////////////////////////////////////////////////////////////// +// +// END_ENTRY functionName +// +// Assembly directives to end an exported function. Just a placeholder, +// a close-parenthesis for ENTRY, until it is needed for something. +// +// Takes: functionName - name of the exported function +////////////////////////////////////////////////////////////////////// + +.macro END_ENTRY +.endmacro + +////////////////////////////////////////////////////////////////////// +// +// CALL_MCOUNTER +// +// Calls mcount() profiling routine. Must be called immediately on +// function entry, before any prologue executes. +// +////////////////////////////////////////////////////////////////////// + +.macro CALL_MCOUNTER +#ifdef PROFILE + // Current stack contents: ret + pushq %rbp + movq %rsp,%rbp + // Current stack contents: ret, rbp + call mcount + movq %rbp,%rsp + popq %rbp +#endif +.endmacro + + +///////////////////////////////////////////////////////////////////// +// +// SaveRegisters +// +// Pushes a stack frame and saves all registers that might contain +// parameter values. +// +// On entry: +// $0 = 0 if normal, 1 if CacheLookup already saved a4, a5, a6 +// stack = ret +// +// On exit: +// %rsp is 16-byte aligned +// +///////////////////////////////////////////////////////////////////// +/* + * old->ret 0 +208 + * 16 ->rbp -8 +200 + * a6 -16 +192 + * a5 -24 +184 + * a4 -32 +176 + * a3 -40 +168 + * a2 -48 +160 + * a1 -56 +152 + * rax -64 +144 + * r10 -72 +136 + * pad -80 +128 + * xmm7 -88 +112 + * xmm6 -104 +96 + * xmm5 -120 +80 + * xmm4 -136 +64 + * xmm3 -152 +48 + * xmm2 -168 +32 + * xmm1 -184 +16 + * new->xmm0 -200 +0 + */ +.macro SaveRegisters +.if $0 == 0 + movq %a6, -16(%rsp) + movq %a5, -24(%rsp) + movq %a4, -32(%rsp) +.else + // a4-a6 already saved by CacheLookup +.endif + movq %a3, -40(%rsp) + movq %a2, -48(%rsp) + movq %a1, -56(%rsp) + movq %rax, -64(%rsp) // might be xmm parameter count + movq %r10, -72(%rsp) // fixme needed? + // movq pad, -80(%rsp) + + subq $$ 128+88, %rsp + + // stack is now 16-byte aligned + movdqa %xmm0, 0(%rsp) + movdqa %xmm1, 16(%rsp) + movdqa %xmm2, 32(%rsp) + movdqa %xmm3, 48(%rsp) + movdqa %xmm4, 64(%rsp) + movdqa %xmm5, 80(%rsp) + movdqa %xmm6, 96(%rsp) + movdqa %xmm7, 112(%rsp) +.endmacro + +///////////////////////////////////////////////////////////////////// +// +// RestoreRegisters +// +// Pops a stack frame pushed by SaveRegisters +// +// On entry: +// %rsp is unchanged since SaveRegisters +// +// On exit: +// stack = ret +// +///////////////////////////////////////////////////////////////////// + +.macro RestoreRegisters + movdqa 0(%rsp), %xmm0 + movdqa 16(%rsp), %xmm1 + movdqa 32(%rsp), %xmm2 + movdqa 48(%rsp), %xmm3 + movdqa 64(%rsp), %xmm4 + movdqa 80(%rsp), %xmm5 + movdqa 96(%rsp), %xmm6 + movdqa 112(%rsp), %xmm7 + + addq $$ 128+88, %rsp + + movq -16(%rsp), %a6 + movq -24(%rsp), %a5 + movq -32(%rsp), %a4 + movq -40(%rsp), %a3 + movq -48(%rsp), %a2 + movq -56(%rsp), %a1 + movq -64(%rsp), %rax + movq -72(%rsp), %r10 + // movq -80(%rsp), pad +.endmacro + + +///////////////////////////////////////////////////////////////////// +// +// +// CacheLookup selectorRegister, cacheMissLabel, name +// +// Locate the implementation for a selector in a class method cache. +// +// Takes: +// $0 = register containing selector (%a1 or %a2 ONLY) +// cacheMissLabel = label to branch to iff method is not cached +// %r11 = class whose cache is to be searched +// stack = ret +// +// On exit: (found) method triplet in %r11 +// (not found) jumps to cacheMissLabel +// stack = ret +// +///////////////////////////////////////////////////////////////////// + + +.macro CacheLookup + +// load variables and save caller registers. + + movq %a4, -32(%rsp) // save scratch registers in red zone + movq %a5, -24(%rsp) + movq %a6, -16(%rsp) + + movq cache(%r11), %a4 // cache = class->cache + +#if defined(OBJC_INSTRUMENTED) + pushl %ebx // save non-volatile register + pushl %eax // save cache pointer + xorl %ebx, %ebx // probeCount = 0 +#endif + + leaq buckets(%a4), %a5 // buckets = &cache->buckets + movl mask(%a4), %a6d + shlq $$3, %a6 // %a6 = cache->mask << 3 + mov $0, %a4 // bytes = sel + andq %a6, %a4 // bytes &= (mask << 3) + +// search the receiver's cache +// r11 = method (soon) +// a4 = bytes +// a5 = buckets +// a6 = mask << 3 +// $0 = sel +LMsgSendProbeCache_$1: +#if defined(OBJC_INSTRUMENTED) + addl $$1, %ebx // probeCount += 1 +#endif + movq (%a5, %a4, 1), %r11 // method = buckets[bytes/8] + testq %r11, %r11 // if (method == NULL) +#if defined(OBJC_INSTRUMENTED) + je LMsgSendCacheMiss_$1 +#else + je $1 // goto cacheMissLabel +#endif + + addq $$8, %a4 // bytes += 8 + andq %a6, %a4 // bytes &= (mask << 3) + cmpq method_name(%r11), $0 // if (method_name != sel) + jne LMsgSendProbeCache_$1 // goto loop + + // cache hit, r11 = method triplet +#if defined(OBJC_INSTRUMENTED) + jmp LMsgSendInstrumentCacheHit_$1 +LMsgSendCacheHit2_$1: +#endif + + // restore saved registers + movq -32(%rsp), %a4 + movq -24(%rsp), %a5 + movq -16(%rsp), %a6 + + // Done. Only instrumentation follows. + +#if defined(OBJC_INSTRUMENTED) + jmp LMsgSendCacheDone_$1 + +LMsgSendInstrumentCacheHit_$1: + popl %edx // retrieve cache pointer + movl mask(%edx), %esi // mask = cache->mask + testl %esi, %esi // a mask of zero is only for the... + je LMsgSendHitInstrumentDone_$1 // ... emptyCache, do not record anything + + // locate and update the CacheInstrumentation structure + addl $$1, %esi // entryCount = mask + 1 + shll $$2, %esi // tableSize = entryCount * sizeof(entry) + addl $buckets, %esi // offset = buckets + tableSize + addl %edx, %esi // cacheData = &cache->buckets[mask+1] + + movl hitCount(%esi), %edi + addl $$1, %edi + movl %edi, hitCount(%esi) // cacheData->hitCount += 1 + movl hitProbes(%esi), %edi + addl %ebx, %edi + movl %edi, hitProbes(%esi) // cacheData->hitProbes += probeCount + movl maxHitProbes(%esi), %edi// if (cacheData->maxHitProbes < probeCount) + cmpl %ebx, %edi + jge LMsgSendMaxHitProbeOK_$1 + movl %ebx, maxHitProbes(%esi)// cacheData->maxHitProbes = probeCount +LMsgSendMaxHitProbeOK_$1: + + // update cache hit probe histogram + cmpl $CACHE_HISTOGRAM_SIZE, %ebx // pin probeCount to max index + jl LMsgSendHitHistoIndexSet_$1 + movl $(CACHE_HISTOGRAM_SIZE-1), %ebx +LMsgSendHitHistoIndexSet_$1: + LEA_STATIC_DATA %esi, _CacheHitHistogram, EXTERNAL_SYMBOL + shll $$2, %ebx // convert probeCount to histogram index + addl %ebx, %esi // calculate &CacheHitHistogram[probeCount<<2] + movl 0(%esi), %edi // get current tally + addl $$1, %edi // + movl %edi, 0(%esi) // tally += 1 +LMsgSendHitInstrumentDone_$1: + popl %ebx // restore non-volatile register + jmp LMsgSendCacheHit2_$1 + + +LMsgSendCacheMiss_$1: + popl %edx // retrieve cache pointer + movl mask(%edx), %esi // mask = cache->mask + testl %esi, %esi // a mask of zero is only for the... + je LMsgSendMissInstrumentDone_$1 // ... emptyCache, do not record anything + + // locate and update the CacheInstrumentation structure + addl $$1, %esi // entryCount = mask + 1 + shll $$2, %esi // tableSize = entryCount * sizeof(entry) + addl $buckets, %esi // offset = buckets + tableSize + addl %edx, %esi // cacheData = &cache->buckets[mask+1] + + movl missCount(%esi), %edi // + addl $$1, %edi // + movl %edi, missCount(%esi) // cacheData->missCount += 1 + movl missProbes(%esi), %edi // + addl %ebx, %edi // + movl %edi, missProbes(%esi) // cacheData->missProbes += probeCount + movl maxMissProbes(%esi), %edi// if (cacheData->maxMissProbes < probeCount) + cmpl %ebx, %edi // + jge LMsgSendMaxMissProbeOK_$1 // + movl %ebx, maxMissProbes(%esi)// cacheData->maxMissProbes = probeCount +LMsgSendMaxMissProbeOK_$1: + + // update cache miss probe histogram + cmpl $CACHE_HISTOGRAM_SIZE, %ebx // pin probeCount to max index + jl LMsgSendMissHistoIndexSet_$1 + movl $(CACHE_HISTOGRAM_SIZE-1), %ebx +LMsgSendMissHistoIndexSet_$1: + LEA_STATIC_DATA %esi, _CacheMissHistogram, EXTERNAL_SYMBOL + shll $$2, %ebx // convert probeCount to histogram index + addl %ebx, %esi // calculate &CacheMissHistogram[probeCount<<2] + movl 0(%esi), %edi // get current tally + addl $$1, %edi // + movl %edi, 0(%esi) // tally += 1 +LMsgSendMissInstrumentDone_$1: + popl %ebx // restore non-volatile register + jmp $0 + +LMsgSendCacheDone_$1: +#endif + + +.endmacro + + +///////////////////////////////////////////////////////////////////// +// +// MethodTableLookup classRegister, selectorRegister +// +// Takes: $0 = class to search (%a1 or %a2 or %r11 ONLY) +// $1 = selector to search for (%a2 or %a3 ONLY) +// +// Stack: ret (%rsp+0), pad, %a4, %a5, %a6 (saved by CacheLookup) +// +// On exit: restores registers saved by CacheLookup +// imp in %r11 +// +///////////////////////////////////////////////////////////////////// +.macro MethodTableLookup + + SaveRegisters 1 + + // _class_lookupMethodAndLoadCache(class, selector) + movq $0, %a1 + movq $1, %a2 + call __class_lookupMethodAndLoadCache + + // IMP is now in %rax + movq %rax, %r11 + + RestoreRegisters + +.endmacro + + +/******************************************************************** + * Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp) + * + * On entry: a1 = class whose cache is to be searched + * a2 = selector to search for + * a3 = _objc_msgForward IMP + * + * If found, returns method triplet pointer. + * If not found, returns NULL. + * + * NOTE: _cache_getMethod never returns any cache entry whose implementation + * is _objc_msgForward. It returns NULL instead. This prevents thread- + * safety and memory management bugs in _class_lookupMethodAndLoadCache. + * See _class_lookupMethodAndLoadCache for details. + * + * _objc_msgForward is passed as a parameter because it's more efficient + * to do the (PIC) lookup once in the caller than repeatedly here. + ********************************************************************/ + + ENTRY __cache_getMethod + +// do lookup + movq %a1, %r11 // move class to r11 for CacheLookup + CacheLookup %a2, LGetMethodMiss + +// cache hit, method triplet in %r11 + cmpq method_imp(%r11), %a3 // if (imp == _objc_msgForward) + je LGetMethodMiss // return nil + movq %r11, %rax // return method triplet address + ret + +LGetMethodMiss: +// cache miss, return nil + xorq %rax, %rax // erase %rax + ret + +LGetMethodExit: + END_ENTRY __cache_getMethod + + +/******************************************************************** + * IMP _cache_getImp(Class cls, SEL sel) + * + * On entry: a1 = class whose cache is to be searched + * a2 = selector to search for + * + * If found, returns method implementation. + * If not found, returns NULL. + ********************************************************************/ + + ENTRY __cache_getImp + +// do lookup + movq %a1, %r11 // move class to r11 for CacheLookup + CacheLookup %a2, LGetImpMiss + +// cache hit, method triplet in %r11 + movq method_imp(%r11), %rax // return method imp address + ret + +LGetImpMiss: +// cache miss, return nil + xorq %rax, %rax // erase %rax + ret + +LGetImpExit: + END_ENTRY __cache_getImp + + +/******************************************************************** + * + * id objc_msgSend(id self, SEL _cmd,...); + * + ********************************************************************/ + + ENTRY _objc_msgSend + CALL_MCOUNTER + +// check whether selector is ignored + cmpq $ kIgnore, %a2 + je LMsgSendReturnSelf // ignore and return self + +// check whether receiver is nil + testq %a1, %a1 + je LMsgSendNilSelf + +// receiver (in %a1) is non-nil: search the cache +LMsgSendReceiverOk: + movq isa(%a1), %r11 // class = self->isa + CacheLookup %a2, LMsgSendCacheMiss + // CacheLookup placed method in r11 + movq method_imp(%r11), %r11 + jmp *%r11 // goto *imp + +// cache miss: go search the method lists +LMsgSendCacheMiss: + MethodTableLookup isa(%a1), %a2 + // MethodTableLookup placed IMP in r11 + jmp *%r11 // goto *imp + +// message sent to nil: redirect to nil receiver, if any +LMsgSendNilSelf: + movq __objc_nilReceiver(%rip), %a1 + testq %a1, %a1 // if (receiver != nil) + jne LMsgSendReceiverOk // send to new receiver + + // message sent to nil - return 0 + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + +LMsgSendReturnSelf: + movq %a1, %rax + ret + +LMsgSendExit: + END_ENTRY _objc_msgSend + +#if __OBJC2__ + ENTRY _objc_msgSend_fixup + + testq %a1, %a1 + je LMsgSendFixupNilSelf + + SaveRegisters 0 + // a1 = receiver + // a2 = address of message ref + movq %a2, %a3 + movq $0, %a2 + // __objc_fixupMessageRef(receiver, 0, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp *%r11 + +LMsgSendFixupNilSelf: + // message sent to nil - return 0 + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + + END_ENTRY _objc_msgSend_fixup + + + ENTRY _objc_msgSend_fixedup + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp _objc_msgSend + END_ENTRY _objc_msgSend_fixedup +#endif + + +/******************************************************************** + * + * id objc_msgSendSuper(struct objc_super *super, SEL _cmd,...); + * + * struct objc_super { + * id receiver; + * Class class; + * }; + ********************************************************************/ + + ENTRY _objc_msgSendSuper + CALL_MCOUNTER + +// check whether selector is ignored + cmpq $ kIgnore, %a2 + je LMsgSendSuperReturnSelf + +// search the cache (objc_super in %a1) + movq class(%a1), %r11 // class = objc_super->class + CacheLookup %a2, LMsgSendSuperCacheMiss + // CacheLookup placed method in r11 + movq method_imp(%r11), %r11 + movq receiver(%a1), %a1 // load real receiver + jmp *%r11 // goto *imp + +// cache miss: go search the method lists +LMsgSendSuperCacheMiss: + MethodTableLookup class(%a1), %a2 + // MethodTableLookup placed IMP in r11 + movq receiver(%a1), %a1 // load real receiver + jmp *%r11 // goto *imp + +LMsgSendSuperReturnSelf: + movq receiver(%a1), %rax + ret + +LMsgSendSuperExit: + END_ENTRY _objc_msgSendSuper + +#if __OBJC2__ + ENTRY _objc_msgSendSuper2_fixup + + SaveRegisters 0 + // a1 = address of objc_super2 + // a2 = address of message ref + movq %a2, %a3 + movq %a1, %a2 + movq receiver(%a1), %a1 + // __objc_fixupMessageRef(receiver, objc_super, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a2), %a2 + // Load receiver from objc_super2 + movq receiver(%a1), %a1 + jmp *%r11 + + END_ENTRY _objc_msgSendSuper2_fixup + + + ENTRY _objc_msgSendSuper2_fixedup + // objc_super->class is superclass of class to search + movq class(%a1), %r11 // cls = objc_super->class + movq 8(%a2), %a2 // load _cmd from message_ref + movq 8(%r11), %r11 // cls = cls->superclass + movq %r11, class(%a1) + // objc_super->class is now the class to search + jmp _objc_msgSendSuper + END_ENTRY _objc_msgSendSuper2_fixedup +#endif + + +/******************************************************************** + * + * double objc_msgSend_fpret(id self, SEL _cmd,...); + * Used for `long double` return only. `float` and `double` use objc_msgSend. + * + ********************************************************************/ + + ENTRY _objc_msgSend_fpret + CALL_MCOUNTER + +// check whether selector is ignored + cmpq $ kIgnore, %a2 + je LMsgSendFpretReturnZero + +// check whether receiver is nil + testq %a1, %a1 + je LMsgSendFpretNilSelf + +// receiver (in %a1) is non-nil: search the cache +LMsgSendFpretReceiverOk: + movq isa(%a1), %r11 // class = self->isa + CacheLookup %a2, LMsgSendFpretCacheMiss + // CacheLookup placed method in r11 + movq method_imp(%r11), %r11 + jmp *%r11 // goto *imp + +// cache miss: go search the method lists +LMsgSendFpretCacheMiss: + MethodTableLookup isa(%a1), %a2 + // MethodTableLookup placed IMP in r11 + jmp *%r11 // goto *imp + +// message sent to nil: redirect to nil receiver, if any +LMsgSendFpretNilSelf: +1: movq __objc_nilReceiver(%rip),%a1 + testq %a1, %a1 // if (receiver != nil) + jne LMsgSendFpretReceiverOk // send to new receiver + +LMsgSendFpretReturnZero: + // Long double return. + fldz + // Clear int and float/double return too. + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + +LMsgSendFpretExit: + END_ENTRY _objc_msgSend_fpret + +#if __OBJC2__ + ENTRY _objc_msgSend_fpret_fixup + + testq %a1, %a1 + je LMsgSendFpretFixupNilSelf + + SaveRegisters 0 + // a1 = receiver + // a2 = address of message ref + movq %a2, %a3 + movq $0, %a2 + // __objc_fixupMessageRef(receiver, 0, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp *%r11 + +LMsgSendFpretFixupNilSelf: + // Long double return. + fldz + // Clear int and float/double return too. + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + + END_ENTRY _objc_msgSend_fpret_fixup + + + ENTRY _objc_msgSend_fpret_fixedup + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp _objc_msgSend_fpret + END_ENTRY _objc_msgSend_fpret_fixedup +#endif + + +/******************************************************************** + * + * double objc_msgSend_fp2ret(id self, SEL _cmd,...); + * Used for `complex long double` return only. + * + ********************************************************************/ + + ENTRY _objc_msgSend_fp2ret + CALL_MCOUNTER + +// check whether selector is ignored + cmpq $ kIgnore, %a2 + je LMsgSendFp2retReturnZero + +// check whether receiver is nil + testq %a1, %a1 + je LMsgSendFp2retNilSelf + +// receiver (in %a1) is non-nil: search the cache +LMsgSendFp2retReceiverOk: + movq isa(%a1), %r11 // class = self->isa + CacheLookup %a2, LMsgSendFp2retCacheMiss + // CacheLookup placed method in r11 + movq method_imp(%r11), %r11 + jmp *%r11 // goto *imp + +// cache miss: go search the method lists +LMsgSendFp2retCacheMiss: + MethodTableLookup isa(%a1), %a2 + // MethodTableLookup placed IMP in r11 + jmp *%r11 // goto *imp + +// message sent to nil: redirect to nil receiver, if any +LMsgSendFp2retNilSelf: +1: movq __objc_nilReceiver(%rip),%a1 + testq %a1, %a1 // if (receiver != nil) + jne LMsgSendFp2retReceiverOk // send to new receiver + +LMsgSendFp2retReturnZero: + // complex long double return. + fldz + fldz + // Clear int and float/double return too. + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + +LMsgSendFp2retExit: + END_ENTRY _objc_msgSend_fp2ret + +#if __OBJC2__ + ENTRY _objc_msgSend_fp2ret_fixup + + testq %a1, %a1 + je LMsgSendFp2retFixupNilSelf + + SaveRegisters 0 + // a1 = receiver + // a2 = address of message ref + movq %a2, %a3 + movq $0, %a2 + // __objc_fixupMessageRef(receiver, 0, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp *%r11 + +LMsgSendFp2retFixupNilSelf: + // complex long double return. + fldz + fldz + // Clear int and float/double return too. + movq $0, %rax + movq $0, %rdx + xorps %xmm0, %xmm0 + xorps %xmm1, %xmm1 + ret + + END_ENTRY _objc_msgSend_fp2ret_fixup + + + ENTRY _objc_msgSend_fp2ret_fixedup + // Load _cmd from the message_ref + movq 8(%a2), %a2 + jmp _objc_msgSend_fp2ret + END_ENTRY _objc_msgSend_fp2ret_fixedup +#endif + + +/******************************************************************** + * + * void objc_msgSend_stret(void *st_addr, id self, SEL _cmd, ...); + * + * objc_msgSend_stret is the struct-return form of msgSend. + * The ABI calls for %a1 to be used as the address of the structure + * being returned, with the parameters in the succeeding locations. + * + * On entry: %a1 is the address where the structure is returned, + * %a2 is the message receiver, + * %a3 is the selector + ********************************************************************/ + + ENTRY _objc_msgSend_stret + CALL_MCOUNTER + +// check whether receiver is nil + testq %a2, %a2 + je LMsgSendStretNilSelf + +// receiver (in %a2) is non-nil: search the cache +LMsgSendStretReceiverOk: + movq isa(%a2), %r11 // class = self->isa + CacheLookup %a3, LMsgSendStretCacheMiss + // CacheLookup placed method in %r11 + movq method_imp(%r11), %r11 +LMsgSendStretCallImp: + cmpq %r11, L_objc_msgForward(%rip) // if imp == _objc_msgForward + je __objc_msgForward_stret // call struct-returning fwd + jmp *%r11 // else goto *imp + +// cache miss: go search the method lists +LMsgSendStretCacheMiss: + MethodTableLookup isa(%a2), %a3 + // MethodTableLookup placed IMP in r11 + jmp LMsgSendStretCallImp + +// message sent to nil: redirect to nil receiver, if any +LMsgSendStretNilSelf: + movq __objc_nilReceiver(%rip), %a2 + testq %a2, %a2 // if (receiver != nil) + jne LMsgSendStretReceiverOk // send to new receiver + ret // else just return + +LMsgSendStretExit: + END_ENTRY _objc_msgSend_stret + +#if __OBJC2__ + ENTRY _objc_msgSend_stret_fixup + + testq %a2, %a2 + je LMsgSendStretFixupNilSelf + + SaveRegisters 0 + // a2 = receiver + // a3 = address of message ref + movq %a2, %a1 + movq $0, %a2 + // __objc_fixupMessageRef(receiver, 0, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a3), %a3 + cmpq %r11, L_objc_msgForward(%rip) // if imp == _objc_msgForward + je __objc_msgForward_stret // call struct-returning fwd + jmp *%r11 // else goto *imp + +LMsgSendStretFixupNilSelf: + ret + + END_ENTRY _objc_msgSend_stret_fixup + + + ENTRY _objc_msgSend_stret_fixedup + // Load _cmd from the message_ref + movq 8(%a3), %a3 + jmp _objc_msgSend_stret + END_ENTRY _objc_msgSend_stret_fixedup +#endif + + +/******************************************************************** + * + * void objc_msgSendSuper_stret(void *st_addr, struct objc_super *super, SEL _cmd, ...); + * + * struct objc_super { + * id receiver; + * Class class; + * }; + * + * objc_msgSendSuper_stret is the struct-return form of msgSendSuper. + * The ABI calls for (sp+4) to be used as the address of the structure + * being returned, with the parameters in the succeeding registers. + * + * On entry: %a1 is the address where the structure is returned, + * %a2 is the address of the objc_super structure, + * %a3 is the selector + * + ********************************************************************/ + + ENTRY _objc_msgSendSuper_stret + CALL_MCOUNTER + +// search the cache (objc_super in %a2) + movq class(%a2), %r11 // class = objc_super->class + CacheLookup %a3, LMsgSendSuperStretCacheMiss + // CacheLookup placed method in %r11 + movq method_imp(%r11), %r11 +LMsgSendSuperStretCallImp: + movq receiver(%a2), %a2 // load real receiver + cmpq %r11, L_objc_msgForward(%rip) // if imp == _objc_msgForward + je __objc_msgForward_stret // call struct-returning fwd + jmp *%r11 // else goto *imp + +// cache miss: go search the method lists +LMsgSendSuperStretCacheMiss: + MethodTableLookup class(%a2), %a3 + // MethodTableLookup placed IMP in r11 + jmp LMsgSendSuperStretCallImp + +LMsgSendSuperStretExit: + END_ENTRY _objc_msgSendSuper_stret + +#if __OBJC2__ + ENTRY _objc_msgSendSuper2_stret_fixup + + SaveRegisters 0 + // a2 = address of objc_super2 + // a3 = address of message ref + movq receiver(%a2), %a1 + // __objc_fixupMessageRef(receiver, objc_super, ref) + call __objc_fixupMessageRef + movq %rax, %r11 + RestoreRegisters + + // imp is in r11 + // Load _cmd from the message_ref + movq 8(%a3), %a3 + // Load receiver from objc_super2 + movq receiver(%a2), %a2 + cmpq %r11, L_objc_msgForward(%rip) // if imp == _objc_msgForward + je __objc_msgForward_stret // call struct-returning fwd + jmp *%r11 // else goto *imp + + END_ENTRY _objc_msgSendSuper2_stret_fixup + + + ENTRY _objc_msgSendSuper2_stret_fixedup + // objc_super->class is superclass of class to search + movq class(%a2), %r11 // cls = objc_super->class + movq 8(%a3), %a3 // load _cmd from message_ref + movq 8(%r11), %r11 // cls = cls->superclass + movq %r11, class(%a2) + // objc_super->class is now the class to search + jmp _objc_msgSendSuper_stret + END_ENTRY _objc_msgSendSuper2_stret_fixedup +#endif + + +/******************************************************************** + * + * id _objc_msgForward(id self, SEL _cmd,...); + * + ********************************************************************/ + +// _FwdSel is @selector(forward::), set up in map_images(). +// ALWAYS dereference _FwdSel to get to "forward::" !! + .data + .align 3 + .private_extern _FwdSel +_FwdSel: .quad 0 + + .cstring + .align 3 +LUnkSelStr: .ascii "Does not recognize selector %s\0" + + .data + .align 3 + .private_extern __objc_forward_handler +__objc_forward_handler: .quad 0 + + .data + .align 3 + .private_extern __objc_forward_stret_handler +__objc_forward_stret_handler: .quad 0 + + // GrP fixme don't know how to cmpq reg, _objc_msgForward +L_objc_msgForward: .quad __objc_msgForward + + ENTRY __objc_msgForward + + // Non-struct return only! + + // Call user handler, if any + movq __objc_forward_handler(%rip), %r11 + testq %r11, %r11 // if (handler == NULL) + je 1f // skip handler + jmp *%r11 // else goto handler +1: + // No user handler + + // Die if forwarding "forward::" + cmpq %a2, _FwdSel(%rip) + je LMsgForwardError + + // Record current return address. It will be copied elsewhere in + // the marg_list because this location is needed for register args + movq (%rsp), %r11 + + // Push stack frame + // Space for: fpArgs + regArgs + linkage - ret (already on stack) + subq $ 8*16 + 6*8 + (4-1)*8, %rsp + + // Save return address in linkage area. + movq %r11, 16+LINK_AREA(%rsp) + + // Save parameter registers + movq %a1, 0+REG_AREA(%rsp) + movq %a2, 8+REG_AREA(%rsp) + movq %a3, 16+REG_AREA(%rsp) + movq %a4, 24+REG_AREA(%rsp) + movq %a5, 32+REG_AREA(%rsp) + movq %a6, 40+REG_AREA(%rsp) + + // Save side parameter registers + movq %r10, 0+LINK_AREA(%rsp) // static chain (fixme needed?) + movq %rax, 8+LINK_AREA(%rsp) // xmm count + // 16+LINK_AREA is return address + + // Save xmm registers + movdqa %xmm0, 0+FP_AREA(%rsp) + movdqa %xmm1, 16+FP_AREA(%rsp) + movdqa %xmm2, 32+FP_AREA(%rsp) + movdqa %xmm3, 48+FP_AREA(%rsp) + movdqa %xmm4, 64+FP_AREA(%rsp) + movdqa %xmm5, 80+FP_AREA(%rsp) + movdqa %xmm6, 96+FP_AREA(%rsp) + movdqa %xmm7, 112+FP_AREA(%rsp) + + // Call [receiver forward:sel :margs] + movq %rsp, %a4 // marg_list + movq %a2, %a3 // sel + movq _FwdSel(%rip), %a2 // forward:: + // %a1 is already the receiver + + call _objc_msgSend + + // Retrieve return address from linkage area + movq 16+LINK_AREA(%rsp), %r11 + // Pop stack frame + subq $ 8*16 + 6*8 + (4-1)*8, %rsp + // Put return address back + movq %r11, (%rsp) + ret + +LMsgForwardError: + // Tail-call __objc_error(receiver, "unknown selector %s", "forward::") + // %a1 is already the receiver + leaq LUnkSelStr(%rip), %a2 // "unknown selector %s" + movq _FwdSel(%rip), %a3 // forward:: + jmp ___objc_error // never returns + + END_ENTRY __objc_msgForward + + + ENTRY __objc_msgForward_stret + + // Call user handler, if any + movq __objc_forward_stret_handler(%rip), %r11 + testq %r11, %r11 // if (handler == NULL) + je 1f // skip handler + jmp *%r11 // else goto handler +1: + // No user handler + // Die if forwarding "forward::" + cmpq %a3, _FwdSel(%rip) + je LMsgForwardStretError + + // Record current return address. It will be copied elsewhere in + // the marg_list because this location is needed for register args + movq (%rsp), %r11 + + // Push stack frame + // Space for: fpArgs + regArgs + linkage - ret (already on stack) + subq $ 8*16 + 6*8 + (4-1)*8, %rsp + + // Save return address in linkage area. + movq %r11, 16+LINK_AREA(%rsp) + + // Save parameter registers + movq %a1, 0+REG_AREA(%rsp) + movq %a2, 8+REG_AREA(%rsp) + movq %a3, 16+REG_AREA(%rsp) + movq %a4, 24+REG_AREA(%rsp) + movq %a5, 32+REG_AREA(%rsp) + movq %a6, 40+REG_AREA(%rsp) + + // Save side parameter registers + movq %r10, 0+LINK_AREA(%rsp) // static chain (fixme needed?) + movq %rax, 8+LINK_AREA(%rsp) // xmm count + // 16+LINK_AREA is return address + + // Save xmm registers + movdqa %xmm0, 0+FP_AREA(%rsp) + movdqa %xmm1, 16+FP_AREA(%rsp) + movdqa %xmm2, 32+FP_AREA(%rsp) + movdqa %xmm3, 48+FP_AREA(%rsp) + movdqa %xmm4, 64+FP_AREA(%rsp) + movdqa %xmm5, 80+FP_AREA(%rsp) + movdqa %xmm6, 96+FP_AREA(%rsp) + movdqa %xmm7, 112+FP_AREA(%rsp) + + // Call [receiver forward:sel :margs] + movq %a2, %a1 // receiver + movq _FwdSel(%rip), %a2 // forward:: + // %a3 is already the selector + movq %rsp, %a4 // marg_list + + call _objc_msgSend // forward:: is NOT struct-return + + // Retrieve return address from linkage area + movq 16+LINK_AREA(%rsp), %r11 + // Pop stack frame + subq $ 8*16 + 6*8 + (4-1)*8, %rsp + // Put return address back + movq %r11, (%rsp) + ret + +LMsgForwardStretError: + // Tail-call __objc_error(receiver, "unknown selector %s", "forward::") + movq %a2, %a1 // receiver + leaq LUnkSelStr(%rip), %a2 // "unknown selector %s" + movq _FwdSel(%rip), %a3 // forward:: + jmp ___objc_error // never returns + + END_ENTRY __objc_msgForward_stret + + + ENTRY _method_invoke + + movq method_imp(%a2), %r11 + movq method_name(%a2), %a2 + jmp *%r11 + + END_ENTRY _method_invoke + + + ENTRY _method_invoke_stret + + movq method_imp(%a3), %r11 + movq method_name(%a3), %a3 + jmp *%r11 + + END_ENTRY _method_invoke_stret diff --git a/runtime/Messengers.subproj/objc-msg.s b/runtime/Messengers.subproj/objc-msg.s index 02399ec..e2f5cac 100644 --- a/runtime/Messengers.subproj/objc-msg.s +++ b/runtime/Messengers.subproj/objc-msg.s @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2001, 2005-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -37,7 +35,10 @@ #include "objc-msg-i386.s" #elif defined (__ppc__) || defined(ppc) #include "objc-msg-ppc.s" - +#elif defined (__ppc64__) + #include "objc-msg-ppc64.s" +#elif defined (__x86_64__) + #include "objc-msg-x86_64.s" #else #error Architecture not supported #endif diff --git a/runtime/Object.h b/runtime/Object.h index 31ceb2f..3a2580b 100644 --- a/runtime/Object.h +++ b/runtime/Object.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2005-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -34,9 +32,22 @@ #ifndef _OBJC_OBJECT_H_ #define _OBJC_OBJECT_H_ -#include +#include +#import + +#if __OBJC2__ + +@interface Object +{ + Class isa; /* A pointer to the instance's class structure */ +} + ++class; +-(BOOL) isEqual:anObject; + +@end -@class Protocol; +#else @interface Object { @@ -159,10 +170,6 @@ @end -OBJC_EXPORT id object_dispose(Object *anObject); -OBJC_EXPORT id object_copy(Object *anObject, unsigned nBytes); -OBJC_EXPORT id object_copyFromZone(Object *anObject, unsigned nBytes, void *z); -OBJC_EXPORT id object_realloc(Object *anObject, unsigned nBytes); -OBJC_EXPORT id object_reallocFromZone(Object *anObject, unsigned nBytes, void *z); +#endif #endif /* _OBJC_OBJECT_H_ */ diff --git a/runtime/Object.m b/runtime/Object.m index 8abc26e..1990ccf 100644 --- a/runtime/Object.m +++ b/runtime/Object.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -27,24 +25,43 @@ Copyright 1988-1996 NeXT Software, Inc. */ -#import -#import "objc-private.h" -#import -#import -#import +#if __OBJC2__ + +#import "Object.h" + +@implementation Object + ++ initialize +{ + return self; +} + ++ class +{ + return self; +} + +@end + +#else + +#import #import #import +#import + +#define OLD 1 +#import "Object.h" +#import "Protocol.h" +#import "objc-runtime.h" +#import "objc-auto.h" -OBJC_EXPORT id (*_cvtToId)(const char *); -OBJC_EXPORT id (*_poseAs)(); +// hack +extern void _objc_error(id, const char *, va_list); // Error Messages static const char - _errNoMem[] = "failed -- out of memory(%s, %u)", - _errReAllocNil[] = "reallocating nil object", - _errReAllocFreed[] = "reallocating freed object", - _errReAllocTooSmall[] = "(%s, %u) requested size too small", _errShouldHaveImp[] = "should have implemented the '%s' method.", _errShouldNotImp[] = "should NOT have implemented the '%s' method.", _errLeftUndone[] = "method '%s' not implemented", @@ -67,14 +84,14 @@ static const char + poseAs: aFactory { - return (*_poseAs)(self, aFactory); + return class_poseAs(self, aFactory); } + new { id newObject = (*_alloc)((Class)self, 0); - struct objc_class * metaClass = ((struct objc_class *) self)->isa; - if (metaClass->version > 1) + Class metaClass = self->isa; + if (class_getVersion(metaClass) > 1) return [newObject init]; else return newObject; @@ -97,17 +114,17 @@ static const char - (const char *)name { - return ((struct objc_class *)isa)->name; + return class_getName(isa); } + (const char *)name { - return ((struct objc_class *)self)->name; + return class_getName((Class)self); } - (unsigned)hash { - return ((uarith_t)self) >> 2; + return (unsigned)(((uintptr_t)self) >> 2); } - (BOOL)isEqual:anObject @@ -148,31 +165,29 @@ static const char + superclass { - return ((struct objc_class *)self)->super_class; + return class_getSuperclass((Class)self); } - superclass { - return ((struct objc_class *)isa)->super_class; + return class_getSuperclass(isa); } + (int) version { - struct objc_class * class = (struct objc_class *) self; - return class->version; + return class_getVersion((Class)self); } + setVersion: (int) aVersion { - struct objc_class * class = (struct objc_class *) self; - class->version = aVersion; + class_setVersion((Class)self, aVersion); return self; } - (BOOL)isKindOf:aClass { register Class cls; - for (cls = isa; cls; cls = ((struct objc_class *)cls)->super_class) + for (cls = isa; cls; cls = class_getSuperclass(cls)) if (cls == (Class)aClass) return YES; return NO; @@ -186,15 +201,15 @@ static const char - (BOOL)isKindOfClassNamed:(const char *)aClassName { register Class cls; - for (cls = isa; cls; cls = ((struct objc_class *)cls)->super_class) - if (strcmp(aClassName, ((struct objc_class *)cls)->name) == 0) + for (cls = isa; cls; cls = class_getSuperclass(cls)) + if (strcmp(aClassName, class_getName(cls)) == 0) return YES; return NO; } - (BOOL)isMemberOfClassNamed:(const char *)aClassName { - return strcmp(aClassName, ((struct objc_class *)isa)->name) == 0; + return strcmp(aClassName, class_getName(isa)) == 0; } + (BOOL)instancesRespondTo:(SEL)aSelector @@ -227,292 +242,12 @@ static const char return class_lookupMethod(self, aSelector); } -#if defined(__alpha__) -#define MAX_RETSTRUCT_SIZE 256 - -typedef struct _foolGCC { - char c[MAX_RETSTRUCT_SIZE]; -} _variableStruct; - -typedef _variableStruct (*callReturnsStruct)(); - -OBJC_EXPORT long sizeOfReturnedStruct(char **); - -long sizeOfType(char **pp) -{ - char *p = *pp; - long stack_size = 0, n = 0; - switch(*p) { - case 'c': - case 'C': - stack_size += sizeof(char); // Alignment ? - break; - case 's': - case 'S': - stack_size += sizeof(short);// Alignment ? - break; - case 'i': - case 'I': - case '!': - stack_size += sizeof(int); - break; - case 'l': - case 'L': - stack_size += sizeof(long int); - break; - case 'f': - stack_size += sizeof(float); - break; - case 'd': - stack_size += sizeof(double); - break; - case '*': - case ':': - case '@': - case '%': - stack_size += sizeof(char*); - break; - case '{': - stack_size += sizeOfReturnedStruct(&p); - while(*p!='}') p++; - break; - case '[': - p++; - while(isdigit(*p)) - n = 10 * n + (*p++ - '0'); - stack_size += (n * sizeOfType(&p)); - break; - default: - break; - } - *pp = p; - return stack_size; -} - -long -sizeOfReturnedStruct(char **pp) -{ - char *p = *pp; - long stack_size = 0, n = 0; - while(p!=NULL && *++p!='=') ; // skip the struct name - while(p!=NULL && *++p!='}') - stack_size += sizeOfType(&p); - return stack_size + 8; // Add 8 as a 'forfait value' - // to take alignment into account -} - -- perform:(SEL)aSelector -{ - char *p; - long stack_size; - _variableStruct *dummyRetVal; - Method method; - - if (aSelector) { - method = class_getInstanceMethod((Class)self->isa, - aSelector); - if(method==NULL) - method = class_getClassMethod((Class)self->isa, - aSelector); - if(method!=NULL) { - p = &method->method_types[0]; - if(*p=='{') { - // Method returns a structure - stack_size = sizeOfReturnedStruct(&p); - if(stack_sizeisa, - aSelector); - if(method==NULL) - method = class_getClassMethod((Class)self->isa, - aSelector); - if(method!=NULL) { - p = &method->method_types[0]; - if(*p=='{') { - // Method returns a structure - stack_size = sizeOfReturnedStruct(&p); - if(stack_sizeisa, - aSelector); - if(method==NULL) - method = class_getClassMethod((Class)self->isa, - aSelector); - if(method!=NULL) { - p = &method->method_types[0]; - if(*p=='{') { - // Method returns a structure - stack_size = sizeOfReturnedStruct(&p); - if(stack_sizei25){ - // Calculate size of the marg_list from the method's - // signature. This looks for the method in self - // and its superclasses. - size = [self methodArgSize: sel]; - - // If neither self nor its superclasses implement - // the method, forward the message because self - // might know someone who does. This is a - // "chained" forward... - if (! size) return [self forward: sel: args]; - - // Message self with the specified selector and arguments - return objc_msgSendv (self, sel, size, args); - } - - // Look for instance method in self's class and superclasses - method = class_getInstanceMethod((Class)self->isa,sel); - - // Look for class method in self's class and superclass - if(method==NULL) - method = class_getClassMethod((Class)self->isa,sel); - - // If neither self nor its superclasses implement - // the method, forward the message because self - // might know someone who does. This is a - // "chained" forward... - if(method==NULL) - return [self forward: sel: args]; - - // Calculate size of the marg_list from the method's - // signature. - size = method_getSizeOfArguments(method); - - // Ready to send message now if the return type - // is not a structure - p = &method->method_types[0]; - if(*p!='{') - return objc_msgSendv(self, sel, size, args); - - // Method returns a structure - stack_size = sizeOfReturnedStruct(&p); - if(stack_size>=MAX_RETSTRUCT_SIZE) - scratchMemP = (char*)malloc(stack_size); - else - scratchMemP = &scratchMem[0]; - - // Set i25 so objc_msgSendv will know that method returns a structure - ((_m_args_p)args)->i25 = 1; - - // Set first param of method to be called to safe return address - ((_m_args_p)args)->i16 = (unsigned long int) scratchMemP; - objc_msgSendv(self, sel, size, args); - - if(stack_size>=MAX_RETSTRUCT_SIZE) - free(scratchMemP); - - return (id)NULL; - } -#else - performv: (SEL) sel : (marg_list) args { unsigned size; -#if hppa && 0 - void *ret; - - // Save ret0 so methods that return a struct might work. - asm("copy %%r28, %0": "=r"(ret): ); -#endif hppa // Messages to nil object always return nil if (! self) return nil; @@ -706,16 +337,9 @@ typedef struct { // someone who does. This is a "chained" forward... if (! size) return [self forward: sel: args]; -#if hppa && 0 - // Unfortunately, it looks like the compiler puts something else in - // r28 right after this instruction, so this is all for naught. - asm("copy %0, %%r28": : "r"(ret)); -#endif hppa - // Message self with the specified selector and arguments return objc_msgSendv (self, sel, size, args); } -#endif /* Testing protocol conformance */ @@ -726,32 +350,10 @@ typedef struct { + (BOOL) conformsTo: (Protocol *)aProtocolObj { - struct objc_class * class; - - for (class = self; class; class = class->super_class) + Class class; + for (class = self; class; class = class_getSuperclass(class)) { - if (class->isa->version >= 3) - { - struct objc_protocol_list *protocols = class->protocols; - - while (protocols) - { - int i; - - for (i = 0; i < protocols->count; i++) - { - Protocol *p = protocols->list[i]; - - if ([p conformsTo:aProtocolObj]) - return YES; - } - - if (class->isa->version <= 4) - break; - - protocols = protocols->next; - } - } + if (class_conformsToProtocol(class, aProtocolObj)) return YES; } return NO; } @@ -761,7 +363,7 @@ typedef struct { - (struct objc_method_description *) descriptionForMethod:(SEL)aSelector { - struct objc_class * cls; + Class cls; struct objc_method_description *m; /* Look in the protocols first. */ @@ -779,7 +381,7 @@ typedef struct { { Protocol *p = protocols->list[i]; - if (ISMETA (cls)) + if (class_isMetaClass(cls)) m = [p descriptionForClassMethod:aSelector]; else m = [p descriptionForInstanceMethod:aSelector]; @@ -811,13 +413,12 @@ typedef struct { } } } - return 0; } + (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSelector { - struct objc_class * cls; + Class cls; /* Look in the protocols first. */ for (cls = self; cls; cls = cls->super_class) @@ -861,7 +462,6 @@ typedef struct { } } } - return 0; } @@ -900,7 +500,7 @@ typedef struct { - findClass:(const char *)aClassName { - return (*_cvtToId)(aClassName); + return objc_lookUpClass(aClassName); } - shouldNotImplement:(SEL)aSelector @@ -908,139 +508,7 @@ typedef struct { return [self error:_errShouldNotImp, sel_getName(aSelector)]; } -@end - -static id _internal_object_copyFromZone(Object *anObject, unsigned nBytes, void *z) -{ - id obj; - register unsigned siz; - - if (anObject == nil) - return nil; - - obj = (*_zoneAlloc)(anObject->isa, nBytes, z); - siz = ((struct objc_class *)anObject->isa)->instance_size + nBytes; - bcopy((const char*)anObject, (char*)obj, siz); - return obj; -} - -static id _internal_object_copy(Object *anObject, unsigned nBytes) -{ - void *z= malloc_zone_from_ptr(anObject); - return _internal_object_copyFromZone(anObject, - nBytes, - z ? z : malloc_default_zone()); -} - -static id _internal_object_dispose(Object *anObject) -{ - if (anObject==nil) return nil; - object_cxxDestruct((id)anObject); - anObject->isa = _objc_getFreedObjectClass (); - free(anObject); - return nil; -} - -static id _internal_object_reallocFromZone(Object *anObject, unsigned nBytes, void *z) -{ - Object *newObject; - struct objc_class * tmp; - - if (anObject == nil) - __objc_error(nil, _errReAllocNil, 0); - - if (anObject->isa == _objc_getFreedObjectClass ()) - __objc_error(anObject, _errReAllocFreed, 0); - - if (nBytes < ((struct objc_class *)anObject->isa)->instance_size) - __objc_error(anObject, _errReAllocTooSmall, - object_getClassName(anObject), nBytes); - - // Make sure not to modify space that has been declared free - tmp = anObject->isa; - anObject->isa = _objc_getFreedObjectClass (); - newObject = (Object*)malloc_zone_realloc(z, (void*)anObject, (size_t)nBytes); - if (newObject) { - newObject->isa = tmp; - return newObject; - } - else - { - __objc_error(anObject, _errNoMem, - object_getClassName(anObject), nBytes); - return nil; - } -} - -static id _internal_object_realloc(Object *anObject, unsigned nBytes) -{ - void *z= malloc_zone_from_ptr(anObject); - return _internal_object_reallocFromZone(anObject, - nBytes, - z ? z : malloc_default_zone()); -} - -/* Functional Interface to system primitives */ - -id object_copy(Object *anObject, unsigned nBytes) -{ - return (*_copy)(anObject, nBytes); -} - -id object_copyFromZone(Object *anObject, unsigned nBytes, void *z) -{ - return (*_zoneCopy)(anObject, nBytes, z); -} - -id object_dispose(Object *anObject) -{ - return (*_dealloc)(anObject); -} - -id object_realloc(Object *anObject, unsigned nBytes) -{ - return (*_realloc)(anObject, nBytes); -} - -id object_reallocFromZone(Object *anObject, unsigned nBytes, void *z) -{ - return (*_zoneRealloc)(anObject, nBytes, z); -} - -Ivar object_setInstanceVariable(id obj, const char *name, void *value) -{ - Ivar ivar = 0; - - if (obj && name) { - if ((ivar = class_getInstanceVariable(((Object*)obj)->isa, name))) { - objc_assign_ivar((id)value, obj, ivar->ivar_offset); - } - } - return ivar; -} - -Ivar object_getInstanceVariable(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); - *value = *ivaridx; - } else - *value = 0; - } - return ivar; -} +@end -id (*_copy)(id, unsigned) = _internal_object_copy; -id (*_realloc)(id, unsigned) = _internal_object_realloc; -id (*_dealloc)(id) = _internal_object_dispose; -id (*_cvtToId)(const char *) = objc_lookUpClass; -SEL (*_cvtToSel)(const char *) = sel_getUid; -void (*_error)() = (void(*)())_objc_error; -id (*_zoneCopy)(id, unsigned, void *) = _internal_object_copyFromZone; -id (*_zoneRealloc)(id, unsigned, void *) = _internal_object_reallocFromZone; +#endif diff --git a/runtime/OldClasses.subproj/List.h b/runtime/OldClasses.subproj/List.h index 489188b..71f5706 100644 --- a/runtime/OldClasses.subproj/List.h +++ b/runtime/OldClasses.subproj/List.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2002, 2005-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -31,68 +29,76 @@ */ -#warning The API in this header is obsoleted by NSArray. - #ifndef _OBJC_LIST_H_ #define _OBJC_LIST_H_ +#if defined(__LP64__) + +#warning class List unavailable in 64-bit Objective-C + +#else + +#warning The API in this header is obsoleted by NSArray. + #import +#import +DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER @interface List : Object { @public - id *dataPtr; /* data of the List object */ - unsigned numElements; /* Actual number of elements */ - unsigned maxElements; /* Total allocated elements */ + id *dataPtr DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ; /* data of the List object */ + unsigned numElements DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ; /* Actual number of elements */ + unsigned maxElements DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ; /* Total allocated elements */ } /* Creating, freeing */ -- free; -- freeObjects; -- copyFromZone:(void *)z; +- free DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- freeObjects DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- copyFromZone:(void *)z DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Initializing */ -- init; -- initCount:(unsigned)numSlots; +- init DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- initCount:(unsigned)numSlots DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Comparing two lists */ -- (BOOL)isEqual: anObject; +- (BOOL)isEqual: anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Managing the storage capacity */ -- (unsigned)capacity; -- setAvailableCapacity:(unsigned)numSlots; +- (unsigned)capacity DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- setAvailableCapacity:(unsigned)numSlots DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Manipulating objects by index */ -- (unsigned)count; -- objectAt:(unsigned)index; -- lastObject; -- addObject:anObject; -- insertObject:anObject at:(unsigned)index; -- removeObjectAt:(unsigned)index; -- removeLastObject; -- replaceObjectAt:(unsigned)index with:newObject; -- appendList: (List *)otherList; +- (unsigned)count DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- objectAt:(unsigned)index DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- lastObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- addObject:anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- insertObject:anObject at:(unsigned)index DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- removeObjectAt:(unsigned)index DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- removeLastObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- replaceObjectAt:(unsigned)index with:newObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- appendList: (List *)otherList DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Manipulating objects by id */ -- (unsigned)indexOf:anObject; -- addObjectIfAbsent:anObject; -- removeObject:anObject; -- replaceObject:anObject with:newObject; +- (unsigned)indexOf:anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- addObjectIfAbsent:anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- removeObject:anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- replaceObject:anObject with:newObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Emptying the list */ -- empty; +- empty DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* Sending messages to elements of the list */ -- makeObjectsPerform:(SEL)aSelector; -- makeObjectsPerform:(SEL)aSelector with:anObject; +- makeObjectsPerform:(SEL)aSelector DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- makeObjectsPerform:(SEL)aSelector with:anObject DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; /* * The following new... methods are now obsolete. They remain in this @@ -100,17 +106,19 @@ * and the init... methods defined in this class instead. */ -+ new; -+ newCount:(unsigned)numSlots; ++ new DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; ++ newCount:(unsigned)numSlots DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; @end typedef struct { @defs(List) -} NXListId; +} NXListId DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; #define NX_ADDRESS(x) (((NXListId *)(x))->dataPtr) #define NX_NOT_IN_LIST 0xffffffff +#endif + #endif /* _OBJC_LIST_H_ */ diff --git a/runtime/OldClasses.subproj/List.m b/runtime/OldClasses.subproj/List.m index 79ac889..4ed5a01 100644 --- a/runtime/OldClasses.subproj/List.m +++ b/runtime/OldClasses.subproj/List.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2001, 2005-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -29,10 +27,13 @@ Responsibility: Bertrand Serlet */ +#ifndef __LP64__ #import #import #import + +#define OLD 1 #import #define DATASIZE(count) ((count) * sizeof(id)) @@ -290,3 +291,5 @@ } @end + +#endif diff --git a/runtime/Protocol.h b/runtime/Protocol.h index b5e4943..5b1c56e 100644 --- a/runtime/Protocol.h +++ b/runtime/Protocol.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2006-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -32,35 +30,29 @@ #import -struct objc_method_description { - SEL name; - char *types; -}; -struct objc_method_description_list { - int count; - struct objc_method_description list[1]; -}; +/* Warning: All of these methods will disappear in 64-bit. */ @interface Protocol : Object { @private - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; + char *protocol_name OBJC2_UNAVAILABLE; + struct objc_protocol_list *protocol_list OBJC2_UNAVAILABLE; + struct objc_method_description_list *instance_methods OBJC2_UNAVAILABLE; + struct objc_method_description_list *class_methods OBJC2_UNAVAILABLE; } /* Obtaining attributes intrinsic to the protocol */ -- (const char *)name; +- (const char *)name OBJC2_UNAVAILABLE; /* Testing protocol conformance */ -- (BOOL) conformsTo: (Protocol *)aProtocolObject; +- (BOOL) conformsTo: (Protocol *)aProtocolObject OBJC2_UNAVAILABLE; /* Looking up information specific to a protocol */ -- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel; -- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel; +- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; +- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER; @end diff --git a/runtime/Protocol.m b/runtime/Protocol.m index d0c3cd9..4b6ab62 100644 --- a/runtime/Protocol.m +++ b/runtime/Protocol.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2001, 2005-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,114 +26,81 @@ */ -#include "objc-private.h" -#import - -#include #include - +#include #include #include -/* some forward declarations */ - -static struct objc_method_description * -lookup_method(struct objc_method_description_list *mlist, SEL aSel); +#define OLD 1 +#import "objc-private.h" +#import "Protocol.h" -static struct objc_method_description * -lookup_class_method(struct objc_protocol_list *plist, SEL aSel); -static struct objc_method_description * -lookup_instance_method(struct objc_protocol_list *plist, SEL aSel); +/* some forward declarations */ -@implementation Protocol +#if !__OBJC2__ +__private_extern__ struct objc_method_description * lookup_protocol_method(Protocol *proto, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod); +#else +__private_extern__ Method _protocol_getMethod(Protocol *p, SEL sel, BOOL isRequiredMethod, BOOL isInstanceMethod); +#endif -+ _fixup: (OBJC_PROTOCOL_PTR)protos numElements: (int) nentries -{ - int i; - for (i = 0; i < nentries; i++) - { - /* isa has been overloaded by the compiler to indicate version info */ - protos[i] OBJC_PROTOCOL_DEREF isa = self; // install the class descriptor. - } +@implementation Protocol - return self; -} +#if __OBJC2__ +// fixme hack - make Protocol a non-lazy class ++ (void) load { } +#endif -+ load -{ - OBJC_PROTOCOL_PTR p; - int size; - headerType **hp; - headerType **hdrs; - hdrs = _getObjcHeaders(); - - for (hp = hdrs; *hp; hp++) - { - p = (OBJC_PROTOCOL_PTR)_getObjcProtocols((headerType*)*hp, &size); - if (p && size) { [self _fixup:p numElements: size]; } - } - free (hdrs); - return self; -} +typedef struct { + uintptr_t count; + Protocol *list[0]; +} protocol_list_t; - (BOOL) conformsTo: (Protocol *)aProtocolObj { - if (!aProtocolObj) - return NO; - - if (strcmp(aProtocolObj->protocol_name, protocol_name) == 0) - return YES; - else if (protocol_list) - { - int i; - - for (i = 0; i < protocol_list->count; i++) - { - Protocol *p = protocol_list->list[i]; - - if (strcmp(aProtocolObj->protocol_name, p->protocol_name) == 0) - return YES; - - if ([p conformsTo:aProtocolObj]) - return YES; - } - return NO; - } - else - return NO; + return protocol_conformsToProtocol(self, aProtocolObj); } - (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel { - struct objc_method_description *m = lookup_method(instance_methods, aSel); - - if (!m && protocol_list) - m = lookup_instance_method(protocol_list, aSel); - - return m; +#if !__OBJC2__ + return lookup_protocol_method(self,aSel, YES/*required*/, YES/*instance*/); +#else + return method_getDescription(_protocol_getMethod(self, aSel, YES, YES)); +#endif } - (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel { - struct objc_method_description *m = lookup_method(class_methods, aSel); - - if (!m && protocol_list) - m = lookup_class_method(protocol_list, aSel); - - return m; +#if !__OBJC2__ + return lookup_protocol_method(self, aSel, YES/*required*/, NO/*instance*/); +#else + return method_getDescription(_protocol_getMethod(self, aSel, YES, NO)); +#endif } - (const char *)name { - return protocol_name; + return protocol_getName(self); } - (BOOL)isEqual:other { +#if __OBJC2__ + // check isKindOf: + Class cls; + Class protoClass = objc_getClass("Protocol"); + for (cls = other->isa; cls; cls = class_getSuperclass(cls)) { + if (cls == protoClass) break; + } + if (!cls) return NO; + // check equality + return protocol_isEqual(self, other); +#else return [other isKindOf:[Protocol class]] && [self conformsTo: other] && [other conformsTo: self]; +#endif } - (unsigned int)hash @@ -143,62 +108,4 @@ lookup_instance_method(struct objc_protocol_list *plist, SEL aSel); return 23; } -static -struct objc_method_description * -lookup_method(struct objc_method_description_list *mlist, SEL aSel) -{ - if (mlist) - { - int i; - for (i = 0; i < mlist->count; i++) - if (mlist->list[i].name == aSel) - return mlist->list+i; - } - return 0; -} - -static -struct objc_method_description * -lookup_instance_method(struct objc_protocol_list *plist, SEL aSel) -{ - int i; - struct objc_method_description *m = 0; - - for (i = 0; i < plist->count; i++) - { - if (plist->list[i]->instance_methods) - m = lookup_method(plist->list[i]->instance_methods, aSel); - - /* depth first search */ - if (!m && plist->list[i]->protocol_list) - m = lookup_instance_method(plist->list[i]->protocol_list, aSel); - - if (m) - return m; - } - return 0; -} - -static -struct objc_method_description * -lookup_class_method(struct objc_protocol_list *plist, SEL aSel) -{ - int i; - struct objc_method_description *m = 0; - - for (i = 0; i < plist->count; i++) - { - if (plist->list[i]->class_methods) - m = lookup_method(plist->list[i]->class_methods, aSel); - - /* depth first search */ - if (!m && plist->list[i]->protocol_list) - m = lookup_class_method(plist->list[i]->protocol_list, aSel); - - if (m) - return m; - } - return 0; -} - @end diff --git a/runtime/error.h b/runtime/error.h index 6c979c3..1b7dbdf 100644 --- a/runtime/error.h +++ b/runtime/error.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -32,6 +30,13 @@ All rights reserved. */ +#if defined(__LP64__) + +// This header contains definitions for Libstreams, which will never be 64-bit. +#warning objc/error.h is unavailable in 64-bit. + +#endif + #warning The API in this header is obsoleted by NSException et al. #ifndef _OBJC_ERROR_H_ diff --git a/runtime/hashtable2.h b/runtime/hashtable2.h index 25d6e79..fda0728 100644 --- a/runtime/hashtable2.h +++ b/runtime/hashtable2.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,12 +26,15 @@ Copyright 1989-1996 NeXT Software, Inc. */ -#warning The API in this header is obsoleted by NSHashtable.h - #ifndef _OBJC_LITTLE_HASHTABLE_H_ #define _OBJC_LITTLE_HASHTABLE_H_ +#ifndef _OBJC_PRIVATE_H_ +#warning The API in this header is obsoleted by NSHashtable.h +#endif + #import +#include /************************************************************************* * Hash tables of arbitrary data @@ -44,7 +45,7 @@ The objective C class HashTable is preferred when dealing with (key, values) ass As well-behaved scalable data structures, hash tables double in size when they start becoming full, thus guaranteeing both average constant time access and linear size. */ typedef struct { - uarith_t (*hash)(const void *info, const void *data); + uintptr_t (*hash)(const void *info, const void *data); int (*isEqual)(const void *info, const void *data1, const void *data2); void (*free)(const void *info, void *data); int style; /* reserved for future expansion; currently 0 */ @@ -144,9 +145,9 @@ OBJC_EXPORT int NXNextHashState(NXHashTable *table, NXHashState *state, void **d * and common prototypes *************************************************************************/ -OBJC_EXPORT uarith_t NXPtrHash(const void *info, const void *data); +OBJC_EXPORT uintptr_t NXPtrHash(const void *info, const void *data); /* scrambles the address bits; info unused */ -OBJC_EXPORT uarith_t NXStrHash(const void *info, const void *data); +OBJC_EXPORT uintptr_t NXStrHash(const void *info, const void *data); /* string hashing; info unused */ OBJC_EXPORT int NXPtrIsEqual(const void *info, const void *data1, const void *data2); /* pointer comparison; info unused */ diff --git a/runtime/hashtable2.m b/runtime/hashtable2.m index 451455e..d05b28e 100644 --- a/runtime/hashtable2.m +++ b/runtime/hashtable2.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,16 +26,12 @@ Created by Bertrand Serlet, Feb 89 */ -#import -#import "objc-private.h" -/* Is this in the right spot ? */ -#if defined(__osf__) - #include -#endif +#include +#include - #import - #import +#import "objc-private.h" +#import "hashtable2.h" /* In order to improve efficiency, buckets contain a pointer to an array or directly the data when the array size is 1 */ typedef union { @@ -58,7 +52,7 @@ typedef struct { * *************************************************************************/ -static unsigned log2 (unsigned x) { return (x<2) ? 0 : log2 (x>>1)+1; }; +static unsigned log2u (unsigned x) { return (x<2) ? 0 : log2u (x>>1)+1; }; static unsigned exp2m1 (unsigned x) { return (1 << x) - 1; }; @@ -87,10 +81,10 @@ static int isEqualPrototype (const void *info, const void *data1, const void *da return (proto1->hash == proto2->hash) && (proto1->isEqual == proto2->isEqual) && (proto1->free == proto2->free) && (proto1->style == proto2->style); }; -static uarith_t hashPrototype (const void *info, const void *data) { +static uintptr_t hashPrototype (const void *info, const void *data) { NXHashTablePrototype *proto = (NXHashTablePrototype *) data; - return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uarith_t) proto->style; + return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uintptr_t) proto->style; }; void NXNoEffectFree (const void *info, void *data) {}; @@ -138,7 +132,7 @@ NXHashTable *NXCreateHashTableFromZone (NXHashTablePrototype prototype, unsigned if (! prototype.isEqual) prototype.isEqual = NXPtrIsEqual; if (! prototype.free) prototype.free = NXNoEffectFree; if (prototype.style) { - _objc_syslog ("*** NXCreateHashTable: invalid style\n"); + _objc_inform ("*** NXCreateHashTable: invalid style\n"); return NULL; }; proto = NXHashGet (prototypes, &prototype); @@ -150,12 +144,12 @@ NXHashTable *NXCreateHashTableFromZone (NXHashTablePrototype prototype, unsigned (void) NXHashInsert (prototypes, proto); proto = NXHashGet (prototypes, &prototype); if (! proto) { - _objc_syslog ("*** NXCreateHashTable: bug\n"); + _objc_inform ("*** NXCreateHashTable: bug\n"); return NULL; }; }; table->prototype = proto; table->count = 0; table->info = info; - table->nbBuckets = exp2m1 (log2 (capacity)+1); + table->nbBuckets = exp2m1 (log2u (capacity)+1); table->buckets = ALLOCBUCKETS(z, table->nbBuckets); return table; } @@ -206,19 +200,6 @@ void NXResetHashTable (NXHashTable *table) { table->count = 0; } -BOOL NXIsEqualHashTable (NXHashTable *table1, NXHashTable *table2) { - if (table1 == table2) return YES; - if (NXCountHashTable (table1) != NXCountHashTable (table2)) return NO; - else { - void *data; - NXHashState state = NXInitHashState (table1); - while (NXNextHashState (table1, &state, &data)) { - if (! NXHashMember (table2, data)) return NO; - } - return YES; - } -} - BOOL NXCompareHashTables (NXHashTable *table1, NXHashTable *table2) { if (table1 == table2) return YES; if (NXCountHashTable (table1) != NXCountHashTable (table2)) return NO; @@ -311,7 +292,7 @@ __private_extern__ void _NXHashRehashToCapacity (NXHashTable *table, unsigned ne (void) NXHashInsert (table, aux); freeBuckets (old, NO); if (old->count != table->count) - _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"); + _objc_inform("*** 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); } @@ -482,24 +463,24 @@ int NXNextHashState (NXHashTable *table, NXHashState *state, void **data) { * *************************************************************************/ -uarith_t NXPtrHash (const void *info, const void *data) { - return (((uarith_t) data) >> 16) ^ ((uarith_t) data); +uintptr_t NXPtrHash (const void *info, const void *data) { + return (((uintptr_t) data) >> 16) ^ ((uintptr_t) data); }; -uarith_t NXStrHash (const void *info, const void *data) { - register uarith_t hash = 0; +uintptr_t NXStrHash (const void *info, const void *data) { + register uintptr_t hash = 0; register unsigned char *s = (unsigned char *) data; /* unsigned to avoid a sign-extend */ /* unroll the loop */ if (s) for (; ; ) { if (*s == '\0') break; - hash ^= (uarith_t) *s++; + hash ^= (uintptr_t) *s++; if (*s == '\0') break; - hash ^= (uarith_t) *s++ << 8; + hash ^= (uintptr_t) *s++ << 8; if (*s == '\0') break; - hash ^= (uarith_t) *s++ << 16; + hash ^= (uintptr_t) *s++ << 16; if (*s == '\0') break; - hash ^= (uarith_t) *s++ << 24; + hash ^= (uintptr_t) *s++ << 24; } return hash; }; @@ -517,7 +498,7 @@ void NXReallyFree (const void *info, void *data) { }; /* All the following functions are really private, made non-static only for the benefit of shlibs */ -static uarith_t hashPtrStructKey (const void *info, const void *data) { +static uintptr_t hashPtrStructKey (const void *info, const void *data) { return NXPtrHash(info, *((void **) data)); }; @@ -525,7 +506,7 @@ static int isEqualPtrStructKey (const void *info, const void *data1, const void return NXPtrIsEqual (info, *((void **) data1), *((void **) data2)); }; -static uarith_t hashStrStructKey (const void *info, const void *data) { +static uintptr_t hashStrStructKey (const void *info, const void *data) { return NXStrHash(info, *((char **) data)); }; @@ -564,11 +545,11 @@ static NXHashTable *uniqueStrings = NULL; static int accessUniqueString = 0; static char *z = NULL; -static vm_size_t zSize = 0; +static size_t zSize = 0; static mutex_t lock = (mutex_t)0; static const char *CopyIntoReadOnly (const char *str) { - unsigned int len = strlen (str) + 1; + size_t len = strlen (str) + 1; char *new; if (len > CHUNK_SIZE/2) { /* dont let big strings waste space */ @@ -608,7 +589,7 @@ NXAtom NXUniqueString (const char *buffer) { if (previous) return previous; previous = CopyIntoReadOnly (buffer); if (NXHashInsert (uniqueStrings, previous)) { - _objc_syslog ("*** NXUniqueString: invariant broken\n"); + _objc_inform ("*** NXUniqueString: invariant broken\n"); return NULL; }; return previous; diff --git a/runtime/lookupa.h b/runtime/lookupa.h new file mode 100644 index 0000000..0b27db6 --- /dev/null +++ b/runtime/lookupa.h @@ -0,0 +1,24 @@ +/* +------------------------------------------------------------------------------ +By Bob Jenkins, September 1996. +lookupa.h, a hash function for table lookup, same function as lookup.c. +Use this code in any way you wish. Public Domain. It has no warranty. +Source is http://burtleburtle.net/bob/c/lookupa.h +------------------------------------------------------------------------------ +*/ + +#ifndef STANDARD +#include "standard.h" +#endif + +#ifndef LOOKUPA +#define LOOKUPA + +#define CHECKSTATE 8 +#define hashsize(n) ((ub4)1<<(n)) +#define hashmask(n) (hashsize(n)-1) + +ub4 lookup(/*_ ub1 *k, ub4 length, ub4 level _*/); +void checksum(/*_ ub1 *k, ub4 length, ub4 *state _*/); + +#endif /* LOOKUPA */ diff --git a/runtime/lookupa.m b/runtime/lookupa.m new file mode 100644 index 0000000..ae86708 --- /dev/null +++ b/runtime/lookupa.m @@ -0,0 +1,244 @@ +/* +-------------------------------------------------------------------- +lookupa.c, by Bob Jenkins, December 1996. Same as lookup2.c +Use this code however you wish. Public Domain. No warranty. +Source is http://burtleburtle.net/bob/c/lookupa.c +-------------------------------------------------------------------- +*/ +#ifndef STANDARD +#include "standard.h" +#endif +#ifndef LOOKUPA +#include "lookupa.h" +#endif + +/* +-------------------------------------------------------------------- +mix -- mix 3 32-bit values reversibly. +For every delta with one or two bit set, and the deltas of all three + high bits or all three low bits, whether the original value of a,b,c + is almost all zero or is uniformly distributed, +* If mix() is run forward or backward, at least 32 bits in a,b,c + have at least 1/4 probability of changing. +* If mix() is run forward, every bit of c will change between 1/3 and + 2/3 of the time. (Well, 22/100 and 78/100 for some 2-bit deltas.) +mix() was built out of 36 single-cycle latency instructions in a + structure that could supported 2x parallelism, like so: + a -= b; + a -= c; x = (c>>13); + b -= c; a ^= x; + b -= a; x = (a<<8); + c -= a; b ^= x; + c -= b; x = (b>>13); + ... + Unfortunately, superscalar Pentiums and Sparcs can't take advantage + of that parallelism. They've also turned some of those single-cycle + latency instructions into multi-cycle latency instructions. Still, + this is the fastest good hash I could find. There were about 2^^68 + to choose from. I only looked at a billion or so. +-------------------------------------------------------------------- +*/ +#define mix(a,b,c) \ +{ \ + a -= b; a -= c; a ^= (c>>13); \ + b -= c; b -= a; b ^= (a<<8); \ + c -= a; c -= b; c ^= (b>>13); \ + a -= b; a -= c; a ^= (c>>12); \ + b -= c; b -= a; b ^= (a<<16); \ + c -= a; c -= b; c ^= (b>>5); \ + a -= b; a -= c; a ^= (c>>3); \ + b -= c; b -= a; b ^= (a<<10); \ + c -= a; c -= b; c ^= (b>>15); \ +} + +/* +-------------------------------------------------------------------- +lookup() -- hash a variable-length key into a 32-bit value + k : the key (the unaligned variable-length array of bytes) + len : the length of the key, counting by bytes + level : can be any 4-byte value +Returns a 32-bit value. Every bit of the key affects every bit of +the return value. Every 1-bit and 2-bit delta achieves avalanche. +About 6len+35 instructions. + +The best hash table sizes are powers of 2. There is no need to do +mod a prime (mod is sooo slow!). If you need less than 32 bits, +use a bitmask. For example, if you need only 10 bits, do + h = (h & hashmask(10)); +In which case, the hash table should have hashsize(10) elements. + +If you are hashing n strings (ub1 **)k, do it like this: + for (i=0, h=0; i= 12) + { + a += (k[0] +((ub4)k[1]<<8) +((ub4)k[2]<<16) +((ub4)k[3]<<24)); + b += (k[4] +((ub4)k[5]<<8) +((ub4)k[6]<<16) +((ub4)k[7]<<24)); + c += (k[8] +((ub4)k[9]<<8) +((ub4)k[10]<<16)+((ub4)k[11]<<24)); + mix(a,b,c); + k += 12; len -= 12; + } + + /*------------------------------------- handle the last 11 bytes */ + c += length; + switch(len) /* all the case statements fall through */ + { + case 11: c+=((ub4)k[10]<<24); + case 10: c+=((ub4)k[9]<<16); + case 9 : c+=((ub4)k[8]<<8); + /* the first byte of c is reserved for the length */ + case 8 : b+=((ub4)k[7]<<24); + case 7 : b+=((ub4)k[6]<<16); + case 6 : b+=((ub4)k[5]<<8); + case 5 : b+=k[4]; + case 4 : a+=((ub4)k[3]<<24); + case 3 : a+=((ub4)k[2]<<16); + case 2 : a+=((ub4)k[1]<<8); + case 1 : a+=k[0]; + /* case 0: nothing left to add */ + } + mix(a,b,c); + /*-------------------------------------------- report the result */ + return c; +} + + +/* +-------------------------------------------------------------------- +mixc -- mixc 8 4-bit values as quickly and thoroughly as possible. +Repeating mix() three times achieves avalanche. +Repeating mix() four times eliminates all funnels and all + characteristics stronger than 2^{-11}. +-------------------------------------------------------------------- +*/ +#define mixc(a,b,c,d,e,f,g,h) \ +{ \ + a^=b<<11; d+=a; b+=c; \ + b^=c>>2; e+=b; c+=d; \ + c^=d<<8; f+=c; d+=e; \ + d^=e>>16; g+=d; e+=f; \ + e^=f<<10; h+=e; f+=g; \ + f^=g>>4; a+=f; g+=h; \ + g^=h<<8; b+=g; h+=a; \ + h^=a>>9; c+=h; a+=b; \ +} + +/* +-------------------------------------------------------------------- +checksum() -- hash a variable-length key into a 256-bit value + k : the key (the unaligned variable-length array of bytes) + len : the length of the key, counting by bytes + state : an array of CHECKSTATE 4-byte values (256 bits) +The state is the checksum. Every bit of the key affects every bit of +the state. There are no funnels. About 112+6.875len instructions. + +If you are hashing n strings (ub1 **)k, do it like this: + for (i=0; i<8; ++i) state[i] = 0x9e3779b9; + for (i=0, h=0; i= 32) + { + a += (k[0] +(k[1]<<8) +(k[2]<<16) +(k[3]<<24)); + b += (k[4] +(k[5]<<8) +(k[6]<<16) +(k[7]<<24)); + c += (k[8] +(k[9]<<8) +(k[10]<<16)+(k[11]<<24)); + d += (k[12]+(k[13]<<8)+(k[14]<<16)+(k[15]<<24)); + e += (k[16]+(k[17]<<8)+(k[18]<<16)+(k[19]<<24)); + f += (k[20]+(k[21]<<8)+(k[22]<<16)+(k[23]<<24)); + g += (k[24]+(k[25]<<8)+(k[26]<<16)+(k[27]<<24)); + h += (k[28]+(k[29]<<8)+(k[30]<<16)+(k[31]<<24)); + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + k += 32; len -= 32; + } + + /*------------------------------------- handle the last 31 bytes */ + h += length; + switch(len) + { + case 31: h+=(k[30]<<24); + case 30: h+=(k[29]<<16); + case 29: h+=(k[28]<<8); + case 28: g+=(k[27]<<24); + case 27: g+=(k[26]<<16); + case 26: g+=(k[25]<<8); + case 25: g+=k[24]; + case 24: f+=(k[23]<<24); + case 23: f+=(k[22]<<16); + case 22: f+=(k[21]<<8); + case 21: f+=k[20]; + case 20: e+=(k[19]<<24); + case 19: e+=(k[18]<<16); + case 18: e+=(k[17]<<8); + case 17: e+=k[16]; + case 16: d+=(k[15]<<24); + case 15: d+=(k[14]<<16); + case 14: d+=(k[13]<<8); + case 13: d+=k[12]; + case 12: c+=(k[11]<<24); + case 11: c+=(k[10]<<16); + case 10: c+=(k[9]<<8); + case 9 : c+=k[8]; + case 8 : b+=(k[7]<<24); + case 7 : b+=(k[6]<<16); + case 6 : b+=(k[5]<<8); + case 5 : b+=k[4]; + case 4 : a+=(k[3]<<24); + case 3 : a+=(k[2]<<16); + case 2 : a+=(k[1]<<8); + case 1 : a+=k[0]; + } + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + mixc(a,b,c,d,e,f,g,h); + + /*-------------------------------------------- report the result */ + state[0]=a; state[1]=b; state[2]=c; state[3]=d; + state[4]=e; state[5]=f; state[6]=g; state[7]=h; +} diff --git a/runtime/maptable.h b/runtime/maptable.h index 4bfdf57..b83cd94 100644 --- a/runtime/maptable.h +++ b/runtime/maptable.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2006-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,11 +26,14 @@ Copyright 1990-1996 NeXT Software, Inc. */ -#warning the API in this header is obsolete - #ifndef _OBJC_MAPTABLE_H_ #define _OBJC_MAPTABLE_H_ + +#ifndef _OBJC_PRIVATE_H_ +#warning the API in this header is obsolete +#endif + #import /*************** Definitions ***************/ @@ -124,7 +125,7 @@ OBJC_EXPORT const NXMapTablePrototype NXStrValueMapPrototype; /* hashing is string hashing; isEqual is strcmp; free is no-op. */ -OBJC_EXPORT const NXMapTablePrototype NXObjectMapPrototype; +OBJC_EXPORT const NXMapTablePrototype NXObjectMapPrototype OBJC2_UNAVAILABLE; /* for objects; uses methods: hash, isEqual:, free, all for key. */ #endif /* _OBJC_MAPTABLE_H_ */ diff --git a/runtime/maptable.m b/runtime/maptable.m index 1cdaa72..4437df5 100644 --- a/runtime/maptable.m +++ b/runtime/maptable.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2005-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,14 +26,14 @@ */ +#include +#include +#include + #import "objc-private.h" #import "maptable.h" - -#import -#import -#import -#import -#import +#import "Object.h" +#import "hashtable2.h" /****** Macros and utilities ****************************/ @@ -51,7 +49,7 @@ typedef struct _MapPair { const void *value; } MapPair; -static unsigned log2(unsigned x) { return (x<2) ? 0 : log2(x>>1)+1; }; +static unsigned log2u(unsigned x) { return (x<2) ? 0 : log2u(x>>1)+1; }; static INLINE unsigned exp2m1(unsigned x) { return (1 << x) - 1; }; @@ -86,10 +84,10 @@ static int isEqualPrototype (const void *info, const void *data1, const void *da return (proto1->hash == proto2->hash) && (proto1->isEqual == proto2->isEqual) && (proto1->free == proto2->free) && (proto1->style == proto2->style); }; -static uarith_t hashPrototype (const void *info, const void *data) { +static uintptr_t hashPrototype (const void *info, const void *data) { NXHashTablePrototype *proto = (NXHashTablePrototype *) data; - return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uarith_t) proto->style; + return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uintptr_t) proto->style; }; static NXHashTablePrototype protoPrototype = { @@ -106,7 +104,7 @@ NXMapTable *NXCreateMapTableFromZone(NXMapTablePrototype prototype, unsigned cap NXMapTablePrototype *proto; if (! prototypes) prototypes = NXCreateHashTable(protoPrototype, 0, NULL); if (! prototype.hash || ! prototype.isEqual || ! prototype.free || prototype.style) { - _objc_syslog("*** NXCreateMapTable: invalid creation parameters\n"); + _objc_inform("*** NXCreateMapTable: invalid creation parameters\n"); return NULL; } proto = NXHashGet(prototypes, &prototype); @@ -116,7 +114,7 @@ NXMapTable *NXCreateMapTableFromZone(NXMapTablePrototype prototype, unsigned cap (void)NXHashInsert(prototypes, proto); } table->prototype = proto; table->count = 0; - table->nbBuckets = exp2m1(log2(capacity)+1); + table->nbBuckets = exp2m1(log2u(capacity)+1); table->buckets = allocBuckets(z, table->nbBuckets); return table; } @@ -219,7 +217,7 @@ static void _NXMapRehash(NXMapTable *table) { pair++; } if (oldCount != table->count) - _objc_syslog("*** maptable: 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"); + _objc_inform("*** maptable: 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(pairs); } @@ -232,7 +230,7 @@ void *NXMapInsert(NXMapTable *table, const void *key, const void *value) { unsigned index = bucketOf(table, key); MapPair *pair = pairs + index; if (key == NX_MAPNOTAKEY) { - _objc_syslog("*** NXMapInsert: invalid key: -1\n"); + _objc_inform("*** NXMapInsert: invalid key: -1\n"); return NULL; } mapInsert ++; @@ -282,7 +280,7 @@ void *NXMapInsert(NXMapTable *table, const void *key, const void *value) { } } /* no room: can't happen! */ - _objc_syslog("**** NXMapInsert: bug\n"); + _objc_inform("**** NXMapInsert: bug\n"); return NULL; } } @@ -310,7 +308,7 @@ void *NXMapRemove(NXMapTable *table, const void *key) { } } if (! found) return NULL; - if (found != 1) _objc_syslog("**** NXMapRemove: incorrect table\n"); + if (found != 1) _objc_inform("**** NXMapRemove: incorrect table\n"); /* remove then reinsert */ { MapPair buffer[16]; @@ -325,7 +323,7 @@ void *NXMapRemove(NXMapTable *table, const void *key) { index2 = nextIndex(table, index2); } table->count -= chain; - if (auxnb != chain-1) _objc_syslog("**** NXMapRemove: bug\n"); + if (auxnb != chain-1) _objc_inform("**** NXMapRemove: bug\n"); while (auxnb--) NXMapInsert(table, aux[auxnb].key, aux[auxnb].value); if (chain > 16) free(aux); } @@ -350,10 +348,53 @@ int NXNextMapState(NXMapTable *table, NXMapState *state, const void **key, const return NO; } + +/*********************************************************************** +* NXMapKeyCopyingInsert +* Like NXMapInsert, but strdups the key if necessary. +* Used to prevent stale pointers when bundles are unloaded. +**********************************************************************/ +__private_extern__ 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. +**********************************************************************/ +__private_extern__ 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; + } +} + + /**** Conveniences *************************************/ static unsigned _mapPtrHash(NXMapTable *table, const void *key) { - return (((uarith_t) key) >> ARITH_SHIFT) ^ ((uarith_t) key); + return (unsigned)((((uintptr_t) key) >> (sizeof(uintptr_t)/2*8)) ^ ((uintptr_t) key)); } static unsigned _mapStrHash(NXMapTable *table, const void *key) { @@ -374,10 +415,6 @@ static unsigned _mapStrHash(NXMapTable *table, const void *key) { return hash; } -static unsigned _mapObjectHash(NXMapTable *table, const void *key) { - return [(id)key hash]; -} - static int _mapPtrIsEqual(NXMapTable *table, const void *key1, const void *key2) { return key1 == key2; } @@ -390,16 +427,8 @@ static int _mapStrIsEqual(NXMapTable *table, const void *key1, const void *key2) return (strcmp((char *) key1, (char *) key2)) ? NO : YES; } -static int _mapObjectIsEqual(NXMapTable *table, const void *key1, const void *key2) { - return [(id)key1 isEqual:(id)key2]; -} - static void _mapNoFree(NXMapTable *table, void *key, void *value) {} -static void _mapObjectFree(NXMapTable *table, void *key, void *value) { - [(id)key free]; -} - const NXMapTablePrototype NXPtrValueMapPrototype = { _mapPtrHash, _mapPtrIsEqual, _mapNoFree, 0 }; @@ -408,7 +437,24 @@ const NXMapTablePrototype NXStrValueMapPrototype = { _mapStrHash, _mapStrIsEqual, _mapNoFree, 0 }; + +#if !__LP64__ + +/* This only works with class Object, which is unavailable in 64-bit. */ +static unsigned _mapObjectHash(NXMapTable *table, const void *key) { + return [(id)key hash]; +} + +static int _mapObjectIsEqual(NXMapTable *table, const void *key1, const void *key2) { + return [(id)key1 isEqual:(id)key2]; +} + +static void _mapObjectFree(NXMapTable *table, void *key, void *value) { + [(id)key free]; +} + const NXMapTablePrototype NXObjectMapPrototype = { _mapObjectHash, _mapObjectIsEqual, _mapObjectFree, 0 }; +#endif diff --git a/runtime/message.h b/runtime/message.h new file mode 100644 index 0000000..b18ad0f --- /dev/null +++ b/runtime/message.h @@ -0,0 +1,173 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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 +#import + + +struct objc_super { + id receiver; +#if !defined(__cplusplus) && !__OBJC2__ + Class class; /* For compatibility with old objc-runtime.h header */ +#else + Class super_class; +#endif + /* super_class is the first class to search */ +}; + + +/* Basic Messaging Primitives + * + * On some architectures, use objc_msgSend_stret for some struct return types. + * On some architectures, use objc_msgSend_fpret for some float return types. + * + * These functions must be cast to an appropriate function pointer type + * before being called. + */ +OBJC_EXPORT id objc_msgSend(id self, SEL op, ...); +OBJC_EXPORT id objc_msgSendSuper(struct objc_super *super, SEL op, ...); + + +/* Struct-returning Messaging Primitives + * + * Use these functions to call methods that return structs on the stack. + * On some architectures, some structures are returned in registers. + * Consult your local function call ABI documentation for details. + * + * These functions must be cast to an appropriate function pointer type + * before being called. + */ +#if defined(__OBJC2__) +OBJC_EXPORT void objc_msgSend_stret(id self, SEL op, ...); +OBJC_EXPORT void objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...); +#elif defined(__cplusplus) +/* For compatibility with old objc-runtime.h header */ +OBJC_EXPORT id objc_msgSend_stret(id self, SEL op, ...); +OBJC_EXPORT id objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...); +#else +/* For compatibility with old objc-runtime.h header */ +OBJC_EXPORT void objc_msgSend_stret(void * stretAddr, id self, SEL op, ...); +OBJC_EXPORT void objc_msgSendSuper_stret(void * stretAddr, struct objc_super *super, SEL op, ...); +#endif + + +/* Floating-point-returning Messaging Primitives + * + * Use these functions to call methods that return floating-point values + * on the stack. + * Consult your local function call ABI documentation for details. + * + * ppc: objc_msgSend_fpret not used + * ppc64: objc_msgSend_fpret not used + * i386: objc_msgSend_fpret used for `float`, `double`, `long double`. + * x86-64: objc_msgSend_fpret used for `long double`. + * + * These functions must be cast to an appropriate function pointer type + * before being called. + */ +#if defined(__i386__) +OBJC_EXPORT double objc_msgSend_fpret(id self, SEL op, ...); +/* Use objc_msgSendSuper() for fp-returning messages to super. */ +/* See also objc_msgSendv_fpret() below. */ +#elif defined(__x86_64__) +OBJC_EXPORT long double objc_msgSend_fpret(id self, SEL op, ...); +/* Use objc_msgSendSuper() for fp-returning messages to super. */ +/* See also objc_msgSendv_fpret() below. */ +#endif + + +/* Direct Method Invocation Primitives + * Use these functions to call the implementation of a given Method. + * This is faster than calling method_getImplementation() and method_getName(). + * + * The receiver must not be nil. + * + * These functions must be cast to an appropriate function pointer type + * before being called. + */ +OBJC_EXPORT id method_invoke(id receiver, Method m, ...) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void method_invoke_stret(id receiver, Method m, ...) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + + +/* Variable-argument Messaging Primitives + * + * Use these functions to call methods with a list of arguments, such + * as the one passed to forward:: . + * + * The contents of the argument list are architecture-specific. + * Consult your local function call ABI documentation for details. + * + * These functions must be cast to an appropriate function pointer type + * before being called, except for objc_msgSendv_stret() which must not + * be cast to a struct-returning type. + */ + +typedef void* marg_list; + +OBJC_EXPORT id objc_msgSendv(id self, SEL op, size_t arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE; +OBJC_EXPORT void objc_msgSendv_stret(void *stretAddr, id self, SEL op, size_t arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE; +/* Note that objc_msgSendv_stret() does not return a structure type, + * and should not be cast to do so. This is unlike objc_msgSend_stret() + * and objc_msgSendSuper_stret(). + */ +#if defined(__i386__) +OBJC_EXPORT double objc_msgSendv_fpret(id self, SEL op, unsigned arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE; +#endif + + +/* The following marg_list macros are of marginal utility. They + * are included for compatibility with the old objc-class.h header. */ + +#if !__OBJC2__ + +#if defined(__ppc__) || defined(ppc) +#define marg_prearg_size (13*sizeof(double)+6*sizeof(uintptr_t)) +#else +#define marg_prearg_size 0 +#endif + +#define marg_malloc(margs, method) \ + do { \ + margs = (marg_list *)malloc (marg_prearg_size + ((7 + method_getSizeOfArguments(method)) & ~7)); \ + } while (0) + +#define marg_free(margs) \ + do { \ + free(margs); \ + } while (0) + +#define marg_adjustedOffset(method, offset) \ + (marg_prearg_size + offset) + +#define marg_getRef(margs, offset, type) \ + ( (type *)((char *)margs + marg_adjustedOffset(method,offset) ) ) + +#define marg_getValue(margs, offset, type) \ + ( *marg_getRef(margs, offset, type) ) + +#define marg_setValue(margs, offset, type, value) \ + ( marg_getValue(margs, offset, type) = (value) ) + +#endif diff --git a/runtime/objc-api.h b/runtime/objc-api.h index 26401dc..5acebfe 100644 --- a/runtime/objc-api.h +++ b/runtime/objc-api.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -24,17 +22,42 @@ */ // Copyright 1988-1996 NeXT Software, Inc. +#ifndef _OBJC_OBJC_API_H_ +#define _OBJC_OBJC_API_H_ -#if !defined(OBJC_EXPORT) -#if defined(__cplusplus) -# define OBJC_EXPORT extern "C" -#else -# define OBJC_EXPORT extern +#include + +/* + * OBJC_API_VERSION 0 or undef: Tiger and earlier API only + * OBJC_API_VERSION 2: Leopard and later API available + */ +#if !defined(OBJC_API_VERSION) +# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 +# define OBJC_API_VERSION 0 +# else +# define OBJC_API_VERSION 2 +# endif #endif + +/* OBJC2_UNAVAILABLE: unavailable in objc 2.0, deprecated in Leopard */ +#if !defined(OBJC2_UNAVAILABLE) +# if __OBJC2__ +# define OBJC2_UNAVAILABLE UNAVAILABLE_ATTRIBUTE +# else +# define OBJC2_UNAVAILABLE DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER +# endif +#endif + +#if !defined(OBJC_EXPORT) +# if defined(__cplusplus) +# define OBJC_EXPORT extern "C" +# else +# define OBJC_EXPORT extern +# endif #endif #if !defined(OBJC_IMPORT) # define OBJC_IMPORT extern #endif - +#endif diff --git a/runtime/objc-auto.h b/runtime/objc-auto.h index 4c28c0b..002019b 100644 --- a/runtime/objc-auto.h +++ b/runtime/objc-auto.h @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2007 Apple 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 @@ -22,38 +20,97 @@ * * @APPLE_LICENSE_HEADER_END@ */ -/* - * objc-auto.h - * Copyright 2004 Apple Computer, Inc. - */ #ifndef _OBJC_AUTO_H_ #define _OBJC_AUTO_H_ #import #include +#include +#include +#include /* Collection utilities */ enum { - OBJC_GENERATIONAL = (1 << 0) + // choose one + OBJC_RATIO_COLLECTION = (0 << 0), // run "ratio" generational collections, then a full + OBJC_GENERATIONAL_COLLECTION = (1 << 0), // run fast incremental collection + OBJC_FULL_COLLECTION = (2 << 0), // run full collection. + OBJC_EXHAUSTIVE_COLLECTION = (3 << 0), // run full collections until memory available stops improving + + OBJC_COLLECT_IF_NEEDED = (1 << 3), // run collection only if needed (allocation threshold exceeded) + OBJC_WAIT_UNTIL_DONE = (1 << 4), // wait (when possible) for collection to end before returning (when collector is running on dedicated thread) }; -OBJC_EXPORT void objc_collect_if_needed(unsigned long options); -OBJC_EXPORT unsigned int objc_numberAllocated(void); -OBJC_EXPORT BOOL objc_collecting_enabled(void); +OBJC_EXPORT void objc_collect(unsigned long options); +OBJC_EXPORT BOOL objc_collectingEnabled(void); -/* Memory management */ -OBJC_EXPORT id objc_allocate_object(Class cls, int extra); -/* Write barriers */ +/* GC configuration */ + +/* Tells collector to wait until specified bytes have been allocated before trying to collect again. */ +OBJC_EXPORT void objc_setCollectionThreshold(size_t threshold); + +/* Tells collector to run a full collection for every ratio generational collections. */ +OBJC_EXPORT void objc_setCollectionRatio(size_t ratio); + +/* Tells collector to start collecting on dedicated thread */ +OBJC_EXPORT void objc_startCollectorThread(void); + + +// atomic update of a global variable +OBJC_EXPORT BOOL objc_atomicCompareAndSwapGlobal(id predicate, id replacement, volatile id *objectLocation); +OBJC_EXPORT BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate, id replacement, volatile id *objectLocation); +// atomic update of an instance variable +OBJC_EXPORT BOOL objc_atomicCompareAndSwapInstanceVariable(id predicate, id replacement, volatile id *objectLocation); +OBJC_EXPORT BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate, id replacement, volatile id *objectLocation); + +/* Write barriers. Used by the compiler. */ 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 id objc_assign_ivar(id value, id dest, ptrdiff_t offset); OBJC_EXPORT void *objc_memmove_collectable(void *dst, const void *src, size_t size); -/* Testing tools */ +OBJC_EXPORT id objc_read_weak(id *location); +OBJC_EXPORT id objc_assign_weak(id value, id *location); + + +// +// SPI. The following routines are available as debugging and transitional aides. +// + +/* Tells runtime to issue finalize calls on the main thread only. */ +OBJC_EXPORT void objc_finalizeOnMainThread(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED; + + +/* ask if object is scheduled for finalization. Safe only when called from within a finalizer. */ OBJC_EXPORT BOOL objc_is_finalized(void *ptr); +enum { + OBJC_CLEAR_RESIDENT_STACK = (1 << 0) +}; + +/* Stack management */ +OBJC_EXPORT void objc_clear_stack(unsigned long options); + +// +// Obsolete. Present only until all uses can be migrated to newer API. +// + +OBJC_EXPORT BOOL objc_collecting_enabled(void); +OBJC_EXPORT void objc_set_collection_threshold(size_t threshold); +OBJC_EXPORT void objc_set_collection_ratio(size_t ratio); +OBJC_EXPORT void objc_start_collector_thread(void); + +/* Memory management */ +OBJC_EXPORT id objc_allocate_object(Class cls, int extra); + +enum { + OBJC_GENERATIONAL = (1 << 0) +}; + +OBJC_EXPORT void objc_collect_if_needed(unsigned long options); #endif diff --git a/runtime/objc-auto.m b/runtime/objc-auto.m index d0d08a8..0f138b5 100644 --- a/runtime/objc-auto.m +++ b/runtime/objc-auto.m @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2007 Apple 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 @@ -22,184 +20,48 @@ * * @APPLE_LICENSE_HEADER_END@ */ -/* - * objc-auto.m - * Copyright 2004 Apple Computer, Inc. - */ - -#import "objc-auto.h" #import #import #import #import #import +#import +#import +#import +#define OLD 1 #import "objc-private.h" +#import "auto_zone.h" +#import "objc-auto.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 BOOL MultiThreadedGC = NO; +static BOOL WantsMainThreadFinalization = NO; +static BOOL NeedsMainThreadFinalization = NO; -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 -**********************************************************************/ +static struct { + auto_zone_foreach_object_t foreach; + auto_zone_cursor_t cursor; + size_t cursor_size; + volatile BOOL finished; + volatile BOOL started; + pthread_mutex_t mutex; + pthread_cond_t condition; +} BatchFinalizeBlock; -#define ISAUTOOBJECT(x) (auto_zone_is_valid_pointer(gc_zone, (x))) +__private_extern__ auto_zone_t *gc_zone = NULL; -// 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; -} +// Pointer magic to make dyld happy. See notes in objc-private.h +__private_extern__ id (*objc_assign_ivar_internal)(id, id, ptrdiff_t) = objc_assign_ivar; /*********************************************************************** @@ -207,69 +69,128 @@ static boolean_t objc_never_collect(auto_zone_t *zone, const auto_statistics_t * * Called by various libraries. **********************************************************************/ -void objc_collect(void) -{ +OBJC_EXPORT void objc_set_collection_threshold(size_t threshold) { // Old naming if (UseGC) { - auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL); + auto_collection_parameters(gc_zone)->collection_threshold = threshold; } } -void objc_collect_if_needed(unsigned long options) { +OBJC_EXPORT void objc_setCollectionThreshold(size_t threshold) { 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; - } + auto_collection_parameters(gc_zone)->collection_threshold = threshold; } } -void objc_collect_generation(void) -{ +void objc_setCollectionRatio(size_t ratio) { + if (UseGC) { + auto_collection_parameters(gc_zone)->full_vs_gen_frequency = ratio; + } +} + +void objc_set_collection_ratio(size_t ratio) { // old naming if (UseGC) { - auto_collect(gc_zone, AUTO_COLLECTION_GENERATIONAL_COLLECTION, NULL); + auto_collection_parameters(gc_zone)->full_vs_gen_frequency = ratio; } } +void objc_finalizeOnMainThread(Class cls) { + if (UseGC) { + WantsMainThreadFinalization = YES; + _class_setFinalizeOnMainThread(cls); + } +} -unsigned int objc_numberAllocated(void) -{ - const auto_statistics_t *stats = auto_collection_statistics(gc_zone); - return stats->blocks_in_use; + +void objc_startCollectorThread(void) { + static int didOnce = 0; + if (!didOnce) { + didOnce = 1; + + // pretend we're done to start out with. + BatchFinalizeBlock.started = YES; + BatchFinalizeBlock.finished = YES; + pthread_mutex_init(&BatchFinalizeBlock.mutex, NULL); + pthread_cond_init(&BatchFinalizeBlock.condition, NULL); + auto_collect_multithreaded(gc_zone); + MultiThreadedGC = YES; + } +} + +void objc_start_collector_thread(void) { + objc_startCollectorThread(); +} + +static void batchFinalizeOnMainThread(void); + +void objc_collect(unsigned long options) { + if (!UseGC) return; + BOOL onMainThread = pthread_main_np() ? YES : NO; + + if (MultiThreadedGC || onMainThread) { + if (MultiThreadedGC && onMainThread) batchFinalizeOnMainThread(); + auto_collection_mode_t amode = AUTO_COLLECT_RATIO_COLLECTION; + switch (options & 0x3) { + case OBJC_RATIO_COLLECTION: amode = AUTO_COLLECT_RATIO_COLLECTION; break; + case OBJC_GENERATIONAL_COLLECTION: amode = AUTO_COLLECT_GENERATIONAL_COLLECTION; break; + case OBJC_FULL_COLLECTION: amode = AUTO_COLLECT_FULL_COLLECTION; break; + case OBJC_EXHAUSTIVE_COLLECTION: amode = AUTO_COLLECT_EXHAUSTIVE_COLLECTION; break; + } + if (options & OBJC_COLLECT_IF_NEEDED) amode |= AUTO_COLLECT_IF_NEEDED; + if (options & OBJC_WAIT_UNTIL_DONE) amode |= AUTO_COLLECT_SYNCHRONOUS; // uses different bits + auto_collect(gc_zone, amode, NULL); + } + else { + objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), objc_collect, (void *)options); + } +} + +// SPI +// 0 - exhaustively NSGarbageCollector.m +// - from AppKit /Developer/Applications/Xcode.app/Contents/MacOS/Xcode via idleTimer +// GENERATIONAL +// - from autoreleasepool +// - several other places +void objc_collect_if_needed(unsigned long options) { + if (!UseGC) return; + BOOL onMainThread = pthread_main_np() ? YES : NO; + + if (MultiThreadedGC || onMainThread) { + auto_collection_mode_t mode; + if (options & OBJC_GENERATIONAL) { + mode = AUTO_COLLECT_IF_NEEDED | AUTO_COLLECT_RATIO_COLLECTION; + } + else { + mode = AUTO_COLLECT_EXHAUSTIVE_COLLECTION; + } + if (MultiThreadedGC && onMainThread) batchFinalizeOnMainThread(); + auto_collect(gc_zone, mode, NULL); + } + else { // XXX could be optimized (e.g. ask auto for threshold check, if so, set ASKING if not already ASKING,... + objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), objc_collect_if_needed, (void *)options); + } } +// NEVER USED. +size_t objc_numberAllocated(void) +{ + auto_statistics_t stats; + stats.version = 0; + auto_zone_statistics(gc_zone, &stats); + return stats.malloc_statistics.blocks_in_use; +} +// USED BY CF & ONE OTHER BOOL objc_isAuto(id object) { - return UseGC && ISAUTOOBJECT(object) != 0; + return UseGC && auto_zone_is_valid_pointer(gc_zone, object) != 0; } -BOOL objc_collecting_enabled(void) +BOOL objc_collectingEnabled(void) +{ + return UseGC; +} +BOOL objc_collecting_enabled(void) // Old naming { return UseGC; } @@ -283,21 +204,75 @@ BOOL objc_collecting_enabled(void) // 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; + return class_createInstance(cls, extra); +} + + +/*********************************************************************** +* 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. +**********************************************************************/ + +static void objc_strongCast_write_barrier(id value, id *slot) { + if (!auto_zone_set_write_barrier(gc_zone, (void*)slot, value)) { + auto_zone_root_write_barrier(gc_zone, slot, value); + } +} + +__private_extern__ id objc_assign_strongCast_gc(id value, id *slot) +{ + objc_strongCast_write_barrier(value, slot); + return (*slot = value); +} + +static void objc_register_global(id value, id *slot) +{ + // use explicit root registration. + if (value && auto_zone_is_valid_pointer(gc_zone, value)) { + if (auto_zone_is_finalized(gc_zone, value)) { + __private_extern__ void objc_assign_global_error(id value, id *slot); + + _objc_inform("GC: storing an already collected object %p into global memory at %p, break on objc_assign_global_error to debug\n", value, slot); + objc_assign_global_error(value, slot); + } + auto_zone_add_root(gc_zone, slot, value); + } +} + +__private_extern__ id objc_assign_global_gc(id value, id *slot) { + objc_register_global(value, slot); + return (*slot = value); +} + + +__private_extern__ id objc_assign_ivar_gc(id value, id base, ptrdiff_t offset) +{ + id *slot = (id*) ((char *)base + offset); + + if (value) { + if (!auto_zone_set_write_barrier(gc_zone, (char *)base + offset, value)) { + __private_extern__ void objc_assign_ivar_error(id base, ptrdiff_t offset); + + _objc_inform("GC: %p + %d isn't in the auto_zone, break on objc_assign_ivar_error to debug.\n", base, offset); + objc_assign_ivar_error(base, offset); + } + } + + return (*slot = value); } /*********************************************************************** * Write barrier exports * Called by pretty much all GC-supporting code. +* +* These "generic" implementations, available in PPC, are thought to be +* called by Rosetta when it translates the bla instruction. **********************************************************************/ - // Platform-independent write barriers // These contain the UseGC check that the platform-specific // runtime-rewritten implementations do not. @@ -322,7 +297,7 @@ id objc_assign_global_generic(id value, id *dest) } -id objc_assign_ivar_generic(id value, id dest, unsigned int offset) +id objc_assign_ivar_generic(id value, id dest, ptrdiff_t offset) { if (UseGC) { return objc_assign_ivar_gc(value, dest, offset); @@ -332,19 +307,23 @@ id objc_assign_ivar_generic(id value, id dest, unsigned int offset) } } -#if defined(__ppc__) +#if defined(__ppc__) || defined(__i386__) || defined(__x86_64__) // PPC write barriers are in objc-auto-ppc.s // write_barrier_init conditionally stomps those to jump to the _impl versions. +// These 3 functions are defined in objc-auto-i386.s and objc-auto-x86_64.s as +// the non-GC variants. Under GC, rtp_init stomps them with jumps to +// objc_assign_*_gc. + #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); } +id objc_assign_ivar(id value, id dest, ptrdiff_t offset) { return objc_assign_ivar_generic(value, dest, offset); } -// not defined(__ppc__) +// not (defined(__ppc__)) && not defined(__i386__) && not defined(__x86_64__) #endif @@ -357,16 +336,115 @@ void *objc_memmove_collectable(void *dst, const void *src, size_t size) } } +BOOL objc_atomicCompareAndSwapGlobal(id predicate, id replacement, volatile id *objectLocation) { + if (UseGC) objc_register_global(replacement, (id *)objectLocation); + return OSAtomicCompareAndSwapPtr((void *)predicate, (void *)replacement, (void * volatile *)objectLocation); +} + +BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate, id replacement, volatile id *objectLocation) { + if (UseGC) objc_register_global(replacement, (id *)objectLocation); + return OSAtomicCompareAndSwapPtrBarrier((void *)predicate, (void *)replacement, (void * volatile *)objectLocation); +} + +BOOL objc_atomicCompareAndSwapInstanceVariable(id predicate, id replacement, volatile id *objectLocation) { + if (UseGC) objc_strongCast_write_barrier(replacement, (id *)objectLocation); + return OSAtomicCompareAndSwapPtr((void *)predicate, (void *)replacement, (void * volatile *)objectLocation); +} + +BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate, id replacement, volatile id *objectLocation) { + if (UseGC) objc_strongCast_write_barrier(replacement, (id *)objectLocation); + return OSAtomicCompareAndSwapPtrBarrier((void *)predicate, (void *)replacement, (void * volatile *)objectLocation); +} + + +/*********************************************************************** +* Weak ivar support +**********************************************************************/ + +id objc_read_weak(id *location) { + id result = *location; + if (UseGC && result) { + result = auto_read_weak_reference(gc_zone, (void **)location); + } + return result; +} + +id objc_assign_weak(id value, id *location) { + if (UseGC) { + auto_assign_weak_reference(gc_zone, value, (void **)location, NULL); + } + else { + *location = value; + } + return value; +} + /*********************************************************************** * 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); + if (ptr != NULL && UseGC) { + return auto_zone_is_finalized(gc_zone, ptr); + } + return NO; } +/*********************************************************************** +* Stack management +* Used to tell clean up dirty stack frames before a thread blocks. To +* make this more efficient, we really need better support from pthreads. +* See for more details. +**********************************************************************/ + +static vm_address_t _stack_resident_base() { + pthread_t self = pthread_self(); + size_t stack_size = pthread_get_stacksize_np(self); + vm_address_t stack_base = (vm_address_t)pthread_get_stackaddr_np(self) - stack_size; + size_t stack_page_count = stack_size / vm_page_size; + char stack_residency[stack_page_count]; + vm_address_t stack_resident_base = 0; + if (mincore((void*)stack_base, stack_size, stack_residency) == 0) { + // we can now tell the degree to which the stack is resident, and use it as our ultimate high water mark. + size_t i; + for (i = 0; i < stack_page_count; ++i) { + if (stack_residency[i]) { + stack_resident_base = stack_base + i * vm_page_size; + // malloc_printf("last touched page = %lu\n", stack_page_count - i - 1); + break; + } + } + } + return stack_resident_base; +} + +static __attribute__((noinline)) void* _get_stack_pointer() { +#if defined(__i386__) || defined(__ppc__) || defined(__ppc64__) || defined(__x86_64__) + return __builtin_frame_address(0); +#else + return NULL; +#endif +} + +void objc_clear_stack(unsigned long options) { + if (!UseGC) return; + if (options & OBJC_CLEAR_RESIDENT_STACK) { + // clear just the pages of stack that are currently resident. + vm_address_t stack_resident_base = _stack_resident_base(); + vm_address_t stack_top = (vm_address_t)_get_stack_pointer() - 2 * sizeof(void*); + bzero((void*)stack_resident_base, (stack_top - stack_resident_base)); + } else { + // clear the entire unused stack, regardless of whether it's pages are resident or not. + pthread_t self = pthread_self(); + size_t stack_size = pthread_get_stacksize_np(self); + vm_address_t stack_base = (vm_address_t)pthread_get_stackaddr_np(self) - stack_size; + vm_address_t stack_top = (vm_address_t)_get_stack_pointer() - 2 * sizeof(void*); + bzero((void*)stack_base, stack_top - stack_base); + } +} + /*********************************************************************** * CF-only write barrier exports * Called by CF only. @@ -378,7 +456,7 @@ 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); + ptrdiff_t offset = (((char *)slot)-(char *)base); auto_zone_write_barrier(gc_zone, base, offset, value); } } @@ -394,7 +472,7 @@ 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); + ptrdiff_t offset = (((char *)slot)-(char *)base); auto_zone_write_barrier(gc_zone, base, offset, value); } } @@ -403,347 +481,255 @@ void* objc_assign_strongCast_CF(void* value, void **slot) /*********************************************************************** -* 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. +* Finalization support **********************************************************************/ -__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); -} +static IMP _NSObject_finalize = NULL; +// Finalizer crash debugging +static void *finalizing_object; +static const char *__crashreporter_info__; -__private_extern__ id objc_assign_ivar_gc(id value, id base, unsigned int offset) -{ - id *slot = (id*) ((char *)base + offset); +static void finalizeOneObject(void *obj, void *sel) { + id object = (id)obj; + SEL selector = (SEL)sel; + finalizing_object = obj; + __crashreporter_info__ = object_getClassName(obj); - 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); - } - } + /// call -finalize method. + objc_msgSend(object, selector); + // Call C++ destructors, if any. + object_cxxDestruct(object); - return (*slot = value); + finalizing_object = NULL; + __crashreporter_info__ = NULL; } - - -/*********************************************************************** -* 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; +static void finalizeOneMainThreadOnlyObject(void *obj, void *sel) { + id object = (id)obj; + Class cls = object->isa; + if (cls == NULL) { + _objc_fatal("object with NULL ISA passed to finalizeOneMainThreadOnlyObject: %p\n", obj); + } + if (_class_shouldFinalizeOnMainThread(cls)) { + finalizeOneObject(obj, sel); + } } -+ (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)); +static void finalizeOneAnywhereObject(void *obj, void *sel) { + id object = (id)obj; + Class cls = object->isa; + if (cls == NULL) { + _objc_fatal("object with NULL ISA passed to finalizeOneAnywhereObject: %p\n", obj); + } + if (!_class_shouldFinalizeOnMainThread(cls)) { + finalizeOneObject(obj, sel); + } + else { + NeedsMainThreadFinalization = YES; } - 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; +static void batchFinalize(auto_zone_t *zone, + auto_zone_foreach_object_t foreach, + auto_zone_cursor_t cursor, + size_t cursor_size, + void (*finalize)(void *, void*)) +{ + for (;;) { + @try { + foreach(cursor, finalize, @selector(finalize)); + // non-exceptional return means finalization is complete. + break; + } @catch (id exception) { + // whoops, note exception, then restart at cursor's position + __private_extern__ void objc_exception_during_finalize_error(void); + _objc_inform("GC: -finalize resulted in an exception (%p) being thrown, break on objc_exception_during_finalize_error to debug\n\t%s", exception, (const char*)[[exception description] UTF8String]); + objc_exception_during_finalize_error(); + } } - 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); +static void batchFinalizeOnMainThread(void) { + pthread_mutex_lock(&BatchFinalizeBlock.mutex); + if (BatchFinalizeBlock.started) { + // main thread got here already + pthread_mutex_unlock(&BatchFinalizeBlock.mutex); return; } + BatchFinalizeBlock.started = YES; + pthread_mutex_unlock(&BatchFinalizeBlock.mutex); + + batchFinalize(gc_zone, BatchFinalizeBlock.foreach, BatchFinalizeBlock.cursor, BatchFinalizeBlock.cursor_size, finalizeOneMainThreadOnlyObject); + // signal the collector thread that finalization has finished. + pthread_mutex_lock(&BatchFinalizeBlock.mutex); + BatchFinalizeBlock.finished = YES; + pthread_cond_signal(&BatchFinalizeBlock.condition); + pthread_mutex_unlock(&BatchFinalizeBlock.mutex); +} + +static void batchFinalizeOnTwoThreads(auto_zone_t *zone, + auto_zone_foreach_object_t foreach, + auto_zone_cursor_t cursor, + size_t cursor_size) +{ + // First, lets get rid of everything we can on this thread, then ask main thread to help if needed + NeedsMainThreadFinalization = NO; + char cursor_copy[cursor_size]; + memcpy(cursor_copy, cursor, cursor_size); + batchFinalize(zone, foreach, cursor_copy, cursor_size, finalizeOneAnywhereObject); + + if (! NeedsMainThreadFinalization) + return; // no help needed - 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; + // set up the control block. Either our ping of main thread with _callOnMainThread will get to it, or + // an objc_collect_if_needed() will get to it. Either way, this block will be processed on the main thread. + pthread_mutex_lock(&BatchFinalizeBlock.mutex); + BatchFinalizeBlock.foreach = foreach; + BatchFinalizeBlock.cursor = cursor; + BatchFinalizeBlock.cursor_size = cursor_size; + BatchFinalizeBlock.started = NO; + BatchFinalizeBlock.finished = NO; + pthread_mutex_unlock(&BatchFinalizeBlock.mutex); - if (cls == _NSDeallocatedObject) { - // already finalized, do nothing - _objc_inform("finalizeOneObject called on NSDeallocatedObject %p", ptr); - return; - } + //printf("----->asking main thread to finalize\n"); + objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), batchFinalizeOnMainThread, &BatchFinalizeBlock); - IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize)); - if (finalizeMethod == &_objc_msgForward) { - _objc_inform("GC: class '%s' does not implement -finalize!", cls->name); - } + // wait for the main thread to finish finalizing instances of classes marked CLS_FINALIZE_ON_MAIN_THREAD. + pthread_mutex_lock(&BatchFinalizeBlock.mutex); + while (!BatchFinalizeBlock.finished) pthread_cond_wait(&BatchFinalizeBlock.condition, &BatchFinalizeBlock.mutex); + pthread_mutex_unlock(&BatchFinalizeBlock.mutex); + //printf("<------ main thread finalize done\n"); + +} + + +static void objc_will_grow(auto_zone_t *zone, auto_heap_growth_info_t info) { + if (MultiThreadedGC) { + //printf("objc_will_grow %d\n", info); - // 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 (auto_zone_is_collecting(gc_zone)) { + ; + } + else { + auto_collect(gc_zone, AUTO_COLLECT_RATIO_COLLECTION, NULL); } - 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) + +// collector calls this with garbage ready +static void BatchInvalidate(auto_zone_t *zone, + auto_zone_foreach_object_t foreach, + auto_zone_cursor_t cursor, + size_t cursor_size) { - 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); - } + if (pthread_main_np() || !WantsMainThreadFinalization) { + // Collect all objects. We're either pre-multithreaded on main thread or we're on the collector thread + // but no main-thread-only objects have been allocated. + batchFinalize(zone, foreach, cursor, cursor_size, finalizeOneObject); + } + else { + // We're on the dedicated thread. Collect some on main thread, the rest here. + batchFinalizeOnTwoThreads(zone, foreach, cursor, cursor_size); } - gc_zone_finalizing = NO; + +} + +// idea: keep a side table mapping resurrected object pointers to their original Class, so we don't +// need to smash anything. alternatively, could use associative references to track against a secondary +// object with information about the resurrection, such as a stack crawl, etc. + +static Class _NSResurrectedObjectClass; +static NXMapTable *_NSResurrectedObjectMap = NULL; +static OBJC_DECLARE_LOCK(_NSResurrectedObjectLock); + +static Class resurrectedObjectOriginalClass(id object) { + Class originalClass; + OBJC_LOCK(&_NSResurrectedObjectLock); + originalClass = (Class) NXMapGet(_NSResurrectedObjectMap, object); + OBJC_UNLOCK(&_NSResurrectedObjectLock); + return originalClass; +} + +static id _NSResurrectedObject_classMethod(id self, SEL selector) { return self; } + +static id _NSResurrectedObject_instanceMethod(id self, SEL name) { + _objc_inform("**resurrected** object %p of class %s being sent message '%s'\n", self, class_getName(resurrectedObjectOriginalClass(self)), sel_getName(name)); + return self; } -@interface NSResurrectedObject { - @public - Class _isa; // [NSResurrectedObject class] - Class _old_isa; // original class - unsigned _resurrections; // how many times this object has been resurrected. +static void _NSResurrectedObject_finalize(id self, SEL _cmd) { + Class originalClass; + OBJC_LOCK(&_NSResurrectedObjectLock); + originalClass = (Class) NXMapRemove(_NSResurrectedObjectMap, self); + OBJC_UNLOCK(&_NSResurrectedObjectLock); + if (originalClass) _objc_inform("**resurrected** object %p of class %s being finalized\n", self, class_getName(originalClass)); + _NSObject_finalize(self, _cmd); } -+ (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; +static BOOL _NSResurrectedObject_resolveInstanceMethod(id self, SEL _cmd, SEL name) { + class_addMethod((Class)self, name, (IMP)_NSResurrectedObject_instanceMethod, "@@:"); + return YES; } -- (void)finalize { - _objc_inform("**resurrected** object %p of class %s being finalized\n", self, _old_isa->name); + +static BOOL _NSResurrectedObject_resolveClassMethod(id self, SEL _cmd, SEL name) { + class_addMethod(object_getClass(self), name, (IMP)_NSResurrectedObject_classMethod, "@@:"); + return YES; } -@end -static Class _NSResurrectedObject; +static void _NSResurrectedObject_initialize() { + _NSResurrectedObjectMap = NXCreateMapTable(NXPtrValueMapPrototype, 128); + _NSResurrectedObjectClass = objc_allocateClassPair(objc_getClass("NSObject"), "_NSResurrectedObject", 0); + class_addMethod(_NSResurrectedObjectClass, @selector(finalize), (IMP)_NSResurrectedObject_finalize, "v@:"); + Class metaClass = object_getClass(_NSResurrectedObjectClass); + class_addMethod(metaClass, @selector(resolveInstanceMethod:), (IMP)_NSResurrectedObject_resolveInstanceMethod, "c@::"); + class_addMethod(metaClass, @selector(resolveClassMethod:), (IMP)_NSResurrectedObject_resolveClassMethod, "c@::"); + objc_registerClassPair(_NSResurrectedObjectClass); +} 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++; + id object = (id) ptr; + Class cls = object->isa; + if (cls != _NSResurrectedObjectClass) { + // remember the original class for this instance. + OBJC_LOCK(&_NSResurrectedObjectLock); + NXMapInsert(_NSResurrectedObjectMap, ptr, cls); + OBJC_UNLOCK(&_NSResurrectedObjectLock); + object->isa = _NSResurrectedObjectClass; } } /*********************************************************************** -* Allocation recording +* Pretty printing support * For development purposes. **********************************************************************/ -static NXMapTable *the_histogram = NULL; -static pthread_mutex_t the_histogram_lock = PTHREAD_MUTEX_INITIALIZER; +static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount); -static void record_allocation(Class cls) +static char* objc_name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset) { - 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); + return name_for_address(zone, base, offset, false); } +/*********************************************************************** +* Collection support +**********************************************************************/ -void objc_allocation_histogram(void) +static const unsigned char *objc_layout_for_address(auto_zone_t *zone, void *address) { - 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"); + Class cls = *(Class *)address; + return (const unsigned char *)class_getIvarLayout(cls); } -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) +static const unsigned char *objc_weak_layout_for_address(auto_zone_t *zone, void *address) { - return name_for_address(zone, base, offset, false); + Class cls = *(Class *)address; + return (const unsigned char *)class_getWeakIvarLayout(cls); } /*********************************************************************** @@ -760,34 +746,18 @@ __private_extern__ void gc_init(BOOL on) } if (UseGC) { + // Add GC state to crash log reports + _objc_inform_on_crash("garbage collection is ON"); + // 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); + auto_zone_set_class_list((int (*)(void **, int))objc_getClassList); } } @@ -797,64 +767,18 @@ 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) + result = auto_zone_create("auto_zone"); auto_collection_control_t *control = auto_collection_parameters(result); // set up the magic control parameters - control->invalidate = sendFinalize; - control->batch_invalidate = batchFinalize; + control->batch_invalidate = BatchInvalidate; + control->will_grow = objc_will_grow; control->resurrect = resurrectZombie; + control->layout_for_address = objc_layout_for_address; + control->weak_layout_for_address = objc_weak_layout_for_address; 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; } @@ -864,20 +788,14 @@ 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)); + _NSObject_finalize = class_getMethodImplementation(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; - } - + // create the _NSResurrectedObject class used to track resurrections. + _NSResurrectedObject_initialize(); + return (malloc_zone_t *)gc_zone; } @@ -912,7 +830,7 @@ static malloc_zone_t *objc_debug_zone(void) return z; } -static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head) { +static char *_malloc_append_unsigned(uintptr_t value, unsigned base, char *head) { if (!value) { head[0] = '0'; } else { @@ -923,61 +841,69 @@ static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head) return head+1; } -static void strcati(char *str, unsigned value) +static void strcati(char *str, uintptr_t value) { str = _malloc_append_unsigned(value, 10, str + strlen(str)); str[0] = '\0'; } -static void strcatx(char *str, unsigned value) +static void strcatx(char *str, uintptr_t 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) +static Ivar ivar_for_offset(Class cls, vm_address_t offset) { int i; int ivar_offset; - Ivar super_ivar; - struct objc_ivar_list *ivars; + Ivar super_ivar, result; + Ivar *ivars; + unsigned int ivar_count; if (!cls) return NULL; // scan base classes FIRST - super_ivar = ivar_for_offset(cls->super_class, offset); + super_ivar = ivar_for_offset(class_getSuperclass(cls), 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]; + ivars = class_copyIvarList(cls, &ivar_count); + if (ivars && ivar_count) { + // Try our first ivar. If it's too big, use super's best ivar. + ivar_offset = ivar_getOffset(ivars[0]); + if (ivar_offset > offset) result = super_ivar; + else if (ivar_offset == offset) result = ivars[0]; + else result = NULL; + + // Try our other ivars. If any is too big, use the previous. + for (i = 1; result == NULL && i < ivar_count; i++) { + ivar_offset = ivar_getOffset(ivars[i]); + if (ivar_offset == offset) { + result = ivars[i]; + } else if (ivar_offset > offset) { + result = ivars[i - 1]; + } } - } - // Found nothing. Return our last ivar. - return &ivars->ivar_list[ivars->ivar_count - 1]; + // Found nothing. Return our last ivar. + if (result == NULL) + result = ivars[ivar_count - 1]; + + free(ivars); + } else { + result = super_ivar; + } + + return result; } -static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_t offset) +static void append_ivar_at_offset(char *buf, Class cls, vm_address_t offset) { Ivar ivar = NULL; if (offset == 0) return; // don't bother with isa - if (offset >= cls->instance_size) { + if (offset >= class_getInstanceSize(cls)) { strcat(buf, ".+"); strcati(buf, offset); return; @@ -992,10 +918,11 @@ static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_ // fixme doesn't handle structs etc. strcat(buf, "."); - if (ivar->ivar_name) strcat(buf, ivar->ivar_name); + const char *ivar_name = ivar_getName(ivar); + if (ivar_name) strcat(buf, ivar_name); else strcat(buf, ""); - offset -= ivar->ivar_offset; + offset -= ivar_getOffset(ivar); if (offset > 0) { strcat(buf, "+"); strcati(buf, offset); @@ -1007,29 +934,33 @@ 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); + const char *result; + void *dlh; + size_t (*CFGetTypeID)(void *); + void * (*_CFRuntimeGetClassWithTypeID)(size_t); + + result = "anonymous_NSCFType"; - sym = NSLookupAndBindSymbolWithHint("_CFGetTypeID", "CoreFoundation"); - if (!sym) return "anonymous_NSCFType"; - CFGetTypeID = NSAddressOfSymbol(sym); - if (!CFGetTypeID) return "NSCFType"; + dlh = dlopen("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", RTLD_LAZY | RTLD_NOLOAD | RTLD_FIRST); + if (!dlh) return result; - sym = NSLookupAndBindSymbolWithHint("__CFRuntimeGetClassWithTypeID", "CoreFoundation"); - if (!sym) return "anonymous_NSCFType"; - _CFRuntimeGetClassWithTypeID = NSAddressOfSymbol(sym); - if (!_CFRuntimeGetClassWithTypeID) return "anonymous_NSCFType"; + CFGetTypeID = (size_t(*)(void*)) dlsym(dlh, "CFGetTypeID"); + _CFRuntimeGetClassWithTypeID = (void*(*)(size_t)) dlsym(dlh, "_CFRuntimeGetClassWithTypeID"); + + if (CFGetTypeID && _CFRuntimeGetClassWithTypeID) { + struct { + size_t version; + const char *className; + // don't care about the rest + } *cfcls; + size_t cfid; + cfid = (*CFGetTypeID)(cfobj); + cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid); + result = cfcls->className; + } - cfid = (*CFGetTypeID)(cfobj); - cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid); - return cfcls->className; + dlclose(dlh); + return result; } @@ -1045,7 +976,7 @@ static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t buf[0] = '\0'; - unsigned int size = + size_t 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; @@ -1055,14 +986,14 @@ static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t switch (type) { case AUTO_OBJECT_SCANNED: case AUTO_OBJECT_UNSCANNED: { - Class cls = *(struct objc_class **)base; - if (0 == strcmp(cls->name, "NSCFType")) { + const char *class_name = object_getClassName((id)base); + if (0 == strcmp(class_name, "NSCFType")) { strcat(buf, cf_class_for_object((void *)base)); } else { - strcat(buf, cls->name); + strcat(buf, class_name); } if (offset) { - append_ivar_at_offset(buf, cls, offset); + append_ivar_at_offset(buf, object_getClass((id)base), offset); } APPEND_SIZE(size); break; @@ -1115,10 +1046,10 @@ static void objc_class_recorder(task_t task, void *context, unsigned type_mask, // 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) { + for (cls = isa; cls; cls = _class_getSuperclass(cls)) { if (cls == ctx->cls) { unsigned int rc; - objc_debug_printf("[%p] : %s", r->address, isa->name); + objc_debug_printf("[%p] : %s", r->address, _class_getName(isa)); if ((rc = auto_zone_retain_count_no_lock(ctx->zone, (void *)r->address))) { objc_debug_printf(" [[refcount %u]]", rc); } @@ -1131,7 +1062,7 @@ static void objc_class_recorder(task_t task, void *context, unsigned type_mask, } } -void objc_enumerate_class(char *clsname) +__private_extern__ void objc_enumerate_class(char *clsname) { struct objc_class_recorder_context ctx; ctx.zone = auto_zone(); @@ -1163,7 +1094,7 @@ static void objc_reference_printer(auto_zone_t *zone, void *ctx, } -void objc_print_references(void *referent, void *stack_bottom, int lock) +__private_extern__ void objc_print_references(void *referent, void *stack_bottom, int lock) { if (lock) { auto_enumerate_references(auto_zone(), referent, @@ -1194,18 +1125,18 @@ typedef struct { 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 blob_queue blobs = {NULL, 0, 0}; +static blob_queue untraced_blobs = {NULL, 0, 0}; +static 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 time_t t = 0; + time_t now = time(NULL); + if (t != now) { + objc_debug_printf("."); + t = now; + } } @@ -1313,17 +1244,17 @@ static void objc_blob_recorder(auto_zone_t *zone, void *ctx, 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) +__private_extern__ 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) +__private_extern__ 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) +__private_extern__ void objc_print_all_refs(vm_address_t target, void *stack_bottom, int lock) { objc_print_recursive_refs(target, ALL_REFS, stack_bottom, lock); } @@ -1512,14 +1443,14 @@ static void objc_block_recorder(task_t task, void *context, unsigned type_mask, } -void objc_dump_block_list(const char* path) +__private_extern__ 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, '.')))); + ctx.fd = (path ? open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666) : mkstemps(filename, (int)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); @@ -1598,7 +1529,7 @@ 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 width = 30 + (int)strlen(name)*6; int height = 40; char buf[40] = ""; char *c; @@ -1684,7 +1615,7 @@ static void grafflize(blob_queue *blobs, int everything) char filename[] = "/tmp/gc-XXXXX.graffle"; // Open file - gfile = mkstemps(filename, strlen(strrchr(filename, '.'))); + gfile = mkstemps(filename, (int)strlen(strrchr(filename, '.'))); if (gfile < 0) { objc_debug_printf("couldn't create a graffle file in /tmp/ (errno %d)\n", errno); return; @@ -1731,110 +1662,3 @@ static void grafflize(blob_queue *blobs, int everything) 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-cache.m b/runtime/objc-cache.m new file mode 100644 index 0000000..7d0aefb --- /dev/null +++ b/runtime/objc-cache.m @@ -0,0 +1,1806 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-cache.m +* Method cache management +* Cache flushing +* Cache garbage collection +* Cache instrumentation +* Dedicated allocator for large caches +**********************************************************************/ + + +/*********************************************************************** + * Method cache locking (GrP 2001-1-14) + * + * For speed, objc_msgSend does not acquire any locks when it reads + * method caches. Instead, all cache changes are performed so that any + * objc_msgSend running concurrently with the cache mutator will not + * crash or hang or get an incorrect result from the cache. + * + * When cache memory becomes unused (e.g. the old cache after cache + * expansion), it is not immediately freed, because a concurrent + * objc_msgSend could still be using it. Instead, the memory is + * disconnected from the data structures and placed on a garbage list. + * The memory is now only accessible to instances of objc_msgSend that + * were running when the memory was disconnected; any further calls to + * objc_msgSend will not see the garbage memory because the other data + * structures don't point to it anymore. The collecting_in_critical + * function checks the PC of all threads and returns FALSE when all threads + * are found to be outside objc_msgSend. This means any call to objc_msgSend + * that could have had access to the garbage has finished or moved past the + * cache lookup stage, so it is safe to free the memory. + * + * All functions that modify cache data or structures must acquire the + * 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* + * _cache_getImp + * _cache_getMethod + * + * Cache writers (hold cacheUpdateLock while reading or writing; not PC-checked) + * _cache_fill (acquires lock) + * _cache_expand (only called from cache_fill) + * _cache_create (only called from cache_expand) + * bcopy (only called from instrumented cache_expand) + * flush_caches (acquires lock) + * _cache_flush (only called from cache_fill and flush_caches) + * _cache_collect_free (only called from cache_expand and cache_flush) + * + * UNPROTECTED cache readers (NOT thread-safe; used for debug info only) + * _cache_print + * _class_printMethodCaches + * _class_printDuplicateCacheEntries + * _class_printMethodCacheStatistics + * + * _class_lookupMethodAndLoadCache is a special case. It may read a + * method triplet out of one cache and store it in another cache. This + * is unsafe if the method triplet is a forward:: entry, because the + * triplet itself could be freed unless _class_lookupMethodAndLoadCache + * were PC-checked or used a lock. Additionally, storing the method + * triplet in both caches would result in double-freeing if both caches + * were flushed or expanded. The solution is for _cache_getMethod to + * ignore all entries whose implementation is _objc_msgForward, so + * _class_lookupMethodAndLoadCache cannot look at a forward:: entry + * unsafely or place it in multiple caches. + ***********************************************************************/ + + +#include + +#import "objc-private.h" +#import "hashtable2.h" + +typedef struct { + SEL name; // same layout as struct old_method + void *unused; + IMP imp; // same layout as struct old_method +} cache_entry; + +#if __OBJC2__ + +#ifndef __LP64__ +#define CACHE_HASH(sel, mask) (((uintptr_t)(sel)>>2) & (mask)) +#else +#define CACHE_HASH(sel, mask) (((unsigned int)((uintptr_t)(sel)>>3)) & (mask)) +#endif + +struct objc_cache { + unsigned int mask; /* total = mask + 1 */ + unsigned int occupied; + cache_entry *buckets[1]; +}; + +#define CACHE_BUCKET(e) ((cache_entry *)e) + +#else + +/* Most definitions are in runtime.h */ +#define CACHE_BUCKET(e) ((Method)e) + +#endif + + +/* When _class_slow_grow is non-zero, any given cache is actually grown + * only on the odd-numbered times it becomes full; on the even-numbered + * times, it is simply emptied and re-used. When this flag is zero, + * caches are grown every time. */ +static const int _class_slow_grow = 1; + +/* For min cache size: clear_cache=1, slow_grow=1 + For max cache size: clear_cache=0, slow_grow=0 */ + + +/* Lock for cache access. + * Held when modifying a cache in place. + * Held when installing a new cache on a class. + * Held when adding to the cache garbage list. + * Held when disposing cache garbage. + * See "Method cache locking" above for notes about cache locking. */ +// classLock > cacheUpdateLock > infoLock +#if __OBJC2__ +static +#else +__private_extern__ +#endif +OBJC_DECLARE_LOCK(cacheUpdateLock); + + +/* Initial cache bucket count. INIT_CACHE_SIZE must be a power of two. */ +enum { + INIT_CACHE_SIZE_LOG2 = 2, + INIT_CACHE_SIZE = (1 << INIT_CACHE_SIZE_LOG2) +}; + + +/* Amount of space required for `count` hash table buckets, knowing that + * one entry is embedded in the cache structure itself. */ +#define TABLE_SIZE(count) ((count - 1) * sizeof(cache_entry *)) + + +/* 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) + + +/* Cache instrumentation data. Immediately follows the cache block itself. */ +#ifdef OBJC_INSTRUMENTED +typedef struct +{ + unsigned int hitCount; // cache lookup success tally + unsigned int hitProbes; // sum entries checked to hit + unsigned int maxHitProbes; // max entries checked to hit + unsigned int missCount; // cache lookup no-find tally + unsigned int missProbes; // sum entries checked to miss + unsigned int maxMissProbes; // max entries checked to miss + unsigned int flushCount; // cache flush tally + unsigned int flushedEntries; // sum cache entries flushed + unsigned int maxFlushedEntries; // max cache entries flushed +} CacheInstrumentation; + +#define CACHE_INSTRUMENTATION(cache) (CacheInstrumentation *) &cache->buckets[cache->mask + 1]; +#endif + +/* Cache filling and flushing instrumentation */ + +static int totalCacheFills NOBSS = 0; + +#ifdef OBJC_INSTRUMENTED +__private_extern__ unsigned int LinearFlushCachesCount = 0; +__private_extern__ unsigned int LinearFlushCachesVisitedCount = 0; +__private_extern__ unsigned int MaxLinearFlushCachesVisitedCount = 0; +__private_extern__ unsigned int NonlinearFlushCachesCount = 0; +__private_extern__ unsigned int NonlinearFlushCachesClassCount = 0; +__private_extern__ unsigned int NonlinearFlushCachesVisitedCount = 0; +__private_extern__ unsigned int MaxNonlinearFlushCachesVisitedCount = 0; +__private_extern__ unsigned int IdealFlushCachesCount = 0; +__private_extern__ unsigned int MaxIdealFlushCachesCount = 0; +#endif + + +/*********************************************************************** +* A static empty cache. All classes initially point at this cache. +* When the first message is sent it misses in the cache, and when +* the cache is grown it checks for this case and uses malloc rather +* than realloc. This avoids the need to check for NULL caches in the +* messenger. +***********************************************************************/ + +#ifndef OBJC_INSTRUMENTED +const struct objc_cache _objc_empty_cache = +{ + 0, // mask + 0, // occupied + { NULL } // buckets +}; +#else +// OBJC_INSTRUMENTED requires writable data immediately following emptyCache. +struct objc_cache _objc_empty_cache = +{ + 0, // mask + 0, // occupied + { NULL } // buckets +}; +CacheInstrumentation emptyCacheInstrumentation = {0}; +#endif + +#if __OBJC2__ +IMP _objc_empty_vtable[128] = {0}; +#endif + + +/* Local prototypes */ + +static BOOL _cache_isEmpty(Cache cache); +static Cache _cache_malloc(int slotCount); +static Cache _cache_create(Class cls); +static Cache _cache_expand(Class cls); +#if __OBJC2__ +static void _cache_flush(Class cls); +#endif + +static uintptr_t _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, size_t size, BOOL tryCollect); + +#if !defined(__LP64__) +static BOOL cache_allocator_is_block(void *block); +static void *cache_allocator_calloc(size_t size); +static void cache_allocator_free(void *block); +#endif + + + +/*********************************************************************** +* _cache_isEmpty. +* Returns YES if the given cache is some empty cache. +* Empty caches should never be allocated on the heap. +**********************************************************************/ +static BOOL _cache_isEmpty(Cache cache) +{ + return (cache == NULL || cache == (Cache)&_objc_empty_cache || cache->mask == 0); +} + + +/*********************************************************************** +* _cache_malloc. +* +* Called from _cache_create() and cache_expand() +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +static Cache _cache_malloc(int slotCount) +{ + Cache new_cache; + size_t size; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + // Allocate table (why not check for failure?) + size = sizeof(struct objc_cache) + TABLE_SIZE(slotCount); +#if defined(OBJC_INSTRUMENTED) + // Custom cache allocator can't handle instrumentation. + size += sizeof(CacheInstrumentation); + new_cache = _calloc_internal(size, 1); + new_cache->mask = slotCount - 1; +#elif defined(__LP64__) + // fixme cache allocator implementation isn't 64-bit clean + 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; +} + + +/*********************************************************************** +* _cache_free_block. +* +* Called from _cache_free() and _cache_collect_free(). +* block may be a cache or a forward:: entry. +* If block is a cache, forward:: entries it points to will NOT be freed. +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +static void _cache_free_block(void *block) +{ + OBJC_CHECK_LOCKED(&cacheUpdateLock); + +#if !defined(__LP64__) + if (cache_allocator_is_block(block)) { + cache_allocator_free(block); + } else +#endif + { + free(block); + } +} + + +/*********************************************************************** +* _cache_free. +* +* Called from _objc_remove_classes_in_image(). +* forward:: entries in the cache ARE freed. +* Cache locks: cacheUpdateLock must NOT be held by the caller. +**********************************************************************/ +__private_extern__ void _cache_free(Cache cache) +{ + int i; + + OBJC_LOCK(&cacheUpdateLock); + + for (i = 0; i < cache->mask + 1; i++) { + cache_entry *entry = (cache_entry *)cache->buckets[i]; + if (entry && entry->imp == &_objc_msgForward) { + _cache_free_block(entry); + } + } + + _cache_free_block(cache); + + OBJC_UNLOCK(&cacheUpdateLock); +} + + +/*********************************************************************** +* _cache_create. +* +* Called from _cache_expand(). +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +static Cache _cache_create(Class cls) +{ + Cache new_cache; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + // Allocate new cache block + new_cache = _cache_malloc(INIT_CACHE_SIZE); + + // Install the cache + _class_setCache(cls, new_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) { + _class_setGrowCache(cls, NO); + } + + // Return our creation + return new_cache; +} + + +/*********************************************************************** +* _cache_expand. +* +* Called from _cache_fill () +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +static Cache _cache_expand(Class cls) +{ + Cache old_cache; + Cache new_cache; + unsigned int slotCount; + unsigned int index; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + // First growth goes from empty cache to a real one + old_cache = _class_getCache(cls); + if (_cache_isEmpty(old_cache)) + return _cache_create (cls); + + if (_class_slow_grow) { + // Cache grows every other time only. + if (_class_shouldGrowCache(cls)) { + // Grow the cache this time. Don't grow next time. + _class_setGrowCache(cls, NO); + } + else { + // Reuse the current cache storage this time. Do grow next time. + _class_setGrowCache(cls, YES); + + // Clear the valid-entry counter + old_cache->occupied = 0; + + // Invalidate all the cache entries + for (index = 0; index < old_cache->mask + 1; index += 1) + { + // Remember what this entry was, so we can possibly + // deallocate it after the bucket has been invalidated + cache_entry *oldEntry = (cache_entry *)old_cache->buckets[index]; + + // Skip invalid entry + if (!oldEntry) + continue; + + // Invalidate this entry + old_cache->buckets[index] = NULL; + + // Deallocate "forward::" entry + if (oldEntry->imp == &_objc_msgForward) { + _cache_collect_free (oldEntry, sizeof(cache_entry), NO); + } + } + + // Return the same old cache, freshly emptied + return old_cache; + } + } + + // Double the cache size + slotCount = (old_cache->mask + 1) << 1; + + new_cache = _cache_malloc(slotCount); + +#ifdef OBJC_INSTRUMENTED + // Propagate the instrumentation data + { + CacheInstrumentation *oldCacheData; + CacheInstrumentation *newCacheData; + + oldCacheData = CACHE_INSTRUMENTATION(old_cache); + newCacheData = CACHE_INSTRUMENTATION(new_cache); + bcopy ((const char *)oldCacheData, (char *)newCacheData, sizeof(CacheInstrumentation)); + } +#endif + + // Deallocate "forward::" entries from the old cache + for (index = 0; index < old_cache->mask + 1; index++) { + cache_entry *entry = (cache_entry *)old_cache->buckets[index]; + if (entry && entry->imp == &_objc_msgForward) { + _cache_collect_free (entry, sizeof(cache_entry), NO); + } + } + + // Install new cache + _class_setCache(cls, new_cache); + + // Deallocate old cache, try freeing all the garbage + _cache_collect_free (old_cache, old_cache->mask * sizeof(cache_entry *), YES); + return new_cache; +} + + +/*********************************************************************** +* _cache_fill. Add the specified method to the specified class' cache. +* Returns NO if the cache entry wasn't added: cache was busy, +* class is still being initialized, new entry is a duplicate. +* +* Called only from _class_lookupMethodAndLoadCache and +* class_respondsToMethod and _cache_addForwardEntry. +* +* Cache locks: cacheUpdateLock must not be held. +**********************************************************************/ +__private_extern__ BOOL _cache_fill(Class cls, Method smt, SEL sel) +{ + unsigned int newOccupied; + uintptr_t index; + cache_entry **buckets; + cache_entry *entry; + Cache cache; + + OBJC_CHECK_UNLOCKED(&cacheUpdateLock); + + // Never cache before +initialize is done + if (!_class_isInitialized(cls)) { + return NO; + } + + // Keep tally of cache additions + totalCacheFills += 1; + + OBJC_LOCK(&cacheUpdateLock); + + entry = (cache_entry *)smt; + + cache = _class_getCache(cls); + + // Make sure the entry wasn't added to the cache by some other thread + // before we grabbed the cacheUpdateLock. + // Don't use _cache_getMethod() because _cache_getMethod() doesn't + // return forward:: entries. + if (_cache_getImp(cls, sel)) { + OBJC_UNLOCK(&cacheUpdateLock); + return NO; // entry is already cached, didn't add new one + } + + // Use the cache as-is if it is less than 3/4 full + newOccupied = cache->occupied + 1; + if ((newOccupied * 4) <= (cache->mask + 1) * 3) { + // Cache is less than 3/4 full. + cache->occupied = newOccupied; + } else { + // Cache is too full. Expand it. + cache = _cache_expand (cls); + + // Account for the addition + cache->occupied += 1; + } + + // Insert the new entry. This can be done by either: + // (a) Scanning for the first unused spot. Easy! + // (b) Opening up an unused spot by sliding existing + // entries down by one. The benefit of this + // extra work is that it puts the most recently + // loaded entries closest to where the selector + // hash starts the search. + // + // The loop is a little more complicated because there + // are two kinds of entries, so there have to be two ways + // to slide them. + buckets = (cache_entry **)cache->buckets; + index = CACHE_HASH(sel, cache->mask); + for (;;) + { + // Slide existing entries down by one + cache_entry *saveEntry; + + // Copy current entry to a local + saveEntry = buckets[index]; + + // Copy previous entry (or new entry) to current slot + buckets[index] = entry; + + // Done if current slot had been invalid + if (saveEntry == NULL) + break; + + // Prepare to copy saved value into next slot + entry = saveEntry; + + // Move on to next slot + index += 1; + index &= cache->mask; + } + + OBJC_UNLOCK(&cacheUpdateLock); + + return YES; // successfully added new cache entry +} + + +/*********************************************************************** +* _cache_addForwardEntry +* Add a forward:: entry for the given selector to cls's method cache. +* Does nothing if the cache addition fails for any reason. +* Called from class_respondsToMethod and _class_lookupMethodAndLoadCache. +* Cache locks: cacheUpdateLock must not be held. +**********************************************************************/ +__private_extern__ void _cache_addForwardEntry(Class cls, SEL sel) +{ + cache_entry *smt; + + smt = _malloc_internal(sizeof(cache_entry)); + smt->name = sel; + smt->imp = &_objc_msgForward; + if (! _cache_fill(cls, (Method)smt, sel)) { // fixme hack + // Entry not added to cache. Don't leak the method struct. + _free_internal(smt); + } +} + + +/*********************************************************************** +* _cache_flush. Invalidate all valid entries in the given class' cache. +* +* Called from flush_caches() and _cache_fill() +* Cache locks: cacheUpdateLock must be held by the caller. +**********************************************************************/ +#if __OBJC2__ +static +#else +__private_extern__ +#endif +void _cache_flush(Class cls) +{ + Cache cache; + unsigned int index; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + // Locate cache. Ignore unused cache. + cache = _class_getCache(cls); + if (_cache_isEmpty(cache)) return; + +#ifdef OBJC_INSTRUMENTED + { + CacheInstrumentation *cacheData; + + // Tally this flush + cacheData = CACHE_INSTRUMENTATION(cache); + cacheData->flushCount += 1; + cacheData->flushedEntries += cache->occupied; + if (cache->occupied > cacheData->maxFlushedEntries) + cacheData->maxFlushedEntries = cache->occupied; + } +#endif + + // Traverse the cache + for (index = 0; index <= cache->mask; index += 1) + { + // Remember what this entry was, so we can possibly + // deallocate it after the bucket has been invalidated + cache_entry *oldEntry = (cache_entry *)cache->buckets[index]; + + // Invalidate this entry + cache->buckets[index] = NULL; + + // Deallocate "forward::" entry + if (oldEntry && oldEntry->imp == &_objc_msgForward) + _cache_collect_free (oldEntry, sizeof(cache_entry), NO); + } + + // Clear the valid-entry counter + cache->occupied = 0; +} + + +/*********************************************************************** +* flush_cache. Flushes the instance method cache for class cls only. +* Use flush_caches() if cls might have in-use subclasses. +**********************************************************************/ +__private_extern__ void flush_cache(Class cls) +{ + if (cls) { + OBJC_LOCK(&cacheUpdateLock); + _cache_flush(cls); + OBJC_UNLOCK(&cacheUpdateLock); + } +} + + +/*********************************************************************** +* cache collection. +**********************************************************************/ + +// A sentinal (magic value) to report bad thread_get_state status +#define PC_SENTINEL 0 + +// UNIX03 compliance hack (4508809) +#if !__DARWIN_UNIX03 +#define __srr0 srr0 +#define __eip eip +#endif + +static uintptr_t _get_pc_for_thread(mach_port_t thread) +#if defined(__i386__) +{ + i386_thread_state_t state; + unsigned int count = i386_THREAD_STATE_COUNT; + kern_return_t okay = thread_get_state (thread, i386_THREAD_STATE, (thread_state_t)&state, &count); + return (okay == KERN_SUCCESS) ? state.__eip : PC_SENTINEL; +} +#elif defined(__ppc__) +{ + ppc_thread_state_t state; + unsigned int count = PPC_THREAD_STATE_COUNT; + kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE, (thread_state_t)&state, &count); + return (okay == KERN_SUCCESS) ? state.__srr0 : PC_SENTINEL; +} +#elif defined(__ppc64__) +{ + ppc_thread_state64_t state; + unsigned int count = PPC_THREAD_STATE64_COUNT; + kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE64, (thread_state_t)&state, &count); + return (okay == KERN_SUCCESS) ? state.__srr0 : PC_SENTINEL; +} +#elif defined(__x86_64__) +{ + x86_thread_state64_t state; + unsigned int count = x86_THREAD_STATE64_COUNT; + kern_return_t okay = thread_get_state (thread, x86_THREAD_STATE64, (thread_state_t)&state, &count); + return (okay == KERN_SUCCESS) ? state.__rip : PC_SENTINEL; +} +#else +{ +#error _get_pc_for_thread () not implemented for this architecture +} +#endif + + +/*********************************************************************** +* _collecting_in_critical. +* Returns TRUE if some thread is currently executing a cache-reading +* function. Collection of cache garbage is not allowed when a cache- +* reading function is in progress because it might still be using +* the garbage memory. +**********************************************************************/ +OBJC_EXPORT uintptr_t objc_entryPoints[]; +OBJC_EXPORT uintptr_t objc_exitPoints[]; + +static int _collecting_in_critical(void) +{ + thread_act_port_array_t threads; + unsigned number; + unsigned count; + kern_return_t ret; + int result; + + mach_port_t mythread = pthread_mach_thread_np(pthread_self()); + + // Get a list of all the threads in the current task + ret = task_threads (mach_task_self (), &threads, &number); + if (ret != KERN_SUCCESS) + { + _objc_fatal("task_thread failed (result %d)\n", ret); + } + + // Check whether any thread is in the cache lookup code + result = FALSE; + for (count = 0; count < number; count++) + { + int region; + uintptr_t pc; + + // Don't bother checking ourselves + if (threads[count] == mythread) + continue; + + // Find out where thread is executing + pc = _get_pc_for_thread (threads[count]); + + // Check for bad status, and if so, assume the worse (can't collect) + if (pc == PC_SENTINEL) + { + result = TRUE; + goto done; + } + + // Check whether it is in the cache lookup code + for (region = 0; objc_entryPoints[region] != 0; region++) + { + if ((pc >= objc_entryPoints[region]) && + (pc <= objc_exitPoints[region])) + { + result = TRUE; + goto done; + } + } + } + + done: + // Deallocate the port rights for the threads + for (count = 0; count < number; count++) { + mach_port_deallocate(mach_task_self (), threads[count]); + } + + // Deallocate the thread list + vm_deallocate (mach_task_self (), (vm_address_t) threads, sizeof(threads) * number); + + // Return our finding + return result; +} + + +/*********************************************************************** +* _garbage_make_room. Ensure that there is enough room for at least +* one more ref in the garbage. +**********************************************************************/ + +// amount of memory represented by all refs in the garbage +static size_t garbage_byte_size = 0; + +// do not empty the garbage until garbage_byte_size gets at least this big +static size_t garbage_threshold = 1024; + +// table of refs to free +static void **garbage_refs = 0; + +// current number of refs in garbage_refs +static size_t garbage_count = 0; + +// capacity of current garbage_refs +static size_t garbage_max = 0; + +// capacity of initial garbage_refs +enum { + INIT_GARBAGE_COUNT = 128 +}; + +static void _garbage_make_room(void) +{ + static int first = 1; + volatile void *tempGarbage; + + // Create the collection table the first time it is needed + if (first) + { + first = 0; + 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 = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *)); + garbage_refs = (void **) tempGarbage; + garbage_max *= 2; + } +} + + +/*********************************************************************** +* _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, size_t size, BOOL tryCollect) +{ + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + // 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 += size; + garbage_refs[garbage_count++] = data; + + // Done if caller says not to clean up + if (!tryCollect) return; + + // Done if the garbage is not full + if (garbage_byte_size < garbage_threshold) { + if (PrintCacheCollection) { + _objc_inform ("CACHE COLLECTION: not collecting; not enough garbage (%zu < %zu)\n", garbage_byte_size, garbage_threshold); + } + return; + } + + // Synchronize garbage collection with objc_msgSend and other cache readers + if (!_collecting_in_critical ()) { + // No cache readers in progress - garbage is now deletable + + // Log our progress + if (PrintCacheCollection) { + _objc_inform ("CACHE COLLECTION: collecting %zu bytes\n", + garbage_byte_size); + } + + // Dispose all refs now in the garbage + while (garbage_count--) { + _cache_free_block(garbage_refs[garbage_count]); + } + + // Clear the garbage count and total size indicator + garbage_count = 0; + garbage_byte_size = 0; + } + else { + // objc_msgSend (or other cache reader) is currently looking in the + // cache and might still be using some garbage. + if (PrintCacheCollection) { + _objc_inform ("CACHE COLLECTION: not collecting; objc_msgSend in progress\n"); + } + } +} + + + + + +#if !defined(__LP64__) + +/*********************************************************************** +* 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. +* +* fixme with 128 KB regions and 520 B min block size, an allocation +* bitmap would be only 32 bytes - better than free list? +* +* fixme not 64-bit clean? +**********************************************************************/ + +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(cache_entry *); +} + +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; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + 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) +{ + OBJC_CHECK_LOCKED(&cacheUpdateLock); + 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; + + OBJC_CHECK_LOCKED(&cacheUpdateLock); + + 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); +} + +// !defined(__LP64__) +#endif + + + + + +/*********************************************************************** +* Cache instrumentation and debugging +**********************************************************************/ + +#ifdef OBJC_INSTRUMENTED +enum { + CACHE_HISTOGRAM_SIZE = 512 +}; + +unsigned int CacheHitHistogram [CACHE_HISTOGRAM_SIZE]; +unsigned int CacheMissHistogram [CACHE_HISTOGRAM_SIZE]; +#endif + + +/*********************************************************************** +* _cache_print. +**********************************************************************/ +static void _cache_print(Cache cache) +{ + unsigned int index; + unsigned int count; + + count = cache->mask + 1; + for (index = 0; index < count; index += 1) { + cache_entry *entry = (cache_entry *)cache->buckets[index]; + if (entry) { + if (entry->imp == &_objc_msgForward) + printf ("does not recognize: \n"); + printf ("%s\n", sel_getName(entry->name)); + } + } +} + + +/*********************************************************************** +* _class_printMethodCaches. +**********************************************************************/ +__private_extern__ void _class_printMethodCaches(Class cls) +{ + if (_cache_isEmpty(_class_getCache(cls))) { + printf("no instance-method cache for class %s\n", _class_getName(cls)); + } else { + printf("instance-method cache for class %s:\n", _class_getName(cls)); + _cache_print(_class_getCache(cls)); + } + + if (_cache_isEmpty(_class_getCache(((id)cls)->isa))) { + printf("no class-method cache for class %s\n", _class_getName(cls)); + } else { + printf ("class-method cache for class %s:\n", _class_getName(cls)); + _cache_print(_class_getCache(((id)cls)->isa)); + } +} + + +#if 0 +#warning fixme +/*********************************************************************** +* log2u. +**********************************************************************/ +static unsigned int log2u(unsigned int x) +{ + unsigned int log; + + log = 0; + while (x >>= 1) + log += 1; + + return log; +} + + +/*********************************************************************** +* _class_printDuplicateCacheEntries. +**********************************************************************/ +void _class_printDuplicateCacheEntries(BOOL detail) +{ + NXHashState state; + Class cls; + unsigned int duplicates; + unsigned int index1; + unsigned int index2; + unsigned int mask; + unsigned int count; + unsigned int isMeta; + Cache cache; + + + printf ("Checking for duplicate cache entries \n"); + + // Outermost loop - iterate over all classes + state = NXInitHashState (class_hash); + duplicates = 0; + while (NXNextHashState (class_hash, &state, (void **) &cls)) + { + // Control loop - do given class' cache, then its isa's cache + for (isMeta = 0; isMeta <= 1; isMeta += 1) + { + // Select cache of interest and make sure it exists + cache = _class_getCache(isMeta ? ((id)cls)->isa : cls); + if (_cache_isEmpty(cache)) + continue; + + // Middle loop - check each entry in the given cache + mask = cache->mask; + count = mask + 1; + for (index1 = 0; index1 < count; index1 += 1) + { + // Skip invalid entry + if (!cache->buckets[index1]) + continue; + + // Inner loop - check that given entry matches no later entry + for (index2 = index1 + 1; index2 < count; index2 += 1) + { + // Skip invalid entry + if (!cache->buckets[index2]) + continue; + + // Check for duplication by method name comparison + if (strcmp ((char *) cache->buckets[index1]->name), + (char *) cache->buckets[index2]->name)) == 0) + { + if (detail) + printf ("%s %s\n", _class_getName(cls), sel_getName(cache->buckets[index1]->name)); + duplicates += 1; + break; + } + } + } + } + } + + // Log the findings + printf ("duplicates = %d\n", duplicates); + printf ("total cache fills = %d\n", totalCacheFills); +} + + +/*********************************************************************** +* PrintCacheHeader. +**********************************************************************/ +static void PrintCacheHeader(void) +{ +#ifdef OBJC_INSTRUMENTED + printf ("Cache Cache Slots Avg Max AvgS MaxS AvgS MaxS TotalD AvgD MaxD TotalD AvgD MaxD TotD AvgD MaxD\n"); + printf ("Size Count Used Used Used Hit Hit Miss Miss Hits Prbs Prbs Misses Prbs Prbs Flsh Flsh Flsh\n"); + printf ("----- ----- ----- ----- ---- ---- ---- ---- ---- ------- ---- ---- ------- ---- ---- ---- ---- ----\n"); +#else + printf ("Cache Cache Slots Avg Max AvgS MaxS AvgS MaxS\n"); + printf ("Size Count Used Used Used Hit Hit Miss Miss\n"); + printf ("----- ----- ----- ----- ---- ---- ---- ---- ----\n"); +#endif +} + + +/*********************************************************************** +* PrintCacheInfo. +**********************************************************************/ +static void PrintCacheInfo(unsigned int cacheSize, + unsigned int cacheCount, + unsigned int slotsUsed, + float avgUsed, unsigned int maxUsed, + float avgSHit, unsigned int maxSHit, + float avgSMiss, unsigned int maxSMiss +#ifdef OBJC_INSTRUMENTED + , unsigned int totDHits, + float avgDHit, + unsigned int maxDHit, + unsigned int totDMisses, + float avgDMiss, + unsigned int maxDMiss, + unsigned int totDFlsh, + float avgDFlsh, + unsigned int maxDFlsh +#endif + ) +{ +#ifdef OBJC_INSTRUMENTED + printf ("%5u %5u %5u %5.1f %4u %4.1f %4u %4.1f %4u %7u %4.1f %4u %7u %4.1f %4u %4u %4.1f %4u\n", +#else + printf ("%5u %5u %5u %5.1f %4u %4.1f %4u %4.1f %4u\n", +#endif + cacheSize, cacheCount, slotsUsed, avgUsed, maxUsed, avgSHit, maxSHit, avgSMiss, maxSMiss +#ifdef OBJC_INSTRUMENTED + , totDHits, avgDHit, maxDHit, totDMisses, avgDMiss, maxDMiss, totDFlsh, avgDFlsh, maxDFlsh +#endif + ); + +} + + +#ifdef OBJC_INSTRUMENTED +/*********************************************************************** +* PrintCacheHistogram. Show the non-zero entries from the specified +* cache histogram. +**********************************************************************/ +static void PrintCacheHistogram(char *title, + unsigned int *firstEntry, + unsigned int entryCount) +{ + unsigned int index; + unsigned int *thisEntry; + + printf ("%s\n", title); + printf (" Probes Tally\n"); + printf (" ------ -----\n"); + for (index = 0, thisEntry = firstEntry; + index < entryCount; + index += 1, thisEntry += 1) + { + if (*thisEntry == 0) + continue; + + printf (" %6d %5d\n", index, *thisEntry); + } +} +#endif + + +/*********************************************************************** +* _class_printMethodCacheStatistics. +**********************************************************************/ + +#define MAX_LOG2_SIZE 32 +#define MAX_CHAIN_SIZE 100 + +void _class_printMethodCacheStatistics(void) +{ + unsigned int isMeta; + unsigned int index; + NXHashState state; + Class cls; + unsigned int totalChain; + unsigned int totalMissChain; + unsigned int maxChain; + unsigned int maxMissChain; + unsigned int classCount; + unsigned int negativeEntryCount; + unsigned int cacheExpandCount; + unsigned int cacheCountBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int totalEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int totalChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int totalMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int totalMaxChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int totalMaxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int chainCount[MAX_CHAIN_SIZE] = {0}; + unsigned int missChainCount[MAX_CHAIN_SIZE] = {0}; +#ifdef OBJC_INSTRUMENTED + unsigned int hitCountBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int hitProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxHitProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int missCountBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int missProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxMissProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int flushCountBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int flushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; + unsigned int maxFlushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; +#endif + + printf ("Printing cache statistics\n"); + + // Outermost loop - iterate over all classes + state = NXInitHashState (class_hash); + classCount = 0; + negativeEntryCount = 0; + cacheExpandCount = 0; + while (NXNextHashState (class_hash, &state, (void **) &cls)) + { + // Tally classes + classCount += 1; + + // Control loop - do given class' cache, then its isa's cache + for (isMeta = 0; isMeta <= 1; isMeta += 1) + { + Cache cache; + unsigned int mask; + unsigned int log2Size; + unsigned int entryCount; + + // Select cache of interest + cache = _class_getCache(isMeta ? ((id)cls)->isa : cls); + + // Ignore empty cache... should we? + if (_cache_isEmpty(cache)) + continue; + + // Middle loop - do each entry in the given cache + mask = cache->mask; + entryCount = 0; + totalChain = 0; + totalMissChain = 0; + maxChain = 0; + maxMissChain = 0; + for (index = 0; index < mask + 1; index += 1) + { + cache_entry **buckets; + cache_entry *entry; + unsigned int hash; + unsigned int methodChain; + unsigned int methodMissChain; + unsigned int index2; + + // If entry is invalid, the only item of + // interest is that future insert hashes + // to this entry can use it directly. + buckets = (cache_entry **)cache->buckets; + if (!buckets[index]) + { + missChainCount[0] += 1; + continue; + } + + entry = buckets[index]; + + // Tally valid entries + entryCount += 1; + + // Tally "forward::" entries + if (entry->imp == &_objc_msgForward) + negativeEntryCount += 1; + + // Calculate search distance (chain length) for this method + // The chain may wrap around to the beginning of the table. + hash = CACHE_HASH(entry->name, mask); + if (index >= hash) methodChain = index - hash; + else methodChain = (mask+1) + index - hash; + + // Tally chains of this length + if (methodChain < MAX_CHAIN_SIZE) + chainCount[methodChain] += 1; + + // Keep sum of all chain lengths + totalChain += methodChain; + + // Record greatest chain length + if (methodChain > maxChain) + maxChain = methodChain; + + // Calculate search distance for miss that hashes here + index2 = index; + while (buckets[index2]) + { + index2 += 1; + index2 &= mask; + } + methodMissChain = ((index2 - index) & mask); + + // Tally miss chains of this length + if (methodMissChain < MAX_CHAIN_SIZE) + missChainCount[methodMissChain] += 1; + + // Keep sum of all miss chain lengths in this class + totalMissChain += methodMissChain; + + // Record greatest miss chain length + if (methodMissChain > maxMissChain) + maxMissChain = methodMissChain; + } + + // Factor this cache into statistics about caches of the same + // type and size (all caches are a power of two in size) + log2Size = log2u (mask + 1); + cacheCountBySize[isMeta][log2Size] += 1; + totalEntriesBySize[isMeta][log2Size] += entryCount; + if (entryCount > maxEntriesBySize[isMeta][log2Size]) + maxEntriesBySize[isMeta][log2Size] = entryCount; + totalChainBySize[isMeta][log2Size] += totalChain; + totalMissChainBySize[isMeta][log2Size] += totalMissChain; + totalMaxChainBySize[isMeta][log2Size] += maxChain; + totalMaxMissChainBySize[isMeta][log2Size] += maxMissChain; + if (maxChain > maxChainBySize[isMeta][log2Size]) + maxChainBySize[isMeta][log2Size] = maxChain; + if (maxMissChain > maxMissChainBySize[isMeta][log2Size]) + maxMissChainBySize[isMeta][log2Size] = maxMissChain; +#ifdef OBJC_INSTRUMENTED + { + CacheInstrumentation *cacheData; + + cacheData = CACHE_INSTRUMENTATION(cache); + hitCountBySize[isMeta][log2Size] += cacheData->hitCount; + hitProbesBySize[isMeta][log2Size] += cacheData->hitProbes; + if (cacheData->maxHitProbes > maxHitProbesBySize[isMeta][log2Size]) + maxHitProbesBySize[isMeta][log2Size] = cacheData->maxHitProbes; + missCountBySize[isMeta][log2Size] += cacheData->missCount; + missProbesBySize[isMeta][log2Size] += cacheData->missProbes; + if (cacheData->maxMissProbes > maxMissProbesBySize[isMeta][log2Size]) + maxMissProbesBySize[isMeta][log2Size] = cacheData->maxMissProbes; + flushCountBySize[isMeta][log2Size] += cacheData->flushCount; + flushedEntriesBySize[isMeta][log2Size] += cacheData->flushedEntries; + if (cacheData->maxFlushedEntries > maxFlushedEntriesBySize[isMeta][log2Size]) + maxFlushedEntriesBySize[isMeta][log2Size] = cacheData->maxFlushedEntries; + } +#endif + // Caches start with a power of two number of entries, and grow by doubling, so + // we can calculate the number of times this cache has expanded + cacheExpandCount += log2Size - INIT_CACHE_SIZE_LOG2; + } + } + + { + unsigned int cacheCountByType[2] = {0}; + unsigned int totalCacheCount = 0; + unsigned int totalEntries = 0; + unsigned int maxEntries = 0; + unsigned int totalSlots = 0; +#ifdef OBJC_INSTRUMENTED + unsigned int totalHitCount = 0; + unsigned int totalHitProbes = 0; + unsigned int maxHitProbes = 0; + unsigned int totalMissCount = 0; + unsigned int totalMissProbes = 0; + unsigned int maxMissProbes = 0; + unsigned int totalFlushCount = 0; + unsigned int totalFlushedEntries = 0; + unsigned int maxFlushedEntries = 0; +#endif + + totalChain = 0; + maxChain = 0; + totalMissChain = 0; + maxMissChain = 0; + + // Sum information over all caches + for (isMeta = 0; isMeta <= 1; isMeta += 1) + { + for (index = 0; index < MAX_LOG2_SIZE; index += 1) + { + cacheCountByType[isMeta] += cacheCountBySize[isMeta][index]; + totalEntries += totalEntriesBySize[isMeta][index]; + totalSlots += cacheCountBySize[isMeta][index] * (1 << index); + totalChain += totalChainBySize[isMeta][index]; + if (maxEntriesBySize[isMeta][index] > maxEntries) + maxEntries = maxEntriesBySize[isMeta][index]; + if (maxChainBySize[isMeta][index] > maxChain) + maxChain = maxChainBySize[isMeta][index]; + totalMissChain += totalMissChainBySize[isMeta][index]; + if (maxMissChainBySize[isMeta][index] > maxMissChain) + maxMissChain = maxMissChainBySize[isMeta][index]; +#ifdef OBJC_INSTRUMENTED + totalHitCount += hitCountBySize[isMeta][index]; + totalHitProbes += hitProbesBySize[isMeta][index]; + if (maxHitProbesBySize[isMeta][index] > maxHitProbes) + maxHitProbes = maxHitProbesBySize[isMeta][index]; + totalMissCount += missCountBySize[isMeta][index]; + totalMissProbes += missProbesBySize[isMeta][index]; + if (maxMissProbesBySize[isMeta][index] > maxMissProbes) + maxMissProbes = maxMissProbesBySize[isMeta][index]; + totalFlushCount += flushCountBySize[isMeta][index]; + totalFlushedEntries += flushedEntriesBySize[isMeta][index]; + if (maxFlushedEntriesBySize[isMeta][index] > maxFlushedEntries) + maxFlushedEntries = maxFlushedEntriesBySize[isMeta][index]; +#endif + } + + totalCacheCount += cacheCountByType[isMeta]; + } + + // Log our findings + printf ("There are %u classes\n", classCount); + + for (isMeta = 0; isMeta <= 1; isMeta += 1) + { + // Number of this type of class + printf ("\nThere are %u %s-method caches, broken down by size (slot count):\n", + cacheCountByType[isMeta], + isMeta ? "class" : "instance"); + + // Print header + PrintCacheHeader (); + + // Keep format consistent even if there are caches of this kind + if (cacheCountByType[isMeta] == 0) + { + printf ("(none)\n"); + continue; + } + + // Usage information by cache size + for (index = 0; index < MAX_LOG2_SIZE; index += 1) + { + unsigned int cacheCount; + unsigned int cacheSlotCount; + unsigned int cacheEntryCount; + + // Get number of caches of this type and size + cacheCount = cacheCountBySize[isMeta][index]; + if (cacheCount == 0) + continue; + + // Get the cache slot count and the total number of valid entries + cacheSlotCount = (1 << index); + cacheEntryCount = totalEntriesBySize[isMeta][index]; + + // Give the analysis + PrintCacheInfo (cacheSlotCount, + cacheCount, + cacheEntryCount, + (float) cacheEntryCount / (float) cacheCount, + maxEntriesBySize[isMeta][index], + (float) totalChainBySize[isMeta][index] / (float) cacheEntryCount, + maxChainBySize[isMeta][index], + (float) totalMissChainBySize[isMeta][index] / (float) (cacheCount * cacheSlotCount), + maxMissChainBySize[isMeta][index] +#ifdef OBJC_INSTRUMENTED + , hitCountBySize[isMeta][index], + hitCountBySize[isMeta][index] ? + (float) hitProbesBySize[isMeta][index] / (float) hitCountBySize[isMeta][index] : 0.0, + maxHitProbesBySize[isMeta][index], + missCountBySize[isMeta][index], + missCountBySize[isMeta][index] ? + (float) missProbesBySize[isMeta][index] / (float) missCountBySize[isMeta][index] : 0.0, + maxMissProbesBySize[isMeta][index], + flushCountBySize[isMeta][index], + flushCountBySize[isMeta][index] ? + (float) flushedEntriesBySize[isMeta][index] / (float) flushCountBySize[isMeta][index] : 0.0, + maxFlushedEntriesBySize[isMeta][index] +#endif + ); + } + } + + // Give overall numbers + printf ("\nCumulative:\n"); + PrintCacheHeader (); + PrintCacheInfo (totalSlots, + totalCacheCount, + totalEntries, + (float) totalEntries / (float) totalCacheCount, + maxEntries, + (float) totalChain / (float) totalEntries, + maxChain, + (float) totalMissChain / (float) totalSlots, + maxMissChain +#ifdef OBJC_INSTRUMENTED + , totalHitCount, + totalHitCount ? + (float) totalHitProbes / (float) totalHitCount : 0.0, + maxHitProbes, + totalMissCount, + totalMissCount ? + (float) totalMissProbes / (float) totalMissCount : 0.0, + maxMissProbes, + totalFlushCount, + totalFlushCount ? + (float) totalFlushedEntries / (float) totalFlushCount : 0.0, + maxFlushedEntries +#endif + ); + + printf ("\nNumber of \"forward::\" entries: %d\n", negativeEntryCount); + printf ("Number of cache expansions: %d\n", cacheExpandCount); +#ifdef OBJC_INSTRUMENTED + printf ("flush_caches: total calls total visits average visits max visits total classes visits/class\n"); + printf (" ----------- ------------ -------------- ---------- ------------- -------------\n"); + printf (" linear %11u %12u %14.1f %10u %13u %12.2f\n", + LinearFlushCachesCount, + LinearFlushCachesVisitedCount, + LinearFlushCachesCount ? + (float) LinearFlushCachesVisitedCount / (float) LinearFlushCachesCount : 0.0, + MaxLinearFlushCachesVisitedCount, + LinearFlushCachesVisitedCount, + 1.0); + printf (" nonlinear %11u %12u %14.1f %10u %13u %12.2f\n", + NonlinearFlushCachesCount, + NonlinearFlushCachesVisitedCount, + NonlinearFlushCachesCount ? + (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesCount : 0.0, + MaxNonlinearFlushCachesVisitedCount, + NonlinearFlushCachesClassCount, + NonlinearFlushCachesClassCount ? + (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesClassCount : 0.0); + printf (" ideal %11u %12u %14.1f %10u %13u %12.2f\n", + LinearFlushCachesCount + NonlinearFlushCachesCount, + IdealFlushCachesCount, + LinearFlushCachesCount + NonlinearFlushCachesCount ? + (float) IdealFlushCachesCount / (float) (LinearFlushCachesCount + NonlinearFlushCachesCount) : 0.0, + MaxIdealFlushCachesCount, + LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount, + LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount ? + (float) IdealFlushCachesCount / (float) (LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount) : 0.0); + + PrintCacheHistogram ("\nCache hit histogram:", &CacheHitHistogram[0], CACHE_HISTOGRAM_SIZE); + PrintCacheHistogram ("\nCache miss histogram:", &CacheMissHistogram[0], CACHE_HISTOGRAM_SIZE); +#endif + +#if 0 + printf ("\nLookup chains:"); + for (index = 0; index < MAX_CHAIN_SIZE; index += 1) + { + if (chainCount[index] != 0) + printf (" %u:%u", index, chainCount[index]); + } + + printf ("\nMiss chains:"); + for (index = 0; index < MAX_CHAIN_SIZE; index += 1) + { + if (missChainCount[index] != 0) + printf (" %u:%u", index, missChainCount[index]); + } + + printf ("\nTotal memory usage for cache data structures: %lu bytes\n", + totalCacheCount * (sizeof(struct objc_cache) - sizeof(cache_entry *)) + + totalSlots * sizeof(cache_entry *) + + negativeEntryCount * sizeof(cache_entry)); +#endif + } +} + +#endif diff --git a/runtime/objc-class-old.m b/runtime/objc-class-old.m new file mode 100644 index 0000000..d9e1b00 --- /dev/null +++ b/runtime/objc-class-old.m @@ -0,0 +1,2211 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-class-old.m +* Support for old-ABI classes, methods, and categories. +**********************************************************************/ + +#if !__OBJC2__ + +#define OLD 1 +#import "objc-private.h" +#import "objc-rtp.h" +#import "hashtable2.h" +#import "maptable.h" + +#include +#include + +// 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. +__private_extern__ OBJC_DECLARE_LOCK(methodListLock); + + +// Freed objects have their isa set to point to this dummy class. +// This avoids the need to check for Nil classes in the messenger. +static const struct old_class freedObjectClass = +{ + Nil, // isa + Nil, // super_class + "FREED(id)", // name + 0, // version + 0, // info + 0, // instance_size + NULL, // ivars + NULL, // methodLists + (Cache) &_objc_empty_cache, // cache + NULL // protocols +}; + +static const struct old_class nonexistentObjectClass = +{ + Nil, // isa + Nil, // super_class + "NONEXISTENT(id)", // name + 0, // version + 0, // info + 0, // instance_size + NULL, // ivars + NULL, // methodLists + (Cache) &_objc_empty_cache, // cache + NULL // protocols +}; + + +/*********************************************************************** +* _class_getFreedObjectClass. Return a pointer to the dummy freed +* object class. Freed objects get their isa pointers replaced with +* a pointer to the freedObjectClass, so that we can catch usages of +* the freed object. +**********************************************************************/ +__private_extern__ Class _class_getFreedObjectClass(void) +{ + return (Class)&freedObjectClass; +} + + +/*********************************************************************** +* _class_getNonexistentClass. Return a pointer to the dummy nonexistent +* object class. This is used when, for example, mapping the class +* refs for an image, and the class can not be found, so that we can +* catch later uses of the non-existent class. +**********************************************************************/ +__private_extern__ Class _class_getNonexistentObjectClass(void) +{ + return (Class)&nonexistentObjectClass; +} + + +/*********************************************************************** +* _objc_getFreedObjectClass. Return a pointer to the dummy freed +* object class. Freed objects get their isa pointers replaced with +* a pointer to the freedObjectClass, so that we can catch usages of +* the freed object. +**********************************************************************/ +Class _objc_getFreedObjectClass(void) +{ + return _class_getFreedObjectClass(); +} + + +static void allocateExt(struct old_class *cls) +{ + if (! (cls->info & CLS_EXT)) { + _objc_inform("class '%s' needs to be recompiled", cls->name); + return; + } + if (!cls->ext) { + uint32_t size = (uint32_t)sizeof(struct old_class_ext); + cls->ext = _calloc_internal(size, 1); + cls->ext->size = size; + } +} + + +static inline struct old_method *_findNamedMethodInList(struct old_method_list * mlist, const char *meth_name) { + int i; + if (!mlist) return NULL; + for (i = 0; i < mlist->method_count; i++) { + struct old_method *m = &mlist->method_list[i]; + if (*((const char *)m->method_name) == *meth_name && 0 == strcmp((const char *)(m->method_name), meth_name)) { + return m; + } + } + return NULL; +} + + +/*********************************************************************** +* fixupSelectorsInMethodList +* Uniques selectors in the given method list. +* Also replaces imps for GC-ignored selectors +* 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. +**********************************************************************/ +static struct old_method_list *fixupSelectorsInMethodList(struct old_class *cls, struct old_method_list *mlist) +{ + int i; + size_t size; + struct old_method *method; + struct old_method_list *old_mlist; + + if ( ! mlist ) return NULL; + if ( mlist->obsolete != _OBJC_FIXED_UP ) { + BOOL isBundle = (cls->info & CLS_FROM_BUNDLE) ? YES : NO; + if (!isBundle) { + old_mlist = mlist; + size = sizeof(struct old_method_list) - sizeof(struct old_method) + old_mlist->method_count * sizeof(struct old_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. + + if (method->method_name == (SEL)kRTAddress_ignoredSelector) { + method->method_imp = (IMP)&_objc_ignored_method; + } + } + 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 old_method_list *mlist; +* OBJC_LOCK(&methodListLock); +* while ((mlist = nextMethodList(cls, &iterator))) { +* // do something with mlist +* } +* OBJC_UNLOCK(&methodListLock); +**********************************************************************/ +static struct old_method_list *nextMethodList(struct old_class *cls, + void **it) +{ + uintptr_t index = *(uintptr_t *)it; + struct old_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 old_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 struct old_method *_findMethodInList(struct old_method_list * mlist, SEL sel) { + int i; + if (!mlist) return NULL; + for (i = 0; i < mlist->method_count; i++) { + struct old_method *m = &mlist->method_list[i]; + if (m->method_name == sel) { + return m; + } + } + return NULL; +} + +static inline struct old_method * _findMethodInClass(struct old_class *cls, SEL sel) __attribute__((always_inline)); +static inline struct old_method * _findMethodInClass(struct old_class *cls, SEL sel) { + // 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))) { + // struct old_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 old_method_list **mlistp; + mlistp = (struct old_method_list **)&cls->methodLists; + if ((*mlistp)->obsolete != _OBJC_FIXED_UP) { + *mlistp = fixupSelectorsInMethodList(cls, *mlistp); + } + return _findMethodInList(*mlistp, sel); + } + else { + // Multiple method lists. + struct old_method_list **mlistp; + for (mlistp = cls->methodLists; + *mlistp != NULL && *mlistp != END_OF_METHODS_LIST; + mlistp++) + { + struct old_method *m; + if ((*mlistp)->obsolete != _OBJC_FIXED_UP) { + *mlistp = fixupSelectorsInMethodList(cls, *mlistp); + } + m = _findMethodInList(*mlistp, sel); + if (m) return m; + } + return NULL; + } +} + +static inline struct old_method * _getMethod(struct old_class *cls, SEL sel) { + for (; cls; cls = cls->super_class) { + struct old_method *m; + m = _findMethodInClass(cls, sel); + if (m) return m; + } + return NULL; +} + + +// fixme for gc debugging temporary use +__private_extern__ IMP findIMPInClass(struct old_class *cls, SEL sel) +{ + struct old_method *m = _findMethodInClass(cls, sel); + if (m) return m->method_imp; + else return NULL; +} + + + +/*********************************************************************** +* class_getVariable. Return the named instance variable. +**********************************************************************/ +__private_extern__ +Ivar _class_getVariable(Class cls_gen, const char *name) +{ + struct old_class *cls = _class_asOld(cls_gen); + + for (; cls != Nil; cls = cls->super_class) { + int i; + + // Skip class having no ivars + if (!cls->ivars) continue; + + for (i = 0; i < cls->ivars->ivar_count; i++) { + // Check this ivar's name. Be careful because the + // compiler generates ivar entries with NULL ivar_name + // (e.g. for anonymous bit fields). + struct old_ivar *ivar = &cls->ivars->ivar_list[i]; + if (ivar->ivar_name && 0 == strcmp(name, ivar->ivar_name)) { + return (Ivar)ivar; + } + } + } + + // Not found + return NULL; +} + + +/*********************************************************************** +* class_getPropertyList. Return the class's property list +* Locking: classLock must be held by the caller +**********************************************************************/ +static struct objc_property_list * +nextPropertyList(struct old_class *cls, uintptr_t *indexp) +{ + struct objc_property_list *result = NULL; + + OBJC_CHECK_LOCKED(&classLock); + if (! ((cls->info & CLS_EXT) && cls->ext)) { + // No class ext + result = NULL; + } else if (!cls->ext->propertyLists) { + // No property lists + result = NULL; + } else if (cls->info & CLS_NO_PROPERTY_ARRAY) { + // Only one property list + if (*indexp == 0) { + result = (struct objc_property_list *)cls->ext->propertyLists; + } else { + result = NULL; + } + } else { + // More than one property list + result = cls->ext->propertyLists[*indexp]; + } + + if (result) { + ++*indexp; + return result; + } else { + *indexp = 0; + return NULL; + } +} + + +/*********************************************************************** +* class_getIvarLayout +* NULL means all-scanned. "" means non-scanned. +**********************************************************************/ +const char * +class_getIvarLayout(Class cls_gen) +{ + struct old_class *cls = _class_asOld(cls_gen); + if (cls && (cls->info & CLS_EXT)) { + return cls->ivar_layout; + } else { + return NULL; // conservative scan + } +} + + +/*********************************************************************** +* class_getWeakIvarLayout +* NULL means no weak ivars. +**********************************************************************/ +const char * +class_getWeakIvarLayout(Class cls_gen) +{ + struct old_class *cls = _class_asOld(cls_gen); + if (cls && (cls->info & CLS_EXT) && cls->ext) { + return cls->ext->weak_ivar_layout; + } else { + return NULL; // no weak ivars + } +} + + +/*********************************************************************** +* class_setIvarLayout +* NULL means all-scanned. "" means non-scanned. +**********************************************************************/ +void class_setIvarLayout(Class cls_gen, const char *layout) +{ + struct old_class *cls = _class_asOld(cls_gen); + if (!cls) return; + + if (! (cls->info & CLS_EXT)) { + _objc_inform("class '%s' needs to be recompiled", cls->name); + return; + } + + // fixme leak + cls->ivar_layout = layout ? _strdup_internal(layout) : NULL; +} + + +/*********************************************************************** +* class_setWeakIvarLayout +* NULL means no weak ivars. +**********************************************************************/ +void class_setWeakIvarLayout(Class cls_gen, const char *layout) +{ + struct old_class *cls = _class_asOld(cls_gen); + if (!cls) return; + + OBJC_LOCK(&classLock); + + allocateExt(cls); + + // fixme leak + cls->ext->weak_ivar_layout = layout ? _strdup_internal(layout) : NULL; + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* _class_changeInfo +* Atomically sets and clears some bits in cls's info field. +* set and clear must not overlap. +**********************************************************************/ +__private_extern__ void _class_changeInfo(Class cls, long set, long clear) +{ + struct old_class *old = _class_asOld(cls); + long newinfo; + long oldinfo; + do { + oldinfo = old->info; + newinfo = (oldinfo | set) & ~clear; + } while (! OSAtomicCompareAndSwapLong(oldinfo, newinfo, &old->info)); +} + + +/*********************************************************************** +* _class_getInfo +* Returns YES iff all set bits in get are also set in cls's info field. +**********************************************************************/ +__private_extern__ BOOL _class_getInfo(Class cls, int get) +{ + struct old_class *old = _class_asOld(cls); + return ((old->info & get) == get) ? YES : NO; +} + + +/*********************************************************************** +* _class_setInfo +* Atomically sets some bits in cls's info field. +**********************************************************************/ +__private_extern__ void _class_setInfo(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(Class cls, long clear) +{ + _class_changeInfo(cls, 0, clear); +} + + +/*********************************************************************** +* isInitializing +* Return YES if cls is currently being initialized. +* The initializing bit is stored in the metaclass only. +**********************************************************************/ +__private_extern__ BOOL _class_isInitializing(Class cls) +{ + return _class_getInfo(_class_getMeta(cls), CLS_INITIALIZING); +} + + +/*********************************************************************** +* isInitialized +* Return YES if cls is already initialized. +* The initialized bit is stored in the metaclass only. +**********************************************************************/ +__private_extern__ BOOL _class_isInitialized(Class cls) +{ + return _class_getInfo(_class_getMeta(cls), CLS_INITIALIZED); +} + + +/*********************************************************************** +* setInitializing +* Mark cls as initialization in progress. +**********************************************************************/ +__private_extern__ void _class_setInitializing(Class cls) +{ + _class_setInfo(_class_getMeta(cls), CLS_INITIALIZING); +} + + +/*********************************************************************** +* setInitialized +* Atomically mark cls as initialized and not initializing. +**********************************************************************/ +__private_extern__ void _class_setInitialized(Class cls) +{ + _class_changeInfo(_class_getMeta(cls), CLS_INITIALIZED, CLS_INITIALIZING); +} + + +/*********************************************************************** +* class_setVersion. Record the specified version with the class. +**********************************************************************/ +void class_setVersion(Class cls, int version) +{ + if (!cls) return; + cls->version = version; +} + +/*********************************************************************** +* class_getVersion. Return the version recorded with the class. +**********************************************************************/ +int class_getVersion(Class cls) +{ + if (!cls) return 0; + return (int)cls->version; +} + + +__private_extern__ Class _class_getMeta(Class cls) +{ + if (_class_getInfo(cls, CLS_META)) return cls; + else return ((id)cls)->isa; +} + +__private_extern__ BOOL _class_isMetaClass(Class cls) +{ + if (!cls) return NO; + return _class_getInfo(cls, CLS_META); +} + + +/*********************************************************************** +* _class_getNonMetaClass. +* Return the ordinary class for this class or metaclass. +* Used by +initialize. +**********************************************************************/ +__private_extern__ Class _class_getNonMetaClass(Class cls) +{ + // fixme ick + if (_class_isMetaClass(cls)) { + if (strncmp(_class_getName(cls), "_%", 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(_class_getName(cls), '%'); // get posee's real name + cls = objc_getClass(baseName); + } else { + cls = objc_getClass(_class_getName(cls)); + } + assert(cls); + } + + return cls; +} + + +__private_extern__ Class _class_getSuperclass(Class cls) +{ + if (!cls) return nil; + return (Class)cls->super_class; +} + + +__private_extern__ Cache _class_getCache(Class cls) +{ + return cls->cache; +} + +__private_extern__ void _class_setCache(Class cls, Cache cache) +{ + cls->cache = cache; +} + +__private_extern__ size_t _class_getInstanceSize(Class cls) +{ + if (!cls) return 0; + return cls->instance_size; +} + +__private_extern__ const char * _class_getName(Class cls) +{ + if (!cls) return "nil"; + return cls->name; +} + + + +__private_extern__ const char *_category_getName(Category cat) +{ + return _category_asOld(cat)->category_name; +} + +__private_extern__ const char *_category_getClassName(Category cat) +{ + return _category_asOld(cat)->class_name; +} + +__private_extern__ Class _category_getClass(Category cat) +{ + return objc_getClass(_category_asOld(cat)->class_name); +} + +__private_extern__ IMP _category_getLoadMethod(Category cat) +{ + struct old_method_list *mlist = _category_asOld(cat)->class_methods; + if (mlist) { + return lookupNamedMethodInMethodList(mlist, "load"); + } else { + return NULL; + } +} + + + +/*********************************************************************** +* class_nextMethodList. +* External version of nextMethodList(). +* +* 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) +{ + struct old_method_list *result; + + OBJC_WARN_DEPRECATED; + + OBJC_LOCK(&methodListLock); + result = nextMethodList(_class_asOld(cls), it); + OBJC_UNLOCK(&methodListLock); + return (struct objc_method_list *)result; +} + + +/*********************************************************************** +* class_addMethods. +* +* Formerly class_addInstanceMethods () +**********************************************************************/ +OBJC_EXPORT void class_addMethods(Class cls, struct objc_method_list *meths) +{ + OBJC_WARN_DEPRECATED; + + // Add the methods. + OBJC_LOCK(&methodListLock); + _objc_insertMethods(_class_asOld(cls), (struct old_method_list *)meths, NULL); + 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, + // this will still flush it and any of its sub-meta classes. + flush_caches (cls, NO); +} + + +/*********************************************************************** +* class_removeMethods. +**********************************************************************/ +OBJC_EXPORT void class_removeMethods(Class cls, struct objc_method_list *meths) +{ + OBJC_WARN_DEPRECATED; + + // Remove the methods + OBJC_LOCK(&methodListLock); + _objc_removeMethods(_class_asOld(cls), (struct old_method_list *)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, + // this will still flush it and any of its sub-meta classes. + flush_caches (cls, NO); +} + +/*********************************************************************** +* 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. +**********************************************************************/ +__private_extern__ IMP lookupNamedMethodInMethodList(struct old_method_list *mlist, const char *meth_name) +{ + struct old_method *m; + m = meth_name ? _findNamedMethodInList(mlist, meth_name) : NULL; + return (m ? m->method_imp : NULL); +} + +__private_extern__ Method _class_getMethod(Class cls, SEL sel) +{ + Method result; + + OBJC_LOCK(&methodListLock); + result = (Method)_getMethod(_class_asOld(cls), sel); + OBJC_UNLOCK(&methodListLock); + + return result; +} + +__private_extern__ Method _class_getMethodNoSuper(Class cls, SEL sel) +{ + Method result; + + OBJC_LOCK(&methodListLock); + result = (Method)_findMethodInClass(_class_asOld(cls), sel); + OBJC_UNLOCK(&methodListLock); + + return result; +} + + +BOOL class_conformsToProtocol(Class cls_gen, Protocol *proto_gen) +{ + struct old_class *cls = oldcls(cls_gen); + struct old_protocol *proto = oldprotocol(proto_gen); + + if (cls->isa->version >= 3) { + struct old_protocol_list *list; + for (list = cls->protocols; list != NULL; list = list->next) { + int i; + for (i = 0; i < list->count; i++) { + if (list->list[i] == proto) return YES; + if (protocol_conformsToProtocol((Protocol *)list->list[i], proto_gen)) return YES; + } + if (cls->isa->version <= 4) break; + } + } + return NO; +} + + +static NXMapTable * posed_class_hash = NULL; + +/*********************************************************************** +* objc_getOrigClass. +**********************************************************************/ +__private_extern__ Class _objc_getOrigClass(const char *name) +{ + Class ret; + + // Look for class among the posers + ret = Nil; + OBJC_LOCK(&classLock); + if (posed_class_hash) + ret = (Class) NXMapGet (posed_class_hash, name); + OBJC_UNLOCK(&classLock); + if (ret) + return ret; + + // Not a poser. Do a normal lookup. + ret = objc_getClass (name); + if (!ret) + _objc_inform ("class `%s' not linked into application", name); + + return ret; +} + +Class objc_getOrigClass(const char *name) +{ + OBJC_WARN_DEPRECATED; + return _objc_getOrigClass(name); +} + +/*********************************************************************** +* _objc_addOrigClass. This function is only used from class_poseAs. +* Registers the original class names, before they get obscured by +* posing, so that [super ..] will work correctly from categories +* in posing classes and in categories in classes being posed for. +**********************************************************************/ +static void _objc_addOrigClass (struct old_class *origClass) +{ + OBJC_LOCK(&classLock); + + // Create the poser's hash table on first use + if (!posed_class_hash) + { + posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype, + 8, + _objc_internal_zone ()); + } + + // Add the named class iff it is not already there (or collides?) + if (NXMapGet (posed_class_hash, origClass->name) == 0) + NXMapInsert (posed_class_hash, origClass->name, origClass); + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* change_class_references +* Change classrefs and superclass pointers from original to imposter +* But if copy!=nil, don't change copy->super_class. +* If changeSuperRefs==YES, also change [super message] classrefs. +* Used by class_poseAs and objc_setFutureClass +* classLock must be locked. +**********************************************************************/ +__private_extern__ +void change_class_references(struct old_class *imposter, + struct old_class *original, + struct old_class *copy, + BOOL changeSuperRefs) +{ + header_info *hInfo; + struct old_class *clsObject; + NXHashState state; + + // Change all subclasses of the original to point to the imposter. + state = NXInitHashState (class_hash); + while (NXNextHashState (class_hash, &state, (void **) &clsObject)) + { + while ((clsObject) && (clsObject != imposter) && + (clsObject != copy)) + { + if (clsObject->super_class == original) + { + clsObject->super_class = imposter; + clsObject->isa->super_class = imposter->isa; + // We must flush caches here! + break; + } + + clsObject = clsObject->super_class; + } + } + + // Replace the original with the imposter in all class refs + // Major loop - process all headers + for (hInfo = _objc_headerStart(); hInfo != NULL; hInfo = hInfo->next) + { + struct old_class **cls_refs; + size_t refCount; + unsigned int index; + + // Fix class refs associated with this header + cls_refs = _getObjcClassRefs(hInfo, &refCount); + if (cls_refs) { + for (index = 0; index < refCount; index += 1) { + if (cls_refs[index] == original) { + cls_refs[index] = imposter; + } + } + } + } +} + + +/*********************************************************************** +* class_poseAs. +* +* !!! class_poseAs () does not currently flush any caches. +**********************************************************************/ +Class class_poseAs(Class imposter_gen, Class original_gen) +{ + struct old_class *imposter = _class_asOld(imposter_gen); + struct old_class *original = _class_asOld(original_gen); + char * imposterNamePtr; + struct old_class * copy; + + OBJC_WARN_DEPRECATED; + + // Trivial case is easy + if (imposter_gen == original_gen) + return imposter_gen; + + // Imposter must be an immediate subclass of the original + if (imposter->super_class != original) { + __objc_error(imposter_gen, + "[%s poseAs:%s]: target not immediate superclass", + imposter->name, original->name); + } + + // Can't pose when you have instance variables (how could it work?) + if (imposter->ivars) { + __objc_error(imposter_gen, + "[%s poseAs:%s]: %s defines new instance variables", + imposter->name, original->name, imposter->name); + } + + // Build a string to use to replace the name of the original class. + #define imposterNamePrefix "_%" + imposterNamePtr = _malloc_internal(strlen(original->name) + strlen(imposterNamePrefix) + 1); + strcpy(imposterNamePtr, imposterNamePrefix); + strcat(imposterNamePtr, original->name); + #undef imposterNamePrefix + + // We lock the class hashtable, so we are thread safe with respect to + // calls to objc_getClass (). However, the class names are not + // changed atomically, nor are all of the subclasses updated + // atomically. I have ordered the operations so that you will + // never crash, but you may get inconsistent results.... + + // Register the original class so that [super ..] knows + // exactly which classes are the "original" classes. + _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 = _class_asOld((*_zoneAlloc)((Class)imposter->isa, sizeof(struct old_class), _objc_internal_zone())); + memmove(copy, imposter, sizeof(struct old_class)); + + OBJC_LOCK(&classLock); + + // Remove both the imposter and the original class. + NXHashRemove (class_hash, imposter); + NXHashRemove (class_hash, original); + + NXHashInsert (class_hash, copy); + + // Mark the imposter as such + _class_setInfo((Class)imposter, CLS_POSING); + _class_setInfo((Class)imposter->isa, CLS_POSING); + + // Change the name of the imposter to that of the original class. + imposter->name = original->name; + imposter->isa->name = original->isa->name; + + // Also copy the version field to avoid archiving problems. + imposter->version = original->version; + + // Change classrefs and superclass pointers + // Don't change copy->super_class + // Don't change [super ...] messages + change_class_references(imposter, original, copy, NO); + + // Change the name of the original class. + original->name = imposterNamePtr + 1; + original->isa->name = imposterNamePtr; + + // Restore the imposter and the original class with their new names. + NXHashInsert (class_hash, imposter); + NXHashInsert (class_hash, original); + + OBJC_UNLOCK(&classLock); + + return imposter_gen; +} + + +/*********************************************************************** +* flush_caches. Flush the instance and optionally class method caches +* of cls and all its subclasses. +* +* Specifying Nil for the class "all classes." +**********************************************************************/ +__private_extern__ void flush_caches(Class target_gen, BOOL flush_meta) +{ + NXHashState state; + struct old_class *target = _class_asOld(target_gen); + struct old_class *clsObject; +#ifdef OBJC_INSTRUMENTED + unsigned int classesVisited; + unsigned int subclassCount; +#endif + + OBJC_LOCK(&classLock); + OBJC_LOCK(&cacheUpdateLock); + + // Leaf classes are fastest because there are no subclass caches to flush. + // fixme instrument + if (target && (target->info & CLS_LEAF)) { + _cache_flush ((Class)target); + + if (!flush_meta) { + OBJC_UNLOCK(&cacheUpdateLock); + OBJC_UNLOCK(&classLock); + return; // done + } else if (target->isa && (target->isa->info & CLS_LEAF)) { + _cache_flush ((Class)target->isa); + OBJC_UNLOCK(&cacheUpdateLock); + OBJC_UNLOCK(&classLock); + return; // done + } else { + // Reset target and handle it by one of the methods below. + target = target->isa; + flush_meta = NO; + // NOT done + } + } + + state = NXInitHashState(class_hash); + + // Handle nil and root instance class specially: flush all + // instance and class method caches. Nice that this + // loop is linear vs the N-squared loop just below. + if (!target || !target->super_class) + { +#ifdef OBJC_INSTRUMENTED + LinearFlushCachesCount += 1; + classesVisited = 0; + subclassCount = 0; +#endif + // Traverse all classes in the hash table + while (NXNextHashState(class_hash, &state, (void**)&clsObject)) + { + struct old_class *metaClsObject; +#ifdef OBJC_INSTRUMENTED + classesVisited += 1; +#endif + + // Skip class that is known not to be a subclass of this root + // (the isa pointer of any meta class points to the meta class + // of the root). + // NOTE: When is an isa pointer of a hash tabled class ever nil? + metaClsObject = clsObject->isa; + if (target && metaClsObject && target->isa != metaClsObject->isa) { + continue; + } + +#ifdef OBJC_INSTRUMENTED + subclassCount += 1; +#endif + + _cache_flush ((Class)clsObject); + if (flush_meta && metaClsObject != NULL) { + _cache_flush ((Class)metaClsObject); + } + } +#ifdef OBJC_INSTRUMENTED + LinearFlushCachesVisitedCount += classesVisited; + if (classesVisited > MaxLinearFlushCachesVisitedCount) + MaxLinearFlushCachesVisitedCount = classesVisited; + IdealFlushCachesCount += subclassCount; + if (subclassCount > MaxIdealFlushCachesCount) + MaxIdealFlushCachesCount = subclassCount; +#endif + + OBJC_UNLOCK(&cacheUpdateLock); + OBJC_UNLOCK(&classLock); + return; + } + + // Outer loop - flush any cache that could now get a method from + // cls (i.e. the cache associated with cls and any of its subclasses). +#ifdef OBJC_INSTRUMENTED + NonlinearFlushCachesCount += 1; + classesVisited = 0; + subclassCount = 0; +#endif + while (NXNextHashState(class_hash, &state, (void**)&clsObject)) + { + struct old_class *clsIter; + +#ifdef OBJC_INSTRUMENTED + NonlinearFlushCachesClassCount += 1; +#endif + + // Inner loop - Process a given class + clsIter = clsObject; + while (clsIter) + { + +#ifdef OBJC_INSTRUMENTED + classesVisited += 1; +#endif + // Flush clsObject instance method cache if + // clsObject is a subclass of cls, or is cls itself + // Flush the class method cache if that was asked for + if (clsIter == target) + { +#ifdef OBJC_INSTRUMENTED + subclassCount += 1; +#endif + _cache_flush ((Class)clsObject); + if (flush_meta) + _cache_flush ((Class)clsObject->isa); + + break; + + } + + // Flush clsObject class method cache if cls is + // the meta class of clsObject or of one + // of clsObject's superclasses + else if (clsIter->isa == target) + { +#ifdef OBJC_INSTRUMENTED + subclassCount += 1; +#endif + _cache_flush ((Class)clsObject->isa); + break; + } + + // Move up superclass chain + // else if (_class_isInitialized(clsIter)) + clsIter = clsIter->super_class; + + // clsIter is not initialized, so its cache + // must be empty. This happens only when + // clsIter == clsObject, because + // superclasses are initialized before + // subclasses, and this loop traverses + // from sub- to super- classes. + // else + // break; + } + } +#ifdef OBJC_INSTRUMENTED + NonlinearFlushCachesVisitedCount += classesVisited; + if (classesVisited > MaxNonlinearFlushCachesVisitedCount) + MaxNonlinearFlushCachesVisitedCount = classesVisited; + IdealFlushCachesCount += subclassCount; + if (subclassCount > MaxIdealFlushCachesCount) + MaxIdealFlushCachesCount = subclassCount; +#endif + + OBJC_UNLOCK(&cacheUpdateLock); + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* flush_marked_caches. Flush the method cache of any class marked +* CLS_FLUSH_CACHE (and all subclasses thereof) +* fixme instrument +**********************************************************************/ +__private_extern__ void flush_marked_caches(void) +{ + struct old_class *cls; + struct old_class *supercls; + NXHashState state; + + OBJC_LOCK(&classLock); + OBJC_LOCK(&cacheUpdateLock); + + state = NXInitHashState(class_hash); + while (NXNextHashState(class_hash, &state, (void**)&cls)) { + for (supercls = cls; supercls; supercls = supercls->super_class) { + if (supercls->info & CLS_FLUSH_CACHE) { + _cache_flush((Class)cls); + break; + } + } + + for (supercls = cls->isa; supercls; supercls = supercls->super_class) { + if (supercls->info & CLS_FLUSH_CACHE) { + _cache_flush((Class)cls->isa); + break; + } + } + } + + state = NXInitHashState(class_hash); + while (NXNextHashState(class_hash, &state, (void**)&cls)) { + if (cls->info & CLS_FLUSH_CACHE) { + _class_clearInfo((Class)cls, CLS_FLUSH_CACHE); + } + if (cls->isa->info & CLS_FLUSH_CACHE) { + _class_clearInfo((Class)cls->isa, CLS_FLUSH_CACHE); + } + } + + OBJC_UNLOCK(&cacheUpdateLock); + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* 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 old_method_list *get_base_method_list(struct old_class *cls) +{ + struct old_method_list **ptr; + + if (!cls->methodLists) return NULL; + if (cls->info & CLS_NO_METHOD_ARRAY) return (struct old_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; +} + + +static IMP _class_getLoadMethod_nocheck(struct old_class *cls) +{ + struct old_method_list *mlist; + mlist = get_base_method_list(cls->isa); + if (mlist) { + return lookupNamedMethodInMethodList (mlist, "load"); + } + return NULL; +} + + +__private_extern__ BOOL _class_hasLoadMethod(Class cls) +{ + if (oldcls(cls)->isa->info & CLS_HAS_LOAD_METHOD) return YES; + return (_class_getLoadMethod_nocheck(oldcls(cls)) ? YES : NO); +} + + +/*********************************************************************** +* _class_getLoadMethod +* Returns cls's +load implementation, or NULL if it doesn't have one. +**********************************************************************/ +__private_extern__ IMP _class_getLoadMethod(Class cls_gen) +{ + struct old_class *cls = _class_asOld(cls_gen); + if (cls->isa->info & CLS_HAS_LOAD_METHOD) { + return _class_getLoadMethod_nocheck(cls); + } + return NULL; +} + + +__private_extern__ BOOL _class_shouldGrowCache(Class cls) +{ + return _class_getInfo(cls, CLS_GROW_CACHE); +} + +__private_extern__ void _class_setGrowCache(Class cls, BOOL grow) +{ + if (grow) _class_setInfo(cls, CLS_GROW_CACHE); + else _class_clearInfo(cls, CLS_GROW_CACHE); +} + +__private_extern__ BOOL _class_hasCxxStructorsNoSuper(Class cls) +{ + return _class_getInfo(cls, CLS_HAS_CXX_STRUCTORS); +} + +__private_extern__ BOOL _class_shouldFinalizeOnMainThread(Class cls) { + return _class_getInfo(cls, CLS_FINALIZE_ON_MAIN_THREAD); +} + +__private_extern__ void _class_setFinalizeOnMainThread(Class cls) { + _class_setInfo(cls, CLS_FINALIZE_ON_MAIN_THREAD); +} + + +__private_extern__ struct old_ivar *_ivar_asOld(Ivar ivar) +{ + return (struct old_ivar *)ivar; +} + +ptrdiff_t ivar_getOffset(Ivar ivar) +{ + return _ivar_asOld(ivar)->ivar_offset; +} + +const char *ivar_getName(Ivar ivar) +{ + return _ivar_asOld(ivar)->ivar_name; +} + +const char *ivar_getTypeEncoding(Ivar ivar) +{ + return _ivar_asOld(ivar)->ivar_type; +} + + +IMP method_getImplementation(Method m) +{ + if (!m) return NULL; + return _method_asOld(m)->method_imp; +} + +SEL method_getName(Method m) +{ + if (!m) return NULL; + return _method_asOld(m)->method_name; +} + +const char *method_getTypeEncoding(Method m) +{ + if (!m) return NULL; + return _method_asOld(m)->method_types; +} + +IMP method_setImplementation(Method m, IMP imp) +{ + IMP old = _method_asOld(m)->method_imp; + _method_asOld(m)->method_imp = imp; + return old; +} + + +struct objc_method_description * method_getDescription(Method m) +{ + if (!m) return NULL; + return (struct objc_method_description *)oldmethod(m); +} + + +/*********************************************************************** +* class_addMethod +**********************************************************************/ +static IMP _class_addMethod(Class cls_gen, SEL name, IMP imp, + const char *types, BOOL replace) +{ + struct old_class *cls = oldcls(cls_gen); + IMP result = NULL; + + if (!types) types = ""; + + OBJC_LOCK(&methodListLock); + + struct old_method *m; + if ((m = _findMethodInClass(cls, name))) { + // already exists + // fixme atomic + result = method_getImplementation((Method)m); + if (replace) { + method_setImplementation((Method)m, imp); + } + } else { + // fixme could be faster + struct old_method_list *mlist = + _calloc_internal(sizeof(struct old_method_list), 1); + mlist->obsolete = _OBJC_FIXED_UP; + mlist->method_count = 1; + mlist->method_list[0].method_name = name; + mlist->method_list[0].method_imp = imp; + mlist->method_list[0].method_types = _strdup_internal(types); + + _objc_insertMethods(cls, mlist, NULL); + if (!(cls->info & CLS_CONSTRUCTING)) { + flush_caches((Class)cls, NO); + } else { + // in-construction class has no subclasses + flush_cache((Class)cls); + } + result = NULL; + } + + OBJC_UNLOCK(&methodListLock); + + return result; +} + + +/*********************************************************************** +* class_addMethod +**********************************************************************/ +BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types) +{ + if (!cls) return NO; + + IMP old = _class_addMethod(cls, name, imp, types, NO); + return old ? NO : YES; +} + + +/*********************************************************************** +* class_replaceMethod +**********************************************************************/ +IMP class_replaceMethod(Class cls, SEL name, IMP imp, const char *types) +{ + if (!cls) return NULL; + + return _class_addMethod(cls, name, imp, types, YES); +} + + +/*********************************************************************** +* class_addIvar +**********************************************************************/ +BOOL class_addIvar(Class cls_gen, const char *name, size_t size, + uint8_t alignment, const char *type) +{ + struct old_class *cls = oldcls(cls_gen); + BOOL result = YES; + + if (!cls) return NO; + if (ISMETA(cls)) return NO; + if (!(cls->info & CLS_CONSTRUCTING)) return NO; + + if (!type) type = ""; + if (name && 0 == strcmp(name, "")) name = NULL; + + OBJC_LOCK(&classLock); + + // Check for existing ivar with this name + // fixme check superclasses? + if (cls->ivars) { + int i; + for (i = 0; i < cls->ivars->ivar_count; i++) { + if (0 == strcmp(cls->ivars->ivar_list[i].ivar_name, name)) { + result = NO; + break; + } + } + } + + if (result) { + struct old_ivar_list *old = cls->ivars; + size_t oldSize; + int newCount; + struct old_ivar *ivar; + size_t alignBytes; + size_t misalign; + + if (old) { + oldSize = sizeof(struct old_ivar_list) + + (old->ivar_count - 1) * sizeof(struct old_ivar); + newCount = 1 + old->ivar_count; + } else { + oldSize = sizeof(struct old_ivar_list) - sizeof(struct old_ivar); + newCount = 1; + } + + // allocate new ivar list + cls->ivars = _calloc_internal(oldSize + sizeof(struct old_ivar), 1); + if (old) memcpy(cls->ivars, old, oldSize); + if (old && malloc_size(old)) free(old); + cls->ivars->ivar_count = newCount; + ivar = &cls->ivars->ivar_list[newCount-1]; + + // set ivar name and type + ivar->ivar_name = _strdup_internal(name); + ivar->ivar_type = _strdup_internal(type); + + // align if necessary + alignBytes = 1 << alignment; + misalign = cls->instance_size % alignBytes; + if (misalign) cls->instance_size += alignBytes - misalign; + + // set ivar offset and increase instance size + ivar->ivar_offset = (int)cls->instance_size; + cls->instance_size += size; + } + + OBJC_UNLOCK(&classLock); + + return result; +} + + +/*********************************************************************** +* class_addProtocol +**********************************************************************/ +BOOL class_addProtocol(Class cls_gen, Protocol *protocol_gen) +{ + struct old_class *cls = oldcls(cls_gen); + struct old_protocol *protocol = oldprotocol(protocol_gen); + struct old_protocol_list *plist; + + if (!cls) return NO; + if (class_conformsToProtocol(cls_gen, protocol_gen)) return NO; + + OBJC_LOCK(&classLock); + + // fixme optimize - protocol list doesn't escape? + plist = _calloc_internal(sizeof(struct old_protocol_list), 1); + plist->count = 1; + plist->list[0] = protocol; + plist->next = cls->protocols; + cls->protocols = plist; + + // fixme metaclass? + + OBJC_UNLOCK(&classLock); + + return YES; +} + + +/*********************************************************************** +* class_addProperty +**********************************************************************/ +__private_extern__ void +_class_addProperties(struct old_class *cls, + struct objc_property_list *additions) +{ + if (!(cls->info & CLS_EXT)) { + return; + } + + struct objc_property_list *newlist = + _memdup_internal(additions, sizeof(*newlist) - sizeof(newlist->first) + + (additions->entsize * additions->count)); + + OBJC_LOCK(&classLock); + + allocateExt(cls); + if (!cls->ext->propertyLists) { + // cls has no properties - simply use this list + cls->ext->propertyLists = (struct objc_property_list **)newlist; + _class_setInfo((Class)cls, CLS_NO_PROPERTY_ARRAY); + } + else if (cls->info & CLS_NO_PROPERTY_ARRAY) { + // cls has one property list - make a new array + struct objc_property_list **newarray = + _malloc_internal(3 * sizeof(*newarray)); + newarray[0] = newlist; + newarray[1] = (struct objc_property_list *)cls->ext->propertyLists; + newarray[2] = NULL; + cls->ext->propertyLists = newarray; + _class_clearInfo((Class)cls, CLS_NO_PROPERTY_ARRAY); + } + else { + // cls has a property array - make a bigger one + int count = 0; + while (cls->ext->propertyLists[count]) count++; + struct objc_property_list **newarray = + _malloc_internal((count+2) * sizeof(*newarray)); + newarray[0] = newlist; + memcpy(&newarray[1], &cls->ext->propertyLists[0], + count * sizeof(*newarray)); + newarray[count+1] = NULL; + free(cls->ext->propertyLists); + cls->ext->propertyLists = newarray; + } + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* class_copyProtocolList. Returns a heap block containing the +* protocols implemented by the class, or NULL if the class +* implements no protocols. Caller must free the block. +* Does not copy any superclass's protocols. +**********************************************************************/ +Protocol **class_copyProtocolList(Class cls_gen, unsigned int *outCount) +{ + struct old_class *cls = oldcls(cls_gen); + struct old_protocol_list *plist; + Protocol **result = NULL; + unsigned int count = 0; + unsigned int i, p; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&classLock); + + for (plist = cls->protocols; plist != NULL; plist = plist->next) { + count += (int)plist->count; + } + + if (count > 0) { + result = malloc((count+1) * sizeof(Protocol *)); + + for (p = 0, plist = cls->protocols; + plist != NULL; + plist = plist->next) + { + for (i = 0; i < plist->count; i++) { + result[p++] = (Protocol *)plist->list[i]; + } + } + result[p] = NULL; + } + + OBJC_UNLOCK(&classLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* class_getProperty. Return the named property. +**********************************************************************/ +Property class_getProperty(Class cls_gen, const char *name) +{ + Property result; + struct old_class *cls = _class_asOld(cls_gen); + if (!cls || !name) return NULL; + + OBJC_LOCK(&classLock); + + for (result = NULL; cls && !result; cls = cls->super_class) { + uintptr_t iterator = 0; + struct objc_property_list *plist; + while ((plist = nextPropertyList(cls, &iterator))) { + uint32_t i; + for (i = 0; i < plist->count; i++) { + Property p = property_list_nth(plist, i); + if (0 == strcmp(name, p->name)) { + result = p; + goto done; + } + } + } + } + + done: + OBJC_UNLOCK(&classLock); + + return result; +} + + +/*********************************************************************** +* class_copyPropertyList. Returns a heap block containing the +* properties declared in the class, or NULL if the class +* declares no properties. Caller must free the block. +* Does not copy any superclass's properties. +**********************************************************************/ +Property *class_copyPropertyList(Class cls_gen, unsigned int *outCount) +{ + struct old_class *cls = oldcls(cls_gen); + struct objc_property_list *plist; + uintptr_t iterator = 0; + Property *result = NULL; + unsigned int count = 0; + unsigned int p, i; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&classLock); + + iterator = 0; + while ((plist = nextPropertyList(cls, &iterator))) { + count += plist->count; + } + + if (count > 0) { + result = malloc((count+1) * sizeof(Property)); + + p = 0; + iterator = 0; + while ((plist = nextPropertyList(cls, &iterator))) { + for (i = 0; i < plist->count; i++) { + result[p++] = property_list_nth(plist, i); + } + } + result[p] = NULL; + } + + OBJC_UNLOCK(&classLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* class_copyMethodList. Returns a heap block containing the +* methods implemented by the class, or NULL if the class +* implements no methods. Caller must free the block. +* Does not copy any superclass's methods. +**********************************************************************/ +Method *class_copyMethodList(Class cls_gen, unsigned int *outCount) +{ + struct old_class *cls = oldcls(cls_gen); + struct old_method_list *mlist; + void *iterator = NULL; + Method *result = NULL; + unsigned int count = 0; + unsigned int m, i; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&methodListLock); + + iterator = NULL; + while ((mlist = nextMethodList(cls, &iterator))) { + count += mlist->method_count; + } + + if (count > 0) { + result = malloc((count+1) * sizeof(Method)); + + m = 0; + iterator = NULL; + while ((mlist = nextMethodList(cls, &iterator))) { + for (i = 0; i < mlist->method_count; i++) { + result[m++] = (Method)&mlist->method_list[i]; + } + } + result[m] = NULL; + } + + OBJC_UNLOCK(&methodListLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* class_copyIvarList. Returns a heap block containing the +* ivars declared in the class, or NULL if the class +* declares no ivars. Caller must free the block. +* Does not copy any superclass's ivars. +**********************************************************************/ +Ivar *class_copyIvarList(Class cls_gen, unsigned int *outCount) +{ + struct old_class *cls = oldcls(cls_gen); + Ivar *result = NULL; + unsigned int count = 0; + unsigned int i; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + if (cls->ivars) { + count = cls->ivars->ivar_count; + } + + if (count > 0) { + result = malloc((count+1) * sizeof(Ivar)); + + for (i = 0; i < cls->ivars->ivar_count; i++) { + result[i] = (Ivar)&cls->ivars->ivar_list[i]; + } + result[i] = NULL; + } + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* objc_allocateClass. +**********************************************************************/ +__private_extern__ +void set_superclass(struct old_class *cls, struct old_class *supercls) +{ + struct old_class *meta = cls->isa; + + if (supercls) { + cls->super_class = supercls; + meta->super_class = supercls->isa; + meta->isa = supercls->isa->isa; + + // Superclass is no longer a leaf for cache flushing + if (supercls->info & CLS_LEAF) { + _class_clearInfo((Class)supercls, CLS_LEAF); + _class_clearInfo((Class)supercls->isa, CLS_LEAF); + } + } else { + cls->super_class = Nil; // superclass of root class is nil + meta->super_class = cls; // superclass of root metaclass is root class + meta->isa = meta; // metaclass of root metaclass is root metaclass + + // Root class is never a leaf for cache flushing, because the + // root metaclass is a subclass. (This could be optimized, but + // is too uncommon to bother.) + _class_clearInfo((Class)cls, CLS_LEAF); + _class_clearInfo((Class)meta, CLS_LEAF); + } +} + +Class objc_allocateClassPair(Class superclass_gen, const char *name, + size_t extraBytes) +{ + struct old_class *superclass = oldcls(superclass_gen); + struct old_class *cls, *meta; + + if (objc_getClass(name)) return NO; + // fixme reserve class name against simultaneous allocation + + if (superclass && (superclass->info & CLS_CONSTRUCTING)) { + // Can't make subclass of an in-construction class + return NO; + } + + // Allocate new classes. + if (superclass) { + cls = _calloc_internal(superclass->isa->instance_size + extraBytes, 1); + meta = _calloc_internal(superclass->isa->isa->instance_size + extraBytes, 1); + } else { + cls = _calloc_internal(sizeof(struct old_class) + extraBytes, 1); + meta = _calloc_internal(sizeof(struct old_class) + extraBytes, 1); + } + + // Connect to superclasses and metaclasses + cls->isa = meta; + set_superclass(cls, superclass); + + // Set basic info + cls->name = _strdup_internal(name); + meta->name = _strdup_internal(name); + cls->version = 0; + meta->version = 7; + cls->info = CLS_CLASS | CLS_CONSTRUCTING | CLS_EXT | CLS_LEAF; + meta->info = CLS_META | CLS_CONSTRUCTING | CLS_EXT | CLS_LEAF; + + // Set instance size based on superclass. + if (superclass) { + cls->instance_size = superclass->instance_size; + meta->instance_size = superclass->isa->instance_size; + } else { + cls->instance_size = sizeof(struct old_class *); // just an isa + meta->instance_size = sizeof(struct old_class); + } + + // No ivars. No methods. Empty cache. No protocols. No layout. No ext. + cls->ivars = NULL; + cls->methodLists = NULL; + cls->cache = (Cache)&_objc_empty_cache; + cls->protocols = NULL; + cls->ext = NULL; + + meta->ivars = NULL; + meta->methodLists = NULL; + meta->cache = (Cache)&_objc_empty_cache; + meta->protocols = NULL; + cls->ext = NULL; + + return (Class)cls; +} + + +void objc_registerClassPair(Class cls_gen) +{ + struct old_class *cls = oldcls(cls_gen); + + if ((cls->info & CLS_CONSTRUCTED) || + (cls->isa->info & CLS_CONSTRUCTED)) + { + _objc_inform("objc_registerClassPair: class '%s' was already " + "registered!", cls->name); + return; + } + + if (!(cls->info & CLS_CONSTRUCTING) || + !(cls->isa->info & CLS_CONSTRUCTING)) + { + _objc_inform("objc_registerClassPair: class '%s' was not " + "allocated with objc_allocateClassPair!", cls->name); + return; + } + + if (ISMETA(cls)) { + _objc_inform("objc_registerClassPair: class '%s' is a metaclass, " + "not a class!", cls->name); + return; + } + + OBJC_LOCK(&classLock); + + // Build ivar layouts + if (UseGC) { + if (cls->ivar_layout) { + // Class builder already called class_setIvarLayout. + } + else if (!cls->super_class) { + // Root class. Scan conservatively (should be isa ivar only). + // ivar_layout is already NULL. + } + else if (cls->ivars == NULL) { + // No local ivars. Use superclass's layout. + cls->ivar_layout = + _strdup_internal(cls->super_class->ivar_layout); + } + else { + // Has local ivars. Build layout based on superclass. + struct old_class *supercls = cls->super_class; + unsigned char *superlayout = + (unsigned char *) class_getIvarLayout((Class)supercls); + layout_bitmap bitmap = + layout_bitmap_create(superlayout, supercls->instance_size, + cls->instance_size, NO); + int i; + for (i = 0; i < cls->ivars->ivar_count; i++) { + struct old_ivar *iv = &cls->ivars->ivar_list[i]; + layout_bitmap_set_ivar(bitmap, iv->ivar_type, iv->ivar_offset); + } + cls->ivar_layout = (char *)layout_string_create(bitmap); + layout_bitmap_free(bitmap); + } + + if (cls->ext && cls->ext->weak_ivar_layout) { + // Class builder already called class_setWeakIvarLayout. + } + else if (!cls->super_class) { + // Root class. No weak ivars (should be isa ivar only) + // weak_ivar_layout is already NULL. + } + else if (cls->ivars == NULL) { + // No local ivars. Use superclass's layout. + const char *weak = + class_getWeakIvarLayout((Class)cls->super_class); + if (weak) { + allocateExt(cls); + cls->ext->weak_ivar_layout = _strdup_internal(weak); + } + } + else { + // Has local ivars. Build layout based on superclass. + // No way to add weak ivars yet. + const char *weak = + class_getWeakIvarLayout((Class)cls->super_class); + if (weak) { + allocateExt(cls); + cls->ext->weak_ivar_layout = _strdup_internal(weak); + } + } + } + + // Clear "under construction" bit, set "done constructing" bit + cls->info &= ~CLS_CONSTRUCTING; + cls->isa->info &= ~CLS_CONSTRUCTING; + cls->info |= CLS_CONSTRUCTED; + cls->isa->info |= CLS_CONSTRUCTED; + + NXHashInsertIfAbsent(class_hash, cls); + + OBJC_UNLOCK(&classLock); +} + + +Class objc_duplicateClass(Class orig_gen, const char *name, size_t extraBytes) +{ + unsigned int count, i; + struct old_method **originalMethods; + struct old_method_list *duplicateMethods; + struct old_class *original = oldcls(orig_gen); + // Don't use sizeof(struct objc_class) here because + // instance_size has historically contained two extra words, + // and instance_size is what objc_getIndexedIvars() actually uses. + struct old_class *duplicate = (struct old_class *) + calloc(original->isa->instance_size + extraBytes, 1); + + duplicate->isa = original->isa; + duplicate->super_class = original->super_class; + duplicate->name = strdup(name); + duplicate->version = original->version; + duplicate->info = original->info & (CLS_CLASS|CLS_META|CLS_INITIALIZED|CLS_JAVA_HYBRID|CLS_JAVA_CLASS|CLS_HAS_CXX_STRUCTORS|CLS_HAS_LOAD_METHOD); + duplicate->instance_size = original->instance_size; + duplicate->ivars = original->ivars; + // methodLists handled below + duplicate->cache = (Cache)&_objc_empty_cache; + duplicate->protocols = original->protocols; + if (original->info & CLS_EXT) { + duplicate->info |= original->info & (CLS_EXT|CLS_NO_PROPERTY_ARRAY); + duplicate->ivar_layout = original->ivar_layout; + if (original->ext) { + duplicate->ext = _malloc_internal(original->ext->size); + memcpy(duplicate->ext, original->ext, original->ext->size); + } else { + duplicate->ext = NULL; + } + } + + // Method lists are deep-copied so they can be stomped. + originalMethods = (struct old_method **) + class_copyMethodList(orig_gen, &count); + if (originalMethods) { + duplicateMethods = (struct old_method_list *) + calloc(sizeof(struct old_method_list) + + (count-1)*sizeof(struct old_method), 1); + duplicateMethods->obsolete = _OBJC_FIXED_UP; + duplicateMethods->method_count = count; + for (i = 0; i < count; i++) { + duplicateMethods->method_list[i] = *(originalMethods[i]); + } + duplicate->methodLists = (struct old_method_list **)duplicateMethods; + duplicate->info |= CLS_NO_METHOD_ARRAY; + free(originalMethods); + } + + OBJC_LOCK(&classLock); + NXHashInsert(class_hash, duplicate); + OBJC_UNLOCK(&classLock); + + return (Class)duplicate; +} + + +void objc_disposeClassPair(Class cls_gen) +{ + struct old_class *cls = oldcls(cls_gen); + + if (!(cls->info & (CLS_CONSTRUCTED|CLS_CONSTRUCTING)) || + !(cls->isa->info & (CLS_CONSTRUCTED|CLS_CONSTRUCTING))) + { + // class not allocated with objc_allocateClassPair + // disposing still-unregistered class is OK! + _objc_inform("objc_disposeClassPair: class '%s' was not " + "allocated with objc_allocateClassPair!", cls->name); + return; + } + + if (ISMETA(cls)) { + _objc_inform("objc_disposeClassPair: class '%s' is a metaclass, " + "not a class!", cls->name); + return; + } + + NXHashRemove(class_hash, cls); + unload_class(cls->isa); + unload_class(cls); +} + + +/*********************************************************************** +* _internal_class_createInstance. Allocate an instance of the specified +* class with the specified number of bytes for indexed variables, in +* the default zone, using _internal_class_createInstanceFromZone. +**********************************************************************/ +static id _internal_class_createInstance(Class cls, size_t extraBytes) +{ + return _internal_class_createInstanceFromZone (cls, extraBytes, NULL); +} + + +static id _internal_object_copyFromZone(id oldObj, size_t extraBytes, void *zone) +{ + id obj; + size_t size; + + if (!oldObj) return nil; + + obj = (*_zoneAlloc)(oldObj->isa, extraBytes, zone); + size = _class_getInstanceSize(oldObj->isa) + extraBytes; + // fixme need C++ copy constructor + bcopy((const char*)oldObj, (char*)obj, size); + return obj; +} + +static id _internal_object_copy(id oldObj, size_t extraBytes) +{ + void *z = malloc_zone_from_ptr(oldObj); + return _internal_object_copyFromZone(oldObj, extraBytes, + z ? z : malloc_default_zone()); +} + +static id _internal_object_reallocFromZone(id anObject, size_t nBytes, + void *zone) +{ + id newObject; + Class tmp; + + if (anObject == nil) + __objc_error(nil, "reallocating nil object"); + + if (anObject->isa == _objc_getFreedObjectClass ()) + __objc_error(anObject, "reallocating freed object"); + + if (nBytes < _class_getInstanceSize(anObject->isa)) + __objc_error(anObject, "(%s, %zu) requested size too small", + object_getClassName(anObject), nBytes); + + // fixme need C++ copy constructor + // fixme GC copy + // Make sure not to modify space that has been declared free + tmp = anObject->isa; + anObject->isa = _objc_getFreedObjectClass (); + newObject = (id)malloc_zone_realloc(zone, anObject, nBytes); + if (newObject) { + newObject->isa = tmp; + } else { + // realloc failed, anObject is still alive + anObject->isa = tmp; + } + return newObject; +} + + +static id _internal_object_realloc(id anObject, size_t nBytes) +{ + void *z = malloc_zone_from_ptr(anObject); + return _internal_object_reallocFromZone(anObject, + nBytes, + z ? z : malloc_default_zone()); +} + +id (*_alloc)(Class, size_t) = _internal_class_createInstance; +id (*_copy)(id, size_t) = _internal_object_copy; +id (*_realloc)(id, size_t) = _internal_object_realloc; +id (*_dealloc)(id) = _internal_object_dispose; +id (*_zoneAlloc)(Class, size_t, void *) = _internal_class_createInstanceFromZone; +id (*_zoneCopy)(id, size_t, void *) = _internal_object_copyFromZone; +id (*_zoneRealloc)(id, size_t, void *) = _internal_object_reallocFromZone; +void (*_error)() = (void(*)())_objc_error; + + +id class_createInstance(Class cls, size_t extraBytes) +{ + if (UseGC) { + return _internal_class_createInstance(cls, extraBytes); + } else { + return (*_alloc)(cls, extraBytes); + } +} + +id class_createInstanceFromZone(Class cls, size_t extraBytes, void *z) +{ + OBJC_WARN_DEPRECATED; + if (UseGC) { + return _internal_class_createInstanceFromZone(cls, extraBytes, z); + } else { + return (*_zoneAlloc)(cls, extraBytes, z); + } +} + +id object_copy(id obj, size_t extraBytes) +{ + if (UseGC) return _internal_object_copy(obj, extraBytes); + else return (*_copy)(obj, extraBytes); +} + +id object_copyFromZone(id obj, size_t extraBytes, void *z) +{ + OBJC_WARN_DEPRECATED; + if (UseGC) return _internal_object_copyFromZone(obj, extraBytes, z); + else return (*_zoneCopy)(obj, extraBytes, z); +} + +id object_dispose(id obj) +{ + if (UseGC) return _internal_object_dispose(obj); + else return (*_dealloc)(obj); +} + +id object_realloc(id obj, size_t nBytes) +{ + OBJC_WARN_DEPRECATED; + if (UseGC) return _internal_object_realloc(obj, nBytes); + else return (*_realloc)(obj, nBytes); +} + +id object_reallocFromZone(id obj, size_t nBytes, void *z) +{ + OBJC_WARN_DEPRECATED; + if (UseGC) return _internal_object_reallocFromZone(obj, nBytes, z); + else return (*_zoneRealloc)(obj, nBytes, z); +} + + +// ProKit SPI +Class class_setSuperclass(Class cls, Class newSuper) +{ + Class oldSuper = cls->super_class; + set_superclass(oldcls(cls), oldcls(newSuper)); + flush_caches(cls, YES); + return oldSuper; +} +#endif diff --git a/runtime/objc-class.h b/runtime/objc-class.h index 120a65b..1701b1e 100644 --- a/runtime/objc-class.h +++ b/runtime/objc-class.h @@ -1,257 +1,2 @@ -/* - * Copyright (c) 1999 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-class.h - * Copyright 1988-1996, NeXT Software, Inc. - */ - -#ifndef _OBJC_CLASS_H_ -#define _OBJC_CLASS_H_ - -#import -/* - * Class Template - */ -struct objc_class { - struct objc_class *isa; - struct objc_class *super_class; - const char *name; - long version; - long info; - long instance_size; - struct objc_ivar_list *ivars; - - struct objc_method_list **methodLists; - - struct objc_cache *cache; - struct objc_protocol_list *protocols; -}; -#define CLS_GETINFO(cls,infomask) ((cls)->info & (infomask)) -#define CLS_SETINFO(cls,infomask) ((cls)->info |= (infomask)) - -#define CLS_CLASS 0x1L -#define CLS_META 0x2L -#define CLS_INITIALIZED 0x4L -#define CLS_POSING 0x8L -#define CLS_MAPPED 0x10L -#define CLS_FLUSH_CACHE 0x20L -#define CLS_GROW_CACHE 0x40L -#define CLS_NEED_BIND 0x80L -#define CLS_METHOD_ARRAY 0x100L -// the JavaBridge constructs classes with these markers -#define CLS_JAVA_HYBRID 0x200L -#define CLS_JAVA_CLASS 0x400L -// thread-safe +initialize -#define CLS_INITIALIZING 0x800 -// 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 -// +load implementation -// #define CLS_HAS_LOAD_METHOD 0x8000L - - -/* - * Category Template - */ -typedef struct objc_category *Category; - -struct objc_category { - char *category_name; - char *class_name; - struct objc_method_list *instance_methods; - struct objc_method_list *class_methods; - struct objc_protocol_list *protocols; -}; - -/* - * Instance Variable Template - */ -typedef struct objc_ivar *Ivar; - -struct objc_ivar { - char *ivar_name; - char *ivar_type; - int ivar_offset; -#ifdef __alpha__ - int space; -#endif -}; - -struct objc_ivar_list { - int ivar_count; -#ifdef __alpha__ - int space; -#endif - struct objc_ivar ivar_list[1]; /* variable length structure */ -}; - -OBJC_EXPORT Ivar object_setInstanceVariable(id, const char *name, void *); -OBJC_EXPORT Ivar object_getInstanceVariable(id, const char *name, void **); - -/* - * Method Template - */ -typedef struct objc_method *Method; - -struct objc_method { - SEL method_name; - char *method_types; - IMP method_imp; -}; - -struct objc_method_list { - struct objc_method_list *obsolete; - - int method_count; -#ifdef __alpha__ - int space; -#endif - struct objc_method method_list[1]; /* variable length structure */ -}; - -/* Protocol support */ - -#ifdef __OBJC__ -@class Protocol; -#else -typedef struct objc_object Protocol; -#endif - -struct objc_protocol_list { - struct objc_protocol_list *next; - int count; - Protocol *list[1]; -}; - -/* Definitions of filer types */ - -#define _C_ID '@' -#define _C_CLASS '#' -#define _C_SEL ':' -#define _C_CHR 'c' -#define _C_UCHR 'C' -#define _C_SHT 's' -#define _C_USHT 'S' -#define _C_INT 'i' -#define _C_UINT 'I' -#define _C_LNG 'l' -#define _C_ULNG 'L' -#define _C_FLT 'f' -#define _C_DBL 'd' -#define _C_BFLD 'b' -#define _C_VOID 'v' -#define _C_UNDEF '?' -#define _C_PTR '^' -#define _C_CHARPTR '*' -#define _C_ARY_B '[' -#define _C_ARY_E ']' -#define _C_UNION_B '(' -#define _C_UNION_E ')' -#define _C_STRUCT_B '{' -#define _C_STRUCT_E '}' - -/* Structure for method cache - allocated/sized at runtime */ - -typedef struct objc_cache * Cache; - -#define CACHE_BUCKET_NAME(B) ((B)->method_name) -#define CACHE_BUCKET_IMP(B) ((B)->method_imp) -#define CACHE_BUCKET_VALID(B) (B) -#define CACHE_HASH(sel, mask) (((uarith_t)(sel)>>2) & (mask)) -struct objc_cache { - unsigned int mask; /* total = mask + 1 */ - unsigned int occupied; - Method buckets[1]; -}; - -/* operations */ -OBJC_EXPORT id class_createInstance(Class, unsigned idxIvars); -OBJC_EXPORT id class_createInstanceFromZone(Class, unsigned idxIvars, void *z); - -OBJC_EXPORT void class_setVersion(Class, int); -OBJC_EXPORT int class_getVersion(Class); - -OBJC_EXPORT Ivar class_getInstanceVariable(Class, const char *); -OBJC_EXPORT Method class_getInstanceMethod(Class, SEL); -OBJC_EXPORT Method class_getClassMethod(Class, SEL); - -OBJC_EXPORT void class_addMethods(Class, struct objc_method_list *); -OBJC_EXPORT void class_removeMethods(Class, struct objc_method_list *); - -OBJC_EXPORT Class class_poseAs(Class imposter, Class original); - -OBJC_EXPORT unsigned method_getNumberOfArguments(Method); -OBJC_EXPORT unsigned method_getSizeOfArguments(Method); -OBJC_EXPORT unsigned method_getArgumentInfo(Method m, int arg, const char **type, int *offset); - -// usage for nextMethodList -// -// void *iterator = 0; -// struct objc_method_list *mlist; -// while ( mlist = class_nextMethodList( cls, &iterator ) ) -// ; -#define OBJC_NEXT_METHOD_LIST 1 -OBJC_EXPORT struct objc_method_list *class_nextMethodList(Class, void **); - -typedef void *marg_list; - -#if defined(__ppc__) || defined(ppc) -#define marg_prearg_size 128 -#else -#define marg_prearg_size 0 -#endif - -#define marg_malloc(margs, method) \ - do { \ - margs = (marg_list *)malloc (marg_prearg_size + ((7 + method_getSizeOfArguments(method)) & ~7)); \ - } while (0) - - -#define marg_free(margs) \ - do { \ - free(margs); \ - } while (0) - -#define marg_adjustedOffset(method, offset) \ - (marg_prearg_size + offset) - - - - -#define marg_getRef(margs, offset, type) \ - ( (type *)((char *)margs + marg_adjustedOffset(method,offset) ) ) - -#define marg_getValue(margs, offset, type) \ - ( *marg_getRef(margs, offset, type) ) - -#define marg_setValue(margs, offset, type, value) \ - ( marg_getValue(margs, offset, type) = (value) ) - -/* Load categories and non-referenced classes from libraries. */ - -#endif /* _OBJC_CLASS_H_ */ +#import +#import diff --git a/runtime/objc-class.m b/runtime/objc-class.m index 8bf14b4..09c16ea 100644 --- a/runtime/objc-class.m +++ b/runtime/objc-class.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -29,66 +27,6 @@ **********************************************************************/ -/*********************************************************************** - * Method cache locking (GrP 2001-1-14) - * - * For speed, objc_msgSend does not acquire any locks when it reads - * method caches. Instead, all cache changes are performed so that any - * objc_msgSend running concurrently with the cache mutator will not - * crash or hang or get an incorrect result from the cache. - * - * When cache memory becomes unused (e.g. the old cache after cache - * expansion), it is not immediately freed, because a concurrent - * objc_msgSend could still be using it. Instead, the memory is - * disconnected from the data structures and placed on a garbage list. - * The memory is now only accessible to instances of objc_msgSend that - * were running when the memory was disconnected; any further calls to - * objc_msgSend will not see the garbage memory because the other data - * structures don't point to it anymore. The collecting_in_critical - * function checks the PC of all threads and returns FALSE when all threads - * are found to be outside objc_msgSend. This means any call to objc_msgSend - * that could have had access to the garbage has finished or moved past the - * cache lookup stage, so it is safe to free the memory. - * - * All functions that modify cache data or structures must acquire the - * 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* - * _cache_getImp - * _cache_getMethod - * - * Cache writers (hold cacheUpdateLock while reading or writing; not PC-checked) - * _cache_fill (acquires lock) - * _cache_expand (only called from cache_fill) - * _cache_create (only called from cache_expand) - * bcopy (only called from instrumented cache_expand) - * flush_caches (acquires lock) - * _cache_flush (only called from cache_fill and flush_caches) - * _cache_collect_free (only called from cache_expand and cache_flush) - * - * UNPROTECTED cache readers (NOT thread-safe; used for debug info only) - * _cache_print - * _class_printMethodCaches - * _class_printDuplicateCacheEntries - * _class_printMethodCacheStatistics - * - * _class_lookupMethodAndLoadCache is a special case. It may read a - * method triplet out of one cache and store it in another cache. This - * is unsafe if the method triplet is a forward:: entry, because the - * triplet itself could be freed unless _class_lookupMethodAndLoadCache - * were PC-checked or used a lock. Additionally, storing the method - * triplet in both caches would result in double-freeing if both caches - * were flushed or expanded. The solution is for _cache_getMethod to - * ignore all entries whose implementation is _objc_msgForward, so - * _class_lookupMethodAndLoadCache cannot look at a forward:: entry - * unsafely or place it in multiple caches. - ***********************************************************************/ - /*********************************************************************** * Lazy method list arrays and method list locking (2004-10-19) * @@ -183,7 +121,7 @@ * CLS_INITIALIZED: +initialize * CLS_POSING: messaging * CLS_MAPPED: compile-time - * CLS_FLUSH_CACHE: messaging + * CLS_FLUSH_CACHE: class load and messaging * CLS_GROW_CACHE: messaging * CLS_NEED_BIND: unused * CLS_METHOD_ARRAY: unused @@ -214,296 +152,63 @@ * CLS_INITIALIZING: classInitLock ***********************************************************************/ -/*********************************************************************** - * Thread-safety during class initialization (GrP 2001-9-24) - * - * Initial state: CLS_INITIALIZING and CLS_INITIALIZED both clear. - * During initialization: CLS_INITIALIZING is set - * After initialization: CLS_INITIALIZING clear and CLS_INITIALIZED set. - * CLS_INITIALIZING and CLS_INITIALIZED are never set at the same time. - * CLS_INITIALIZED is never cleared once set. - * - * Only one thread is allowed to actually initialize a class and send - * +initialize. Enforced by allowing only one thread to set CLS_INITIALIZING. - * - * Additionally, threads trying to send messages to a class must wait for - * +initialize to finish. During initialization of a class, that class's - * method cache is kept empty. objc_msgSend will revert to - * class_lookupMethodAndLoadCache, which checks CLS_INITIALIZED before - * messaging. If CLS_INITIALIZED is clear but CLS_INITIALIZING is set, - * the thread must block, unless it is the thread that started - * initializing the class in the first place. - * - * Each thread keeps a list of classes it's initializing. - * The global classInitLock is used to synchronize changes to CLS_INITIALIZED - * and CLS_INITIALIZING: the transition to CLS_INITIALIZING must be - * an atomic test-and-set with respect to itself and the transition - * to CLS_INITIALIZED. - * The global classInitWaitCond is used to block threads waiting for an - * initialization to complete. The classInitLock synchronizes - * condition checking and the condition variable. - **********************************************************************/ - -/*********************************************************************** - * +initialize deadlock case when a class is marked initializing while - * its superclass is initialized. Solved by completely initializing - * superclasses before beginning to initialize a class. - * - * OmniWeb class hierarchy: - * OBObject - * | ` OBPostLoader - * OFObject - * / \ - * OWAddressEntry OWController - * | - * OWConsoleController - * - * Thread 1 (evil testing thread): - * initialize OWAddressEntry - * super init OFObject - * super init OBObject - * [OBObject initialize] runs OBPostLoader, which inits lots of classes... - * initialize OWConsoleController - * super init OWController - wait for Thread 2 to finish OWController init - * - * Thread 2 (normal OmniWeb thread): - * initialize OWController - * super init OFObject - wait for Thread 1 to finish OFObject init - * - * deadlock! - * - * Solution: fully initialize super classes before beginning to initialize - * a subclass. Then the initializing+initialized part of the class hierarchy - * will be a contiguous subtree starting at the root, so other threads - * can't jump into the middle between two initializing classes, and we won't - * get stuck while a superclass waits for its subclass which waits for the - * superclass. - **********************************************************************/ - - - /*********************************************************************** * Imports. **********************************************************************/ -#import +#include +#include #include #include - #include #include #include #include #include +#include -#import "objc-class.h" - -#import -#import +#import "objc.h" +#import "Object.h" #import "objc-private.h" #import "hashtable2.h" #import "maptable.h" +#import "objc-initialize.h" +#import "objc-auto.h" -#include - -// Needed functions not in any header file -size_t malloc_size (const void * ptr); -// Needed kernel interface -#import -#import +/* overriding the default object allocation and error handling routines */ - -/*********************************************************************** -* Conditionals. -**********************************************************************/ - -// Define PRELOAD_SUPERCLASS_CACHES to cause method lookups to add the -// method the appropriate superclass caches, in addition to the normal -// encaching in the subclass where the method was messaged. Doing so -// will speed up messaging the same method from instances of the -// superclasses, but also uses up valuable cache space for a speculative -// purpose -// See radar 2364264 about incorrectly propogating _objc_forward entries -// and double freeing them, first, before turning this on! -// (Radar 2364264 is now "inactive".) -// Double-freeing is also a potential problem when this is off. See -// note about _class_lookupMethodAndLoadCache in "Method cache locking". -//#define PRELOAD_SUPERCLASS_CACHES - -/*********************************************************************** -* Exports. -**********************************************************************/ - -#ifdef OBJC_INSTRUMENTED -enum { - CACHE_HISTOGRAM_SIZE = 512 -}; - -unsigned int CacheHitHistogram [CACHE_HISTOGRAM_SIZE]; -unsigned int CacheMissHistogram [CACHE_HISTOGRAM_SIZE]; -#endif - -/*********************************************************************** -* Constants and macros internal to this module. -**********************************************************************/ - -// INIT_CACHE_SIZE and INIT_META_CACHE_SIZE must be a power of two -enum { - INIT_CACHE_SIZE_LOG2 = 2, - INIT_META_CACHE_SIZE_LOG2 = 2, - INIT_CACHE_SIZE = (1 << INIT_CACHE_SIZE_LOG2), - INIT_META_CACHE_SIZE = (1 << INIT_META_CACHE_SIZE_LOG2) -}; - -// Amount of space required for count hash table buckets, knowing that -// one entry is embedded in the cache structure itself -#define TABLE_SIZE(count) ((count - 1) * sizeof(Method)) - -// A sentinal (magic value) to report bad thread_get_state status -#define PC_SENTINAL 0 +OBJC_EXPORT id (*_alloc)(Class, size_t); +OBJC_EXPORT id (*_copy)(id, size_t); +OBJC_EXPORT id (*_realloc)(id, size_t); +OBJC_EXPORT id (*_dealloc)(id); +OBJC_EXPORT id (*_zoneAlloc)(Class, size_t, void *); +OBJC_EXPORT id (*_zoneRealloc)(id, size_t, void *); +OBJC_EXPORT id (*_zoneCopy)(id, size_t, void *); -/*********************************************************************** -* Types internal to this module. -**********************************************************************/ - -#ifdef OBJC_INSTRUMENTED -struct CacheInstrumentation -{ - unsigned int hitCount; // cache lookup success tally - unsigned int hitProbes; // sum entries checked to hit - unsigned int maxHitProbes; // max entries checked to hit - unsigned int missCount; // cache lookup no-find tally - unsigned int missProbes; // sum entries checked to miss - unsigned int maxMissProbes; // max entries checked to miss - unsigned int flushCount; // cache flush tally - unsigned int flushedEntries; // sum cache entries flushed - unsigned int maxFlushedEntries; // max cache entries flushed -}; -typedef struct CacheInstrumentation CacheInstrumentation; - -// Cache instrumentation data follows table, so it is most compatible -#define CACHE_INSTRUMENTATION(cache) (CacheInstrumentation *) &cache->buckets[cache->mask + 1]; -#endif - /*********************************************************************** * Function prototypes internal to this module. **********************************************************************/ -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); static void _nonexistentHandler (id self, SEL sel); -static void class_initialize (Class cls); -static Cache _cache_expand (Class cls); static int LogObjCMessageSend (BOOL isClassMethod, const char * objectsClass, const char * implementingClass, SEL selector); -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, 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); -static void PrintCacheHeader (void); -#ifdef OBJC_INSTRUMENTED -static void PrintCacheHistogram (char * title, unsigned int * firstEntry, unsigned int entryCount); -#endif +static Method look_up_method(Class cls, SEL sel, BOOL withCache, BOOL withResolver); + /*********************************************************************** * Static data internal to this module. **********************************************************************/ -// When _class_uncache is non-zero, cache growth copies the existing -// entries into the new (larger) cache. When this flag is zero, new -// (larger) caches start out empty. -static int _class_uncache = 1; - -// When _class_slow_grow is non-zero, any given cache is actually grown -// only on the odd-numbered times it becomes full; on the even-numbered -// times, it is simply emptied and re-used. When this flag is zero, -// caches are grown every time. -static int _class_slow_grow = 1; - -// Lock for cache access. -// Held when modifying a cache in place. -// Held when installing a new cache on a class. -// Held when adding to the cache garbage list. -// Held when disposing cache garbage. -// See "Method cache locking" above for notes about cache locking. -static OBJC_DECLARE_LOCK(cacheUpdateLock); - -// classInitLock protects classInitWaitCond and examination and modification -// of CLS_INITIALIZED and CLS_INITIALIZING. -OBJC_DECLARE_LOCK(classInitLock); -// classInitWaitCond is signalled when any class is done initializing. -// Threads that are waiting for a class to finish initializing wait on this. -pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER; - -// 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 -// is tallied in cacheFillDuplicates. When traceDuplicatesVerbose is -// non-zero, each duplication is logged when found in this way. -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; -static unsigned int LinearFlushCachesVisitedCount = 0; -static unsigned int MaxLinearFlushCachesVisitedCount = 0; -static unsigned int NonlinearFlushCachesCount = 0; -static unsigned int NonlinearFlushCachesClassCount = 0; -static unsigned int NonlinearFlushCachesVisitedCount = 0; -static unsigned int MaxNonlinearFlushCachesVisitedCount = 0; -static unsigned int IdealFlushCachesCount = 0; -static unsigned int MaxIdealFlushCachesCount = 0; -#endif - // Method call logging typedef int (*ObjCLogProc)(BOOL, const char *, const char *, SEL); -static int totalCacheFills NOBSS = 0; static int objcMsgLogFD = (-1); static ObjCLogProc objcMsgLogProc = &LogObjCMessageSend; static int objcMsgLogEnabled = 0; -// Error Messages -static const char -_errNoMem[] = "failed -- out of memory(%s, %u)", -_errAllocNil[] = "allocating nil object", -_errFreedObject[] = "message %s sent to freed object=0x%lx", -_errNonExistentObject[] = "message %s sent to non-existent object=0x%lx", -_errBadSel[] = "invalid selector %s", -_errNotSuper[] = "[%s poseAs:%s]: target not immediate superclass", -_errNewVars[] = "[%s poseAs:%s]: %s defines new instance variables"; - /*********************************************************************** * Information about multi-thread support: * @@ -513,83 +218,100 @@ _errNewVars[] = "[%s poseAs:%s]: %s defines new instance variables"; * atomic so that someone walking these chains will always geta valid * result. ***********************************************************************/ -/*********************************************************************** -* A static empty cache. All classes initially point at this cache. -* When the first message is sent it misses in the cache, and when -* the cache is grown it checks for this case and uses malloc rather -* than realloc. This avoids the need to check for NULL caches in the -* 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. -static const struct objc_class freedObjectClass = +/*********************************************************************** +* object_getClass. +**********************************************************************/ +Class object_getClass(id obj) { - Nil, // isa - Nil, // super_class - "FREED(id)", // name - 0, // version - 0, // info - 0, // instance_size - NULL, // ivars - NULL, // methodLists - (Cache) &emptyCache, // cache - NULL // protocols -}; - -static const struct objc_class nonexistentObjectClass = + if (obj) return obj->isa; + else return Nil; +} + + +/*********************************************************************** +* object_setClass. +**********************************************************************/ +Class object_setClass(id obj, Class cls) { - Nil, // isa - Nil, // super_class - "NONEXISTENT(id)", // name - 0, // version - 0, // info - 0, // instance_size - NULL, // ivars - NULL, // methodLists - (Cache) &emptyCache, // cache - NULL // protocols -}; + // fixme could check obj's block size vs. cls's instance size + if (obj) { + Class old = obj->isa; + obj->isa = cls; + return old; + } + else return Nil; +} + /*********************************************************************** * object_getClassName. **********************************************************************/ -const char * object_getClassName (id obj) +const char *object_getClassName(id obj) { - // Even nil objects have a class name, sort of - if (obj == nil) - return "nil"; - - // Retrieve name from object's class - return ((struct objc_class *) obj->isa)->name; + if (obj) return _class_getName(obj->isa); + else return "nil"; } /*********************************************************************** * object_getIndexedIvars. **********************************************************************/ -void * object_getIndexedIvars (id obj) +void *object_getIndexedIvars(id obj) { // ivars are tacked onto the end of the object - return ((char *) obj) + ((struct objc_class *) obj->isa)->instance_size; + if (obj) return ((char *) obj) + _class_getInstanceSize(obj->isa); + else return NULL; +} + + +Ivar object_setInstanceVariable(id obj, const char *name, void *value) +{ + Ivar ivar = NULL; + + if (obj && name) { + if ((ivar = class_getInstanceVariable(obj->isa, name))) { + objc_assign_ivar_internal( + (id)value, + obj, + ivar_getOffset(ivar)); + } + } + return ivar; +} + +Ivar object_getInstanceVariable(id obj, const char *name, void **value) +{ + if (obj && name) { + Ivar ivar; + void **ivaridx; + if ((ivar = class_getInstanceVariable(obj->isa, name))) { + ivaridx = (void **)((char *)obj + ivar_getOffset(ivar)); + if (value) *value = *ivaridx; + return ivar; + } + } + if (value) *value = NULL; + return NULL; +} + + +void object_setIvar(id obj, Ivar ivar, id value) +{ + if (obj && ivar) { + objc_assign_ivar_internal(value, obj, ivar_getOffset(ivar)); + } +} + + +id object_getIvar(id obj, Ivar ivar) +{ + if (obj && ivar) { + id *idx = (id *)((char *)obj + ivar_getOffset(ivar)); + return *idx; + } + return NULL; } @@ -606,14 +328,14 @@ static void object_cxxDestructFromClass(id obj, Class cls) // Call cls's dtor first, then superclasses's dtors. - for ( ; cls != NULL; cls = cls->super_class) { - if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) continue; + for ( ; cls != NULL; cls = _class_getSuperclass(cls)) { + if (!_class_hasCxxStructorsNoSuper(cls)) 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); + _class_getName(cls)); } (*dtor)(obj); } @@ -626,7 +348,7 @@ static void object_cxxDestructFromClass(id obj, Class cls) * Call C++ destructors on obj, if any. * Uses methodListLock and cacheUpdateLock. The caller must hold neither. **********************************************************************/ -void object_cxxDestruct(id obj) +__private_extern__ void object_cxxDestruct(id obj) { if (!obj) return; object_cxxDestructFromClass(obj, obj->isa); @@ -650,27 +372,28 @@ void object_cxxDestruct(id obj) static BOOL object_cxxConstructFromClass(id obj, Class cls) { id (*ctor)(id); + Class supercls = _class_getSuperclass(cls); // Call superclasses' ctors first, if any. - if (cls->super_class) { - BOOL ok = object_cxxConstructFromClass(obj, cls->super_class); + if (supercls) { + BOOL ok = object_cxxConstructFromClass(obj, supercls); 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 + if (!_class_hasCxxStructorsNoSuper(cls)) 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); + _objc_inform("CXX: calling C++ constructors for class %s", _class_getName(cls)); } 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); + if (supercls) object_cxxDestructFromClass(obj, supercls); return NO; } @@ -683,1748 +406,459 @@ static BOOL object_cxxConstructFromClass(id obj, Class cls) * caught and discarded. Any partial construction is destructed. * Uses methodListLock and cacheUpdateLock. The caller must hold neither. **********************************************************************/ -BOOL object_cxxConstruct(id obj) +__private_extern__ BOOL object_cxxConstruct(id obj) { if (!obj) return YES; return object_cxxConstructFromClass(obj, obj->isa); } +@interface objc_resolver ++(BOOL)resolveClassMethod:(SEL)sel; ++(BOOL)resolveInstanceMethod:(SEL)sel; +@end + /*********************************************************************** -* _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, C++ default constructors are called, and all other fields are zeroed. +* _class_resolveClassMethod +* Call +resolveClassMethod and return the method added or NULL. +* cls should be a metaclass. +* Assumes the method doesn't exist already. **********************************************************************/ -static id _internal_class_createInstanceFromZone (Class aClass, - unsigned nIvarBytes, - void * z) +static Method _class_resolveClassMethod(Class cls, SEL sel) { - id obj; - register unsigned byteCount; + BOOL resolved; + Method meth = NULL; + Class clsInstance; - // Can't create something for nothing - if (aClass == Nil) + if (!look_up_method(cls, @selector(resolveClassMethod:), + YES /*cache*/, NO /*resolver*/)) { - __objc_error ((id) aClass, _errAllocNil, 0); - return nil; + return NULL; } - // Allocate and initialize - byteCount = ((struct objc_class *) aClass)->instance_size + nIvarBytes; - obj = (id) malloc_zone_calloc (z, 1, byteCount); - if (!obj) - { - __objc_error ((id) aClass, _errNoMem, ((struct objc_class *) aClass)->name, nIvarBytes); - return nil; + // GrP fixme same hack as +initialize + if (strncmp(_class_getName(cls), "_%", 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(_class_getName(cls), '%'); // get posee's real name + clsInstance = objc_getClass(baseName); + } else { + clsInstance = objc_getClass(_class_getName(cls)); } - - // 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; + + resolved = [clsInstance resolveClassMethod:sel]; + + if (resolved) { + // +resolveClassMethod adds to self->isa + meth = look_up_method(cls, sel, YES/*cache*/, NO/*resolver*/); + + if (!meth) { + // Method resolver didn't add anything? + _objc_inform("+[%s resolveClassMethod:%s] returned YES, but " + "no new implementation of +[%s %s] was found", + class_getName(cls), + sel_getName(sel), + class_getName(cls), + sel_getName(sel)); + return NULL; + } } - return obj; + return meth; } + /*********************************************************************** -* _internal_class_createInstance. Allocate an instance of the specified -* class with the specified number of bytes for indexed variables, in -* the default zone, using _internal_class_createInstanceFromZone. +* _class_resolveInstanceMethod +* Call +resolveInstanceMethod and return the method added or NULL. +* cls should be a non-meta class. +* Assumes the method doesn't exist already. **********************************************************************/ -static id _internal_class_createInstance (Class aClass, - unsigned nIvarBytes) +static Method _class_resolveInstanceMethod(Class cls, SEL sel) { - return _internal_class_createInstanceFromZone (aClass, - nIvarBytes, - malloc_default_zone ()); + BOOL resolved; + Method meth = NULL; + + if (!look_up_method(((id)cls)->isa, @selector(resolveInstanceMethod:), + YES /*cache*/, NO /*resolver*/)) + { + return NULL; + } + + resolved = [cls resolveInstanceMethod:sel]; + + if (resolved) { + // +resolveClassMethod adds to self + meth = look_up_method(cls, sel, YES/*cache*/, NO/*resolver*/); + + if (!meth) { + // Method resolver didn't add anything? + _objc_inform("+[%s resolveInstanceMethod:%s] returned YES, but " + "no new implementation of %c[%s %s] was found", + class_getName(cls), + sel_getName(sel), + class_isMetaClass(cls) ? '+' : '-', + class_getName(cls), + sel_getName(sel)); + return NULL; + } + } + + return meth; } -id (*_poseAs)() = (id (*)())class_poseAs; -id (*_alloc)(Class, unsigned) = _internal_class_createInstance; -id (*_zoneAlloc)(Class, unsigned, void *) = _internal_class_createInstanceFromZone; /*********************************************************************** -* class_createInstanceFromZone. Allocate an instance of the specified -* class with the specified number of bytes for indexed variables, in -* the specified zone, using _zoneAlloc. +* _class_resolveMethod +* Call +resolveClassMethod or +resolveInstanceMethod and return +* the method added or NULL. +* Assumes the method doesn't exist already. **********************************************************************/ -id class_createInstanceFromZone (Class aClass, - unsigned nIvarBytes, - void * z) +static Method _class_resolveMethod(Class cls, SEL sel) { - // _zoneAlloc can be overridden, but is initially set to - // _internal_class_createInstanceFromZone - return (*_zoneAlloc) (aClass, nIvarBytes, z); + Method meth = NULL; + + if (_class_isMetaClass(cls)) { + meth = _class_resolveClassMethod(cls, sel); + } + if (!meth) { + meth = _class_resolveInstanceMethod(cls, sel); + } + + if (PrintResolving && meth) { + _objc_inform("RESOLVE: method %c[%s %s] dynamically resolved to %p", + class_isMetaClass(cls) ? '+' : '-', + class_getName(cls), sel_getName(sel), + method_getImplementation(meth)); + } + + return meth; } + /*********************************************************************** -* class_createInstance. Allocate an instance of the specified class with -* the specified number of bytes for indexed variables, using _alloc. +* look_up_method +* Look up a method in the given class and its superclasses. +* If withCache==YES, look in the class's method cache too. +* If withResolver==YES, call +resolveClass/InstanceMethod too. +* Returns NULL if the method is not found. +* +forward:: entries are not returned. **********************************************************************/ -id class_createInstance (Class aClass, - unsigned nIvarBytes) +static Method look_up_method(Class cls, SEL sel, + BOOL withCache, BOOL withResolver) { - // _alloc can be overridden, but is initially set to - // _internal_class_createInstance - return (*_alloc) (aClass, nIvarBytes); + Method meth = NULL; + + if (withCache) { + meth = _cache_getMethod(cls, sel, &_objc_msgForward); + if (!meth && (IMP)_objc_msgForward == _cache_getImp(cls, sel)) { + // Cache contains forward:: . Stop searching. + return NULL; + } + } + + if (!meth) meth = _class_getMethod(cls, sel); + + if (!meth && withResolver) meth = _class_resolveMethod(cls, sel); + + return meth; } + /*********************************************************************** -* class_setVersion. Record the specified version with the class. +* class_getInstanceMethod. Return the instance method for the +* specified class and selector. **********************************************************************/ -void class_setVersion (Class aClass, - int version) +Method class_getInstanceMethod(Class cls, SEL sel) { - ((struct objc_class *) aClass)->version = version; + if (!cls || !sel) return NULL; + + /* Cache is not used because historically it wasn't. */ + return look_up_method(cls, sel, NO/*cache*/, YES/*resolver*/); } /*********************************************************************** -* class_getVersion. Return the version recorded with the class. +* class_getClassMethod. Return the class method for the specified +* class and selector. **********************************************************************/ -int class_getVersion (Class aClass) +Method class_getClassMethod(Class cls, SEL sel) { - return ((struct objc_class *) aClass)->version; -} + if (!cls || !sel) return NULL; - -static inline Method _findNamedMethodInList(struct objc_method_list * mlist, const char *meth_name) { - int i; - if (!mlist) return NULL; - for (i = 0; i < mlist->method_count; i++) { - Method m = &mlist->method_list[i]; - if (*((const char *)m->method_name) == *meth_name && 0 == strcmp((const char *)(m->method_name), meth_name)) { - return m; - } - } - return NULL; + return class_getInstanceMethod(_class_getMeta(cls), sel); } /*********************************************************************** -* 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. +* class_getInstanceVariable. Return the named instance variable. **********************************************************************/ -// 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) +Ivar class_getInstanceVariable(Class cls, const char *name) { - 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; + if (!cls || !name) return NULL; + + return _class_getVariable(cls, name); } /*********************************************************************** -* 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); +* class_getClassVariable. Return the named class variable. **********************************************************************/ -static struct objc_method_list *nextMethodList(struct objc_class *cls, - void **it) +Ivar class_getClassVariable(Class cls, const char *name) { - 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; - } - } - } + if (!cls) return 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; - } + return class_getInstanceVariable(((id)cls)->isa, name); } -/* 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; - for (i = 0; i < mlist->method_count; i++) { - Method m = &mlist->method_list[i]; - if (m->method_name == sel) { - return m; - } - } - return NULL; +__private_extern__ Property +property_list_nth(const struct objc_property_list *plist, uint32_t i) +{ + return (Property)(i*plist->entsize + (char *)&plist->first); } -static inline Method _findMethodInClass(Class cls, SEL sel) __attribute__((always_inline)); -static inline Method _findMethodInClass(Class cls, SEL sel) { - // 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); +__private_extern__ size_t +property_list_size(const struct objc_property_list *plist) +{ + return sizeof(struct objc_property_list) + (plist->count-1)*plist->entsize; +} + +__private_extern__ Property * +copyPropertyList(struct objc_property_list *plist, unsigned int *outCount) +{ + Property *result = NULL; + unsigned int count = 0; + + if (plist) { + count = plist->count; } - 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; + + if (count > 0) { + unsigned int i; + result = malloc((count+1) * sizeof(Property)); + + for (i = 0; i < count; i++) { + result[i] = property_list_nth(plist, i); } - return NULL; + result[i] = NULL; } + + if (outCount) *outCount = count; + return result; } -static inline Method _getMethod(Class cls, SEL sel) { - for (; cls; cls = cls->super_class) { - Method m; - m = _findMethodInClass(cls, sel); - if (m) return m; - } - return NULL; +const char *property_getName(Property prop) +{ + return prop->name; } -// fixme for gc debugging temporary use -__private_extern__ IMP findIMPInClass(Class cls, SEL sel) +const char *property_getAttributes(Property prop) { - Method m = _findMethodInClass(cls, sel); - if (m) return m->method_imp; - else return NULL; + return prop->attributes; } + /*********************************************************************** -* class_getInstanceMethod. Return the instance method for the -* specified class and selector. +* _objc_flush_caches. Flush the caches of the specified class and any +* of its subclasses. If cls is a meta-class, only meta-class (i.e. +* class method) caches are flushed. If cls is an instance-class, both +* instance-class and meta-class caches are flushed. **********************************************************************/ -Method class_getInstanceMethod (Class aClass, - SEL aSelector) +void _objc_flush_caches(Class cls) { - Method result; - - // Need both a class and a selector - if (!aClass || !aSelector) - return NULL; - - // Go to the class - OBJC_LOCK(&methodListLock); - result = _getMethod (aClass, aSelector); - OBJC_UNLOCK(&methodListLock); - return result; + flush_caches (cls, YES); } + /*********************************************************************** -* class_getClassMethod. Return the class method for the specified -* class and selector. +* _freedHandler. **********************************************************************/ -Method class_getClassMethod (Class aClass, - SEL aSelector) +static void _freedHandler(id obj, SEL sel) { - Method result; - - // Need both a class and a selector - if (!aClass || !aSelector) - return NULL; - - // Go to the class or isa - OBJC_LOCK(&methodListLock); - result = _getMethod (GETMETA(aClass), aSelector); - OBJC_UNLOCK(&methodListLock); - return result; + __objc_error (obj, "message %s sent to freed object=%p", + sel_getName(sel), obj); } /*********************************************************************** -* class_getVariable. Return the named instance variable. +* _nonexistentHandler. **********************************************************************/ -static Ivar class_getVariable (Class cls, - const char * name) +static void _nonexistentHandler(id obj, SEL sel) { - struct objc_class * thisCls; - - // Outer loop - search the class and its superclasses - for (thisCls = cls; thisCls != Nil; thisCls = ((struct objc_class *) thisCls)->super_class) - { - int index; - Ivar thisIvar; - - // Skip class having no ivars - if (!thisCls->ivars) - continue; - - // Inner loop - search the given class - thisIvar = &thisCls->ivars->ivar_list[0]; - for (index = 0; index < thisCls->ivars->ivar_count; index += 1) - { - // Check this ivar's name. Be careful because the - // compiler generates ivar entries with NULL ivar_name - // (e.g. for anonymous bit fields). - if ((thisIvar->ivar_name) && - (strcmp (name, thisIvar->ivar_name) == 0)) - return thisIvar; - - // Move to next ivar - thisIvar += 1; - } - } - - // Not found - return NULL; + __objc_error (obj, "message %s sent to non-existent object=%p", + sel_getName(sel), obj); } + /*********************************************************************** -* class_getInstanceVariable. Return the named instance variable. -* -* Someday add class_getClassVariable (). +* class_respondsToSelector. **********************************************************************/ -Ivar class_getInstanceVariable (Class aClass, - const char * name) +BOOL class_respondsToMethod(Class cls, SEL sel) { - // Must have a class and a name - if (!aClass || !name) - return NULL; + OBJC_WARN_DEPRECATED; - // Look it up - return class_getVariable (aClass, name); + return class_respondsToSelector(cls, sel); } -/*********************************************************************** -* flush_caches. Flush the instance and optionally class method caches -* of cls and all its subclasses. -* -* Specifying Nil for the class "all classes." -**********************************************************************/ -static void flush_caches(Class cls, BOOL flush_meta) + +BOOL class_respondsToSelector(Class cls, SEL sel) { - int numClasses = 0, newNumClasses; - struct objc_class * * classes = NULL; - int i; - struct objc_class * clsObject; -#ifdef OBJC_INSTRUMENTED - unsigned int classesVisited; - unsigned int subclassCount; -#endif + Method meth; - // Do nothing if class has no cache - // This check is safe to do without any cache locks. - if (cls && !((struct objc_class *) cls)->cache) - return; + if (!sel || !cls) return NO; - newNumClasses = objc_getClassList((Class *)NULL, 0); - while (numClasses < newNumClasses) { - numClasses = newNumClasses; - classes = _realloc_internal(classes, sizeof(Class) * numClasses); - newNumClasses = objc_getClassList((Class *)classes, numClasses); + meth = look_up_method(cls, sel, YES/*cache*/, YES/*resolver*/); + if (meth) { + _cache_fill(cls, meth, sel); + return YES; + } else { + // Cache negative result + _cache_addForwardEntry(cls, sel); + return NO; } - numClasses = newNumClasses; +} - OBJC_LOCK(&cacheUpdateLock); - - // Handle nil and root instance class specially: flush all - // instance and class method caches. Nice that this - // loop is linear vs the N-squared loop just below. - if (!cls || !((struct objc_class *) cls)->super_class) - { -#ifdef OBJC_INSTRUMENTED - LinearFlushCachesCount += 1; - classesVisited = 0; - subclassCount = 0; -#endif - // Traverse all classes in the hash table - for (i = 0; i < numClasses; i++) - { - struct objc_class * metaClsObject; -#ifdef OBJC_INSTRUMENTED - classesVisited += 1; -#endif - clsObject = classes[i]; - - // Skip class that is known not to be a subclass of this root - // (the isa pointer of any meta class points to the meta class - // of the root). - // NOTE: When is an isa pointer of a hash tabled class ever nil? - metaClsObject = clsObject->isa; - if (cls && metaClsObject && cls->isa != metaClsObject->isa) - { - continue; - } - -#ifdef OBJC_INSTRUMENTED - subclassCount += 1; -#endif - - _cache_flush (clsObject); - if (flush_meta && metaClsObject != NULL) { - _cache_flush (metaClsObject); - } - } -#ifdef OBJC_INSTRUMENTED - LinearFlushCachesVisitedCount += classesVisited; - if (classesVisited > MaxLinearFlushCachesVisitedCount) - MaxLinearFlushCachesVisitedCount = classesVisited; - IdealFlushCachesCount += subclassCount; - if (subclassCount > MaxIdealFlushCachesCount) - MaxIdealFlushCachesCount = subclassCount; -#endif - - OBJC_UNLOCK(&cacheUpdateLock); - _free_internal(classes); - return; - } - - // Outer loop - flush any cache that could now get a method from - // cls (i.e. the cache associated with cls and any of its subclasses). -#ifdef OBJC_INSTRUMENTED - NonlinearFlushCachesCount += 1; - classesVisited = 0; - subclassCount = 0; -#endif - for (i = 0; i < numClasses; i++) - { - struct objc_class * clsIter; - -#ifdef OBJC_INSTRUMENTED - NonlinearFlushCachesClassCount += 1; -#endif - clsObject = classes[i]; - - // Inner loop - Process a given class - clsIter = clsObject; - while (clsIter) - { - -#ifdef OBJC_INSTRUMENTED - classesVisited += 1; -#endif - // Flush clsObject instance method cache if - // clsObject is a subclass of cls, or is cls itself - // Flush the class method cache if that was asked for - if (clsIter == cls) - { -#ifdef OBJC_INSTRUMENTED - subclassCount += 1; -#endif - _cache_flush (clsObject); - if (flush_meta) - _cache_flush (clsObject->isa); - - break; - - } - - // Flush clsObject class method cache if cls is - // the meta class of clsObject or of one - // of clsObject's superclasses - else if (clsIter->isa == cls) - { -#ifdef OBJC_INSTRUMENTED - subclassCount += 1; -#endif - _cache_flush (clsObject->isa); - break; - } - - // Move up superclass chain - else if (ISINITIALIZED(clsIter)) - clsIter = clsIter->super_class; - - // clsIter is not initialized, so its cache - // must be empty. This happens only when - // clsIter == clsObject, because - // superclasses are initialized before - // subclasses, and this loop traverses - // from sub- to super- classes. - else - break; - } - } -#ifdef OBJC_INSTRUMENTED - NonlinearFlushCachesVisitedCount += classesVisited; - if (classesVisited > MaxNonlinearFlushCachesVisitedCount) - MaxNonlinearFlushCachesVisitedCount = classesVisited; - IdealFlushCachesCount += subclassCount; - if (subclassCount > MaxIdealFlushCachesCount) - MaxIdealFlushCachesCount = subclassCount; -#endif - - OBJC_UNLOCK(&cacheUpdateLock); - _free_internal(classes); -} - -/*********************************************************************** -* _objc_flush_caches. Flush the caches of the specified class and any -* of its subclasses. If cls is a meta-class, only meta-class (i.e. -* class method) caches are flushed. If cls is an instance-class, both -* instance-class and meta-class caches are flushed. -**********************************************************************/ -void _objc_flush_caches (Class cls) -{ - flush_caches (cls, YES); -} - -/*********************************************************************** -* do_not_remove_this_dummy_function. -**********************************************************************/ -void do_not_remove_this_dummy_function (void) -{ - (void) class_nextMethodList (NULL, NULL); -} - - -/*********************************************************************** -* class_nextMethodList. -* External version of nextMethodList(). -* -* 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) -{ - struct objc_method_list *result; - OBJC_LOCK(&methodListLock); - result = nextMethodList(cls, it); - OBJC_UNLOCK(&methodListLock); - return result; -} - -/*********************************************************************** -* _dummy. -**********************************************************************/ -void _dummy (void) -{ - (void) class_nextMethodList (Nil, NULL); -} - -/*********************************************************************** -* class_addMethods. -* -* Formerly class_addInstanceMethods () -**********************************************************************/ -void class_addMethods (Class cls, - struct objc_method_list * meths) -{ - // 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, - // this will still flush it and any of its sub-meta classes. - flush_caches (cls, NO); -} - -/*********************************************************************** -* class_addClassMethods. -* -* Obsolete (for binary compatibility only). -**********************************************************************/ -void class_addClassMethods (Class cls, - struct objc_method_list * meths) -{ - class_addMethods (((struct objc_class *) cls)->isa, meths); -} - -/*********************************************************************** -* class_removeMethods. -**********************************************************************/ -void class_removeMethods (Class cls, - struct objc_method_list * meths) -{ - // 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, - // this will still flush it and any of its sub-meta classes. - flush_caches (cls, NO); -} - -/*********************************************************************** -* addClassToOriginalClass. Add to a hash table of classes involved in -* a posing situation. We use this when we need to get to the "original" -* class for some particular name through the function objc_getOrigClass. -* For instance, the implementation of [super ...] will use this to be -* sure that it gets hold of the correct super class, so that no infinite -* loops will occur if the class it appears in is involved in posing. -* -* We use the classLock to guard the hash table. -* -* See tracker bug #51856. -**********************************************************************/ - -static NXMapTable * posed_class_hash = NULL; -static NXMapTable * posed_class_to_original_class_hash = NULL; - -static void addClassToOriginalClass (Class posingClass, - Class originalClass) -{ - // Install hash table when it is first needed - if (!posed_class_to_original_class_hash) - { - posed_class_to_original_class_hash = - NXCreateMapTableFromZone (NXPtrValueMapPrototype, - 8, - _objc_internal_zone ()); - } - - // Add pose to hash table - NXMapInsert (posed_class_to_original_class_hash, - posingClass, - originalClass); -} - -/*********************************************************************** -* getOriginalClassForPosingClass. -**********************************************************************/ -Class getOriginalClassForPosingClass (Class posingClass) -{ - return NXMapGet (posed_class_to_original_class_hash, posingClass); -} - -/*********************************************************************** -* objc_getOrigClass. -**********************************************************************/ -Class objc_getOrigClass (const char * name) -{ - struct objc_class * ret; - - // Look for class among the posers - ret = Nil; - OBJC_LOCK(&classLock); - if (posed_class_hash) - ret = (Class) NXMapGet (posed_class_hash, name); - OBJC_UNLOCK(&classLock); - if (ret) - return ret; - - // Not a poser. Do a normal lookup. - ret = objc_getClass (name); - if (!ret) - _objc_inform ("class `%s' not linked into application", name); - - return ret; -} - -/*********************************************************************** -* _objc_addOrigClass. This function is only used from class_poseAs. -* Registers the original class names, before they get obscured by -* posing, so that [super ..] will work correctly from categories -* in posing classes and in categories in classes being posed for. -**********************************************************************/ -static void _objc_addOrigClass (Class origClass) -{ - OBJC_LOCK(&classLock); - - // Create the poser's hash table on first use - if (!posed_class_hash) - { - posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype, - 8, - _objc_internal_zone ()); - } - - // Add the named class iff it is not already there (or collides?) - if (NXMapGet (posed_class_hash, ((struct objc_class *)origClass)->name) == 0) - NXMapInsert (posed_class_hash, ((struct objc_class *)origClass)->name, origClass); - - OBJC_UNLOCK(&classLock); -} /*********************************************************************** -* class_poseAs. -* -* !!! class_poseAs () does not currently flush any caches. +* class_getMethodImplementation. +* Returns the IMP that would be invoked if [obj sel] were sent, +* where obj is an instance of class cls. **********************************************************************/ -Class class_poseAs (Class imposter, - Class original) +IMP class_lookupMethod(Class cls, SEL sel) { - struct objc_class * clsObject; - char * imposterNamePtr; - NXHashTable * class_hash; - NXHashState state; - struct objc_class * copy; -#ifdef OBJC_CLASS_REFS - header_info * hInfo; -#endif - - // Trivial case is easy - if (imposter == original) - return imposter; - - // Imposter must be an immediate subclass of the original - if (((struct objc_class *)imposter)->super_class != original) { - __objc_error(imposter, _errNotSuper, ((struct objc_class *)imposter)->name, ((struct objc_class *)original)->name); - } - - // Can't pose when you have instance variables (how could it work?) - if (((struct objc_class *)imposter)->ivars) { - __objc_error(imposter, _errNewVars, ((struct objc_class *)imposter)->name, ((struct objc_class *)original)->name, ((struct objc_class *)imposter)->name); - } - - // Build a string to use to replace the name of the original class. - #define imposterNamePrefix "_%" - imposterNamePtr = _malloc_internal(strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1); - strcpy(imposterNamePtr, imposterNamePrefix); - strcat(imposterNamePtr, ((struct objc_class *)original)->name); - #undef imposterNamePrefix - - // We lock the class hashtable, so we are thread safe with respect to - // calls to objc_getClass (). However, the class names are not - // changed atomically, nor are all of the subclasses updated - // atomically. I have ordered the operations so that you will - // never crash, but you may get inconsistent results.... - - // Register the original class so that [super ..] knows - // exactly which classes are the "original" classes. - _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 (); - - // Remove both the imposter and the original class. - NXHashRemove (class_hash, imposter); - NXHashRemove (class_hash, original); - - NXHashInsert (class_hash, copy); - addClassToOriginalClass (imposter, copy); - - // Mark the imposter as such - _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; - ((struct objc_class *)imposter)->isa->name = ((struct objc_class *)original)->isa->name; - - // Also copy the version field to avoid archiving problems. - ((struct objc_class *)imposter)->version = ((struct objc_class *)original)->version; - - // Change all subclasses of the original to point to the imposter. - state = NXInitHashState (class_hash); - while (NXNextHashState (class_hash, &state, (void **) &clsObject)) - { - while ((clsObject) && (clsObject != imposter) && - (clsObject != copy)) - { - if (clsObject->super_class == original) - { - clsObject->super_class = imposter; - clsObject->isa->super_class = ((struct objc_class *)imposter)->isa; - // We must flush caches here! - break; - } - - clsObject = clsObject->super_class; - } - } - -#ifdef OBJC_CLASS_REFS - // Replace the original with the imposter in all class refs - // Major loop - process all headers - for (hInfo = _objc_headerStart(); hInfo != NULL; hInfo = hInfo->next) - { - Class * cls_refs; - unsigned int refCount; - unsigned int index; - - // Get refs associated with this header - cls_refs = (Class *) _getObjcClassRefs ((headerType *) hInfo->mhdr, &refCount); - if (!cls_refs || !refCount) - continue; - - // Minor loop - process this header's refs - cls_refs = (Class *) ((unsigned long) cls_refs + hInfo->image_slide); - for (index = 0; index < refCount; index += 1) - { - if (cls_refs[index] == original) - cls_refs[index] = imposter; - } - } -#endif // OBJC_CLASS_REFS - - // Change the name of the original class. - ((struct objc_class *)original)->name = imposterNamePtr + 1; - ((struct objc_class *)original)->isa->name = imposterNamePtr; - - // Restore the imposter and the original class with their new names. - NXHashInsert (class_hash, imposter); - NXHashInsert (class_hash, original); - - OBJC_UNLOCK(&classLock); - - return imposter; -} - -/*********************************************************************** -* _freedHandler. -**********************************************************************/ -static void _freedHandler (id self, - SEL sel) -{ - __objc_error (self, _errFreedObject, SELNAME(sel), self); -} - -/*********************************************************************** -* _nonexistentHandler. -**********************************************************************/ -static void _nonexistentHandler (id self, - SEL sel) -{ - __objc_error (self, _errNonExistentObject, SELNAME(sel), self); -} - -/*********************************************************************** -* class_respondsToMethod. -* -* Called from -[Object respondsTo:] and +[Object instancesRespondTo:] -**********************************************************************/ -BOOL class_respondsToMethod (Class cls, - SEL sel) -{ - Method meth; - IMP imp; - - // No one responds to zero! - if (!sel) - return NO; - - imp = _cache_getImp(cls, sel); - if (imp) { - // Found method in cache. - // If the cache entry is forward::, the class does not respond to sel. - return (imp != &_objc_msgForward); - } - - // Handle cache miss - OBJC_LOCK(&methodListLock); - meth = _getMethod(cls, sel); - OBJC_UNLOCK(&methodListLock); - if (meth) { - _cache_fill(cls, meth, sel); - return YES; - } - - // Not implemented. Use _objc_msgForward. - _cache_addForwardEntry(cls, sel); - - return NO; -} - - -/*********************************************************************** -* class_lookupMethod. -* -* Called from -[Object methodFor:] and +[Object instanceMethodFor:] -**********************************************************************/ -IMP class_lookupMethod (Class cls, - SEL sel) -{ - IMP imp; + OBJC_WARN_DEPRECATED; // No one responds to zero! if (!sel) { - __objc_error(cls, _errBadSel, sel); - } - - imp = _cache_getImp(cls, sel); - if (imp) return imp; - - // Handle cache miss - return _class_lookupMethodAndLoadCache (cls, sel); -} - -/*********************************************************************** -* 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. -**********************************************************************/ -__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); -} - - -/*********************************************************************** -* _cache_malloc. -* -* Called from _cache_create() and cache_expand() -* Cache locks: cacheUpdateLock must be held by the caller. -**********************************************************************/ -static Cache _cache_malloc(int slotCount) -{ - Cache new_cache; - size_t size; - - // 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); - 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; -} - - -/*********************************************************************** -* _cache_create. -* -* Called from _cache_expand(). -* Cache locks: cacheUpdateLock must be held by the caller. -**********************************************************************/ -Cache _cache_create (Class cls) -{ - Cache new_cache; - int slotCount; - - // Select appropriate size - slotCount = (ISMETA(cls)) ? INIT_META_CACHE_SIZE : INIT_CACHE_SIZE; - - new_cache = _cache_malloc(slotCount); - - // Install the cache - ((struct objc_class *)cls)->cache = new_cache; - - // Clear the cache flush flag so that we will not flush this cache - // before expanding it for the first time. - _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) - _class_clearInfo(cls, CLS_GROW_CACHE); - - // Return our creation - return new_cache; -} - -/*********************************************************************** -* _cache_expand. -* -* Called from _cache_fill () -* Cache locks: cacheUpdateLock must be held by the caller. -**********************************************************************/ -static Cache _cache_expand (Class cls) -{ - Cache old_cache; - Cache new_cache; - unsigned int slotCount; - unsigned int index; - - // First growth goes from emptyCache to a real one - old_cache = ((struct objc_class *)cls)->cache; - if (old_cache == &emptyCache) - return _cache_create (cls); - - // iff _class_slow_grow, trade off actual cache growth with re-using - // the current one, so that growth only happens every odd time - if (_class_slow_grow) - { - // CLS_GROW_CACHE controls every-other-time behavior. If it - // 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) - _class_clearInfo(cls, CLS_GROW_CACHE); - - // Reuse the current cache storage this time - else - { - // Clear the valid-entry counter - old_cache->occupied = 0; - - // Invalidate all the cache entries - for (index = 0; index < old_cache->mask + 1; index += 1) - { - // Remember what this entry was, so we can possibly - // deallocate it after the bucket has been invalidated - Method oldEntry = old_cache->buckets[index]; - // Skip invalid entry - if (!CACHE_BUCKET_VALID(old_cache->buckets[index])) - continue; - - // Invalidate this entry - CACHE_BUCKET_VALID(old_cache->buckets[index]) = NULL; - - // Deallocate "forward::" entry - if (CACHE_BUCKET_IMP(oldEntry) == &_objc_msgForward) - { - _cache_collect_free (oldEntry, sizeof(struct objc_method), NO); - } - } - - // Set the slow growth flag so the cache is next grown - _class_setInfo(cls, CLS_GROW_CACHE); - - // Return the same old cache, freshly emptied - return old_cache; - } - - } - - // Double the cache size - slotCount = (old_cache->mask + 1) << 1; - - new_cache = _cache_malloc(slotCount); - -#ifdef OBJC_INSTRUMENTED - // Propagate the instrumentation data - { - CacheInstrumentation * oldCacheData; - CacheInstrumentation * newCacheData; - - oldCacheData = CACHE_INSTRUMENTATION(old_cache); - newCacheData = CACHE_INSTRUMENTATION(new_cache); - bcopy ((const char *)oldCacheData, (char *)newCacheData, sizeof(CacheInstrumentation)); - } -#endif - - // iff _class_uncache, copy old cache entries into the new cache - if (_class_uncache == 0) - { - int newMask; - - newMask = new_cache->mask; - - // Look at all entries in the old cache - for (index = 0; index < old_cache->mask + 1; index += 1) - { - int index2; - - // Skip invalid entry - if (!CACHE_BUCKET_VALID(old_cache->buckets[index])) - continue; - - // Hash the old entry into the new table - index2 = CACHE_HASH(CACHE_BUCKET_NAME(old_cache->buckets[index]), - newMask); - - // Find an available spot, at or following the hashed spot; - // Guaranteed to not infinite loop, because table has grown - for (;;) - { - if (!CACHE_BUCKET_VALID(new_cache->buckets[index2])) - { - new_cache->buckets[index2] = old_cache->buckets[index]; - break; - } - - index2 += 1; - index2 &= newMask; - } - - // Account for the addition - new_cache->occupied += 1; - } - - // Set the cache flush flag so that we will flush this cache - // before expanding it again. - _class_setInfo(cls, CLS_FLUSH_CACHE); - } - - // Deallocate "forward::" entries from the old cache - else - { - for (index = 0; index < old_cache->mask + 1; index += 1) - { - if (CACHE_BUCKET_VALID(old_cache->buckets[index]) && - CACHE_BUCKET_IMP(old_cache->buckets[index]) == &_objc_msgForward) - { - _cache_collect_free (old_cache->buckets[index], sizeof(struct objc_method), NO); - } - } - } - - // Install new cache - ((struct objc_class *)cls)->cache = new_cache; - - // Deallocate old cache, try freeing all the garbage - _cache_collect_free (old_cache, old_cache->mask * sizeof(Method), YES); - return new_cache; -} - -/*********************************************************************** -* instrumentObjcMessageSends/logObjcMessageSends. -**********************************************************************/ -static int LogObjCMessageSend (BOOL isClassMethod, - const char * objectsClass, - const char * implementingClass, - SEL selector) -{ - char buf[ 1024 ]; - - // Create/open the log file - if (objcMsgLogFD == (-1)) - { - snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ()); - 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 - snprintf(buf, sizeof(buf), "%c %s %s %s\n", - isClassMethod ? '+' : '-', - objectsClass, - implementingClass, - (char *) selector); - - write (objcMsgLogFD, buf, strlen(buf)); - - // Tell caller to not cache the method - return 0; -} - -void instrumentObjcMessageSends (BOOL flag) -{ - int enabledValue = (flag) ? 1 : 0; - - // Shortcut NOP - if (objcMsgLogEnabled == enabledValue) - return; - - // If enabling, flush all method caches so we get some traces - if (flag) - flush_caches (Nil, YES); - - // Sync our log file - if (objcMsgLogFD != (-1)) - fsync (objcMsgLogFD); - - objcMsgLogEnabled = enabledValue; -} - -void logObjcMessageSends (ObjCLogProc logProc) -{ - if (logProc) - { - objcMsgLogProc = logProc; - objcMsgLogEnabled = 1; - } - else - { - objcMsgLogProc = logProc; - objcMsgLogEnabled = 0; - } - - if (objcMsgLogFD != (-1)) - fsync (objcMsgLogFD); -} - - -/*********************************************************************** -* _cache_fill. Add the specified method to the specified class' cache. -* Returns NO if the cache entry wasn't added: cache was busy, -* class is still being initialized, new entry is a duplicate. -* -* Called only from _class_lookupMethodAndLoadCache and -* class_respondsToMethod and _cache_addForwardEntry. -* -* Cache locks: cacheUpdateLock must not be held. -**********************************************************************/ -static BOOL _cache_fill(Class cls, Method smt, SEL sel) -{ - unsigned int newOccupied; - arith_t index; - Method *buckets; - Cache cache; - - // Never cache before +initialize is done - if (!ISINITIALIZED(cls)) { - return NO; - } - - // Keep tally of cache additions - totalCacheFills += 1; - - OBJC_LOCK(&cacheUpdateLock); - - cache = ((struct objc_class *)cls)->cache; - - // Check for duplicate entries, if we're in the mode - if (traceDuplicates) - { - int index2; - arith_t mask = cache->mask; - buckets = cache->buckets; - - // Scan the cache - for (index2 = 0; index2 < mask + 1; index2 += 1) - { - // Skip invalid or non-duplicate entry - if ((!CACHE_BUCKET_VALID(buckets[index2])) || - (strcmp ((char *) CACHE_BUCKET_NAME(buckets[index2]), (char *) smt->method_name) != 0)) - continue; - - // Tally duplication, but report iff wanted - cacheFillDuplicates += 1; - if (traceDuplicatesVerbose) - { - _objc_inform ("Cache fill duplicate #%d: found %x adding %x: %s\n", - cacheFillDuplicates, - (unsigned int) CACHE_BUCKET_NAME(buckets[index2]), - (unsigned int) smt->method_name, - (char *) smt->method_name); - } - } - } - - // Make sure the entry wasn't added to the cache by some other thread - // before we grabbed the cacheUpdateLock. - // Don't use _cache_getMethod() because _cache_getMethod() doesn't - // return forward:: entries. - if (_cache_getImp(cls, sel)) { - OBJC_UNLOCK(&cacheUpdateLock); - return NO; // entry is already cached, didn't add new one - } - - // Use the cache as-is if it is less than 3/4 full - newOccupied = cache->occupied + 1; - if ((newOccupied * 4) <= (cache->mask + 1) * 3) { - // Cache is less than 3/4 full. - cache->occupied = newOccupied; - } else { - // Cache is too full. Flush it or expand it. - if ((((struct objc_class * )cls)->info & CLS_FLUSH_CACHE) != 0) { - _cache_flush (cls); - } else { - cache = _cache_expand (cls); - } - - // Account for the addition - cache->occupied += 1; - } - - // Insert the new entry. This can be done by either: - // (a) Scanning for the first unused spot. Easy! - // (b) Opening up an unused spot by sliding existing - // entries down by one. The benefit of this - // extra work is that it puts the most recently - // loaded entries closest to where the selector - // hash starts the search. - // - // The loop is a little more complicated because there - // are two kinds of entries, so there have to be two ways - // to slide them. - buckets = cache->buckets; - index = CACHE_HASH(sel, cache->mask); - for (;;) - { - // Slide existing entries down by one - Method saveMethod; - - // Copy current entry to a local - saveMethod = buckets[index]; - - // Copy previous entry (or new entry) to current slot - buckets[index] = smt; - - // Done if current slot had been invalid - if (saveMethod == NULL) - break; - - // Prepare to copy saved value into next slot - smt = saveMethod; - - // Move on to next slot - index += 1; - index &= cache->mask; - } - - OBJC_UNLOCK(&cacheUpdateLock); - - return YES; // successfully added new cache entry -} - - -/*********************************************************************** -* _cache_addForwardEntry -* Add a forward:: entry for the given selector to cls's method cache. -* Does nothing if the cache addition fails for any reason. -* Called from class_respondsToMethod and _class_lookupMethodAndLoadCache. -* Cache locks: cacheUpdateLock must not be held. -**********************************************************************/ -static void _cache_addForwardEntry(Class cls, SEL sel) -{ - Method smt; - - 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. - _free_internal(smt); - } -} - - -/*********************************************************************** -* _cache_flush. Invalidate all valid entries in the given class' cache, -* and clear the CLS_FLUSH_CACHE in the cls->info. -* -* Called from flush_caches() and _cache_fill() -* Cache locks: cacheUpdateLock must be held by the caller. -**********************************************************************/ -static void _cache_flush (Class cls) -{ - Cache cache; - unsigned int index; - - // Locate cache. Ignore unused cache. - cache = ((struct objc_class *)cls)->cache; - if (cache == NULL || cache == &emptyCache) - return; - -#ifdef OBJC_INSTRUMENTED - { - CacheInstrumentation * cacheData; - - // Tally this flush - cacheData = CACHE_INSTRUMENTATION(cache); - cacheData->flushCount += 1; - cacheData->flushedEntries += cache->occupied; - if (cache->occupied > cacheData->maxFlushedEntries) - cacheData->maxFlushedEntries = cache->occupied; + __objc_error(cls, "invalid selector (null)"); } -#endif - // Traverse the cache - for (index = 0; index <= cache->mask; index += 1) - { - // Remember what this entry was, so we can possibly - // deallocate it after the bucket has been invalidated - Method oldEntry = cache->buckets[index]; + return class_getMethodImplementation(cls, sel); +} - // Invalidate this entry - CACHE_BUCKET_VALID(cache->buckets[index]) = NULL; +IMP class_getMethodImplementation(Class cls, SEL sel) +{ + IMP imp; - // Deallocate "forward::" entry - if (oldEntry && oldEntry->method_imp == &_objc_msgForward) - _cache_collect_free (oldEntry, sizeof(struct objc_method), NO); - } + if (!cls || !sel) return NULL; - // Clear the valid-entry counter - cache->occupied = 0; + // fixme _objc_msgForward does not conform to ABI and cannot be + // called externally - // Clear the cache flush flag so that we will not flush this cache - // before expanding it again. - _class_clearInfo(cls, CLS_FLUSH_CACHE); + imp = _cache_getImp(cls, sel); + if (!imp) { + // Handle cache miss + imp = _class_lookupMethodAndLoadCache (cls, sel); + } + return imp; } -/*********************************************************************** -* _objc_getFreedObjectClass. Return a pointer to the dummy freed -* object class. Freed objects get their isa pointers replaced with -* a pointer to the freedObjectClass, so that we can catch usages of -* the freed object. -**********************************************************************/ -Class _objc_getFreedObjectClass (void) -{ - return (Class) &freedObjectClass; -} -/*********************************************************************** -* _objc_getNonexistentClass. Return a pointer to the dummy nonexistent -* object class. This is used when, for example, mapping the class -* refs for an image, and the class can not be found, so that we can -* catch later uses of the non-existent class. -**********************************************************************/ -Class _objc_getNonexistentClass (void) +IMP class_getMethodImplementation_stret(Class cls, SEL sel) { - return (Class) &nonexistentObjectClass; + IMP imp = class_getMethodImplementation(cls, sel); + // fixme check for forwarding and use stret forwarder instead + return imp; } -/*********************************************************************** -* struct _objc_initializing_classes -* Per-thread list of classes currently being initialized by that thread. -* During initialization, that thread is allowed to send messages to that -* class, but other threads have to wait. -* The list is a simple array of metaclasses (the metaclass stores -* the initialization state). -**********************************************************************/ -typedef struct _objc_initializing_classes { - int classesAllocated; - struct objc_class** metaclasses; -} _objc_initializing_classes; +// Ignored selectors get method->imp = &_objc_ignored_method +__private_extern__ id _objc_ignored_method(id self, SEL _cmd) { return self; } /*********************************************************************** -* _fetchInitializingClassList -* Return the list of classes being initialized by this thread. -* If create == YES, create the list when no classes are being initialized by this thread. -* If create == NO, return NULL when no classes are being initialized by this thread. +* instrumentObjcMessageSends/logObjcMessageSends. **********************************************************************/ -static _objc_initializing_classes *_fetchInitializingClassList(BOOL create) +static int LogObjCMessageSend (BOOL isClassMethod, + const char * objectsClass, + const char * implementingClass, + SEL selector) { - _objc_pthread_data *data; - _objc_initializing_classes *list; - struct objc_class **classes; - - data = pthread_getspecific(_objc_pthread_key); - if (data == NULL) { - if (!create) { - return NULL; - } else { - data = _calloc_internal(1, sizeof(_objc_pthread_data)); - pthread_setspecific(_objc_pthread_key, data); - } - } + char buf[ 1024 ]; - list = data->initializingClasses; - if (list == NULL) { - if (!create) { - return NULL; - } else { - list = _calloc_internal(1, sizeof(_objc_initializing_classes)); - data->initializingClasses = list; + // Create/open the log file + if (objcMsgLogFD == (-1)) + { + snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ()); + objcMsgLogFD = secure_open (buf, O_WRONLY | O_CREAT, geteuid()); + if (objcMsgLogFD < 0) { + // no log file - disable logging + objcMsgLogEnabled = 0; + objcMsgLogFD = -1; + return 1; } } - classes = list->metaclasses; - if (classes == NULL) { - // If _objc_initializing_classes exists, allocate metaclass array, - // even if create == NO. - // Allow 4 simultaneous class inits on this thread before realloc. - list->classesAllocated = 4; - classes = _calloc_internal(list->classesAllocated, sizeof(struct objc_class *)); - list->metaclasses = classes; - } - return list; -} + // Make the log entry + snprintf(buf, sizeof(buf), "%c %s %s %s\n", + isClassMethod ? '+' : '-', + objectsClass, + implementingClass, + (char *) selector); + write (objcMsgLogFD, buf, strlen(buf)); -/*********************************************************************** -* _destroyInitializingClassList -* Deallocate memory used by the given initialization list. -* Any part of the list may be NULL. -* Called from _objc_pthread_destroyspecific(). -**********************************************************************/ -void _destroyInitializingClassList(_objc_initializing_classes *list) -{ - if (list != NULL) { - if (list->metaclasses != NULL) { - _free_internal(list->metaclasses); - } - _free_internal(list); - } + // Tell caller to not cache the method + return 0; } - -/*********************************************************************** -* _thisThreadIsInitializingClass -* Return TRUE if this thread is currently initializing the given class. -**********************************************************************/ -static BOOL _thisThreadIsInitializingClass(struct objc_class *cls) +void instrumentObjcMessageSends (BOOL flag) { - int i; - - _objc_initializing_classes *list = _fetchInitializingClassList(NO); - if (list) { - cls = GETMETA(cls); - for (i = 0; i < list->classesAllocated; i++) { - if (cls == list->metaclasses[i]) return YES; - } - } + int enabledValue = (flag) ? 1 : 0; - // no list or not found in list - return NO; -} + // Shortcut NOP + if (objcMsgLogEnabled == enabledValue) + return; + // If enabling, flush all method caches so we get some traces + if (flag) + flush_caches (Nil, YES); -/*********************************************************************** -* _setThisThreadIsInitializingClass -* Record that this thread is currently initializing the given class. -* This thread will be allowed to send messages to the class, but -* other threads will have to wait. -**********************************************************************/ -static void _setThisThreadIsInitializingClass(struct objc_class *cls) -{ - int i; - _objc_initializing_classes *list = _fetchInitializingClassList(YES); - cls = GETMETA(cls); - - // paranoia: explicitly disallow duplicates - for (i = 0; i < list->classesAllocated; i++) { - if (cls == list->metaclasses[i]) { - _objc_fatal("thread is already initializing this class!"); - return; // already the initializer - } - } - - for (i = 0; i < list->classesAllocated; i++) { - if (0 == list->metaclasses[i]) { - list->metaclasses[i] = cls; - return; - } - } + // Sync our log file + if (objcMsgLogFD != (-1)) + fsync (objcMsgLogFD); - // class list is full - reallocate - list->classesAllocated = list->classesAllocated * 2 + 1; - 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++) { - list->metaclasses[i] = NULL; - } + objcMsgLogEnabled = enabledValue; } - -/*********************************************************************** -* _setThisThreadIsNotInitializingClass -* Record that this thread is no longer initializing the given class. -**********************************************************************/ -static void _setThisThreadIsNotInitializingClass(struct objc_class *cls) +__private_extern__ void logObjcMessageSends (ObjCLogProc logProc) { - int i; - - _objc_initializing_classes *list = _fetchInitializingClassList(NO); - if (list) { - cls = GETMETA(cls); - for (i = 0; i < list->classesAllocated; i++) { - if (cls == list->metaclasses[i]) { - list->metaclasses[i] = NULL; - return; - } - } + if (logProc) + { + objcMsgLogProc = logProc; + objcMsgLogEnabled = 1; + } + else + { + objcMsgLogProc = logProc; + objcMsgLogEnabled = 0; } - // no list or not found in list - _objc_fatal("thread is not initializing this class!"); + if (objcMsgLogFD != (-1)) + fsync (objcMsgLogFD); } /*********************************************************************** -* class_initialize. Send the '+initialize' message on demand to any -* uninitialized class. Force initialization of superclasses first. -* -* Called only from _class_lookupMethodAndLoadCache (or itself). +* log_and_fill_cache +* Log this method call. If the logger permits it, fill the method cache. +* cls is the method whose cache should be filled. +* implementer is the class that owns the implementation in question. **********************************************************************/ -static void class_initialize(struct objc_class *cls) +static void +log_and_fill_cache(Class cls, Class implementer, Method meth, SEL sel) { - 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, - // 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); - } - } + BOOL cacheIt = YES; - // Make sure super is done initializing BEFORE beginning to initialize cls. - // See note about deadlock above. - if (cls->super_class && !ISINITIALIZED(cls->super_class)) { - class_initialize(cls->super_class); - } - - // Try to atomically set CLS_INITIALIZING. - pthread_mutex_lock(&classInitLock); - if (!ISINITIALIZED(cls) && !ISINITIALIZING(cls)) { - _class_setInfo(infoCls, CLS_INITIALIZING); - reallyInitialize = YES; - } - pthread_mutex_unlock(&classInitLock); - - if (reallyInitialize) { - // We successfully set the CLS_INITIALIZING bit. Initialize the class. - - // Record that we're initializing this class so we can message it. - _setThisThreadIsInitializingClass(cls); - - // Send the +initialize message. - // Note that +initialize is sent to the superclass (again) if - // this class doesn't implement +initialize. 2157218 - [(id)cls initialize]; - - // Done initializing. Update the info bits and notify waiting threads. - pthread_mutex_lock(&classInitLock); - _class_changeInfo(infoCls, CLS_INITIALIZED, CLS_INITIALIZING); - pthread_cond_broadcast(&classInitWaitCond); - pthread_mutex_unlock(&classInitLock); - _setThisThreadIsNotInitializingClass(cls); - return; - } - - else if (ISINITIALIZING(cls)) { - // We couldn't set INITIALIZING because INITIALIZING was already set. - // If this thread set it earlier, continue normally. - // If some other thread set it, block until initialize is done. - // It's ok if INITIALIZING changes to INITIALIZED while we're here, - // because we safely check for INITIALIZED inside the lock - // before blocking. - if (_thisThreadIsInitializingClass(cls)) { - return; - } else { - pthread_mutex_lock(&classInitLock); - while (!ISINITIALIZED(cls)) { - pthread_cond_wait(&classInitWaitCond, &classInitLock); - } - pthread_mutex_unlock(&classInitLock); - return; - } - } - - else if (ISINITIALIZED(cls)) { - // Set CLS_INITIALIZING failed because someone else already - // initialized the class. Continue normally. - // NOTE this check must come AFTER the ISINITIALIZING case. - // Otherwise: Another thread is initializing this class. ISINITIALIZED - // is false. Skip this clause. Then the other thread finishes - // initialization and sets INITIALIZING=no and INITIALIZED=yes. - // Skip the ISINITIALIZING clause. Die horribly. - return; - } - - else { - // We shouldn't be here. - _objc_fatal("thread-safe class init in objc runtime is buggy!"); + if (objcMsgLogEnabled) { + cacheIt = objcMsgLogProc (_class_isMetaClass(implementer) ? YES : NO, + _class_getName(cls), + _class_getName(implementer), + sel); } + if (cacheIt) { + _cache_fill (cls, meth, sel); + } } @@ -2433,112 +867,80 @@ static void class_initialize(struct objc_class *cls) * * Called only from objc_msgSend, objc_msgSendSuper and class_lookupMethod. **********************************************************************/ -IMP _class_lookupMethodAndLoadCache (Class cls, - SEL sel) +__private_extern__ IMP _class_lookupMethodAndLoadCache(Class cls, SEL sel) { - struct objc_class * curClass; - Method meth; + Class curClass; IMP methodPC = NULL; - trace(0xb300, 0, 0, 0); - // Check for freed class - if (cls == &freedObjectClass) + if (cls == _class_getFreedObjectClass()) return (IMP) _freedHandler; // Check for nonexistent class - if (cls == &nonexistentObjectClass) + if (cls == _class_getNonexistentObjectClass()) return (IMP) _nonexistentHandler; - trace(0xb301, 0, 0, 0); +#if __OBJC2__ + // fixme hack + _class_realize(cls); +#endif - if (!ISINITIALIZED(cls)) { - class_initialize ((struct objc_class *)cls); - // If sel == initialize, class_initialize will send +initialize and + if (!_class_isInitialized(cls)) { + _class_initialize (cls); + // If sel == initialize, _class_initialize will send +initialize and // then the messenger will send +initialize again after this // procedure finishes. Of course, if this is not being called // from the messenger then it won't happen. 2778172 } - trace(0xb302, 0, 0, 0); - // Outer loop - search the caches and method lists of the // class and its super-classes - for (curClass = cls; curClass; curClass = ((struct objc_class * )curClass)->super_class) + for (curClass = cls; curClass; curClass = _class_getSuperclass(curClass)) { -#ifdef PRELOAD_SUPERCLASS_CACHES - struct objc_class *curClass2; -#endif - - trace(0xb303, 0, 0, 0); - // Beware of thread-unsafety and double-freeing of forward:: // entries here! See note in "Method cache locking" above. // The upshot is that _cache_getMethod() will return NULL // instead of returning a forward:: entry. - meth = _cache_getMethod(curClass, sel, &_objc_msgForward); + Method meth = _cache_getMethod(curClass, sel, &_objc_msgForward); if (meth) { // Found the method in this class or a superclass. // Cache the method in this class, unless we just found it in // this class's cache. if (curClass != cls) { -#ifdef PRELOAD_SUPERCLASS_CACHES - for (curClass2 = cls; curClass2 != curClass; curClass2 = curClass2->super_class) - _cache_fill (curClass2, meth, sel); - _cache_fill (curClass, meth, sel); -#else _cache_fill (cls, meth, sel); -#endif } - methodPC = meth->method_imp; + methodPC = method_getImplementation(meth); break; } - trace(0xb304, (int)methodPC, 0, 0); - // Cache scan failed. Search method list. - OBJC_LOCK(&methodListLock); - meth = _findMethodInClass(curClass, sel); - OBJC_UNLOCK(&methodListLock); + meth = _class_getMethodNoSuper(curClass, sel); if (meth) { - // If logging is enabled, log the message send and let - // the logger decide whether to encache the method. - if ((objcMsgLogEnabled == 0) || - (objcMsgLogProc (CLS_GETINFO(((struct objc_class * )curClass), - CLS_META) ? YES : NO, - ((struct objc_class *)cls)->name, - curClass->name, sel))) - { - // Cache the method implementation -#ifdef PRELOAD_SUPERCLASS_CACHES - for (curClass2 = cls; curClass2 != curClass; curClass2 = curClass2->super_class) - _cache_fill (curClass2, meth, sel); - _cache_fill (curClass, meth, sel); -#else - _cache_fill (cls, meth, sel); -#endif - } - - methodPC = meth->method_imp; + log_and_fill_cache(cls, curClass, meth, sel); + methodPC = method_getImplementation(meth); break; } - - trace(0xb305, (int)methodPC, 0, 0); } - trace(0xb306, (int)methodPC, 0, 0); + if (methodPC == NULL) { + // Class and superclasses do not respond -- try resolve handler + Method meth = _class_resolveMethod(cls, sel); + if (meth) { + // GrP fixme this isn't quite right + log_and_fill_cache(cls, cls, meth, sel); + methodPC = method_getImplementation(meth); + } + } - if (methodPC == NULL) - { - // Class and superclasses do not respond -- use forwarding + if (methodPC == NULL) { + // Class and superclasses do not respond and + // resolve handler didn't help -- use forwarding _cache_addForwardEntry(cls, sel); methodPC = &_objc_msgForward; } - trace(0xb30f, (int)methodPC, 0, 0); - return methodPC; } @@ -2557,380 +959,22 @@ static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel) 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. -* -* Delegation. -**********************************************************************/ -static int SubtypeUntil (const char * type, - char end) -{ - int level = 0; - const char * head = type; - - // - while (*type) - { - if (!*type || (!level && (*type == end))) - return (int)(type - head); - - switch (*type) - { - case ']': case '}': case ')': level--; break; - case '[': case '{': case '(': level += 1; break; - } - - type += 1; - } - - _objc_fatal ("Object: SubtypeUntil: end of type encountered prematurely\n"); - return 0; -} - -/*********************************************************************** -* SkipFirstType. -**********************************************************************/ -static const char * SkipFirstType (const char * type) -{ - while (1) - { - switch (*type++) - { - case 'O': /* bycopy */ - case 'n': /* in */ - case 'o': /* out */ - case 'N': /* inout */ - case 'r': /* const */ - case 'V': /* oneway */ - case '^': /* pointers */ - break; - - /* arrays */ - case '[': - while ((*type >= '0') && (*type <= '9')) - type += 1; - return type + SubtypeUntil (type, ']') + 1; - - /* structures */ - case '{': - return type + SubtypeUntil (type, '}') + 1; - - /* unions */ - case '(': - return type + SubtypeUntil (type, ')') + 1; - - /* basic types */ - default: - return type; - } - } -} - -/*********************************************************************** -* method_getNumberOfArguments. -**********************************************************************/ -unsigned method_getNumberOfArguments (Method method) -{ - const char * typedesc; - unsigned nargs; - - // First, skip the return type - typedesc = method->method_types; - typedesc = SkipFirstType (typedesc); - - // Next, skip stack size - while ((*typedesc >= '0') && (*typedesc <= '9')) - typedesc += 1; - - // Now, we have the arguments - count how many - nargs = 0; - while (*typedesc) - { - // Traverse argument type - typedesc = SkipFirstType (typedesc); - - // Skip GNU runtime's register parameter hint - if (*typedesc == '+') typedesc++; - - // Traverse (possibly negative) argument offset - if (*typedesc == '-') - typedesc += 1; - while ((*typedesc >= '0') && (*typedesc <= '9')) - typedesc += 1; - - // Made it past an argument - nargs += 1; - } - - return nargs; -} - -/*********************************************************************** -* method_getSizeOfArguments. -**********************************************************************/ -#ifndef __alpha__ -unsigned method_getSizeOfArguments (Method method) -{ - const char * typedesc; - unsigned stack_size; -#if defined(__ppc__) || defined(ppc) - unsigned trueBaseOffset; - unsigned foundBaseOffset; -#endif - - // Get our starting points - stack_size = 0; - typedesc = method->method_types; - - // Skip the return type -#if defined (__ppc__) || defined(ppc) - // Struct returns cause the parameters to be bumped - // by a register, so the offset to the receiver is - // 4 instead of the normal 0. - trueBaseOffset = (*typedesc == '{') ? 4 : 0; -#endif - typedesc = SkipFirstType (typedesc); - - // Convert ASCII number string to integer - while ((*typedesc >= '0') && (*typedesc <= '9')) - stack_size = (stack_size * 10) + (*typedesc++ - '0'); -#if defined (__ppc__) || defined(ppc) - // NOTE: This is a temporary measure pending a compiler fix. - // Work around PowerPC compiler bug wherein the method argument - // string contains an incorrect value for the "stack size." - // Generally, the size is reported 4 bytes too small, so we apply - // that fudge factor. Unfortunately, there is at least one case - // where the error is something other than -4: when the last - // parameter is a double, the reported stack is much too high - // (about 32 bytes). We do not attempt to detect that case. - // The result of returning a too-high value is that objc_msgSendv - // can bus error if the destination of the marg_list copying - // butts up against excluded memory. - // This fix disables itself when it sees a correctly built - // type string (i.e. the offset for the Id is correct). This - // keeps us out of lockstep with the compiler. - - // skip the '@' marking the Id field - typedesc = SkipFirstType (typedesc); - - // Skip GNU runtime's register parameter hint - if (*typedesc == '+') typedesc++; - - // pick up the offset for the Id field - foundBaseOffset = 0; - while ((*typedesc >= '0') && (*typedesc <= '9')) - foundBaseOffset = (foundBaseOffset * 10) + (*typedesc++ - '0'); - - // add fudge factor iff the Id field offset was wrong - if (foundBaseOffset != trueBaseOffset) - stack_size += 4; -#endif - - return stack_size; -} - -#else // __alpha__ - // XXX Getting the size of a type is done all over the place - // (Here, Foundation, remote project)! - Should unify - -unsigned int getSizeOfType (const char * type, unsigned int * alignPtr); - -unsigned method_getSizeOfArguments (Method method) -{ - const char * type; - int size; - int index; - int align; - int offset; - unsigned stack_size; - int nargs; - - nargs = method_getNumberOfArguments (method); - stack_size = (*method->method_types == '{') ? sizeof(void *) : 0; - - for (index = 0; index < nargs; index += 1) - { - (void) method_getArgumentInfo (method, index, &type, &offset); - size = getSizeOfType (type, &align); - stack_size += ((size + 7) & ~7); - } - - return stack_size; -} -#endif // __alpha__ - -/*********************************************************************** -* method_getArgumentInfo. -**********************************************************************/ -unsigned method_getArgumentInfo (Method method, - int arg, - const char ** type, - int * offset) -{ - const char * typedesc = method->method_types; - unsigned nargs = 0; - unsigned self_offset = 0; - BOOL offset_is_negative = NO; - - // First, skip the return type - typedesc = SkipFirstType (typedesc); - - // Next, skip stack size - while ((*typedesc >= '0') && (*typedesc <= '9')) - typedesc += 1; - - // Now, we have the arguments - position typedesc to the appropriate argument - while (*typedesc && nargs != arg) - { - - // Skip argument type - typedesc = SkipFirstType (typedesc); - - if (nargs == 0) - { - // Skip GNU runtime's register parameter hint - if (*typedesc == '+') typedesc++; - - // Skip negative sign in offset - if (*typedesc == '-') - { - offset_is_negative = YES; - typedesc += 1; - } - else - offset_is_negative = NO; - - while ((*typedesc >= '0') && (*typedesc <= '9')) - self_offset = self_offset * 10 + (*typedesc++ - '0'); - if (offset_is_negative) - self_offset = -(self_offset); - - } - - else - { - // Skip GNU runtime's register parameter hint - if (*typedesc == '+') typedesc++; - - // Skip (possibly negative) argument offset - if (*typedesc == '-') - typedesc += 1; - while ((*typedesc >= '0') && (*typedesc <= '9')) - typedesc += 1; - } - - nargs += 1; - } - - if (*typedesc) - { - unsigned arg_offset = 0; - - *type = typedesc; - typedesc = SkipFirstType (typedesc); - - if (arg == 0) - { -#ifdef hppa - *offset = -sizeof(id); -#else - *offset = 0; -#endif // hppa - } - - else - { - // Skip GNU register parameter hint - if (*typedesc == '+') typedesc++; - - // Pick up (possibly negative) argument offset - if (*typedesc == '-') - { - offset_is_negative = YES; - typedesc += 1; - } - else - offset_is_negative = NO; - - while ((*typedesc >= '0') && (*typedesc <= '9')) - arg_offset = arg_offset * 10 + (*typedesc++ - '0'); - if (offset_is_negative) - arg_offset = - arg_offset; - -#ifdef hppa - // For stacks which grow up, since margs points - // to the top of the stack or the END of the args, - // the first offset is at -sizeof(id) rather than 0. - self_offset += sizeof(id); -#endif - *offset = arg_offset - self_offset; - } + // Cache miss. Search method list. - } + meth = _class_getMethodNoSuper(cls, sel); - else - { - *type = 0; - *offset = 0; + if (meth) { + // Hit in method list. Cache it. + _cache_fill(cls, meth, sel); + return method_getImplementation(meth); + } else { + // Miss in method list. Cache objc_msgForward. + _cache_addForwardEntry(cls, sel); + return &_objc_msgForward; } - - return nargs; } + /*********************************************************************** * _objc_create_zone. **********************************************************************/ @@ -2967,6 +1011,8 @@ __private_extern__ malloc_zone_t *_objc_internal_zone(void) * _calloc_internal * _realloc_internal * _strdup_internal +* _strdupcat_internal +* _memdup_internal * _free_internal * Convenience functions for the internal malloc zone. **********************************************************************/ @@ -2987,1139 +1033,179 @@ __private_extern__ void *_realloc_internal(void *ptr, size_t size) __private_extern__ char *_strdup_internal(const char *str) { + if (!str) return NULL; 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) +// allocate a new string that concatenates s1+s2. +__private_extern__ char *_strdupcat_internal(const char *s1, const char *s2) { - malloc_zone_free(_objc_internal_zone(), ptr); + size_t len1 = strlen(s1); + size_t len2 = strlen(s2); + char *dup = malloc_zone_malloc(_objc_internal_zone(), len1 + len2 + 1); + memcpy(dup, s1, len1); + memcpy(dup + len1, s2, len2 + 1); + return dup; } - - -/*********************************************************************** -* cache collection. -**********************************************************************/ - -static unsigned long _get_pc_for_thread (mach_port_t thread) -#ifdef hppa -{ - struct hp_pa_frame_thread_state state; - unsigned int count = HPPA_FRAME_THREAD_STATE_COUNT; - kern_return_t okay = thread_get_state (thread, HPPA_FRAME_THREAD_STATE, (thread_state_t)&state, &count); - return (okay == KERN_SUCCESS) ? state.ts_pcoq_front : PC_SENTINAL; -} -#elif defined(sparc) -{ - struct sparc_thread_state_regs state; - unsigned int count = SPARC_THREAD_STATE_REGS_COUNT; - kern_return_t okay = thread_get_state (thread, SPARC_THREAD_STATE_REGS, (thread_state_t)&state, &count); - return (okay == KERN_SUCCESS) ? state.regs.r_pc : PC_SENTINAL; -} -#elif defined(__i386__) || defined(i386) -{ - i386_thread_state_t state; - unsigned int count = i386_THREAD_STATE_COUNT; - kern_return_t okay = thread_get_state (thread, i386_THREAD_STATE, (thread_state_t)&state, &count); - return (okay == KERN_SUCCESS) ? state.eip : PC_SENTINAL; -} -#elif defined(m68k) -{ - struct m68k_thread_state_regs state; - unsigned int count = M68K_THREAD_STATE_REGS_COUNT; - kern_return_t okay = thread_get_state (thread, M68K_THREAD_STATE_REGS, (thread_state_t)&state, &count); - return (okay == KERN_SUCCESS) ? state.pc : PC_SENTINAL; -} -#elif defined(__ppc__) || defined(ppc) -{ - struct ppc_thread_state state; - unsigned int count = PPC_THREAD_STATE_COUNT; - kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE, (thread_state_t)&state, &count); - return (okay == KERN_SUCCESS) ? state.srr0 : PC_SENTINAL; -} -#else +__private_extern__ void *_memdup_internal(const void *mem, size_t len) { -#error _get_pc_for_thread () not implemented for this architecture + void *dup = malloc_zone_malloc(_objc_internal_zone(), len); + memcpy(dup, mem, len); + return dup; } -#endif - -/*********************************************************************** -* _collecting_in_critical. -* Returns TRUE if some thread is currently executing a cache-reading -* function. Collection of cache garbage is not allowed when a cache- -* reading function is in progress because it might still be using -* the garbage memory. -**********************************************************************/ -OBJC_EXPORT unsigned long objc_entryPoints[]; -OBJC_EXPORT unsigned long objc_exitPoints[]; -static int _collecting_in_critical (void) +__private_extern__ void _free_internal(void *ptr) { - thread_act_port_array_t threads; - unsigned number; - unsigned count; - kern_return_t ret; - int result; - - mach_port_t mythread = pthread_mach_thread_np(pthread_self()); - - // Get a list of all the threads in the current task - ret = task_threads (mach_task_self (), &threads, &number); - if (ret != KERN_SUCCESS) - { - _objc_fatal("task_thread failed (result %d)\n", ret); - } - - // Check whether any thread is in the cache lookup code - result = FALSE; - for (count = 0; count < number; count++) - { - int region; - unsigned long pc; - - // Don't bother checking ourselves - if (threads[count] == mythread) - continue; - - // Find out where thread is executing - pc = _get_pc_for_thread (threads[count]); - - // Check for bad status, and if so, assume the worse (can't collect) - if (pc == PC_SENTINAL) - { - result = TRUE; - goto done; - } - - // Check whether it is in the cache lookup code - for (region = 0; objc_entryPoints[region] != 0; region++) - { - if ((pc >= objc_entryPoints[region]) && - (pc <= objc_exitPoints[region])) - { - result = TRUE; - goto done; - } - } - } - - done: - // Deallocate the port rights for the threads - for (count = 0; count < number; count++) { - mach_port_deallocate(mach_task_self (), threads[count]); - } - - // Deallocate the thread list - vm_deallocate (mach_task_self (), (vm_address_t) threads, sizeof(threads) * number); - - // Return our finding - return result; + malloc_zone_free(_objc_internal_zone(), ptr); } -/*********************************************************************** -* _garbage_make_room. Ensure that there is enough room for at least -* one more ref in the garbage. -**********************************************************************/ - -// amount of memory represented by all refs in the garbage -static int garbage_byte_size = 0; - -// do not empty the garbage until garbage_byte_size gets at least this big -static int garbage_threshold = 1024; - -// table of refs to free -static void **garbage_refs = 0; - -// current number of refs in garbage_refs -static int garbage_count = 0; - -// capacity of current garbage_refs -static int garbage_max = 0; -// capacity of initial garbage_refs -enum { - INIT_GARBAGE_COUNT = 128 -}; - -static void _garbage_make_room (void) +const char *class_getName(Class cls) { - static int first = 1; - volatile void * tempGarbage; - - // Create the collection table the first time it is needed - if (first) - { - first = 0; - 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 = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *)); - garbage_refs = (void **) tempGarbage; - garbage_max *= 2; - } + return _class_getName(cls); } -/*********************************************************************** -* _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, size_t size, BOOL tryCollect) +Class class_getSuperclass(Class cls) { - static char *report_garbage = (char *)0xffffffff; - - if ((char *)0xffffffff == report_garbage) { - // Check whether to log our activity - report_garbage = getenv ("OBJC_REPORT_GARBAGE"); - } - - // 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 += size; - garbage_refs[garbage_count++] = data; - - // Log our progress - if (tryCollect && report_garbage) - _objc_inform ("total of %d bytes of garbage ...", garbage_byte_size); - - // Done if caller says not to empty or the garbage is not full - if (!tryCollect || (garbage_byte_size < garbage_threshold)) - { - if (tryCollect && report_garbage) - _objc_inform ("couldn't collect cache garbage: below threshold\n"); - - return; - } - - // tryCollect is guaranteed to be true after this point - - // Synchronize garbage collection with objc_msgSend and other cache readers - if (!_collecting_in_critical ()) { - // No cache readers in progress - garbage is now deletable - - // Log our progress - if (report_garbage) - _objc_inform ("collecting!\n"); - - // Dispose all refs now in the garbage - 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 { - // objc_msgSend (or other cache reader) is currently looking in the - // cache and might still be using some garbage. - if (report_garbage) { - _objc_inform ("couldn't collect cache garbage: objc_msgSend in progress\n"); - } - } + return _class_getSuperclass(cls); } - - -/*********************************************************************** -* 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) +BOOL class_isMetaClass(Class cls) { - return (size - sizeof(struct objc_cache)) / sizeof(Method); + return _class_isMetaClass(cls); } -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) +size_t class_getInstanceSize(Class cls) { - 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; + return _class_getInstanceSize(cls); } - -/*********************************************************************** -* 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) +void method_exchangeImplementations(Method m1, Method m2) { - if (block->size + (uintptr_t)block == (uintptr_t)block->nextFree) { - block->size += block->nextFree->size; - block->nextFree = block->nextFree->nextFree; - } + // fixme thread safe + IMP m1_imp; + if (!m1 || !m2) return; + m1_imp = method_getImplementation(m1); + method_setImplementation(m1, method_setImplementation(m2, m1_imp)); } /*********************************************************************** -* 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. +* method_getNumberOfArguments. **********************************************************************/ -static void *cache_region_calloc(cache_allocator_region *rgn, size_t size) +unsigned int method_getNumberOfArguments(Method m) { - 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; + if (!m) return 0; + return encoding_getNumberOfArguments(method_getTypeEncoding(m)); } -/*********************************************************************** -* 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) +unsigned int method_getSizeOfArguments(Method m) { - 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); + OBJC_WARN_DEPRECATED; + if (!m) return 0; + return encoding_getSizeOfArguments(method_getTypeEncoding(m)); } -/*********************************************************************** -* 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) +unsigned int method_getArgumentInfo(Method m, int arg, + const char **type, int *offset) { - cache_allocator_region *rgn; - for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) { - if (block >= rgn->start && block < rgn->end) return rgn; - } - return NULL; + OBJC_WARN_DEPRECATED; + if (!m) return 0; + return encoding_getArgumentInfo(method_getTypeEncoding(m), + arg, type, offset); } -/*********************************************************************** -* 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) +void method_getReturnType(Method m, char *dst, size_t dst_len) { - 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); + return encoding_getReturnType(method_getTypeEncoding(m), dst, dst_len); } -/*********************************************************************** -* _cache_print. -**********************************************************************/ -static void _cache_print (Cache cache) -{ - unsigned int index; - unsigned int count; - - count = cache->mask + 1; - for (index = 0; index < count; index += 1) - if (CACHE_BUCKET_VALID(cache->buckets[index])) - { - if (CACHE_BUCKET_IMP(cache->buckets[index]) == &_objc_msgForward) - printf ("does not recognize: \n"); - printf ("%s\n", (const char *) CACHE_BUCKET_NAME(cache->buckets[index])); - } -} - -/*********************************************************************** -* _class_printMethodCaches. -**********************************************************************/ -void _class_printMethodCaches (Class cls) +char * method_copyReturnType(Method m) { - if (((struct objc_class *)cls)->cache == &emptyCache) - printf ("no instance-method cache for class %s\n", ((struct objc_class *)cls)->name); - - else - { - printf ("instance-method cache for class %s:\n", ((struct objc_class *)cls)->name); - _cache_print (((struct objc_class *)cls)->cache); - } - - if (((struct objc_class * )((struct objc_class * )cls)->isa)->cache == &emptyCache) - printf ("no class-method cache for class %s\n", ((struct objc_class *)cls)->name); - - else - { - printf ("class-method cache for class %s:\n", ((struct objc_class *)cls)->name); - _cache_print (((struct objc_class * )((struct objc_class * )cls)->isa)->cache); - } + return encoding_copyReturnType(method_getTypeEncoding(m)); } -/*********************************************************************** -* log2. -**********************************************************************/ -static unsigned int log2 (unsigned int x) -{ - unsigned int log; - - log = 0; - while (x >>= 1) - log += 1; - - return log; -} -/*********************************************************************** -* _class_printDuplicateCacheEntries. -**********************************************************************/ -void _class_printDuplicateCacheEntries (BOOL detail) +void method_getArgumentType(Method m, unsigned int index, + char *dst, size_t dst_len) { - NXHashTable * class_hash; - NXHashState state; - struct objc_class * cls; - unsigned int duplicates; - unsigned int index1; - unsigned int index2; - unsigned int mask; - unsigned int count; - unsigned int isMeta; - Cache cache; - - - printf ("Checking for duplicate cache entries \n"); - - // Outermost loop - iterate over all classes - class_hash = objc_getClasses (); - state = NXInitHashState (class_hash); - duplicates = 0; - while (NXNextHashState (class_hash, &state, (void **) &cls)) - { - // Control loop - do given class' cache, then its isa's cache - for (isMeta = 0; isMeta <= 1; isMeta += 1) - { - // Select cache of interest and make sure it exists - cache = isMeta ? cls->isa->cache : ((struct objc_class *)cls)->cache; - if (cache == &emptyCache) - continue; - - // Middle loop - check each entry in the given cache - mask = cache->mask; - count = mask + 1; - for (index1 = 0; index1 < count; index1 += 1) - { - // Skip invalid entry - if (!CACHE_BUCKET_VALID(cache->buckets[index1])) - continue; - - // Inner loop - check that given entry matches no later entry - for (index2 = index1 + 1; index2 < count; index2 += 1) - { - // Skip invalid entry - if (!CACHE_BUCKET_VALID(cache->buckets[index2])) - continue; - - // Check for duplication by method name comparison - if (strcmp ((char *) CACHE_BUCKET_NAME(cache->buckets[index1]), - (char *) CACHE_BUCKET_NAME(cache->buckets[index2])) == 0) - { - if (detail) - printf ("%s %s\n", ((struct objc_class *)cls)->name, (char *) CACHE_BUCKET_NAME(cache->buckets[index1])); - duplicates += 1; - break; - } - } - } - } - } - - // Log the findings - printf ("duplicates = %d\n", duplicates); - printf ("total cache fills = %d\n", totalCacheFills); + return encoding_getArgumentType(method_getTypeEncoding(m), + index, dst, dst_len); } -/*********************************************************************** -* PrintCacheHeader. -**********************************************************************/ -static void PrintCacheHeader (void) -{ -#ifdef OBJC_INSTRUMENTED - printf ("Cache Cache Slots Avg Max AvgS MaxS AvgS MaxS TotalD AvgD MaxD TotalD AvgD MaxD TotD AvgD MaxD\n"); - printf ("Size Count Used Used Used Hit Hit Miss Miss Hits Prbs Prbs Misses Prbs Prbs Flsh Flsh Flsh\n"); - printf ("----- ----- ----- ----- ---- ---- ---- ---- ---- ------- ---- ---- ------- ---- ---- ---- ---- ----\n"); -#else - printf ("Cache Cache Slots Avg Max AvgS MaxS AvgS MaxS\n"); - printf ("Size Count Used Used Used Hit Hit Miss Miss\n"); - printf ("----- ----- ----- ----- ---- ---- ---- ---- ----\n"); -#endif -} -/*********************************************************************** -* PrintCacheInfo. -**********************************************************************/ -static void PrintCacheInfo (unsigned int cacheSize, - unsigned int cacheCount, - unsigned int slotsUsed, - float avgUsed, - unsigned int maxUsed, - float avgSHit, - unsigned int maxSHit, - float avgSMiss, - unsigned int maxSMiss -#ifdef OBJC_INSTRUMENTED - , unsigned int totDHits, - float avgDHit, - unsigned int maxDHit, - unsigned int totDMisses, - float avgDMiss, - unsigned int maxDMiss, - unsigned int totDFlsh, - float avgDFlsh, - unsigned int maxDFlsh -#endif - ) +char * method_copyArgumentType(Method m, unsigned int index) { -#ifdef OBJC_INSTRUMENTED - printf ("%5u %5u %5u %5.1f %4u %4.1f %4u %4.1f %4u %7u %4.1f %4u %7u %4.1f %4u %4u %4.1f %4u\n", -#else - printf ("%5u %5u %5u %5.1f %4u %4.1f %4u %4.1f %4u\n", -#endif - cacheSize, cacheCount, slotsUsed, avgUsed, maxUsed, avgSHit, maxSHit, avgSMiss, maxSMiss -#ifdef OBJC_INSTRUMENTED - , totDHits, avgDHit, maxDHit, totDMisses, avgDMiss, maxDMiss, totDFlsh, avgDFlsh, maxDFlsh -#endif - ); - + return encoding_copyArgumentType(method_getTypeEncoding(m), index); } -#ifdef OBJC_INSTRUMENTED -/*********************************************************************** -* PrintCacheHistogram. Show the non-zero entries from the specified -* cache histogram. -**********************************************************************/ -static void PrintCacheHistogram (char * title, - unsigned int * firstEntry, - unsigned int entryCount) -{ - unsigned int index; - unsigned int * thisEntry; - - printf ("%s\n", title); - printf (" Probes Tally\n"); - printf (" ------ -----\n"); - for (index = 0, thisEntry = firstEntry; - index < entryCount; - index += 1, thisEntry += 1) - { - if (*thisEntry == 0) - continue; - - printf (" %6d %5d\n", index, *thisEntry); - } -} -#endif /*********************************************************************** -* _class_printMethodCacheStatistics. +* _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, C++ default constructors are called, and all other fields are zeroed. **********************************************************************/ - -#define MAX_LOG2_SIZE 32 -#define MAX_CHAIN_SIZE 100 - -void _class_printMethodCacheStatistics (void) +__private_extern__ id +_internal_class_createInstanceFromZone(Class cls, size_t extraBytes, + void *zone) { - unsigned int isMeta; - unsigned int index; - NXHashTable * class_hash; - NXHashState state; - struct objc_class * cls; - unsigned int totalChain; - unsigned int totalMissChain; - unsigned int maxChain; - unsigned int maxMissChain; - unsigned int classCount; - unsigned int negativeEntryCount; - unsigned int cacheExpandCount; - unsigned int cacheCountBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int totalEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int totalChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int totalMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int totalMaxChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int totalMaxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int chainCount[MAX_CHAIN_SIZE] = {0}; - unsigned int missChainCount[MAX_CHAIN_SIZE] = {0}; -#ifdef OBJC_INSTRUMENTED - unsigned int hitCountBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int hitProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxHitProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int missCountBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int missProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxMissProbesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int flushCountBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int flushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; - unsigned int maxFlushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}}; -#endif - - printf ("Printing cache statistics\n"); - - // Outermost loop - iterate over all classes - class_hash = objc_getClasses (); - state = NXInitHashState (class_hash); - classCount = 0; - negativeEntryCount = 0; - cacheExpandCount = 0; - while (NXNextHashState (class_hash, &state, (void **) &cls)) - { - // Tally classes - classCount += 1; - - // Control loop - do given class' cache, then its isa's cache - for (isMeta = 0; isMeta <= 1; isMeta += 1) - { - Cache cache; - unsigned int mask; - unsigned int log2Size; - unsigned int entryCount; - - // Select cache of interest - cache = isMeta ? cls->isa->cache : ((struct objc_class *)cls)->cache; - - // Ignore empty cache... should we? - if (cache == &emptyCache) - continue; - - // Middle loop - do each entry in the given cache - mask = cache->mask; - entryCount = 0; - totalChain = 0; - totalMissChain = 0; - maxChain = 0; - maxMissChain = 0; - for (index = 0; index < mask + 1; index += 1) - { - Method * buckets; - Method method; - uarith_t hash; - uarith_t methodChain; - uarith_t methodMissChain; - uarith_t index2; - - // If entry is invalid, the only item of - // interest is that future insert hashes - // to this entry can use it directly. - buckets = cache->buckets; - if (!CACHE_BUCKET_VALID(buckets[index])) - { - missChainCount[0] += 1; - continue; - } - - method = buckets[index]; - - // Tally valid entries - entryCount += 1; - - // Tally "forward::" entries - if (CACHE_BUCKET_IMP(method) == &_objc_msgForward) - negativeEntryCount += 1; - - // Calculate search distance (chain length) for this method - // The chain may wrap around to the beginning of the table. - hash = CACHE_HASH(CACHE_BUCKET_NAME(method), mask); - if (index >= hash) methodChain = index - hash; - else methodChain = (mask+1) + index - hash; - - // Tally chains of this length - if (methodChain < MAX_CHAIN_SIZE) - chainCount[methodChain] += 1; - - // Keep sum of all chain lengths - totalChain += methodChain; - - // Record greatest chain length - if (methodChain > maxChain) - maxChain = methodChain; - - // Calculate search distance for miss that hashes here - index2 = index; - while (CACHE_BUCKET_VALID(buckets[index2])) - { - index2 += 1; - index2 &= mask; - } - methodMissChain = ((index2 - index) & mask); - - // Tally miss chains of this length - if (methodMissChain < MAX_CHAIN_SIZE) - missChainCount[methodMissChain] += 1; - - // Keep sum of all miss chain lengths in this class - totalMissChain += methodMissChain; - - // Record greatest miss chain length - if (methodMissChain > maxMissChain) - maxMissChain = methodMissChain; - } + id obj; + size_t size; - // Factor this cache into statistics about caches of the same - // type and size (all caches are a power of two in size) - log2Size = log2 (mask + 1); - cacheCountBySize[isMeta][log2Size] += 1; - totalEntriesBySize[isMeta][log2Size] += entryCount; - if (entryCount > maxEntriesBySize[isMeta][log2Size]) - maxEntriesBySize[isMeta][log2Size] = entryCount; - totalChainBySize[isMeta][log2Size] += totalChain; - totalMissChainBySize[isMeta][log2Size] += totalMissChain; - totalMaxChainBySize[isMeta][log2Size] += maxChain; - totalMaxMissChainBySize[isMeta][log2Size] += maxMissChain; - if (maxChain > maxChainBySize[isMeta][log2Size]) - maxChainBySize[isMeta][log2Size] = maxChain; - if (maxMissChain > maxMissChainBySize[isMeta][log2Size]) - maxMissChainBySize[isMeta][log2Size] = maxMissChain; -#ifdef OBJC_INSTRUMENTED - { - CacheInstrumentation * cacheData; - - cacheData = CACHE_INSTRUMENTATION(cache); - hitCountBySize[isMeta][log2Size] += cacheData->hitCount; - hitProbesBySize[isMeta][log2Size] += cacheData->hitProbes; - if (cacheData->maxHitProbes > maxHitProbesBySize[isMeta][log2Size]) - maxHitProbesBySize[isMeta][log2Size] = cacheData->maxHitProbes; - missCountBySize[isMeta][log2Size] += cacheData->missCount; - missProbesBySize[isMeta][log2Size] += cacheData->missProbes; - if (cacheData->maxMissProbes > maxMissProbesBySize[isMeta][log2Size]) - maxMissProbesBySize[isMeta][log2Size] = cacheData->maxMissProbes; - flushCountBySize[isMeta][log2Size] += cacheData->flushCount; - flushedEntriesBySize[isMeta][log2Size] += cacheData->flushedEntries; - if (cacheData->maxFlushedEntries > maxFlushedEntriesBySize[isMeta][log2Size]) - maxFlushedEntriesBySize[isMeta][log2Size] = cacheData->maxFlushedEntries; - } -#endif - // Caches start with a power of two number of entries, and grow by doubling, so - // we can calculate the number of times this cache has expanded - if (isMeta) - cacheExpandCount += log2Size - INIT_META_CACHE_SIZE_LOG2; - else - cacheExpandCount += log2Size - INIT_CACHE_SIZE_LOG2; + // Can't create something for nothing + if (!cls) return nil; - } + // Allocate and initialize + size = _class_getInstanceSize(cls) + extraBytes; + if (UseGC) { + obj = (id) auto_zone_allocate_object(gc_zone, size, + AUTO_OBJECT_SCANNED, false, true); + } else if (zone) { + obj = (id) malloc_zone_calloc (zone, 1, size); + } else { + obj = (id) calloc(1, size); } + if (!obj) return nil; - { - unsigned int cacheCountByType[2] = {0}; - unsigned int totalCacheCount = 0; - unsigned int totalEntries = 0; - unsigned int maxEntries = 0; - unsigned int totalSlots = 0; -#ifdef OBJC_INSTRUMENTED - unsigned int totalHitCount = 0; - unsigned int totalHitProbes = 0; - unsigned int maxHitProbes = 0; - unsigned int totalMissCount = 0; - unsigned int totalMissProbes = 0; - unsigned int maxMissProbes = 0; - unsigned int totalFlushCount = 0; - unsigned int totalFlushedEntries = 0; - unsigned int maxFlushedEntries = 0; -#endif - - totalChain = 0; - maxChain = 0; - totalMissChain = 0; - maxMissChain = 0; - - // Sum information over all caches - for (isMeta = 0; isMeta <= 1; isMeta += 1) - { - for (index = 0; index < MAX_LOG2_SIZE; index += 1) - { - cacheCountByType[isMeta] += cacheCountBySize[isMeta][index]; - totalEntries += totalEntriesBySize[isMeta][index]; - totalSlots += cacheCountBySize[isMeta][index] * (1 << index); - totalChain += totalChainBySize[isMeta][index]; - if (maxEntriesBySize[isMeta][index] > maxEntries) - maxEntries = maxEntriesBySize[isMeta][index]; - if (maxChainBySize[isMeta][index] > maxChain) - maxChain = maxChainBySize[isMeta][index]; - totalMissChain += totalMissChainBySize[isMeta][index]; - if (maxMissChainBySize[isMeta][index] > maxMissChain) - maxMissChain = maxMissChainBySize[isMeta][index]; -#ifdef OBJC_INSTRUMENTED - totalHitCount += hitCountBySize[isMeta][index]; - totalHitProbes += hitProbesBySize[isMeta][index]; - if (maxHitProbesBySize[isMeta][index] > maxHitProbes) - maxHitProbes = maxHitProbesBySize[isMeta][index]; - totalMissCount += missCountBySize[isMeta][index]; - totalMissProbes += missProbesBySize[isMeta][index]; - if (maxMissProbesBySize[isMeta][index] > maxMissProbes) - maxMissProbes = maxMissProbesBySize[isMeta][index]; - totalFlushCount += flushCountBySize[isMeta][index]; - totalFlushedEntries += flushedEntriesBySize[isMeta][index]; - if (maxFlushedEntriesBySize[isMeta][index] > maxFlushedEntries) - maxFlushedEntries = maxFlushedEntriesBySize[isMeta][index]; -#endif - } - - totalCacheCount += cacheCountByType[isMeta]; - } - - // Log our findings - printf ("There are %u classes\n", classCount); - - for (isMeta = 0; isMeta <= 1; isMeta += 1) - { - // Number of this type of class - printf ("\nThere are %u %s-method caches, broken down by size (slot count):\n", - cacheCountByType[isMeta], - isMeta ? "class" : "instance"); - - // Print header - PrintCacheHeader (); - - // Keep format consistent even if there are caches of this kind - if (cacheCountByType[isMeta] == 0) - { - printf ("(none)\n"); - continue; - } - - // Usage information by cache size - for (index = 0; index < MAX_LOG2_SIZE; index += 1) - { - unsigned int cacheCount; - unsigned int cacheSlotCount; - unsigned int cacheEntryCount; - - // Get number of caches of this type and size - cacheCount = cacheCountBySize[isMeta][index]; - if (cacheCount == 0) - continue; - - // Get the cache slot count and the total number of valid entries - cacheSlotCount = (1 << index); - cacheEntryCount = totalEntriesBySize[isMeta][index]; - - // Give the analysis - PrintCacheInfo (cacheSlotCount, - cacheCount, - cacheEntryCount, - (float) cacheEntryCount / (float) cacheCount, - maxEntriesBySize[isMeta][index], - (float) totalChainBySize[isMeta][index] / (float) cacheEntryCount, - maxChainBySize[isMeta][index], - (float) totalMissChainBySize[isMeta][index] / (float) (cacheCount * cacheSlotCount), - maxMissChainBySize[isMeta][index] -#ifdef OBJC_INSTRUMENTED - , hitCountBySize[isMeta][index], - hitCountBySize[isMeta][index] ? - (float) hitProbesBySize[isMeta][index] / (float) hitCountBySize[isMeta][index] : 0.0, - maxHitProbesBySize[isMeta][index], - missCountBySize[isMeta][index], - missCountBySize[isMeta][index] ? - (float) missProbesBySize[isMeta][index] / (float) missCountBySize[isMeta][index] : 0.0, - maxMissProbesBySize[isMeta][index], - flushCountBySize[isMeta][index], - flushCountBySize[isMeta][index] ? - (float) flushedEntriesBySize[isMeta][index] / (float) flushCountBySize[isMeta][index] : 0.0, - maxFlushedEntriesBySize[isMeta][index] -#endif - ); - } - } - - // Give overall numbers - printf ("\nCumulative:\n"); - PrintCacheHeader (); - PrintCacheInfo (totalSlots, - totalCacheCount, - totalEntries, - (float) totalEntries / (float) totalCacheCount, - maxEntries, - (float) totalChain / (float) totalEntries, - maxChain, - (float) totalMissChain / (float) totalSlots, - maxMissChain -#ifdef OBJC_INSTRUMENTED - , totalHitCount, - totalHitCount ? - (float) totalHitProbes / (float) totalHitCount : 0.0, - maxHitProbes, - totalMissCount, - totalMissCount ? - (float) totalMissProbes / (float) totalMissCount : 0.0, - maxMissProbes, - totalFlushCount, - totalFlushCount ? - (float) totalFlushedEntries / (float) totalFlushCount : 0.0, - maxFlushedEntries -#endif - ); - - printf ("\nNumber of \"forward::\" entries: %d\n", negativeEntryCount); - printf ("Number of cache expansions: %d\n", cacheExpandCount); -#ifdef OBJC_INSTRUMENTED - printf ("flush_caches: total calls total visits average visits max visits total classes visits/class\n"); - printf (" ----------- ------------ -------------- ---------- ------------- -------------\n"); - printf (" linear %11u %12u %14.1f %10u %13u %12.2f\n", - LinearFlushCachesCount, - LinearFlushCachesVisitedCount, - LinearFlushCachesCount ? - (float) LinearFlushCachesVisitedCount / (float) LinearFlushCachesCount : 0.0, - MaxLinearFlushCachesVisitedCount, - LinearFlushCachesVisitedCount, - 1.0); - printf (" nonlinear %11u %12u %14.1f %10u %13u %12.2f\n", - NonlinearFlushCachesCount, - NonlinearFlushCachesVisitedCount, - NonlinearFlushCachesCount ? - (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesCount : 0.0, - MaxNonlinearFlushCachesVisitedCount, - NonlinearFlushCachesClassCount, - NonlinearFlushCachesClassCount ? - (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesClassCount : 0.0); - printf (" ideal %11u %12u %14.1f %10u %13u %12.2f\n", - LinearFlushCachesCount + NonlinearFlushCachesCount, - IdealFlushCachesCount, - LinearFlushCachesCount + NonlinearFlushCachesCount ? - (float) IdealFlushCachesCount / (float) (LinearFlushCachesCount + NonlinearFlushCachesCount) : 0.0, - MaxIdealFlushCachesCount, - LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount, - LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount ? - (float) IdealFlushCachesCount / (float) (LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount) : 0.0); - - PrintCacheHistogram ("\nCache hit histogram:", &CacheHitHistogram[0], CACHE_HISTOGRAM_SIZE); - PrintCacheHistogram ("\nCache miss histogram:", &CacheMissHistogram[0], CACHE_HISTOGRAM_SIZE); -#endif - -#if 0 - printf ("\nLookup chains:"); - for (index = 0; index < MAX_CHAIN_SIZE; index += 1) - { - if (chainCount[index] != 0) - printf (" %u:%u", index, chainCount[index]); - } + // Set the isa pointer + obj->isa = cls; - printf ("\nMiss chains:"); - for (index = 0; index < MAX_CHAIN_SIZE; index += 1) - { - if (missChainCount[index] != 0) - printf (" %u:%u", index, missChainCount[index]); + // Call C++ constructors, if any. + if (!object_cxxConstruct(obj)) { + // Some C++ constructor threw an exception. + if (UseGC) { + auto_zone_retain(gc_zone, obj); // gc free expects retain count==1 } - - printf ("\nTotal memory usage for cache data structures: %lu bytes\n", - totalCacheCount * (sizeof(struct objc_cache) - sizeof(Method)) + - totalSlots * sizeof(Method) + - negativeEntryCount * sizeof(struct objc_method)); -#endif + free(obj); + return nil; } + + return obj; } -/*********************************************************************** -* checkUniqueness. -**********************************************************************/ -void checkUniqueness (SEL s1, - SEL s2) -{ - if (s1 == s2) - return; - if (s1 && s2 && (strcmp ((const char *) s1, (const char *) s2) == 0)) - _objc_inform ("%p != %p but !strcmp (%s, %s)\n", s1, s2, (char *) s1, (char *) s2); +__private_extern__ id +_internal_object_dispose(id anObject) +{ + if (anObject==nil) return nil; + object_cxxDestruct(anObject); + if (UseGC) { + auto_zone_retain(gc_zone, anObject); // gc free expects retain count==1 + } else { + // only clobber isa for non-gc + anObject->isa = _objc_getFreedObjectClass (); + } + free(anObject); + return nil; } diff --git a/runtime/objc-config.h b/runtime/objc-config.h index 2202561..ec63b65 100644 --- a/runtime/objc-config.h +++ b/runtime/objc-config.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2002, 2005-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -33,11 +31,6 @@ // because objc-class.h is public and objc-config.h is not. //#define OBJC_INSTRUMENTED -// Turn on support for class refs -#define OBJC_CLASS_REFS - - #define __S(x) x - // Get the nice macros for subroutine calling, etc. // Not available on all architectures. Not needed // (by us) on some configurations. @@ -45,6 +38,10 @@ #import #elif defined (__ppc__) || defined(ppc) #import +#elif defined (__ppc64__) + // no asm_help for ppc64 +#elif defined (__x86_64__) + // no asm_help for x86-64 #else #error We need asm_help.h for this architecture #endif diff --git a/runtime/objc-errors.m b/runtime/objc-errors.m index 4a16111..7a9f677 100644 --- a/runtime/objc-errors.m +++ b/runtime/objc-errors.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2003, 2005-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -35,115 +33,204 @@ #import "objc-private.h" -static volatile void _objc_trap(void); +__private_extern__ char *__crashreporter_info__ = NULL; +OBJC_EXPORT void (*_error)(id, const char *, va_list); -static int hasTerminal() -{ - static char hasTerm = -1; - - if (hasTerm == -1) { - int fd = open("/dev/tty", O_RDWR, 0); - if (fd >= 0) { - (void)close(fd); - hasTerm = 1; - } else - hasTerm = 0; - } - return hasTerm; -} +static void _objc_trap(void) __attribute__((noreturn)); -void _objc_syslog(const char *format, ...) +// Add "message" to any forthcoming crash log. +static void _objc_crashlog(const char *message) { - va_list ap; - char bigBuffer[4*1024]; + char *newmsg; - va_start(ap, format); - vsnprintf(bigBuffer, sizeof(bigBuffer), format, ap); - va_end(ap); + if (!__crashreporter_info__) { + newmsg = strdup(message); + } else { + asprintf(&newmsg, "%s\n%s", __crashreporter_info__, message); + } + if (newmsg) { + // Strip trailing newline + char *c = &newmsg[strlen(newmsg)-1]; + if (*c == '\n') *c = '\0'; + + if (__crashreporter_info__) free(__crashreporter_info__); + __crashreporter_info__ = newmsg; + } +} - if (hasTerminal()) { - fwrite(bigBuffer, sizeof(char), strlen(bigBuffer), stderr); - if (bigBuffer[strlen(bigBuffer)-1] != '\n') - fputc('\n', stderr); +// Print "message" to the console. +static void _objc_syslog(const char *message) +{ + if (fcntl(STDERR_FILENO, F_GETFL, 0) != -1) { + // stderr is open - use it + write(STDERR_FILENO, message, strlen(message)); + if (message[strlen(message)-1] != '\n') { + write(STDERR_FILENO, "\n", 1); + } } else { - syslog(LOG_ERR, "%s", bigBuffer); + syslog(LOG_ERR, "%s", message); } } -/* - * this routine handles errors that involve an object (or class). +/* + * this routine handles errors that involve an object (or class). */ -volatile void __objc_error(id rcv, const char *fmt, ...) +__private_extern__ void __objc_error(id rcv, const char *fmt, ...) { - va_list vp; - - va_start(vp,fmt); - (*_error)(rcv, fmt, vp); - va_end(vp); - _objc_error (rcv, fmt, vp); /* In case (*_error)() returns. */ + va_list vp; + + va_start(vp,fmt); +#if !__OBJC2__ + (*_error)(rcv, fmt, vp); +#endif + _objc_error (rcv, fmt, vp); /* In case (*_error)() returns. */ + va_end(vp); } /* - * this routine is never called directly...it is only called indirectly - * through "_error", which can be overriden by an application. It is - * not declared static because it needs to be referenced in - * "objc-globaldata.m" (this file organization simplifies the shlib - * maintenance problem...oh well). It is, however, a "private extern". + * _objc_error is the default *_error handler. */ -volatile void _objc_error(id self, const char *fmt, va_list ap) +#if __OBJC2__ +__private_extern__ +#endif +void _objc_error(id self, const char *fmt, va_list ap) { - char bigBuffer[4*1024]; + char *buf1; + char *buf2; - vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap); - _objc_syslog ("objc: %s: %s", object_getClassName (self), bigBuffer); + vasprintf(&buf1, fmt, ap); + asprintf(&buf2, "objc[%d]: %s: %s\n", + getpid(), object_getClassName(self), buf1); + _objc_syslog(buf2); + _objc_crashlog(buf2); _objc_trap(); } -/* - * this routine handles severe runtime errors...like not being able - * to read the mach headers, allocate space, etc...very uncommon. +/* + * this routine handles severe runtime errors...like not being able + * to read the mach headers, allocate space, etc...very uncommon. */ -volatile void _objc_fatal(const char *fmt, ...) +__private_extern__ void _objc_fatal(const char *fmt, ...) { va_list ap; - char bigBuffer[4*1024]; + char *buf1; + char *buf2; - va_start (ap,fmt); - vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap); - _objc_syslog ("objc: %s", bigBuffer); + va_start(ap,fmt); + vasprintf(&buf1, fmt, ap); va_end (ap); + asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1); + _objc_syslog(buf2); + _objc_crashlog(buf2); + _objc_trap(); } /* - * this routine handles soft runtime errors...like not being able - * add a category to a class (because it wasn't linked in). + * this routine handles soft runtime errors...like not being able + * add a category to a class (because it wasn't linked in). + */ +__private_extern__ void _objc_inform(const char *fmt, ...) +{ + va_list ap; + char *buf1; + char *buf2; + + va_start (ap,fmt); + vasprintf(&buf1, fmt, ap); + va_end (ap); + + asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1); + _objc_syslog(buf2); + + free(buf2); + free(buf1); +} + + +/* + * Like _objc_inform(), but prints the message only in any + * forthcoming crash log, not to the console. */ -void _objc_inform(const char *fmt, ...) +__private_extern__ void _objc_inform_on_crash(const char *fmt, ...) { va_list ap; - char bigBuffer[4*1024]; + char *buf1; + char *buf2; va_start (ap,fmt); - vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap); - _objc_syslog ("objc: %s", bigBuffer); + vasprintf(&buf1, fmt, ap); va_end (ap); + + asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1); + _objc_crashlog(buf2); + + free(buf2); + free(buf1); +} + + +/* + * Like calling both _objc_inform and _objc_inform_on_crash. + */ +__private_extern__ void _objc_inform_now_and_on_crash(const char *fmt, ...) +{ + va_list ap; + char *buf1; + char *buf2; + + va_start (ap,fmt); + vasprintf(&buf1, fmt, ap); + va_end (ap); + + asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1); + _objc_crashlog(buf2); + _objc_syslog(buf2); + + free(buf2); + free(buf1); } /* Kill the process in a way that generates a crash log. * This is better than calling exit(). */ -static volatile void _objc_trap(void) +static void _objc_trap(void) +{ + __builtin_trap(); +} + +/* Try to keep _objc_warn_deprecated out of crash logs + * caused by _objc_trap(). rdar://4546883 */ +__attribute__((used)) +static void _objc_trap2(void) { -#if defined(__ppc__) || defined(ppc) - asm("trap"); -#elif defined(__i386__) || defined(i386) - asm("int3"); -#else -#warning _objc_trap not specified for this architecture; using _exit instead - _exit(1); -#endif + __builtin_trap(); } + +__private_extern__ void _objc_warn_deprecated(const char *old, const char *new) +{ + if (PrintDeprecation) { + if (new) { + _objc_inform("The function %s is obsolete. Use %s instead. Set a breakpoint on _objc_warn_deprecated to find the culprit.", old, new); + } else { + _objc_inform("The function %s is obsolete. Do not use it. Set a breakpoint on _objc_warn_deprecated to find the culprit.", old); + } + } +} + + +/* Entry points for breakable errors. For some reason, can't inhibit the compiler's inlining aggression. + */ + +__private_extern__ void objc_assign_ivar_error(id base, ptrdiff_t offset) { +} + +__private_extern__ void objc_assign_global_error(id value, id *slot) { +} + +__private_extern__ void objc_exception_during_finalize_error(void) { +} + diff --git a/runtime/objc-exception.h b/runtime/objc-exception.h index 02e907c..1667108 100644 --- a/runtime/objc-exception.h +++ b/runtime/objc-exception.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 2002-2003, 2006-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -22,18 +20,14 @@ * * @APPLE_LICENSE_HEADER_END@ */ - -// objc_exception.h -// Support for Objective-C language Exceptions -// -// Created by Blaine Garst on Fri Nov 01 2002. -// Copyright (c) 2002-3 Apple Computer, Inc. All rights reserved. -// #ifndef __OBJC_EXCEPTION_H_ #define __OBJC_EXCEPTION_H_ -#import "objc/objc-class.h" +#import + +// ZEROCOST_SWITCH +#if !__LP64__ || !OBJC_ZEROCOST_EXCEPTIONS // compiler reserves a setjmp buffer + 4 words as localExceptionData @@ -60,5 +54,31 @@ OBJC_EXPORT void objc_exception_get_functions(objc_exception_functions_t *table) // set table OBJC_EXPORT void objc_exception_set_functions(objc_exception_functions_t *table); + +// !__LP64__ +#else +// __LP64__ + +typedef id (*objc_exception_preprocessor)(id exception); +typedef int (*objc_exception_matcher)(Class catch_type, id exception); +typedef void (*objc_uncaught_exception_handler)(id exception); +typedef void (*objc_exception_handler)(id unused, void *context); + +OBJC_EXPORT void objc_exception_throw(id exception); +OBJC_EXPORT void objc_exception_rethrow(void); +OBJC_EXPORT id objc_begin_catch(void *exc_buf); +OBJC_EXPORT void objc_end_catch(void); + +OBJC_EXPORT uintptr_t objc_addExceptionHandler(objc_exception_handler fn, void *context); +OBJC_EXPORT void objc_removeExceptionHandler(uintptr_t token); + +OBJC_EXPORT objc_exception_preprocessor objc_setExceptionPreprocessor(objc_exception_preprocessor fn); +OBJC_EXPORT objc_exception_matcher objc_setExceptionMatcher(objc_exception_matcher fn); +OBJC_EXPORT objc_uncaught_exception_handler objc_setUncaughtExceptionHandler(objc_uncaught_exception_handler fn); + + +// __LP64__ +#endif + #endif // __OBJC_EXCEPTION_H_ diff --git a/runtime/objc-exception.m b/runtime/objc-exception.m index 03296f1..250c796 100644 --- a/runtime/objc-exception.m +++ b/runtime/objc-exception.m @@ -1,10 +1,8 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2002-2007 Apple 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 @@ -22,18 +20,18 @@ * * @APPLE_LICENSE_HEADER_END@ */ -// -// objc_exception.m -// Support minimal stand-alone implementation plus hooks for swapping -// in a richer implementation. -// -// Created by Blaine Garst on Fri Nov 01 2002. -// Copyright (c) 2002 Apple Computer, Inc. All rights reserved. -// -#undef _BUILDING_OBJC +// ZEROCOST_SWITCH +#if !__LP64__ || !OBJC_ZEROCOST_EXCEPTIONS + +/*********************************************************************** +* 32-bit implementation +**********************************************************************/ + +#include #import "objc-exception.h" +#import "objc-private.h" static objc_exception_functions_t xtab; @@ -69,6 +67,7 @@ void objc_exception_throw(id exception) { set_default_handlers(); } xtab.throw_exc(exception); + _objc_fatal("objc_exception_throw failed"); } void objc_exception_try_enter(void *localExceptionData) { @@ -124,8 +123,6 @@ typedef struct _threadChain { } ThreadChainLink_t; -#define _ExceptionDebug 0 - static ThreadChainLink_t ThreadChainLink; static ThreadChainLink_t *getChainLink() { @@ -153,20 +150,20 @@ static void default_try_enter(void *localExceptionData) { ThreadChainLink_t *chainLink = getChainLink(); ((LocalData_t *)localExceptionData)->pointers[1] = chainLink->topHandler; chainLink->topHandler = localExceptionData; - if (_ExceptionDebug) _objc_inform("entered try block %x\n", chainLink->topHandler); + if (PrintExceptions) _objc_inform("EXCEPTIONS: entered try block %p\n", chainLink->topHandler); } static void default_throw(id value) { ThreadChainLink_t *chainLink = getChainLink(); if (value == nil) { - if (_ExceptionDebug) _objc_inform("objc_exception_throw with nil value\n"); + if (PrintExceptions) _objc_inform("EXCEPTIONS: objc_exception_throw with nil value\n"); return; } if (chainLink == NULL) { - if (_ExceptionDebug) _objc_inform("No handler in place!\n"); + if (PrintExceptions) _objc_inform("EXCEPTIONS: No handler in place!\n"); return; } - if (_ExceptionDebug) _objc_inform("exception thrown, going to handler block %x\n", chainLink->topHandler); + if (PrintExceptions) _objc_inform("EXCEPTIONS: exception thrown, going to handler block %p\n", chainLink->topHandler); LocalData_t *led = chainLink->topHandler; chainLink->topHandler = led->pointers[1]; // pop top handler led->pointers[0] = value; // store exception that is thrown @@ -176,10 +173,10 @@ static void default_throw(id value) { static void default_try_exit(void *led) { ThreadChainLink_t *chainLink = getChainLink(); if (!chainLink || led != chainLink->topHandler) { - if (_ExceptionDebug) _objc_inform("!!! mismatched try block exit handlers !!!\n"); + if (PrintExceptions) _objc_inform("EXCEPTIONS: *** mismatched try block exit handlers\n"); return; } - if (_ExceptionDebug) _objc_inform("removing try block handler %x\n", chainLink->topHandler); + if (PrintExceptions) _objc_inform("EXCEPTIONS: removing try block handler %p\n", chainLink->topHandler); chainLink->topHandler = chainLink->topHandler->pointers[1]; // pop top handler } @@ -191,7 +188,7 @@ static id default_extract(void *localExceptionData) { static int default_match(Class exceptionClass, id exception) { //return [exception isKindOfClass:exceptionClass]; Class cls; - for (cls = exception->isa; nil != cls; cls = cls->super_class) + for (cls = exception->isa; nil != cls; cls = _class_getSuperclass(cls)) if (cls == exceptionClass) return 1; return 0; } @@ -201,7 +198,916 @@ static void set_default_handlers() { 0, default_throw, default_try_enter, default_try_exit, default_extract, default_match }; // should this always print? - if (_ExceptionDebug) _objc_inform("*** Setting default (non-Foundation) exception mechanism\n"); + if (PrintExceptions) _objc_inform("EXCEPTIONS: *** Setting default (non-Foundation) exception mechanism\n"); objc_exception_set_functions(&default_functions); } + + +__private_extern__ void exception_init(void) +{ + // nothing to do +} + +__private_extern__ void _destroyAltHandlerList(struct alt_handler_list *list) +{ + // nothing to do +} + + +// !__LP64__ +#else +// __LP64__ + +/*********************************************************************** +* 64-bit implementation. +**********************************************************************/ + +#include +#include "objc-private.h" + + +// unwind library types and functions +// Mostly adapted from Itanium C++ ABI: Exception Handling +// http://www.codesourcery.com/cxx-abi/abi-eh.html + +struct _Unwind_Exception; +struct _Unwind_Context; + +typedef int _Unwind_Action; +static const _Unwind_Action _UA_SEARCH_PHASE = 1; +static const _Unwind_Action _UA_CLEANUP_PHASE = 2; +static const _Unwind_Action _UA_HANDLER_FRAME = 4; +static const _Unwind_Action _UA_FORCE_UNWIND = 8; + +typedef enum { + _URC_NO_REASON = 0, + _URC_FOREIGN_EXCEPTION_CAUGHT = 1, + _URC_FATAL_PHASE2_ERROR = 2, + _URC_FATAL_PHASE1_ERROR = 3, + _URC_NORMAL_STOP = 4, + _URC_END_OF_STACK = 5, + _URC_HANDLER_FOUND = 6, + _URC_INSTALL_CONTEXT = 7, + _URC_CONTINUE_UNWIND = 8 +} _Unwind_Reason_Code; + + +typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *, void *); + +struct dwarf_eh_bases +{ + uintptr_t tbase; + uintptr_t dbase; + uintptr_t func; +}; + +extern uintptr_t _Unwind_GetIP (struct _Unwind_Context *); +extern uintptr_t _Unwind_GetCFA (struct _Unwind_Context *); +extern uintptr_t _Unwind_GetLanguageSpecificData(struct _Unwind_Context *); +extern const void * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *); +extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *); + + +// C++ runtime types and functions +// Mostly adapted from Itanium C++ ABI: Exception Handling +// http://www.codesourcery.com/cxx-abi/abi-eh.html + +typedef void (*terminate_handler) (); + +// mangled std::set_terminate() +extern terminate_handler _ZSt13set_terminatePFvvE(terminate_handler); +extern void *__cxa_allocate_exception(size_t thrown_size); +extern void __cxa_throw(void *exc, void *typeinfo, void (*destructor)(void *)) __attribute__((noreturn)); +extern void *__cxa_begin_catch(void *exc); +extern void __cxa_end_catch(void); +extern void __cxa_rethrow(void); +extern void *__cxa_current_exception_type(void); + +extern _Unwind_Reason_Code +__gxx_personality_v0(int version, + _Unwind_Action actions, + uint64_t exceptionClass, + struct _Unwind_Exception *exceptionObject, + struct _Unwind_Context *context); + + +// objc's internal exception types and data + +extern const void *objc_ehtype_vtable[]; + +struct objc_typeinfo { + // Position of vtable and name fields must match C++ typeinfo object + const void **vtable; // always objc_ehtype_vtable + const char *name; // c++ typeinfo string + + Class cls; +}; + +struct objc_exception { + id obj; + struct objc_typeinfo tinfo; +}; + + +static void _objc_exception_noop(void) { } +static char _objc_exception_false(void) { return 0; } +static char _objc_exception_true(void) { return 1; } +static char _objc_exception_do_catch(struct objc_typeinfo *catch_tinfo, + struct objc_typeinfo *throw_tinfo, + void **throw_obj_p, + unsigned outer); + +const void *objc_ehtype_vtable[] = { + NULL, // typeinfo's vtable? - fixme + NULL, // typeinfo's typeinfo - fixme + _objc_exception_noop, // in-place destructor? + _objc_exception_noop, // destructor? + _objc_exception_true, // __is_pointer_p + _objc_exception_false, // __is_function_p + _objc_exception_do_catch, // __do_catch + _objc_exception_false, // __do_upcast +}; + +struct objc_typeinfo OBJC_EHTYPE_id = { + objc_ehtype_vtable+2, + "id", + NULL +}; + + + +/*********************************************************************** +* Foundation customization +**********************************************************************/ + +/*********************************************************************** +* _objc_default_exception_preprocessor +* Default exception preprocessor. Expected to be overridden by Foundation. +**********************************************************************/ +static id _objc_default_exception_preprocessor(id exception) +{ + return exception; +} +static objc_exception_preprocessor exception_preprocessor = _objc_default_exception_preprocessor; + + +/*********************************************************************** +* _objc_default_exception_matcher +* Default exception matcher. Expected to be overridden by Foundation. +**********************************************************************/ +static int _objc_default_exception_matcher(Class catch_cls, id exception) +{ + Class cls; + for (cls = exception->isa; + cls != NULL; + cls = class_getSuperclass(cls)) + { + if (cls == catch_cls) return 1; + } + + return 0; +} +static objc_exception_matcher exception_matcher = _objc_default_exception_matcher; + + +/*********************************************************************** +* _objc_default_uncaught_exception_handler +* Default uncaught exception handler. Expected to be overridden by Foundation. +**********************************************************************/ +static void _objc_default_uncaught_exception_handler(id exception) +{ +} +static objc_uncaught_exception_handler uncaught_handler = _objc_default_uncaught_exception_handler; + + +/*********************************************************************** +* objc_setExceptionPreprocessor +* Set a handler for preprocessing Objective-C exceptions. +* Returns the previous handler. +**********************************************************************/ +objc_exception_preprocessor +objc_setExceptionPreprocessor(objc_exception_preprocessor fn) +{ + objc_exception_preprocessor result = exception_preprocessor; + exception_preprocessor = fn; + return result; +} + + +/*********************************************************************** +* objc_setExceptionMatcher +* Set a handler for matching Objective-C exceptions. +* Returns the previous handler. +**********************************************************************/ +objc_exception_matcher +objc_setExceptionMatcher(objc_exception_matcher fn) +{ + objc_exception_matcher result = exception_matcher; + exception_matcher = fn; + return result; +} + + +/*********************************************************************** +* objc_setUncaughtExceptionHandler +* Set a handler for uncaught Objective-C exceptions. +* Returns the previous handler. +**********************************************************************/ +objc_uncaught_exception_handler +objc_setUncaughtExceptionHandler(objc_uncaught_exception_handler fn) +{ + objc_uncaught_exception_handler result = uncaught_handler; + uncaught_handler = fn; + return result; +} + + +/*********************************************************************** +* Exception personality +**********************************************************************/ + +static void call_alt_handlers(struct _Unwind_Context *ctx); + +_Unwind_Reason_Code +__objc_personality_v0(int version, + _Unwind_Action actions, + uint64_t exceptionClass, + struct _Unwind_Exception *exceptionObject, + struct _Unwind_Context *context) +{ + BOOL unwinding = ((actions & _UA_CLEANUP_PHASE) || + (actions & _UA_FORCE_UNWIND)); + + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: %s through frame [ip=%p sp=%p] " + "for exception %p", + unwinding ? "unwinding" : "searching", + (void*)(_Unwind_GetIP(context)-1), + (void*)_Unwind_GetCFA(context), exceptionObject); + } + + // If we're executing the unwind, call this frame's alt handlers, if any. + if (unwinding) { + call_alt_handlers(context); + } + + // Let C++ handle the unwind itself. + return __gxx_personality_v0(version, actions, exceptionClass, + exceptionObject, context); +} + + +/*********************************************************************** +* Compiler ABI +**********************************************************************/ + +static void _objc_exception_destructor(void *exc_gen) { + struct objc_exception *exc = (struct objc_exception *)exc_gen; + if (UseGC && auto_zone_is_valid_pointer(gc_zone, exc->obj)) { + // retained by objc_exception_throw + auto_zone_release(gc_zone, exc->obj); + } +} + + +void objc_exception_throw(id obj) +{ + struct objc_exception *exc = + __cxa_allocate_exception(sizeof(struct objc_exception)); + + exc->obj = (*exception_preprocessor)(obj); + if (UseGC && auto_zone_is_valid_pointer(gc_zone, obj)) { + // exc is non-scanned memory. Retain the object for the duration. + auto_zone_retain(gc_zone, obj); + } + + exc->tinfo.vtable = objc_ehtype_vtable; + exc->tinfo.name = object_getClassName(obj); + exc->tinfo.cls = obj ? obj->isa : Nil; + + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: throwing %p (object %p, a %s)", + exc, obj, object_getClassName(obj)); + } + + __cxa_throw(exc, &exc->tinfo, &_objc_exception_destructor); +} + + +void objc_exception_rethrow(void) +{ + // exception_preprocessor doesn't get another bite of the apple + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: rethrowing current exception"); + } + __cxa_rethrow(); +} + + +id objc_begin_catch(void *exc_gen) +{ + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: handling exception %p at %p", + exc_gen, __builtin_return_address(0)); + } + // NOT actually an id in the catch(...) case! + return (id)__cxa_begin_catch(exc_gen); +} + + +void objc_end_catch(void) +{ + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: finishing handler"); + } + __cxa_end_catch(); +} + + +static char _objc_exception_do_catch(struct objc_typeinfo *catch_tinfo, + struct objc_typeinfo *throw_tinfo, + void **throw_obj_p, + unsigned outer) +{ + id exception; + + if (throw_tinfo->vtable != objc_ehtype_vtable) { + // Only objc types can be caught here. + return 0; + } + + // `catch (id)` always catches objc types. + if (catch_tinfo == &OBJC_EHTYPE_id) { + if (PrintExceptions) _objc_inform("EXCEPTIONS: catch(id)"); + return 1; + } + + exception = *(id *)throw_obj_p; + // fixme remapped catch_tinfo->cls + if ((*exception_matcher)(catch_tinfo->cls, exception)) { + if (PrintExceptions) _objc_inform("EXCEPTIONS: catch(%s)", + class_getName(catch_tinfo->cls)); + return 1; + } + + return 0; +} + + +/*********************************************************************** +* _objc_terminate +* Custom std::terminate handler. +* +* The uncaught exception callback is implemented as a std::terminate handler. +* 1. Check if there's an active exception +* 2. If so, check if it's an Objective-C exception +* 3. If so, call our registered callback with the object. +* 4. Finally, call the previous terminate handler. +**********************************************************************/ +static terminate_handler old_terminate = NULL; +static void _objc_terminate(void) +{ + if (PrintExceptions) { + _objc_inform("EXCEPTIONS: terminating"); + } + + if (! __cxa_current_exception_type()) { + // No current exception. + (*old_terminate)(); + } + else { + // There is a current exception. Check if it's an objc exception. + @try { + __cxa_rethrow(); + } @catch (id e) { + // It's an objc object. Call Foundation's handler, if any. + (*uncaught_handler)(e); + (*old_terminate)(); + } @catch (...) { + // It's not an objc object. Continue to C++ terminate. + (*old_terminate)(); + } + } +} + + +/*********************************************************************** +* alt handler support +**********************************************************************/ + + +// Dwarf eh data encodings +#define DW_EH_PE_omit 0xff // no data follows + +#define DW_EH_PE_absptr 0x00 +#define DW_EH_PE_uleb128 0x01 +#define DW_EH_PE_udata2 0x02 +#define DW_EH_PE_udata4 0x03 +#define DW_EH_PE_udata8 0x04 +#define DW_EH_PE_sleb128 0x09 +#define DW_EH_PE_sdata2 0x0A +#define DW_EH_PE_sdata4 0x0B +#define DW_EH_PE_sdata8 0x0C + +#define DW_EH_PE_pcrel 0x10 +#define DW_EH_PE_textrel 0x20 +#define DW_EH_PE_datarel 0x30 +#define DW_EH_PE_funcrel 0x40 +#define DW_EH_PE_aligned 0x50 // fixme + +#define DW_EH_PE_indirect 0x80 // gcc extension + + +/*********************************************************************** +* read_uleb +* Read a LEB-encoded unsigned integer from the address stored in *pp. +* Increments *pp past the bytes read. +* Adapted from DWARF Debugging Information Format 1.1, appendix 4 +**********************************************************************/ +static uintptr_t read_uleb(uintptr_t *pp) +{ + uintptr_t result = 0; + uintptr_t shift = 0; + unsigned char byte; + do { + byte = *(const unsigned char *)(*pp)++; + result |= (byte & 0x7f) << shift; + shift += 7; + } while (byte & 0x80); + return result; +} + + +/*********************************************************************** +* read_sleb +* Read a LEB-encoded signed integer from the address stored in *pp. +* Increments *pp past the bytes read. +* Adapted from DWARF Debugging Information Format 1.1, appendix 4 +**********************************************************************/ +static intptr_t read_sleb(uintptr_t *pp) +{ + uintptr_t result = 0; + uintptr_t shift = 0; + unsigned char byte; + do { + byte = *(const unsigned char *)(*pp)++; + result |= (byte & 0x7f) << shift; + shift += 7; + } while (byte & 0x80); + if ((shift < 8*sizeof(intptr_t)) && (byte & 0x40)) { + result |= ((intptr_t)-1) << shift; + } + return result; +} + + +/*********************************************************************** +* get_cie +* Returns the address of the CIE for the given FDE. +**********************************************************************/ +static uintptr_t get_cie(uintptr_t fde) { + uintptr_t deltap = fde + sizeof(int32_t); + int32_t delta = *(int32_t *)deltap; + return deltap - delta; +} + + +/*********************************************************************** +* get_cie_augmentation +* Returns the augmentation string for the given CIE. +**********************************************************************/ +static const char *get_cie_augmentation(uintptr_t cie) { + return (const char *)(cie + 2*sizeof(int32_t) + 1); +} + + +/*********************************************************************** +* read_address +* Reads an encoded address from the address stored in *pp. +* Increments *pp past the bytes read. +* The data is interpreted according to the given dwarf encoding +* and base addresses. +**********************************************************************/ +static uintptr_t read_address(uintptr_t *pp, + struct dwarf_eh_bases *bases, + unsigned char encoding) +{ + uintptr_t result = 0; + uintptr_t oldp = *pp; + + // fixme need DW_EH_PE_aligned? + +#define READ(type) \ + result = *(type *)(*pp); \ + *pp += sizeof(type); + + if (encoding == DW_EH_PE_omit) return 0; + + switch (encoding & 0x0f) { + case DW_EH_PE_absptr: + READ(uintptr_t); + break; + case DW_EH_PE_uleb128: + result = read_uleb(pp); + break; + case DW_EH_PE_udata2: + READ(uint16_t); + break; + case DW_EH_PE_udata4: + READ(uint32_t); + break; +#if __LP64__ + case DW_EH_PE_udata8: + READ(uint64_t); + break; +#endif + case DW_EH_PE_sleb128: + result = read_sleb(pp); + break; + case DW_EH_PE_sdata2: + READ(int16_t); + break; + case DW_EH_PE_sdata4: + READ(int32_t); + break; +#if __LP64__ + case DW_EH_PE_sdata8: + READ(int64_t); + break; +#endif + default: + _objc_inform("unknown DWARF EH encoding 0x%x at %p", + encoding, (void *)*pp); + break; + } + +#undef READ + + if (result) { + switch (encoding & 0x70) { + case DW_EH_PE_pcrel: + // fixme correct? + result += (uintptr_t)oldp; + break; + case DW_EH_PE_textrel: + result += bases->tbase; + break; + case DW_EH_PE_datarel: + result += bases->dbase; + break; + case DW_EH_PE_funcrel: + result += bases->func; + break; + case DW_EH_PE_aligned: + _objc_inform("unknown DWARF EH encoding 0x%x at %p", + encoding, (void *)*pp); + break; + default: + // no adjustment + break; + } + + if (encoding & DW_EH_PE_indirect) { + result = *(uintptr_t *)result; + } + } + + return (uintptr_t)result; +} + + +/*********************************************************************** +* frame_finder +* Determines whether the frame represented by ctx is +* (1) an Objective-C or Objective-C++ frame, and +* (2) has any catch handlers. +**********************************************************************/ +struct frame_range { + uintptr_t ip_start; + uintptr_t ip_end; + uintptr_t cfa; +}; + +static _Unwind_Reason_Code frame_finder(struct _Unwind_Context *ctx, void *arg) +{ + uintptr_t ip_start; + uintptr_t ip_end; + + uintptr_t lsda = _Unwind_GetLanguageSpecificData(ctx); + if (!lsda) return _URC_NO_REASON; + + uintptr_t ip = _Unwind_GetIP(ctx) - 1; + + struct dwarf_eh_bases bases; + uintptr_t fde = (uintptr_t)_Unwind_Find_FDE((void *)ip, &bases); + if (!fde) return _URC_NO_REASON; + + uintptr_t cie = get_cie(fde); + const char *aug = get_cie_augmentation(cie); + uintptr_t augdata = (uintptr_t)(aug + strlen(aug) + 1); + read_uleb(&augdata); // code alignment factor + read_sleb(&augdata); // data alignment factor + augdata++; // RA register + + // 'z' must be first, if present + if (*aug == 'z') { + aug++; + read_uleb(&augdata); // augmentation length + } + + uintptr_t personality = 0; + char ch; + while ((ch = *aug++)) { + if (ch == 'L') { + // LSDA encoding + augdata++; + } else if (ch == 'R') { + // pointer encoding + augdata++; + } else if (ch == 'P') { + // personality function + unsigned char enc = *(const unsigned char *)augdata++; + personality = read_address(&augdata, &bases, enc); + } else { + // unknown augmentation - ignore the rest + break; + } + } + + // No personality means no handlers in this frame + if (!personality) return _URC_NO_REASON; + + // Only the objc personality will honor our attached handlers. + if (personality != (uintptr_t)__objc_personality_v0) return _URC_NO_REASON; + + // We have the LSDA and the right personality. + // Scan the LSDA for handlers matching this IP + + unsigned char LPStart_enc = *(const unsigned char *)lsda++; + if (LPStart_enc != DW_EH_PE_omit) { + read_address(&lsda, &bases, LPStart_enc); // LPStart + } + + unsigned char TType_enc = *(const unsigned char *)lsda++; + if (TType_enc != DW_EH_PE_omit) { + read_uleb(&lsda); // TType + } + + unsigned char call_site_enc = *(const unsigned char *)lsda++; + uintptr_t length = read_uleb(&lsda); + uintptr_t call_site_table = lsda; + uintptr_t call_site_table_end = call_site_table + length; + uintptr_t action_record_table = call_site_table_end; + + uintptr_t action_record = 0; + uintptr_t p = call_site_table; + + while (p < call_site_table_end) { + uintptr_t start = read_address(&p, &bases, call_site_enc); + uintptr_t len = read_address(&p, &bases, call_site_enc); + uintptr_t pad = read_address(&p, &bases, call_site_enc); + uintptr_t action = read_uleb(&p); + + if (ip < bases.func + start) { + // no more source ranges + return _URC_NO_REASON; + } + else if (ip < bases.func + start + len) { + // found the range + if (!pad) return _URC_NO_REASON; // ...but it has no landing pad + // found the landing pad + ip_start = bases.func + start; + ip_end = bases.func + start + len; + action_record = action ? action_record_table + action - 1 : 0; + break; + } + } + + if (!action_record) return _URC_NO_REASON; // no catch handlers + + // has handlers, destructors, and/or throws specifications + // Use this frame if it has any handlers + int has_handler = 0; + p = action_record; + intptr_t offset; + do { + intptr_t filter = read_sleb(&p); + uintptr_t temp = p; + offset = read_sleb(&temp); + p += offset; + + if (filter < 0) { + // throws specification - ignore + } else if (filter == 0) { + // destructor - ignore + } else /* filter >= 0 */ { + // catch handler - use this frame + has_handler = 1; + break; + } + } while (offset); + + if (!has_handler) return _URC_NO_REASON; // no catch handlers - ignore + + struct frame_range *result = (struct frame_range *)arg; + result->ip_start = ip_start; + result->ip_end = ip_end; + result->cfa = _Unwind_GetCFA(ctx); + + return _URC_HANDLER_FOUND; +} + + +// This data structure assumes the number of +// active alt handlers per frame is small. +struct alt_handler_data { + uintptr_t ip_start; + uintptr_t ip_end; + uintptr_t cfa; + objc_exception_handler fn; + void *context; +}; + +struct alt_handler_list { + unsigned int allocated; + unsigned int used; + struct alt_handler_data *handlers; +}; + + +static struct alt_handler_list * +fetch_handler_list(BOOL create) +{ + _objc_pthread_data *data = _objc_fetch_pthread_data(create); + if (!data) return NULL; + + struct alt_handler_list *list = data->handlerList; + if (!list) { + if (!create) return NULL; + list = _calloc_internal(1, sizeof(*list)); + data->handlerList = list; + } + + return list; +} + + +__private_extern__ void _destroyAltHandlerList(struct alt_handler_list *list) +{ + if (list) { + if (list->handlers) { + _free_internal(list->handlers); + } + _free_internal(list); + } +} + + +uintptr_t objc_addExceptionHandler(objc_exception_handler fn, void *context) +{ + struct frame_range target_frame = {0, 0, 0}; + + // Find the closest enclosing frame with objc catch handlers + _Unwind_Backtrace(&frame_finder, &target_frame); + if (!target_frame.ip_start) { + // No suitable enclosing handler found. + return 0; + } + + // Record this alt handler for the discovered frame. + struct alt_handler_list *list = fetch_handler_list(YES); + unsigned int i = 0; + + if (list->used == list->allocated) { + list->allocated = list->allocated*2 ?: 4; + list->handlers = _realloc_internal(list->handlers, list->allocated * sizeof(list->handlers[0])); + bzero(&list->handlers[list->used], (list->allocated - list->used) * sizeof(list->handlers[0])); + i = list->used; + } + else { + for (i = 0; i < list->allocated; i++) { + if (list->handlers[i].ip_start == 0 && + list->handlers[i].ip_end == 0 && + list->handlers[i].cfa == 0) + { + break; + } + } + if (i == list->allocated) { + _objc_fatal("alt handlers in objc runtime are buggy!"); + } + } + + struct alt_handler_data *data = &list->handlers[i]; + + data->ip_start = target_frame.ip_start; + data->ip_end = target_frame.ip_end; + data->cfa = target_frame.cfa; + data->fn = fn; + data->context = context; + list->used++; + + if (PrintAltHandlers) { + _objc_inform("ALT HANDLERS: installing alt handler %d %p(%p) on " + "frame [ip=%p..%p sp=%p]", i+1, data->fn, data->context, + (void *)data->ip_start, (void *)data->ip_end, + (void *)data->cfa); + } + + if (list->used > 1000) { + static int warned = 0; + if (!warned) { + _objc_inform("ALT_HANDLERS: *** over 1000 alt handlers installed; " + "this is probably a bug"); + warned = 1; + } + } + + return i+1; +} + + +void objc_removeExceptionHandler(uintptr_t token) +{ + if (!token) { + // objc_addExceptionHandler failed + return; + } + unsigned int i = (unsigned int)(token - 1); + + struct alt_handler_list *list = fetch_handler_list(NO); + if (!list || list->used == 0) { + // no handlers present + if (PrintAltHandlers) { + _objc_inform("ALT HANDLERS: *** can't remove alt handler %lu " + "(no alt handlers present)", token); + } + return; + } + if (i >= list->allocated) { + // bogus token + if (PrintAltHandlers) { + _objc_inform("ALT HANDLERS: *** can't remove alt handler %lu " + "(current max is %u)", token, list->allocated); + } + return; + } + + struct alt_handler_data *data = &list->handlers[i]; + if (PrintAltHandlers) { + _objc_inform("ALT HANDLERS: removing alt handler %d %p(%p) on " + "frame [ip=%p..%p sp=%p]", i+1, data->fn, data->context, + (void *)data->ip_start, (void *)data->ip_end, + (void *)data->cfa); + } + bzero(data, sizeof(*data)); + list->used--; +} + + +// called in order registered, to match 32-bit _NSAddAltHandler2 +// fixme reverse registration order matches c++ destructors better +static void call_alt_handlers(struct _Unwind_Context *ctx) +{ + uintptr_t ip = _Unwind_GetIP(ctx) - 1; + uintptr_t cfa = _Unwind_GetCFA(ctx); + unsigned int i; + struct alt_handler_list *list = fetch_handler_list(NO); + if (!list || list->used == 0) return; + + for (i = 0; i < list->allocated; i++) { + struct alt_handler_data *data = &list->handlers[i]; + if (ip >= data->ip_start && ip < data->ip_end && data->cfa == cfa) + { + // Copy and clear before the callback, in case the + // callback manipulates the alt handler list. + struct alt_handler_data copy = *data; + bzero(data, sizeof(*data)); + list->used--; + if (PrintExceptions || PrintAltHandlers) { + _objc_inform("EXCEPTIONS: calling alt handler %p(%p) from " + "frame [ip=%p..%p sp=%p]", copy.fn, copy.context, + (void *)copy.ip_start, (void *)copy.ip_end, + (void *)copy.cfa); + } + if (copy.fn) (*copy.fn)(nil, copy.context); + } + } +} + + +/*********************************************************************** +* exception_init +* Initialize libobjc's exception handling system. +* Called by map_images(). +**********************************************************************/ +__private_extern__ void exception_init(void) +{ + // call std::set_terminate + old_terminate = _ZSt13set_terminatePFvvE(&_objc_terminate); +} + + +// __LP64__ +#endif diff --git a/runtime/objc-file.m b/runtime/objc-file.m index df0cde4..370cdf1 100644 --- a/runtime/objc-file.m +++ b/runtime/objc-file.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -24,147 +22,284 @@ */ // Copyright 1988-1996 NeXT Software, Inc. -#import "objc-private.h" -#import -#import -#import +#include +#include +#include #include #include +#include -#import +#define OLD 1 +#import "objc-private.h" +#ifndef __LP64__ +#define SEGMENT_CMD LC_SEGMENT +#define GETSECTDATAFROMHEADER(mh, seg, sect, sizep) \ + getsectdatafromheader(mh, seg, sect, (uint32_t *)sizep) +#else +#define SEGMENT_CMD LC_SEGMENT_64 +#define GETSECTDATAFROMHEADER(mh, seg, sect, sizep) \ + getsectdatafromheader_64(mh, seg, sect, (uint64_t *)sizep) +#endif -/* Returns an array of all the objc headers in the executable - * Caller is responsible for freeing. - */ -headerType **_getObjcHeaders() +__private_extern__ objc_image_info * +_getObjcImageInfo(const headerType *head, ptrdiff_t slide, size_t *sizep) { - const struct mach_header **headers; - headers = malloc(sizeof(struct mach_header *) * 2); - headers[0] = (const struct mach_header *)_NSGetMachExecuteHeader(); - headers[1] = 0; - return (headerType**)headers; + objc_image_info *info = (objc_image_info *) +#if __OBJC2__ + GETSECTDATAFROMHEADER(head, SEG_DATA, "__objc_imageinfo", sizep); + if (!info) info = (objc_image_info *) +#endif + GETSECTDATAFROMHEADER(head, SEG_OBJC, "__image_info", sizep); + // size is BYTES, not count! + if (info) info = (objc_image_info *)((uintptr_t)info + slide); + return info; } -Module _getObjcModules(const headerType *head, int *nmodules) +// fixme !objc2 only (used for new-abi paranoia) +__private_extern__ Module +_getObjcModules(const headerType *head, ptrdiff_t slide, size_t *nmodules) { - uint32_t size; - void *mods = getsectdatafromheader((headerType *)head, - SEG_OBJC, - SECT_OBJC_MODULES, - &size); + size_t size; + void *mods = + GETSECTDATAFROMHEADER(head, SEG_OBJC, SECT_OBJC_MODULES, &size); +#if !__OBJC2__ *nmodules = size / sizeof(struct objc_module); +#endif + if (mods) mods = (void *)((uintptr_t)mods + slide); return (Module)mods; } -SEL *_getObjcMessageRefs(headerType *head, int *nmess) +// fixme !objc2 only (used for new-abi paranoia) +__private_extern__ SEL * +_getObjcSelectorRefs(const header_info *hi, size_t *nmess) { - uint32_t size; - void *refs = getsectdatafromheader ((headerType *)head, - SEG_OBJC, "__message_refs", &size); + size_t size; + void *refs = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC, "__message_refs", &size); + if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide); *nmess = size / sizeof(SEL); return (SEL *)refs; } -ProtocolTemplate *_getObjcProtocols(headerType *head, int *nprotos) +#if !__OBJC2__ + +__private_extern__ struct old_protocol * +_getObjcProtocols(const header_info *hi, size_t *nprotos) { - uint32_t size; - void *protos = getsectdatafromheader ((headerType *)head, - SEG_OBJC, "__protocol", &size); - *nprotos = size / sizeof(ProtocolTemplate); - return (ProtocolTemplate *)protos; + size_t size; + void *protos = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC, "__protocol", &size); + *nprotos = size / sizeof(struct old_protocol); + if (protos) protos = (struct old_protocol *)((uintptr_t)protos+hi->image_slide); + return (struct old_protocol *)protos; } -NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs) +__private_extern__ struct old_class ** +_getObjcClassRefs(const header_info *hi, size_t *nclasses) { - *nstrs = 0; - return NULL; + size_t size; + void *classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC, "__cls_refs", &size); + *nclasses = size / sizeof(struct old_class *); + if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide); + return (struct old_class **)classes; } -Class *_getObjcClassRefs(headerType *head, int *nclasses) +// __OBJC,__class_names section only emitted by CodeWarrior rdar://4951638 +__private_extern__ const char * +_getObjcClassNames(const header_info *hi, size_t *size) { - uint32_t size; - void *classes = getsectdatafromheader ((headerType *)head, - SEG_OBJC, "__cls_refs", &size); - *nclasses = size / sizeof(Class); - return (Class *)classes; + void *names = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC, "__class_names", size); + if (names) names = (void *)((uintptr_t)names + hi->image_slide); + return (const char *)names; } -objc_image_info *_getObjcImageInfo(const headerType *head, uint32_t *sizep) +#endif + +#if __OBJC2__ + +__private_extern__ SEL * +_getObjc2SelectorRefs(const header_info *hi, size_t *nmess) { - objc_image_info *info = (objc_image_info *) - getsectdatafromheader(head, SEG_OBJC, "__image_info", sizep); - return info; + size_t size; + void *refs = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_selrefs", &size); + if (!refs) refs = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__selector_refs", &size); + if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide); + *nmess = size / sizeof(SEL); + return (SEL *)refs; +} + +__private_extern__ message_ref * +_getObjc2MessageRefs(const header_info *hi, size_t *nmess) +{ + size_t size; + void *refs = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_msgrefs", &size); + if (!refs) refs = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__message_refs", &size); + if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide); + *nmess = size / sizeof(message_ref); + return (message_ref *)refs; +} + +__private_extern__ struct class_t ** +_getObjc2ClassRefs(const header_info *hi, size_t *nclasses) +{ + size_t size; + void *classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_classrefs", &size); + if (!classes) classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__class_refs", &size); + *nclasses = size / sizeof(struct class_t *); + if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide); + return (struct class_t **)classes; +} + +__private_extern__ struct class_t ** +_getObjc2SuperRefs(const header_info *hi, size_t *nclasses) +{ + size_t size; + void *classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_superrefs", &size); + if (!classes) classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__super_refs", &size); + *nclasses = size / sizeof(struct class_t *); + if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide); + return (struct class_t **)classes; } -const struct segment_command *getsegbynamefromheader(const headerType *head, - const char *segname) +__private_extern__ struct class_t ** +_getObjc2ClassList(const header_info *hi, size_t *nclasses) { - const struct segment_command *sgp; + size_t size; + void *classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_classlist", &size); + if (!classes) classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__class_list", &size); + *nclasses = size / sizeof(struct class_t *); + if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide); + return (struct class_t **)classes; +} + +__private_extern__ struct class_t ** +_getObjc2NonlazyClassList(const header_info *hi, size_t *nclasses) +{ + size_t size; + void *classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_nlclslist", &size); + if (!classes) classes = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__nonlazy_class", &size); + *nclasses = size / sizeof(struct class_t *); + if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide); + return (struct class_t **)classes; +} + +__private_extern__ struct category_t ** +_getObjc2CategoryList(const header_info *hi, size_t *ncats) +{ + size_t size; + void *cats = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_catlist", &size); + if (!cats) cats = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__category_list", &size); + *ncats = size / sizeof(struct category_t *); + if (cats) cats = (void *)((uintptr_t)cats + hi->image_slide); + return (struct category_t **)cats; +} + +__private_extern__ struct category_t ** +_getObjc2NonlazyCategoryList(const header_info *hi, size_t *ncats) +{ + size_t size; + void *cats = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_nlcatlist", &size); + if (!cats) cats = + GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__nonlazy_catgry", &size); + *ncats = size / sizeof(struct category_t *); + if (cats) cats = (void *)((uintptr_t)cats + hi->image_slide); + return (struct category_t **)cats; +} + +__private_extern__ struct protocol_t ** +_getObjc2ProtocolList(const header_info *hi, size_t *nprotos) +{ + size_t size; + void *protos = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_protolist", &size); + if (!protos) protos = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__protocol_list", &size); + *nprotos = size / sizeof(struct protocol_t *); + if (protos) protos = (struct protocol_t **)((uintptr_t)protos+hi->image_slide); + return (struct protocol_t **)protos; +} + +__private_extern__ struct protocol_t ** +_getObjc2ProtocolRefs(const header_info *hi, size_t *nprotos) +{ + size_t size; + void *protos = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_protorefs", &size); + if (!protos) protos = + GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__protocol_refs", &size); + *nprotos = size / sizeof(struct protocol_t *); + if (protos) protos = (struct protocol_t **)((uintptr_t)protos+hi->image_slide); + return (struct protocol_t **)protos; +} + +#endif + +__private_extern__ const segmentType * +getsegbynamefromheader(const headerType *head, const char *segname) +{ + const segmentType *sgp; unsigned long i; - sgp = (const struct segment_command *) ((char *)head + sizeof(headerType)); + sgp = (const segmentType *) (head + 1); for (i = 0; i < head->ncmds; i++){ - if (sgp->cmd == LC_SEGMENT) { + if (sgp->cmd == SEGMENT_CMD) { if (strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0) { return sgp; } } - sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize); + sgp = (const segmentType *)((char *)sgp + sgp->cmdsize); } return NULL; } -static const headerType *_getExecHeader (void) +__private_extern__ const char * +_getObjcHeaderName(const headerType *header) { - return (const struct mach_header *)_NSGetMachExecuteHeader(); -} + Dl_info info; -const char *_getObjcHeaderName(const headerType *header) -{ - const headerType *execHeader; - const struct fvmlib_command *libCmd, *endOfCmds; - - if (header && ((headerType *)header)->filetype == MH_FVMLIB) { - execHeader = _getExecHeader(); - for (libCmd = (const struct fvmlib_command *)(execHeader + 1), - endOfCmds = ((void *)libCmd) + execHeader->sizeofcmds; - libCmd < endOfCmds; ((void *)libCmd) += libCmd->cmdsize) { - if ((libCmd->cmd == LC_LOADFVMLIB) && (libCmd->fvmlib.header_addr - == (unsigned long)header)) { - return (char *)libCmd - + libCmd->fvmlib.name.offset; - } - } - return NULL; - } else { - unsigned long i, n = _dyld_image_count(); - for( i = 0; i < n ; i++ ) { - if ( _dyld_get_image_header(i) == header ) - return _dyld_get_image_name(i); - } - - return (*_NSGetArgv())[0]; - } + if (dladdr(header, &info)) { + return info.dli_fname; + } + else { + 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) +__private_extern__ ptrdiff_t +_getImageSlide(const headerType *header) { - int i; - const struct segment_command *sgp = - (const struct segment_command *)(header + 1); + unsigned long i; + const segmentType *sgp = (const segmentType *)(header + 1); for (i = 0; i < header->ncmds; i++){ - if (sgp->cmd == LC_SEGMENT) { + if (sgp->cmd == SEGMENT_CMD) { if (sgp->fileoff == 0 && sgp->filesize != 0) { return (uintptr_t)header - (uintptr_t)sgp->vmaddr; } } - sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize); + sgp = (const segmentType *)((char *)sgp + sgp->cmdsize); } // uh-oh diff --git a/runtime/objc-initialize.h b/runtime/objc-initialize.h new file mode 100644 index 0000000..78ab45f --- /dev/null +++ b/runtime/objc-initialize.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2005-2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +#include "objc.h" + +extern BOOL _class_isInitializing(Class cls); +BOOL _class_isInitialized(Class cls); + +extern void _class_initialize(Class cls); + +extern void _destroyInitializingClassList(struct _objc_initializing_classes *list); + diff --git a/runtime/objc-initialize.m b/runtime/objc-initialize.m new file mode 100644 index 0000000..aede2e0 --- /dev/null +++ b/runtime/objc-initialize.m @@ -0,0 +1,356 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-initialize.m +* +initialize support +**********************************************************************/ + +/*********************************************************************** + * Thread-safety during class initialization (GrP 2001-9-24) + * + * Initial state: CLS_INITIALIZING and CLS_INITIALIZED both clear. + * During initialization: CLS_INITIALIZING is set + * After initialization: CLS_INITIALIZING clear and CLS_INITIALIZED set. + * CLS_INITIALIZING and CLS_INITIALIZED are never set at the same time. + * CLS_INITIALIZED is never cleared once set. + * + * Only one thread is allowed to actually initialize a class and send + * +initialize. Enforced by allowing only one thread to set CLS_INITIALIZING. + * + * Additionally, threads trying to send messages to a class must wait for + * +initialize to finish. During initialization of a class, that class's + * method cache is kept empty. objc_msgSend will revert to + * class_lookupMethodAndLoadCache, which checks CLS_INITIALIZED before + * messaging. If CLS_INITIALIZED is clear but CLS_INITIALIZING is set, + * the thread must block, unless it is the thread that started + * initializing the class in the first place. + * + * Each thread keeps a list of classes it's initializing. + * The global classInitLock is used to synchronize changes to CLS_INITIALIZED + * and CLS_INITIALIZING: the transition to CLS_INITIALIZING must be + * an atomic test-and-set with respect to itself and the transition + * to CLS_INITIALIZED. + * The global classInitWaitCond is used to block threads waiting for an + * initialization to complete. The classInitLock synchronizes + * condition checking and the condition variable. + **********************************************************************/ + +/*********************************************************************** + * +initialize deadlock case when a class is marked initializing while + * its superclass is initialized. Solved by completely initializing + * superclasses before beginning to initialize a class. + * + * OmniWeb class hierarchy: + * OBObject + * | ` OBPostLoader + * OFObject + * / \ + * OWAddressEntry OWController + * | + * OWConsoleController + * + * Thread 1 (evil testing thread): + * initialize OWAddressEntry + * super init OFObject + * super init OBObject + * [OBObject initialize] runs OBPostLoader, which inits lots of classes... + * initialize OWConsoleController + * super init OWController - wait for Thread 2 to finish OWController init + * + * Thread 2 (normal OmniWeb thread): + * initialize OWController + * super init OFObject - wait for Thread 1 to finish OFObject init + * + * deadlock! + * + * Solution: fully initialize super classes before beginning to initialize + * a subclass. Then the initializing+initialized part of the class hierarchy + * will be a contiguous subtree starting at the root, so other threads + * can't jump into the middle between two initializing classes, and we won't + * get stuck while a superclass waits for its subclass which waits for the + * superclass. + **********************************************************************/ + +#include +#include + +#import "objc-private.h" +#import "objc-initialize.h" + +/* classInitLock protects classInitWaitCond and examination and modification + * of CLS_INITIALIZED and CLS_INITIALIZING. */ +static OBJC_DECLARE_LOCK(classInitLock); + +/* classInitWaitCond is signalled when any class is done initializing. + * Threads that are waiting for a class to finish initializing wait on this. */ +static pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER; + + +/*********************************************************************** +* struct _objc_initializing_classes +* Per-thread list of classes currently being initialized by that thread. +* During initialization, that thread is allowed to send messages to that +* class, but other threads have to wait. +* The list is a simple array of metaclasses (the metaclass stores +* the initialization state). +**********************************************************************/ +typedef struct _objc_initializing_classes { + int classesAllocated; + Class *metaclasses; +} _objc_initializing_classes; + + +/*********************************************************************** +* _fetchInitializingClassList +* Return the list of classes being initialized by this thread. +* If create == YES, create the list when no classes are being initialized by this thread. +* If create == NO, return NULL when no classes are being initialized by this thread. +**********************************************************************/ +static _objc_initializing_classes *_fetchInitializingClassList(BOOL create) +{ + _objc_pthread_data *data; + _objc_initializing_classes *list; + Class *classes; + + data = _objc_fetch_pthread_data(create); + if (data == NULL && !create) return NULL; + + list = data->initializingClasses; + if (list == NULL) { + if (!create) { + return NULL; + } else { + list = _calloc_internal(1, sizeof(_objc_initializing_classes)); + data->initializingClasses = list; + } + } + + classes = list->metaclasses; + if (classes == NULL) { + // If _objc_initializing_classes exists, allocate metaclass array, + // even if create == NO. + // Allow 4 simultaneous class inits on this thread before realloc. + list->classesAllocated = 4; + classes = _calloc_internal(list->classesAllocated, sizeof(Class)); + list->metaclasses = classes; + } + return list; +} + + +/*********************************************************************** +* _destroyInitializingClassList +* Deallocate memory used by the given initialization list. +* Any part of the list may be NULL. +* Called from _objc_pthread_destroyspecific(). +**********************************************************************/ +__private_extern__ +void _destroyInitializingClassList(struct _objc_initializing_classes *list) +{ + if (list != NULL) { + if (list->metaclasses != NULL) { + _free_internal(list->metaclasses); + } + _free_internal(list); + } +} + + +/*********************************************************************** +* _thisThreadIsInitializingClass +* Return TRUE if this thread is currently initializing the given class. +**********************************************************************/ +static BOOL _thisThreadIsInitializingClass(Class cls) +{ + int i; + + _objc_initializing_classes *list = _fetchInitializingClassList(NO); + if (list) { + cls = _class_getMeta(cls); + for (i = 0; i < list->classesAllocated; i++) { + if (cls == list->metaclasses[i]) return YES; + } + } + + // no list or not found in list + return NO; +} + + +/*********************************************************************** +* _setThisThreadIsInitializingClass +* Record that this thread is currently initializing the given class. +* This thread will be allowed to send messages to the class, but +* other threads will have to wait. +**********************************************************************/ +static void _setThisThreadIsInitializingClass(Class cls) +{ + int i; + _objc_initializing_classes *list = _fetchInitializingClassList(YES); + cls = _class_getMeta(cls); + + // paranoia: explicitly disallow duplicates + for (i = 0; i < list->classesAllocated; i++) { + if (cls == list->metaclasses[i]) { + _objc_fatal("thread is already initializing this class!"); + return; // already the initializer + } + } + + for (i = 0; i < list->classesAllocated; i++) { + if (0 == list->metaclasses[i]) { + list->metaclasses[i] = cls; + return; + } + } + + // class list is full - reallocate + list->classesAllocated = list->classesAllocated * 2 + 1; + list->metaclasses = _realloc_internal(list->metaclasses, list->classesAllocated * sizeof(Class)); + // zero out the new entries + list->metaclasses[i++] = cls; + for ( ; i < list->classesAllocated; i++) { + list->metaclasses[i] = NULL; + } +} + + +/*********************************************************************** +* _setThisThreadIsNotInitializingClass +* Record that this thread is no longer initializing the given class. +**********************************************************************/ +static void _setThisThreadIsNotInitializingClass(Class cls) +{ + int i; + + _objc_initializing_classes *list = _fetchInitializingClassList(NO); + if (list) { + cls = _class_getMeta(cls); + for (i = 0; i < list->classesAllocated; i++) { + if (cls == list->metaclasses[i]) { + list->metaclasses[i] = NULL; + return; + } + } + } + + // no list or not found in list + _objc_fatal("thread is not initializing this class!"); +} + + +/*********************************************************************** +* class_initialize. Send the '+initialize' message on demand to any +* uninitialized class. Force initialization of superclasses first. +* +* Called only from _class_lookupMethodAndLoadCache (or itself). +**********************************************************************/ +__private_extern__ void _class_initialize(Class cls) +{ + Class supercls; + BOOL reallyInitialize = NO; + + // Get the real class from the metaclass. The superclass chain + // hangs off the real class only. + cls = _class_getNonMetaClass(cls); + + // Make sure super is done initializing BEFORE beginning to initialize cls. + // See note about deadlock above. + supercls = _class_getSuperclass(cls); + if (supercls && !_class_isInitialized(supercls)) { + _class_initialize(supercls); + } + + // Try to atomically set CLS_INITIALIZING. + OBJC_LOCK(&classInitLock); + if (!_class_isInitialized(cls) && !_class_isInitializing(cls)) { + _class_setInitializing(cls); + reallyInitialize = YES; + } + OBJC_UNLOCK(&classInitLock); + + if (reallyInitialize) { + // We successfully set the CLS_INITIALIZING bit. Initialize the class. + + // Record that we're initializing this class so we can message it. + _setThisThreadIsInitializingClass(cls); + + // Send the +initialize message. + // Note that +initialize is sent to the superclass (again) if + // this class doesn't implement +initialize. 2157218 + if (PrintInitializing) { + _objc_inform("INITIALIZE: calling +[%s initialize]", + _class_getName(cls)); + } + [(id)cls initialize]; + + // propagate finalization affinity. + if (UseGC && supercls && _class_shouldFinalizeOnMainThread(supercls)) { + _class_setFinalizeOnMainThread(cls); + } + + // Done initializing. Update the info bits and notify waiting threads. + OBJC_LOCK(&classInitLock); + _class_setInitialized(cls); + pthread_cond_broadcast(&classInitWaitCond); + OBJC_UNLOCK(&classInitLock); + _setThisThreadIsNotInitializingClass(cls); + return; + } + + else if (_class_isInitializing(cls)) { + // We couldn't set INITIALIZING because INITIALIZING was already set. + // If this thread set it earlier, continue normally. + // If some other thread set it, block until initialize is done. + // It's ok if INITIALIZING changes to INITIALIZED while we're here, + // because we safely check for INITIALIZED inside the lock + // before blocking. + if (_thisThreadIsInitializingClass(cls)) { + return; + } else { + OBJC_LOCK(&classInitLock); + while (!_class_isInitialized(cls)) { + pthread_cond_wait(&classInitWaitCond, &classInitLock); + } + OBJC_UNLOCK(&classInitLock); + return; + } + } + + else if (_class_isInitialized(cls)) { + // Set CLS_INITIALIZING failed because someone else already + // initialized the class. Continue normally. + // NOTE this check must come AFTER the ISINITIALIZING case. + // Otherwise: Another thread is initializing this class. ISINITIALIZED + // is false. Skip this clause. Then the other thread finishes + // initialization and sets INITIALIZING=no and INITIALIZED=yes. + // Skip the ISINITIALIZING clause. Die horribly. + return; + } + + else { + // We shouldn't be here. + _objc_fatal("thread-safe class init in objc runtime is buggy!"); + } +} diff --git a/runtime/objc-layout.m b/runtime/objc-layout.m new file mode 100644 index 0000000..ed7c03c --- /dev/null +++ b/runtime/objc-layout.m @@ -0,0 +1,797 @@ +/* + * Copyright (c) 2004-2007 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +#include +#include + +#import "objc-private.h" + +/********************************************************************** +* Object Layouts. +* +* Layouts are used by the garbage collector to identify references from +* the object to other objects. +* +* Layout information is in the form of a '\0' terminated byte string. +* Each byte contains a word skip count in the high nibble and a +* consecutive references count in the low nibble. Counts that exceed 15 are +* continued in the succeeding byte with a zero in the opposite nibble. +* Objects that should be scanned conservatively will have a NULL layout. +* Objects that have no references have a empty byte string. +* +* Example; +* +* For a class with pointers at offsets 4,12, 16, 32-128 +* the layout is { 0x11, 0x12, 0x3f, 0x0a, 0x00 } or +* skip 1 - 1 reference (4) +* skip 1 - 2 references (12, 16) +* skip 3 - 15 references (32-88) +* no skip - 10 references (92-128) +* end +* +**********************************************************************/ + + +/********************************************************************** +* generate_layout_bytes +* +* Generates the layout bytes representing the specified skip and run. +* If layout is NULL the can be used to determine the number of bytes added +* to the layout. Returns number of bytes added. +* +**********************************************************************/ +#define NIBBLE_MAX 0xf +static long generate_layout_bytes(long skip, long run, unsigned char *layout) { + // number of bytes added + long count = 0; + + // if the skip is greater what can be put in a nibble + while (skip > NIBBLE_MAX) { + // add a skip with no run if layout is not NULL + if (layout) *layout++ = NIBBLE_MAX << 4; + + // another byte added + count++; + + // decrement skip by nibble maximum + skip -= NIBBLE_MAX; + } + + // add remaining skip and run (modulo nibble size) if layout is not NULL + if (layout) *layout++ = (skip << 4) | (run % NIBBLE_MAX); + + // another byte added + count++; + + + // if the run is greater what can be put in a nibble + while (run > NIBBLE_MAX) { + // add a run with no skip if layout is not NULL + if (layout) *layout++ = NIBBLE_MAX; + + // another byte added + count++; + + // decrement run by nibble maximum + run -= NIBBLE_MAX; + } + + // return number of bytes added + return count; +} + + +/********************************************************************** +* scan_bits_for_layout +* +* Generate the layout from the bit map. If layout is NULL then can be used to +* determine the size of the layout. Returns size of layout array in bytes +* including the '\0' terminator. +* +**********************************************************************/ +static unsigned char *compress_layout(const uint8_t *bits, size_t bitmap_bits, BOOL weak) +{ + long count = 0; // number of bytes generated + long skip = 0; // number of slots to skip to get to next references + long run = 0; // number of consecutive references + long last_bit = 0; // state of last bit encountered + BOOL all_set = YES; + BOOL none_set = YES; + + unsigned char *layout = _calloc_internal(bitmap_bits + 1, 1); + + // iterate through bits in bits array + long i; + for (i = 0; i < bitmap_bits; i++) { + // determine next bit, 0 = not a reference, 1 indicates a reference + long bit = (bits[i/8] >> (i % 8)) & 1; + + // if not a reference and last bit was a reference then record skip and run + if (!bit && last_bit) { + // record skip and run + count += generate_layout_bytes(skip, run, layout + count); + + // reset counts + skip = 0; run = 0; + } + + // record the skip or run + if (bit) run++, none_set = NO; + else skip++, all_set = NO; + + // track state of last bit + last_bit = bit; + } + + // Record last skip and run, if any. + if (skip || run) count += generate_layout_bytes(skip, run, layout + count); + + // insert terminating byte + layout[count] = '\0'; + count++; + + // return result + unsigned char *result; + if (none_set && weak) { + result = NULL; // NULL weak layout means none-weak + } else if (all_set && !weak) { + result = NULL; // NULL ivar layout means all-scanned + } else { + result = (unsigned char *)_strdup_internal((char *)layout); + } + _free_internal(layout); + return result; +} + + +static void set_bits(layout_bitmap bits, size_t which, size_t count) +{ + // fixme optimize for byte/word at a time + size_t bit; + for (bit = which; bit < which + count && bit < bits.bitCount; bit++) { + bits.bits[bit/8] |= 1 << (bit % 8); + } + if (bit == bits.bitCount && bit < which + count) { + // couldn't fit full type in bitmap + _objc_fatal("layout bitmap too short"); + } +} + +static void clear_bits(layout_bitmap bits, size_t which, size_t count) +{ + // fixme optimize for byte/word at a time + size_t bit; + for (bit = which; bit < which + count && bit < bits.bitCount; bit++) { + bits.bits[bit/8] &= ~(1 << (bit % 8)); + } + if (bit == bits.bitCount && bit < which + count) { + // couldn't fit full type in bitmap + _objc_fatal("layout bitmap too short"); + } +} + +static void move_bits(layout_bitmap bits, size_t src, size_t dst, + size_t count) +{ + // fixme optimize for byte/word at a time + // Copy backwards in case of overlap + assert(dst >= src); + while (count--) { + size_t srcbit = src + count; + size_t dstbit = dst + count; + if (bits.bits[srcbit/8] & (1 << (srcbit % 8))) { + bits.bits[dstbit/8] |= 1 << (dstbit % 8); + } else { + bits.bits[dstbit/8] &= ~(1 << (dstbit % 8)); + } + } +} + +// emacs autoindent hack - it doesn't like the loop in set_bits/clear_bits +#if 0 +} } +#endif + + +static void decompress_layout(const unsigned char *layout_string, layout_bitmap bits) +{ + unsigned char c; + size_t bit = 0; + while ((c = *layout_string++)) { + unsigned char skip = (c & 0xf0) >> 4; + unsigned char scan = (c & 0x0f); + bit += skip; + set_bits(bits, bit, scan); + bit += scan; + } +} + + +/*********************************************************************** +* layout_bitmap_create +* Allocate a layout bitmap. +* The new bitmap spans the given instance size bytes. +* The start of the bitmap is filled from the given layout string (which +* spans an instance size of layoutStringSize); the rest is zero-filled. +* The returned bitmap must be freed with layout_bitmap_free(). +**********************************************************************/ +__private_extern__ layout_bitmap +layout_bitmap_create(const unsigned char *layout_string, + size_t layoutStringInstanceSize, + size_t instanceSize, BOOL weak) +{ + layout_bitmap result; + size_t words = instanceSize / sizeof(id); + size_t bitmap_bytes = (words+7)/8; + + result.bits = _calloc_internal(bitmap_bytes, 1); + result.weak = weak; + result.bitCount = words; + result.bitsAllocated = bitmap_bytes * 8; + assert(bits->bitsAllocated % 8 == 0); + + if (!layout_string) { + if (!weak) { + // NULL ivar layout means all-scanned + // (but only up to layoutStringSize instance size) + set_bits(result, 0, layoutStringInstanceSize/sizeof(id)); + } else { + // NULL weak layout means none-weak. + } + } else { + decompress_layout(layout_string, result); + } + + return result; +} + +__private_extern__ void +layout_bitmap_free(layout_bitmap bits) +{ + if (bits.bits) _free_internal(bits.bits); +} + +__private_extern__ const unsigned char * +layout_string_create(layout_bitmap bits) +{ + return compress_layout(bits.bits, bits.bitCount, bits.weak); +} + + +__private_extern__ void +layout_bitmap_set_ivar(layout_bitmap bits, const char *type, size_t offset) +{ + // fixme only handles id and array of id + size_t bit = offset / sizeof(id); + + if (!type) return; + if (type[0] == '@') { + set_bits(bits, bit, 1); + } else if (type[0] == '[') { + char *t; + unsigned long count = strtoul(type+1, &t, 10); + if (t && t[0] == '@') { + set_bits(bits, bit, count); + } + } else if (strchr(type, '@')) { + _objc_inform("warning: failing to set GC layout for '%s'\n", type); + } +} + + + +/*********************************************************************** +* layout_bitmap_grow +* Expand a layout bitmap to span newCount bits. +* The new bits are undefined. +**********************************************************************/ +__private_extern__ void +layout_bitmap_grow(layout_bitmap *bits, size_t newCount) +{ + if (bits->bitCount >= newCount) return; + size_t addition = newCount - bits->bitCount; + bits->bitCount = newCount; + if (bits->bitCount > bits->bitsAllocated) { + bits->bitsAllocated += bits->bitsAllocated + (addition+7)/8; + bits->bits = _realloc_internal(bits->bits, bits->bitsAllocated); + } + assert(bits->bitsAllocated % 8 == 0); +} + + +/*********************************************************************** +* layout_bitmap_slide +* Slide the end of a layout bitmap farther from the start. +* Slides bits [oldPos, bits.bitCount) to [newPos, bits.bitCount+newPos-oldPos) +* Bits [oldPos, newPos) are zero-filled. +* The bitmap is expanded and bitCount updated if necessary. +* newPos >= oldPos. +**********************************************************************/ +__private_extern__ void +layout_bitmap_slide(layout_bitmap *bits, size_t oldPos, size_t newPos) +{ + if (oldPos >= newPos) _objc_fatal("layout bitmap sliding backwards"); + + size_t shift = newPos - oldPos; + size_t count = bits->bitCount - oldPos; + layout_bitmap_grow(bits, bits->bitCount + shift); + move_bits(*bits, oldPos, newPos, count); // slide + clear_bits(*bits, oldPos, shift); // zero-fill +} + + +/*********************************************************************** +* layout_bitmap_splat +* Pastes the contents of bitmap src to the start of bitmap dst. +* dst bits between the end of src and oldSrcInstanceSize are zeroed. +* dst must be at least as long as src. +* Returns YES if any of dst's bits were changed. +**********************************************************************/ +__private_extern__ BOOL +layout_bitmap_splat(layout_bitmap dst, layout_bitmap src, + size_t oldSrcInstanceSize) +{ + if (dst.bitCount < src.bitCount) _objc_fatal("layout bitmap too short"); + + BOOL changed = NO; + size_t oldSrcBitCount = oldSrcInstanceSize / sizeof(id); + + // fixme optimize for byte/word at a time + size_t bit; + for (bit = 0; bit < oldSrcBitCount; bit++) { + int dstset = dst.bits[bit/8] & (1 << (bit % 8)); + int srcset = (bit < src.bitCount) + ? src.bits[bit/8] & (1 << (bit % 8)) + : 0; + if (dstset != srcset) { + changed = YES; + if (srcset) { + dst.bits[bit/8] |= 1 << (bit % 8); + } else { + dst.bits[bit/8] &= ~(1 << (bit % 8)); + } + } + } + + return changed; +} + + +#if 0 +// The code below may be useful when interpreting ivar types more precisely. + +/********************************************************************** +* mark_offset_for_layout +* +* Marks the appropriate bit in the bits array cooresponding to a the +* offset of a reference. If we are scanning a nested pointer structure +* then the bits array will be NULL then this function does nothing. +* +**********************************************************************/ +static void mark_offset_for_layout(long offset, long bits_size, unsigned char *bits) { + // references are ignored if bits is NULL + if (bits) { + long slot = offset / sizeof(long); + + // determine byte index using (offset / 8 bits per byte) + long i_byte = slot >> 3; + + // if the byte index is valid + if (i_byte < bits_size) { + // set the (offset / 8 bits per byte)th bit + bits[i_byte] |= 1 << (slot & 7); + } else { + // offset not within instance size + _objc_inform ("layout - offset exceeds instance size"); + } + } +} + +/********************************************************************** +* skip_ivar_type_name +* +* Skip over the name of a field/class in an ivar type string. Names +* are in the form of a double-quoted string. Returns the remaining +* string. +* +**********************************************************************/ +static char *skip_ivar_type_name(char *type) { + // current character + char ch; + + // if there is an open quote + if (*type == '\"') { + // skip quote + type++; + + // while no closing quote + while ((ch = *type) != '\"') { + // if end of string return end of string + if (!ch) return type; + + // skip character + type++; + } + + // skip closing quote + type++; + } + + // return remaining string + return type; +} + + +/********************************************************************** +* skip_ivar_struct_name +* +* Skip over the name of a struct in an ivar type string. Names +* may be followed by an equals sign. Returns the remaining string. +* +**********************************************************************/ +static char *skip_ivar_struct_name(char *type) { + // get first character + char ch = *type; + + if (ch == _C_UNDEF) { + // skip undefined name + type++; + } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_') { + // if alphabetic + + // scan alphanumerics + do { + // next character + ch = *++type; + } while ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_' || (ch >= '0' && ch <= '9')); + } else { + // no struct name present + return type; + } + + // skip equals sign + if (*type == '=') type++; + + return type; +} + + +/********************************************************************** +* scan_basic_ivar_type +* +* Determines the size and alignment of a basic ivar type. If the basic +* type is a possible reference to another garbage collected type the +* is_reference is set to true (false otherwise.) Returns the remaining +* string. +* +**********************************************************************/ +static char *scan_ivar_type_for_layout(char *type, long offset, long bits_size, unsigned char *bits, long *next_offset); +static char *scan_basic_ivar_type(char *type, long *size, long *alignment, BOOL *is_reference) { + // assume it is a non-reference type + *is_reference = NO; + + // get the first character (advancing string) + const char *full_type = type; + char ch = *type++; + + // GCC 4 uses for const type*. + if (ch == _C_CONST) ch = *type++; + + // act on first character + switch (ch) { + case _C_ID: { + // ID type + + // skip over optional class name + type = skip_ivar_type_name(type); + + // size and alignment of an id type + *size = sizeof(id); + *alignment = __alignof(id); + + // is a reference type + *is_reference = YES; + break; + } + case _C_PTR: { + // C pointer type + + // skip underlying type + long ignored_offset; + type = scan_ivar_type_for_layout(type, 0, 0, NULL, &ignored_offset); + + // size and alignment of a generic pointer type + *size = sizeof(void *); + *alignment = __alignof(void *); + + // is a reference type + *is_reference = YES; + break; + } + case _C_CHARPTR: { + // C string + + // size and alignment of a char pointer type + *size = sizeof(char *); + *alignment = __alignof(char *); + + // is a reference type + *is_reference = YES; + break; + } + case _C_CLASS: + case _C_SEL: { + // classes and selectors are ignored for now + *size = sizeof(void *); + *alignment = __alignof(void *); + break; + } + case _C_CHR: + case _C_UCHR: { + // char and unsigned char + *size = sizeof(char); + *alignment = __alignof(char); + break; + } + case _C_SHT: + case _C_USHT: { + // short and unsigned short + *size = sizeof(short); + *alignment = __alignof(short); + break; + } + case _C_ATOM: + case _C_INT: + case _C_UINT: { + // int and unsigned int + *size = sizeof(int); + *alignment = __alignof(int); + break; + } + case _C_LNG: + case _C_ULNG: { + // long and unsigned long + *size = sizeof(long); + *alignment = __alignof(long); + break; + } + case _C_LNG_LNG: + case _C_ULNG_LNG: { + // long long and unsigned long long + *size = sizeof(long long); + *alignment = __alignof(long long); + break; + } + case _C_VECTOR: { + // vector + *size = 16; + *alignment = 16; + break; + } + case _C_FLT: { + // float + *size = sizeof(float); + *alignment = __alignof(float); + break; + } + case _C_DBL: { + // double + *size = sizeof(double); + *alignment = __alignof(double); + break; + } + case _C_BFLD: { + // bit field + + // get number of bits in bit field (advance type string) + long lng = strtol(type, &type, 10); + + // while next type is a bit field + while (*type == _C_BFLD) { + // skip over _C_BFLD + type++; + + // get next bit field length + long next_lng = strtol(type, &type, 10); + + // if spans next word then align to next word + if ((lng & ~31) != ((lng + next_lng) & ~31)) lng = (lng + 31) & ~31; + + // increment running length + lng += next_lng; + + // skip over potential field name + type = skip_ivar_type_name(type); + } + + // determine number of bytes bits represent + *size = (lng + 7) / 8; + + // byte alignment + *alignment = __alignof(char); + break; + } + case _C_BOOL: { + // double + *size = sizeof(BOOL); + *alignment = __alignof(BOOL); + break; + } + case _C_VOID: { + // skip void types + *size = 0; + *alignment = __alignof(char); + break; + } + case _C_UNDEF: { + *size = 0; + *alignment = __alignof(char); + break; + } + default: { + // unhandled type + _objc_fatal("unrecognized character \'%c\' in ivar type: \"%s\"", ch, full_type); + } + } + + return type; +} + + +/********************************************************************** +* scan_ivar_type_for_layout +* +* Scan an ivar type string looking for references. The offset indicates +* where the ivar begins. bits is a byte array of size bits_size used to +* contain the references bit map. next_offset is the offset beyond the +* ivar. Returns the remaining string. +* +**********************************************************************/ +static char *scan_ivar_type_for_layout(char *type, long offset, long bits_size, unsigned char *bits, long *next_offset) { + long size; // size of a basic type + long alignment; // alignment of the basic type + BOOL is_reference; // true if the type indicates a reference to a garbage collected object + + // get the first character + char ch = *type; + + // GCC 4 uses for const type*. + if (ch == _C_CONST) ch = *++type; + + // act on first character + switch (ch) { + case _C_ARY_B: { + // array type + + // get the array length + long lng = strtol(type + 1, &type, 10); + + // next type will be where to advance the type string once the array is processed + char *next_type = type; + + // repeat the next type x lng + if (!lng) { + next_type = scan_ivar_type_for_layout(type, 0, 0, NULL, &offset); + } else { + while (lng--) { + // repeatedly scan the same type + next_type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &offset); + } + } + + // advance the type now + type = next_type; + + // after the end of the array + *next_offset = offset; + + // advance over closing bracket + if (*type == _C_ARY_E) type++; + else _objc_inform("missing \'%c\' in ivar type.", _C_ARY_E); + + break; + } + case _C_UNION_B: { + // union type + + // skip over possible union name + type = skip_ivar_struct_name(type + 1); + + // need to accumulate the maximum element offset + long max_offset = 0; + + // while not closing paren + while ((ch = *type) && ch != _C_UNION_E) { + // skip over potential field name + type = skip_ivar_type_name(type); + + // scan type + long union_offset; + type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &union_offset); + + // adjust the maximum element offset + if (max_offset < union_offset) max_offset = union_offset; + } + + // after the largest element + *next_offset = max_offset; + + // advance over closing paren + if (ch == _C_UNION_E) { + type++; + } else { + _objc_inform("missing \'%c\' in ivar type", _C_UNION_E); + } + + break; + } + case _C_STRUCT_B: { + // struct type + + // skip over possible struct name + type = skip_ivar_struct_name(type + 1); + + // while not closing brace + while ((ch = *type) && ch != _C_STRUCT_E) { + // skip over potential field name + type = skip_ivar_type_name(type); + + // scan type + type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &offset); + } + + // after the end of the struct + *next_offset = offset; + + // advance over closing brace + if (ch == _C_STRUCT_E) type++; + else _objc_inform("missing \'%c\' in ivar type", _C_STRUCT_E); + + break; + } + default: { + // basic type + + // scan type + type = scan_basic_ivar_type(type, &size, &alignment, &is_reference); + + // create alignment mask + alignment--; + + // align offset + offset = (offset + alignment) & ~alignment; + + // if is a reference then mark in the bit map + if (is_reference) mark_offset_for_layout(offset, bits_size, bits); + + // after the basic type + *next_offset = offset + size; + break; + } + } + + // return remainder of type string + return type; +} + +#endif diff --git a/runtime/objc-load.h b/runtime/objc-load.h index c385979..ee6155a 100644 --- a/runtime/objc-load.h +++ b/runtime/objc-load.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2001, 2005-2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -33,6 +31,7 @@ #import #import +#import /* dynamically loading Mach-O object files that contain Objective-C code */ @@ -42,23 +41,15 @@ OBJC_EXPORT long objc_loadModules ( void (*class_callback) (Class, Category), /*headerType*/ struct mach_header **hdr_addr, char *debug_file -); +) OBJC2_UNAVAILABLE; OBJC_EXPORT int objc_loadModule ( char * moduleName, void (*class_callback) (Class, Category), - int * errorCode); + int * errorCode +) OBJC2_UNAVAILABLE; OBJC_EXPORT long objc_unloadModules( void *errorStream, /* input (optional) */ void (*unloadCallback)(Class, Category) /* input (optional) */ -); - -OBJC_EXPORT void objc_register_header_name( - char *name /* input */ -); - -OBJC_EXPORT void objc_register_header( - char *name /* input */ -); - +) OBJC2_UNAVAILABLE; #endif /* _OBJC_LOAD_H_ */ diff --git a/runtime/objc-load.m b/runtime/objc-load.m index 28de958..c1b080d 100644 --- a/runtime/objc-load.m +++ b/runtime/objc-load.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2001, 2004-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -30,23 +28,16 @@ * */ +#if !__OBJC2__ + #import "objc-private.h" #import #import #import -#import - -//#import - #include - - -extern char * getsectdatafromheader (const headerType * mhp, const char * segname, const char * sectname, int * size); - -/* Private extern */ -OBJC_EXPORT void (*callbackFunction)( Class, const char * ); +extern void (*callbackFunction)( Class, const char * ); /********************************************************************************** @@ -100,7 +91,7 @@ int objc_loadModule(const char *moduleName, void (*class_callback) (Class, const if (NSLinkModule(objectFileImage, moduleName, NSLINKMODULE_OPTION_RETURN_ON_ERROR) == NULL) { NSLinkEditErrors error; int errorNum; - char *fileName, *errorString; + const char *fileName, *errorString; NSLinkEditError(&error, &errorNum, &fileName, &errorString); // These errors may overlap with other errors that objc_loadModule returns in other failure cases. *errorCode = error; @@ -177,3 +168,4 @@ long objc_unloadModules (void * errStream, return errflag; } +#endif diff --git a/runtime/objc-loadmethod.h b/runtime/objc-loadmethod.h new file mode 100644 index 0000000..e76787f --- /dev/null +++ b/runtime/objc-loadmethod.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2004-2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-loadmethod.h +* Support for +load methods. +**********************************************************************/ + +#import "objc-private.h" + +extern void add_class_to_loadable_list(Class cls); +extern void add_category_to_loadable_list(Category cat); +extern void remove_class_from_loadable_list(Class cls); +extern void remove_category_from_loadable_list(Category cat); + +extern void call_load_methods(void); + diff --git a/runtime/objc-loadmethod.m b/runtime/objc-loadmethod.m new file mode 100644 index 0000000..8231c14 --- /dev/null +++ b/runtime/objc-loadmethod.m @@ -0,0 +1,353 @@ +/* + * Copyright (c) 2004-2006 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-loadmethod.m +* Support for +load methods. +**********************************************************************/ + +#import "objc-loadmethod.h" +#import "objc-private.h" + +struct loadable_class { + Class cls; // may be NULL + IMP method; +}; + +struct loadable_category { + Category cat; // may be NULL + IMP method; +}; + + +// 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; + + +/*********************************************************************** +* add_class_to_loadable_list +* Class cls has just become connected. Schedule it for +load if +* it implements a +load method. +**********************************************************************/ +__private_extern__ void add_class_to_loadable_list(Class cls) +{ + IMP method = _class_getLoadMethod(cls); + if (!method) return; // Don't bother if cls has no +load method + + if (PrintLoading) { + _objc_inform("LOAD: class '%s' scheduled for +load", _class_getName(cls)); + } + + 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. +**********************************************************************/ +__private_extern__ void add_category_to_loadable_list(Category cat) +{ + IMP method = _category_getLoadMethod(cat); + + // Don't bother if cat has no +load method + if (!method) return; + + if (PrintLoading) { + _objc_inform("LOAD: category '%s(%s)' scheduled for +load", + _category_getClassName(cat), _category_getName(cat)); + } + + 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). +**********************************************************************/ +__private_extern__ void remove_class_from_loadable_list(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", _class_getName(cls)); + } + 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). +**********************************************************************/ +__private_extern__ void remove_category_from_loadable_list(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", + _category_getClassName(cat), + _category_getName(cat)); + } + 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++) { + Class cls = classes[i].cls; + IMP load_method = classes[i].method; + if (!cls) continue; + + if (PrintLoading) { + _objc_inform("LOAD: +[%s load]\n", _class_getName(cls)); + } + (*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++) { + Category cat = cats[i].cat; + IMP load_method = cats[i].method; + Class cls; + if (!cat) continue; + + cls = _category_getClass(cat); + if (cls && _class_isLoadable(cls)) { + if (PrintLoading) { + _objc_inform("LOAD: +[%s(%s) load]\n", + _class_getName(cls), + _category_getName(cat)); + } + (*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. +**********************************************************************/ +__private_extern__ 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; +} + + diff --git a/runtime/objc-lockdebug.m b/runtime/objc-lockdebug.m new file mode 100644 index 0000000..014518c --- /dev/null +++ b/runtime/objc-lockdebug.m @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-lock.m +* Error-checking locks for debugging. +**********************************************************************/ + +#import "objc-private.h" + +typedef struct _objc_lock_list { + int allocated; + int used; + mutex_t list[0]; // variable-size +} _objc_lock_list; + +static struct _objc_lock_list * +getLocks(BOOL create) +{ + _objc_pthread_data *data; + _objc_lock_list *locks; + + data = _objc_fetch_pthread_data(create); + if (!data && !create) return NULL; + + locks = data->lockList; + if (!locks) { + if (!create) { + return NULL; + } else { + locks = _calloc_internal(1, sizeof(_objc_lock_list) + sizeof(mutex_t) * 4); + locks->allocated = 4; + locks->used = 0; + data->lockList = locks; + } + } + + if (locks->allocated == locks->used) { + if (!create) { + return locks; + } else { + data->lockList = _calloc_internal(1, sizeof(_objc_lock_list) + 2 * locks->used * sizeof(mutex_t)); + data->lockList->used = locks->used; + data->lockList->allocated = locks->used * 2; + memcpy(data->lockList->list, locks->list, locks->used * sizeof(mutex_t)); + _free_internal(locks); + locks = data->lockList; + } + } + + return locks; +} + + +static BOOL +hasLock(_objc_lock_list *locks, mutex_t lock) +{ + int i; + if (!locks) return NO; + + for (i = 0; i < locks->used; i++) { + if (locks->list[i] == lock) return YES; + } + return NO; +} + + +static void +setLock(_objc_lock_list *locks, mutex_t lock) +{ + locks->list[locks->used++] = lock; +} + +static void +clearLock(_objc_lock_list *locks, mutex_t lock) +{ + int i; + for (i = 0; i < locks->used; i++) { + if (locks->list[i] == lock) { + locks->list[i] = locks->list[--locks->used]; + return; + } + } +} + + +__private_extern__ void +_lock_debug(mutex_t lock, const char *name) +{ + _objc_lock_list *locks = getLocks(YES); + if (hasLock(locks, lock)) _objc_fatal("deadlock: relocking %s\n", name+1); + setLock(locks, lock); + mutex_lock(lock); +} + + +__private_extern__ void +_checklock_debug(mutex_t lock, const char *name) +{ + _objc_lock_list *locks = getLocks(NO); + if (!hasLock(locks, lock)) _objc_fatal("%s incorrectly not held\n",name+1); +} + + +__private_extern__ void +_checkunlock_debug(mutex_t lock, const char *name) +{ + _objc_lock_list *locks = getLocks(NO); + if (hasLock(locks, lock)) _objc_fatal("%s incorrectly held\n", name+1); +} + + +__private_extern__ void +_unlock_debug(mutex_t lock, const char *name) +{ + _objc_lock_list *locks = getLocks(NO); + if (!hasLock(locks, lock)) _objc_fatal("unlocking unowned %s\n", name+1); + clearLock(locks, lock); + mutex_unlock(lock); +} + + +__private_extern__ void +_destroyLockList(struct _objc_lock_list *locks) +{ + // fixme complain about any still-held locks? + if (locks) _free_internal(locks); +} diff --git a/runtime/objc-private.h b/runtime/objc-private.h index 90b80dc..65a5559 100644 --- a/runtime/objc-private.h +++ b/runtime/objc-private.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -28,37 +26,167 @@ */ #if !defined(_OBJC_PRIVATE_H_) - #define _OBJC_PRIVATE_H_ +#define _OBJC_PRIVATE_H_ + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import "objc.h" +#import "runtime.h" +#import "maptable.h" +#import "auto_zone.h" + +struct old_category; +struct old_method_list; +typedef struct { + IMP imp; + SEL sel; +} message_ref; + +#if __OBJC2__ + +typedef struct objc_module *Module; +typedef struct objc_cache *Cache; - #import // for OBJC_EXPORT +#endif - OBJC_EXPORT void checkUniqueness(); - #import "objc-config.h" +#if OLD + +struct old_class { + struct old_class *isa; + struct old_class *super_class; + const char *name; + long version; + long info; + long instance_size; + struct old_ivar_list *ivars; + struct old_method_list **methodLists; + Cache cache; + struct old_protocol_list *protocols; + // CLS_EXT only + const char *ivar_layout; + struct old_class_ext *ext; +}; + +struct old_class_ext { + uint32_t size; + const char *weak_ivar_layout; + struct objc_property_list **propertyLists; +}; + +struct old_category { + char *category_name; + char *class_name; + struct old_method_list *instance_methods; + struct old_method_list *class_methods; + struct old_protocol_list *protocols; + uint32_t size; + struct objc_property_list *instance_properties; +}; + +struct old_ivar { + char *ivar_name; + char *ivar_type; + int ivar_offset; +#ifdef __LP64__ + int space; +#endif +}; - #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) - #define mutex_try_lock(m) (! pthread_mutex_trylock(m)) - #define mutex_unlock(m) pthread_mutex_unlock(m) - #define mutex_clear(m) - #define mutex_t pthread_mutex_t* - #define mutex MUTEX_DEFINE_ERROR - #import +struct old_ivar_list { + int ivar_count; +#ifdef __LP64__ + int space; +#endif + /* variable length structure */ + struct old_ivar ivar_list[1]; +}; - #import - #import - #import - #import - #import - #import +struct old_method { + SEL method_name; + char *method_types; + IMP method_imp; +}; - #import +// Fixed-up method lists get mlist->obsolete = _OBJC_FIXED_UP. +#define _OBJC_FIXED_UP ((void *)1771) + +struct old_method_list { + struct old_method_list *obsolete; + + int method_count; +#ifdef __LP64__ + int space; +#endif + /* variable length structure */ + struct old_method method_list[1]; +}; + +struct old_protocol { + Class isa; + const char *protocol_name; + struct old_protocol_list *protocol_list; + struct objc_method_description_list *instance_methods; + struct objc_method_description_list *class_methods; +}; + +struct old_protocol_list { + struct old_protocol_list *next; + long count; + struct old_protocol *list[1]; +}; + +struct old_protocol_ext { + uint32_t size; + struct objc_method_description_list *optional_instance_methods; + struct objc_method_description_list *optional_class_methods; + struct objc_property_list *instance_properties; +}; + +#endif + +typedef objc_property_t Property; + +struct objc_property { + const char *name; + const char *attributes; +}; + +struct objc_property_list { + uint32_t entsize; + uint32_t count; + struct objc_property first; +}; + + +#import "objc-api.h" +#import "objc-config.h" +#import "hashtable2.h" + +#import "Object.h" + +#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) +#define mutex_try_lock(m) (! pthread_mutex_trylock(m)) +#define mutex_unlock(m) pthread_mutex_unlock(m) +#define mutex_clear(m) +#define mutex_t pthread_mutex_t* +#define mutex MUTEX_DEFINE_ERROR /* Opaque cookie used in _getObjc... routines. File format independant. @@ -67,22 +195,13 @@ * * had been: typedef void *objc_header; */ -#import +#ifndef __LP64__ typedef struct mach_header headerType; - -#import - -typedef struct _ProtocolTemplate { @defs(Protocol) } ProtocolTemplate; -typedef struct _NXConstantStringTemplate { - Class isa; - void *characters; - unsigned int _length; -} NXConstantStringTemplate; - -#define OBJC_CONSTANT_STRING_PTR NXConstantStringTemplate* -#define OBJC_CONSTANT_STRING_DEREF & -#define OBJC_PROTOCOL_PTR ProtocolTemplate* -#define OBJC_PROTOCOL_DEREF . +typedef struct segment_command segmentType; +#else +typedef struct mach_header_64 headerType; +typedef struct segment_command_64 segmentType; +#endif typedef struct { uint32_t version; // currently 0 @@ -92,6 +211,7 @@ typedef struct { // masks for objc_image_info.flags #define OBJC_IMAGE_IS_REPLACEMENT (1<<0) #define OBJC_IMAGE_SUPPORTS_GC (1<<1) +#define OBJC_IMAGE_REQUIRES_GC (1<<2) #define _objcHeaderIsReplacement(h) ((h)->info && ((h)->info->flags & OBJC_IMAGE_IS_REPLACEMENT)) @@ -109,190 +229,257 @@ typedef struct { Future: do insert new methods on existing categories? */ -#define _objcHeaderSupportsGC(h) ((h)->info && ((h)->info->flags & OBJC_IMAGE_SUPPORTS_GC)) +#define _objcInfoSupportsGC(info) (((info)->flags & OBJC_IMAGE_SUPPORTS_GC) ? 1 : 0) +#define _objcInfoRequiresGC(info) (((info)->flags & OBJC_IMAGE_REQUIRES_GC) ? 1 : 0) +#define _objcHeaderSupportsGC(h) ((h)->info && _objcInfoSupportsGC((h)->info)) +#define _objcHeaderRequiresGC(h) ((h)->info && _objcInfoRequiresGC((h)->info)) /* 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(const headerType *head, int *nmodules); -OBJC_EXPORT Class * _getObjcClassRefs(headerType *head, int *nclasses); -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); - -// someday a logging facility -// ObjC is assigned the range 0xb000 - 0xbfff for first parameter -#define trace(a, b, c, d) do {} while (0) - - - -OBJC_EXPORT ProtocolTemplate * _getObjcProtocols(headerType *head, int *nprotos); -OBJC_EXPORT NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs); -OBJC_EXPORT SEL * _getObjcMessageRefs(headerType *head, int *nmess); - -#define END_OF_METHODS_LIST ((struct objc_method_list*)-1) - - typedef struct _header_info - { - const headerType * mhdr; - Module mod_ptr; // already slid - unsigned int mod_count; - unsigned long 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 (); - - OBJC_EXPORT int _objcModuleCount(); - OBJC_EXPORT const char *_objcModuleNameAtIndex(int i); - OBJC_EXPORT Class objc_getOrigClass (const char *name); - - OBJC_EXPORT const char *__S(_nameForHeader) (const headerType*); - - OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy); - OBJC_EXPORT void sel_lock(void); - OBJC_EXPORT void sel_unlock(void); - - /* 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 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); - - /* message dispatcher */ - OBJC_EXPORT IMP _class_lookupMethodAndLoadCache(Class, SEL); - OBJC_EXPORT id _objc_msgForward (id self, SEL sel, ...); - - /* errors */ - OBJC_EXPORT volatile void _objc_fatal(const char *fmt, ...); - OBJC_EXPORT volatile void _objc_error(id, const char *, va_list); - OBJC_EXPORT volatile void __objc_error(id, const char *, ...); - OBJC_EXPORT void _objc_inform(const char *fmt, ...); - OBJC_EXPORT void _objc_syslog(const char *fmt, ...); - - /* magic */ - OBJC_EXPORT Class _objc_getFreedObjectClass (void); + +typedef struct _header_info +{ + struct _header_info *next; + const headerType * mhdr; + ptrdiff_t image_slide; + const segmentType * objcSegmentHeader; + const segmentType * dataSegmentHeader; + struct objc_module *mod_ptr; + size_t mod_count; + const objc_image_info *info; + Dl_info dl_info; + BOOL allClassesRealized; +} header_info; + + +extern objc_image_info *_getObjcImageInfo(const headerType *head, ptrdiff_t slide, size_t *size); +extern const segmentType *getsegbynamefromheader(const headerType *head, const char *segname); +extern const char *_getObjcHeaderName(const headerType *head); +extern ptrdiff_t _getImageSlide(const headerType *header); + +extern Module _getObjcModules(const headerType *head, ptrdiff_t slide, size_t *count); +extern SEL *_getObjcSelectorRefs(const header_info *hi, size_t *count); +#if !__OBJC2__ +extern struct old_protocol *_getObjcProtocols(const header_info *head, size_t *count); +extern struct old_class **_getObjcClassRefs(const header_info *hi, size_t *count); +extern const char *_getObjcClassNames(const header_info *hi, size_t *size); +#endif + +#if __OBJC2__ +extern SEL *_getObjc2SelectorRefs(const header_info *hi, size_t *count); +extern message_ref *_getObjc2MessageRefs(const header_info *hi, size_t *count);extern struct class_t **_getObjc2ClassRefs(const header_info *hi, size_t *count); +extern struct class_t **_getObjc2SuperRefs(const header_info *hi, size_t *count); +extern struct class_t **_getObjc2ClassList(const header_info *hi, size_t *count); +extern struct class_t **_getObjc2NonlazyClassList(const header_info *hi, size_t *count); +extern struct category_t **_getObjc2CategoryList(const header_info *hi, size_t *count); +extern struct category_t **_getObjc2NonlazyCategoryList(const header_info *hi, size_t *count); +extern struct protocol_t **_getObjc2ProtocolList(const header_info *head, size_t *count); +extern struct protocol_t **_getObjc2ProtocolRefs(const header_info *head, size_t *count); +#endif + +#define END_OF_METHODS_LIST ((struct old_method_list*)-1) + +OBJC_EXPORT header_info *_objc_headerStart (); + +OBJC_EXPORT const char *_nameForHeader(const headerType*); + +OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy); +OBJC_EXPORT void sel_lock(void); +OBJC_EXPORT void sel_unlock(void); + +/* 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 char *_strdupcat_internal(const char *s1, const char *s2); +OBJC_EXPORT void *_memdup_internal(const void *mem, size_t size); +OBJC_EXPORT void _free_internal(void *ptr); + +#if !__OBJC2__ +OBJC_EXPORT Class objc_getOrigClass (const char *name); +OBJC_EXPORT IMP lookupNamedMethodInMethodList(struct old_method_list *mlist, const char *meth_name); +OBJC_EXPORT void _objc_insertMethods(struct old_class *cls, struct old_method_list *mlist, struct old_category *cat); +OBJC_EXPORT void _objc_removeMethods(struct old_class *cls, struct old_method_list *mlist); +OBJC_EXPORT void _objc_flush_caches (Class cls); +extern void _class_addProperties(struct old_class *cls, struct objc_property_list *additions); +extern void change_class_references(struct old_class *imposter, struct old_class *original, struct old_class *copy, BOOL changeSuperRefs); +extern void flush_marked_caches(void); +extern void set_superclass(struct old_class *cls, struct old_class *supercls); +#endif + +OBJC_EXPORT IMP _cache_getImp(Class cls, SEL sel); +OBJC_EXPORT Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp); + +/* message dispatcher */ +OBJC_EXPORT IMP _class_lookupMethodAndLoadCache(Class, SEL); +OBJC_EXPORT id _objc_msgForward (id self, SEL sel, ...); +extern id _objc_ignored_method(id self, SEL _cmd); + +/* errors */ +OBJC_EXPORT void _objc_fatal(const char *fmt, ...) __attribute__((noreturn, format (printf, 1, 2))); +OBJC_EXPORT void __objc_error(id, const char *, ...) __attribute__((format (printf, 2, 3))); +OBJC_EXPORT void _objc_inform(const char *fmt, ...) __attribute__((format (printf, 1, 2))); +OBJC_EXPORT void _objc_inform_on_crash(const char *fmt, ...) __attribute__((format (printf, 1, 2))); +OBJC_EXPORT void _objc_inform_now_and_on_crash(const char *fmt, ...) __attribute__((format (printf, 1, 2))); +OBJC_EXPORT void _objc_warn_deprecated(const char *old, const char *new) __attribute__((noinline)); +OBJC_EXPORT void _objc_error(id, const char *, va_list); + +/* magic */ +OBJC_EXPORT Class _objc_getFreedObjectClass (void); #ifndef OBJC_INSTRUMENTED - OBJC_EXPORT const struct objc_cache emptyCache; +OBJC_EXPORT const struct objc_cache _objc_empty_cache; #else - OBJC_EXPORT struct objc_cache emptyCache; +OBJC_EXPORT struct objc_cache _objc_empty_cache; #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); +#if __OBJC2__ +extern IMP _objc_empty_vtable[128]; #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); +/* map table additions */ +extern void *NXMapKeyCopyingInsert(NXMapTable *table, const void *key, const void *value); +extern void *NXMapKeyFreeingRemove(NXMapTable *table, const void *key); + +/* locking */ +#define OBJC_DECLARE_LOCK(MTX) pthread_mutex_t MTX = PTHREAD_MUTEX_INITIALIZER +#ifdef NDEBUG +#define OBJC_LOCK(MUTEX) mutex_lock (MUTEX) +#define OBJC_UNLOCK(MUTEX) mutex_unlock (MUTEX) +#define OBJC_CHECK_LOCKED(MUTEX) do { } while (0) +#define OBJC_CHECK_UNLOCKED(MUTEX) do { } while (0) +#else +#define OBJC_LOCK(MUTEX) _lock_debug (MUTEX, #MUTEX) +#define OBJC_UNLOCK(MUTEX) _unlock_debug (MUTEX, #MUTEX) +#define OBJC_CHECK_LOCKED(MUTEX) _checklock_debug (MUTEX, #MUTEX) +#define OBJC_CHECK_UNLOCKED(MUTEX) _checkunlock_debug (MUTEX, #MUTEX) +#endif - /* Secure /tmp usage */ - OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid); +OBJC_EXPORT pthread_mutex_t classLock; +OBJC_EXPORT pthread_mutex_t methodListLock; - typedef struct { - long addressOffset; - long selectorOffset; - } FixupEntry; +OBJC_EXPORT NXHashTable *class_hash; - static inline int selEqual( SEL s1, SEL s2 ) { - return (s1 == s2); - } +/* nil handler object */ +OBJC_EXPORT id _objc_nilReceiver; +OBJC_EXPORT id _objc_setNilReceiver(id newNilReceiver); +OBJC_EXPORT id _objc_getNilReceiver(void); + +/* forward handler functions */ +OBJC_EXPORT void *_objc_forward_handler; +OBJC_EXPORT void *_objc_forward_stret_handler; + +/* 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; + +/* GC and RTP startup */ +OBJC_EXPORT void gc_init(BOOL on); +OBJC_EXPORT void rtp_init(void); + +/* Exceptions */ +struct alt_handler_list; +OBJC_EXPORT void exception_init(void); +OBJC_EXPORT void _destroyAltHandlerList(struct alt_handler_list *list); + +/* 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, ptrdiff_t 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, ptrdiff_t offset); + +/* + objc_assign_ivar, objc_assign_global, and objc_assign_strongCast MUST NOT be called directly + from inside libobjc. They live in the data segment, and must be called through the + following pointer(s) for libobjc to exist in the shared cache. + + Note: If we build with GC enabled, gcc will emit calls to the original functions, which will break this. +*/ + +extern id (*objc_assign_ivar_internal)(id, id, ptrdiff_t); + +/* Code modification */ +OBJC_EXPORT size_t objc_branch_size(void *entry, void *target); +OBJC_EXPORT size_t objc_write_branch(void *entry, void *target); +OBJC_EXPORT size_t objc_cond_branch_size(void *entry, void *target, unsigned cond); +OBJC_EXPORT size_t objc_write_cond_branch(void *entry, void *target, unsigned cond); +#if defined(__ppc__) || defined(__ppc64__) +#define COND_ALWAYS 0x02800000 /* BO=10100, BI=00000 */ +#define COND_NE 0x00820000 /* BO=00100, BI=00010 */ +#elif defined(__i386__) || defined(__x86_64__) +#define COND_ALWAYS 0xE9 /* JMP rel32 */ +#define COND_NE 0x85 /* JNE rel32 (0F 85) */ +#endif + + +/* Thread-safe info field */ +#if !__OBJC2__ +OBJC_EXPORT void _class_setInfo(Class cls, long set); +OBJC_EXPORT void _class_clearInfo(Class cls, long clear); +OBJC_EXPORT void _class_changeInfo(Class cls, long set, long clear); +#endif + +/* Secure /tmp usage */ +OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid); - #define OBJC_LOCK(MUTEX) mutex_lock (MUTEX) - #define OBJC_UNLOCK(MUTEX) mutex_unlock (MUTEX) - #define OBJC_TRYLOCK(MUTEX) mutex_try_lock (MUTEX) #if !defined(SEG_OBJC) #define SEG_OBJC "__OBJC" /* objective-C runtime segment */ #endif +#if !defined(SEG_OBJC2) +#define SEG_OBJC2 "__OBJC2" +#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 PrintInitializing; // env OBJC_PRINT_INITIALIZE_METHODS +OBJC_EXPORT int PrintResolving; // env OBJC_PRINT_RESOLVED_METHODS +OBJC_EXPORT int PrintConnecting; // env OBJC_PRINT_CLASS_SETUP +OBJC_EXPORT int PrintProtocols; // env OBJC_PRINT_PROTOCOL_SETUP +OBJC_EXPORT int PrintIvars; // env OBJC_PRINT_IVAR_SETUP +OBJC_EXPORT int PrintFuture; // env OBJC_PRINT_FUTURE_CLASSES 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 PrintExceptions; // env OBJC_PRINT_EXCEPTIONS +OBJC_EXPORT int PrintAltHandlers; // env OBJC_PRINT_ALT_HANDLERS +OBJC_EXPORT int PrintDeprecation;// env OBJC_PRINT_DEPRECATION_WARNINGS +OBJC_EXPORT int PrintReplacedMethods; // env OBJC_PRINT_REPLACED_METHODS +OBJC_EXPORT int PrintCacheCollection; // env OBJC_PRINT_CACHE_COLLECTION 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 DebugFinalizers; // env OBJC_DEBUG_FINALIZERS +OBJC_EXPORT int DebugNilSync; // env OBJC_DEBUG_NIL_SYNC -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 int DisableGC; // env OBJC_DISABLE_GC +/* GC state */ OBJC_EXPORT BOOL UseGC; // equivalent to calling objc_collecting_enabled() +OBJC_EXPORT auto_zone_t *gc_zone; // the GC zone, or NULL if no GC -static __inline__ int _objc_strcmp(const unsigned char *s1, const unsigned char *s2) { - unsigned char c1, c2; +static __inline__ int _objc_strcmp(const char *s1, const char *s2) { + char c1, c2; for ( ; (c1 = *s1) == (c2 = *s2); s1++, s2++) if (c1 == '\0') return 0; return (c1 - c2); } -static __inline__ unsigned int _objc_strhash(const unsigned char *s) { - unsigned int hash = 0; +static __inline__ uintptr_t _objc_strhash(const char *s) { + uintptr_t hash = 0; for (;;) { int a = *s++; if (0 == a) break; @@ -303,22 +490,26 @@ static __inline__ unsigned int _objc_strhash(const unsigned char *s) { // objc per-thread storage -OBJC_EXPORT pthread_key_t _objc_pthread_key; typedef struct { struct _objc_initializing_classes *initializingClasses; // for +initialize + struct _objc_lock_list *lockList; // for lock debugging + struct SyncCache *syncCache; // for @synchronize + struct alt_handler_list *handlerList; // for exception alt handlers // If you add new fields here, don't forget to update // _objc_pthread_destroyspecific() } _objc_pthread_data; +OBJC_EXPORT _objc_pthread_data *_objc_fetch_pthread_data(BOOL create); + // Class state -#define ISCLASS(cls) ((((struct objc_class *) cls)->info & CLS_CLASS) != 0) -#define ISMETA(cls) ((((struct objc_class *) cls)->info & CLS_META) != 0) -#define GETMETA(cls) (ISMETA(cls) ? ((struct objc_class *) cls) : ((struct objc_class *) cls)->isa) -#define ISINITIALIZED(cls) ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZED) != 0) -#define ISINITIALIZING(cls) ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZING) != 0) +#if !__OBJC2__ +#define ISCLASS(cls) (((cls)->info & CLS_CLASS) != 0) +#define ISMETA(cls) (((cls)->info & CLS_META) != 0) +#define GETMETA(cls) (ISMETA(cls) ? (cls) : (cls)->isa) +#endif // Attribute for global variables to keep them out of bss storage @@ -328,8 +519,195 @@ typedef struct { // CoreFoundation-only process from three to two. See #3857126 and #3857136. #define NOBSS __attribute__((section("__DATA,__data"))) +// cache.h +extern void flush_caches(Class cls, BOOL flush_meta); +extern void flush_cache(Class cls); +extern BOOL _cache_fill(Class cls, Method smt, SEL sel); +extern void _cache_addForwardEntry(Class cls, SEL sel); +extern void _cache_free(Cache cache); +#if !__OBJC2__ +// used by flush_caches outside objc-cache.m +extern void _cache_flush(Class cls); +extern pthread_mutex_t cacheUpdateLock; +#ifdef OBJC_INSTRUMENTED +extern unsigned int LinearFlushCachesCount; +extern unsigned int LinearFlushCachesVisitedCount; +extern unsigned int MaxLinearFlushCachesVisitedCount; +extern unsigned int NonlinearFlushCachesCount; +extern unsigned int NonlinearFlushCachesClassCount; +extern unsigned int NonlinearFlushCachesVisitedCount; +extern unsigned int MaxNonlinearFlushCachesVisitedCount; +extern unsigned int IdealFlushCachesCount; +extern unsigned int MaxIdealFlushCachesCount; +#endif +#endif + +// encoding.h +extern unsigned int encoding_getNumberOfArguments(const char *typedesc); +extern unsigned int encoding_getSizeOfArguments(const char *typedesc); +extern unsigned int encoding_getArgumentInfo(const char *typedesc, int arg, const char **type, int *offset); +extern void encoding_getReturnType(const char *t, char *dst, size_t dst_len); +extern char * encoding_copyReturnType(const char *t); +extern void encoding_getArgumentType(const char *t, unsigned int index, char *dst, size_t dst_len); +extern char *encoding_copyArgumentType(const char *t, unsigned int index); + +// lock.h +extern void _lock_debug(mutex_t lock, const char *name); +extern void _checklock_debug(mutex_t lock, const char *name); +extern void _checkunlock_debug(mutex_t lock, const char *name); +extern void _unlock_debug(mutex_t lock, const char *name); +extern void _destroyLockList(struct _objc_lock_list *locks); + +// sync.h +extern void _destroySyncCache(struct SyncCache *cache); + +// layout.h +typedef struct { + uint8_t *bits; + size_t bitCount; + size_t bitsAllocated; + BOOL weak; +} layout_bitmap; +extern layout_bitmap layout_bitmap_create(const unsigned char *layout_string, size_t layoutStringInstanceSize, size_t instanceSize, BOOL weak); +extern void layout_bitmap_free(layout_bitmap bits); +extern const unsigned char *layout_string_create(layout_bitmap bits); +extern void layout_bitmap_set_ivar(layout_bitmap bits, const char *type, size_t offset); +extern void layout_bitmap_grow(layout_bitmap *bits, size_t newCount); +extern void layout_bitmap_slide(layout_bitmap *bits, size_t oldPos, size_t newPos); +extern BOOL layout_bitmap_splat(layout_bitmap dst, layout_bitmap src, + size_t oldSrcInstanceSize); + +// fixme runtime +extern id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler); +extern void _read_images(header_info **hList, uint32_t hCount); +extern void prepare_load_methods(header_info *hi); +extern void _unload_image(header_info *hi); +extern const char ** _objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount); + +extern Class _objc_allocateFutureClass(const char *name); + + +extern Property *copyPropertyList(struct objc_property_list *plist, unsigned int *outCount); + + +extern const header_info *_headerForClass(Class cls); + +// fixme class +extern Property property_list_nth(const struct objc_property_list *plist, uint32_t i); +extern size_t property_list_size(const struct objc_property_list *plist); + +extern Class _class_getSuperclass(Class cls); +extern BOOL _class_getInfo(Class cls, int info); +extern const char *_class_getName(Class cls); +extern size_t _class_getInstanceSize(Class cls); +extern Class _class_getMeta(Class cls); +extern BOOL _class_isMetaClass(Class cls); +extern Cache _class_getCache(Class cls); +extern void _class_setCache(Class cls, Cache cache); +extern BOOL _class_isInitializing(Class cls); +extern BOOL _class_isInitialized(Class cls); +extern void _class_setInitializing(Class cls); +extern void _class_setInitialized(Class cls); +extern Class _class_getNonMetaClass(Class cls); +extern Method _class_getMethodNoSuper(Class cls, SEL sel); +extern Method _class_getMethod(Class cls, SEL sel); +extern BOOL _class_isLoadable(Class cls); +extern IMP _class_getLoadMethod(Class cls); +extern BOOL _class_hasLoadMethod(Class cls); +extern BOOL _class_hasCxxStructorsNoSuper(Class cls); +extern BOOL _class_shouldFinalizeOnMainThread(Class cls); +extern void _class_setFinalizeOnMainThread(Class cls); +extern BOOL _class_shouldGrowCache(Class cls); +extern void _class_setGrowCache(Class cls, BOOL grow); +extern Ivar _class_getVariable(Class cls, const char *name); +extern Class _class_getFreedObjectClass(void); +extern Class _class_getNonexistentObjectClass(void); +extern id _internal_class_createInstanceFromZone(Class cls, size_t extraBytes, + void *zone); +extern id _internal_object_dispose(id anObject); + + +extern const char *_category_getName(Category cat); +extern const char *_category_getClassName(Category cat); +extern Class _category_getClass(Category cat); +extern IMP _category_getLoadMethod(Category cat); + +#if !__OBJC2__ +#define oldcls(cls) ((struct old_class *)cls) +#define oldprotocol(proto) ((struct old_protocol *)proto) +#define oldmethod(meth) ((struct old_method *)meth) +#define oldcategory(cat) ((struct old_category *)cat) +#define oldivar(ivar) ((struct old_ivar *)ivar) + +static inline struct old_method *_method_asOld(Method m) { return (struct old_method *)m; } +static inline struct old_class *_class_asOld(Class cls) { return (struct old_class *)cls; } +static inline struct old_category *_category_asOld(Category cat) { return (struct old_category *)cat; } + +extern void unload_class(struct old_class *cls); +#endif + +extern BOOL object_cxxConstruct(id obj); +extern void object_cxxDestruct(id obj); + +#if !__OBJC2__ +#define CLS_CLASS 0x1 +#define CLS_META 0x2 +#define CLS_INITIALIZED 0x4 +#define CLS_POSING 0x8 +#define CLS_MAPPED 0x10 +#define CLS_FLUSH_CACHE 0x20 +#define CLS_GROW_CACHE 0x40 +#define CLS_NEED_BIND 0x80 +#define CLS_METHOD_ARRAY 0x100 +// the JavaBridge constructs classes with these markers +#define CLS_JAVA_HYBRID 0x200 +#define CLS_JAVA_CLASS 0x400 +// thread-safe +initialize +#define CLS_INITIALIZING 0x800 +// bundle unloading +#define CLS_FROM_BUNDLE 0x1000 +// C++ ivar support +#define CLS_HAS_CXX_STRUCTORS 0x2000 +// Lazy method list arrays +#define CLS_NO_METHOD_ARRAY 0x4000 +// +load implementation +#define CLS_HAS_LOAD_METHOD 0x8000 +// objc_allocateClassPair API +#define CLS_CONSTRUCTING 0x10000 +// visibility=hidden +#define CLS_HIDDEN 0x20000 +// GC: class has unsafe finalize method +#define CLS_FINALIZE_ON_MAIN_THREAD 0x40000 +// Lazy property list arrays +#define CLS_NO_PROPERTY_ARRAY 0x80000 // +load implementation -#define CLS_HAS_LOAD_METHOD 0x8000L +#define CLS_CONNECTED 0x100000 +#define CLS_LOADED 0x200000 +// objc_allocateClassPair API +#define CLS_CONSTRUCTED 0x400000 +// class is leaf for cache flushing +#define CLS_LEAF 0x800000 +#endif + +#define OBJC_WARN_DEPRECATED \ + do { \ + static int warned = 0; \ + if (!warned) { \ + warned = 1; \ + _objc_warn_deprecated(__FUNCTION__, NULL); \ + } \ + } while (0) \ + +/* Method prototypes */ +@interface DoesNotExist ++ class; ++ initialize; +- (id)description; +- (const char *)UTF8String; +- (unsigned long)hash; +- (BOOL)isEqual:(id)object; +- free; +@end #endif /* _OBJC_PRIVATE_H_ */ diff --git a/runtime/objc-rtp-sym.s b/runtime/objc-rtp-sym.s index 9556752..c095ef3 100644 --- a/runtime/objc-rtp-sym.s +++ b/runtime/objc-rtp-sym.s @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004 Apple 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 @@ -23,10 +21,6 @@ * @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: diff --git a/runtime/objc-rtp.h b/runtime/objc-rtp.h index aa4e2c7..9b701e4 100644 --- a/runtime/objc-rtp.h +++ b/runtime/objc-rtp.h @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2006 Apple 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 @@ -23,10 +21,6 @@ * @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 @@ -79,10 +73,12 @@ // 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__) +#if defined(__ppc__) || defined(__ppc64__) # define kRTPagesLo OBJC_UINTPTR_T(-20 * 0x1000) // ppc 0xfffec000 #elif defined(__i386__) # define kRTPagesLo OBJC_UINTPTR_T(-24 * 0x1000) // i386 0xfffe8000 +#elif defined(__x86_64__) +# define kRTPagesLo OBJC_UINTPTR_T(-24 * 0x1000) // x86_64 0xfffffffffffe8000 #else #error unknown architecture #endif @@ -103,15 +99,16 @@ #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_zero OBJC_SIZE_T(16) // 16 zero 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_zero OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize) // 16 zero bytes -#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTAddress_zero+16) // string "" +#define kRTAddress_zero OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize) +#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTAddress_zero+kRTSize_zero) -#define kIgnore kRTAddress_ignoredSelector // ppc 0xfffef010 +#define kIgnore kRTAddress_ignoredSelector // ppc 0xfffef000 /********************************************************************* End of runtime page layout. diff --git a/runtime/objc-rtp.m b/runtime/objc-rtp.m index 4e5bbee..a69d1fe 100644 --- a/runtime/objc-rtp.m +++ b/runtime/objc-rtp.m @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004-2007 Apple 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 @@ -23,10 +21,6 @@ * @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. */ @@ -41,10 +35,7 @@ // 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__) +#if defined(__ppc__) || defined(__ppc64__) // from Libc, but no prototype yet (#3850825) extern void sys_icache_invalidate(const void * newcode, size_t len); @@ -52,7 +43,7 @@ static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns); #endif -#if !defined(__ppc__) +#if defined(__ppc64__) __private_extern__ void rtp_init(void) { @@ -63,6 +54,15 @@ __private_extern__ void rtp_init(void) #else +#if defined(__ppc__) +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); +#endif + +#if defined(__i386__) || defined(__x86_64__) +static void rtp_swap_imp(unsigned *address, void *code, const char *name); +#endif + /********************************************************************** * rtp_init * Allocate and initialize the Objective-C runtime pages. @@ -70,18 +70,20 @@ __private_extern__ void rtp_init(void) **********************************************************************/ __private_extern__ void rtp_init(void) { +#if defined(__ppc__) + 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); + (void *)objcRTPages, (void *)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); + FALSE, VM_PROT_READ | VM_PROT_WRITE); if (ret != KERN_SUCCESS) { if (PrintRTP) { @@ -113,8 +115,33 @@ __private_extern__ void rtp_init(void) if (ret != KERN_SUCCESS) { _objc_inform("RTP: Could not re-protect Objective-C runtime pages!"); } + +#elif defined(__i386__) || defined(__x86_64__) + + // At load time, the page on which the objc_assign_* routines live is not + // marked as executable. We fix that here, regardless of the GC choice. + if (UseGC) + { + rtp_swap_imp((unsigned*)objc_assign_ivar, + objc_assign_ivar_gc, "objc_assign_ivar"); + rtp_swap_imp((unsigned*)objc_assign_global, + objc_assign_global_gc, "objc_assign_global"); + rtp_swap_imp((unsigned*)objc_assign_strongCast, + objc_assign_strongCast_gc, "objc_assign_strongCast"); + } + else + { // Not GC, just make the page executable. + if (vm_protect(mach_task_self(), (vm_address_t)objc_assign_ivar, 1, + FALSE, VM_PROT_READ | VM_PROT_EXECUTE) != KERN_SUCCESS) + _objc_fatal("Could not reprotect objc_assign_*."); + } + +#else +#error undefined architecture +#endif } +#if defined(__ppc__) /********************************************************************** * rtp_set_up_objc_msgSend @@ -125,7 +152,7 @@ __private_extern__ void rtp_init(void) **********************************************************************/ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) { -#if defined(__ppc__) +#if defined(__ppc__) || defined(__ppc64__) // Location in the runtime pages of the new function. unsigned *buffer = (unsigned *)address; @@ -136,11 +163,11 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) // 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); + size_t 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", + "in RTP at %p is a %zu instruction branch", buffer, written); } return; @@ -150,11 +177,11 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) // via a dyld-recognizable stub. if (AllowInterposing) { extern void objc_msgSend_stub(void); - unsigned written = objc_write_branch(buffer, objc_msgSend_stub); + size_t 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", + "in RTP at %p is a %zu instruction branch", buffer, written); } return; @@ -162,51 +189,73 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) if (PrintRTP) { _objc_inform("RTP: writing objc_msgSend at [%p..%p) ...", - address, address+maxsize); + (void *)address, (void *)(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) { + if (i + objc_branch_size(buffer + i, code + 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); + "runtime pages (%zu bytes available)", maxsize); return; } { - // Replace load of _objc_nilReceiver. + // Replace load of _objc_nilReceiver into r11 // 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; - + uintptr_t address = (uintptr_t)&_objc_nilReceiver; + uint16_t lo = address & 0xffff; + uint16_t ha = ((address - (int16_t)lo) >> 16) & 0xffff; +#if defined(__ppc64__) + uint16_t hi2 = (address >> 32) & 0xffff; + uint16_t hi3 = (address >> 48) & 0xffff; +#endif + // search for mflr instruction - int j; + size_t 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); + const unsigned op_lis_r11 = 0x3d600000u; + const unsigned op_lwz_r11 = 0x816b0000u; +#if defined(__ppc__) + // lis r11, ha + // lwz r11, lo(r11) + buffer[j + 0] = op_lis_r11 | ha; buffer[j + 1] = op_nop; buffer[j + 2] = op_nop; - buffer[j + 3] = op_lwz_r11 | (lo & 0xffff); + buffer[j + 3] = op_lwz_r11 | lo; buffer[j + 4] = op_nop; buffer[j + 5] = op_nop; +#elif defined(__ppc64__) + const unsigned op_ori_r11 = 0x616b0000u; + const unsigned op_oris_r11 = 0x656b0000u; + const unsigned op_sldi_r11 = 0x796b07c6u; + // lis r11, hi3 + // ori r11, r11, hi2 + // sldi r11, r11, 32 + // oris r11, r11, ha + // lwz r11, lo(r11) + buffer[j + 0] = op_lis_r11 | hi3; + buffer[j + 1] = op_ori_r11 | hi2; + buffer[j + 2] = op_sldi_r11; + buffer[j + 3] = op_oris_r11 | ha; + buffer[j + 4] = op_lwz_r11 | lo; + buffer[j + 5] = op_nop; +#endif break; } } @@ -220,7 +269,7 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) if (PrintRTP) { _objc_inform("RTP: wrote objc_msgSend at [%p..%p)", - address, address + i*sizeof(unsigned)); + (void *)address, (void *)(address + i*sizeof(unsigned))); } #elif defined(__i386__) @@ -242,7 +291,7 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) * 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__) +#if defined(__ppc__) || defined(__ppc64__) // location in the runtime pages of this function unsigned *buffer = (unsigned *)address; @@ -250,10 +299,10 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name unsigned *code = (unsigned *)(objc_collecting_enabled() ? gc_code : non_gc_code); if (objc_collecting_enabled()) { - unsigned written = objc_write_branch(buffer, code); + size_t 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", + _objc_inform("RTP: %s in RTP at %p is a %zu instruction branch", name, buffer, written); } return; @@ -261,20 +310,20 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name if (PrintRTP) { _objc_inform("RTP: writing %s at [%p..%p) ...", - name, address, address + maxsize); + name, (void *)address, (void *)(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); + size_t max_insns = maxsize / sizeof(unsigned); + size_t 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); + "runtime pages (%zu bytes available)", name, maxsize); return; } @@ -283,7 +332,8 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name if (PrintRTP) { _objc_inform("RTP: wrote %s at [%p..%p)", - name, address, address + i * sizeof(unsigned)); + name, (void *)address, + (void *)(address + i * sizeof(unsigned))); } #elif defined(__i386__) @@ -294,8 +344,6 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name } -#if defined(__ppc__) - /********************************************************************** * rtp_copy_code * @@ -321,8 +369,35 @@ static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns) return i + 1; } -// defined(__ppc__) +// defined(__ppc__) || defined(__ppc64__) +#endif + +#if defined(__i386__) || defined(__x86_64__) + +/********************************************************************** +* rtp_swap_imp +* +* Swap a function's current implementation with a new one. +* The routine at 'address' is assumed to be at least as large as the +* jump instruction required to reach the new implementation. +**********************************************************************/ +static void rtp_swap_imp(unsigned *address, void *code, const char *name) +{ + if (vm_protect(mach_task_self(), (vm_address_t)address, 1, + FALSE, VM_PROT_READ | VM_PROT_WRITE) != KERN_SUCCESS) + _objc_fatal("Could not get write access to %s.", name); + else + { + objc_write_branch(address, (unsigned*)code); + + if (vm_protect(mach_task_self(), (vm_address_t)address, 1, + FALSE, VM_PROT_READ | VM_PROT_EXECUTE) != KERN_SUCCESS) + _objc_fatal("Could not reprotect %s.", name); + } +} + +// defined(__i386__) || defined(__x86_64__) #endif -// defined(__ppc__) || defined(__i386__) +// !defined(__ppc64__) #endif diff --git a/runtime/objc-runtime-new.h b/runtime/objc-runtime-new.h new file mode 100644 index 0000000..ec96fb9 --- /dev/null +++ b/runtime/objc-runtime-new.h @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2005-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +// Values for class_ro_t->flags +// These are emitted by the compiler and are part of the ABI. +// class is a metaclass +#define RO_META (1<<0) +// class is a root class +#define RO_ROOT (1<<1) +// class has .cxx_construct/destruct implementations +#define RO_HAS_CXX_STRUCTORS (1<<2) +// class has +load implementation +// #define RO_HAS_LOAD_METHOD (1<<3) +// class has visibility=hidden set +#define RO_HIDDEN (1<<4) +// class has attribute(objc_exception): OBJC_EHTYPE_$_ThisClass is non-weak +#define RO_EXCEPTION (1<<5) +// class is realized - must never be set by compiler +#define RO_REALIZED (1<<31) + +// Values for class_rw_t->flags +// These are not emitted by the compiler and are never used in class_ro_t. +// Their presence should be considered in future ABI versions. +// class_t->data is class_rw_t, not class_ro_t +#define RW_REALIZED (1<<31) +// class's method lists are fixed up +#define RW_METHODIZED (1<<30) +// class is initialized +#define RW_INITIALIZED (1<<29) +// class is initializing +#define RW_INITIALIZING (1<<28) +// class_rw_t->ro is heap copy of class_ro_t +#define RW_COPIED_RO (1<<27) +// class allocated but not yet registered +#define RW_CONSTRUCTING (1<<26) +// class allocated and registered +#define RW_CONSTRUCTED (1<<25) +// GC: class has unsafe finalize method +#define RW_FINALIZE_ON_MAIN_THREAD (1<<24) +// class +load has been called +#define RW_LOADED (1<<23) + +typedef struct method_t { + SEL name; + const char *types; + IMP imp; +} method_t; + +typedef struct method_list_t { + uint32_t entsize; + uint32_t count; + struct method_t first; +} method_list_t; + +typedef struct ivar_t { + // *offset is 64-bit by accident even though other + // fields restrict total instance size to 32-bit. + uintptr_t *offset; + const char *name; + const char *type; + uint32_t alignment; + uint32_t size; +} ivar_t; + +typedef struct ivar_list_t { + uint32_t entsize; + uint32_t count; + struct ivar_t first; +} ivar_list_t; + +typedef struct protocol_t { + id isa; + const char *name; + struct protocol_list_t *protocols; + method_list_t *instanceMethods; + method_list_t *classMethods; + method_list_t *optionalInstanceMethods; + method_list_t *optionalClassMethods; + struct objc_property_list *instanceProperties; +} protocol_t; + +typedef struct protocol_list_t { + // count is 64-bit by accident. + uintptr_t count; + protocol_t *list[0]; // variable-size +} protocol_list_t; + +typedef struct class_ro_t { + uint32_t flags; + uint32_t instanceStart; + uint32_t instanceSize; + uint32_t reserved; + + const uint8_t * ivarLayout; + + const char * name; + const method_list_t * baseMethods; + const protocol_list_t * baseProtocols; + const ivar_list_t * ivars; + + const uint8_t * weakIvarLayout; + const struct objc_property_list *baseProperties; +} class_ro_t; + +typedef struct class_rw_t { + uint32_t flags; + uint32_t version; + + const class_ro_t *ro; + + struct chained_method_list *methods; + struct chained_property_list *properties; + struct protocol_list_t ** protocols; // these are UNREMAPPED protocols! + + struct class_t *firstSubclass; + struct class_t *nextSiblingClass; +} class_rw_t; + +typedef struct class_t { + struct class_t *isa; + struct class_t *superclass; + Cache cache; + IMP *vtable; + class_rw_t *data; +} class_t; + +typedef struct category_t { + const char *name; + struct class_t *cls; + struct method_list_t *instanceMethods; + struct method_list_t *classMethods; + struct protocol_list_t *protocols; + struct objc_property_list *instanceProperties; +} category_t; + +struct objc_super2 { + id receiver; + Class current_class; +}; diff --git a/runtime/objc-runtime-new.m b/runtime/objc-runtime-new.m new file mode 100644 index 0000000..ced3cc1 --- /dev/null +++ b/runtime/objc-runtime-new.m @@ -0,0 +1,3953 @@ +/* + * Copyright (c) 2005-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-runtime-new.m +* Support for new-ABI classes and images. +**********************************************************************/ + +#if __OBJC2__ + +#include "objc-private.h" +#include "objc-runtime-new.h" +#include "objc-loadmethod.h" +#include "objc-rtp.h" +#include "maptable.h" +#include +#include +#include + +#define newcls(cls) ((struct class_t *)cls) +#define newcat(cat) ((struct category_t *)cat) +#define newmethod(meth) ((struct method_t *)meth) +#define newivar(ivar) ((struct ivar_t *)ivar) +#define newcategory(cat) ((struct category_t *)cat) +#define newprotocol(p) ((struct protocol_t *)p) + +static const char *getName(struct class_t *cls); +static uint32_t instanceSize(struct class_t *cls); +static BOOL isMetaClass(struct class_t *cls); +static struct class_t *getSuperclass(struct class_t *cls); +static void unload_class(class_t *cls); +static class_t *setSuperclass(class_t *cls, class_t *newSuper); +static class_t *realizeClass(class_t *cls); + +static OBJC_DECLARE_LOCK (runtimeLock); +// fixme use more fine-grained locks + + +typedef struct { + uint32_t count; + category_t *list[0]; // variable-size +} category_list; + +typedef struct chained_method_list { + struct chained_method_list *next; + uint32_t count; + method_t list[0]; // variable-size +} chained_method_list; + +static size_t chained_mlist_size(const chained_method_list *mlist) +{ + return sizeof(chained_method_list) + mlist->count * sizeof(method_t); +} + +// fixme don't chain property lists +typedef struct chained_property_list { + struct chained_property_list *next; + uint32_t count; + struct objc_property list[0]; // variable-size +} chained_property_list; + +/* +static size_t chained_property_list_size(const chained_property_list *plist) +{ + return sizeof(chained_property_list) + + plist->count * sizeof(struct objc_property); +} + +static size_t protocol_list_size(const protocol_list_t *plist) +{ + return sizeof(protocol_list_t) + plist->count * sizeof(protocol_t *); +} +*/ + +static size_t ivar_list_size(const ivar_list_t *ilist) +{ + return sizeof(ivar_list_t) + (ilist->count-1) * ilist->entsize; +} + +static method_t *method_list_nth(const method_list_t *mlist, uint32_t i) +{ + return (method_t *)(i*mlist->entsize + (char *)&mlist->first); +} + +static ivar_t *ivar_list_nth(const ivar_list_t *ilist, uint32_t i) +{ + return (ivar_t *)(i*ilist->entsize + (char *)&ilist->first); +} + + +static void try_free(const void *p) +{ + if (p && malloc_size(p)) free((void *)p); +} + + +/*********************************************************************** +* make_ro_writeable +* Reallocates rw->ro if necessary to make it writeable. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static class_ro_t *make_ro_writeable(class_rw_t *rw) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + if (rw->flags & RW_COPIED_RO) { + // already writeable, do nothing + } else { + class_ro_t *ro = _memdup_internal(rw->ro, sizeof(*rw->ro)); + rw->ro = ro; + rw->flags |= RW_COPIED_RO; + } + return (class_ro_t *)rw->ro; +} + + +/*********************************************************************** +* unattachedCategories +* Returns the class => categories map of unattached categories. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static NXMapTable *unattachedCategories(void) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + static NXMapTable *category_map = NULL; + + if (category_map) return category_map; + + // fixme initial map size + category_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 16, + _objc_internal_zone()); + + return category_map; +} + + +/*********************************************************************** +* addUnattachedCategoryForClass +* Records an unattached category. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void addUnattachedCategoryForClass(category_t *cat, class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + // DO NOT use cat->cls! + // cls may be cat->cls->isa, or cat->cls may have been remapped. + NXMapTable *cats = unattachedCategories(); + category_list *list; + + list = NXMapGet(cats, cls); + if (!list) { + list = _calloc_internal(sizeof(*list) + sizeof(category_t *), 1); + } else { + list = _realloc_internal(list, sizeof(*list) + sizeof(category_t *) * (list->count + 1)); + } + list->list[list->count++] = cat; + NXMapInsert(cats, cls, list); +} + + +/*********************************************************************** +* removeUnattachedCategoryForClass +* Removes an unattached category. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void removeUnattachedCategoryForClass(category_t *cat, class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + // DO NOT use cat->cls! + // cls may be cat->cls->isa, or cat->cls may have been remapped. + NXMapTable *cats = unattachedCategories(); + category_list *list; + + list = NXMapGet(cats, cls); + if (!list) return; + + uint32_t i; + for (i = 0; i < list->count; i++) { + if (list->list[i] == cat) { + // shift entries to preserve list order + memmove(&list->list[i], &list->list[i+1], + (list->count-i-1) * sizeof(category_t *)); + list->count--; + return; + } + } +} + + +/*********************************************************************** +* unattachedCategoriesForClass +* Returns the list of unattached categories for a class, and +* deletes them from the list. +* The result must be freed by the caller. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static category_list *unattachedCategoriesForClass(class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + return NXMapRemove(unattachedCategories(), cls); +} + + +/*********************************************************************** +* isRealized +* Returns YES if class cls has been realized. +* Locking: To prevent concurrent realization, hold runtimeLock. +**********************************************************************/ +static BOOL isRealized(class_t *cls) +{ + return (cls->data->flags & RW_REALIZED) ? YES : NO; +} + + +/*********************************************************************** +* isMethodized. +* Returns YES if class cls has ever been methodized. +* Note that its method lists may still be out of date. +* Locking: To prevent concurrent methodization, hold runtimeLock. +**********************************************************************/ +static BOOL isMethodized(class_t *cls) +{ + if (!isRealized(cls)) return NO; + return (cls->data->flags & RW_METHODIZED) ? YES : NO; +} + +static chained_method_list * +buildMethodList(const method_list_t *mlist, category_list *cats, BOOL isMeta) +{ + // Do NOT use cat->cls! It may have been remapped. + chained_method_list *newlist; + uint32_t count = 0; + uint32_t m, c; + + // Count methods in all lists. + if (mlist) count = mlist->count; + if (cats) { + for (c = 0; c < cats->count; c++) { + if (isMeta && cats->list[c]->classMethods) { + count += cats->list[c]->classMethods->count; + } + else if (!isMeta && cats->list[c]->instanceMethods) { + count += cats->list[c]->instanceMethods->count; + } + } + } + + // Allocate new list. + newlist = _malloc_internal(sizeof(*newlist) + count * sizeof(method_t)); + newlist->count = 0; + newlist->next = NULL; + + // Copy methods; newest categories first, then ordinary methods + if (cats) { + c = cats->count; + while (c--) { + method_list_t *cmlist; + if (isMeta) { + cmlist = cats->list[c]->classMethods; + } else { + cmlist = cats->list[c]->instanceMethods; + } + if (cmlist) { + for (m = 0; m < cmlist->count; m++) { + newlist->list[newlist->count++] = + *method_list_nth(cmlist, m); + } + } + } + } + if (mlist) { + for (m = 0; m < mlist->count; m++) { + newlist->list[newlist->count++] = *method_list_nth(mlist, m); + } + } + + assert(newlist->count == count); + for (m = 0; m < newlist->count; m++) { + newlist->list[m].name = + sel_registerName((const char *)newlist->list[m].name); + if (newlist->list[m].name == (SEL)kRTAddress_ignoredSelector) { + newlist->list[m].imp = (IMP)&_objc_ignored_method; + } + } + + return newlist; +} + + +static chained_property_list * +buildPropertyList(const struct objc_property_list *plist, category_list *cats, BOOL isMeta) +{ + // Do NOT use cat->cls! It may have been remapped. + chained_property_list *newlist; + uint32_t count = 0; + uint32_t p, c; + + // Count properties in all lists. + if (plist) count = plist->count; + if (cats) { + for (c = 0; c < cats->count; c++) { + /* + if (isMeta && cats->list[c]->classProperties) { + count += cats->list[c]->classProperties->count; + } + else*/ + if (!isMeta && cats->list[c]->instanceProperties) { + count += cats->list[c]->instanceProperties->count; + } + } + } + + if (count == 0) return NULL; + + // Allocate new list. + newlist = _malloc_internal(sizeof(*newlist) + count * sizeof(struct objc_property)); + newlist->count = 0; + newlist->next = NULL; + + // Copy properties; newest categories first, then ordinary properties + if (cats) { + c = cats->count; + while (c--) { + struct objc_property_list *cplist; + /* + if (isMeta) { + cplist = cats->list[c]->classProperties; + } else */ + { + cplist = cats->list[c]->instanceProperties; + } + if (cplist) { + for (p = 0; p < cplist->count; p++) { + newlist->list[newlist->count++] = + *property_list_nth(cplist, p); + } + } + } + } + if (plist) { + for (p = 0; p < plist->count; p++) { + newlist->list[newlist->count++] = *property_list_nth(plist, p); + } + } + + assert(newlist->count == count); + + return newlist; +} + + +static protocol_list_t ** +buildProtocolList(category_list *cats, struct protocol_list_t *base, + struct protocol_list_t **protos) +{ + // Do NOT use cat->cls! It may have been remapped. + struct protocol_list_t **p, **newp; + struct protocol_list_t **newprotos; + int count = 0; + int i; + + // count protocol list in base + if (base) count++; + + // count protocol lists in cats + if (cats) for (i = 0; i < cats->count; i++) { + category_t *cat = cats->list[i]; + if (cat->protocols) count++; + } + + // no base or category protocols? return existing protocols unchanged + if (count == 0) return protos; + + // count protocol lists in protos + for (p = protos; p && *p; p++) { + count++; + } + + if (count == 0) return NULL; + + newprotos = (struct protocol_list_t **) + _malloc_internal((count+1) * sizeof(struct protocol_list_t *)); + newp = newprotos; + + if (base) { + *newp++ = base; + } + + for (p = protos; p && *p; p++) { + *newp++ = *p; + } + + if (cats) for (i = 0; i < cats->count; i++) { + category_t *cat = cats->list[i]; + if (cat->protocols) { + *newp++ = cat->protocols; + } + } + + *newp = NULL; + + return newprotos; +} + + +/*********************************************************************** +* methodizeClass +* Fixes up cls's method list, protocol list, and property list. +* Attaches any outstanding categories. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void methodizeClass(struct class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + category_list *cats; + + if (!cls) return; + assert(isRealized(cls)); + + if (!(cls->data->flags & RW_METHODIZED)) { + // Methodizing for the first time + if (PrintConnecting) { + _objc_inform("CLASS: methodizing class '%s' %s", + getName(cls), + isMetaClass(cls) ? "(meta)" : ""); + } + + // Build method and protocol and property lists. + // Include methods and protocols and properties from categories, if any + // Do NOT use cat->cls! It may have been remapped. + cats = unattachedCategoriesForClass(cls); + if (cats || cls->data->ro->baseMethods) { + cls->data->methods = + buildMethodList(cls->data->ro->baseMethods, cats, + isMetaClass(cls)); + } + + if (cats || cls->data->ro->baseProperties) { + cls->data->properties = + buildPropertyList(cls->data->ro->baseProperties, cats, + isMetaClass(cls)); + } + + if (cats || cls->data->ro->baseProtocols) { + cls->data->protocols = + buildProtocolList(cats, cls->data->ro->baseProtocols, NULL); + } + + if (PrintConnecting) { + uint32_t i; + if (cats) for (i = 0; i < cats->count; i++) { + _objc_inform("CLASS: attached category %c%s(%s)", + isMetaClass(cls) ? '+' : '-', + getName(cls), cats->list[i]->name); + } + } + + if (cats) _free_internal(cats); + + cls->data->flags |= RW_METHODIZED; + } + else { + // Re-methodizing: check for more categories + if ((cats = unattachedCategoriesForClass(cls))) { + chained_method_list *newlist; + chained_property_list *newproperties; + struct protocol_list_t **newprotos; + + if (PrintConnecting) { + _objc_inform("CLASS: attaching categories to class '%s' %s", + getName(cls), + isMetaClass(cls) ? "(meta)" : ""); + } + + newlist = buildMethodList(NULL, cats, isMetaClass(cls)); + newlist->next = cls->data->methods; + cls->data->methods = newlist; + + newproperties = buildPropertyList(NULL, cats, isMetaClass(cls)); + if (newproperties) { + newproperties->next = cls->data->properties; + cls->data->properties = newproperties; + } + + newprotos = buildProtocolList(cats, NULL, cls->data->protocols); + if (cls->data->protocols && cls->data->protocols != newprotos) { + _free_internal(cls->data->protocols); + } + cls->data->protocols = newprotos; + + _free_internal(cats); + } + } +} + + +/*********************************************************************** +* changeInfo +* Atomically sets and clears some bits in cls's info field. +* set and clear must not overlap. +**********************************************************************/ +static OBJC_DECLARE_LOCK(infoLock); +// fixme use atomic ops instead of lock +static void changeInfo(class_t *cls, unsigned int set, unsigned int clear) +{ + assert(isRealized(cls)); + OBJC_LOCK(&infoLock); + cls->data->flags = (cls->data->flags | set) & ~clear; + OBJC_UNLOCK(&infoLock); +} + + +/*********************************************************************** +* realizedClasses +* Returns the classname => class map for realized non-meta classes. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static NXMapTable *realizedClasses(void) +{ + static NXMapTable *class_map = NULL; + + OBJC_CHECK_LOCKED(&runtimeLock); + + if (class_map) return class_map; + + // fixme this doesn't work yet + // class_map 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. + class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, + _objc_internal_zone()); + + return class_map; +} + + +/*********************************************************************** +* unrealizedClasses +* Returns the classname => class map for unrealized non-meta classes. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static NXMapTable *unrealizedClasses(void) +{ + static NXMapTable *class_map = NULL; + + OBJC_CHECK_LOCKED(&runtimeLock); + + if (class_map) return class_map; + + // fixme this doesn't work yet + // class_map 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. + class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, + _objc_internal_zone()); + + return class_map; +} + + +/*********************************************************************** +* addRealizedClass +* Adds name => cls to the realized non-meta class map. +* Also removes name => cls from the unrealized non-meta class map. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void addRealizedClass(class_t *cls, const char *name) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + void *old; + old = NXMapInsert(realizedClasses(), name, cls); + assert(!isMetaClass(cls)); + NXMapRemove(unrealizedClasses(), name); +} + + +/*********************************************************************** +* removeRealizedClass +* Removes cls from the realized class map. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void removeRealizedClass(class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + assert(isRealized(cls)); + assert(!isMetaClass(cls)); + NXMapRemove(realizedClasses(), cls->data->ro->name); +} + + +/*********************************************************************** +* addUnrealizedClass +* Adds name => cls to the unrealized non-meta class map. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void addUnrealizedClass(class_t *cls, const char *name) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + void *old; + old = NXMapInsert(unrealizedClasses(), name, cls); + assert(!isRealized(cls)); + assert(!(cls->data->flags & RO_META)); +} + + +/*********************************************************************** +* uninitializedClasses +* Returns the metaclass => class map for un-+initialized classes +* Replaces the 32-bit cls = objc_getName(metacls) during +initialize. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static NXMapTable *uninitializedClasses(void) +{ + static NXMapTable *class_map = NULL; + + OBJC_CHECK_LOCKED(&runtimeLock); + + if (class_map) return class_map; + + // fixme this doesn't work yet + // class_map 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. + class_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 16, + _objc_internal_zone()); + + return class_map; +} + + +/*********************************************************************** +* addUninitializedClass +* Adds metacls => cls to the un-+initialized class map +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void addUninitializedClass(class_t *cls, class_t *metacls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + void *old; + old = NXMapInsert(uninitializedClasses(), metacls, cls); + assert(isRealized(metacls) ? isMetaClass(metacls) : metacls->data->flags & RO_META); + assert(! (isRealized(cls) ? isMetaClass(cls) : cls->data->flags & RO_META)); + assert(!old); +} + + +static void removeUninitializedClass(class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + NXMapRemove(uninitializedClasses(), cls->isa); +} + + +/*********************************************************************** +* _class_getNonMetaClass +* Return the ordinary class for this class or metaclass. +* Used by +initialize. +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Class _class_getNonMetaClass(Class cls_gen) +{ + class_t *cls = newcls(cls_gen); + OBJC_LOCK(&runtimeLock); + if (isMetaClass(cls)) { + cls = NXMapGet(uninitializedClasses(), cls); + realizeClass(cls); + } + OBJC_UNLOCK(&runtimeLock); + + return (Class)cls; +} + + + +/*********************************************************************** +* futureClasses +* Returns the classname => future class map for unrealized future classes. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static NXMapTable *futureClasses(void) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + static NXMapTable *future_class_map = NULL; + + if (future_class_map) return future_class_map; + + // future_class_map is big enough to hold CF's classes and a few others + future_class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 32, + _objc_internal_zone()); + + return future_class_map; +} + + +/*********************************************************************** +* addFutureClass +* Installs cls as the class structure to use for the named class if it appears. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void addFutureClass(const char *name, class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + if (PrintFuture) { + _objc_inform("FUTURE: reserving %p for %s", cls, name); + } + + void *old; + old = NXMapKeyCopyingInsert(futureClasses(), name, cls); + assert(!old); +} + + +/*********************************************************************** +* removeFutureClass +* Removes the named class from the unrealized future class list, +* because it has been realized. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static void removeFutureClass(const char *name) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + NXMapKeyFreeingRemove(futureClasses(), name); +} + + +/*********************************************************************** +* remappedClasses +* Returns the oldClass => newClass map for realized future classes. +* Locking: remapLock must be held by the caller +**********************************************************************/ +static OBJC_DECLARE_LOCK(remapLock); +static NXMapTable *remappedClasses(BOOL create) +{ + static NXMapTable *remapped_class_map = NULL; + + OBJC_CHECK_LOCKED(&remapLock); + + if (remapped_class_map) return remapped_class_map; + + if (!create) return NULL; + + // remapped_class_map is big enough to hold CF's classes and a few others + remapped_class_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 32, + _objc_internal_zone()); + + return remapped_class_map; +} + + +/*********************************************************************** +* noClassesRemapped +* Returns YES if no classes have been remapped +* Locking: acquires remapLock +**********************************************************************/ +static BOOL noClassesRemapped(void) +{ + OBJC_LOCK(&remapLock); + BOOL result = (remappedClasses(NO) == NULL); + OBJC_UNLOCK(&remapLock); + return result; +} + + +/*********************************************************************** +* addRemappedClass +* newcls is a realized future class, replacing oldcls. +* Locking: acquires remapLock +**********************************************************************/ +static void addRemappedClass(class_t *oldcls, class_t *newcls) +{ + OBJC_LOCK(&remapLock); + + if (PrintFuture) { + _objc_inform("FUTURE: using %p instead of %p for %s", + oldcls, newcls, getName(newcls)); + } + + void *old; + old = NXMapInsert(remappedClasses(YES), oldcls, newcls); + assert(!old); + + OBJC_UNLOCK(&remapLock); +} + + +/*********************************************************************** +* remapClass +* Returns the live class pointer for cls, which may be pointing to +* a class struct that has been reallocated. +* Locking: acquires remapLock +**********************************************************************/ +static class_t *remapClass(class_t *cls) +{ + OBJC_LOCK(&remapLock); + class_t *newcls = NXMapGet(remappedClasses(YES), cls); + OBJC_UNLOCK(&remapLock); + return newcls ? newcls : cls; +} + + +/*********************************************************************** +* remapClassRef +* Fix up a class ref, in case the class referenced has been reallocated. +* Locking: acquires remapLock +**********************************************************************/ +static void remapClassRef(class_t **clsref) +{ + class_t *newcls = remapClass(*clsref); + if (*clsref != newcls) *clsref = newcls; +} + + +/*********************************************************************** +* addSubclass +* Adds subcls as a subclass of supercls. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void addSubclass(class_t *supercls, class_t *subcls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + if (supercls && subcls) { + assert(isRealized(supercls)); + assert(isRealized(subcls)); + subcls->data->nextSiblingClass = supercls->data->firstSubclass; + supercls->data->firstSubclass = subcls; + } +} + + +/*********************************************************************** +* removeSubclass +* Removes subcls as a subclass of supercls. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void removeSubclass(class_t *supercls, class_t *subcls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + assert(getSuperclass(subcls) == supercls); + + class_t **cp; + for (cp = &supercls->data->firstSubclass; + *cp && *cp != subcls; + cp = &(*cp)->data->nextSiblingClass) + ; + assert(*cp == subcls); + *cp = subcls->data->nextSiblingClass; +} + + + +/*********************************************************************** +* protocols +* Returns the protocol name => protocol map for protocols. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static NXMapTable *protocols(void) +{ + static NXMapTable *protocol_map = NULL; + + OBJC_CHECK_LOCKED(&runtimeLock); + + if (protocol_map) return protocol_map; + + // fixme this doesn't work yet + // class_map 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. + protocol_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, + _objc_internal_zone()); + + return protocol_map; +} + + +/*********************************************************************** +* remapProtocol +* Returns the live protocol pointer for proto, which may be pointing to +* a protocol struct that has been reallocated. +* Locking: fixme +**********************************************************************/ +static protocol_t *remapProtocol(protocol_t *proto) +{ + // OBJC_LOCK(&remapLock); + protocol_t *newproto = NXMapGet(protocols(), proto->name); + // OBJC_UNLOCK(&remapLock); + return newproto ? newproto : proto; +} + + +/*********************************************************************** +* remapProtocolRef +* Fix up a protocol ref, in case the protocol referenced has been reallocated. +* Locking: fixme +**********************************************************************/ +static void remapProtocolRef(protocol_t **protoref) +{ + protocol_t *newproto = remapProtocol(*protoref); + if (*protoref != newproto) *protoref = newproto; +} + + +/*********************************************************************** +* moveIvars +* Slides a class's ivars to accommodate the given superclass size. +* Also slides ivar and weak GC layouts if provided. +* Ivars are NOT compacted to compensate for a superclass that shrunk. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void moveIvars(class_ro_t *ro, uint32_t superSize, + layout_bitmap *ivarBitmap, layout_bitmap *weakBitmap) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + uint32_t diff; + uint32_t gcdiff; + uint32_t i; + + assert(superSize > ro->instanceStart); + diff = superSize - ro->instanceStart; + gcdiff = diff; + *(uint32_t *)&ro->instanceStart += diff; + + if (ro->ivars) { + for (i = 0; i < ro->ivars->count; i++) { + ivar_t *ivar = ivar_list_nth(ro->ivars, i); + // naively slide ivar + uint32_t oldOffset = (uint32_t)*ivar->offset; + uint32_t newOffset = oldOffset + diff; + // realign if needed + uint32_t alignMask = (1<alignment)-1; + if (newOffset & alignMask) { + uint32_t alignedOffset = (newOffset + alignMask) & ~alignMask; + assert(alignedOffset > newOffset); + diff += alignedOffset - newOffset; + gcdiff += alignedOffset - newOffset; + newOffset = alignedOffset; + } + // newOffset is ready + *ivar->offset = newOffset; + // update ivar layouts + if (gcdiff != 0 && (oldOffset & 7) == 0) { + // this ivar's alignment hasn't been accounted for yet + if (ivarBitmap) { + layout_bitmap_slide(ivarBitmap, + (newOffset-gcdiff)>>3, newOffset>>3); + } + if (weakBitmap) { + layout_bitmap_slide(weakBitmap, + (newOffset-gcdiff)>>3, newOffset>>3); + } + gcdiff = 0; + } + + if (PrintIvars) { + _objc_inform("IVARS: offset %u -> %u for %s (size %u, align %u)", + oldOffset, newOffset, ivar->name, + ivar->size, 1<alignment); + } + } + } + + *(uint32_t *)&ro->instanceSize += diff; // diff now includes alignment pad + + if (!ro->ivars) { + // No ivars slid, but superclass changed size. + // Expand bitmap in preparation for layout_bitmap_splat(). + if (ivarBitmap) layout_bitmap_grow(ivarBitmap, ro->instanceSize>>3); + if (weakBitmap) layout_bitmap_grow(weakBitmap, ro->instanceSize>>3); + } + +#if !__LP64__ +#error wrong word size used in this function +#endif +} + + +/*********************************************************************** +* getIvar +* Look up an ivar by name. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static ivar_t *getIvar(class_t *cls, const char *name) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + const ivar_list_t *ivars; + assert(isRealized(cls)); + if ((ivars = cls->data->ro->ivars)) { + uint32_t i; + for (i = 0; i < ivars->count; i++) { + struct ivar_t *ivar = ivar_list_nth(ivars, i); + // ivar->name may be NULL for anonymous bitfields etc. + if (ivar->name && 0 == strcmp(name, ivar->name)) { + return ivar; + } + } + } + + return NULL; +} + + +/*********************************************************************** +* realizeClass +* Performs first-time initialization on class cls, +* including allocating its read-write data. +* Returns the real class structure for the class. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static class_t *realizeClass(class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + const class_ro_t *ro; + class_rw_t *rw; + class_t *supercls; + class_t *metacls; + BOOL isMeta; + + if (!cls) return NULL; + if (isRealized(cls)) return cls; + assert(cls == remapClass(cls)); + + ro = (const class_ro_t *)cls->data; + + isMeta = (ro->flags & RO_META) ? YES : NO; + + if (PrintConnecting) { + _objc_inform("CLASS: realizing class '%s' %s %p %p", + ro->name, isMeta ? "(meta)" : "", cls, ro); + } + + // Allocate writeable class data + rw = _calloc_internal(sizeof(class_rw_t), 1); + rw->flags = RW_REALIZED; + rw->version = isMeta ? 7 : 0; // old runtime went up to 6 + rw->ro = ro; + + cls->data = rw; + + // Realize superclass and metaclass, if they aren't already. + // This needs to be done after RW_REALIZED is set above, for root classes. + supercls = realizeClass(remapClass(cls->superclass)); + metacls = realizeClass(remapClass(cls->isa)); + + // Check for remapped superclass + // fixme doesn't handle remapped metaclass + assert(metacls == cls->isa); + if (supercls != cls->superclass) { + cls->superclass = supercls; + } + + /* debug: print them all + if (ro->ivars) { + uint32_t i; + for (i = 0; i < ro->ivars->count; i++) { + ivar_t *ivar = ivar_list_nth(ro->ivars, i); + _objc_inform("IVARS: %s.%s (offset %u, size %u, align %u)", + ro->name, ivar->name, + *ivar->offset, ivar->size, 1<alignment); + } + } + */ + + + if (supercls) { + // Non-fragile ivars - reconcile this class with its superclass + layout_bitmap ivarBitmap; + layout_bitmap weakBitmap; + BOOL layoutsChanged = NO; + + if (UseGC) { + // fixme can optimize for "class has no new ivars", etc + // WARNING: gcc c++ sets instanceStart/Size=0 for classes with + // no local ivars, but does provide a layout bitmap. + // Handle that case specially so layout_bitmap_create doesn't die + // The other ivar sliding code below still works fine, and + // the final result is a good class. + if (ro->instanceStart == 0 && ro->instanceSize == 0) { + // We can't use ro->ivarLayout because we don't know + // how long it is. Force a new layout to be created. + if (PrintIvars) { + _objc_inform("IVARS: instanceStart/Size==0 for class %s; " + "disregarding ivar layout", ro->name); + } + ivarBitmap = + layout_bitmap_create(NULL, + supercls->data->ro->instanceSize, + supercls->data->ro->instanceSize, NO); + weakBitmap = + layout_bitmap_create(NULL, + supercls->data->ro->instanceSize, + supercls->data->ro->instanceSize, YES); + layoutsChanged = YES; + } else { + ivarBitmap = + layout_bitmap_create(ro->ivarLayout, + ro->instanceSize, + ro->instanceSize, NO); + weakBitmap = + layout_bitmap_create(ro->weakIvarLayout, + ro->instanceSize, + ro->instanceSize, YES); + } + } + + if (ro->instanceStart < supercls->data->ro->instanceSize) { + // Superclass has changed size. This class's ivars must move. + // Also slide layout bits in parallel. + // This code is incapable of compacting the subclass to + // compensate for a superclass that shrunk, so don't do that. + if (PrintIvars) { + _objc_inform("IVARS: sliding ivars for class %s " + "(superclass was %u bytes, now %u)", + ro->name, ro->instanceStart, + supercls->data->ro->instanceSize); + } + class_ro_t *ro_w = make_ro_writeable(rw); + ro = rw->ro; + moveIvars(ro_w, supercls->data->ro->instanceSize, + UseGC ? &ivarBitmap : NULL, UseGC ? &weakBitmap : NULL); + layoutsChanged = YES; + } + + if (UseGC) { + // Check superclass's layout against this class's layout. + // This needs to be done even if the superclass is not bigger. + layout_bitmap superBitmap = + layout_bitmap_create(supercls->data->ro->ivarLayout, + supercls->data->ro->instanceSize, + supercls->data->ro->instanceSize, NO); + layoutsChanged |= layout_bitmap_splat(ivarBitmap, superBitmap, + ro->instanceStart); + layout_bitmap_free(superBitmap); + + superBitmap = + layout_bitmap_create(supercls->data->ro->weakIvarLayout, + supercls->data->ro->instanceSize, + supercls->data->ro->instanceSize, YES); + layoutsChanged |= layout_bitmap_splat(weakBitmap, superBitmap, + ro->instanceStart); + layout_bitmap_free(superBitmap); + + if (layoutsChanged) { + // Rebuild layout strings. + if (PrintIvars) { + _objc_inform("IVARS: gc layout changed for class %s", + ro->name); + } + class_ro_t *ro_w = make_ro_writeable(rw); + ro = rw->ro; + ro_w->ivarLayout = layout_string_create(ivarBitmap); + ro_w->weakIvarLayout = layout_string_create(weakBitmap); + } + + layout_bitmap_free(ivarBitmap); + layout_bitmap_free(weakBitmap); + } + } + + // Connect this class to its superclass's subclass lists + if (supercls) { + addSubclass(supercls, cls); + } + + if (!isMeta) { + addRealizedClass(cls, cls->data->ro->name); + } else { + // metaclasses don't go in the realized class map + } + + return cls; +} + + +/*********************************************************************** +* getClass +* Looks up a class by name with no hints, and realizes it. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static class_t *getClass(const char *name) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + class_t *result; + + // Try realized classes + result = (class_t *)NXMapGet(realizedClasses(), name); + if (result) return result; + + // Try unrealized classes + result = (class_t *)NXMapGet(unrealizedClasses(), name); + if (result) return result; + +#if 0 + // Try a classname symbol + result = getClassBySymbol(NULL, name); + if (result) { + result = realizeClass(remapClass(result)); + return result; + } + + if (!result) { + // fixme suck + realizeAllClasses(); + result = (class_t *)NXMapGet(realizedClasses(), name); + } +#endif + + + // darn + return NULL; +} + + +/*********************************************************************** +* realizeAllClassesInImage +* Non-lazily realizes all unrealized classes in the given image. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void realizeAllClassesInImage(header_info *hi) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + size_t count, i; + class_t **classlist; + + if (hi->allClassesRealized) return; + + classlist = _getObjc2ClassList(hi, &count); + + for (i = 0; i < count; i++) { + realizeClass(remapClass(classlist[i])); + } + + hi->allClassesRealized = YES; +} + + +/*********************************************************************** +* realizeAllClasses +* Non-lazily realizes all unrealized classes in all known images. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void realizeAllClasses(void) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + header_info *hi; + for (hi = _objc_headerStart(); hi; hi = hi->next) { + realizeAllClassesInImage(hi); + } +} + + +/*********************************************************************** +* _objc_allocateFutureClass +* Allocate an unresolved future class for the given class name. +* Returns any existing allocation if one was already made. +* Assumes the named class doesn't exist yet. +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Class _objc_allocateFutureClass(const char *name) +{ + OBJC_LOCK(&runtimeLock); + + struct class_t *cls; + NXMapTable *future_class_map = futureClasses(); + + if ((cls = NXMapGet(future_class_map, name))) { + // Already have a future class for this name. + OBJC_UNLOCK(&runtimeLock); + return (Class)cls; + } + + cls = _calloc_internal(sizeof(*cls), 1); + addFutureClass(name, cls); + + OBJC_UNLOCK(&runtimeLock); + return (Class)cls; +} + + +/*********************************************************************** +* +**********************************************************************/ +void objc_setFutureClass(Class cls, const char *name) +{ + // fixme hack do nothing - NSCFString handled specially elsewhere +} + + +static BOOL addrInSeg(const void *addr_ptr, const segmentType *segment, + ptrdiff_t slide) +{ + uintptr_t base = segment->vmaddr + slide; + uintptr_t addr = (uintptr_t)addr_ptr; + size_t size = segment->filesize; + + return (addr >= base && addr < base + size); +} + +static BOOL ptrInImageList(header_info **hList, uint32_t hCount, + const void *ptr) +{ + uint32_t i; + + for (i = 0; i < hCount; i++) { + header_info *hi = hList[i]; + if (addrInSeg(ptr, hi->dataSegmentHeader, hi->image_slide)) { + return YES; + } + } + + return NO; +} + + +#define FOREACH_SUBCLASS(c, cls, code) \ +do { \ + OBJC_CHECK_LOCKED(&runtimeLock); \ + class_t *top = cls; \ + class_t *c = top; \ + if (c) while (1) { \ + code \ + if (c->data->firstSubclass) { \ + c = c->data->firstSubclass; \ + } else { \ + while (!c->data->nextSiblingClass && c != top) { \ + c = getSuperclass(c); \ + } \ + if (c == top) break; \ + c = c->data->nextSiblingClass; \ + } \ + } \ +} while (0) + + +/*********************************************************************** +* flushCaches +* Flushes caches for cls and its subclasses. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +static void flushCaches(class_t *cls) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + FOREACH_SUBCLASS(c, cls, { + flush_cache((Class)c); + }); +} + + +/*********************************************************************** +* flush_caches +* Flushes caches for cls, its subclasses, and optionally its metaclass. +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ void flush_caches(Class cls, BOOL flush_meta) +{ + OBJC_LOCK(&runtimeLock); + flushCaches(newcls(cls)); + if (flush_meta) flushCaches(newcls(cls)->isa); + OBJC_UNLOCK(&runtimeLock); +} + + +/*********************************************************************** +* _read_images +* Perform initial processing of the headers in the linked +* list beginning with headerList. +* +* Called by: map_images +* +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ void _read_images(header_info **hList, uint32_t hCount) +{ + header_info *hi; + uint32_t hIndex; + size_t count; + size_t i, j; + class_t **resolvedFutureClasses = NULL; + size_t resolvedFutureClassCount = 0; + +#define EACH_HEADER \ + hIndex = 0; \ + hIndex < hCount && (hi = hList[hIndex]); \ + hIndex++ + + OBJC_LOCK(&runtimeLock); + + // Complain about images that contain old-ABI data + // fixme new-ABI compiler still emits some bits into __OBJC segment + for (EACH_HEADER) { + size_t count; + if (_getObjcSelectorRefs(hi, &count) || + _getObjcModules(hi->mhdr, hi->image_slide, &count)) + { + _objc_inform("found old-ABI metadata in image %s !", + hi->dl_info.dli_fname); + } + } + + // fixme hack + static BOOL hackedNSCFString = NO; + if (!hackedNSCFString) { + // Insert future class __CFConstantStringClassReference == NSCFString + void *dlh = dlopen("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", RTLD_LAZY | RTLD_NOLOAD | RTLD_FIRST); + if (dlh) { + void *addr = dlsym(dlh, "__CFConstantStringClassReference"); + if (addr) { + addFutureClass("NSCFString", (class_t *)addr); + hackedNSCFString = YES; + } + dlclose(dlh); + } + } + + // Discover classes. Fix up unresolved future classes + NXMapTable *future_class_map = futureClasses(); + for (EACH_HEADER) { + class_t **classlist = _getObjc2ClassList(hi, &count); + for (i = 0; i < count; i++) { + const char *name = getName(classlist[i]); + if (NXCountMapTable(future_class_map) > 0) { + class_t *newCls = NXMapGet(future_class_map, name); + if (newCls) { + memcpy(newCls, classlist[i], sizeof(class_t)); + removeFutureClass(name); + addRemappedClass(classlist[i], newCls); + classlist[i] = newCls; + // Non-lazily realize the class below. + resolvedFutureClasses = (class_t **) + _realloc_internal(resolvedFutureClasses, + (resolvedFutureClassCount+1) + * sizeof(class_t *)); + resolvedFutureClasses[resolvedFutureClassCount++] = newCls; + } + } + addUnrealizedClass(classlist[i], name); + addUninitializedClass(classlist[i], classlist[i]->isa); + } + } + + // Fix up remapped classes + // classlist is up to date, but classrefs may not be + + if (!noClassesRemapped()) { + for (EACH_HEADER) { + class_t **classrefs = _getObjc2ClassRefs(hi, &count); + for (i = 0; i < count; i++) { + remapClassRef(&classrefs[i]); + } + // fixme why doesn't test future1 catch the absence of this? + classrefs = _getObjc2SuperRefs(hi, &count); + for (i = 0; i < count; i++) { + remapClassRef(&classrefs[i]); + } + } + } + + + // Fix up @selector references + sel_lock(); + for (EACH_HEADER) { + SEL *sels = _getObjc2SelectorRefs(hi, &count); + BOOL isBundle = hi->mhdr->filetype == MH_BUNDLE; + for (i = 0; i < count; i++) { + sels[i] = sel_registerNameNoLock((const char *)sels[i], isBundle); + } + } + sel_unlock(); + + // Discover protocols. Fix up protocol refs. + NXMapTable *protocol_map = protocols(); + for (EACH_HEADER) { + extern struct class_t OBJC_CLASS_$_Protocol; + Class cls = (Class)&OBJC_CLASS_$_Protocol; + assert(cls); + protocol_t **protocols = _getObjc2ProtocolList(hi, &count); + // fixme duplicate protocol from bundle + for (i = 0; i < count; i++) { + if (!NXMapGet(protocol_map, protocols[i]->name)) { + protocols[i]->isa = cls; + NXMapKeyCopyingInsert(protocol_map, + protocols[i]->name, protocols[i]); + if (PrintProtocols) { + _objc_inform("PROTOCOLS: protocol at %p is %s", + protocols[i], protocols[i]->name); + } + } else { + if (PrintProtocols) { + _objc_inform("PROTOCOLS: protocol at %p is %s (duplicate)", + protocols[i], protocols[i]->name); + } + } + } + } + for (EACH_HEADER) { + protocol_t **protocols; + protocols = _getObjc2ProtocolRefs(hi, &count); + for (i = 0; i < count; i++) { + remapProtocolRef(&protocols[i]); + } + + protocols = _getObjc2ProtocolList(hi, &count); + for (i = 0; i < count; i++) { + protocol_t *protocol = NXMapGet(protocol_map, protocols[i]->name); + assert(protocol); + if (protocol == protocols[i] && protocol->protocols) { + if (PrintProtocols) { + _objc_inform("PROTOCOLS: remapping superprotocols of %p %s", + protocol, protocol->name); + } + for (j = 0; j < protocol->protocols->count; j++) { + remapProtocolRef(&protocol->protocols->list[j]); + } + } + } + } + + // Discover categories. + for (EACH_HEADER) { + category_t **catlist = + _getObjc2CategoryList(hi, &count); + for (i = 0; i < count; i++) { + category_t *cat = catlist[i]; + // Do NOT use cat->cls! It may have been remapped. + class_t *cls = remapClass(cat->cls); + + // Process this category. + // First, register the category with its target class. + // Then, flush the class's cache (and its subclasses) if + // the class is methodized. The ptrInImageList() check + // can discover !methodized without touching the class's memory. + // GrP fixme class's memory is already touched. + BOOL classExists = NO; + if (cat->instanceMethods || cat->protocols + || cat->instanceProperties) + { + addUnattachedCategoryForClass(cat, cls); + if (!ptrInImageList(hList, hCount, cls) && + isMethodized(cls)) + { + flushCaches(cls); + classExists = YES; + } + if (PrintConnecting) { + _objc_inform("CLASS: found category -%s(%s) %s\n", + getName(cls), cat->name, + classExists ? "on existing class" : ""); + } + } + + if (cat->classMethods || cat->protocols + /* || cat->classProperties */) + { + addUnattachedCategoryForClass(cat, cls->isa); + if (!ptrInImageList(hList, hCount, cls->isa) && + isRealized(cls->isa)) + { + flushCaches(cls->isa); + } + if (PrintConnecting) { + _objc_inform("CLASS: found category +%s(%s)", + getName(cls), cat->name); + } + } + } + } + + + // Realize non-lazy classes (for +load methods and static instances) + + for (EACH_HEADER) { + class_t **classlist = + _getObjc2NonlazyClassList(hi, &count); + for (i = 0; i < count; i++) { + realizeClass(remapClass(classlist[i])); + } + } + + // Realize newly-resolved future classes, in case CF manipulates them + if (resolvedFutureClasses) { + for (i = 0; i < resolvedFutureClassCount; i++) { + realizeClass(resolvedFutureClasses[i]); + } + _free_internal(resolvedFutureClasses); + } + + // +load handled by prepare_load_methods() + + + OBJC_UNLOCK(&runtimeLock); + +#undef EACH_HEADER +} + + +/*********************************************************************** +* prepare_load_methods +* Schedule +load for classes in this image, any un-+load-ed +* superclasses in other images, and any categories in this image. +**********************************************************************/ +// Recursively schedule +load for cls and any un-+load-ed superclasses. +// cls must already be connected. +static void schedule_class_load(class_t *cls) +{ + assert(isRealized(cls)); // _read_images should realize + + if (cls->data->flags & RW_LOADED) return; + + class_t *supercls = getSuperclass(cls); + if (supercls) schedule_class_load(supercls); + + add_class_to_loadable_list((Class)cls); + changeInfo(cls, RW_LOADED, 0); +} + +__private_extern__ void prepare_load_methods(header_info *hi) +{ + size_t count, i; + + OBJC_LOCK(&runtimeLock); + + class_t **classlist = + _getObjc2NonlazyClassList(hi, &count); + for (i = 0; i < count; i++) { + class_t *cls = remapClass(classlist[i]); + schedule_class_load(cls); + } + + category_t **categorylist = _getObjc2NonlazyCategoryList(hi, &count); + for (i = 0; i < count; i++) { + category_t *cat = categorylist[i]; + // Do NOT use cat->cls! It may have been remapped. + class_t *cls = remapClass(cat->cls); + realizeClass(cls); + assert(isRealized(cls->isa)); + add_category_to_loadable_list((Category)cat); + } + + OBJC_UNLOCK(&runtimeLock); +} + + +/*********************************************************************** +* _unload_image +* Only handles MH_BUNDLE for now. +**********************************************************************/ +__private_extern__ void _unload_image(header_info *hi) +{ + size_t count, i; + + OBJC_LOCK(&runtimeLock); + + // Unload unattached categories and categories waiting for +load. + + category_t **catlist = _getObjc2CategoryList(hi, &count); + for (i = 0; i < count; i++) { + category_t *cat = catlist[i]; + class_t *cls = remapClass(cat->cls); + // fixme for MH_DYLIB cat's class may have been unloaded already + + // unattached list + removeUnattachedCategoryForClass(cat, cls); + + // +load queue + remove_category_from_loadable_list((Category)cat); + } + + // Unload classes. + + class_t **classlist = _getObjc2ClassList(hi, &count); + for (i = 0; i < count; i++) { + class_t *cls = classlist[i]; + const char *name = getName(cls); + // fixme remapped classes? + + // +load queue + remove_class_from_loadable_list((Class)cls); + + // categories not yet attached to this class + category_list *cats; + cats = unattachedCategoriesForClass(cls); + if (cats) free(cats); + cats = unattachedCategoriesForClass(cls); + if (cats) free(cats); + + // subclass lists + class_t *supercls; + if ((supercls = getSuperclass(cls))) { + removeSubclass(supercls, cls); + } + if ((supercls = getSuperclass(cls->isa))) { + removeSubclass(supercls, cls->isa); + } + + // class tables + NXMapRemove(unrealizedClasses(), name); + NXMapRemove(realizedClasses(), name); + NXMapRemove(uninitializedClasses(), cls->isa); + + // the class itself + if (isRealized(cls->isa)) unload_class(cls->isa); + if (isRealized(cls)) unload_class(cls); + } + + // Clean up protocols. +#warning fixme protocol unload + + // fixme DebugUnload + + OBJC_UNLOCK(&runtimeLock); +} + + +/*********************************************************************** +* method_getDescription +* Returns a pointer to this method's objc_method_description. +* Locking: none +**********************************************************************/ +struct objc_method_description * +method_getDescription(Method m) +{ + if (!m) return NULL; + return (struct objc_method_description *)newmethod(m); +} + + +/*********************************************************************** +* method_getImplementation +* Returns this method's IMP. +* Locking: none +**********************************************************************/ +IMP +method_getImplementation(Method m) +{ + if (!m) return NULL; + if (newmethod(m)->name == (SEL)kRTAddress_ignoredSelector) { + return (IMP)_objc_ignored_method; + } + return newmethod(m)->imp; +} + + +/*********************************************************************** +* method_getName +* Returns this method's selector. +* The method must not be NULL. +* The method must already have been fixed-up. +* Locking: none +**********************************************************************/ +SEL +method_getName(Method m_gen) +{ + struct method_t *m = newmethod(m_gen); + if (!m) return NULL; + assert((SEL)m->name == sel_registerName((char *)m->name)); + return (SEL)m->name; +} + + +/*********************************************************************** +* method_getTypeEncoding +* Returns this method's old-style type encoding string. +* The method must not be NULL. +* Locking: none +**********************************************************************/ +const char * +method_getTypeEncoding(Method m) +{ + if (!m) return NULL; + return newmethod(m)->types; +} + + +/*********************************************************************** +* method_setImplementation +* Sets this method's implementation to imp. +* The previous implementation is returned. +**********************************************************************/ +IMP +method_setImplementation(Method m, IMP imp) +{ + static OBJC_DECLARE_LOCK(impLock); + IMP old; + + OBJC_LOCK(&impLock); + old = method_getImplementation(m); + newmethod(m)->imp = imp; + OBJC_UNLOCK(&impLock); + + // No cache flushing needed. + // fixme update vtables if necessary + // fixme update monomorphism if necessary + return old; +} + + +/*********************************************************************** +* _class_realize +* Realizes the given class. +* Called by _class_lookupMethodAndLoadCache only. +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ void +_class_realize(struct class_t *cls) +{ + OBJC_LOCK(&runtimeLock); + realizeClass(cls); + OBJC_UNLOCK(&runtimeLock); +} + + + +/*********************************************************************** +* ivar_getOffset +* fixme +* Locking: none +**********************************************************************/ +ptrdiff_t +ivar_getOffset(Ivar ivar) +{ + if (!ivar) return 0; + return *newivar(ivar)->offset; +} + + +/*********************************************************************** +* ivar_getName +* fixme +* Locking: none +**********************************************************************/ +const char * +ivar_getName(Ivar ivar) +{ + if (!ivar) return NULL; + return newivar(ivar)->name; +} + + +/*********************************************************************** +* ivar_getTypeEncoding +* fixme +* Locking: none +**********************************************************************/ +const char * +ivar_getTypeEncoding(Ivar ivar) +{ + if (!ivar) return NULL; + return newivar(ivar)->type; +} + + +/*********************************************************************** +* _protocol_getMethod_nolock +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static Method +_protocol_getMethod_nolock(protocol_t *proto, SEL sel, + BOOL isRequiredMethod, BOOL isInstanceMethod) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + uint32_t i; + if (!proto || !sel) return NULL; + + method_list_t *mlist = NULL; + + if (isRequiredMethod) { + if (isInstanceMethod) { + mlist = proto->instanceMethods; + } else { + mlist = proto->classMethods; + } + } else { + if (isInstanceMethod) { + mlist = proto->optionalInstanceMethods; + } else { + mlist = proto->optionalClassMethods; + } + } + + if (mlist) { + for (i = 0; i < mlist->count; i++) { + method_t *m = method_list_nth(mlist, i); + if (sel != m->name) { + m->name = sel_registerName((char *)m->name); + } + if (sel == m->name) { + return (Method)m; + } + } + } + + if (proto->protocols) { + Method m; + for (i = 0; i < proto->protocols->count; i++) { + protocol_t *realProto = remapProtocol(proto->protocols->list[i]); + m = _protocol_getMethod_nolock(realProto, sel, + isRequiredMethod, isInstanceMethod); + if (m) return m; + } + } + + return NULL; +} + + +/*********************************************************************** +* _protocol_getMethod +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Method +_protocol_getMethod(Protocol *p, SEL sel, BOOL isRequiredMethod, BOOL isInstanceMethod) +{ + OBJC_LOCK(&runtimeLock); + Method result = _protocol_getMethod_nolock(newprotocol(p), sel, + isRequiredMethod, + isInstanceMethod); + OBJC_UNLOCK(&runtimeLock); + return result; +} + + +/*********************************************************************** +* protocol_getName +* Returns the name of the given protocol. +* Locking: runtimeLock must not be held by the caller +**********************************************************************/ +const char * +protocol_getName(Protocol *proto) +{ + return newprotocol(proto)->name; +} + + +/*********************************************************************** +* protocol_getInstanceMethodDescription +* Returns the description of a named instance method. +* Locking: runtimeLock must not be held by the caller +**********************************************************************/ +struct objc_method_description +protocol_getMethodDescription(Protocol *p, SEL aSel, + BOOL isRequiredMethod, BOOL isInstanceMethod) +{ + Method m = + _protocol_getMethod(p, aSel, isRequiredMethod, isInstanceMethod); + if (m) return *method_getDescription(m); + else return (struct objc_method_description){NULL, NULL}; +} + + +/*********************************************************************** +* protocol_conformsToProtocol +* Returns YES if self conforms to other. +* Locking: runtimeLock must not be held by the caller +**********************************************************************/ +BOOL protocol_conformsToProtocol(Protocol *self_gen, Protocol *other_gen) +{ + protocol_t *self = newprotocol(self_gen); + protocol_t *other = newprotocol(other_gen); + + if (!self || !other) { + return NO; + } + + if (0 == strcmp(self->name, other->name)) { + return YES; + } + + if (self->protocols) { + int i; + for (i = 0; i < self->protocols->count; i++) { + protocol_t *proto = self->protocols->list[i]; + if (0 == strcmp(other->name, proto->name)) { + return YES; + } + if (protocol_conformsToProtocol((Protocol *)proto, other_gen)) { + return YES; + } + } + } + + return NO; +} + + +/*********************************************************************** +* protocol_isEqual +* Return YES if two protocols are equal (i.e. conform to each other) +* Locking: acquires runtimeLock +**********************************************************************/ +BOOL protocol_isEqual(Protocol *self, Protocol *other) +{ + if (self == other) return YES; + if (!self || !other) return NO; + + if (!protocol_conformsToProtocol(self, other)) return NO; + if (!protocol_conformsToProtocol(other, self)) return NO; + + return YES; +} + + +/*********************************************************************** +* protocol_copyMethodDescriptionList +* Returns descriptions of a protocol's methods. +* Locking: acquires runtimeLock +**********************************************************************/ +struct objc_method_description * +protocol_copyMethodDescriptionList(Protocol *p, + BOOL isRequiredMethod,BOOL isInstanceMethod, + unsigned int *outCount) +{ + struct protocol_t *proto = newprotocol(p); + struct objc_method_description *result = NULL; + unsigned int count = 0; + + if (!proto) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + method_list_t *mlist = NULL; + + if (isRequiredMethod) { + if (isInstanceMethod) { + mlist = proto->instanceMethods; + } else { + mlist = proto->classMethods; + } + } else { + if (isInstanceMethod) { + mlist = proto->optionalInstanceMethods; + } else { + mlist = proto->optionalClassMethods; + } + } + + if (mlist) { + unsigned int i; + count = mlist->count; + result = calloc(count + 1, sizeof(struct objc_method_description)); + for (i = 0; i < count; i++) { + method_t *m = method_list_nth(mlist, i); + result[i].name = sel_registerName((const char *)m->name); + result[i].types = (char *)m->types; + } + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* protocol_getProperty +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +static Property +_protocol_getProperty_nolock(protocol_t *proto, const char *name, + BOOL isRequiredProperty, BOOL isInstanceProperty) +{ + if (!isRequiredProperty || !isInstanceProperty) { + // Only required instance properties are currently supported + return NULL; + } + + struct objc_property_list *plist; + if ((plist = proto->instanceProperties)) { + uint32_t i; + for (i = 0; i < plist->count; i++) { + Property prop = property_list_nth(plist, i); + if (0 == strcmp(name, prop->name)) { + return prop; + } + } + } + + if (proto->protocols) { + uintptr_t i; + for (i = 0; i < proto->protocols->count; i++) { + Property prop = + _protocol_getProperty_nolock(proto->protocols->list[i], name, + isRequiredProperty, + isInstanceProperty); + if (prop) return prop; + } + } + + return NULL; +} + +Property protocol_getProperty(Protocol *p, const char *name, + BOOL isRequiredProperty, BOOL isInstanceProperty) +{ + Property result; + + if (!p || !name) return NULL; + + OBJC_LOCK(&runtimeLock); + result = _protocol_getProperty_nolock(newprotocol(p), name, + isRequiredProperty, + isInstanceProperty); + OBJC_UNLOCK(&runtimeLock); + + return result; +} + + +/*********************************************************************** +* protocol_copyPropertyList +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Property *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount) +{ + Property *result = NULL; + + if (!proto) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + struct objc_property_list *plist = newprotocol(proto)->instanceProperties; + result = copyPropertyList(plist, outCount); + + OBJC_UNLOCK(&runtimeLock); + + return result; +} + + +/*********************************************************************** +* protocol_copyProtocolList +* Copies this protocol's incorporated protocols. +* Does not copy those protocol's incorporated protocols in turn. +* Locking: acquires runtimeLock +**********************************************************************/ +Protocol **protocol_copyProtocolList(Protocol *p, unsigned int *outCount) +{ + unsigned int count = 0; + Protocol **result = NULL; + protocol_t *proto = newprotocol(p); + + if (!proto) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + if (proto->protocols) { + count = (unsigned int)proto->protocols->count; + } + if (count > 0) { + result = malloc((count+1) * sizeof(Protocol *)); + + unsigned int i; + for (i = 0; i < count; i++) { + result[i] = (Protocol *)remapProtocol(proto->protocols->list[i]); + } + result[i] = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* objc_getClassList +* Returns pointers to all classes. +* This requires all classes be realized, which is regretfully non-lazy. +* Locking: acquires runtimeLock +**********************************************************************/ +int +objc_getClassList(Class *buffer, int bufferLen) +{ + OBJC_LOCK(&runtimeLock); + + int count; + Class cls; + const char *name; + NXMapState state; + NXMapTable *classes = realizedClasses(); + NXMapTable *unrealized = unrealizedClasses(); + + if (!buffer) { + count = NXCountMapTable(classes) + NXCountMapTable(unrealized); + OBJC_UNLOCK(&runtimeLock); + return count; + } + + if (bufferLen > NXCountMapTable(classes) && + NXCountMapTable(unrealized) != 0) + { + // bummer + realizeAllClasses(); + } + + count = 0; + state = NXInitMapState(classes); + while (count < bufferLen && + NXNextMapState(classes, &state, + (const void **)&name, (const void **)&cls)) + { + buffer[count++] = (Class)cls; + } + + OBJC_UNLOCK(&runtimeLock); + + return count; +} + + +/*********************************************************************** +* objc_copyProtocolList +* Returns pointers to all protocols. +* Locking: acquires runtimeLock +**********************************************************************/ +Protocol ** +objc_copyProtocolList(unsigned int *outCount) +{ + OBJC_LOCK(&runtimeLock); + + int count, i; + Protocol *proto; + const char *name; + NXMapState state; + NXMapTable *protocol_map = protocols(); + Protocol **result; + + count = NXCountMapTable(protocol_map); + if (count == 0) { + OBJC_UNLOCK(&runtimeLock); + if (outCount) *outCount = 0; + return NULL; + } + + result = calloc(1 + count, sizeof(Protocol *)); + + i = 0; + state = NXInitMapState(protocol_map); + while (NXNextMapState(protocol_map, &state, + (const void **)&name, (const void **)&proto)) + { + result[i++] = proto; + } + + result[i++] = NULL; + assert(i == count+1); + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* objc_getProtocol +* Get a protocol by name, or return NULL +* Locking: acquires runtimeLock +**********************************************************************/ +Protocol *objc_getProtocol(const char *name) +{ + OBJC_LOCK(&runtimeLock); + Protocol *result = (Protocol *)NXMapGet(protocols(), name); + OBJC_UNLOCK(&runtimeLock); + return result; +} + + +/*********************************************************************** +* class_copyMethodList +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Method * +class_copyMethodList(Class cls_gen, unsigned int *outCount) +{ + struct class_t *cls = newcls(cls_gen); + chained_method_list *mlist; + unsigned int count = 0; + Method *result = NULL; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + methodizeClass(cls); + + for (mlist = cls->data->methods; mlist; mlist = mlist->next) { + count += mlist->count; + } + + if (count > 0) { + unsigned int m; + result = malloc((count + 1) * sizeof(Method)); + + m = 0; + for (mlist = cls->data->methods; mlist; mlist = mlist->next) { + unsigned int i; + for (i = 0; i < mlist->count; i++) { + result[m++] = (Method)&mlist->list[i]; + } + } + result[m] = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* class_copyIvarList +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Ivar * +class_copyIvarList(Class cls_gen, unsigned int *outCount) +{ + struct class_t *cls = newcls(cls_gen); + const ivar_list_t *ivars; + Ivar *result = NULL; + unsigned int count = 0; + unsigned int i; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + if ((ivars = cls->data->ro->ivars) && (count = ivars->count)) { + result = malloc((count+1) * sizeof(Ivar)); + + for (i = 0; i < ivars->count; i++) { + result[i] = (Ivar)ivar_list_nth(ivars, i); + } + result[i] = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* class_copyPropertyList. Returns a heap block containing the +* properties declared in the class, or NULL if the class +* declares no properties. Caller must free the block. +* Does not copy any superclass's properties. +* Locking: acquires runtimeLock +**********************************************************************/ +Property * +class_copyPropertyList(Class cls_gen, unsigned int *outCount) +{ + struct class_t *cls = newcls(cls_gen); + chained_property_list *plist; + unsigned int count = 0; + Property *result = NULL; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + // Attach any categories because they may provide more properties + methodizeClass(cls); + + for (plist = cls->data->properties; plist; plist = plist->next) { + count += plist->count; + } + + if (count > 0) { + unsigned int p; + result = malloc((count + 1) * sizeof(Property)); + + p = 0; + for (plist = cls->data->properties; plist; plist = plist->next) { + unsigned int i; + for (i = 0; i < plist->count; i++) { + result[p++] = (Property)&plist->list[i]; + } + } + result[p] = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* _class_getLoadMethod +* fixme +* Called only from add_class_to_loadable_list. +* Locking: runtimeLock must be held by the caller. +**********************************************************************/ +__private_extern__ IMP +_class_getLoadMethod(Class cls_gen) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + struct class_t *cls = newcls(cls_gen); + const method_list_t *mlist; + int i; + + assert(isRealized(cls)); + assert(isRealized(cls->isa)); + assert(!isMethodized(cls)); + assert(!isMethodized(cls->isa)); + assert(!isMetaClass(cls)); + assert(isMetaClass(cls->isa)); + + mlist = cls->isa->data->ro->baseMethods; + if (mlist) for (i = 0; i < mlist->count; i++) { + method_t *m = method_list_nth(mlist, i); + if (0 == strcmp((const char *)m->name, "load")) { + return m->imp; + } + } + + return NULL; +} + + +/*********************************************************************** +* _category_getName +* Returns a category's name. +* Locking: none +**********************************************************************/ +__private_extern__ const char * +_category_getName(Category cat) +{ + return newcategory(cat)->name; +} + + +/*********************************************************************** +* _category_getClassName +* Returns a category's class's name +* Called only from add_category_to_loadable_list and +* remove_category_from_loadable_list. +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +__private_extern__ const char * +_category_getClassName(Category cat) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + // cat->cls may have been remapped + return getName(remapClass(newcategory(cat)->cls)); +} + + +/*********************************************************************** +* _category_getClass +* Returns a category's class +* Called only by call_category_loads. +* Locking: none +**********************************************************************/ +__private_extern__ Class +_category_getClass(Category cat) +{ + // cat->cls may have been remapped + struct class_t *result = remapClass(newcategory(cat)->cls); + assert(isRealized(result)); // ok for call_category_loads' usage + return (Class)result; +} + + +/*********************************************************************** +* _category_getLoadMethod +* fixme +* Called only from add_category_to_loadable_list +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +__private_extern__ IMP +_category_getLoadMethod(Category cat) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + const method_list_t *mlist; + int i; + + mlist = newcategory(cat)->classMethods; + if (mlist) for (i = 0; i < mlist->count; i++) { + method_t *m = method_list_nth(mlist, i); + if (0 == strcmp((const char *)m->name, "load")) { + return m->imp; + } + } + + return NULL; +} + + +/*********************************************************************** +* class_copyProtocolList +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Protocol ** +class_copyProtocolList(Class cls_gen, unsigned int *outCount) +{ + struct class_t *cls = newcls(cls_gen); + Protocol **r; + struct protocol_list_t **p; + unsigned int count = 0; + unsigned int i; + Protocol **result = NULL; + + if (!cls) { + if (outCount) *outCount = 0; + return NULL; + } + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + // Attach any categories because they may provide more protocols + methodizeClass(cls); + + for (p = cls->data->protocols; p && *p; p++) { + count += (uint32_t)(*p)->count; + } + + if (count) { + result = malloc((count+1) * sizeof(Protocol *)); + r = result; + for (p = cls->data->protocols; p && *p; p++) { + for (i = 0; i < (*p)->count; i++) { + *r++ = (Protocol *)remapProtocol((*p)->list[i]); + } + } + *r++ = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* _objc_copyClassNamesForImage +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ const char ** +_objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount) +{ + size_t count, i; + class_t **classlist; + const char **names; + + OBJC_LOCK(&runtimeLock); + + classlist = _getObjc2ClassList(hi, &count); + names = malloc((count+1) * sizeof(const char *)); + + for (i = 0; i < count; i++) { + names[i] = getName(classlist[i]); + } + names[count] = NULL; + + OBJC_UNLOCK(&runtimeLock); + + if (outCount) *outCount = (unsigned int)count; + return names; +} + + +/*********************************************************************** +* _class_getCache +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ Cache +_class_getCache(Class cls) +{ + return newcls(cls)->cache; +} + + +/*********************************************************************** +* _class_getInstanceSize +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ size_t +_class_getInstanceSize(Class cls) +{ + if (!cls) return 0; + return instanceSize(newcls(cls)); +} + +static uint32_t +instanceSize(struct class_t *cls) +{ + assert(cls); + assert(isRealized(cls)); + // fixme rdar://5244378 + return (uint32_t)((cls->data->ro->instanceSize + 7) & ~7UL); +} + + +/*********************************************************************** +* class_getVersion +* fixme +* Locking: none +**********************************************************************/ +int +class_getVersion(Class cls) +{ + if (!cls) return 0; + assert(isRealized(newcls(cls))); + return newcls(cls)->data->version; +} + + +/*********************************************************************** +* _class_setCache +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ void +_class_setCache(Class cls, Cache cache) +{ + newcls(cls)->cache = cache; +} + + +/*********************************************************************** +* class_setVersion +* fixme +* Locking: none +**********************************************************************/ +void +class_setVersion(Class cls, int version) +{ + if (!cls) return; + assert(isRealized(newcls(cls))); + newcls(cls)->data->version = version; +} + + +/*********************************************************************** +* _class_getName +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ const char *_class_getName(Class cls) +{ + if (!cls) return "nil"; + // fixme hack OBJC_LOCK(&runtimeLock); + const char *name = getName(newcls(cls)); + // OBJC_UNLOCK(&runtimeLock); + return name; +} + + +/*********************************************************************** +* getName +* fixme +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static const char * +getName(struct class_t *cls) +{ + // fixme hack OBJC_CHECK_LOCKED(&runtimeLock); + assert(cls); + + if (isRealized(cls)) { + return cls->data->ro->name; + } else { + return ((const struct class_ro_t *)cls->data)->name; + } +} + + +/*********************************************************************** +* _class_getMethodNoSuper_nolock +* fixme +* Locking: runtimeLock must be held by the caller +**********************************************************************/ +static Method +_class_getMethodNoSuper_nolock(struct class_t *cls, SEL sel) +{ + OBJC_CHECK_LOCKED(&runtimeLock); + + chained_method_list *mlist; + uint32_t i; + + assert(isRealized(cls)); + // fixme nil cls? + // fixme NULL sel? + + methodizeClass(cls); + + for (mlist = cls->data->methods; mlist; mlist = mlist->next) { + for (i = 0; i < mlist->count; i++) { + method_t *m = &mlist->list[i]; + if (m->name == sel) return (Method)m; + } + } + + return NULL; +} + + +/*********************************************************************** +* _class_getMethodNoSuper +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Method +_class_getMethodNoSuper(Class cls, SEL sel) +{ + OBJC_LOCK(&runtimeLock); + Method result = _class_getMethodNoSuper_nolock(newcls(cls), sel); + OBJC_UNLOCK(&runtimeLock); + return result; +} + + +/*********************************************************************** +* _class_getMethod +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Method _class_getMethod(Class cls, SEL sel) +{ + Method m = NULL; + + // fixme nil cls? + // fixme NULL sel? + + assert(isRealized(newcls(cls))); + + while (cls && ((m = _class_getMethodNoSuper(cls, sel))) == NULL) { + cls = class_getSuperclass(cls); + } + + return m; +} + + +/*********************************************************************** +* class_getProperty +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Property class_getProperty(Class cls_gen, const char *name) +{ + Property result = NULL; + chained_property_list *plist; + struct class_t *cls = newcls(cls_gen); + + if (!cls || !name) return NULL; + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + methodizeClass(cls); + + for ( ; cls; cls = getSuperclass(cls)) { + for (plist = cls->data->properties; plist; plist = plist->next) { + uint32_t i; + for (i = 0; i < plist->count; i++) { + if (0 == strcmp(name, plist->list[i].name)) { + result = &plist->list[i]; + goto done; + } + } + } + } + + done: + OBJC_UNLOCK(&runtimeLock); + + return result; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL _class_isMetaClass(Class cls) +{ + if (!cls) return NO; + return isMetaClass(newcls(cls)); +} + +static BOOL +isMetaClass(struct class_t *cls) +{ + assert(cls); + assert(isRealized(cls)); + return (cls->data->ro->flags & RO_META) ? YES : NO; +} + + +__private_extern__ Class _class_getMeta(Class cls) +{ + assert(cls); + if (isMetaClass(newcls(cls))) return cls; + else return ((id)cls)->isa; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL +_class_isInitializing(Class cls_gen) +{ + struct class_t *cls = newcls(_class_getMeta(cls_gen)); + return (cls->data->flags & RW_INITIALIZING) ? YES : NO; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL +_class_isInitialized(Class cls_gen) +{ + struct class_t *cls = newcls(_class_getMeta(cls_gen)); + return (cls->data->flags & RW_INITIALIZED) ? YES : NO; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ void +_class_setInitializing(Class cls_gen) +{ + struct class_t *cls = newcls(_class_getMeta(cls_gen)); + changeInfo(cls, RW_INITIALIZING, 0); +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ void +_class_setInitialized(Class cls_gen) +{ + struct class_t *cls = newcls(_class_getMeta(cls_gen)); + changeInfo(cls, RW_INITIALIZED, RW_INITIALIZING); +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL +_class_shouldGrowCache(Class cls) +{ + return YES; // fixme good or bad for memory use? +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ void +_class_setGrowCache(Class cls, BOOL grow) +{ + // fixme good or bad for memory use? +} + + +/*********************************************************************** +* _class_isLoadable +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ BOOL +_class_isLoadable(Class cls) +{ + assert(isRealized(newcls(cls))); + return YES; // any class registered for +load is definitely loadable +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL +_class_hasCxxStructorsNoSuper(Class cls) +{ + assert(isRealized(newcls(cls))); + return (newcls(cls)->data->ro->flags & RO_HAS_CXX_STRUCTORS) ? YES : NO; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ BOOL +_class_shouldFinalizeOnMainThread(Class cls) +{ + assert(isRealized(newcls(cls))); + return (newcls(cls)->data->flags & RW_FINALIZE_ON_MAIN_THREAD) ? YES : NO; +} + + +/*********************************************************************** +* Locking: fixme +**********************************************************************/ +__private_extern__ void +_class_setFinalizeOnMainThread(Class cls) +{ + assert(isRealized(newcls(cls))); + changeInfo(newcls(cls), RW_FINALIZE_ON_MAIN_THREAD, 0); +} + + +/*********************************************************************** +* Locking: none +* fixme assert realized to get superclass remapping? +**********************************************************************/ +__private_extern__ Class +_class_getSuperclass(Class cls) +{ + return (Class)getSuperclass(newcls(cls)); +} + +static struct class_t * +getSuperclass(struct class_t *cls) +{ + if (!cls) return NULL; + return cls->superclass; +} + + +/*********************************************************************** +* class_getIvarLayout +* Called by the garbage collector. +* The class must be NULL or already realized. +* Locking: none +**********************************************************************/ +const char * +class_getIvarLayout(Class cls_gen) +{ + class_t *cls = newcls(cls_gen); + if (cls) return (const char *)cls->data->ro->ivarLayout; + else return NULL; +} + + +/*********************************************************************** +* class_getWeakIvarLayout +* Called by the garbage collector. +* The class must be NULL or already realized. +* Locking: none +**********************************************************************/ +const char * +class_getWeakIvarLayout(Class cls_gen) +{ + class_t *cls = newcls(cls_gen); + if (cls) return (const char *)cls->data->ro->weakIvarLayout; + else return NULL; +} + + +/*********************************************************************** +* class_setIvarLayout +* Changes the class's GC scan layout. +* NULL layout means no unscanned ivars +* The class must be under construction. +* fixme: sanity-check layout vs instance size? +* fixme: sanity-check layout vs superclass? +* Locking: acquires runtimeLock +**********************************************************************/ +void +class_setIvarLayout(Class cls_gen, const char *layout) +{ + class_t *cls = newcls(cls_gen); + if (!cls) return; + + OBJC_LOCK(&runtimeLock); + + // Can only change layout of in-construction classes. + // note: if modifications to post-construction classes were + // allowed, there would be a race below (us vs. concurrent GC scan) + if (!(cls->data->flags & RW_CONSTRUCTING)) { + _objc_inform("*** Can't set ivar layout for already-registered " + "class '%s'", getName(cls)); + OBJC_UNLOCK(&runtimeLock); + return; + } + + class_ro_t *ro_w = make_ro_writeable(cls->data); + + try_free(ro_w->ivarLayout); + ro_w->ivarLayout = (unsigned char *)_strdup_internal(layout); + + OBJC_UNLOCK(&runtimeLock); +} + + +/*********************************************************************** +* class_setWeakIvarLayout +* Changes the class's GC weak layout. +* NULL layout means no weak ivars +* The class must be under construction. +* fixme: sanity-check layout vs instance size? +* fixme: sanity-check layout vs superclass? +* Locking: acquires runtimeLock +**********************************************************************/ +void +class_setWeakIvarLayout(Class cls_gen, const char *layout) +{ + class_t *cls = newcls(cls_gen); + if (!cls) return; + + OBJC_LOCK(&runtimeLock); + + // Can only change layout of in-construction classes. + // note: if modifications to post-construction classes were + // allowed, there would be a race below (us vs. concurrent GC scan) + if (!(cls->data->flags & RW_CONSTRUCTING)) { + _objc_inform("*** Can't set weak ivar layout for already-registered " + "class '%s'", getName(cls)); + OBJC_UNLOCK(&runtimeLock); + return; + } + + class_ro_t *ro_w = make_ro_writeable(cls->data); + + try_free(ro_w->weakIvarLayout); + ro_w->weakIvarLayout = (unsigned char *)_strdup_internal(layout); + + OBJC_UNLOCK(&runtimeLock); +} + + +/*********************************************************************** +* _class_getVariable +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ Ivar +_class_getVariable(Class cls, const char *name) +{ + OBJC_LOCK(&runtimeLock); + + for ( ; cls != Nil; cls = class_getSuperclass(cls)) { + struct ivar_t *ivar = getIvar(newcls(cls), name); + if (ivar) { + OBJC_UNLOCK(&runtimeLock); + return (Ivar)ivar; + } + } + + OBJC_UNLOCK(&runtimeLock); + + return NULL; +} + + +/*********************************************************************** +* class_conformsToProtocol +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +BOOL class_conformsToProtocol(Class cls_gen, Protocol *proto) +{ + Protocol **protocols; + unsigned int count, i; + BOOL result = NO; + + // fixme null cls? + + protocols = class_copyProtocolList(cls_gen, &count); + + for (i = 0; i < count; i++) { + if (protocols[i] == proto || + protocol_conformsToProtocol(protocols[i], proto)) + { + result = YES; + break; + } + } + + if (protocols) free(protocols); + + return result; +} + + +/*********************************************************************** +* class_addMethod +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +static IMP +_class_addMethod(Class cls_gen, SEL name, IMP imp, + const char *types, BOOL replace) +{ + struct class_t *cls = newcls(cls_gen); + IMP result = NULL; + + if (!types) types = ""; + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + // methodizeClass(cls); _class_getMethodNoSuper() does this below + + Method m; + if ((m = _class_getMethodNoSuper_nolock(cls, name))) { + // already exists + // fixme atomic + result = method_getImplementation(m); + if (replace) { + method_setImplementation(m, imp); + } + } else { + // fixme optimize + chained_method_list *newlist; + newlist = _calloc_internal(sizeof(*newlist) + sizeof(method_t), 1); + newlist->count = 1; + newlist->list[0].name = name; + newlist->list[0].types = strdup(types); + newlist->list[0].imp = imp; + + newlist->next = cls->data->methods; + cls->data->methods = newlist; + flushCaches(cls); + result = NULL; + } + + OBJC_UNLOCK(&runtimeLock); + + return result; +} + + +BOOL +class_addMethod(Class cls, SEL name, IMP imp, const char *types) +{ + if (!cls) return NO; + + IMP old = _class_addMethod(cls, name, imp, types, NO); + return old ? NO : YES; +} + + +IMP +class_replaceMethod(Class cls, SEL name, IMP imp, const char *types) +{ + if (!cls) return NULL; + + return _class_addMethod(cls, name, imp, types, YES); +} + + +/*********************************************************************** +* class_addIvar +* Adds an ivar to a class. +* Locking: acquires runtimeLock +**********************************************************************/ +BOOL +class_addIvar(Class cls_gen, const char *name, size_t size, + uint8_t alignment, const char *type) +{ + struct class_t *cls = newcls(cls_gen); + + if (!cls) return NO; + + if (!type) type = ""; + if (name && 0 == strcmp(name, "")) name = NULL; + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + // No class variables + if (isMetaClass(cls)) { + OBJC_UNLOCK(&runtimeLock); + return NO; + } + + // Can only add ivars to in-construction classes. + if (!(cls->data->flags & RW_CONSTRUCTING)) { + OBJC_UNLOCK(&runtimeLock); + return NO; + } + + // Check for existing ivar with this name, unless it's anonymous. + // Check for too-big ivar. + // fixme check for superclass ivar too? + if ((name && getIvar(cls, name)) || size > UINT32_MAX) { + OBJC_UNLOCK(&runtimeLock); + return NO; + } + + class_ro_t *ro_w = make_ro_writeable(cls->data); + + // fixme allocate less memory here + + ivar_list_t *oldlist, *newlist; + if ((oldlist = (ivar_list_t *)cls->data->ro->ivars)) { + size_t oldsize = ivar_list_size(oldlist); + newlist = _calloc_internal(oldsize + oldlist->entsize, 1); + memcpy(newlist, oldlist, oldsize); + _free_internal(oldlist); + } else { + newlist = _calloc_internal(sizeof(ivar_list_t), 1); + newlist->entsize = (uint32_t)sizeof(ivar_t); + } + + uint32_t offset = instanceSize(cls); + uint32_t alignMask = (1<count++); + ivar->offset = _malloc_internal(sizeof(*ivar->offset)); + *ivar->offset = offset; + ivar->name = name ? _strdup_internal(name) : NULL; + ivar->type = _strdup_internal(type); + ivar->alignment = alignment; + ivar->size = (uint32_t)size; + + ro_w->ivars = newlist; + ro_w->instanceSize = (uint32_t)(offset + size); + + // Ivar layout updated in registerClass. + + OBJC_UNLOCK(&runtimeLock); + + return YES; +} + + +/*********************************************************************** +* class_addProtocol +* Adds a protocol to a class. +* Locking: acquires runtimeLock +**********************************************************************/ +BOOL class_addProtocol(Class cls_gen, Protocol *protocol_gen) +{ + class_t *cls = newcls(cls_gen); + protocol_t *protocol = newprotocol(protocol_gen); + protocol_list_t *plist; + protocol_list_t **plistp; + + if (!cls) return NO; + if (class_conformsToProtocol(cls_gen, protocol_gen)) return NO; + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(cls)); + + // fixme optimize + plist = _malloc_internal(sizeof(protocol_list_t) + sizeof(protocol_t *)); + plist->count = 1; + plist->list[0] = protocol; + + unsigned int count = 0; + for (plistp = cls->data->protocols; plistp && *plistp; plistp++) { + count++; + } + + cls->data->protocols = + _realloc_internal(cls->data->protocols, + (count+2) * sizeof(protocol_list_t *)); + cls->data->protocols[count] = plist; + cls->data->protocols[count+1] = NULL; + + // fixme metaclass? + + OBJC_UNLOCK(&runtimeLock); + + return YES; +} + + +/*********************************************************************** +* look_up_class +* Look up a class by name, and realize it. +* Locking: acquires runtimeLock +* GrP fixme zerolink needs class handler for objc_getClass +**********************************************************************/ +__private_extern__ id +look_up_class(const char *name, + BOOL includeUnconnected __attribute__((unused)), + BOOL includeClassHandler __attribute__((unused))) +{ + if (!name) return nil; + + OBJC_LOCK(&runtimeLock); + id result = (id)getClass(name); + realizeClass(result); + OBJC_UNLOCK(&runtimeLock); + return result; +} + + +/*********************************************************************** +* objc_duplicateClass +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Class +objc_duplicateClass(Class original_gen, const char *name, + size_t extraBytes) +{ + struct class_t *original = newcls(original_gen); + chained_method_list **m; + struct class_t *duplicate; + + OBJC_LOCK(&runtimeLock); + + assert(isRealized(original)); + methodizeClass(original); + assert(!isMetaClass(original)); + + duplicate = (struct class_t *) + calloc(instanceSize(original->isa) + extraBytes, 1); + if (instanceSize(original->isa) < sizeof(class_t)) { + _objc_inform("busted! %s\n", original->data->ro->name); + } + + + duplicate->isa = original->isa; + duplicate->superclass = original->superclass; + duplicate->cache = (Cache)&_objc_empty_cache; +#warning GrP fixme vtable + // duplicate->vtable = (IMP *)&_objc_empty_vtable; + + duplicate->data = _calloc_internal(sizeof(*original->data), 1); + duplicate->data->flags = original->data->flags | RW_COPIED_RO; + duplicate->data->version = original->data->version; + duplicate->data->firstSubclass = NULL; + duplicate->data->nextSiblingClass = NULL; + + duplicate->data->ro = + _memdup_internal(original->data->ro, sizeof(*original->data->ro)); + *(char **)&duplicate->data->ro->name = _strdup_internal(name); + + duplicate->data->methods = original->data->methods; + for (m = &duplicate->data->methods; *m != NULL; m = &(*m)->next) { + *m = _memdup_internal(*m, chained_mlist_size(*m)); + } + + // fixme dies when categories are added to the base + duplicate->data->properties = original->data->properties; + duplicate->data->protocols = original->data->protocols; + + if (duplicate->superclass) { + addSubclass(duplicate->superclass, duplicate); + } + + addRealizedClass(duplicate, duplicate->data->ro->name); + + if (PrintConnecting) { + _objc_inform("CLASS: realizing class '%s' (duplicate of %s) %p %p", + name, original->data->ro->name, + duplicate, duplicate->data->ro); + } + + OBJC_UNLOCK(&runtimeLock); + + return (Class)duplicate; +} + + +/*********************************************************************** +* objc_allocateClassPair +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +Class objc_allocateClassPair(Class superclass_gen, const char *name, + size_t extraBytes) +{ + class_t *superclass = newcls(superclass_gen); + class_t *cls, *meta; + class_ro_t *cls_ro_w, *meta_ro_w; + + OBJC_LOCK(&runtimeLock); + + if (getClass(name)) { + OBJC_UNLOCK(&runtimeLock); + return NO; + } + // fixme reserve class against simmultaneous allocation + + if (superclass) assert(isRealized(superclass)); + + if (superclass && superclass->data->flags & RW_CONSTRUCTING) { + // Can't make subclass of an in-construction class + OBJC_UNLOCK(&runtimeLock); + return NO; + } + + // Allocate new classes. + if (superclass) { + cls = _calloc_internal(instanceSize(superclass->isa) + extraBytes, 1); + meta = _calloc_internal(instanceSize(superclass->isa->isa) + extraBytes, 1); + } else { + cls = _calloc_internal(sizeof(class_t) + extraBytes, 1); + meta = _calloc_internal(sizeof(class_t) + extraBytes, 1); + } + + cls->data = _calloc_internal(sizeof(class_rw_t), 1); + meta->data = _calloc_internal(sizeof(class_rw_t), 1); + cls_ro_w = _calloc_internal(sizeof(class_ro_t), 1); + meta_ro_w = _calloc_internal(sizeof(class_ro_t), 1); + cls->data->ro = cls_ro_w; + meta->data->ro = meta_ro_w; + + // Set basic info + cls->cache = (Cache)&_objc_empty_cache; + meta->cache = (Cache)&_objc_empty_cache; + cls->vtable = (IMP *)&_objc_empty_vtable; + meta->vtable = (IMP *)&_objc_empty_vtable; + + cls->data->flags = RW_CONSTRUCTING | RW_COPIED_RO | RW_REALIZED; + meta->data->flags = RW_CONSTRUCTING | RW_COPIED_RO | RW_REALIZED; + cls->data->version = 0; + meta->data->version = 7; + + cls_ro_w->flags = 0; + meta_ro_w->flags = RO_META; + if (!superclass) { + cls_ro_w->flags |= RO_ROOT; + meta_ro_w->flags |= RO_ROOT; + } + if (superclass) { + cls_ro_w->instanceStart = instanceSize(superclass); + meta_ro_w->instanceStart = instanceSize(superclass->isa); + cls_ro_w->instanceSize = cls_ro_w->instanceStart; + meta_ro_w->instanceSize = meta_ro_w->instanceStart; + } else { + cls_ro_w->instanceStart = 0; + meta_ro_w->instanceStart = (uint32_t)sizeof(class_t); + cls_ro_w->instanceSize = (uint32_t)sizeof(id); // just an isa + meta_ro_w->instanceSize = meta_ro_w->instanceStart; + } + + cls_ro_w->name = _strdup_internal(name); + meta_ro_w->name = _strdup_internal(name); + + // Connect to superclasses and metaclasses + cls->isa = meta; + if (superclass) { + meta->isa = superclass->isa->isa; + cls->superclass = superclass; + meta->superclass = superclass->isa; + addSubclass(superclass, cls); + addSubclass(superclass->isa, meta); + } else { + meta->isa = meta; + cls->superclass = Nil; + meta->superclass = cls; + addSubclass(cls, meta); + } + + OBJC_UNLOCK(&runtimeLock); + + return (Class)cls; +} + + +/*********************************************************************** +* objc_registerClassPair +* fixme +* Locking: acquires runtimeLock +**********************************************************************/ +void objc_registerClassPair(Class cls_gen) +{ + class_t *cls = newcls(cls_gen); + + OBJC_LOCK(&runtimeLock); + + if ((cls->data->flags & RW_CONSTRUCTED) || + (cls->isa->data->flags & RW_CONSTRUCTED)) + { + _objc_inform("objc_registerClassPair: class '%s' was already " + "registered!", cls->data->ro->name); + OBJC_UNLOCK(&runtimeLock); + return; + } + + if (!(cls->data->flags & RW_CONSTRUCTING) || + !(cls->isa->data->flags & RW_CONSTRUCTING)) + { + _objc_inform("objc_registerClassPair: class '%s' was not " + "allocated with objc_allocateClassPair!", + cls->data->ro->name); + OBJC_UNLOCK(&runtimeLock); + return; + } + + // Build ivar layouts + if (UseGC) { + struct class_t *supercls = getSuperclass(cls); + class_ro_t *ro_w = (class_ro_t *)cls->data->ro; + + if (ro_w->ivarLayout) { + // Class builder already called class_setIvarLayout. + } + else if (!supercls) { + // Root class. Scan conservatively (should be isa ivar only). + // ivar_layout is already NULL. + } + else if (ro_w->ivars == NULL) { + // No local ivars. Use superclass's layouts. + ro_w->ivarLayout = (unsigned char *) + _strdup_internal((char *)supercls->data->ro->ivarLayout); + } + else { + // Has local ivars. Build layouts based on superclass. + layout_bitmap bitmap = + layout_bitmap_create(supercls->data->ro->ivarLayout, + instanceSize(supercls), + instanceSize(cls), NO); + uint32_t i; + for (i = 0; i < ro_w->ivars->count; i++) { + ivar_t *iv = ivar_list_nth(ro_w->ivars, i); + layout_bitmap_set_ivar(bitmap, iv->type, *iv->offset); + } + ro_w->ivarLayout = layout_string_create(bitmap); + layout_bitmap_free(bitmap); + } + + if (ro_w->weakIvarLayout) { + // Class builder already called class_setWeakIvarLayout. + } + else if (!supercls) { + // Root class. No weak ivars (should be isa ivar only). + // weak_ivar_layout is already NULL. + } + else if (ro_w->ivars == NULL) { + // No local ivars. Use superclass's layout. + ro_w->weakIvarLayout = (unsigned char *) + _strdup_internal((char *)supercls->data->ro->weakIvarLayout); + } + else { + // Has local ivars. Build layout based on superclass. + // No way to add weak ivars yet. + ro_w->weakIvarLayout = (unsigned char *) + _strdup_internal((char *)supercls->data->ro->weakIvarLayout); + } + } + + // Clear "under construction" bit, set "done constructing" bit + cls->data->flags &= ~RW_CONSTRUCTING; + cls->isa->data->flags &= ~RW_CONSTRUCTING; + cls->data->flags |= RW_CONSTRUCTED; + cls->isa->data->flags |= RW_CONSTRUCTED; + + // Add to realized and uninitialized classes + addRealizedClass(cls, cls->data->ro->name); + addUninitializedClass(cls, cls->isa); + + OBJC_UNLOCK(&runtimeLock); +} + + +static void unload_class(class_t *cls) +{ + uint32_t i; + + chained_method_list *mlist = cls->data->methods; + while (mlist) { + chained_method_list *dead = mlist; + mlist = mlist->next; + for (i = 0; i < dead->count; i++) { + try_free(dead->list[i].types); + } + try_free(dead); + } + + const ivar_list_t *ilist = cls->data->ro->ivars; + if (ilist) { + for (i = 0; i < ilist->count; i++) { + const ivar_t *ivar = ivar_list_nth(ilist, i); + try_free(ivar->offset); + try_free(ivar->name); + try_free(ivar->type); + } + try_free(ilist); + } + + protocol_list_t **plistp = cls->data->protocols; + for (plistp = cls->data->protocols; plistp && *plistp; plistp++) { + try_free(*plistp); + } + try_free(cls->data->protocols); + + // fixme: + // properties + + try_free(cls->data->ro->ivarLayout); + try_free(cls->data->ro->weakIvarLayout); + try_free(cls->data->ro->name); + try_free(cls->data->ro); + try_free(cls->data); + if (cls->cache != (Cache)&_objc_empty_cache) _cache_free(cls->cache); + try_free(cls); +} + +void objc_disposeClassPair(Class cls_gen) +{ + class_t *cls = newcls(cls_gen); + + OBJC_LOCK(&runtimeLock); + + if (!(cls->data->flags & (RW_CONSTRUCTED|RW_CONSTRUCTING)) || + !(cls->isa->data->flags & (RW_CONSTRUCTED|RW_CONSTRUCTING))) + { + // class not allocated with objc_allocateClassPair + // disposing still-unregistered class is OK! + _objc_inform("objc_disposeClassPair: class '%s' was not " + "allocated with objc_allocateClassPair!", + cls->data->ro->name); + OBJC_UNLOCK(&runtimeLock); + return; + } + + if (isMetaClass(cls)) { + _objc_inform("objc_disposeClassPair: class '%s' is a metaclass, " + "not a class!", cls->data->ro->name); + OBJC_UNLOCK(&runtimeLock); + return; + } + + class_t *supercls = getSuperclass(cls); + + // Shouldn't have any live subclasses. + if (cls->data->firstSubclass) { + _objc_inform("objc_disposeClassPair: class '%s' still has subclasses, " + "including '%s'!", cls->data->ro->name, + getName(cls->data->firstSubclass)); + } + if (cls->isa->data->firstSubclass) { + _objc_inform("objc_disposeClassPair: class '%s' still has subclasses, " + "including '%s'!", cls->data->ro->name, + getName(cls->isa->data->firstSubclass)); + } + + // Remove from superclass's subclass list + // Note that cls and cls->isa may have different lists. + if (supercls) { + removeSubclass(getSuperclass(cls), cls); + removeSubclass(getSuperclass(cls->isa), cls->isa); + } + + // Remove from class hashes + removeRealizedClass(cls); + removeUninitializedClass(cls); + + // Deallocate memory + unload_class(cls->isa); + unload_class(cls); + + OBJC_UNLOCK(&runtimeLock); +} + + + +/*********************************************************************** +* class_createInstanceFromZone +* fixme +* Locking: none +**********************************************************************/ +id +class_createInstanceFromZone(Class cls, size_t extraBytes, void *zone) +{ + if (cls) assert(isRealized(newcls(cls))); + return _internal_class_createInstanceFromZone(cls, extraBytes, zone); +} + + +/*********************************************************************** +* class_createInstance +* fixme +* Locking: none +**********************************************************************/ +id +class_createInstance(Class cls, size_t extraBytes) +{ + return class_createInstanceFromZone(cls, extraBytes, NULL); +} + + +/*********************************************************************** +* object_copyFromZone +* fixme +* Locking: none +**********************************************************************/ +id +object_copyFromZone(id oldObj, size_t extraBytes, void *zone) +{ + id obj; + size_t size; + + if (!oldObj) return nil; + + size = _class_getInstanceSize(oldObj->isa) + extraBytes; + obj = malloc_zone_calloc(zone, size, 1); + if (!obj) return nil; + + // fixme this doesn't handle C++ ivars correctly (#4619414) + bcopy(oldObj, obj, size); + + return obj; +} + + +/*********************************************************************** +* object_copy +* fixme +* Locking: none +**********************************************************************/ +id +object_copy(id oldObj, size_t extraBytes) +{ + return object_copyFromZone(oldObj, extraBytes, malloc_default_zone()); +} + + +/*********************************************************************** +* object_dispose +* fixme +* Locking: none +**********************************************************************/ +id +object_dispose(id obj) +{ + return _internal_object_dispose(obj); +} + + +/*********************************************************************** +* _class_getFreedObjectClass +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ Class +_class_getFreedObjectClass(void) +{ + return Nil; // fixme +} + +/*********************************************************************** +* _class_getNonexistentObjectClass +* fixme +* Locking: none +**********************************************************************/ +__private_extern__ Class +_class_getNonexistentObjectClass(void) +{ + return Nil; // fixme +} + +/*********************************************************************** +* _objc_getFreedObjectClass +* fixme +* Locking: none +**********************************************************************/ +Class _objc_getFreedObjectClass (void) +{ + return _class_getFreedObjectClass(); +} + +extern id objc_msgSend_fixup(id, SEL, ...); +extern id objc_msgSend_fixedup(id, SEL, ...); +extern id objc_msgSendSuper2_fixup(id, SEL, ...); +extern id objc_msgSendSuper2_fixedup(id, SEL, ...); +extern id objc_msgSend_stret_fixup(id, SEL, ...); +extern id objc_msgSend_stret_fixedup(id, SEL, ...); +extern id objc_msgSendSuper2_stret_fixup(id, SEL, ...); +extern id objc_msgSendSuper2_stret_fixedup(id, SEL, ...); + +/*********************************************************************** +* _objc_fixupMessageRef +* Fixes up message ref *msg. +* obj is the receiver. supr is NULL for non-super messages +* Locking: acquires runtimeLock +**********************************************************************/ +__private_extern__ IMP +_objc_fixupMessageRef(id obj, struct objc_super2 *supr, message_ref *msg) +{ + IMP imp; + class_t *isa; + + OBJC_CHECK_UNLOCKED(&runtimeLock); + + if (!supr) { + // normal message - search obj->isa for the method implementation + isa = (class_t *)obj->isa; + + if (!isRealized(isa)) { + // obj is a class object, isa is its metaclass + class_t *cls; + OBJC_LOCK(&runtimeLock); + if (!isRealized(isa)) { + cls = realizeClass((class_t *)obj); + + // shouldn't have instances of unrealized classes! + assert(isMetaClass(isa)); + // shouldn't be relocating classes here! + assert(cls == (class_t *)obj); + } + OBJC_UNLOCK(&runtimeLock); + } + } + else { + // this is objc_msgSend_super, and supr->current_class->superclass + // is the class to search for the method implementation + assert(isRealized((class_t *)supr->current_class)); + isa = getSuperclass((class_t *)supr->current_class); + } + + msg->sel = sel_registerName((const char *)msg->sel); + imp = _class_lookupMethodAndLoadCache((Class)isa, msg->sel); + + if (msg->imp == (IMP)&objc_msgSend_fixup) { + msg->imp = (IMP)&objc_msgSend_fixedup; + } + else if (msg->imp == (IMP)&objc_msgSendSuper2_fixup) { + msg->imp = (IMP)&objc_msgSendSuper2_fixedup; + } + else if (msg->imp == (IMP)&objc_msgSend_stret_fixup) { + msg->imp = (IMP)&objc_msgSend_stret_fixedup; + } + else if (msg->imp == (IMP)&objc_msgSendSuper2_stret_fixup) { + msg->imp = (IMP)&objc_msgSendSuper2_stret_fixedup; + } + else { + // The ref may already have been fixed up, either by another thread, + // or by +initialize via class_lookupMethodAndLoadCache above. + } + + return imp; +} + +#warning fixme delete after #4586306 +Class class_poseAs(Class imposter, Class original) +{ + _objc_fatal("Don't call class_poseAs."); +} + + +// ProKit SPI +static class_t *setSuperclass(class_t *cls, class_t *newSuper) +{ + class_t *oldSuper; + + OBJC_CHECK_LOCKED(&runtimeLock); + + oldSuper = cls->superclass; + removeSubclass(oldSuper, cls); + removeSubclass(oldSuper->isa, cls->isa); + + cls->superclass = newSuper; + cls->isa->superclass = newSuper->isa; + addSubclass(newSuper, cls); + addSubclass(newSuper->isa, cls->isa); + + flushCaches(cls); + flushCaches(cls->isa); + + return oldSuper; +} + + +Class class_setSuperclass(Class cls_gen, Class newSuper_gen) +{ + class_t *cls = newcls(cls_gen); + class_t *newSuper = newcls(newSuper_gen); + class_t *oldSuper; + + OBJC_LOCK(&runtimeLock); + oldSuper = setSuperclass(cls, newSuper); + OBJC_UNLOCK(&runtimeLock); + + return (Class)oldSuper; +} + +#endif diff --git a/runtime/objc-runtime-old.m b/runtime/objc-runtime-old.m new file mode 100644 index 0000000..427dbbe --- /dev/null +++ b/runtime/objc-runtime-old.m @@ -0,0 +1,2834 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-runtime-old.m +* Support for old-ABI classes and images. +**********************************************************************/ + +/*********************************************************************** + * 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. + * Note any +load implementations before categories are attached. + * 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. + * + * Correctness: all classes are scanned for +load before any categories + * are attached. Otherwise, if a category implements +load and its class + * has no class methods, the class's +load scan would find the category's + * +load method, which would then be called twice. + * + **********************************************************************/ + +#if !__OBJC2__ + +#include +#include +#include +#include + +#define OLD 1 +#import "objc-private.h" +#import "objc-loadmethod.h" +#import "hashtable2.h" +#import "maptable.h" + +/* NXHashTable SPI */ +extern unsigned _NXHashCapacity(NXHashTable *table); +extern void _NXHashRehashToCapacity(NXHashTable *table, unsigned newCapacity); + + +typedef struct _objc_unresolved_category +{ + struct _objc_unresolved_category *next; + struct old_category *cat; // may be NULL + long version; +} _objc_unresolved_category; + +typedef struct _PendingSubclass +{ + struct old_class *subclass; // subclass to finish connecting; may be NULL + struct _PendingSubclass *next; +} PendingSubclass; + +typedef struct _PendingClassRef +{ + struct old_class **ref; // class reference to fix up; may be NULL + // (ref & 1) is a metaclass reference + struct _PendingClassRef *next; +} PendingClassRef; + + +static uintptr_t classHash(void *info, Class data); +static int classIsEqual(void *info, Class name, Class cls); +static int _objc_defaultClassHandler(const char *clsName); +static BOOL class_is_connected(struct old_class *cls); +static inline NXMapTable *pendingClassRefsMapTable(void); +static inline NXMapTable *pendingSubclassesMapTable(void); +static void pendClassInstallation(struct old_class *cls, const char *superName); +static void pendClassReference(struct old_class **ref, const char *className, BOOL isMeta); +static void resolve_references_to_class(struct old_class *cls); +static void resolve_subclasses_of_class(struct old_class *cls); +static void really_connect_class(struct old_class *cls, struct old_class *supercls); +static BOOL connect_class(struct old_class *cls); +static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy); +static void map_method_descs (struct objc_method_description_list * methods, BOOL copy); +static void _objcTweakMethodListPointerForClass(struct old_class *cls); +static inline void _objc_add_category(struct old_class *cls, struct old_category *category, int version); +static BOOL _objc_add_category_flush_caches(struct old_class *cls, struct old_category *category, int version); +static _objc_unresolved_category *reverse_cat(_objc_unresolved_category *cat); +static void resolve_categories_for_class(struct old_class *cls); +static BOOL _objc_register_category(struct old_category *cat, int version); + + +// Function called when a class is loaded from an image +__private_extern__ void (*callbackFunction)(Class, const char *) = 0; + +// Lock for class and protocol hashtables +// classLock > cacheUpdateLock +__private_extern__ OBJC_DECLARE_LOCK (classLock); + +// Hash table of classes +__private_extern__ NXHashTable * class_hash NOBSS = 0; +static NXHashTablePrototype classHashPrototype = +{ + (uintptr_t (*) (const void *, const void *)) classHash, + (int (*)(const void *, const void *, const void *)) classIsEqual, + 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; + +// 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; + +// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles +// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove +static NXMapTable * pendingClassRefsMap = NULL; +static NXMapTable * pendingSubclassesMap = NULL; + +// Protocols +static NXMapTable *protocol_map = NULL; // name -> protocol +static NXMapTable *protocol_ext_map = NULL; // protocol -> protocol ext + +// Function pointer objc_getClass calls through when class is not found +static int (*objc_classHandler) (const char *) = _objc_defaultClassHandler; + +// Function pointer called by objc_getClass and objc_lookupClass when +// class is not found. _objc_classLoader is called before objc_classHandler. +static BOOL (*_objc_classLoader)(const char *) = NULL; + + +/*********************************************************************** +* inform_duplicate. Complain about duplicate class implementations. +**********************************************************************/ +static void inform_duplicate(struct old_class *oldCls, struct old_class *cls) +{ + const header_info *oldHeader = _headerForClass((Class)oldCls); + const header_info *newHeader = _headerForClass((Class)cls); + const char *oldName = _nameForHeader(oldHeader->mhdr); + const char *newName = _nameForHeader(newHeader->mhdr); + + _objc_inform ("Class %s is implemented in both %s and %s. " + "Using implementation from %s.", + oldCls->name, oldName, newName, newName); +} + + +/*********************************************************************** +* objc_dump_class_hash. Log names of all known classes. +**********************************************************************/ +__private_extern__ void objc_dump_class_hash(void) +{ + NXHashTable *table; + unsigned count; + Class data; + NXHashState state; + + table = class_hash; + count = 0; + state = NXInitHashState (table); + while (NXNextHashState (table, &state, (void **) &data)) + printf ("class %d: %s\n", ++count, _class_getName(data)); +} + + +/*********************************************************************** +* _objc_init_class_hash. Return the class lookup table, create it if +* necessary. +**********************************************************************/ +__private_extern__ void _objc_init_class_hash(void) +{ + // Do nothing if class hash table already exists + if (class_hash) + return; + + // 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, + 16, + nil, + _objc_internal_zone ()); + _objc_debug_class_hash = class_hash; +} + + +/*********************************************************************** +* objc_getClassList. Return the known classes. +**********************************************************************/ +int objc_getClassList(Class *buffer, int bufferLen) +{ + NXHashState state; + Class class; + int cnt, num; + + OBJC_LOCK(&classLock); + num = NXCountHashTable(class_hash); + if (NULL == buffer) { + OBJC_UNLOCK(&classLock); + return num; + } + cnt = 0; + state = NXInitHashState(class_hash); + while (cnt < bufferLen && + NXNextHashState(class_hash, &state, (void **)&class)) + { + buffer[cnt++] = class; + } + OBJC_UNLOCK(&classLock); + return num; +} + + +/*********************************************************************** +* objc_copyProtocolList +* Returns pointers to all protocols. +* Locking: acquires classLock +**********************************************************************/ +Protocol ** +objc_copyProtocolList(unsigned int *outCount) +{ + OBJC_LOCK(&classLock); + + int count, i; + Protocol *proto; + const char *name; + NXMapState state; + Protocol **result; + + count = NXCountMapTable(protocol_map); + if (count == 0) { + OBJC_UNLOCK(&classLock); + if (outCount) *outCount = 0; + return NULL; + } + + result = calloc(1 + count, sizeof(Protocol *)); + + i = 0; + state = NXInitMapState(protocol_map); + while (NXNextMapState(protocol_map, &state, + (const void **)&name, (const void **)&proto)) + { + result[i++] = proto; + } + + result[i++] = NULL; + assert(i == count+1); + + OBJC_UNLOCK(&classLock); + + if (outCount) *outCount = count; + return result; +} + + +/*********************************************************************** +* objc_getClasses. Return class lookup table. +* +* NOTE: This function is very dangerous, since you cannot safely use +* the hashtable without locking it, and the lock is private! +**********************************************************************/ +void *objc_getClasses(void) +{ + OBJC_WARN_DEPRECATED; + + // Return the class lookup hash table + return class_hash; +} + + +/*********************************************************************** +* classHash. +**********************************************************************/ +static uintptr_t classHash(void *info, Class data) +{ + // Nil classes hash to zero + if (!data) + return 0; + + // Call through to real hash function + return _objc_strhash (_class_getName(data)); +} + +/*********************************************************************** +* classIsEqual. Returns whether the class names match. If we ever +* check more than the name, routines like objc_lookUpClass have to +* change as well. +**********************************************************************/ +static int classIsEqual(void *info, Class name, Class cls) +{ + // Standard string comparison + // Our local inlined version is significantly shorter on PPC and avoids the + // mflr/mtlr and dyld_stub overhead when calling strcmp. + return _objc_strcmp(_class_getName(name), _class_getName(cls)) == 0; +} + + +// Unresolved future classes +static NXHashTable *future_class_hash = NULL; + +// Resolved future<->original classes +static NXMapTable *future_class_to_original_class_map = NULL; +static NXMapTable *original_class_to_future_class_map = NULL; + +// CF requests about 20 future classes; HIToolbox requests one. +#define FUTURE_COUNT 32 + + +/*********************************************************************** +* setOriginalClassForFutureClass +* Record resolution of a future class. +**********************************************************************/ +static void setOriginalClassForFutureClass(struct old_class *futureClass, + struct old_class *originalClass) +{ + if (!future_class_to_original_class_map) { + future_class_to_original_class_map = + NXCreateMapTableFromZone (NXPtrValueMapPrototype, FUTURE_COUNT, + _objc_internal_zone ()); + original_class_to_future_class_map = + NXCreateMapTableFromZone (NXPtrValueMapPrototype, FUTURE_COUNT, + _objc_internal_zone ()); + } + + NXMapInsert (future_class_to_original_class_map, + futureClass, originalClass); + NXMapInsert (original_class_to_future_class_map, + originalClass, futureClass); + + if (PrintFuture) { + _objc_inform("FUTURE: using %p instead of %p for %s", futureClass, originalClass, originalClass->name); + } +} + +/*********************************************************************** +* getOriginalClassForFutureClass +* getFutureClassForOriginalClass +* Switch between a future class and its corresponding original class. +* The future class is the one actually in use. +* The original class is the one from disk. +**********************************************************************/ +/* +static struct old_class * +getOriginalClassForFutureClass(struct old_class *futureClass) +{ + if (!future_class_to_original_class_map) return Nil; + return NXMapGet (future_class_to_original_class_map, futureClass); +} +*/ +static struct old_class * +getFutureClassForOriginalClass(struct old_class *originalClass) +{ + if (!original_class_to_future_class_map) return Nil; + return NXMapGet (original_class_to_future_class_map, originalClass); +} + + +/*********************************************************************** +* makeFutureClass +* Initialize the memory in *cls with an unresolved future class with the +* given name. The memory is recorded in future_class_hash. +**********************************************************************/ +static void makeFutureClass(struct old_class *cls, const char *name) +{ + // CF requests about 20 future classes, plus HIToolbox has one. + if (!future_class_hash) { + future_class_hash = + NXCreateHashTableFromZone(classHashPrototype, FUTURE_COUNT, + NULL, _objc_internal_zone()); + } + + cls->name = _strdup_internal(name); + NXHashInsert(future_class_hash, cls); + + if (PrintFuture) { + _objc_inform("FUTURE: reserving %p for %s", cls, name); + } +} + + +/*********************************************************************** +* _objc_allocateFutureClass +* Allocate an unresolved future class for the given class name. +* Returns any existing allocation if one was already made. +* Assumes the named class doesn't exist yet. +* Not thread safe. +**********************************************************************/ +__private_extern__ Class _objc_allocateFutureClass(const char *name) +{ + struct old_class *cls; + + if (future_class_hash) { + struct old_class query; + query.name = name; + if ((cls = NXHashGet(future_class_hash, &query))) { + // Already have a future class for this name. + return (Class)cls; + } + } + + cls = _calloc_internal(sizeof(*cls), 1); + makeFutureClass(cls, name); + return (Class)cls; +} + + +/*********************************************************************** +* objc_setFutureClass. +* Like objc_getFutureClass, but uses the provided memory block. +* If the class already exists, a posing-like substitution is performed. +* Not thread safe. +**********************************************************************/ +void objc_setFutureClass(Class cls, const char *name) +{ + struct old_class *oldcls; + struct old_class *newcls = (struct old_class *)cls; // Not a real class! + + if ((oldcls = _class_asOld(look_up_class(name, NO/*unconnected*/, NO/*classhandler*/)))) { + setOriginalClassForFutureClass(newcls, oldcls); + // fixme hack + memcpy(newcls, oldcls, sizeof(struct objc_class)); + newcls->info &= ~CLS_EXT; + + OBJC_LOCK(&classLock); + NXHashRemove(class_hash, oldcls); + change_class_references(newcls, oldcls, nil, YES); + NXHashInsert(class_hash, newcls); + OBJC_UNLOCK(&classLock); + } else { + makeFutureClass(newcls, name); + } +} + + +/*********************************************************************** +* _objc_defaultClassHandler. Default objc_classHandler. Does nothing. +**********************************************************************/ +static int _objc_defaultClassHandler(const char *clsName) +{ + // Return zero so objc_getClass doesn't bother re-searching + return 0; +} + +/*********************************************************************** +* objc_setClassHandler. Set objc_classHandler to the specified value. +* +* NOTE: This should probably deal with userSuppliedHandler being NULL, +* because the objc_classHandler caller does not check... it would bus +* error. It would make sense to handle NULL by restoring the default +* handler. Is anyone hacking with this, though? +**********************************************************************/ +void objc_setClassHandler(int (*userSuppliedHandler)(const char *)) +{ + OBJC_WARN_DEPRECATED; + + objc_classHandler = userSuppliedHandler; +} + + +/*********************************************************************** +* _objc_setClassLoader +* Similar to objc_setClassHandler, but objc_classLoader is used for +* both objc_getClass() and objc_lookupClass(), and objc_classLoader +* pre-empts objc_classHandler. +**********************************************************************/ +void _objc_setClassLoader(BOOL (*newClassLoader)(const char *)) +{ + _objc_classLoader = newClassLoader; +} + + +/*********************************************************************** +* objc_getProtocol +* Get a protocol by name, or NULL. +**********************************************************************/ +Protocol *objc_getProtocol(const char *name) +{ + Protocol *result; + if (!protocol_map) return NULL; + OBJC_LOCK(&classLock); + result = (Protocol *)NXMapGet(protocol_map, name); + OBJC_UNLOCK(&classLock); + return result; +} + + +/*********************************************************************** +* 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) +**********************************************************************/ +__private_extern__ id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler) +{ + BOOL includeClassLoader = YES; // class loader cannot be skipped + id result = nil; + struct old_class query; + + query.name = aClassName; + + retry: + + if (!result && class_hash) { + // Check ordinary classes + OBJC_LOCK (&classLock); + result = (id)NXHashGet(class_hash, &query); + 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 result; +} + + +/*********************************************************************** +* 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 BOOL class_is_connected(struct old_class *cls) +{ + BOOL result; + OBJC_LOCK(&classLock); + result = NXHashMember(class_hash, cls); + OBJC_UNLOCK(&classLock); + return result; +} + + +/*********************************************************************** +* _class_isLoadable. +* Returns TRUE if class cls is ready for its +load method to be called. +* A class is ready for +load if it is connected. +**********************************************************************/ +__private_extern__ BOOL _class_isLoadable(Class cls) +{ + return class_is_connected(_class_asOld(cls)); +} + + +/*********************************************************************** +* pendingClassRefsMapTable. Return a pointer to the lookup table for +* pending class refs. +**********************************************************************/ +static inline NXMapTable *pendingClassRefsMapTable(void) +{ + // Allocate table if needed + if (!pendingClassRefsMap) { + pendingClassRefsMap = + NXCreateMapTableFromZone(NXStrValueMapPrototype, + 10, _objc_internal_zone ()); + } + + // Return table pointer + return pendingClassRefsMap; +} + + +/*********************************************************************** +* pendingSubclassesMapTable. Return a pointer to the lookup table for +* pending subclasses. +**********************************************************************/ +static inline NXMapTable *pendingSubclassesMapTable(void) +{ + // Allocate table if needed + if (!pendingSubclassesMap) { + pendingSubclassesMap = + NXCreateMapTableFromZone(NXStrValueMapPrototype, + 10, _objc_internal_zone ()); + } + + // Return table pointer + return pendingSubclassesMap; +} + + +/*********************************************************************** +* pendClassInstallation +* Finish connecting class cls when its superclass becomes connected. +* Check for multiple pends of the same class because connect_class does not. +**********************************************************************/ +static void pendClassInstallation(struct old_class *cls, const char *superName) +{ + NXMapTable *table; + PendingSubclass *pending; + PendingSubclass *oldList; + PendingSubclass *l; + + // Create and/or locate pending class lookup table + table = pendingSubclassesMapTable (); + + // 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); +} + + +/*********************************************************************** +* pendClassReference +* Fix up a class ref when the class with the given name becomes connected. +**********************************************************************/ +static void pendClassReference(struct old_class **ref, const char *className, BOOL isMeta) +{ + NXMapTable *table; + PendingClassRef *pending; + + // Create and/or locate pending class lookup table + table = pendingClassRefsMapTable (); + + // Create entry containing the class reference + pending = _malloc_internal(sizeof(PendingClassRef)); + pending->ref = ref; + if (isMeta) { + pending->ref = (struct old_class **)((uintptr_t)pending->ref | 1); + } + + // Link new entry into head of list of entries for this class + pending->next = NXMapGet (table, className); + + // (Re)place entry list in the table + (void) NXMapKeyCopyingInsert (table, className, pending); + + if (PrintConnecting) { + _objc_inform("CONNECT: pended reference to class '%s%s' at %p", + className, isMeta ? " (meta)" : "", (void *)ref); + } +} + + +/*********************************************************************** +* resolve_references_to_class +* Fix up any pending class refs to this class. +**********************************************************************/ +static void resolve_references_to_class(struct old_class *cls) +{ + PendingClassRef *pending; + + if (!pendingClassRefsMap) return; // no unresolved refs for any class + + pending = NXMapGet(pendingClassRefsMap, cls->name); + if (!pending) return; // no unresolved refs for this class + + NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name); + + if (PrintConnecting) { + _objc_inform("CONNECT: resolving references to class '%s'", cls->name); + } + + while (pending) { + PendingClassRef *next = pending->next; + if (pending->ref) { + BOOL isMeta = ((uintptr_t)pending->ref & 1) ? YES : NO; + struct old_class **ref = + (struct old_class **)((uintptr_t)pending->ref & ~(uintptr_t)1); + *ref = isMeta ? cls->isa : 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 old_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; + } +} + + +/*********************************************************************** +* really_connect_class +* Connect cls to superclass supercls unconditionally. +* Also adjust the class hash tables and handle pended subclasses. +* +* This should be called from connect_class() ONLY. +**********************************************************************/ +static void really_connect_class(struct old_class *cls, + struct old_class *supercls) +{ + struct old_class *oldCls; + + // Connect superclass pointers. + set_superclass(cls, supercls); + + cls->info |= CLS_CONNECTED; + + 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) { + inform_duplicate(oldCls, cls); + } + + // Connect newly-connectable subclasses + resolve_subclasses_of_class(cls); + + // GC debugging: make sure all classes with -dealloc also have -finalize + if (DebugFinalizers) { + extern IMP findIMPInClass(struct old_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 old_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 old_ivar *super_ivar = + &ivar_cls->ivars->ivar_list[ivar_cls->ivars->ivar_count - 1]; + struct old_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 old_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 old_class *supercls; + + // YES unconnected, YES class handler + if (NULL == (supercls = _class_asOld(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_read_categories_from_image. +* Read all categories from the given image. +* Install them on their parent classes, or register them for later +* installation. +* Returns YES if some method caches now need to be flushed. +**********************************************************************/ +static BOOL _objc_read_categories_from_image (header_info * hi) +{ + Module mods; + size_t midx; + BOOL needFlush = NO; + + if (_objcHeaderIsReplacement(hi)) { + // Ignore any categories in this image + return NO; + } + + + // Major loop - process all modules in the header + mods = hi->mod_ptr; + + // 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; + + // Minor loop - register all categories from given module + index = total; + while (index-- > mods[midx].symtab->cls_def_cnt) { + struct old_category *cat = mods[midx].symtab->defs[index]; + needFlush |= _objc_register_category(cat, (int)mods[midx].version); + } + } + + return needFlush; +} + + +/*********************************************************************** +* _objc_read_classes_from_image. +* Read classes from the given image, perform assorted minor fixups, +* scan for +load implementation. +* 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_read_classes_from_image(header_info *hi) +{ + unsigned int index; + unsigned int midx; + Module mods; + 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 != (headerType *)&_mh_dylib_header && _NXHashCapacity(class_hash) < 1024) { + _NXHashRehashToCapacity(class_hash, 1024); + } + OBJC_UNLOCK(&classLock); + + // 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 old_class *newCls, *oldCls; + + // Locate the class description pointer + newCls = mods[midx].symtab->defs[index]; + + // 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) &_objc_empty_cache; + if (newCls->isa->cache == NULL) + newCls->isa->cache = (Cache) &_objc_empty_cache; + + // 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|CLS_NO_PROPERTY_ARRAY; + newCls->isa->info |= CLS_NO_METHOD_ARRAY|CLS_NO_PROPERTY_ARRAY; + + // class has no subclasses for cache flushing + newCls->info |= CLS_LEAF; + newCls->isa->info |= CLS_LEAF; + + if (mods[midx].version >= 6) { + // class structure has ivar_layout and ext fields + newCls->info |= CLS_EXT; + newCls->isa->info |= CLS_EXT; + } + + // Check for +load implementation before categories are attached + if (_class_hasLoadMethod((Class)newCls)) { + newCls->isa->info |= CLS_HAS_LOAD_METHOD; + } + + // Install into unconnected_class_hash. + OBJC_LOCK(&classLock); + + if (future_class_hash) { + struct old_class *futureCls = + NXHashRemove(future_class_hash, newCls); + if (futureCls) { + // Another class structure for this class was already + // prepared by objc_getFutureClass(). Use it instead. + _free_internal((char *)futureCls->name); + memcpy(futureCls, newCls, sizeof(*newCls)); + setOriginalClassForFutureClass(futureCls, newCls); + newCls = futureCls; + + if (NXCountHashTable(future_class_hash) == 0) { + NXFreeHashTable(future_class_hash); + future_class_hash = NULL; + } + } + } + + if (!unconnected_class_hash) { + unconnected_class_hash = + NXCreateHashTableFromZone(classHashPrototype, 128, + NULL, _objc_internal_zone()); + } + + oldCls = NXHashInsert(unconnected_class_hash, newCls); + if (oldCls) { + // Duplicate classes loaded. + // newCls has been inserted over oldCls, + // same as really_connect_class + inform_duplicate(oldCls, newCls); + } + + OBJC_UNLOCK(&classLock); + + // 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_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_connect_classes_from_image(header_info *hi) +{ + unsigned int index; + unsigned int midx; + Module mods; + BOOL replacement = _objcHeaderIsReplacement(hi); + + // 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 old_class *cls = mods[midx].symtab->defs[index]; + if (! replacement) { + BOOL connected; + struct old_class *futureCls = getFutureClassForOriginalClass(cls); + if (futureCls) { + // objc_getFutureClass() requested a different class + // struct. Fix up the original struct's super_class + // field for [super ...] use, but otherwise perform + // fixups on the new class struct only. + const char *super_name = (const char *) cls->super_class; + if (super_name) cls->super_class = _class_asOld(objc_getClass(super_name)); + cls = futureCls; + } + connected = connect_class(cls); + if (connected && callbackFunction) { + (*callbackFunction)((Class)cls, 0); + } + } else { + // Replacement image - fix up super_class only (#3704817) + // And metaclass's super_class (#5351107) + const char *super_name = (const char *) cls->super_class; + if (super_name) { + cls->super_class = _class_asOld(objc_getClass(super_name)); + // metaclass's superclass is superclass's metaclass + cls->isa->super_class = cls->super_class->isa; + } else { + // Replacement for a root class + // cls->super_class already NULL + // root metaclass's superclass is root class + cls->isa->super_class = cls; + } + } + } + } +} + + +/*********************************************************************** +* _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 +* not yet exist, the reference is added to a list of pending references +* to be fixed up at a later date. +**********************************************************************/ +static void fix_class_ref(struct old_class **ref, const char *name, BOOL isMeta) +{ + struct old_class *cls; + + // Get pointer to class of this name + // YES unconnected, YES class loader + cls = _class_asOld(look_up_class(name, YES, YES)); + if (cls) { + // Referenced class exists. Fix up the reference. + *ref = isMeta ? cls->isa : cls; + } else { + // Referenced class does not exist yet. Insert a placeholder + // class and fix up the reference later. + pendClassReference (ref, name, isMeta); + *ref = (struct old_class *)_class_getNonexistentObjectClass(); + } +} + +static void _objc_map_class_refs_for_image (header_info * hi) +{ + struct old_class **cls_refs; + size_t count; + unsigned int index; + + // Locate class refs in image + cls_refs = _getObjcClassRefs (hi, &count); + if (cls_refs) { + // Process each class ref + for (index = 0; index < count; index += 1) { + // Ref is initially class name char* + const char *name = (const char *) cls_refs[index]; + if (name == NULL) { + // rdar://5453039 is the entire page zero, or just this pointer + uintptr_t *p = (uintptr_t *)(((uintptr_t)&cls_refs[index]) & ~0xfff); + uintptr_t *end = (uintptr_t *)(((uintptr_t)p)+0x1000); + int clear = 1; + for ( ; p < end; p++) { + if (*p != 0) { + clear = 0; + break; + } + } + _objc_inform_on_crash("rdar://5453039 page around %p IS%s clear", + &cls_refs[index], clear ? "" : " NOT"); + // crash in the usual spot so CrashTracer coalesces it + } + fix_class_ref(&cls_refs[index], name, NO /*never meta*/); + } + } +} + + +/*********************************************************************** +* _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 removePendingReferences(struct old_class **refs, size_t count) +{ + struct old_class **end = refs + count; + + if (!refs) return; + if (!pendingClassRefsMap) return; + + // 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 >= refs && pending->ref < end) { + pending->ref = NULL; + } + } + } +} + +static void _objc_remove_pending_class_refs_in_image(header_info *hi) +{ + struct old_class **cls_refs; + size_t count; + + // Locate class refs in this image + cls_refs = _getObjcClassRefs(hi, &count); + removePendingReferences(cls_refs, count); +} + + +/*********************************************************************** +* map_selrefs. For each selector in the specified array, +* 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. +* Returns YES if dst was written to, NO if it was unchanged. +**********************************************************************/ +static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy) +{ + BOOL result = NO; + size_t cnt = size / sizeof(SEL); + size_t index; + + sel_lock(); + + // Process each selector + for (index = 0; index < cnt; index += 1) + { + SEL sel; + + // Lookup pointer to uniqued string + 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 (dst[index] != sel) { + dst[index] = sel; + result = YES; + } + } + + sel_unlock(); + + return result; +} + + +/*********************************************************************** +* map_message_refs. For each message ref in the specified array, +* 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. +* Returns YES if dst was written to, NO if it was unchanged. +**********************************************************************/ +static inline BOOL map_message_refs(message_ref *src, message_ref *dst, size_t size, BOOL copy) +{ + BOOL result = NO; + size_t cnt = size / sizeof(message_ref); + size_t index; + + sel_lock(); + + // Process each selector + for (index = 0; index < cnt; index += 1) + { + SEL sel; + + // Lookup pointer to uniqued string + sel = sel_registerNameNoLock((const char *) src[index].sel, copy); + + // Replace this selector with uniqued one (avoid + // modifying the VM page if this would be a NOP) + if (dst[index].sel != sel) { + dst[index].sel = 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, BOOL copy) +{ + unsigned int index; + + if (!methods) return; + + sel_lock(); + + // Process each method + for (index = 0; index < methods->count; index += 1) + { + struct objc_method_description * method; + SEL sel; + + // Get method entry to fix up + method = &methods->list[index]; + + // Lookup pointer to uniqued string + 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) + if (method->name != sel) + method->name = sel; + } + + sel_unlock(); +} + + +/*********************************************************************** +* ext_for_protocol +* Returns the protocol extension for the given protocol. +* Returns NULL if the protocol has no extension. +**********************************************************************/ +static struct old_protocol_ext *ext_for_protocol(struct old_protocol *proto) +{ + if (!proto) return NULL; + if (!protocol_ext_map) return NULL; + else return (struct old_protocol_ext *)NXMapGet(protocol_ext_map, proto); +} + + +/*********************************************************************** +* lookup_method +* Search a protocol method list for a selector. +**********************************************************************/ +static struct objc_method_description * +lookup_method(struct objc_method_description_list *mlist, SEL aSel) +{ + if (mlist) { + int i; + for (i = 0; i < mlist->count; i++) { + if (mlist->list[i].name == aSel) { + return mlist->list+i; + } + } + } + return NULL; +} + + +/*********************************************************************** +* lookup_protocol_method +* Recursively search for a selector in a protocol +* (and all incorporated protocols) +**********************************************************************/ +__private_extern__ struct objc_method_description * +lookup_protocol_method(struct old_protocol *proto, SEL aSel, + BOOL isRequiredMethod, BOOL isInstanceMethod) +{ + struct objc_method_description *m = NULL; + struct old_protocol_ext *ext; + + if (isRequiredMethod) { + if (isInstanceMethod) { + m = lookup_method(proto->instance_methods, aSel); + } else { + m = lookup_method(proto->class_methods, aSel); + } + } else if ((ext = ext_for_protocol(proto))) { + if (isInstanceMethod) { + m = lookup_method(ext->optional_instance_methods, aSel); + } else { + m = lookup_method(ext->optional_class_methods, aSel); + } + } + + if (!m && proto->protocol_list) { + int i; + for (i = 0; !m && i < proto->protocol_list->count; i++) { + m = lookup_protocol_method(proto->protocol_list->list[i], aSel, + isRequiredMethod, isInstanceMethod); + } + } + + return m; +} + + +/*********************************************************************** +* protocol_getName +* Returns the name of the given protocol. +**********************************************************************/ +const char *protocol_getName(Protocol *p) +{ + struct old_protocol *proto = oldprotocol(p); + if (!proto) return "nil"; + return proto->protocol_name; +} + + +/*********************************************************************** +* protocol_getMethodDescription +* Returns the description of a named method. +* Searches either required or optional methods. +* Searches either instance or class methods. +**********************************************************************/ +struct objc_method_description +protocol_getMethodDescription(Protocol *p, SEL aSel, + BOOL isRequiredMethod, BOOL isInstanceMethod) +{ + struct old_protocol *proto = oldprotocol(p); + if (!proto) return (struct objc_method_description){NULL, NULL}; + + struct objc_method_description *desc = + lookup_protocol_method(proto, aSel, + isRequiredMethod, isInstanceMethod); + if (desc) return *desc; + else return (struct objc_method_description){NULL, NULL}; +} + + +/*********************************************************************** +* protocol_copyMethodDescriptionList +* Returns an array of method descriptions from a protocol. +* Copies either required or optional methods. +* Copies either instance or class methods. +**********************************************************************/ +struct objc_method_description * +protocol_copyMethodDescriptionList(Protocol *p, + BOOL isRequiredMethod, + BOOL isInstanceMethod, + unsigned int *outCount) +{ + struct objc_method_description_list *mlist = NULL; + struct old_protocol *proto = oldprotocol(p); + struct old_protocol_ext *ext; + + if (!proto) { + if (outCount) *outCount = 0; + return NULL; + } + + if (isRequiredMethod) { + if (isInstanceMethod) { + mlist = proto->instance_methods; + } else { + mlist = proto->class_methods; + } + } else if ((ext = ext_for_protocol(proto))) { + if (isInstanceMethod) { + mlist = ext->optional_instance_methods; + } else { + mlist = ext->optional_class_methods; + } + } + + if (!mlist) { + if (outCount) *outCount = 0; + return NULL; + } + + unsigned int i; + unsigned int count = mlist->count; + struct objc_method_description *result = + calloc(count + 1, sizeof(struct objc_method_description)); + for (i = 0; i < count; i++) { + result[i] = mlist->list[i]; + } + + if (outCount) *outCount = count; + return result; +} + + +Property protocol_getProperty(Protocol *p, const char *name, + BOOL isRequiredProperty, BOOL isInstanceProperty) +{ + struct old_protocol *proto = oldprotocol(p); + + if (!proto || !name) return NULL; + + if (!isRequiredProperty || !isInstanceProperty) { + // Only required instance properties are currently supported + return NULL; + } + + struct old_protocol_ext *ext; + if ((ext = ext_for_protocol(proto))) { + struct objc_property_list *plist; + if ((plist = ext->instance_properties)) { + uint32_t i; + for (i = 0; i < plist->count; i++) { + Property prop = property_list_nth(plist, i); + if (0 == strcmp(name, prop->name)) { + return prop; + } + } + } + } + + struct old_protocol_list *plist; + if ((plist = proto->protocol_list)) { + int i; + for (i = 0; i < plist->count; i++) { + Property prop = + protocol_getProperty((Protocol *)plist->list[i], name, + isRequiredProperty, isInstanceProperty); + if (prop) return prop; + } + } + + return NULL; +} + + +Property *protocol_copyPropertyList(Protocol *p, unsigned int *outCount) +{ + Property *result = NULL; + struct old_protocol_ext *ext; + + struct old_protocol *proto = oldprotocol(p); + if (! (ext = ext_for_protocol(proto))) { + if (outCount) *outCount = 0; + return NULL; + } + + struct objc_property_list *plist = ext->instance_properties; + result = copyPropertyList(plist, outCount); + + return result; +} + + +/*********************************************************************** +* protocol_copyProtocolList +* Copies this protocol's incorporated protocols. +* Does not copy those protocol's incorporated protocols in turn. +**********************************************************************/ +Protocol **protocol_copyProtocolList(Protocol *p, unsigned int *outCount) +{ + unsigned int count = 0; + Protocol **result = NULL; + struct old_protocol *proto = oldprotocol(p); + + if (!proto) { + if (outCount) *outCount = 0; + return NULL; + } + + if (proto->protocol_list) { + count = (unsigned int)proto->protocol_list->count; + } + if (count > 0) { + result = malloc((count+1) * sizeof(Protocol *)); + + unsigned int i; + for (i = 0; i < count; i++) { + result[i] = (Protocol *)proto->protocol_list->list[i]; + } + result[i] = NULL; + } + + if (outCount) *outCount = count; + return result; +} + + +BOOL protocol_conformsToProtocol(Protocol *self_gen, Protocol *other_gen) +{ + struct old_protocol *self = oldprotocol(self_gen); + struct old_protocol *other = oldprotocol(other_gen); + + if (!self || !other) { + return NO; + } + + if (0 == strcmp(self->protocol_name, other->protocol_name)) { + return YES; + } + + if (self->protocol_list) { + int i; + for (i = 0; i < self->protocol_list->count; i++) { + struct old_protocol *proto = self->protocol_list->list[i]; + if (0 == strcmp(other->protocol_name, proto->protocol_name)) { + return YES; + } + if (protocol_conformsToProtocol((Protocol *)proto, other_gen)) { + return YES; + } + } + } + + return NO; +} + + +BOOL protocol_isEqual(Protocol *self, Protocol *other) +{ + if (self == other) return YES; + if (!self || !other) return NO; + + if (!protocol_conformsToProtocol(self, other)) return NO; + if (!protocol_conformsToProtocol(other, self)) return NO; + + return YES; +} + + +/*********************************************************************** +* _objc_fixup_protocol_objects_for_image. For each protocol in the +* specified image, selectorize the method names and add to the protocol hash. +**********************************************************************/ + +static BOOL versionIsExt(uintptr_t version, const char *names, size_t size) +{ + // CodeWarrior used isa field for string "Protocol" + // from section __OBJC,__class_names. rdar://4951638 + // gcc (10.4 and earlier) used isa field for version number; + // the only version number used on Mac OS X was 2. + // gcc (10.5 and later) uses isa field for ext pointer + + if (version < 4096) { + return NO; + } + + if (version >= (uintptr_t)names && version < (uintptr_t)(names + size)) { + return NO; + } + + return YES; +} + +static void fix_protocol(struct old_protocol *proto, Class protocolClass, + BOOL isBundle, const char *names, size_t names_size) +{ +#warning GrP fixme hack + if (!proto) return; + + uintptr_t version = (uintptr_t)proto->isa; + + // Set the protocol's isa + proto->isa = protocolClass; + + // Fix up method lists + // fixme share across duplicates + map_method_descs (proto->instance_methods, isBundle); + map_method_descs (proto->class_methods, isBundle); + + // Fix up ext, if any + if (versionIsExt(version, names, names_size)) { + struct old_protocol_ext *ext = (struct old_protocol_ext *)version; + NXMapInsert(protocol_ext_map, proto, ext); + map_method_descs (ext->optional_instance_methods, isBundle); + map_method_descs (ext->optional_class_methods, isBundle); + } + + // Record the protocol it if we don't have one with this name yet + // fixme bundles - copy protocol + // fixme unloading + if (!NXMapGet(protocol_map, proto->protocol_name)) { + NXMapKeyCopyingInsert(protocol_map, proto->protocol_name, proto); + if (PrintProtocols) { + _objc_inform("PROTOCOLS: protocol at %p is %s", + proto, proto->protocol_name); + } + } else { + // duplicate - do nothing + if (PrintProtocols) { + _objc_inform("PROTOCOLS: protocol at %p is %s (duplicate)", + proto, proto->protocol_name); + } + } +} + +static void _objc_fixup_protocol_objects_for_image (header_info * hi) +{ + Class protocolClass = objc_getClass("Protocol"); + size_t count, i; + struct old_protocol *protos; + int isBundle = hi->mhdr->filetype == MH_BUNDLE; + const char *names; + size_t names_size; + + OBJC_LOCK(&classLock); + + // Allocate the protocol registry if necessary. + if (!protocol_map) { + protocol_map = + NXCreateMapTableFromZone(NXStrValueMapPrototype, 32, + _objc_internal_zone()); + } + if (!protocol_ext_map) { + protocol_ext_map = + NXCreateMapTableFromZone(NXPtrValueMapPrototype, 32, + _objc_internal_zone()); + } + + protos = _getObjcProtocols(hi, &count); + names = _getObjcClassNames(hi, &names_size); + for (i = 0; i < count; i++) { + fix_protocol(&protos[i], protocolClass, isBundle, names, names_size); + } + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* _objc_fixup_selector_refs. Register all of the selectors in each +* image, and fix them all up. +**********************************************************************/ +static void _objc_fixup_selector_refs (const header_info *hi) +{ + size_t count; + SEL *sels; + + // Fix up selector refs + sels = _getObjcSelectorRefs (hi, &count); + if (sels) { + map_selrefs(sels, sels, count * sizeof(SEL), + hi->mhdr->filetype == MH_BUNDLE); + } +} + + +/*********************************************************************** +* _read_images +* Perform metadata processing for hCount images starting with firstNewHeader +**********************************************************************/ +__private_extern__ void _read_images(header_info **hList, uint32_t hCount) +{ + uint32_t i; + + if (!class_hash) _objc_init_class_hash(); + + // Parts of this order are important for correctness or performance. + + // Read classes from all images. + for (i = 0; i < hCount; i++) { + _objc_read_classes_from_image(hList[i]); + } + + // Read categories from all images. + BOOL needFlush = NO; + for (i = 0; i < hCount; i++) { + needFlush |= _objc_read_categories_from_image(hList[i]); + } + if (needFlush) flush_marked_caches(); + + // Connect classes from all images. + for (i = 0; i < hCount; i++) { + _objc_connect_classes_from_image(hList[i]); + } + + // Fix up class refs, selector refs, and protocol objects from all images. + for (i = 0; i < hCount; i++) { + _objc_map_class_refs_for_image(hList[i]); + _objc_fixup_selector_refs(hList[i]); + _objc_fixup_protocol_objects_for_image(hList[i]); + } +} + + +/*********************************************************************** +* prepare_load_methods +* Schedule +load for classes in this image, any un-+load-ed +* superclasses in other images, and any categories in this image. +**********************************************************************/ +// Recursively schedule +load for cls and any un-+load-ed superclasses. +// cls must already be connected. +static void schedule_class_load(struct old_class *cls) +{ + if (cls->info & CLS_LOADED) return; + if (cls->super_class) schedule_class_load(cls->super_class); + add_class_to_loadable_list((Class)cls); + cls->info |= CLS_LOADED; +} + +__private_extern__ void prepare_load_methods(header_info *hi) +{ + Module mods; + unsigned int midx; + + + if (_objcHeaderIsReplacement(hi)) { + // Ignore any classes in this image + return; + } + + // Major loop - process all modules in the image + mods = hi->mod_ptr; + for (midx = 0; midx < hi->mod_count; midx += 1) + { + unsigned int index; + + // 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) + { + // Locate the class description pointer + struct old_class *cls = mods[midx].symtab->defs[index]; + if (cls->info & CLS_CONNECTED) { + schedule_class_load(cls); + } + } + } + + + // Major loop - process all modules in the header + mods = hi->mod_ptr; + + // 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; + Symtab symtab = mods[midx].symtab; + + // 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; + + // Minor loop - register all categories from given module + index = total; + while (index-- > mods[midx].symtab->cls_def_cnt) { + struct old_category *cat = symtab->defs[index]; + add_category_to_loadable_list((Category)cat); + } + } +} + + +/*********************************************************************** +* _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 +**********************************************************************/ +// Re-pend any class references in refs that point into [start..end) +static void rependClassReferences(struct old_class **refs, size_t count, + uintptr_t start, uintptr_t end) +{ + size_t i; + + if (!refs) return; + + // Process each class ref + for (i = 0; i < count; i++) { + if ((uintptr_t)(refs[i]) >= start && (uintptr_t)(refs[i]) < end) { + pendClassReference(&refs[i], refs[i]->name, + (refs[i]->info & CLS_META) ? YES : NO); + refs[i] = (struct old_class *)_class_getNonexistentObjectClass(); + } + } +} + + +static void try_free(const void *p) +{ + if (p && malloc_size(p)) free((void *)p); +} + +// Deallocate all memory in a method list +static void unload_mlist(struct old_method_list *mlist) +{ + int i; + if (mlist->obsolete == _OBJC_FIXED_UP) { + for (i = 0; i < mlist->method_count; i++) { + try_free(mlist->method_list[i].method_types); + } + + try_free(mlist); + } +} + +// Deallocate all memory in a class. +__private_extern__ void unload_class(struct old_class *cls) +{ + // Free ivar lists + if (cls->ivars) { + int i; + for (i = 0; i < cls->ivars->ivar_count; i++) { + try_free(cls->ivars->ivar_list[i].ivar_name); + try_free(cls->ivars->ivar_list[i].ivar_type); + } + try_free(cls->ivars); + } + + // Free fixed-up method lists and method list array + if (cls->methodLists) { + // more than zero method lists + if (cls->info & CLS_NO_METHOD_ARRAY) { + // one method list + unload_mlist((struct old_method_list *)cls->methodLists); + } + else { + // more than one method list + struct old_method_list **mlistp; + for (mlistp = cls->methodLists; + *mlistp != NULL && *mlistp != END_OF_METHODS_LIST; + mlistp++) + { + unload_mlist(*mlistp); + } + free(cls->methodLists); + } + } + + // Free protocol list + struct old_protocol_list *protos = cls->protocols; + while (protos) { + struct old_protocol_list *dead = protos; + protos = protos->next; + try_free(dead); + } + + // Free method cache + if (cls->cache && cls->cache != &_objc_empty_cache) { + _cache_free(cls->cache); + } + + if ((cls->info & CLS_EXT)) { + if (cls->ext) { + // Free property lists and property list array + if (cls->ext->propertyLists) { + // more than zero property lists + if (cls->info & CLS_NO_PROPERTY_ARRAY) { + // one property list + try_free(cls->ext->propertyLists); + } else { + // more than one property list + struct objc_property_list **plistp; + for (plistp = cls->ext->propertyLists; + *plistp != NULL; + plistp++) + { + try_free(*plistp); + } + try_free(cls->ext->propertyLists); + } + } + + // Free weak ivar layout + try_free(cls->ext->weak_ivar_layout); + + // Free ext + try_free(cls->ext); + } + + // Free non-weak ivar layout + try_free(cls->ivar_layout); + } + + // Free class name + try_free(cls->name); + + // Free cls + try_free(cls); +} + + +static void _objc_remove_classes_in_image(header_info *hi) +{ + unsigned int index; + unsigned int midx; + Module mods; + + OBJC_LOCK(&classLock); + + // 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 old_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((Class)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 heap memory pointed to by the class + unload_class(cls->isa); + unload_class(cls); + } + } + + + // Search all other images for class refs that point back to this range. + // Un-fix and re-pend any such class refs. + + // 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; + + header_info *other_hi; + for (other_hi = _objc_headerStart(); + other_hi != NULL; + other_hi = other_hi->next) + { + struct old_class **other_refs; + size_t count; + if (other_hi == hi) continue; // skip the image being unloaded + + // Fix class refs in the other image + other_refs = _getObjcClassRefs(other_hi, &count); + rependClassReferences(other_refs, count, seg, seg+seg_size); + } + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* _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 old_category *cat = symtab->defs[index]; + + // Clean up loadable category list + remove_category_from_loadable_list((Category)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; + } + } + } + } + } +} + + +/*********************************************************************** +* 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; + + _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", + _nameForHeader(hi->mhdr), (void *)seg, (void*)(seg+seg_size)); + + OBJC_LOCK(&classLock); + + // 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 old_category *cat = symtab->defs[index]; + struct old_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); + } + } + } + } + + // 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 old_class *cls; + NXHashState state; + + 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); + } + } + } + + OBJC_UNLOCK(&classLock); +} + + +/*********************************************************************** +* _unload_image +* Only handles MH_BUNDLE for now. +**********************************************************************/ +__private_extern__ void _unload_image(header_info *hi) +{ + // 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); +} + + +/*********************************************************************** +* objc_addClass. Add the specified class to the table of known classes, +* after doing a little verification and fixup. +**********************************************************************/ +void objc_addClass (Class cls_gen) +{ + struct old_class *cls = _class_asOld(cls_gen); + + OBJC_WARN_DEPRECATED; + + // Synchronize access to hash table + OBJC_LOCK (&classLock); + + // Make sure both the class and the metaclass have caches! + // 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 (cls->cache == NULL) { + cls->cache = (Cache) &_objc_empty_cache; + cls->info = CLS_CLASS; + } + + if (cls->isa->cache == NULL) { + cls->isa->cache = (Cache) &_objc_empty_cache; + 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); + + // Superclass is no longer a leaf for cache flushing + if (cls->super_class && (cls->super_class->info & CLS_LEAF)) { + _class_clearInfo((Class)cls->super_class, CLS_LEAF); + _class_clearInfo((Class)cls->super_class->isa, CLS_LEAF); + } + + // Desynchronize + OBJC_UNLOCK (&classLock); +} + +/*********************************************************************** +* _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 old_class *cls) +{ + struct old_method_list * originalList; + const int initialEntries = 4; + size_t mallocSize; + struct old_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 old_method_list *) cls->methodLists; + + // Allocate and zero a method list array + mallocSize = sizeof(struct old_method_list *) * initialEntries; + ptr = (struct old_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 + cls->methodLists = ptr; + _class_clearInfo((Class)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. +**********************************************************************/ +__private_extern__ void _objc_insertMethods(struct old_class *cls, + struct old_method_list *mlist, + struct old_category *cat) +{ + struct old_method_list ***list; + struct old_method_list **ptr; + ptrdiff_t endIndex; + size_t oldSize; + size_t newSize; + + if (!cls->methodLists) { + // cls has no methods - simply use this method list + cls->methodLists = (struct old_method_list **)mlist; + _class_setInfo((Class)cls, CLS_NO_METHOD_ARRAY); + return; + } + + // Log any existing methods being replaced + if (PrintReplacedMethods) { + int i; + for (i = 0; i < mlist->method_count; i++) { + extern IMP findIMPInClass(struct old_class *cls, SEL sel); + SEL sel = sel_registerName((char *)mlist->method_list[i].method_name); + IMP newImp = mlist->method_list[i].method_imp; + IMP oldImp; + + if ((oldImp = findIMPInClass(cls, sel))) { + _objc_inform("REPLACED: %c[%s %s] %s%s (IMP was %p, now %p)", + ISMETA(cls) ? '+' : '-', + cls->name, sel_getName(sel), + cat ? "by category " : "", + cat ? cat->category_name : "", + oldImp, newImp); + } + } + } + + // 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, add to it + if (*ptr == END_OF_METHODS_LIST) + { + // Calculate old and new dimensions + endIndex = ptr - *list; + oldSize = (endIndex + 1) * sizeof(void *); + newSize = oldSize + sizeof(struct old_method_list *); // only increase by 1 + + // Grow the method list array by one. + // This block may be from user code; don't use _realloc_internal + *list = (struct old_method_list **)realloc(*list, newSize); + + // Zero out addition part of new array + bzero (&((*list)[endIndex]), newSize - oldSize); + + // Place new end marker + (*list)[(newSize/sizeof(void *)) - 1] = END_OF_METHODS_LIST; + + // Insertion point corresponds to old array end + ptr = &((*list)[endIndex]); + } + + // Right shift existing entries by one + bcopy (*list, (*list) + 1, ((void *) ptr) - ((void *) *list)); + + // Insert at method list at beginning of array + **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. +**********************************************************************/ +__private_extern__ void _objc_removeMethods(struct old_class *cls, + struct old_method_list *mlist) +{ + struct old_method_list ***list; + struct old_method_list **ptr; + + if (cls->methodLists == NULL) { + // cls has no methods + return; + } + if (cls->methodLists == (struct old_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; + while (*ptr != mlist) { + // fix for radar # 2538790 + if ( *ptr == END_OF_METHODS_LIST ) return; + ptr += 1; + } + + // Remove this entry + *ptr = 0; + + // Left shift the following entries + while (*(++ptr) != END_OF_METHODS_LIST) + *(ptr-1) = *ptr; + *(ptr-1) = 0; +} + +/*********************************************************************** +* _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 old_class *cls, struct old_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 (cls, category->instance_methods, category); + + // Augment class methods + if (category->class_methods) + _objc_insertMethods (cls->isa, category->class_methods, category); + + // Augment protocols + if ((version >= 5) && category->protocols) + { + if (cls->isa->version >= 5) + { + category->protocols->next = cls->protocols; + cls->protocols = category->protocols; + cls->isa->protocols = category->protocols; + } + else + { + _objc_inform ("unable to add protocols from category %s...\n", category->category_name); + _objc_inform ("class `%s' must be recompiled\n", category->class_name); + } + } + + // Augment properties + if (version >= 7 && category->instance_properties) { + if (cls->isa->version >= 6) { + _class_addProperties(cls, category->instance_properties); + } else { + _objc_inform ("unable to add properties from category %s...\n", category->category_name); + _objc_inform ("class `%s' must be recompiled\n", category->class_name); + } + } +} + +/*********************************************************************** +* _objc_add_category_flush_caches. Install the specified category's +* methods into the class it augments, and flush the class' method cache. +* Return YES if some method caches now need to be flushed. +**********************************************************************/ +static BOOL _objc_add_category_flush_caches(struct old_class *cls, struct old_category *category, int version) +{ + BOOL needFlush = NO; + + // Install the category's methods into its intended class + OBJC_LOCK(&methodListLock); + _objc_add_category (cls, category, version); + OBJC_UNLOCK(&methodListLock); + + // Queue for cache flushing so category's methods can get called + if (category->instance_methods) { + _class_setInfo((Class)cls, CLS_FLUSH_CACHE); + needFlush = YES; + } + if (category->class_methods) { + _class_setInfo((Class)cls->isa, CLS_FLUSH_CACHE); + needFlush = YES; + } + + return needFlush; +} + + +/*********************************************************************** +* 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; +} + + +/*********************************************************************** +* resolve_categories_for_class. +* Install all existing categories intended for the specified class. +* cls must be a true class and not a metaclass. +**********************************************************************/ +static void resolve_categories_for_class(struct old_class *cls) +{ + _objc_unresolved_category * pending; + _objc_unresolved_category * next; + + // Nothing to do if there are no categories at all + if (!category_hash) return; + + // Locate and remove first element in category list + // associated with this class + pending = NXMapKeyFreeingRemove (category_hash, cls->name); + + // Traverse the list of categories, if any, registered for this class + + // 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, (int)pending->version); + } + + // Delink and reclaim this registration + 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(Class cls_gen) +{ + struct old_class *cls = _class_asOld(cls_gen); + + // 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 = _class_asOld(objc_getClass(baseName)); + } else { + cls = _class_asOld(objc_getClass(cls->name)); + } + } + + resolve_categories_for_class(cls); +} + + +/*********************************************************************** +* _objc_register_category. +* Process a category read from an image. +* If the category's class exists, attach the category immediately. +* Classes that need cache flushing are marked but not flushed. +* 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. +* Returns YES if some method caches now need to be flushed. +**********************************************************************/ +static BOOL _objc_register_category(struct old_category *cat, int version) +{ + _objc_unresolved_category * new_cat; + _objc_unresolved_category * old; + struct old_class *theClass; + + // If the category's class exists, attach the category. + if ((theClass = _class_asOld(objc_lookUpClass(cat->class_name)))) { + return _objc_add_category_flush_caches(theClass, cat, version); + } + + // 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 = _class_asOld(look_up_class(cat->class_name, YES, NO)))) { + _objc_add_category(theClass, cat, version); + return NO; + } + + + // 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_internal_zone ()); + + // 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. + // 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; + (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat); + + return NO; +} + + +__private_extern__ const char ** +_objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount) +{ + Module mods; + int m; + const char **list; + int count; + int allocated; + + list = NULL; + count = 0; + allocated = 0; + + mods = hi->mod_ptr; + for (m = 0; m < hi->mod_count; m++) { + int d; + + if (!mods[m].symtab) continue; + + for (d = 0; d < mods[m].symtab->cls_def_cnt; d++) { + struct old_class *cls = mods[m].symtab->defs[d]; + // fixme what about future-ified classes? + if (class_is_connected(cls)) { + if (count == allocated) { + allocated = allocated*2 + 16; + list = realloc(list, allocated * sizeof(char *)); + } + list[count++] = cls->name; + } + } + } + + if (count > 0) { + // NULL-terminate non-empty list + if (count == allocated) { + allocated = allocated+1; + list = realloc(list, allocated * sizeof(char *)); + } + list[count] = NULL; + } + + if (outCount) *outCount = count; + return list; +} + +#endif diff --git a/runtime/objc-runtime.h b/runtime/objc-runtime.h index 21acf92..1701b1e 100644 --- a/runtime/objc-runtime.h +++ b/runtime/objc-runtime.h @@ -1,200 +1,2 @@ -/* - * Copyright (c) 1999 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-runtime.h - * Copyright 1988-1996, NeXT Software, Inc. - */ - -#ifndef _OBJC_RUNTIME_H_ -#define _OBJC_RUNTIME_H_ - -#import -#import -#import -#import - -#if !defined(AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER) - /* For 10.2 compatibility */ -# define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER -#endif - -typedef struct objc_symtab *Symtab; - -struct objc_symtab { - unsigned long sel_ref_cnt; - SEL *refs; - unsigned short cls_def_cnt; - unsigned short cat_def_cnt; - void *defs[1]; /* variable size */ -}; - -typedef struct objc_module *Module; - -struct objc_module { - unsigned long version; - unsigned long size; - const char *name; - Symtab symtab; -}; - -struct objc_super { - id receiver; -#ifndef __cplusplus - Class class; -#else - Class super_class; -#endif -}; - -/* - * Messaging Primitives (prototypes) - */ - -OBJC_EXPORT id objc_getClass(const char *name); -OBJC_EXPORT id objc_getMetaClass(const char *name); -OBJC_EXPORT id objc_msgSend(id self, SEL op, ...); -OBJC_EXPORT id objc_msgSendSuper(struct objc_super *super, SEL op, ...); - - -/* Floating-point-returning Messaging Primitives (prototypes) - * - * On some platforms, the ABI for functions returning a floating-point - * value is incompatible with that for functions returning an integral type. - * objc_msgSend_fpret must be used for these. - * - * ppc: objc_msgSend_fpret not used - * ppc64: objc_msgSend_fpret not used - * i386: objc_msgSend_fpret REQUIRED - * - * For `float` or `long double` return types, cast the function - * to an appropriate function pointer type first. - */ - -#ifdef __i386__ -OBJC_EXPORT double objc_msgSend_fpret(id self, SEL op, ...); -#endif - - -/* Struct-returning Messaging Primitives (prototypes) - * - * For historical reasons, the prototypes for the struct-returning - * messengers are unusual. The portable, correct way to call these functions - * is to cast them to your desired return type first. - * - * For example, `NSRect result = [myNSView frame]` could be written as: - * NSRect (*msgSend_stret_fn)(id, SEL, ...) = (NSRect(*)(id, SEL, ...))objc_msgSend_stret; - * NSRect result = (*msgSend_stret_fn)(myNSView, @selector(frame)); - * or, without the function pointer: - * NSRect result = (*(NSRect(*)(id, SEL, ...))objc_msgSend_stret)(myNSView, @selector(frame)); - * - * BE WARNED that these prototypes have changed in the past and will change - * in the future. Code that uses a cast like the example above will be - * unaffected. - */ - -#if defined(__cplusplus) - OBJC_EXPORT id objc_msgSend_stret(id self, SEL op, ...); - OBJC_EXPORT id objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...); -#else - OBJC_EXPORT void objc_msgSend_stret(void * stretAddr, id self, SEL op, ...); - OBJC_EXPORT void objc_msgSendSuper_stret(void * stretAddr, struct objc_super *super, SEL op, ...); -#endif - - -/* Forwarding */ - -/* Note that objc_msgSendv_stret() does not return a structure type, - * and should not be cast to do so. This is unlike objc_msgSend_stret() - * and objc_msgSendSuper_stret(). - */ - -OBJC_EXPORT id objc_msgSendv(id self, SEL op, unsigned arg_size, marg_list arg_frame); -OBJC_EXPORT void objc_msgSendv_stret(void * stretAddr, id self, SEL op, unsigned arg_size, marg_list arg_frame); -#ifdef __i386__ -OBJC_EXPORT double objc_msgSendv_fpret(id self, SEL op, unsigned arg_size, marg_list arg_frame); -#endif - - -/* - getting all the classes in the application... - - int objc_getClassList(buffer, bufferLen) - classes is an array of Class values (which are pointers) - which will be filled by the function; if this - argument is NULL, no copying is done, only the - return value is returned - bufferLen is the number of Class values the given buffer - can hold; if the buffer is not large enough to - hold all the classes, the buffer is filled to - the indicated capacity with some arbitrary subset - of the known classes, which could be different - from call to call - returns the number of classes, which is the number put - in the buffer if the buffer was large enough, - or the length the buffer should have been - - int numClasses = 0, newNumClasses = objc_getClassList(NULL, 0); - Class *classes = NULL; - while (numClasses < newNumClasses) { - numClasses = newNumClasses; - classes = realloc(classes, sizeof(Class) * numClasses); - newNumClasses = objc_getClassList(classes, numClasses); - } - // now, can use the classes list; if NULL, there are no classes - free(classes); - -*/ -OBJC_EXPORT int objc_getClassList(Class *buffer, int bufferLen); - -#define OBSOLETE_OBJC_GETCLASSES 1 -#if OBSOLETE_OBJC_GETCLASSES -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 */ - -OBJC_EXPORT void objc_setClassHandler(int (*)(const char *)); - -/* Making the Objective-C runtime thread safe. */ -OBJC_EXPORT void objc_setMultithreaded (BOOL flag); - -/* overriding the default object allocation and error handling routines */ - -OBJC_EXPORT id (*_alloc)(Class, unsigned int); -OBJC_EXPORT id (*_copy)(id, unsigned int); -OBJC_EXPORT id (*_realloc)(id, unsigned int); -OBJC_EXPORT id (*_dealloc)(id); -OBJC_EXPORT id (*_zoneAlloc)(Class, unsigned int, void *); -OBJC_EXPORT id (*_zoneRealloc)(id, unsigned int, void *); -OBJC_EXPORT id (*_zoneCopy)(id, unsigned int, void *); - -OBJC_EXPORT void (*_error)(id, const char *, va_list); - - -#endif /* _OBJC_RUNTIME_H_ */ +#import +#import diff --git a/runtime/objc-runtime.m b/runtime/objc-runtime.m index 3b90f09..99db00e 100644 --- a/runtime/objc-runtime.m +++ b/runtime/objc-runtime.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -29,113 +27,6 @@ * **********************************************************************/ -/*********************************************************************** - * 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. - * Note any +load implementations before categories are attached. - * 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. - * - * Correctness: all classes are scanned for +load before any categories - * are attached. Otherwise, if a category implements +load and its class - * has no class methods, the class's +load scan would find the category's - * +load method, which would then be called twice. - * - **********************************************************************/ /*********************************************************************** @@ -145,1994 +36,281 @@ #include #include #include +#include #include #include - -// project headers first, otherwise we get the installed ones -#import "objc-class.h" -#import -#import -#import "maptable.h" -#import "objc-private.h" -#import -#import -#import "objc-rtp.h" -#import "objc-auto.h" - #include #include #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); - - -OBJC_EXPORT Class getOriginalClassForPosingClass(Class); - - -/*********************************************************************** -* Constants and macros internal to this module. -**********************************************************************/ - -/* Turn on support for literal string objects. */ -#define LITERAL_STRING_OBJECTS - -/*********************************************************************** -* Types internal to this module. -**********************************************************************/ - -typedef struct _objc_unresolved_category -{ - struct _objc_unresolved_category * next; - struct objc_category * cat; // may be NULL - long version; -} _objc_unresolved_category; - -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; // 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. -**********************************************************************/ - -// Function called after class has been fixed up (MACH only) -void (*callbackFunction)(Class, const char *) = 0; - -// Lock for class hashtable -OBJC_DECLARE_LOCK (classLock); - -// 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 -__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"; - - -/*********************************************************************** -* Function prototypes internal to this module. -**********************************************************************/ - -static unsigned classHash (void * info, struct objc_class * data); -static int classIsEqual (void * info, struct objc_class * name, struct objc_class * cls); -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); -static void _objc_read_categories_from_image (header_info * hi); -static const header_info * _headerForClass (struct objc_class * cls); -static NXMapTable * pendingClassRefsMapTable (void); -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 _objc_fixup_protocol_objects_for_image (header_info * hi); -static void _objc_fixup_selector_refs (const header_info * hi); -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 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 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 NOBSS = 0; -static NXHashTablePrototype classHashPrototype = -{ - (unsigned (*) (const void *, const void *)) classHash, - (int (*)(const void *, const void *, const void *)) classIsEqual, - 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; - -// Function pointer objc_getClass calls through when class is not found -static int (*objc_classHandler) (const char *) = _objc_defaultClassHandler; - -// Function pointer called by objc_getClass and objc_lookupClass when -// class is not found. _objc_classLoader is called before objc_classHandler. -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; - -// 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. -**********************************************************************/ -void objc_dump_class_hash (void) -{ - NXHashTable * table; - unsigned count; - struct objc_class * data; - NXHashState state; - - table = class_hash; - count = 0; - state = NXInitHashState (table); - while (NXNextHashState (table, &state, (void **) &data)) - printf ("class %d: %s\n", ++count, data->name); -} - -/*********************************************************************** -* classHash. -**********************************************************************/ -static unsigned classHash (void * info, - struct objc_class * data) -{ - // Nil classes hash to zero - if (!data) - return 0; - - // Call through to real hash function - return _objc_strhash ((unsigned char *) ((struct objc_class *) data)->name); -} - -/*********************************************************************** -* classIsEqual. Returns whether the class names match. If we ever -* check more than the name, routines like objc_lookUpClass have to -* change as well. -**********************************************************************/ -static int classIsEqual (void * info, - struct objc_class * name, - struct objc_class * cls) -{ - // Standard string comparison - // Our local inlined version is significantly shorter on PPC and avoids the - // mflr/mtlr and dyld_stub overhead when calling strcmp. - 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. -**********************************************************************/ -void _objc_init_class_hash (void) -{ - // Do nothing if class hash table already exists - if (class_hash) - return; - - // 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, - 16, - nil, - _objc_internal_zone ()); - _objc_debug_class_hash = class_hash; -} - -/*********************************************************************** -* objc_getClassList. Return the known classes. -**********************************************************************/ -int objc_getClassList(Class *buffer, int bufferLen) { - NXHashState state; - struct objc_class * class; - int cnt, num; - - OBJC_LOCK(&classLock); - num = NXCountHashTable(class_hash); - if (NULL == buffer) { - OBJC_UNLOCK(&classLock); - return num; - } - cnt = 0; - state = NXInitHashState(class_hash); - while (cnt < bufferLen && - NXNextHashState(class_hash, &state, (void **)&class)) - { - buffer[cnt++] = class; - } - OBJC_UNLOCK(&classLock); - return num; -} - -/*********************************************************************** -* objc_getClasses. Return class lookup table. -* -* NOTE: This function is very dangerous, since you cannot safely use -* the hashtable without locking it, and the lock is private! -**********************************************************************/ -void * objc_getClasses (void) -{ - // Return the class lookup hash table - return class_hash; -} - -/*********************************************************************** -* _objc_defaultClassHandler. Default objc_classHandler. Does nothing. -**********************************************************************/ -static int _objc_defaultClassHandler (const char * clsName) -{ - // Return zero so objc_getClass doesn't bother re-searching - return 0; -} - -/*********************************************************************** -* objc_setClassHandler. Set objc_classHandler to the specified value. -* -* NOTE: This should probably deal with userSuppliedHandler being NULL, -* because the objc_classHandler caller does not check... it would bus -* error. It would make sense to handle NULL by restoring the default -* handler. Is anyone hacking with this, though? -**********************************************************************/ -void objc_setClassHandler (int (*userSuppliedHandler) (const char *)) -{ - objc_classHandler = userSuppliedHandler; -} - - -/*********************************************************************** -* 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) -**********************************************************************/ -static id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler) -{ - BOOL includeClassLoader = YES; // class loader cannot be skipped - id result = nil; - struct objc_class query; - - query.name = aClassName; - - retry: - - if (!result && class_hash) { - // Check ordinary classes - OBJC_LOCK (&classLock); - result = (id)NXHashGet(class_hash, &query); - 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 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 -* a new class. -* -* Formerly objc_getClassWithoutWarning () -**********************************************************************/ -id objc_lookUpClass (const char * aClassName) -{ - // NO unconnected, NO class handler - return look_up_class(aClassName, NO, NO); -} - -/*********************************************************************** -* objc_getMetaClass. Return the id of the meta class the named class. -* Warning: doesn't work if aClassName is the name of a posed-for class's isa! -**********************************************************************/ -id objc_getMetaClass (const char * aClassName) -{ - struct objc_class * cls; - - cls = objc_getClass (aClassName); - if (!cls) - { - _objc_inform ("class `%s' not linked into application", aClassName); - return Nil; - } - - return cls->isa; -} - -/*********************************************************************** -* objc_addClass. Add the specified class to the table of known classes, -* after doing a little verification and fixup. -**********************************************************************/ -void objc_addClass (struct objc_class *cls) -{ - // Synchronize access to hash table - OBJC_LOCK (&classLock); - - // Make sure both the class and the metaclass have caches! - // 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 (cls->cache == NULL) { - cls->cache = (Cache) &emptyCache; - cls->info = CLS_CLASS; - } - - 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); - - // Desynchronize - OBJC_UNLOCK (&classLock); -} - -/*********************************************************************** -* _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) -{ - struct objc_method_list * originalList; - const int initialEntries = 4; - 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; +#include +#include - // Allocate and zero a method list array - mallocSize = sizeof(struct objc_method_list *) * initialEntries; - 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 - 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_class *cls, - struct objc_method_list *mlist) -{ - 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, add to it - if (*ptr == END_OF_METHODS_LIST) - { - // Calculate old and new dimensions - endIndex = ptr - *list; - oldSize = (endIndex + 1) * sizeof(void *); - newSize = oldSize + sizeof(struct objc_method_list *); // only increase by 1 - - // 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); - - // Place new end marker - (*list)[(newSize/sizeof(void *)) - 1] = END_OF_METHODS_LIST; - - // Insertion point corresponds to old array end - ptr = &((*list)[endIndex]); - } - - // Right shift existing entries by one - bcopy (*list, (*list) + 1, ((void *) ptr) - ((void *) *list)); - - // Insert at method list at beginning of array - **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_class *cls, - struct objc_method_list *mlist) -{ - 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; - while (*ptr != mlist) { - // fix for radar # 2538790 - if ( *ptr == END_OF_METHODS_LIST ) return; - ptr += 1; - } - - // Remove this entry - *ptr = 0; - - // Left shift the following entries - while (*(++ptr) != END_OF_METHODS_LIST) - *(ptr-1) = *ptr; - *(ptr-1) = 0; -} - -/*********************************************************************** -* _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 (cls, category->instance_methods); - - // Augment class methods - if (category->class_methods) - _objc_insertMethods (cls->isa, category->class_methods); - - // Augment protocols - if ((version >= 5) && category->protocols) - { - if (cls->isa->version >= 5) - { - category->protocols->next = cls->protocols; - cls->protocols = category->protocols; - cls->isa->protocols = category->protocols; - } - else - { - _objc_inform ("unable to add protocols from category %s...\n", category->category_name); - _objc_inform ("class `%s' must be recompiled\n", category->class_name); - } - } -} - -/*********************************************************************** -* _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; -} - - -/*********************************************************************** -* resolve_categories_for_class. -* Install all existing categories intended for the specified class. -* cls must be a true class and not a metaclass. -**********************************************************************/ -static void resolve_categories_for_class(struct objc_class *cls) -{ - _objc_unresolved_category * pending; - _objc_unresolved_category * next; - - // Nothing to do if there are no categories at all - if (!category_hash) return; - - // Locate and remove first element in category list - // associated with this class - pending = NXMapKeyFreeingRemove (category_hash, cls->name); - - // Traverse the list of categories, if any, registered for this class - - // 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); - } - - // Delink and reclaim this registration - 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. -* 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) -{ - _objc_unresolved_category * new_cat; - _objc_unresolved_category * old; - struct objc_class *theClass; - - // 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_internal_zone ()); - - // 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. - // 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; - (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat); -} - - -/*********************************************************************** -* _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_read_categories_from_image (header_info * hi) -{ - Module mods; - unsigned int midx; - - if (_objcHeaderIsReplacement(hi)) { - // Ignore any categories in this image - return; - } - - - // Major loop - process all modules in the header - mods = hi->mod_ptr; - - // 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; - - // Minor loop - register all categories from given module - 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); - } - } -} - - -/*********************************************************************** -* _headerForAddress. -* addr can be a class or a category -**********************************************************************/ -static const header_info *_headerForAddress(void *addr) -{ - 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 - if (!hInfo->objcSegmentHeader) continue; - seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide; - size = hInfo->objcSegmentHeader->filesize; - - // Is the class in this header? - if ((seg <= (unsigned long) addr) && - ((unsigned long) addr < (seg + size))) - return hInfo; - } - - // Not found - return 0; -} - - -/*********************************************************************** -* _headerForClass -* Return the image header containing this class, or NULL. -* Returns NULL on runtime-constructed classes, and the NSCF classes. -**********************************************************************/ -static const header_info *_headerForClass(struct objc_class *cls) -{ - return _headerForAddress(cls); -} - - -/*********************************************************************** -* _nameForHeader. -**********************************************************************/ -const char * _nameForHeader (const headerType * header) -{ - return _getObjcHeaderName ((headerType *) header); -} - - -/*********************************************************************** -* 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 BOOL class_is_connected(struct objc_class *cls) -{ - BOOL result; - OBJC_LOCK(&classLock); - result = NXHashMember(class_hash, cls); - OBJC_UNLOCK(&classLock); - return result; -} - - -/*********************************************************************** -* pendingClassRefsMapTable. Return a pointer to the lookup table for -* pending class refs. -**********************************************************************/ -static inline NXMapTable *pendingClassRefsMapTable(void) -{ - // Allocate table if needed - if (!pendingClassRefsMap) { - pendingClassRefsMap = - NXCreateMapTableFromZone(NXStrValueMapPrototype, - 10, _objc_internal_zone ()); - } - - // Return table pointer - return pendingClassRefsMap; -} - - -/*********************************************************************** -* pendingSubclassesMapTable. Return a pointer to the lookup table for -* pending subclasses. -**********************************************************************/ -static inline NXMapTable *pendingSubclassesMapTable(void) -{ - // Allocate table if needed - if (!pendingSubclassesMap) { - pendingSubclassesMap = - NXCreateMapTableFromZone(NXStrValueMapPrototype, - 10, _objc_internal_zone ()); - } - - // Return table pointer - return pendingSubclassesMap; -} - - -/*********************************************************************** -* pendClassInstallation -* Finish connecting class cls when its superclass becomes connected. -* Check for multiple pends of the same class because connect_class does not. -**********************************************************************/ -static void pendClassInstallation(struct objc_class *cls, - const char *superName) -{ - NXMapTable *table; - PendingSubclass *pending; - PendingSubclass *oldList; - PendingSubclass *l; - - // Create and/or locate pending class lookup table - table = pendingSubclassesMapTable (); - - // 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); -} - - -/*********************************************************************** -* pendClassReference -* Fix up a class ref when the class with the given name becomes connected. -**********************************************************************/ -static void pendClassReference(struct objc_class **ref, - const char *className) -{ - NXMapTable *table; - PendingClassRef *pending; - - // Create and/or locate pending class lookup table - table = pendingClassRefsMapTable (); - - // Create entry containing the class reference - pending = _malloc_internal(sizeof(PendingClassRef)); - pending->ref = ref; - - // Link new entry into head of list of entries for this class - pending->next = NXMapGet (table, className); - - // (Re)place entry list in the table - (void) NXMapKeyCopyingInsert (table, className, pending); - - if (PrintConnecting) { - _objc_inform("CONNECT: pended reference to class '%s' at %p", - className, (void *)ref); - } -} - - -/*********************************************************************** -* resolve_references_to_class -* Fix up any pending class refs to this class. -**********************************************************************/ -static void resolve_references_to_class(struct objc_class *cls) -{ - PendingClassRef *pending; - - if (!pendingClassRefsMap) return; // no unresolved refs for any class - - pending = NXMapGet(pendingClassRefsMap, cls->name); - if (!pending) return; // no unresolved refs for this class - - NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name); - - if (PrintConnecting) { - _objc_inform("CONNECT: resolving references to class '%s'", cls->name); - } - - 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; - - if (cls->isa->info & CLS_HAS_LOAD_METHOD) { - 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); +#import "objc-private.h" +#import "hashtable2.h" +#import "maptable.h" +#import "Object.h" +#import "objc-rtp.h" +#import "objc-auto.h" +#import "objc-loadmethod.h" - load_method_thread = NULL; -} +OBJC_EXPORT Class getOriginalClassForPosingClass(Class); /*********************************************************************** -* 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. +* Exports. **********************************************************************/ -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); +// 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 PrintInitializing = -1; // env OBJC_PRINT_INITIALIZE_METHODS +__private_extern__ int PrintResolving = -1; // env OBJC_PRINT_RESOLVED_METHODS +__private_extern__ int PrintConnecting = -1; // env OBJC_PRINT_CLASS_SETUP +__private_extern__ int PrintProtocols = -1; // env OBJC_PRINT_PROTOCOL_SETUP +__private_extern__ int PrintIvars = -1; // env OBJC_PRINT_IVAR_SETUP +__private_extern__ int PrintFuture = -1; // env OBJC_PRINT_FUTURE_CLASSES +__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 PrintExceptions = -1; // env OBJC_PRINT_EXCEPTIONS +__private_extern__ int PrintAltHandlers = -1; // env OBJC_PRINT_ALT_HANDLERS +__private_extern__ int PrintDeprecation = -1;// env OBJC_PRINT_DEPRECATION_WARNINGS +__private_extern__ int PrintReplacedMethods = -1; // env OBJC_PRINT_REPLACED_METHODS +__private_extern__ int PrintCacheCollection = -1; // env OBJC_PRINT_CACHE_COLLECTION - // Delete unconnected_class_hash if it is now empty. - if (NXCountHashTable(unconnected_class_hash) == 0) { - NXFreeHashTable(unconnected_class_hash); - unconnected_class_hash = NULL; - } +__private_extern__ int UseInternalZone = -1; // env OBJC_USE_INTERNAL_ZONE +__private_extern__ int AllowInterposing = -1;// env OBJC_ALLOW_INTERPOSING - OBJC_UNLOCK(&classLock); +__private_extern__ int DebugUnload = -1; // env OBJC_DEBUG_UNLOAD +__private_extern__ int DebugFragileSuperclasses = -1; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES +__private_extern__ int DebugNilSync = -1; // env OBJC_DEBUG_NIL_SYNC - // 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); - } - } +__private_extern__ int DisableGC = -1; // env OBJC_DISABLE_GC +__private_extern__ int DebugFinalizers = -1; // env OBJC_DEBUG_FINALIZERS - // 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; - } +// objc's key for pthread_getspecific +static pthread_key_t _objc_pthread_key = 0; - 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); - } - } - } -} +// 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"; /*********************************************************************** -* 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) +* Function prototypes internal to this module. **********************************************************************/ -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); +static void _objc_unmap_image(header_info *hi); - 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); - } +/*********************************************************************** +* Static data internal to this module. +**********************************************************************/ - really_connect_class(cls, supercls); - return TRUE; - } -} +// we keep a linked list of header_info's describing each image as told to us by dyld +static header_info *FirstHeader NOBSS = 0; // NULL means empty list +static header_info *LastHeader NOBSS = 0; // NULL means invalid; recompute it +static int HeaderCount NOBSS = 0; /*********************************************************************** -* _objc_read_classes_from_image. -* Read classes from the given image, perform assorted minor fixups, -* scan for +load implementation. -* Does not connect classes to superclasses. -* Does attach pended categories to the classes. -* Adds all classes to unconnected_class_hash. class_hash is unchanged. +* 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! **********************************************************************/ -static void _objc_read_classes_from_image(header_info *hi) +id objc_getClass(const char *aClassName) { - unsigned int index; - unsigned int midx; - Module mods; - 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 = 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 * newCls; - struct objc_method_list *mlist; - - // Locate the class description pointer - newCls = mods[midx].symtab->defs[index]; - - // 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; - - // Check for +load implementation before categories are attached - if ((mlist = get_base_method_list(newCls->isa))) { - if (lookupNamedMethodInMethodList (mlist, "load")) { - newCls->isa->info |= CLS_HAS_LOAD_METHOD; - } - } - - // 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); + if (!aClassName) return Nil; - // 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); - } - } + // NO unconnected, YES class handler + return look_up_class(aClassName, NO, YES); } /*********************************************************************** -* _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. +* 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. **********************************************************************/ -static void _objc_connect_classes_from_image(header_info *hi) +id objc_getRequiredClass(const char *aClassName) { - unsigned int index; - unsigned int midx; - Module mods; - BOOL replacement = _objcHeaderIsReplacement(hi); - - // 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 = 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); - } - } - } + id cls = objc_getClass(aClassName); + if (!cls) _objc_fatal("link error: class '%s' not found.", aClassName); + return cls; } /*********************************************************************** -* _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 -* not yet exist, the reference is added to a list of pending references -* to be fixed up at a later date. +* objc_lookUpClass. Return the id of the named class. +* If the class does not exist, call _objc_classLoader, which may create +* a new class. +* +* Formerly objc_getClassWithoutWarning () **********************************************************************/ -static void _objc_map_class_refs_for_image (header_info * hi) +id objc_lookUpClass(const char *aClassName) { - struct objc_class * * cls_refs; - unsigned int size; - unsigned int index; - - // Locate class refs in image - cls_refs = _getObjcClassRefs ((headerType *) hi->mhdr, &size); - if (!cls_refs) - return; - cls_refs = (struct objc_class * *) ((unsigned long) cls_refs + hi->image_slide); - - // Process each class ref - for (index = 0; index < size; index += 1) - { - const char * ref; - struct objc_class * cls; - - // Get ref to convert from name string to class pointer - ref = (const char *) cls_refs[index]; - - // Get pointer to class of this name - // 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 (); - } - } -} + if (!aClassName) return Nil; + // NO unconnected, NO class handler + return look_up_class(aClassName, NO, NO); +} /*********************************************************************** -* _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. +* objc_getFutureClass. Return the id of the named class. +* If the class does not exist, return an uninitialized class +* structure that will be used for the class when and if it +* does get loaded. +* Not thread safe. **********************************************************************/ -static void _objc_remove_pending_class_refs_in_image(header_info *hi) +Class objc_getFutureClass(const char *name) { - struct objc_class **cls_refs, **cls_refs_end; - unsigned int size; - - if (!pendingClassRefsMap) return; + Class cls; - // 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; - } + // YES unconnected, NO class handler + // (unconnected is OK because it will someday be the real class) + cls = look_up_class(name, YES, NO); + if (cls) { + if (PrintFuture) { + _objc_inform("FUTURE: found %p already in use for %s", cls, name); } - } + return cls; + } + + // No class or future class with that name yet. Make one. + // fixme not thread-safe with respect to + // simultaneous library load or getFutureClass. + return _objc_allocateFutureClass(name); } /*********************************************************************** -* 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. +* objc_getMetaClass. Return the id of the meta class the named class. +* Warning: doesn't work if aClassName is the name of a posed-for class's isa! **********************************************************************/ -static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy) +id objc_getMetaClass(const char *aClassName) { - BOOL result = NO; - unsigned int cnt = size / sizeof(SEL); - unsigned int index; + Class cls; - sel_lock(); + if (!aClassName) return Nil; - // Process each selector - for (index = 0; index < cnt; index += 1) + cls = objc_getClass (aClassName); + if (!cls) { - SEL sel; - - // Lookup pointer to uniqued string - 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 (dst[index] != sel) { - dst[index] = sel; - result = YES; - } + _objc_inform ("class `%s' not linked into application", aClassName); + return Nil; } - - sel_unlock(); - return result; + return ((id)cls)->isa; } +#if !__LP64__ +// Not updated for 64-bit ABI + /*********************************************************************** -* 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. +* _headerForAddress. +* addr can be a class or a category **********************************************************************/ -static void map_method_descs (struct objc_method_description_list * methods, BOOL copy) +static const header_info *_headerForAddress(void *addr) { - unsigned int index; - - sel_lock(); + unsigned long size; + unsigned long seg; + header_info * hInfo; - // Process each method - for (index = 0; index < methods->count; index += 1) + // Check all headers in the vector + for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next) { - struct objc_method_description * method; - SEL sel; - - // Get method entry to fix up - method = &methods->list[index]; - - // Lookup pointer to uniqued string - sel = sel_registerNameNoLock((const char *) method->name, copy); + // Locate header data, if any + if (!hInfo->objcSegmentHeader) continue; + seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide; + size = hInfo->objcSegmentHeader->filesize; - // Replace this selector with uniqued one (avoid - // modifying the VM page if this would be a NOP) - if (method->name != sel) - method->name = sel; + // Is the class in this header? + if ((seg <= (unsigned long) addr) && + ((unsigned long) addr < (seg + size))) + return hInfo; } - sel_unlock(); + // Not found + return 0; } + /*********************************************************************** -* _fixup. +* _headerForClass +* Return the image header containing this class, or NULL. +* Returns NULL on runtime-constructed classes, and the NSCF classes. **********************************************************************/ -@interface Protocol(RuntimePrivate) -+ _fixup: (OBJC_PROTOCOL_PTR)protos numElements: (int) nentries; -@end +__private_extern__ const header_info *_headerForClass(Class cls) +{ + return _headerForAddress(cls); +} + +// !__LP64__ +#endif + /*********************************************************************** -* _objc_fixup_protocol_objects_for_image. For each protocol in the -* specified image, selectorize the method names and call +_fixup. +* _nameForHeader. **********************************************************************/ -static void _objc_fixup_protocol_objects_for_image (header_info * hi) +__private_extern__ const char *_nameForHeader(const headerType *header) { - 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); - if (!protos) - return; + return _getObjcHeaderName ((headerType *) header); +} - // Apply the slide bias - protos = (OBJC_PROTOCOL_PTR) ((unsigned long) protos + hi->image_slide); - // Process each protocol - for (index = 0; index < size; index += 1) - { - // Selectorize the instance methods - if (protos[index] OBJC_PROTOCOL_DEREF instance_methods) - map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods, isBundle); +/*********************************************************************** +* _gcForHInfo. +**********************************************************************/ +__private_extern__ const char *_gcForHInfo(const header_info *hinfo) +{ + if (_objcHeaderRequiresGC(hinfo)) return "requires GC"; + else if (_objcHeaderSupportsGC(hinfo)) return "supports GC"; + else return "does not support GC"; +} +__private_extern__ const char *_gcForHInfo2(const header_info *hinfo) +{ + if (_objcHeaderRequiresGC(hinfo)) return " (requires GC)"; + else if (_objcHeaderSupportsGC(hinfo)) return " (supports GC)"; + else return ""; +} - // Selectorize the class methods - if (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 - [Protocol _fixup:(OBJC_PROTOCOL_PTR)protos numElements:size]; +/*********************************************************************** +* bad_magic. +* Return YES if the header has invalid Mach-o magic. +**********************************************************************/ +static BOOL bad_magic(const headerType *mhdr) +{ + return (mhdr->magic != MH_MAGIC && mhdr->magic != MH_MAGIC_64 && + mhdr->magic != MH_CIGAM && mhdr->magic != MH_CIGAM_64); } + /*********************************************************************** * _objc_headerStart. Return what headers we know about. **********************************************************************/ -header_info * _objc_headerStart () +__private_extern__ header_info *_objc_headerStart(void) { - // Take advatage of our previous work return FirstHeader; } -void _objc_bindModuleContainingList() { - /* We define this for backwards binary compat with things which should not - * have been using it (cough OmniWeb), but now it does nothing for them. - */ -} - /*********************************************************************** * _objc_addHeader. +* Returns NULL if the header has no ObjC metadata. **********************************************************************/ // tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20 @@ -2141,28 +319,28 @@ void _objc_bindModuleContainingList() { static int HeaderInfoCounter NOBSS = 0; static header_info HeaderInfoTable[HINFO_SIZE] NOBSS = { {0} }; -static header_info * _objc_addHeader(const struct mach_header *header) +static header_info * _objc_addHeader(const headerType *header) { - 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; + size_t info_size = 0; + const segmentType *objc_segment; + const segmentType *objc2_segment; + const objc_image_info *image_info; + const segmentType *data_segment; header_info *result; + ptrdiff_t image_slide; + + // Weed out duplicates + for (result = FirstHeader; result; result = result->next) { + if (header == result->mhdr) return NULL; + } // Locate the __OBJC segment + image_slide = _getImageSlide(header); + image_info = _getObjcImageInfo(header, image_slide, &info_size); objc_segment = getsegbynamefromheader(header, SEG_OBJC); - if (!objc_segment) return NULL; - - // 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); - - // Calculate vm slide. - slide = _getImageSlide(header); - + objc2_segment = getsegbynamefromheader(header, SEG_OBJC2); + data_segment = getsegbynamefromheader(header, SEG_DATA); + if (!objc_segment && !image_info && !objc2_segment) return NULL; // Find or allocate a header_info entry. if (HeaderInfoCounter < HINFO_SIZE) { @@ -2173,23 +351,29 @@ static header_info * _objc_addHeader(const struct mach_header *header) // 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->image_slide = image_slide; result->objcSegmentHeader = objc_segment; - if (image_info_unslid) { - result->info = (objc_image_info *)(image_info_unslid + slide); - } else { - result->info = NULL; + result->dataSegmentHeader = data_segment; +#if !__OBJC2__ + result->mod_count = 0; + result->mod_ptr = _getObjcModules(header, result->image_slide, &result->mod_count); +#endif + result->info = image_info; + dladdr(result->mhdr, &result->dl_info); + result->allClassesRealized = NO; + + // dylibs are not allowed to unload + if (result->mhdr->filetype == MH_DYLIB) { + dlopen(result->dl_info.dli_fname, RTLD_NOLOAD); } // 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 = + const objc_image_info *start = result->info; + const objc_image_info *end = (objc_image_info *)(info_size + (uint8_t *)start); - objc_image_info *info = start; + const objc_image_info *info = start; while (info < end) { // version is byte size, except for version 0 size_t struct_size = info->version; @@ -2197,7 +381,7 @@ static header_info * _objc_addHeader(const struct mach_header *header) if (info->version != start->version || 0 != memcmp(info, start, struct_size)) { - _objc_fatal("'%s' has inconsistently-compiled Objective-C " + _objc_inform("'%s' has inconsistently-compiled Objective-C " "code. Please recompile all code in it.", _nameForHeader(header)); } @@ -2207,6 +391,7 @@ static header_info * _objc_addHeader(const struct mach_header *header) // Add the header to the header list. // The header is appended to the list, to preserve the bottom-up order. + HeaderCount++; result->next = NULL; if (!FirstHeader) { // list is empty @@ -2256,6 +441,8 @@ static void _objc_removeHeader(header_info *hi) _free_internal(deadHead); } + HeaderCount--; + break; } } @@ -2270,19 +457,12 @@ static void _objc_removeHeader(header_info *hi) **********************************************************************/ static BOOL check_wants_gc(void) { - // 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"); + if (DisableGC) { + _objc_inform("GC: forcing GC OFF because OBJC_DISABLE_GC is set"); appWantsGC = NO; } else { @@ -2295,15 +475,13 @@ static BOOL check_wants_gc(void) 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"); + _objc_inform("GC: executable '%s' %s", + _nameForHeader(hi->mhdr), _gcForHInfo(hi)); } } } } return appWantsGC; - */ } /*********************************************************************** @@ -2312,12 +490,15 @@ static BOOL check_wants_gc(void) * and presumably ready for gc. ************************************************************************/ -static void verify_gc_readiness(BOOL wantsGC, header_info *hi) +static void verify_gc_readiness(BOOL wantsGC, header_info **hList, + uint32_t hCount) { BOOL busted = NO; + uint32_t i; // Find the libraries and check their GC bits against the app's request - for (; hi != NULL; hi = hi->next) { + for (i = 0; i < hCount; i++) { + header_info *hi = hList[i]; if (hi->mhdr->filetype == MH_EXECUTE) { continue; } @@ -2327,58 +508,37 @@ static void verify_gc_readiness(BOOL wantsGC, header_info *hi) } 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)); + _objc_inform_now_and_on_crash + ("'%s' was not compiled with -fobjc-gc or -fobjc-gc-only, " + "but the application requires GC", + _nameForHeader(hi->mhdr)); busted = YES; } + else if (!wantsGC && _objcHeaderRequiresGC(hi)) { + // App doesn't want GC but library requires it - bad + _objc_inform_now_and_on_crash + ("'%s' was compiled with -fobjc-gc-only, " + "but the application does not support GC", + _nameForHeader(hi->mhdr)); + busted = YES; + } if (PrintGC) { - _objc_inform("GC: library '%s' %s GC", _nameForHeader(hi->mhdr), - _objcHeaderSupportsGC(hi) ? "supports" : "does not support"); + _objc_inform("GC: library '%s' %s", + _nameForHeader(hi->mhdr), _gcForHInfo(hi)); } } if (busted) { // GC state is not consistent. // Kill the process unless one of the forcing flags is set. - if (!ForceGC && !ForceNoGC) { + if (!DisableGC) { _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. -**********************************************************************/ -static void _objc_fixup_selector_refs (const header_info * hi) -{ - unsigned int count; - Module mods; - vm_address_t local_sels; - vm_size_t local_size; - - mods = hi->mod_ptr; - - // Fix up message refs - 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); - - map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, - hi->mhdr->filetype == MH_BUNDLE); - } -} - - /*********************************************************************** * objc_setConfiguration * Read environment variables that affect the runtime. @@ -2387,31 +547,55 @@ static void _objc_fixup_selector_refs (const header_info * hi) static void objc_setConfiguration() { 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"); + int secure = issetugid(); + + if (secure) { + // All environment variables are ignored when setuid or setgid. + if (PrintHelp) _objc_inform("OBJC_HELP ignored when running setuid or setgid"); + if (PrintOptions) _objc_inform("OBJC_PRINT_OPTIONS ignored when running setuid or setgid"); + } + else { + 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_HELP is set"); + _objc_inform("OBJC_PRINT_OPTIONS is set"); } - _objc_inform("OBJC_PRINT_OPTIONS: list which options are set"); - } - if (PrintOptions) { - _objc_inform("OBJC_PRINT_OPTIONS is set"); } #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"); \ + char *value = getenv(#env); \ + var = value != NULL && !strcmp("YES", value); \ + if (secure) { \ + if (var) _objc_inform(#env " ignored when running setuid or setgid"); \ + var = 0; \ + } else { \ + 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"); + "log image and library names as they are loaded"); OPTION(PrintLoading, OBJC_PRINT_LOAD_METHODS, - "log class and category +load methods as they are called"); + "log calls to class and category +load methods"); + OPTION(PrintInitializing, OBJC_PRINT_INITIALIZE_METHODS, + "log calls to class +initialize methods"); + OPTION(PrintResolving, OBJC_PRINT_RESOLVED_METHODS, + "log methods created by +resolveClassMethod: and +resolveInstanceMethod:"); + OPTION(PrintConnecting, OBJC_PRINT_CLASS_SETUP, + "log progress of class and category setup"); + OPTION(PrintProtocols, OBJC_PRINT_PROTOCOL_SETUP, + "log progresso of protocol setup"); + OPTION(PrintIvars, OBJC_PRINT_IVAR_SETUP, + "log processing of non-fragile ivars"); + OPTION(PrintFuture, OBJC_PRINT_FUTURE_CLASSES, + "log use of future classes for toll-free bridging"); OPTION(PrintRTP, OBJC_PRINT_RTP, "log initialization of the Objective-C runtime pages"); OPTION(PrintGC, OBJC_PRINT_GC, @@ -2420,23 +604,34 @@ static void objc_setConfiguration() { "log cross-process memory sharing"); OPTION(PrintCxxCtors, OBJC_PRINT_CXX_CTORS, "log calls to C++ ctors and dtors for instance variables"); + OPTION(PrintExceptions, OBJC_PRINT_EXCEPTIONS, + "log exception handling"); + OPTION(PrintAltHandlers, OBJC_PRINT_ALT_HANDLERS, + "log processing of exception alt handlers"); + OPTION(PrintReplacedMethods, OBJC_PRINT_REPLACED_METHODS, + "log methods replaced by category implementations"); + OPTION(PrintDeprecation, OBJC_PRINT_DEPRECATION_WARNINGS, + "warn about calls to deprecated runtime functions"); + OPTION(PrintCacheCollection, OBJC_PRINT_CACHE_COLLECTION, + "log cleanup of stale method caches"); 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(DebugFinalizers, OBJC_DEBUG_FINALIZERS, + "warn about classes that implement -dealloc but not -finalize"); + OPTION(DebugNilSync, OBJC_DEBUG_NIL_SYNC, + "warn about @synchronized(nil), which does no synchronization"); 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, + OPTION(DisableGC, OBJC_DISABLE_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 } @@ -2446,10 +641,31 @@ static void objc_setConfiguration() { **********************************************************************/ void objc_setMultithreaded (BOOL flag) { + OBJC_WARN_DEPRECATED; + // Nothing here. Thread synchronization in the runtime is always active. } +/*********************************************************************** +* _objc_fetch_pthread_data +* Fetch objc's pthread data for this thread. +* If the data doesn't exist yet and create is NO, return NULL. +* If the data doesn't exist yet and create is YES, allocate and return it. +**********************************************************************/ +__private_extern__ _objc_pthread_data *_objc_fetch_pthread_data(BOOL create) +{ + _objc_pthread_data *data; + + data = pthread_getspecific(_objc_pthread_key); + if (!data && create) { + data = _calloc_internal(1, sizeof(_objc_pthread_data)); + pthread_setspecific(_objc_pthread_key, data); + } + + return data; +} + /*********************************************************************** * _objc_pthread_destroyspecific @@ -2457,28 +673,113 @@ void objc_setMultithreaded (BOOL flag) * arg shouldn't be NULL, but we check anyway. **********************************************************************/ extern void _destroyInitializingClassList(struct _objc_initializing_classes *list); -void _objc_pthread_destroyspecific(void *arg) +__private_extern__ void _objc_pthread_destroyspecific(void *arg) { _objc_pthread_data *data = (_objc_pthread_data *)arg; if (data != NULL) { _destroyInitializingClassList(data->initializingClasses); + _destroyLockList(data->lockList); + _destroySyncCache(data->syncCache); + _destroyAltHandlerList(data->handlerList); // add further cleanup here... - _free_internal(data); + _free_internal(data); + } +} + + +/*********************************************************************** +* _objcInit +* Former library initializer. This function is now merely a placeholder +* for external callers. All runtime initialization has now been moved +* to map_images() and _objc_init. +**********************************************************************/ +void _objcInit(void) +{ + // do nothing +} + + +/*********************************************************************** +* gc_enforcer +* Make sure that images about to be loaded by dyld are GC-acceptable. +* Images linked to the executable are always permitted; they are +* enforced inside map_images() itself. +**********************************************************************/ +static BOOL InitialDyldRegistration = NO; +static const char *gc_enforcer(enum dyld_image_states state, + uint32_t infoCount, + const struct dyld_image_info info[]) +{ + uint32_t i; + + // Linked images get a free pass + if (InitialDyldRegistration) return NULL; + + if (PrintImages) { + _objc_inform("IMAGES: checking %d images for compatibility...", + infoCount); + } + + for (i = 0; i < infoCount; i++) { + const headerType *mhdr = (const headerType *)info[i].imageLoadAddress; + if (bad_magic(mhdr)) continue; + + objc_image_info *image_info; + size_t size; + + if (mhdr == &_mh_dylib_header) { + // libobjc itself - OK + continue; + } + +#if !__LP64__ + // 32-bit: __OBJC seg but no image_info means no GC support + if (!getsegbynamefromheader(mhdr, SEG_OBJC)) { + // not objc - assume OK + continue; + } + image_info = _getObjcImageInfo(mhdr, _getImageSlide(mhdr), &size); + if (!image_info) { + // No image_info - assume GC unsupported + if (!UseGC) { + // GC is OFF - ok + continue; + } else { + // GC is ON - bad + if (PrintImages || PrintGC) { + _objc_inform("IMAGES: rejecting %d images because %s doesn't support GC (no image_info)", infoCount, info[i].imageFilePath); + } + return "GC capability mismatch"; + } + } +#else + // 64-bit: no image_info means no objc at all + image_info = _getObjcImageInfo(mhdr, _getImageSlide(mhdr), &size); + if (!image_info) { + // not objc - assume OK + continue; + } +#endif + + if (UseGC && !_objcInfoSupportsGC(image_info)) { + // GC is ON, but image does not support GC + if (PrintImages || PrintGC) { + _objc_inform("IMAGES: rejecting %d images because %s doesn't support GC", infoCount, info[i].imageFilePath); + } + return "GC capability mismatch"; + } + if (!UseGC && _objcInfoRequiresGC(image_info)) { + // GC is OFF, but image requires GC + if (PrintImages || PrintGC) { + _objc_inform("IMAGES: rejecting %d images because %s requires GC", infoCount, info[i].imageFilePath); + } + return "GC capability mismatch"; + } } -} - -/*********************************************************************** -* _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 + return NULL; } @@ -2491,24 +792,34 @@ void _objcInit(void) * 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 const char *map_images(enum dyld_image_states state, uint32_t infoCount, + const struct dyld_image_info infoList[]) { static BOOL firstTime = YES; static BOOL wantsGC NOBSS = NO; uint32_t i; - header_info *firstNewHeader = NULL; header_info *hInfo; + header_info *hList[infoCount]; + uint32_t hCount; // Perform first-time initialization if necessary. // This function is called before ordinary library initializers. if (firstTime) { + extern SEL FwdSel; // in objc-msg-*.s + // workaround for rdar://5198739 + pthread_key_t unused; + pthread_key_create(&unused, NULL); 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); + FwdSel = sel_registerName("forward::"); // in objc-msg-*.s + exception_init(); + + InitialDyldRegistration = YES; + dyld_register_image_state_change_handler(dyld_image_state_mapped, 0 /* batch */, &gc_enforcer); + InitialDyldRegistration = NO; } if (PrintImages) { @@ -2516,30 +827,27 @@ static void map_images(const struct dyld_image_info infoList[], } - // 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; + // Find all images with Objective-C metadata. + hCount = 0; + i = infoCount; + while (i--) { + const headerType *mhdr = (headerType *)infoList[i].imageLoadAddress; + if (bad_magic(mhdr)) continue; 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; } - if (!firstNewHeader) firstNewHeader = hInfo; + hList[hCount++] = 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)":""); + _gcForHInfo2(hInfo)); } } @@ -2552,343 +860,86 @@ static void map_images(const struct dyld_image_info infoList[], // 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"); - } - + + verify_gc_readiness(wantsGC, hList, hCount); + gc_init(wantsGC); // needs executable for GC decision rtp_init(); // needs GC decision first } else { - verify_gc_readiness(wantsGC, firstNewHeader); - } - - - // Initialize everything. Parts of this order are important for - // correctness or performance. - - // Read classes from all images. - for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { - _objc_read_classes_from_image(hInfo); - } - - // Read categories from all images. - for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { - _objc_read_categories_from_image(hInfo); + verify_gc_readiness(wantsGC, hList, hCount); } - // Connect classes from all images. - for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) { - _objc_connect_classes_from_image(hInfo); - } - - // 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); - } + _read_images(hList, hCount); firstTime = NO; - // Call pending +load methods. - // Note that this may in turn cause map_images() to be called again. - call_load_methods(); + return NULL; } -/*********************************************************************** -* 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) +static const char *load_images(enum dyld_image_states state,uint32_t infoCount, + const struct dyld_image_info infoList[]) { + BOOL found = NO; uint32_t i; - if (PrintImages) { - _objc_inform("IMAGES: processing %u newly-unmapped images...\n", infoCount); - } - - for (i = 0; i < infoCount; i++) { - const struct mach_header *mhdr = infoList[i].imageLoadAddress; - - 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); + i = infoCount; + while (i--) { + header_info *hi; + for (hi = FirstHeader; hi != NULL; hi = hi->next) { + const headerType *mhdr = (headerType*)infoList[i].imageLoadAddress; + if (hi->mhdr == mhdr) { + prepare_load_methods(hi); + found = YES; } } } -} + if (found) call_load_methods(); -/*********************************************************************** -* _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. -**********************************************************************/ -__private_extern__ -void _objc_notify_images(enum dyld_image_mode mode, uint32_t infoCount, - const struct dyld_image_info infoList[]) -{ - if (mode == dyld_image_adding) { - map_images(infoList, infoCount); - } else if (mode == dyld_image_removing) { - unmap_images(infoList, infoCount); - } + return NULL; } - /*********************************************************************** -* _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 +* unmap_image +* Process the given image which is about to be unmapped by dyld. +* mh is mach_header instead of headerType because that's what +* dyld_priv.h says even for 64-bit. **********************************************************************/ -static void _objc_remove_classes_in_image(header_info *hi) +static void unmap_image(const struct mach_header *mh, intptr_t vmaddr_slide) { - unsigned int index; - unsigned int midx; - Module mods; - - OBJC_LOCK(&classLock); - - // 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); - } - } - } - - - // Search all other images for class refs that point back to this range. - // Un-fix and re-pend any such class refs. - - // 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; - - 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 - - // 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); - - // 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 (PrintImages) { + _objc_inform("IMAGES: processing 1 newly-unmapped image...\n"); } - OBJC_UNLOCK(&classLock); -} - - -/*********************************************************************** -* _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; + header_info *hi; - 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; - } - } - } + // Find the runtime's header_info struct for the image + for (hi = FirstHeader; hi != NULL; hi = hi->next) { + if (hi->mhdr == (const headerType *)mh) { + _objc_unmap_image(hi); + return; } } + + // no objc data for this image } /*********************************************************************** -* unload_paranoia -* Various paranoid debugging checks that look for poorly-behaving -* unloadable bundles. -* Called by _objc_unmap_image when OBJC_UNLOAD_DEBUG is set. +* _objc_init +* Static initializer. Registers our image notifier with dyld. +* fixme move map_images' firstTime code here - but GC code might need +* another earlier image notifier **********************************************************************/ -static void unload_paranoia(header_info *hi) +static __attribute__((constructor)) +void _objc_init(void) { - // 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; - - _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", - _nameForHeader(hi->mhdr), seg, seg+seg_size); - - OBJC_LOCK(&classLock); - - // 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); - } - } - } - } - - // 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; - - 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); - } - } - } - - OBJC_UNLOCK(&classLock); + // Register for unmap first, in case some +load unmaps something + _dyld_register_func_for_remove_image(&unmap_image); + dyld_register_image_state_change_handler(dyld_image_state_bound, + 1/*batch*/, &map_images); + dyld_register_image_state_change_handler(dyld_image_state_dependents_initialized, 0/*not batch*/, &load_images); } @@ -2898,34 +949,17 @@ static void unload_paranoia(header_info *hi) * be unloaded by dyld. * Note: not thread-safe, but image loading isn't either. **********************************************************************/ -static void _objc_unmap_image(const headerType *mh) +static void _objc_unmap_image(header_info *hi) { - 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)" : "", + _nameForHeader(hi->mhdr), + hi->mhdr->filetype == MH_BUNDLE ? " (bundle)" : "", _objcHeaderIsReplacement(hi) ? " (replacement)" : "", - _objcHeaderSupportsGC(hi) ? " (supports GC)" : ""); + _gcForHInfo2(hi)); } - // 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); + _unload_image(hi); // Remove header_info from header list _objc_removeHeader(hi); @@ -2955,63 +989,228 @@ id _objc_getNilReceiver(void) /*********************************************************************** -* _objc_setClassLoader -* Similar to objc_setClassHandler, but objc_classLoader is used for -* both objc_getClass() and objc_lookupClass(), and objc_classLoader -* pre-empts objc_classHandler. +* objc_setForwardHandler +**********************************************************************/ +void objc_setForwardHandler(void *fwd, void *fwd_stret) +{ + _objc_forward_handler = fwd; + _objc_forward_stret_handler = fwd_stret; +} + + +#if defined(__ppc__) || defined(__ppc64__) + +// Test to see if either the displacement or destination is within +// the +/- 2^25 range needed for a PPC branch immediate 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 larger branch sequence is required. +// ppc64: max displacement is still +/- 2^25, but intptr_t is bigger + +// tiny: bc* +// small: b, ba (unconditional only) +// 32: bctr with lis+ori only +static BOOL ppc_tiny_displacement(intptr_t displacement) +{ + size_t shift = sizeof(intptr_t) - 16; // ilp32=16, lp64=48 + return (((displacement << shift) >> shift) == displacement); +} + +static BOOL ppc_small_displacement(intptr_t displacement) +{ + size_t shift = sizeof(intptr_t) - 26; // ilp32=6, lp64=38 + return (((displacement << shift) >> shift) == displacement); +} + +#if defined(__ppc64__) +// Same as ppc_small_displacement, but decides whether 32 bits is big enough. +static BOOL ppc_32bit_displacement(intptr_t displacement) +{ + size_t shift = sizeof(intptr_t) - 32; + return (((displacement << shift) >> shift) == displacement); +} +#endif + +/********************************************************************** +* objc_branch_size +* Returns the number of instructions needed +* for a branch from entry to target. **********************************************************************/ -void _objc_setClassLoader(BOOL (*newClassLoader)(const char *)) +__private_extern__ size_t objc_branch_size(void *entry, void *target) { - _objc_classLoader = newClassLoader; + return objc_cond_branch_size(entry, target, COND_ALWAYS); } +__private_extern__ size_t +objc_cond_branch_size(void *entry, void *target, unsigned cond) +{ + intptr_t destination = (intptr_t)target; + intptr_t displacement = (intptr_t)destination - (intptr_t)entry; -#if defined(__ppc__) + if (cond == COND_ALWAYS && ppc_small_displacement(displacement)) { + // fits in unconditional relative branch immediate + return 1; + } + if (cond == COND_ALWAYS && ppc_small_displacement(destination)) { + // fits in unconditional absolute branch immediate + return 1; + } + if (ppc_tiny_displacement(displacement)) { + // fits in conditional relative branch immediate + return 1; + } + if (ppc_tiny_displacement(destination)) { + // fits in conditional absolute branch immediate + return 1; + } +#if defined(__ppc64__) + if (!ppc_32bit_displacement(destination)) { + // fits in 64-bit absolute branch through CTR + return 7; + } +#endif + + // fits in 32-bit absolute branch through CTR + return 4; +} /********************************************************************** * 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. +* The sequence written will be objc_branch_size(entry, target) instructions. * Returns the number of instructions written. **********************************************************************/ __private_extern__ size_t objc_write_branch(void *entry, void *target) +{ + return objc_write_cond_branch(entry, target, COND_ALWAYS); +} + +__private_extern__ size_t +objc_write_cond_branch(void *entry, void *target, unsigned cond) { 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 + if (cond == COND_ALWAYS && ppc_small_displacement(displacement)) { + // use unconditional relative branch with the displacement + address[0] = 0x48000000 | (unsigned)(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) + } + if (cond == COND_ALWAYS && ppc_small_displacement(destination)) { + // use unconditional absolute branch with the destination + address[0] = 0x48000000 | (unsigned)(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 + } + + if (ppc_tiny_displacement(displacement)) { + // use conditional relative branch with the displacement + address[0] = 0x40000000 | cond | (unsigned)(displacement & 0x0000fffc); // b *+displacement + // issued 1 instruction + return 1; + } + if (ppc_tiny_displacement(destination)) { + // use conditional absolute branch with the destination + address[0] = 0x40000000 | cond | (unsigned)(destination & 0x0000fffc) | 2; // ba destination (2 is the absolute flag) + // issued 1 instruction + return 1; + } + + + // destination is large and far away. + // Use an absolute branch via CTR. + +#if defined(__ppc64__) + if (!ppc_32bit_displacement(destination)) { + uint16_t lo = destination & 0xffff; + uint16_t hi = (destination >> 16) & 0xffff; + uint16_t hi2 = (destination >> 32) & 0xffff; + uint16_t hi3 = (destination >> 48) & 0xffff; + + address[0] = 0x3d800000 | hi3; // lis r12, hi3 + address[1] = 0x618c0000 | hi2; // ori r12, r12, hi2 + address[2] = 0x798c07c6; // sldi r12, r12, 32 + address[3] = 0x658c0000 | hi; // oris r12, r12, hi + address[4] = 0x618c0000 | lo; // ori r12, r12, lo + address[5] = 0x7d8903a6; // mtctr r12 + address[6] = 0x4c000420 | cond; // bctr + // issued 7 instructions + return 7; + } +#endif + + { + uint16_t lo = destination & 0xffff; + uint16_t hi = (destination >> 16) & 0xffff; + + address[0] = 0x3d800000 | hi; // lis r12,hi + address[1] = 0x618c0000 | lo; // ori r12,r12,lo + address[2] = 0x7d8903a6; // mtctr r12 + address[3] = 0x4c000420 | cond; // bctr // issued 4 instructions return 4; } } -// defined(__ppc__) +// defined(__ppc__) || defined(__ppc64__) +#endif + +#if defined(__i386__) || defined(__x86_64__) + +/********************************************************************** +* objc_branch_size +* Returns the number of BYTES needed +* for a branch from entry to target. +**********************************************************************/ +__private_extern__ size_t objc_branch_size(void *entry, void *target) +{ + return objc_cond_branch_size(entry, target, COND_ALWAYS); +} + +__private_extern__ size_t +objc_cond_branch_size(void *entry, void *target, unsigned cond) +{ + // For simplicity, always use 32-bit relative jumps. + if (cond == COND_ALWAYS) return 5; + else return 6; +} + +/********************************************************************** +* objc_write_branch +* Writes at entry an i386 branch instruction sequence that branches to target. +* The sequence written will be objc_branch_size(entry, target) BYTES. +* Returns the number of BYTES written. +**********************************************************************/ +__private_extern__ size_t objc_write_branch(void *entry, void *target) +{ + return objc_write_cond_branch(entry, target, COND_ALWAYS); +} + +__private_extern__ size_t +objc_write_cond_branch(void *entry, void *target, unsigned cond) +{ + uint8_t *address = (uint8_t *)entry; // instructions written to here + intptr_t destination = (intptr_t)target; // branch dest as absolute address + intptr_t displacement = (intptr_t)destination - ((intptr_t)address + objc_cond_branch_size(entry, target, cond)); // branch dest as relative offset + + // For simplicity, always use 32-bit relative jumps + if (cond != COND_ALWAYS) { + *address++ = 0x0f; // Jcc prefix + } + *address++ = cond; + *address++ = displacement & 0xff; + *address++ = (displacement >> 8) & 0xff; + *address++ = (displacement >> 16) & 0xff; + *address++ = (displacement >> 24) & 0xff; + + return address - (uint8_t *)entry; +} + +// defined __i386__ #endif @@ -3099,3 +1298,104 @@ __private_extern__ int secure_open(const char *filename, int flags, uid_t euid) } +#if !__OBJC2__ +// GrP fixme +extern Class _objc_getOrigClass(const char *name); +#endif +const char *class_getImageName(Class cls) +{ + int ok; + Dl_info info; + + if (!cls) return NULL; + +#if !__OBJC2__ + cls = _objc_getOrigClass(_class_getName(cls)); +#endif + + ok = dladdr(cls, &info); + if (ok) return info.dli_fname; + else return NULL; +} + + +const char **objc_copyImageNames(unsigned int *outCount) +{ + header_info *hi; + int count = 0; + int max = HeaderCount; + const char **names = calloc(max+1, sizeof(char *)); + + for (hi = _objc_headerStart(); + hi != NULL && count < max; + hi = hi->next) + { + if (hi->dl_info.dli_fname) { + names[count++] = hi->dl_info.dli_fname; + } + } + names[count] = NULL; + + if (count == 0) { + // Return NULL instead of empty list if there are no images + free(names); + names = NULL; + } + + if (outCount) *outCount = count; + return names; +} + + +/********************************************************************** +* +**********************************************************************/ +const char ** +objc_copyClassNamesForImage(const char *image, unsigned int *outCount) +{ + header_info *hi; + + if (!image) { + if (outCount) *outCount = 0; + return NULL; + } + + // Find the image. + for (hi = _objc_headerStart(); hi != NULL; hi = hi->next) { + if (0 == strcmp(image, hi->dl_info.dli_fname)) break; + } + + if (!hi) { + if (outCount) *outCount = 0; + return NULL; + } + + return _objc_copyClassNamesForImage(hi, outCount); +} + + +/********************************************************************** +* Fast Enumeration Support +**********************************************************************/ + +static void (*enumerationMutationHandler)(id); + +/********************************************************************** +* objc_enumerationMutation +* called by compiler when a mutation is detected during foreach iteration +**********************************************************************/ +void objc_enumerationMutation(id object) { + if (enumerationMutationHandler == nil) { + _objc_fatal("mutation detected during 'for(... in ...)' enumeration of object %p.", object); + } + (*enumerationMutationHandler)(object); +} + + +/********************************************************************** +* objc_setEnumerationMutationHandler +* an entry point to customize mutation error handing +**********************************************************************/ +void objc_setEnumerationMutationHandler(void (*handler)(id)) { + enumerationMutationHandler = handler; +} diff --git a/runtime/objc-sel-set.h b/runtime/objc-sel-set.h index 56412a6..8dc1753 100644 --- a/runtime/objc-sel-set.h +++ b/runtime/objc-sel-set.h @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2004 Apple 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 diff --git a/runtime/objc-sel-set.m b/runtime/objc-sel-set.m index bd6c2f8..31edafb 100644 --- a/runtime/objc-sel-set.m +++ b/runtime/objc-sel-set.m @@ -1,10 +1,8 @@ /* - * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1999-2004 Apple 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 diff --git a/runtime/objc-sel-table.h b/runtime/objc-sel-table.h index 5a7f775..389900d 100644 --- a/runtime/objc-sel-table.h +++ b/runtime/objc-sel-table.h @@ -1,16424 +1,32771 @@ -/* - * Copyright (c) 2003 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@ - */ -/* Last update: cjk - 16 October 2000 - * To construct this list, I enabled the code in the search function which - * is marked DUMP_SELECTORS, and launched a few apps with stdout redirected - * to files in /tmp, and ran the files through this script: - * cat file1 file2 file3 | sort -u > result - * - * Then I hand-edited the result file to clean it up. To do updates, I've - * just dumped the selectors that end up in the side CFSet (see the macro - * DUMP_UNKNOWN_SELECTORS). - * - * This left me with 13528 selectors, which was nicely close to but under - * 2^14 for the binary search. - */ -/* GrP 2004-12-15 - * Current apps use well over 2^14 selectors. - * 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 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] = { - ".cxx_construct", - ".cxx_destruct", - "CGColorSpace", - "CGCompositeOperationInContext:", - "CIContext", - "CI_affineTransform", - "CI_arrayWithAffineTransform:", - "CI_copyWithZone:map:", - "CI_initWithAffineTransform:", - "CI_initWithRect:", - "CI_rect", - "CTM", - "DOMDocument", - "DTD", - "DTDKind", - "DTDString", - "EPSOperationWithView:insideRect:toData:", - "EPSOperationWithView:insideRect:toData:printInfo:", - "EPSOperationWithView:insideRect:toPath:printInfo:", - "EPSRepresentation", - "HTMLData", - "HTMLFileWrapper", - "HTTPBody", - "HTTPBodyStream", - "HTTPBodyStreamForTransmission", - "HTTPContentType", - "HTTPExtraCookies", - "HTTPMethod", - "HTTPReferrer", - "HTTPResponse", - "HTTPShouldHandleCookies", - "HTTPUserAgent", - "IBeamCursor", - "ICCProfileData", - "MD5", - "MIMEType", - "MIMETypeEnumerator", - "MIMETypeForExtension:", - "MIMETypeForPath:", - "NPP_Destroy", - "NPP_DestroyStream", - "NPP_GetValue", - "NPP_HandleEvent", - "NPP_New", - "NPP_NewStream", - "NPP_Print", - "NPP_SetValue", - "NPP_SetWindow", - "NPP_StreamAsFile", - "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", - "RTFD", - "RTFDFileWrapper", - "RTFDFileWrapperFromRange:documentAttributes:", - "RTFDFromRange:", - "RTFDFromRange:documentAttributes:", - "RTFFromRange:", - "RTFFromRange:documentAttributes:", - "TIFFRepresentation", - "TIFFRepresentationOfImageRepsInArray:", - "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:", - "TIFFRepresentationUsingCompression:factor:", - "UIDelegate", - "URI", - "URIRepresentation", - "URIRepresentationForID:", - "URL", - "URL:resourceDataDidBecomeAvailable:", - "URL:resourceDidFailLoadingWithError:", - "URL:resourceDidFailLoadingWithReason:", - "URLFromPasteboard:", - "URLHandle:resourceDataDidBecomeAvailable:", - "URLHandle:resourceDidFailLoadingWithReason:", - "URLHandleClassForURL:", - "URLHandleResourceDidBeginLoading:", - "URLHandleResourceDidCancelLoading:", - "URLHandleResourceDidFinishLoading:", - "URLHandleUsingCache:", - "URLProtocol:cachedResponseIsValid:", - "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", - "URLsFromRunningOpenPanel", - "UTF8String", - "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:", - "_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_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", - "_UIDelegateForwarder", - "_UIEventImpl", - "_URIisNil", - "_URL", - "_URLByEscapingSpacesAndControlChars", - "_URLForHistory", - "_URLForString:", - "_URLHasScheme:", - "_URLStringForString:", - "_URLStringFromLocationHeader", - "_URLWithData:relativeToURL:", - "_URLWithDataAsString:", - "_URLWithDataAsString:relativeToURL:", - "_URLsFromSelectors:", - "_URLsMatchItem:", - "_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", - "_abstractViewImpl", - "_abstractViewWithImpl:", - "_acceptExpressions:flags:", - "_acceptOperator:flags:", - "_acceptSubpredicates:flags:", - "_acceptableRowAboveKeyInVisibleRect:", - "_acceptableRowAboveRow:minRow:", - "_acceptableRowAboveRow:tryBelowPoint:", - "_acceptableRowBelowKeyInVisibleRect:", - "_acceptableRowBelowRow:maxRow:", - "_acceptableRowBelowRow:tryAbovePoint:", - "_acceptsFirstResponderInItem:", - "_acceptsMarkedText", - "_accessibilityArrowScreenRect:", - "_accessibilityBoundsOfChild:", - "_accessibilityButtonRect", - "_accessibilityButtonUIElement", - "_accessibilityCellLabelType", - "_accessibilityChildrenInRange:", - "_accessibilityCorrectlyParentedCells:", - "_accessibilityGrowBoxRect", - "_accessibilityIconHandlesTitle", - "_accessibilityIndicatorRect", - "_accessibilityIsModal", - "_accessibilityIsRadioGroup", - "_accessibilityIsSupportedPartCode:", - "_accessibilityLoadBrowserCellsAtRow:count:", - "_accessibilityMaxValue", - "_accessibilityMinValue", - "_accessibilityMinValueWithoutCollapsing", - "_accessibilityNextSplitterMinCoordinate", - "_accessibilityNumberOfChildren", - "_accessibilityPanel", - "_accessibilityParentForSubview:", - "_accessibilityPopUpButtonCellPressAction:", - "_accessibilityPressAction:", - "_accessibilityPreviousSplitterMaxCoordinate", - "_accessibilityRowsInRange:", - "_accessibilityScreenRectForSegment:", - "_accessibilitySearchFieldCellBounds", - "_accessibilitySegmentAtIndex:", - "_accessibilityShowMenu:", - "_accessibilitySplitterMinCoordinate", - "_accessibilitySplitterRects", - "_accessibilitySupportedPartCodes", - "_accessibilityTableCell:tableColumn:", - "_accessibilityTableRow:", - "_accessibilityTitle", - "_accessibilityTitleCell", - "_accessibilityTitleForColumn:", - "_accessibilityTitleRect", - "_accessibilityToolBarItem", - "_accessibilityToolBarItemViewer", - "_accessibilityUIElementForPartCode:", - "_accessibilityUIElementPath", - "_accessibilityUIElementPathForChild:", - "_accessibilityValue", - "_accessibilityViewCorrectedForFieldEditor:", - "_actOnKeyDown:", - "_actionCellInitWithCoder:", - "_actionHasBegun:atIndex:", - "_actionHasBegun:atIndexPath:", - "_actionInformationForLoadType:isFormSubmission:event:originalURL:", - "_actionInformationForNavigationType:event:originalURL:", - "_activate", - "_activateHelpModeBasedOnEvent:", - "_activateServer", - "_activateTrackingRectsForApplicationActivation", - "_activateWindows", - "_activeFileListViewForResizing", - "_actualOrderingFilePropertyAscending:", - "_adapter", - "_addAnimatedColumn", - "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:", - "_addAutosavingOfDocument:contentsToURL:", - "_addBackForwardItem:", - "_addBackForwardItemClippedAtTarget:", - "_addBackForwardItems:", - "_addBindVarForConstVal:", - "_addBinding:toController:withKeyPath:valueTransformerName:options:", - "_addChild:", - "_addCollection:options:sender:", - "_addColor:", - "_addColumnSubviewAndAnimateIfNecessary:", - "_addColumnToFetch:", - "_addColumnWithoutChangingVisibleColumn", - "_addContent", - "_addContentsToDictionary:depth:", - "_addConversionsFromTypes:", - "_addCornerDirtyRectForRect:list:count:", - "_addCredential:forProtectionSpace:", - "_addCurrentDirectoryToRecentPlaces", - "_addCursorRect:cursor:forView:", - "_addDefaultTable", - "_addDeletesToDatabaseOp:forManyToMany:", - "_addDescriptorCheckingForDuplicates:toCollection:", - "_addDragTypesTo:", - "_addEditableSubfieldForElement:", - "_addEntities:toConfiguration:", - "_addEntity:", - "_addExpandedNodeToObservedNodeMappingForExpandedNode:", - "_addExtraFieldsToRequest:alwaysFromRequest:", - "_addFontDescriptorFromDrag:toCollectionAtIndex:", - "_addFramePathToString:", - "_addHeartBeatClientView:", - "_addHiddenWindow:", - "_addImage:named:", - "_addIndexedEntity:", - "_addInsertsToDatabaseOp:forManyToMany:", - "_addItem:toTable:", - "_addKeychainItem:", - "_addLibxml2TreeRepresentationToDoc:context:", - "_addListDefinition:forKey:", - "_addManyToManysToDatabaseOp:", - "_addMapping:forConfigurationWithName:", - "_addMarker:", - "_addMarkersToList:range:", - "_addMouseMovedListener:", - "_addMultipleToTypingAttributes:", - "_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:", - "_addPlugIn:allowNonExecutable:", - "_addPlugInStreamClient:", - "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:", - "_addProperty:", - "_addQuoteForElement:opening:level:", - "_addQuoteForLibXML2ElementNode:opening:level:", - "_addRangeToArray:", - "_addRepresentedObject:toAttributedString:atRange:", - "_addRepresentedObjects:toAttributedString:atRange:", - "_addRepsFrom:toRep:", - "_addResponse:", - "_addResult:", - "_addRevealoverIfNecessaryForCell:cellRect:", - "_addRootColumnToFetch:", - "_addScrollerDashboardRegions:", - "_addScrollerDashboardRegions:from:", - "_addSpellingAttributeForRange:", - "_addStaticSubfieldWithString:", - "_addStringToRecentSearches:", - "_addSubentity:", - "_addSubfieldForElement:withString:", - "_addSubframeArchives:", - "_addSubresourceClient:", - "_addSubresources:", - "_addSubview:", - "_addToGroups:ordered:", - "_addToLibxml2TreeRepresentationWithDoc:dtd:context:", - "_addToOrphanList", - "_addToStyle:fontA:fontB:", - "_addToTypingAttributes:value:", - "_addToolTipRect:", - "_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:", - "_additionIndexPathAppendChildIndex:", - "_adjustCancelButtonCellImages::", - "_adjustCharacterIndicesForRawGlyphRange:byDelta:", - "_adjustClipIndicatorPosition", - "_adjustControls:andSetColor:", - "_adjustDatePickerElement:by:", - "_adjustDynamicDepthLimit", - "_adjustEditedCellLocation", - "_adjustFocusRingLocation:", - "_adjustFocusRingSize:", - "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:", - "_adjustFontSize", - "_adjustForGrowBox", - "_adjustFrameOfOutlineCellIfNecessary:frame:", - "_adjustFrameSize", - "_adjustLayoutForTextAreaFrame:", - "_adjustLength", - "_adjustMinContentSizeForMinFrameSize:", - "_adjustMovieToView", - "_adjustNibControlSizes", - "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:", - "_adjustObject:mode:triggerRedisplay:", - "_adjustPanelForMinWidth", - "_adjustPort", - "_adjustPrintingMarginsForHeaderAndFooter", - "_adjustRichTextFontSizeByRatio:", - "_adjustSearchButtonCellImages::", - "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:", - "_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", - "_allPossibleLabelsToFit", - "_allSidebarItemViews", - "_allTokenFieldAttachments", - "_allocAndInitPrivateIvars", - "_allocAuxiliary:", - "_allocAuxiliaryStorage", - "_allocData:", - "_allocExtraData", - "_allocString:", - "_allocateAuxData", - "_allocateObserationStorage", - "_allocatePPDStuffAndParse", - "_allowKillRing", - "_allowSmallIcons", - "_allowedItemIdentifiers", - "_allowedToSetCookiesFromURL:withPolicyBaseURL:", - "_allowsContextMenus", - "_allowsDisplayMode:", - "_allowsDuplicateItems", - "_allowsNonNativeGlyphPacking", - "_allowsScreenFontKerning", - "_allowsSizeMode:", - "_allowsTearOffs", - "_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:", - "_antialiasThresholdChanged:", - "_antialiased", - "_anticipateRelease", - "_appDidBecomeActive:", - "_appHasNonMiniaturizedWindow", - "_appHasOpenNSWindow", - "_appHasVisibleWindowOrPanel", - "_appIcon", - "_appWillTerminate:", - "_appendArcSegmentWithCenter:radius:angle1:angle2:", - "_appendAttachment:toString:", - "_appendColorPicker:", - "_appendEventDeclarationsToAETEData:", - "_appendKey:option:value:inKeyNode:", - "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", - "_appendNodes:forNodeInfo:addSeparator:", - "_appendObjectClassDeclarationsToAETEData:", - "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:", - "_appendStringInKeyNode:key:value:", - "_appendTextBytes:length:encoding:attributes:", - "_appendTypeDefinitionsSuiteDeclarationToAETEData:", - "_appletElementImpl", - "_applicationDidBecomeActive", - "_applicationDidResignActive", - "_applicationDidTerminate:", - "_applicationStatusChange:", - "_applicationWillLaunch:", - "_applicationWillTerminate:", - "_applyAllValuesFromValueBuffer", - "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", - "_applyHTTPCredentials:", - "_applyHTTPProxyCredentials:", - "_applyMarkerSettingsFromParagraphStyle:", - "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", - "_applyStyleToSelection:", - "_applyStylesheet:", - "_applyValue:forKey:registrationDomain:", - "_applyValueTransformerToValue:forBindingInfo:reverse:", - "_appropriateColorPanelSliderPane", - "_aquaColorVariantChanged", - "_aquaScrollerBehaviorChanged:", - "_aquaScrollerVariantChanged:", - "_archiveToFile:", - "_archiveWithCurrentState:", - "_archiveWithMarkupString:nodes:", - "_areAllPanelsNonactivating", - "_areWritesCancelled", - "_areaElementImpl", - "_argument", - "_argumentBindingCount", - "_argumentDescriptionForKey:", - "_argumentDescriptions", - "_argumentDescriptionsByName", - "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:", - "_argumentForUnderlineStyle:", - "_argumentValueFromParameterDescriptor:usingTypeDescription:", - "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:", - "_arrayByTranslatingAEList:toType:inSuite:", - "_arrayControllerWithContent:retain:", - "_arrayForPartialPinningFromArray:", - "_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:", - "_attachWindowForOrdering:relativeOp:", - "_attachedSupermenuView", - "_attachmentAtGlyphIndex:containsWindowPoint:", - "_attachmentCellForSelection", - "_attachmentSizesRun", - "_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", - "_autoscrollForDraggingInfo:timeDelta:", - "_autovalidateToolbarItem:", - "_autovalidateVisibleToolbarItems", - "_autovalidatesItems", - "_availableBindingsWithFontBindingsFiltered:", - "_availableChannel", - "_availableChannelFromRegisteredChannels", - "_availableFontSetNames", - "_availablePaperWidthForPrintOperation:", - "_awakeFromFetch", - "_awakeFromInsert", - "_backForwardCacheExpirationInterval", - "_backForwardItems", - "_backgroundColor", - "_backgroundFileLoadCompleted:", - "_backingCGSFont", - "_barberImage:", - "_base64StringFromData:", - "_baseElementImpl", - "_baseFontElementImpl", - "_baseLineHeightForFont:", - "_baseString", - "_baseTransform", - "_baseWritingDirection", - "_baselineRenderingMode", - "_batchClose", - "_batchCollapseItemsWithItemEntries:collapseChildren:", - "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:", - "_batchExpandItemsWithItemEntries:expandChildren:", - "_batchOrdering", - "_batchZoom", - "_beginColumnAnimationOptimization", - "_beginCustomizationMode", - "_beginDraggingColumn:", - "_beginDrawForDragging", - "_beginDrawView:", - "_beginListeningForApplicationStatusChanges", - "_beginListeningForDeviceStatusChanges", - "_beginListeningForPowerStatusChanges", - "_beginListeningForSessionStatusChanges", - "_beginMark", - "_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:", - "_bindingAdaptor", - "_bindingAdaptorMethodsNeededMask", - "_bindingCreationDelegate", - "_bindingInfoForBinding:", - "_bindingInfoIndexForBinding:", - "_bindingInformationWithExistingNibConnectors:availableControllerChoices:", - "_bindingInfos", - "_bitBlitSourceRect:toDestinationRect:", - "_bitmapFormat", - "_blackRGBColor", - "_blinkCaret:", - "_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:", - "_bundleForClassPresentInAppKit:", - "_button", - "_buttonBezelColors", - "_buttonCellInitWithCoder:", - "_buttonElementImpl", - "_buttonFrameSizeForSizeMode:", - "_buttonHeight", - "_buttonImageSource", - "_buttonImageToolTip", - "_buttonOfClass:action:", - "_buttonToolTip", - "_buttonType", - "_buttonWidth", - "_bytesAreVM", - "_cacheDisplayValue:", - "_cacheObjectValue:", - "_cachePolicyForResponse", - "_cacheRepresentation:", - "_cacheRepresentation:stayFocused:", - "_cacheResourceLoadDelegateImplementations", - "_cacheRow:rect:", - "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:", - "_cacheSelectedObjectsIfNecessary", - "_cacheUserKeyEquivalentInfo", - "_cacheViewImage:", - "_cachedChildrenForNode:createIfNeeded:", - "_cachedDisplayValue", - "_cachedObjectForKey:value:", - "_cachedObjectValue", - "_cachedResponseForURL:", - "_cachedResponseHasExpired", - "_cachedResponsePassesValidityChecks", - "_cachedValuesAreValid", - "_cachingView", - "_calcAndSetFilenameTitle", - "_calcHeights:num:margin:operation:helpedBy:", - "_calcMarginSize:operation:", - "_calcNumVisibleColumnsAndColumnSize", - "_calcOutlineColumnWidth", - "_calcScrollArrowHeight", - "_calcTextRect:", - "_calcTrackRect:andAdjustRect:", - "_calcVisibleColumnAreaAvailable", - "_calcWidths:num:margin:operation:helpedBy:", - "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:", - "_calculatePrintHeight", - "_calculateSelectedSegmentForPoint:", - "_calculateSizeToFitWidthOfColumn:testLoadedOnly:", - "_calculateTotalScaleForPrintingWithOperation:", - "_calculatedExpiration", - "_calendarContentAttributedStringWithSelectedDay:today:", - "_calendarID", - "_calendarWithID:", - "_callImplementor:context:chars:glyphs:stringBuffer:font:", - "_canAutoGenerateKeyboardLoops", - "_canBecomeDefaultButtonCell", - "_canCachePage", - "_canChangeRulerMarkers", - "_canCopy", - "_canCut", - "_canDelete", - "_canDeselect", - "_canDeselect:", - "_canDragRowForClickOnCell:column:row:atPoint:", - "_canDrawOutsideOfItsBounds", - "_canEdit", - "_canHandleRequest:", - "_canHaveToolbar", - "_canHide", - "_canInitiateRowDragInColumn:", - "_canMoveItemAsSource:", - "_canOptimizeDrawing", - "_canPaste", - "_canProcessDragWithDraggingInfo:", - "_canRunCustomizationPanel", - "_canSave", - "_canSaveGraphRootedAtObject:intoStore:givenOthers:", - "_canShowGoto", - "_canShowMIMETypeAsHTML:", - "_canShowToolTip", - "_canSmartCopyOrDelete", - "_canSmartReplaceWithPasteboard:", - "_canUseCompositing", - "_canUseKeyEquivalentForMenuItem:", - "_canUseReorderResizeImageCache", - "_canUseResourceForRequest:", - "_canUserSetVisibilityPriority", - "_cancelAddMarker:", - "_cancelAllUserAttentionRequests", - "_cancelAnyScheduledAutoCollapse", - "_cancelAutoExpandTimer", - "_cancelCurrentToolTipWindowImmediately:", - "_cancelDelayedAutocomplete", - "_cancelDelayedKeyboardNavigationTabSwitch", - "_cancelDelayedShowOpenHandCursor", - "_cancelKey:", - "_cancelMovementTrackingTimer", - "_cancelPerformSelectors", - "_cancelRequest:", - "_cancelWithError:", - "_cancelWithErrorCode:", - "_candidateDragRowIndexForClickInRow:", - "_canonicalURLForURL:", - "_canonicalXMLStringPreservingComments:relationships:", - "_captureInput", - "_captureReorderResizeColumnImageCaches", - "_captureVisibleIntoImageCache", - "_captureVisibleIntoLiveResizeCache", - "_carbonNotification", - "_carbonWindowClass", - "_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:", - "_cfBundle", - "_cfPasteboard", - "_cfTypeID", - "_cfurl", - "_cgColor", - "_cgsEventRecord", - "_cgsEventTime", - "_chainNewError:toOriginalErrorDoublePointer:", - "_changeAlertSheetWasPresented:withResult:inContext:", - "_changeAllDrawersFirstResponder", - "_changeAllDrawersKeyState", - "_changeAllDrawersMainState", - "_changeCSSColorUsingSelector:inRange:", - "_changeColorToColor:", - "_changeDrawerFirstResponder", - "_changeDrawerKeyState", - "_changeDrawerMainState", - "_changeEditable:", - "_changeFileListMode:", - "_changeFirstResponder", - "_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:lineFragmentWidth:hyphenate:", - "_characterCoverage", - "_characterDataImpl", - "_characterRangeCurrentlyInAndAfterContainer:", - "_characterRangeForPoint:inRect:ofView:", - "_checkCollectionMoveOut:", - "_checkDataSource", - "_checkDirectoryListing", - "_checkDisplayDelegate:", - "_checkFavoriteMode", - "_checkForCookieExpiration", - "_checkForObsoleteDelegateMethodsInObject:", - "_checkForSimpleTrackingMode", - "_checkForTerminateAfterLastWindowClosed:", - "_checkForTimeouts", - "_checkGrammarInString:language:details:", - "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:", - "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:", - "_checkLoadComplete", - "_checkLoadCompleteForThisFrame", - "_checkLoaded:rect:highlight:", - "_checkMiniMode:", - "_checkNavigationPolicyForRequest:dataSource:formState:andCall:withSelector:", - "_checkNewWindowPolicyForRequest:action:frameName:formState:andCall:withSelector:", - "_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:", - "_classDescriptionForName:", - "_classDescriptionForName:suiteName:isValid:", - "_classDescriptionFromKey:andContainerClassDescription:", - "_classDescriptionsFromPropertyListDeclarations:suiteName:", - "_classNameForType:", - "_classOfObjectsInNestedHomogeneousArray:", - "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:", - "_cleanUpAfterSave", - "_cleanUpAfterTransaction", - "_cleanUpConnectionWithSynchronizePeerBinders:", - "_cleanUpForCarbonAppTermination", - "_cleanup", - "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:", - "_cleanupBindingsWithExistingNibConnectors:exception:", - "_cleanupHelpForQuit", - "_cleanupMenuMaps", - "_cleanupPausedActions", - "_clear", - "_clearAnimationInfo", - "_clearAnyValidResponderOverride", - "_clearCellFrame", - "_clearChangedThisTransaction:", - "_clearControlTintColor", - "_clearCurrentAttachmentSettings", - "_clearDefaultMenuFormRepresentation", - "_clearDeletions", - "_clearDependenciesWithPeerBindersInArray:", - "_clearDictionaries", - "_clearDirtyRectsForLockedTree", - "_clearDirtyRectsForTree", - "_clearDragMargins", - "_clearEditingTextView:", - "_clearErrors", - "_clearEventMask", - "_clearFocusForView", - "_clearImageForLockFocusUse", - "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated", - "_clearInsertions", - "_clearKeyCell", - "_clearLastHitViewIfSelf", - "_clearLiveResizeColumnLayoutInfo", - "_clearMarkedRange", - "_clearMarkedWidth", - "_clearModalWindowLevel", - "_clearMouseTracking", - "_clearMouseTrackingForCell:", - "_clearObserving", - "_clearOriginalSnapshotAndInitializeRec:", - "_clearOriginalSnapshotForObject:", - "_clearPageCache", - "_clearPendingChanges", - "_clearRawProperties", - "_clearRememberedEditingFirstResponder", - "_clearSaveTimer", - "_clearSelectedCell", - "_clearSpellingForRange:", - "_clearTemporaryAttributes", - "_clearTemporaryAttributesForCharacterRange:changeInLength:", - "_clearTrackingRects", - "_clearUndoManageForFieldEditor:", - "_clearUnneccessaryItems:", - "_clearUnprocessedDeletions", - "_clearUnprocessedInsertions", - "_clearUnprocessedUpdates", - "_clearUpdates", - "_clearVisitedColumnContentWidths", - "_clickedCharIndex", - "_clientRedirectCancelled:", - "_clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:", - "_clientsCreatingIfNecessary:", - "_clipIndicator", - "_clipIndicatorIsShowing", - "_clipViewAncestor", - "_clipViewBoundsChanged:", - "_clippedItemViewers", - "_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:", - "_closeListsForParagraphStyle:atIndex:inString:", - "_closeOldDataSources", - "_closeSheet:andMoveParent:", - "_closeWindow", - "_cocoaErrorDescription", - "_cocoaErrorString:", - "_cocoaErrorString:alternate:", - "_cocoaTypeNameFromIdentifier:", - "_coerceValue:forKey:withDescription:", - "_collapseAllAutoExpandedItems", - "_collapseAutoExpandedItems:", - "_collapseButtonOrigin", - "_collapseItem:collapseChildren:clearExpandState:", - "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:", - "_collapsePanel:andMoveParent:toFrame:", - "_collapsedOrigin", - "_collectApplicableUserInfoFormatters:max:", - "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:", - "_collectItemViewerFrames:intoRectArray:", - "_collectSubentities", - "_collection:setHidden:save:", - "_collectionImpl", - "_collectionWithImpl:", - "_collectionWithName:", - "_collectionWithName:index:", - "_collections", - "_collectionsChanged:", - "_color", - "_colorAsString:", - "_colorAtIndex:", - "_colorByTranslatingRGBColorDescriptor:toType:inSuite:", - "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:", - "_colorForMetal:", - "_colorForMouseEvent:", - "_colorForNode:property:", - "_colorList", - "_colorListNamed:forDeviceType:", - "_colorPickerWithIdentifier:", - "_colorPickers", - "_colorRect", - "_colorSpacesForColorPanelPaneUsingModel:", - "_colorSyncProfileClass", - "_colorSyncProfileSpace", - "_colorWellCommonAwake", - "_colorWithGradientImage:", - "_colorizedImage:color:", - "_columnAtLocation:", - "_columnClosestToColumn:whenMoved:", - "_columnRangeForDragImage", - "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:", - "_columnWidthAutoSaveNameWithPrefix", - "_commandDescriptionsFromPropertyListDeclarations:suiteName:", - "_commandFromEvent:", - "_commandMethodSelectorsByName", - "_commandPopupRect", - "_commitEditing", - "_commitEditingAndEndUndo", - "_commitEditingDiscardEditingCallback:", - "_commitEditingOtherCallback:", - "_commitIfReady", - "_commitIfReady:", - "_commitTransaction:", - "_commonAwake", - "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:", - "_commonHandleRootOrCurrentDirectoryChanged", - "_commonInit", - "_commonInitFrame:styleMask:backing:defer:", - "_commonInitIvarBlock", - "_commonInitNSColorPickerColorSpacePopUp", - "_commonInitNavMatrix", - "_commonInitNavNodePopUpButton", - "_commonInitSidebarItemView", - "_commonInitSplitViewController", - "_commonInitState", - "_commonInitTokenAttachmentWithStringValue:", - "_commonInitializationWithFrameName:groupName:", - "_commonNavFilepathInputControllerInit", - "_commonNewScroll:", - "_commonSecureTextFieldInit:", - "_commonSetupTokenFieldCell", - "_commonTermination", - "_compareForHeaderOrder:", - "_compareNode:withDisplayName:toNode:withDisplayName:", - "_compareWidthWithSuperview", - "_compat_continuousScrollingCapable", - "_compatibility_initWithUnkeyedCoder:", - "_compatibility_takeValue:forKey:", - "_compatibleListShouldUseAlternateSelectedControlColor", - "_compatibleWithRulebookVersion:", - "_compiledScriptID", - "_complete:", - "_completeNoRecursion:", - "_completePathWithPrefix:intoString:matchesIntoArray:", - "_completeProgressForConnectionDelegate:", - "_completionsFromDocumentForPartialWordRange:", - "_composite:delta:fromRect:toPoint:", - "_compositeAndUnlockCachedImage", - "_compositeFlipped:atPoint:fromRect:operation:fraction:", - "_compositeFlipped:inRect:fromRect:operation:fraction:", - "_compositeHiddenViewHighlight", - "_compositeImage", - "_compositePointInRuler", - "_compositedBackground", - "_computeAllRevealovers", - "_computeAndAlignFirstClosestVisibleColumn", - "_computeBounds", - "_computeColorScaleIfNecessaryWithSize:", - "_computeCommonItemViewers", - "_computeCustomItemViewers", - "_computeDisplayedLabelForRect:", - "_computeDisplayedSizeOfString:", - "_computeDragImage", - "_computeDragImageFromItemViewer:", - "_computeExecutablePath", - "_computeFirstCompletelyVisibleColumn", - "_computeFirstMostlyVisibleColumn", - "_computeFirstVisibleColumnRequireCompletelyVisible:", - "_computeInv", - "_computeLayoutInfoForIconViewSize:frameSize:iconFrame:labelFrame:", - "_computeMaxItemViewHeight", - "_computeMenuForClippedItems", - "_computeMenuForClippedItemsIfNeeded", - "_computeMinHeightForSimpleSavePanel:", - "_computeMinWidthForSimpleSavePanel:", - "_computeMinimumDisplayedLabelForWidth:", - "_computeMinimumDisplayedLabelSize", - "_computeNominalDisplayedLabelSize", - "_computeOrderedItemViewersOfType:", - "_computeOrderedItemViewersOfType:inRange:resizeableOnly:", - "_computeOriginForRow:cacheHint:", - "_computeParams", - "_computePriorFirstResponder", - "_computeResizeableCustomItemViewersInRange:", - "_computeToolbarItemKeyboardLoop", - "_computeToolbarItemKeyboardLoopIfNecessary", - "_computeTravelTimeForInsertionOfItemViewer:", - "_computeWidthForSpace", - "_computedAttributesForElement:", - "_computedStringForNode:property:", - "_computedStyleForElement:", - "_concatenateKeyWithIBCreatorID:", - "_concealBinding:", - "_concludeDefaultKeyLoopComputation", - "_concludeReloadChildrenForNode:", - "_concreteInputContextClass", - "_conditionallySetsStates", - "_configSheetDidEnd:returnCode:contextInfo:", - "_configurationAutosaveName", - "_configureAccessoryView", - "_configureAsMainMenu", - "_configureAsSeparatorItem", - "_configureBottomControls", - "_configureCell:forItemAtIndex:", - "_configureDirectoryPopup", - "_configureFileListModeControlForMode:", - "_configureForDirectory:name:", - "_configureForFileListMode:", - "_configureForShowingInPanel", - "_configureGreyButton:index:", - "_configureHistoryControl", - "_configureLabelCellStringValue", - "_configureMDParts", - "_configureMessageView", - "_configurePathComponentPicker", - "_configureSavePane", - "_configureSearching:", - "_configureStreamDetails:", - "_configureTextViewForWordWrapMode", - "_confirmSize:force:", - "_conformsToProtocolNamed:", - "_connectToCookieStorage", - "_connectionWasBroken", - "_connectionWasEstablished", - "_consistencyCheck:", - "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:", - "_constrainAndSetDateValue:sendActionIfChanged:beepIfNoChange:", - "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:", - "_constrainDateValue:", - "_constrainPoint:withEvent:", - "_constrainSheetAndDisplay:", - "_constructRequestForURL:isHead:", - "_containerRelativeFrameOfColumn:", - "_containerRelativeFrameOfInsideOfColumn:", - "_containerRelativeTitleFrameOfColumn:", - "_containerTextViewFrameChanged:", - "_containerViewOfColumns", - "_containerViewOfTitles", - "_contentHasShadow", - "_contentRectExcludingToolbar", - "_contentRectForTextBlock:glyphRange:", - "_contentRectIncludingToolbarAtHome", - "_contentToFrameMaxXWidth", - "_contentToFrameMaxXWidth:", - "_contentToFrameMaxYHeight", - "_contentToFrameMaxYHeight:", - "_contentToFrameMinXWidth", - "_contentToFrameMinXWidth:", - "_contentToFrameMinYHeight", - "_contentToFrameMinYHeight:", - "_contentView", - "_contents", - "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:", - "_contextAuxiliary", - "_contextByfeContext:", - "_contextMenuEvent", - "_contextMenuImpl", - "_contextMenuTarget", - "_contextMenuTargetForEvent:", - "_continueAfterNavigationPolicy:", - "_continueAfterNewWindowPolicy:", - "_continueAfterWillSubmitForm:", - "_continueFragmentScrollAfterNavigationPolicy:formState:", - "_continueLoadRequestAfterNavigationPolicy:formState:", - "_continueLoadRequestAfterNewWindowPolicy:frameName:formState:", - "_continueModalOperationPastPrintPanel", - "_continueModalOperationToTheEnd:", - "_continueMovementTracking", - "_continueRunWithStartTime:duration:", - "_continuousCheckingAllowed", - "_controlAppearanceChangesOnKeyStateChange", - "_controlColor", - "_controlMenuKnownAbsent:", - "_controlSizeForScrollers", - "_controlTintChanged:", - "_controlView:textView:doCommandBySelector:", - "_controllerEditor:didCommit:contextInfo:", - "_controllerForNode:createControllers:", - "_controllerKeys", - "_controllerNodeForObjectAtIndexPath:createControllers:error:", - "_convert:row:point:cacheHint:", - "_convert:toValueClassUsing:", - "_convertCharacters:length:toGlyphs:", - "_convertPersistentItem:", - "_convertPoint:fromAncestor:", - "_convertPoint:toAncestor:", - "_convertPointFromSuperview:test:", - "_convertPointToSuperview:", - "_convertRect:fromAncestor:", - "_convertRect:toAncestor:", - "_convertRectFromSuperview:test:", - "_convertRectToSuperview:", - "_convertStringToData:", - "_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:", - "_copyValueOfDescriptorType:toBuffer:ofLength:", - "_coreCursorType", - "_cornerViewFrame", - "_cornerViewHidesWithVerticalScroller", - "_count", - "_countBindings", - "_countDisplayedDescendantsOfItem:", - "_countDueToReceiver:", - "_countOfValuesInContainer:withKey:", - "_counterImpl", - "_counterWithImpl:", - "_counterpart", - "_crackPoint:", - "_crackRect:", - "_crackSize:", - "_crayonMaskImage", - "_crayonRowAboveRow:", - "_crayonRowBelowRow:", - "_crayonWithColor:", - "_crayons", - "_createATSUTextLayoutForRun:style:", - "_createAlert", - "_createAndShowProgressPanelIfAppropriate:", - "_createArrayWithObjectsAtIndexes:", - "_createAttributeDescriptionForNode:", - "_createAuxData", - "_createBackingStore", - "_createCGColorWithAlpha:", - "_createCachedImage:", - "_createCachesAndOptimizeState", - "_createCells", - "_createClipIndicatorIfNecessary", - "_createColumn:empty:", - "_createDefaultCollectionRep", - "_createDefaultOrUnflattenPageFormatIfNecessary", - "_createDefaultOrUnflattenPrintSettingsIfNecessary", - "_createDockMenu:", - "_createElementContent:", - "_createEllipsisRunWithStringRange:attributes:", - "_createFSRefForPath:", - "_createFileDatabase", - "_createFileIfNecessary", - "_createFloatStorage", - "_createFontPanelRepFromCollection:removingHidden:", - "_createFontPanelSizeRep", - "_createFrameNamed:inParent:allowsScrolling:", - "_createImage:::", - "_createImageForLockFocusUseIfNecessary", - "_createItem:", - "_createItemFromItemIdentifier:", - "_createItemTreeWithTargetFrame:clippedAtTarget:", - "_createKeyValueBindingForKey:name:bindingType:", - "_createLRUList:", - "_createMenuMapLock", - "_createMovieController", - "_createMungledDictionary:", - "_createMutableArrayValueGetterWithContainerClassID:key:", - "_createMutableSetValueGetterWithContainerClassID:key:", - "_createMutableSetValueWithSelector:", - "_createMutationMethodsOnObject:forKey:", - "_createNewNodePreviewHelper", - "_createNonExecutableFilterWithKernelFile:filterDescription:", - "_createNonNilMutableArrayValueWithSelector:", - "_createOtherValueGetterWithContainerClassID:key:", - "_createOtherValueSetterWithContainerClassID:key:", - "_createPDFImageRep", - "_createPageCacheForItem:", - "_createPattern", - "_createPatternFromRect:", - "_createPrefix", - "_createProfileFor:", - "_createRangeWithNode:", - "_createRawData", - "_createRelationshipDescriptionForNode:", - "_createScrollViewAndWindow", - "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:", - "_createStatusItemControlInWindow:", - "_createStatusItemWindow", - "_createSubfields", - "_createSurface", - "_createTemporaryFolderOnVolume:orHiddenInFolder:andReturnRef:", - "_createTemporaryMOIDsForObjects:", - "_createTextView", - "_createTimer", - "_createTimer:", - "_createValueGetterWithContainerClassID:key:", - "_createValuePrimitiveGetterWithContainerClassID:key:", - "_createValuePrimitiveSetterWithContainerClassID:key:", - "_createValueSetterWithContainerClassID:key:", - "_createWakeupPort", - "_createWindowOpaqueShape", - "_createWindowsMenuEntryWithTitle:enabled:", - "_createdDate", - "_creteCachedImageLockIfNeeded", - "_crunchyRawUnbonedPanel", - "_ctTypesetter", - "_currentAttachmentIndex", - "_currentAttachmentRect", - "_currentBackForwardListItemToResetTo", - "_currentBranchImage", - "_currentClient", - "_currentDeadKeyChar", - "_currentFileModificationDate", - "_currentFont", - "_currentInputFilepath", - "_currentListLevel", - "_currentListNumber", - "_currentLocalMousePoint", - "_currentPath", - "_currentPoint", - "_currentSuiteName", - "_cursorRectCursor", - "_cursorRectForColumn:", - "_customMetrics", - "_customTitleCell", - "_customTitleFrame", - "_customizationPaletteSheetWindow", - "_customizesAlwaysOnClickAndDrag", - "_cycleDrawers:", - "_cycleDrawersBackwards:", - "_cycleDrawersReversed:", - "_cycleUtilityWindowsReversed:", - "_cycleWindows:", - "_cycleWindowsBackwards:", - "_cycleWindowsReversed:", - "_dListElementImpl", - "_darkBlueColor", - "_darkGrayRGBColor", - "_dashboardBehavior:", - "_dataForURLComponentType:", - "_dataForkReferenceNumber", - "_dataFromBase64String:", - "_dataIfDoneBufferingData:", - "_dataSource", - "_dataSourceChild:ofItem:", - "_dataSourceIsItemExpandable:", - "_dataSourceNumberOfChildrenOfItem:", - "_dataSourceRespondsToSortDescriptorsDidChange", - "_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", - "_decodeArrayOfObjectsForKey:", - "_decodeByte", - "_decodeDepth", - "_decodeDownloadData:", - "_decodeDownloadData:dataForkData:resourceForkData:", - "_decodeDownloadHeaderData:dataForkData:resourceForkData:", - "_decodePropertyListForKey:", - "_decodeWithoutNameWithCoder:newStyle:", - "_decrementInUseCounter", - "_decrementLine:", - "_decrementPage:", - "_decrementSelectedSubfield", - "_deepCollectEntitiesInArray:entity:", - "_defaultButtonPaused", - "_defaultDocIcon", - "_defaultFacesForFamily:", - "_defaultFontSet", - "_defaultGlyphForChar:", - "_defaultHandler", - "_defaultItemIdentifiers", - "_defaultKnobColor", - "_defaultLineHeight:", - "_defaultLineHeightForUILayout", - "_defaultMessageAttributes", - "_defaultNewFolderName", - "_defaultObjectClass", - "_defaultObjectClassName", - "_defaultProgressIndicatorColor", - "_defaultScriptingComponent", - "_defaultSecondaryColor", - "_defaultSelectedKnobColor", - "_defaultSelectionColor", - "_defaultSortDescriptorPrototypeKey", - "_defaultTitlebarTitleRect", - "_defaultType:", - "_defaultValueForAttribute:range:", - "_defaultWritingDirection", - "_deferredAdjustMovie", - "_deferredWindowChanged", - "_defersCallbacksChanged", - "_delayedDeactiveWindowlessWell:", - "_delayedEnableRevealoverComputationAfterScrollWheel:", - "_delayedFreeRowEntryFreeList", - "_delayedUpdateSwatch:", - "_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", - "_deleteFileAsnyc", - "_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:", - "_descriptorByTranslatingDate:ofType:inSuite:", - "_descriptorByTranslatingDictionary:ofType:inSuite:", - "_descriptorByTranslatingNull:ofType:inSuite:", - "_descriptorByTranslatingNumber:ofType:inSuite:", - "_descriptorByTranslatingString:ofType:inSuite:", - "_descriptorByTranslatingTextStorage:ofType:inSuite:", - "_descriptorWithNumber:", - "_deselectAllAndEndEditingIfNecessary:", - "_deselectAllExcept::andDraw:", - "_deselectColumn:", - "_deselectRowRange:", - "_desiredKeyEquivalent", - "_desiredKeyEquivalentModifierMask", - "_desiredTextAreaSize", - "_destinationEntityForToOne:", - "_destinationFloatValueForScroller:", - "_destroyAllPluginsInPendingPageCaches", - "_destroyFloatStorage", - "_destroyRealWindow", - "_destroyRealWindow:", - "_destroyRealWindowForAllDrawers", - "_destroyRealWindowIfNeeded", - "_destroyStream", - "_destroyStreamWithReason:", - "_destroyTSMDocument:", - "_destroyTimer", - "_destroyWakeupPort", - "_detachChildren", - "_detachFromParent", - "_detachFromParentWindow", - "_detachSheetWindow", - "_detatchNextAndPreviousForAllSubviews", - "_detatchNextAndPreviousForView:", - "_detectTrackingMenuChangeWithScreenPoint:", - "_determineDropCandidateForDragInfo:", - "_deviceClosePath", - "_deviceCurveToPoint:controlPoint1:controlPoint2:", - "_deviceLineToPoint:", - "_deviceMoveToPoint:", - "_dictionary", - "_dictionaryByTranslatingAERecord:toType:inSuite:", - "_dictionaryForSavedConfiguration", - "_dictionaryForSerialNumber:remove:clear:", - "_didAccessValueForKey:", - "_didCancelAuthenticationChallenge:", - "_didChangeBackForwardKeys", - "_didChangeValue:forRelationship:named:withInverse:", - "_didChangeValueForKey:", - "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:", - "_didCloseFile:", - "_didCommitLoadForFrame:", - "_didCreateFile", - "_didDeleteFile", - "_didEndSheet:returnCode:contextInfo:", - "_didFailLoadWithError:forFrame:", - "_didFailProvisionalLoadWithError:forFrame:", - "_didFailWithError:", - "_didFinishLoadForFrame:", - "_didFinishLoading", - "_didFinishReturnCachedResponse:", - "_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", - "_directoryListElementImpl", - "_dirtyRect", - "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:", - "_dirtyRegion", - "_disableAutosavingAndColumnResizingNotificationsAndMark:", - "_disableChangeNotifications", - "_disableChangeSync", - "_disableCompositing", - "_disableEnablingKeyEquivalentForDefaultButtonCell", - "_disableLayout", - "_disableMovedPosting", - "_disablePosting", - "_disableResizedPosting", - "_disableSecurity:", - "_disableSelectionPosting", - "_disableToolTipCreationAndDisplay", - "_disableTrackingRect:", - "_disabledTrackingInNeighborhoodOfMouse", - "_discardCursorRectsForView:", - "_discardEditing", - "_discardEditingForAllBinders", - "_discardEditingOfView:", - "_discardEventsFromSubthread:", - "_discardEventsWithMask:eventTime:", - "_discardMarkedText", - "_discardTrackingRect:", - "_discardTrackingRects:count:", - "_discardValidateAndCommitValue:", - "_diskCacheClear", - "_diskCacheCreateDirectory", - "_diskCacheCreateLRUList:", - "_diskCacheDefaultPath", - "_diskCacheExecuteRemoval:", - "_diskCacheExecuteWrite:", - "_diskCacheGet:", - "_diskCacheScheduleRemoval:", - "_diskCacheScheduleWrite:", - "_diskCacheSetSyncTimer", - "_diskCacheSync:", - "_diskCacheSyncLoop:", - "_diskCacheTruncate:", - "_dismissModeless:", - "_dismissSheet:", - "_dispatchCallBack:flags:error:", - "_dispatchCallBackWithError:", - "_displayAllDrawersIfNeeded", - "_displayChanged", - "_displayDelayedMenu", - "_displayIfNeeded", - "_displayName", - "_displayName:", - "_displayProfileChanged", - "_displayProfileChanged:", - "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:", - "_displaySomeWindowsIfNeeded:", - "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:", - "_displayTemporaryToolTipForView:withString:", - "_displayToolTipIfNecessaryIgnoringTime:", - "_displayWidth", - "_displayedLabel", - "_displayedLabelForRect:", - "_dispose:", - "_disposeBackingStore", - "_disposeMovieController", - "_disposeObjects:", - "_disposeSurface", - "_distForGlyphLocation:", - "_distanceForVerticalArrowKeyMovement", - "_distanceFromBaseToTopOfWindow", - "_distanceFromToolbarBaseToTitlebar", - "_distanceInDragDirectionBeforeDragAttempt", - "_distanceInNonDragDirectionBeforeAbortingDragAttempt", - "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:", - "_divElementImpl", - "_doActualViewPrinting", - "_doAnimation", - "_doAnimationStep", - "_doAnimationStepWithProgress:", - "_doAttachDrawer", - "_doAttachDrawerIgnoreHidden:", - "_doAutoscroll:", - "_doAutoscrolling", - "_doAutoselectEdge", - "_doBidiProcessing", - "_doCallback", - "_doChangeDirectoryForUserDrillIntoNode:", - "_doClickAndQueueSendingOfAction:", - "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:", - "_doCloseDrawer", - "_doCommandBySelector:forInputManager:", - "_doDelayedAutocomplete", - "_doDelayedValidateVisibleToolbarItems", - "_doDeleteInReceiver:", - "_doDetachDrawer", - "_doEditOperation:", - "_doFinalAnimationStep", - "_doFindIndexesOfNodes:inDirectory:visitedNodes:", - "_doHide", - "_doImageDragUsingRows:event:pasteboard:source:slideBack:", - "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:", - "_doInvokeServiceIn:msg:pb:userData:error:unhide:", - "_doLayoutTabs:", - "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:", - "_doModalLoop:peek:", - "_doModifySelectionWithEvent:onColumn:", - "_doNameCheck:", - "_doOpenDrawer", - "_doOpenFile:ok:tryTemp:", - "_doOpenFiles:", - "_doOpenUntitled", - "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:", - "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:", - "_doPageArea:finishPage:helpedBy:pageLabel:", - "_doPopupSearchString", - "_doPositionDrawer", - "_doPositionDrawerAndSize:parentFrame:", - "_doPositionDrawerAndSize:parentFrame:stashSize:", - "_doPostColumnConfigurationDidChangeNotification:", - "_doPostedModalLoopMsg:", - "_doPreSaveAssignmentsForRequest:", - "_doPrintFiles:withSettings:showPrintPanels:", - "_doRemoveDrawer", - "_doRemoveFromSuperviewWithOutNeedingDisplay:", - "_doResetOfCursorRects:revealovers:", - "_doResizeDrawerWithDelta:fromFrame:", - "_doRotationOnly", - "_doRunLoop", - "_doScroller:", - "_doScroller:hitPart:multiplier:", - "_doSelectIndexes:byExtendingSelection:indexType:funnelThroughSingleIndexVersion:", - "_doSetAccessoryView:topView:bottomView:oldView:", - "_doSetAccessoryView:topView:bottomView:previousKeyView:oldView:", - "_doSetParentWindow:", - "_doSingleStep:inView:", - "_doSlideDrawerWithDelta:", - "_doSomeBackgroundLayout", - "_doStartDrawer", - "_doStopDrawer", - "_doSynchronizationOfEditedFieldForColumnWidthChange", - "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:", - "_doUnhideWithoutActivation", - "_doUpdate:", - "_doUpdateFromSnapshot:deltas:", - "_doUserComplete", - "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:", - "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:", - "_doUserPathWithOp:inContext:", - "_doUserRemoveMarkerFormatInRange:", - "_doUserSetAttributes:removeAttributes:", - "_doUserSetListMarkerFormat:options:", - "_doUserSetListMarkerFormat:options:inRange:level:", - "_docController:shouldTerminate:", - "_dockDied", - "_dockRestarted", - "_document:didPrint:forScriptCommand:", - "_document:didPrint:inContext:", - "_document:didSave:contextInfo:", - "_document:didSave:forScriptCommand:", - "_document:pageLayoutDidReturn:contextInfo:", - "_document:shouldClose:contextInfo:", - "_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", - "_donePoofing", - "_dontCountTowardsOriginLoadLimit", - "_dosetTitle:andDefeatWrap:", - "_doubleClickAtIndex:limitedRangeOK:", - "_downloadAssessment", - "_downloadAssessmentWithInitialData:", - "_downloadEnded", - "_downloadFinished", - "_downloadStarted", - "_downloadURL:", - "_downloadURL:toDirectory:", - "_downloadWithLoadingConnection:request:response:delegate:proxy:", - "_downloadWithRequest:delegate:directory:", - "_dragCanBeginFromHorizontalMouseMotion", - "_dragCanBeginFromSomeMouseMotion", - "_dragCanBeginFromVerticalMouseMotion", - "_dragDataItemViewer", - "_dragEndedNotification:", - "_dragFile:fromRect:slideBack:event:showAsModified:", - "_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:inRect:", - "_drawBorderInRect:", - "_drawCellAt::insideOnly:", - "_drawCenteredVerticallyInRect:", - "_drawClockAndCalendarWithFrame:inView:", - "_drawColumn:", - "_drawColumnHeaderRange:", - "_drawContents:faceColor:textColor:inView:", - "_drawContentsAtRow:column:clipRect:", - "_drawContinuousCapacityWithFrame:inView:", - "_drawCustomTrackWithTrackRect:inView:", - "_drawDelegate", - "_drawDiscreteCapacityWithFrame:inView:", - "_drawDone:success:", - "_drawDropHighlight", - "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:", - "_drawDropHighlightOffScreenIndicatorPointingLeftAtOffset:", - "_drawDropHighlightOffScreenIndicatorPointingUp:atOffset:", - "_drawDropHighlightOnRow:", - "_drawEmptyColumnsForView:inRect:", - "_drawEndCapInRect:", - "_drawFocusRingWithFrame:", - "_drawFooterInRect:", - "_drawForTransitionInWindow:usingHalftonePhaseForWindowOfSize:", - "_drawFrame", - "_drawFrame:", - "_drawFrameInterior:clip:", - "_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:", - "_drawKeyboardFocusRingWithFrame:forCell:", - "_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:", - "_drawMatrix", - "_drawMenuFrame:", - "_drawMiniWindow:", - "_drawOptimizedRectFills", - "_drawOrientedLabel:inRect:", - "_drawOutlineCell:withFrame:inView:", - "_drawOverflowHeaderInRect:", - "_drawProgressArea", - "_drawRatingWithFrame:inView:", - "_drawRealTitleWithFrame:inView:", - "_drawRect:clip:", - "_drawRect:liveResizeCacheCoveredArea:", - "_drawRect:liveResizeFill::::cacheCoveredArea:", - "_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:", - "_drawThemeComboBoxButtonWithFrame:inView:", - "_drawThemeContents:highlighted:inView:", - "_drawThemePopUpBorderWithFrame:inView:bordered:style:", - "_drawThemeProgressArea:", - "_drawThemeTab:withState:inRect:", - "_drawTickMarksWithFrame:inView:", - "_drawTitleBar:", - "_drawTitleStringIn:withColor:", - "_drawTitlebar:", - "_drawTitledFrame:", - "_drawTitlesForView:inRect:", - "_drawToolbarTransitionIfNecessary", - "_drawUnifiedToolbar:", - "_drawUnifiedToolbarBackgroundInRect:withState:", - "_drawView:", - "_drawViewBackgroundInRect:", - "_drawWindowsGaugeRects:", - "_drawWithImageCache", - "_drawerTakeFocus", - "_drawerVelocity", - "_drawerWindow", - "_drawingEndSeparator", - "_drawingInRevealover", - "_drawingRectForPart:", - "_drawnByAncestor", - "_drawsBackground", - "_drawsHorizontalGrid", - "_drawsNothing", - "_drawsOutsideBBox", - "_drawsOwnDescendants", - "_drawsVerticalGrid", - "_drawsWithTintWhenHidden", - "_dropNode:", - "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:", - "_dumpSetRepresentation:", - "_dynamicColorsChanged:", - "_dynamicToolTipManager", - "_dynamicToolTipManagerClass", - "_dynamicToolTipManagerInstances", - "_dynamicToolTipsEnabled", - "_edge", - "_edges", - "_editableBinderForTableColumn:", - "_editableStateWithMode:", - "_editedDocumentCount", - "_editingDelegateForwarder", - "_editingFirstResponderIfIsASubview", - "_editingInView:", - "_editor:didChangeEditingState:bindingAdaptor:", - "_effect", - "_effectiveFocusRingType", - "_elementAtWindowPoint:", - "_elementAttributeRelationship", - "_elementFromTidyDoc:element:", - "_elementImpl", - "_elementIsBlockLevel:", - "_elementWithImpl:", - "_embedElementImpl", - "_emptyContents", - "_emptyStyle", - "_enableAutosavingAndColumnResizingNotifications", - "_enableChangeNotifications", - "_enableChangeSync", - "_enableCompositing", - "_enableEnablingKeyEquivalentForDefaultButtonCell", - "_enableItems", - "_enableLayout", - "_enableLogging:", - "_enableMatrixLiveResizeImageCacheing", - "_enableMovedPosting", - "_enablePosting", - "_enableResizedPosting", - "_enableSecurity:", - "_enableSelectionPostingAndPost", - "_enableToolTipCreationAndDisplay", - "_enableTrackingRect:", - "_enabledStateWithMode:", - "_enablesOnWindowChangedKeyState", - "_enclosingBrowser", - "_enclosingBrowserView", - "_enclosingSidebarItem", - "_enclosingSidebarView", - "_encodeArrayOfObjects:forKey:", - "_encodeByte:", - "_encodeDepth:", - "_encodeMapTable:forTypes:withCoder:", - "_encodePropertyList:forKey:", - "_encodeWithoutNameWithCoder:newStyle:", - "_encounteredCloseError", - "_endChanging", - "_endColumnAnimationOptimization", - "_endCustomizationMode", - "_endCustomizationPalette:", - "_endCustomizationPanel", - "_endDragging", - "_endDrawForDragging", - "_endDrawView:", - "_endEditingIfEditedCellIsChildOfItemEntry:", - "_endEditingIfFirstResponderIsASubview", - "_endEditingIfNecessaryWhenDeselectingColumnRange:", - "_endEditingIfNecessaryWhenDeselectingRowRange:", - "_endEditingIfNecessaryWhenSelectingColumnRange:byExtendingSelection:", - "_endEditingIfNecessaryWhenSelectingRowRange:byExtendingSelection:", - "_endInsertionOptimization", - "_endInsertionOptimizationWithDragSource:force:", - "_endListeningForApplicationStatusChanges", - "_endListeningForDeviceStatusChanges", - "_endListeningForPowerStatusChanges", - "_endListeningForSessionStatusChanges", - "_endLiveResize", - "_endLiveResizeAsTopLevel", - "_endLiveResizeForAllDrawers", - "_endMyEditing", - "_endMyEditingAndRemainFirstResponder", - "_endOfParagraphAtIndex:", - "_endScrolling", - "_endTabWidth", - "_endToolbarEditingMode", - "_endTopLevelGroupings", - "_enqueueEndOfEventNotification", - "_ensureAndLockPreferredLanguageLock", - "_ensureCapacity:", - "_ensureLayoutCompleteToEndOfCharacterRange:", - "_ensureLocalizationDictionaryIsLoaded", - "_ensureMetadataLoaded", - "_ensureMinAndMaxSizesConsistentWithBounds", - "_ensureObjectsAreMutable", - "_ensureRangeCapacity:", - "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:", - "_ensureSubviewNextKeyViewsAreSubviews", - "_enterElement:tag:display:", - "_enterLibXML2ElementNode:tag:", - "_entity", - "_entityClass", - "_entityDescriptionForObjectID:", - "_entityForCurrentRow", - "_entityForExternalName:inConfigurationNamed:", - "_entityForName:", - "_entityID", - "_entityImpl", - "_entryForPath:", - "_entryForSpecifier:", - "_enumeratedArgumentBindings:", - "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:", - "_enumeratedDisplayPatternTitleBindings:", - "_enumeratedEditableBindings:", - "_enumeratedEnabledBindings:", - "_enumeratedHiddenBindings:", - "_enumeratedPredicateBindings:", - "_enumerationBinding", - "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:", - "_equalyResizeColumnsByDelta:resizeInfo:", - "_errorAlert:wasPresentedWithResult:inContext:", - "_errorWasPresentedWithRecovery:inContext:", - "_errorWithCode:", - "_escapeCharacters:amount:inString:appendingToString:", - "_escapeHTMLAttributeCharacters:withQuote:appendingToString:", - "_escapedStringForString:escapeQuotes:", - "_evaluateRelativeToObjectInContainer:", - "_evaluateToBeginningOrEndOfContainer:", - "_evaluationErrorNumber", - "_eventImpl", - "_eventInTitlebar:", - "_eventRecordDelta:", - "_eventRef", - "_eventRelativeToWindow:", - "_eventWithImpl:", - "_evilHackToClearlastLeftHitInWindow", - "_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:", - "_expandRep:", - "_expandSelectionToGranularity:", - "_expandedNodesForObservedNode:", - "_expirationDate", - "_expirationForResponse:", - "_expiresDate", - "_explicitlyCannotAdd", - "_explicitlyCannotAddChild", - "_explicitlyCannotInsert", - "_explicitlyCannotInsertChild", - "_explicitlyCannotRemove", - "_exposeBinding:valueClass:", - "_exposedBindings", - "_expressionWithSubstitutionVariables:", - "_extendCharacterToGlyphMapToInclude:", - "_extendGlyphToWidthMapToInclude:font:", - "_extendNextScrollRelativeToCurrentPosition", - "_extendUnicodeCharacterToGlyphMapToInclude:", - "_extendedCharRangeForInvalidation:editedCharRange:", - "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:", - "_extensionsFromTypeInfo:", - "_extraWidthForCellHeight:", - "_faceForFamily:fontName:", - "_familyName", - "_fastCStringContents:", - "_fastCharacterContents", - "_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", - "_fileListModeControlCell", - "_fileLocator", - "_fileModificationDate", - "_fileModificationDateForURL:", - "_fileNameExtensionsForType:forUseInSavePanel:", - "_fileOperation:source:destination:files:", - "_fileOperationCompleted:", - "_filePathValue", - "_fileURLValue", - "_fileWrapperForURL:", - "_fileWrapperRepresentation", - "_filenameForCollection:", - "_filenameHasAcceptableFileType:", - "_filenameHasNonEmptyAcceptableFileType:", - "_fillBackground:withAlternateColor:", - "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:", - "_fillGrayRect:with:", - "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:", - "_fillLayoutHoleAtIndex:desiredNumberOfLines:", - "_fillSpellCheckerPopupButton:", - "_fillerRectHeight", - "_fillsClipViewHeight", - "_fillsClipViewWidth", - "_filterList", - "_filterNodeList:", - "_filterObjects:", - "_filterRestrictsInsertion", - "_filteredAndSortedChildrenOfNode:", - "_finalProgressComplete", - "_finalScrollingOffsetFromEdge", - "_finalize", - "_finalizeStatement", - "_findButtonImageForState:", - "_findCoercerFromClass:toClass:", - "_findColorListNamed:forDeviceType:", - "_findCurrentEditor", - "_findDictOrBitmapSetNamed:", - "_findDragTargetFrom:", - "_findFirstItemInArray:withItemIdentifier:", - "_findFirstKeyViewInDirection:forKeyLoopGroupingView:", - "_findFirstOne::", - "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:byExtendingSelection:", - "_findFirstValidKeyViewStartingFrom:inTabViewItem:", - "_findFrameInThisWindowNamed:", - "_findFrameNamed:", - "_findHitItemViewer:", - "_findIndexOfFirstDuplicateItemWithItemIdentier:", - "_findItemViewerAtPoint:", - "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:", - "_findLastViewInKeyViewLoop", - "_findLastViewInKeyViewLoopStartingAtView:", - "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:", - "_findParentWithLevel:beginingAtItem:childEncountered:", - "_findPreviousNextTab:loop:startingAtTabItem:", - "_findScrollerToAutoLiveScrollInWindow:", - "_findSystemImageNamed:", - "_findWindowUsingCache:", - "_findWindowUsingRealWindowNumber:", - "_finishAutosavingWithSuccess:", - "_finishDownloadDecoding", - "_finishHitTracking:", - "_finishInitialization", - "_finishMessagingClients:", - "_finishModalOperation", - "_finishPrintFilter:filter:", - "_finishPrintingDocumentsInContext:success:", - "_finishSaveDocumentTo:withType:forSaveOperation:withDelegate:didSaveSelector:contextInfo:", - "_finishWritingFileAtPath:byMovingFileAtPath:", - "_finishWritingFileNamed:inFolder:byExchangingWithFileInFolder:", - "_finishedLoading", - "_finishedLoadingResourceFromDataSource:", - "_finishedMakingConnections", - "_finishedWiringNibConnections", - "_fireFirstAndSecondLevelFaultsForObject:withContext:", - "_firstHighlightedCell", - "_firstMoveableItemIndex", - "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:", - "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:", - "_firstPresentableName", - "_firstResponderIsControl", - "_firstSelectableRowInMatrix:inColumn:", - "_firstTextViewChanged", - "_fixCommandAlphaShifts", - "_fixGlyphInfo:inRange:", - "_fixHeaderAndCornerViews", - "_fixJoiningOfSelectedAtoms", - "_fixKeyViewForView:", - "_fixSelectionAfterChangeInCharacterRange:changeInLength:", - "_fixSharedData", - "_fixTargetsForMenu:", - "_fixedSelectionRangeForRange:affinity:", - "_fixedSelectionRangesForRanges:affinity:", - "_fixup:numElements:", - "_fixupKeyboardLoop", - "_fixupSortDescriptorPlaceholdersIfNecessary", - "_flattenMenu:", - "_flattenMenuItem:", - "_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:", - "_flushAEDesc", - "_flushAllCachedChildren", - "_flushCachedCarbonPrintersByName", - "_flushCachedChildrenForNode:", - "_flushCachedObjects", - "_flushNotificationQueue", - "_focusDidChange:", - "_focusFromView:withContext:", - "_focusInto:withClip:", - "_focusOnCache:", - "_focusRingCGColor", - "_focusRingFrameForFrame:cellFrame:", - "_focusRingRect", - "_focusRingVisibleRect", - "_focusedCrayon", - "_fondID", - "_fontAttributesFromFontPasteboard", - "_fontDescriptor", - "_fontDescriptorForFontPanel", - "_fontElementImpl", - "_fontFaceRuleImpl", - "_fontFallbackType", - "_fontForName:size:", - "_fontFromBindingsWithMode:referenceFont:fallbackFont:", - "_fontFromDescriptor:", - "_fontNameForFamily:face:", - "_fontNameForFont:", - "_fontSetChanged:", - "_fontSetWithName:", - "_fontWithNumber:size:bold:italic:", - "_footerHeight", - "_forKey:getType:andSuite:", - "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:", - "_forSRSpeechObject:setObject:forProperty:usingDataSize:", - "_forceAppendItem:", - "_forceCharIndexesAllocation", - "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs", - "_forceFixAttributes", - "_forceFlushWindowToScreen", - "_forceInsertItem:atIndex:", - "_forceMoveItemFromIndex:toIndex:", - "_forceOriginalFontBaseline", - "_forceRedrawDragInsertionIndicator", - "_forceRemoveItemFromIndex:", - "_forceReplaceItemAtIndex:withItem:", - "_forceResetTexturedWindowDragMargins", - "_forceSendAction:notification:firstResponder:", - "_forceSendDoubleActionForPreviewCell", - "_forceSetColor:", - "_forceSetLastEditedStringValue:", - "_forceSetView:", - "_forceUpdateDimpleLocation", - "_forceUpdateFocusRing", - "_forgetData:", - "_forgetObject:propagateToObjectStore:", - "_forgetSpellingFromMenu:", - "_forgetWord:inDictionary:", - "_formDelegate", - "_formElementImpl", - "_formElementWithImpl:", - "_formatCocoaErrorString:parameters:applicableFormatters:count:", - "_formatObjectValue:invalid:", - "_fragmentData", - "_fragmentImpl", - "_frame", - "_frameDuration", - "_frameDurationAt:", - "_frameElementImpl", - "_frameForCurrentSelection", - "_frameForDataSource:fromFrame:", - "_frameForView:", - "_frameForView:fromFrame:", - "_frameLoadDelegateForwarder", - "_frameOfColumns", - "_frameOfOutlineCellAtRow:", - "_frameOrBoundsChanged", - "_frameSetElementImpl", - "_frameViewAtWindowPoint:", - "_freeCache:", - "_freeClients", - "_freeImage", - "_freeNode:", - "_freeNodes", - "_freeRepresentation:", - "_freeServicesMenu:", - "_freeSpeechItems", - "_freshnessLifetime", - "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:", - "_fromRecord:getContainerInfo:", - "_fromRecord:getContainerInfo:andKey:", - "_fromScreenCommonCode:", - "_fsRefValue", - "_fullDescription:", - "_fullLayout", - "_fullPathForService:", - "_gatherFocusStateInto:upTo:withContext:", - "_gaugeImage:", - "_gc:", - "_generateCompositedBackground", - "_generateErrorDetailForKey:withValue:", - "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:", - "_generateFrameName", - "_generateHTML", - "_generateIDWithSuperEntity:nextID:", - "_generateInverseRelationshipsAndMore", - "_generateMetalBackground", - "_generateModel:", - "_generatePSCodeHelpedBy:operation:", - "_generateProperties", - "_generateScaledBackground", - "_generatedMIMETypeForURLScheme:", - "_genericDragCursor", - "_genericMutableSetValueForKey:", - "_genericValueForKey:withIndex:flags:", - "_getAETEElementClassDescriptions:exceptThoseWithKeys:andSupers:", - "_getATSTypesetterGuts", - "_getArguments:withParameters:", - "_getAuxData", - "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:", - "_getBracketedStringFromBuffer:string:", - "_getBrowser:browserColumn:", - "_getBucketForSeekingToPoint:", - "_getBucketForSeekingToRow:", - "_getBucketLocationForBucket:", - "_getButtonImageParts:::", - "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:", - "_getCGCustomColorSpace", - "_getCGImageRefCreateIfNecessary", - "_getCacheWindow:andRect:forRep:", - "_getCharactersAsStringInRange:", - "_getColorFromImageAtPoint:", - "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:", - "_getCommonTypeFor:", - "_getConvertedDataFromPasteboard:", - "_getCursorBitmapWidth:andHeight:", - "_getData:encoding:", - "_getDirtyRects:clippedToRect:count:boundingBox:", - "_getDisplayDelay:inQuickMode:forView:", - "_getDisplayDelegateFadesOutWhenInactive:", - "_getDocInfoForKey:", - "_getDocument", - "_getDrawingRow:andCol:", - "_getExternalData:", - "_getFSRefForPath:", - "_getFloat:forNode:property:", - "_getFocusRingFrame", - "_getFullyFormedCellAtColumn:row:", - "_getGaugeFrame", - "_getGlobalWindowNumber:andRect:forRepresentation:", - "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:", - "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:", - "_getGlyphIndexForLocationInWindow:roundToClosest:fraction:layoutManager:textStorage:", - "_getITypeFor:", - "_getImageAndHotSpotFromCoreCursor", - "_getInsertionGlyphIndexForDrag:", - "_getInstanceForIdentifier:", - "_getKernelFolderCPath", - "_getKeys:forPropertyDescriptionKind:", - "_getLocalPoint:", - "_getLocalizedLabels:andLocalizedValues:", - "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:", - "_getNewTemporaryId", - "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:", - "_getNodeForKey:inTable:", - "_getPageHeaderRect:pageFooterRect:forBorderSize:", - "_getPartStruct:numberOfParts:withInnerBounds:", - "_getPosition:", - "_getPositionFromServer", - "_getProgressFrame", - "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:", - "_getRemainderFrame", - "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:", - "_getRidOfCacheAndMarkYourselfAsDirty", - "_getRow:andCol:ofCell:atRect:", - "_getRow:column:nearPoint:", - "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:", - "_getSelectorForType:", - "_getSymbolForType:", - "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:", - "_getTextColor:backgroundColor:", - "_getTiffImage:ownedBy:", - "_getTiffImage:ownedBy:asImageRep:", - "_getUUID", - "_getUndoManager:", - "_getVRefNumForPath:", - "_getVisibleRowRange:columnRange:", - "_getWindowCache:add:", - "_giveUpFirstResponder:", - "_globalIDChanged:", - "_globalIDForObject:", - "_globalIDsForObjects:", - "_glyph", - "_glyphAdvancementCache:", - "_glyphAdvancementCache:renderingMode:", - "_glyphForFont:baseString:", - "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:", - "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:", - "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:", - "_goBack", - "_goForward", - "_goToHistoryState:", - "_goToItem:withLoadType:", - "_goneMultiThreaded", - "_gradientImage", - "_graphiteAlternatingRowColor", - "_graphiteControlTintColor", - "_graphiteKeyboardFocusColor", - "_gray204Color", - "_gray221Color", - "_grestore", - "_growBoxOwner", - "_growBoxRect", - "_growCachedRectArrayToSize:", - "_growContentReshapeContentAndToolbarView:animate:", - "_growFrameForDropGapStyle", - "_growFrameForDropGapStyleIfNecessary", - "_growWindowReshapeContentAndToolbarView:animate:", - "_gsave", - "_guaranteeStorageInDictionary:addBinding:", - "_guess:", - "_guessesForMisspelledSelection", - "_handleAEOpen:", - "_handleAEOpenContentsEvent:replyEvent:", - "_handleAEOpenDocuments:", - "_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:", - "_handleChildChanged:", - "_handleChildRemoved:", - "_handleChildrenChanged:", - "_handleCommand:", - "_handleCompletionsForPartialWordRange:indexOfSelectedItem:inTextView:", - "_handleContentBoundsChanged", - "_handleCoreEvent:withReplyEvent:", - "_handleCurrentBrowsingNodePathChanged", - "_handleCurrentDirectoryChanged:", - "_handleCurrentDirectoryNodeChanged", - "_handleCursorUpdate:", - "_handleDefaultVoiceChange", - "_handleDisabledNodeClicked:", - "_handleDocumentFileChanges:", - "_handleError:delta:fromRect:toPoint:", - "_handleError:withError:", - "_handleFauxDisabledNodeClicked:", - "_handleFileListConfirmedSelection:", - "_handleFileListDidReloadChildrenForNode:", - "_handleFileListModeChanged", - "_handleFileListModeChanged:", - "_handleFileListSelectionChanged:", - "_handleFocusToolbarHotKey:", - "_handleFrameChangeForSubview:", - "_handleGotoFinishedWithResult:", - "_handleKeyEquivalent:", - "_handleMessage:from:socket:", - "_handleMouseUpWithEvent:", - "_handleNameFieldContentsChanged", - "_handleObservingRefresh", - "_handlePhonemeCallbackWithOpcode:", - "_handleQueryStateChange:", - "_handleRecognitionBeginningWithRecognitionResult:", - "_handleRecognitionDoneWithRecognitionResult:", - "_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", - "_hasActiveControls", - "_hasActiveRequest", - "_hasAttributedStringValue", - "_hasBackgroundColor", - "_hasBezelBorder", - "_hasCredentials", - "_hasCursorRects", - "_hasCursorRectsForView:", - "_hasCustomVisibilityPriority", - "_hasDefaultButtonIndicator", - "_hasEditableCell", - "_hasExpirationDate", - "_hasFocusRing", - "_hasFocusRingInView:", - "_hasGradientBackground", - "_hasHorizontalOrientation", - "_hasIconForIconURL:", - "_hasImage", - "_hasImageCache", - "_hasKeyAppearance", - "_hasKeyFocus", - "_hasKeyboardFocus", - "_hasKeyboardFocusInTabItem:", - "_hasMainAppearance", - "_hasMetalSheetEffect", - "_hasNonNominalDescriptor", - "_hasObservers", - "_hasOverrideForSelector:", - "_hasPendingChanges", - "_hasQuestionMarkOnlyQueryString", - "_hasRetainedStoreResources", - "_hasRowHeaderColumn", - "_hasScaledBackground", - "_hasSeenRightToLeft", - "_hasSelection", - "_hasSelectionOrInsertionPoint", - "_hasSeparateArrows", - "_hasSheetFactor:", - "_hasTabs", - "_hasTitle", - "_hasToolbar", - "_hasWindowRef", - "_hasWindowRefCreatedForCarbonControl", - "_hash", - "_hashMarkDictionary", - "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:", - "_hashMarkDictionaryForDocumentView:measurementUnitName:", - "_headElementImpl", - "_headerCellRectOfColumn:", - "_headerCellSizeOfColumn:", - "_headerHeight", - "_headerSizeOfColumn:", - "_headingElementImpl", - "_heartBeatBufferWindow", - "_heartBeatThread:", - "_heedBeginningOfPage:", - "_heedBeginningOfPage:outOf:", - "_heightIsFlexible", - "_helpBundleForObject:", - "_helpKeyForObject:", - "_helperDeallocatedForView:layoutManager:", - "_hiddenExtension", - "_hiddenOnLaunch", - "_hiddenStateWithMode:", - "_hiddenWindows", - "_hide", - "_hide:", - "_hideAllDrawers", - "_hideChildren", - "_hideLanguagePopUp", - "_hideMDPartsIfNecessary", - "_hideMenu:", - "_hideQueryProgress", - "_hideSheet:", - "_hideToolbar:animate:", - "_hideToolbarWithAnimation:", - "_hideWithoutResizingWindowHint", - "_highlightCell:atRow:column:andDraw:", - "_highlightColor", - "_highlightColorDependsOnWindowState", - "_highlightColorForCell:", - "_highlightColumn:clipRect:", - "_highlightOutlineCell:highlight:withFrame:inView:", - "_highlightRow:clipRect:", - "_highlightTextColor", - "_highlightedNodes", - "_hiliteWindow:fromWindow:", - "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:", - "_historyControlCell", - "_hitTest:dragTypes:", - "_hitTestCellContentAtColumn:row:point:", - "_hitTestContentAtPoint:inRect:ofView:", - "_horizontalKeyboardScrollDistance", - "_horizontalPageScrollDistance", - "_horizontalScroller", - "_horizontalScrollerClass", - "_horizontalScrollerSeparationHeight", - "_hostData", - "_hostString", - "_hoverAreaIsSameAsLast:", - "_htmlDocumentClass", - "_htmlFromTidyNode:tidyDoc:appendingToString:", - "_iconForCarbonIcon:size:", - "_iconForFileURL:withSize:", - "_iconForOSType:", - "_iconForOSType:creator:", - "_iconFromDictionary:forSize:cache:", - "_iconLoaderReceivedPageIcon:", - "_iconRef", - "_iconsBySplittingRepresentationsOfIcon:", - "_iconsForIconURLString:", - "_idleMovies", - "_ignoreForKeyViewLoop", - "_ignoreSpellingFromMenu:", - "_ignoringChangeNotifications", - "_ignoringScrolling", - "_image", - "_imageElementImpl", - "_imageElementWithImageResource:", - "_imageExistsAtPaths:", - "_imageForColorPicker:", - "_imageForDrawingInRectOfSize:fromImage:", - "_imageForMenu", - "_imageFromItemTitle:", - "_imageFromNewResourceLocation:", - "_imageNamed:", - "_imageNumber", - "_imageRectWithRect:", - "_imageRepClassForFileNameExtension:andHFSFileType:", - "_imageRepWithData:hfsFileType:extension:", - "_imageRepsWithData:fileType:hfsType:", - "_imageRepsWithData:hfsFileType:extension:", - "_imageSizeWithSize:", - "_imagesFromIcon:inApp:zone:", - "_imagesFromURL:forImage:fileType:extension:", - "_imagesHaveAlpha", - "_imagesWithData:hfsFileType:extension:zone:", - "_imagesWithData:zone:", - "_immediateChildFrameNamed:", - "_immediateScrollToPoint:", - "_imp", - "_impactsWindowMoving", - "_impl", - "_implicitObservationInfo", - "_implicitObservationInfoForEntity:forResultingClass:", - "_importRuleImpl", - "_inAutoCompleteTyping", - "_inFavMode", - "_inHideCollectionsMode", - "_inHideFaceMode", - "_inLiveResize", - "_inMiniMode", - "_inPreview", - "_inQuickDisplayModeForWindow:", - "_inResize:", - "_inTSMPreProcess", - "_inTexturedWindow", - "_includeObject:intoPropertyWithKey:", - "_incrementBy:startingAtIndex:", - "_incrementInUseCounter", - "_incrementLine:", - "_incrementPage:", - "_incrementProgressForConnectionDelegate:data:", - "_incrementProgressForConnectionDelegate:response:", - "_incrementSelectedSubfield", - "_incrementUndoTransactionID", - "_indexAtIndex:", - "_indexClosestToIndex:equalAllowed:following:", - "_indexForRed:green:blue:", - "_indexOfColonInName", - "_indexOfColonInString:", - "_indexOfFirstGlyphInTextContainer:okToFillHoles:", - "_indexOfItemWithPartialTitle:", - "_indexOfKey:", - "_indexOfNode:inOrderedNodes:", - "_indexOfPopupItemForLanguage:", - "_indexOfRangeAfterOrContainingIndex:", - "_indexOfRangeBeforeOrContainingIndex:", - "_indexOfRangeContainingIndex:", - "_indexOfSubfieldAtPoint:inFrame:", - "_indexPath", - "_indicatorImage", - "_indicatorImageForCellHeight:", - "_infoForOSAError:", - "_infoForPage:", - "_informationForFont:glyphTable:positionTable:", - "_init", - "_init:", - "_init::::", - "_initContent:styleMask:backing:defer:contentView:", - "_initContent:styleMask:backing:defer:counterpart:", - "_initContentView", - "_initData", - "_initDefaultNamespaces", - "_initEmptyHTMLNames", - "_initFlippableViewCacheLock", - "_initFromAbsolutePositionRecord:", - "_initFromGlobalWindow:inRect:styleMask:", - "_initFromRangeRecord:", - "_initFromRecord:", - "_initFromTestRecord:", - "_initInStatusBar:withLength:withPriority:", - "_initInfoDictionary", - "_initJobVars", - "_initLocks", - "_initPanelCommon", - "_initRemoteWithSignature:", - "_initSaveMode", - "_initServicesMenu:", - "_initSidebarAndPopups", - "_initSingleAttributes", - "_initUI", - "_initValueTransformers", - "_initWithAbstractViewImpl:", - "_initWithAddressInfo:", - "_initWithArray:", - "_initWithAttributesNoCopy:pageFormatNoCopy:orFlattenedData:printSettingsNoCopy:orFlattenedData:", - "_initWithBitmapImageRep:", - "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:", - "_initWithCGColorSpaceNoCache:", - "_initWithCGSEvent:", - "_initWithCGSEvent:eventRef:", - "_initWithCIImage:", - "_initWithCSSStyleSheetImpl:", - "_initWithCachedResponse:originalURL:", - "_initWithClassDescription:synonymDescription:", - "_initWithCollectionImpl:", - "_initWithContentSize:preferredEdge:", - "_initWithContentsOfFile:error:", - "_initWithCounterImpl:", - "_initWithDOMImplementationImpl:", - "_initWithDOMRange:", - "_initWithDOMStyleSheetImpl:", - "_initWithData:bytesPerRow:size:format:params:", - "_initWithData:error:", - "_initWithData:fileType:hfsType:", - "_initWithData:tiff:imageNumber:", - "_initWithDataOfUnknownEncoding:", - "_initWithDictionary:", - "_initWithEntities:", - "_initWithEntity:withID:withHandler:withContext:", - "_initWithEventImpl:", - "_initWithFileSpecifierOrStandardizedPath:", - "_initWithGraph:mutable:", - "_initWithGraphicsPort:flipped:", - "_initWithIconRef:includeThumbnail:", - "_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:property:options:context:", - "_initWithOptionsCollectionImpl:", - "_initWithOutput:", - "_initWithParagraphStyle:", - "_initWithParentObjectStore:", - "_initWithPath:bundle:", - "_initWithPickers:", - "_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:", - "_initWithTreeWalkerImpl:filter:", - "_initWithValueImpl:", - "_initWithWindow:", - "_initWithWindowNumber:", - "_initWithWindowNumber:scaleFactor:", - "_initWithfeImage:", - "_initWithfeKernel:", - "_initWithfeSampler:", - "_initialize:::", - "_initializeATSUStyle", - "_initializeArchiverMappings", - "_initializeButtonCell", - "_initializeFromKeychain", - "_initializePredefinedEntities", - "_initializeRegisteredDefaults", - "_initializeResumeInformation:", - "_initializeScriptDOMNodeImp", - "_initializeWithObjectImp:root:", - "_inputClientChangedStatus:inputClient:", - "_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:", - "_insertObjectWithGlobalID:globalID:", - "_insertRange:inArrayAtIndex:", - "_insertStatusItemWindow:withPriority:", - "_insertText:forInputManager:", - "_insertText:selectInsertedText:", - "_insertablePasteboardTypes", - "_insertionGapForItemViewer:forDraggingSource:", - "_insertionGlyphIndexForDrag:", - "_insertionIndexPathAppendChildIndex:", - "_insertionOrder", - "_insertionPointDisabled", - "_insetRect:", - "_insideAnotherHTMLView", - "_installActionButtonIfNecessary", - "_installAutoreleasePoolsOnCurrentThreadIfNecessary", - "_installCarbonAppDockHandlers", - "_installCarbonWindowEventHandlers", - "_installHeartBeat:", - "_installLabel", - "_installOpenRecentMenuOpeningEventHandler:", - "_installOpenRecentsMenu", - "_installRulerAccViewForParagraphStyle:ruler:enabled:", - "_installWindowDepthHandler", - "_intValue", - "_integerValueForKey:", - "_interceptEditingKeyEvent:", - "_internalChildFrames", - "_internalIndicesOfObjectsByEvaluatingWithContainer:count:", - "_internalInit", - "_internalLoadDelegate", - "_internalNetService", - "_internalXMLStringWithOptions:appendingToString:", - "_invalidLabelSize", - "_invalidNavNodePopUpLabelAction", - "_invalidate", - "_invalidateAllRevealovers", - "_invalidateAllRevealoversForView:", - "_invalidateBlinkTimer:", - "_invalidateCachedRect", - "_invalidateCompositedBackground", - "_invalidateConnectionsAsNecessary:", - "_invalidateCursorRectsForView:force:", - "_invalidateDictionary:newTime:", - "_invalidateDisplayForChangeOfSelectionFromRange:toRange:", - "_invalidateDisplayForMarkedOrSelectedRange", - "_invalidateDisplayIfNeeded", - "_invalidateFocus", - "_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", - "_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:mode:raisesForNotApplicableKeys:", - "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:", - "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:", - "_invokeSingleSelector:withArguments:onKeyPath:", - "_isAXConnector", - "_isAbsolute", - "_isAcceptableDragSource:types:dragInfo:", - "_isActivated", - "_isAllowedFileType:", - "_isAncestorOfViewIdenticalTo:", - "_isAnimating", - "_isAnimatingDefaultCell", - "_isAnimatingScroll", - "_isAnyBindingInMaskBound:", - "_isAnyFontBindingBoundToController:", - "_isAutoCreated", - "_isAutoPlay", - "_isBeingEdited", - "_isBindingEstablished:", - "_isBooleanBinding:", - "_isBooleanTransformer", - "_isButtonBordered", - "_isCString", - "_isCached", - "_isCachedSeparately", - "_isCaseInsensitiveEqualToCString:", - "_isCaseSensitivePredicate:", - "_isClientRedirect", - "_isClosable", - "_isContinuousSpellCheckingEnabledForNewTextAreas", - "_isCtrlAltForHelpDesired", - "_isCurrentlyGapStyleDropTarget", - "_isDaylightSavingTimeForAbsoluteTime:", - "_isDeactPending", - "_isDeadkey", - "_isDefaultFace", - "_isDefaultFixedPitch", - "_isDeleted", - "_isDescendantOfFrame:", - "_isDingbats", - "_isDisplayingWebArchive", - "_isDocModal", - "_isDocWindow", - "_isDocumentHTML", - "_isDoingHide", - "_isDoingOpenFile", - "_isDoingUnhide", - "_isDraggable", - "_isDrawingForDragImage", - "_isDrawingMultiClippedContentAtIndex:", - "_isDrawingMultiClippedContentColumn:", - "_isDroppedConnectionException:", - "_isDying", - "_isEditable", - "_isEditing", - "_isEditingTextView:", - "_isEmptyMovie", - "_isEnabled", - "_isEqualToSortDescriptor:", - "_isEventProcessingDisabled", - "_isExpired", - "_isExplicitlyNonEditable", - "_isFSObjectExchangingAllowed", - "_isFSObjectExchangingAllowedOn:", - "_isFSObjectExchangingDesired", - "_isFakeFixedPitch", - "_isFault", - "_isFauxFilePackageNode:", - "_isFileClosed", - "_isFixedPitch", - "_isForPrivateBrowsing", - "_isFromSDEF", - "_isGapStyleDropTargetForRow:operation:mask:", - "_isGenericProfile", - "_isGrabber", - "_isHidden", - "_isHiragino", - "_isHiraginoFont", - "_isImageCache", - "_isInCustomizationMode", - "_isInUILayoutMode", - "_isIndexElementImpl", - "_isInheritedPropertyNamed:", - "_isInitialized", - "_isInserted", - "_isInternalFontName:", - "_isItemViewerMoveable:", - "_isKVOA", - "_isKeyPathBound:", - "_isKeyWindow", - "_isKeyWindowIgnoringFocus", - "_isLeafObject:", - "_isLoading", - "_isLoadingSDEFFiles", - "_isLocatedByURL:withCache:", - "_isLucidaGrande", - "_isMaintainingInverse", - "_isManagedController", - "_isManagedObjectOrEntityDescriptionContainerClassID:key:", - "_isMiniaturizable", - "_isModal", - "_isMoveDrag", - "_isMoving", - "_isNSColorDrag:", - "_isNSDocumentBased", - "_isNodeFileTypeEnabled:", - "_isNonactivatingPanel", - "_isNullExpression:", - "_isOnePieceTitleAndToolbar", - "_isOrdered", - "_isPaged", - "_isPaletteView", - "_isPendingDeletion", - "_isPendingInsertion", - "_isPendingUpdate", - "_isPerformingProgrammaticFocus", - "_isPoint:inDragZoneOfRow:", - "_isPostOrRedirectAfterPost:redirectResponse:", - "_isProfileBased", - "_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", - "_isTabEnabled", - "_isTableColumn:boundWithKeyPath:", - "_isTextured", - "_isThreadedAnimationLooping", - "_isTitleHidden", - "_isToolTipCreationAndDisplayEnabled", - "_isUnmarking", - "_isUpdated", - "_isUsedByCell", - "_isUsedForLocking", - "_isUserRemovable", - "_isUsingManagedProxy", - "_isUtility", - "_isUtilityWindow", - "_isValid", - "_isVertical", - "_isViewValidOriginalNextKeyView:", - "_item", - "_itemAdded:", - "_itemAtIndex:", - "_itemAtPosition:", - "_itemChanged", - "_itemChanged:", - "_itemChangedLabelOrPaletteLabel", - "_itemChangedToolTip", - "_itemEnabledStateChanged", - "_itemForRestoringDocState", - "_itemForSavingDocState", - "_itemIdentifierForModule:", - "_itemIdentifiersForColorPickers:", - "_itemInStatusBar:withLength:withPriority:", - "_itemLayoutChanged", - "_itemRemoved:", - "_itemType", - "_itemViewer", - "_itemViewerForDraggingInfo:draggingSource:", - "_itemVisibilityPriority", - "_items", - "_itemsFromItemViewers:", - "_itemsFromRowsWithIndexes:", - "_jobDispositionInPrintSession:printSettings:", - "_jobSavePathInPrintSession:printSettings:", - "_justOrderOut", - "_keepCacheWindow", - "_key", - "_key:inClass:indicatesMultipleValues:", - "_keyBindingManager", - "_keyCodeFromRecord:", - "_keyEquivalentForNode:", - "_keyEquivalentGlyphWidth", - "_keyEquivalentModifierMaskMatchesModifierFlags:", - "_keyEquivalentSizeWithFont:", - "_keyEquivalentsAreActive", - "_keyListForKeyNode:", - "_keyPathExpressionForString:", - "_keyRowOrSelectedRowOfMatrix:inColumn:", - "_keySegment", - "_keyValueBindingAccessPoints", - "_keyViewFollowingAccessoryView", - "_keyViewFollowingModalButtons", - "_keyViewFollowingOpacityViews", - "_keyViewFollowingPickerViews", - "_keyViewPrecedingAccesoryView", - "_keyViewPrecedingModalButtons", - "_keyViewPrecedingPickerViews", - "_keyViewRedirectionDisabled", - "_keyWindow", - "_keyWindowForHeartBeat", - "_keyboardDelayForPartialSearchString:", - "_keyboardIsOldNeXT", - "_keyboardLoopNeedsUpdating", - "_keyboardModifyRow:column:withEvent:", - "_keyboardNavigateDoSelectOfFocusItem:", - "_keyboardNavigateToTabAtIndex:", - "_keyboardNavigateToTabByDelta:", - "_keyboardUIActionForEvent:", - "_keychainItem", - "_keysForPropertyDescriptionKind:", - "_keysForValuesAffectingValueForKey:", - "_kitBundle", - "_kitNewObjectSetVersion:", - "_kitOldObjectSetVersion:", - "_kludgeScrollBarForColumn:", - "_knownEntityKeyForObject:", - "_knownEntityKeyForObjectID:", - "_knownPrimaryKeyForObject:", - "_knownPrimaryKeyForObjectID:", - "_knowsPagesFirst:last:", - "_labelCell", - "_labelCellWillDismissNotification:", - "_labelCellWillPopUpNotification:", - "_labelColor", - "_labelColorIndex", - "_labelElementImpl", - "_labelForColorPicker:", - "_labelOnlyShowsAsPopupMenu", - "_labelPatternColorForLabelIndex:", - "_labelRectForTabRect:forItem:", - "_labelType", - "_largestIconFromDictionary:", - "_lastCheckedRequest", - "_lastChild", - "_lastDragDestinationOperation", - "_lastDraggedEventFollowing:", - "_lastDraggedOrUpEventFollowing:", - "_lastDraggedOrUpEventFollowing:canceled:", - "_lastEventRecordTime", - "_lastItemIsNonSeparator", - "_lastKeyView", - "_lastLeftHit", - "_lastModifiedDate", - "_lastOnScreenContext", - "_lastRightHit", - "_lastSnapshot", - "_lastVisitedDate", - "_latin1MappingTable:", - "_latin1MappingTableWithPlatformFont:hasKernPair:", - "_launchService:andWait:", - "_launchSpellChecker:", - "_layoutDirtyItemViewersAndTileToolbar", - "_layoutEnabled", - "_layoutForData", - "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:", - "_layoutIsSameAsCachedLayoutWithFrame:", - "_layoutItemViewForWithItemHeight:allSidebarItemViews:", - "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:", - "_layoutOrderInsertionIndexForPoint:previousIndex:", - "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:", - "_layoutTabs", - "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:", - "_layoutViewsVerticallyAndResize", - "_lazyLoadQueryDictionariesFromSavedQuery", - "_leading", - "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:", - "_learnSpellingFromMenu:", - "_learnWord:inDictionary:", - "_leftGroupRect", - "_leftmostInsertionIndexForNode:inOrderedNodes:", - "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:", - "_legalNameCheck:", - "_legendElementImpl", - "_lengthForSize:", - "_liElementImpl", - "_libxml2TreeRepresentation", - "_libxml2TreeRepresentationWithNamespaces:", - "_lightGrayRGBColor", - "_lightWeightRecursiveDisplayInRect:", - "_lightYellowColor", - "_lightweightHandleChildChanged:parents:property:", - "_lineBorderColor", - "_lineBreakMode", - "_lineColor", - "_lineFragmentRectForProposedRectArgs", - "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:", - "_linkDragCursor", - "_linkElementImpl", - "_listDefinitions", - "_listenForProxySettingChanges", - "_liveResizeCacheableBounds", - "_liveResizeCachedBounds", - "_liveResizeCachedImage", - "_liveResizeCachedImageIsValid", - "_liveResizeHighlightSelectionInClipRect:", - "_liveResizeImageCacheingEnabled", - "_liveResizeLOptimizationEnabled", - "_load", - "_loadAllPlaceholderItems", - "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:", - "_loadBundle", - "_loadColors", - "_loadData", - "_loadData:MIMEType:textEncodingName:baseURL:unreachableURL:", - "_loadDataSource:withLoadType:formState:", - "_loadDeadKeyData", - "_loadDefaultSetImageRep", - "_loadFontFiles", - "_loadFromDOMRange", - "_loadFromUDIfNecessary", - "_loadHTMLString:baseURL:unreachableURL:", - "_loadHistoryGuts:URL:error:", - "_loadIcon", - "_loadIconDictionaries", - "_loadIconlessMenuContentsIfNecessary", - "_loadImageFromTIFF:imageNumber:", - "_loadImageInfoFromTIFF:", - "_loadImageWithName:", - "_loadImagesForActionType", - "_loadInitialItemIdentifiers:requireImmediateLoad:", - "_loadItem:withLoadType:", - "_loadItemViewsForChildrenOfContainerNodes:existingViewsToKeepTable:", - "_loadKeyboardBindings", - "_loadMenuItemIconsIfNecessary", - "_loadNibDataFromPath:", - "_loadNibFile:nameTable:withZone:ownerBundle:", - "_loadOrSetMetadata", - "_loadPickerBundlesIn:expectLibraryLayout:", - "_loadRecentSearchList", - "_loadRequest:inFrameNamed:", - "_loadRequest:subresources:subframeArchives:", - "_loadRequest:triggeringAction:loadType:formState:", - "_loadScriptSuites", - "_loadServicesMenuData", - "_loadSuiteDescription:", - "_loadSuitesForAlreadyLoadedBundles", - "_loadSuitesForJustLoadedBundle:", - "_loadSuitesFromSDEFData:bundle:", - "_loadSystemScreenColorList", - "_loadType", - "_loadUIIfNecessary", - "_loadURL:intoChild:", - "_loadURL:referrer:loadType:target:triggeringEvent:form:formValues:", - "_loadUsingHTMLDisplay", - "_loadUsingLibXML2", - "_loadUsingWebKit", - "_loadViewIfNecessary", - "_loadWebKit", - "_loadXSLT", - "_loadedCellAtRow:column:inMatrix:", - "_loadingDragOperationForDraggingInfo:", - "_loadingFromPageCache", - "_localObjectForGlobalID:", - "_localizationPolicy", - "_localizedColorListCopyrightString", - "_localizedColorListName", - "_localizedErrorDescriptionForCode:", - "_localizedKeyFromBundleStringFileForKey:", - "_localizedNameForColorWithName:", - "_localizedPropertyNameForProperty:entity:", - "_localizedStringForKey:value:", - "_locationFromUnitsValue:", - "_locationOfColumn:", - "_locationOfOriginPoint:", - "_locationOfPoint:", - "_locationOfRow:", - "_locationTemporary", - "_locationsForApplications", - "_lockCachedImage", - "_lockFirstResponder", - "_lockFocusOnRep:", - "_lockForReading", - "_lockForWriting", - "_lockQuickDrawPort", - "_lockUnlockCachedImage:", - "_lockViewHierarchyForDrawing", - "_lockViewHierarchyForDrawingWithExceptionHandler:", - "_lockViewHierarchyForModification", - "_lockfeContext", - "_logColumnWidths:", - "_logError:fallbackMessage:relatedToBinding:", - "_logObservingInfo", - "_logicalTestFromDescriptor:", - "_longLongValue", - "_looksLikeDomainSegment", - "_loopHit:row:col:", - "_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", - "_makeDocumentViewForDataSource:", - "_makeDownCellKey", - "_makeEditable::::", - "_makeFirstResponderForKeyboardHotKeyEvent", - "_makeHODWindowsPerform:", - "_makeHistory", - "_makeKeyNode:inKeyNode:", - "_makeLeftCellKey", - "_makeLinkFromMenu:", - "_makeModalWindowsPerform:", - "_makeNewListFrom:", - "_makeNextCellKey", - "_makeNextCellOrViewKey", - "_makePreviousCellKey", - "_makePreviousCellOrViewKey", - "_makeRememberedOrNewEditingSubviewBecomeFirstResponder", - "_makeRepresentation", - "_makeRequestCanonicalByMakingRequestURLCanonical:", - "_makeRightCellKey", - "_makeRootNode", - "_makeSelfMutable", - "_makeSureFirstResponderIsNotInInvisibleItemViewer", - "_makeSureItemViewersInArray:areSubviews:from:to:", - "_makeTable:inNode:", - "_makeUpCellKey", - "_makingFirstResponderForMouseDown", - "_managedAttributeKeys", - "_managedObjectContext", - "_managedObjectsChangedInContext:", - "_managedProxy", - "_managesWindowRef", - "_mapElementImpl", - "_mapNode:toEntityInModel:", - "_mappedFile", - "_mappingForConfigurationNamed:", - "_marginHeight", - "_marginWidth", - "_markAutoCreated:", - "_markCursorRectsForRemovedView:", - "_markForPrivateBrowsing", - "_markHasLoadedData:", - "_markLiveResizeColumnLayoutInfo", - "_markMovementTrackingInfo", - "_markRememberedEditingFirstResponderIfIsASubview", - "_markSelectionIsChanging", - "_markSelfAsDirtyForBackgroundLayout:", - "_markUsedByCell", - "_markWidth", - "_markedWidthDiffersFromCurrentWidth", - "_markerAreaRect", - "_markerForItemNumber:isNumbered:", - "_markerHitTest:", - "_markerLevelForRange:", - "_markerTypeButton", - "_matchesCharacter:", - "_matrix", - "_matrixWillResignFirstResponder:", - "_maxAge", - "_maxRuleAreaRect", - "_maxTitlebarTitleRect", - "_maxWidth", - "_maxXBorderRect", - "_maxXResizeRect", - "_maxXTitlebarBorderThickness", - "_maxXTitlebarButtonsWidth", - "_maxXTitlebarDecorationMinWidth", - "_maxXTitlebarWidgetInset", - "_maxXTitlebarWidgetInset:", - "_maxXWindowBorderWidth", - "_maxXWindowBorderWidth:", - "_maxXmaxYResizeRect", - "_maxXminYResizeRect", - "_maxYBorderRect", - "_maxYTitlebarDragHeight", - "_maxYWindowBorderHeight", - "_maxYmaxXResizeRect", - "_maxYminXResizeRect", - "_maximumItemViewerHeight", - "_mayStartDragAtEventLocation:", - "_maybeScrollMenu", - "_maybeSubstitutePopUpButton", - "_mdAttributes", - "_mdAttributesInLastRunSavePanel", - "_mdAttributesToWriteToFile:ofType:saveOperation:", - "_mediaListImpl", - "_mediaListWithImpl:", - "_mediaRuleImpl", - "_memoryCacheAppendNodeToLRUList:", - "_memoryCacheClear", - "_memoryCacheGet:", - "_memoryCachePut:", - "_memoryCacheRemove:", - "_memoryCacheRemoveNodeFromLRUList:", - "_memoryCacheTouchNode:", - "_memoryCacheTruncate:", - "_menuBarShouldSpanScreen", - "_menuCellInitWithCoder:", - "_menuChanged", - "_menuDidSendAction:", - "_menuForElement:", - "_menuFormRepresentationChanged", - "_menuImpl", - "_menuItemDictionaries", - "_menuListElementImpl", - "_menuName", - "_menuPanelInitWithCoder:", - "_menuScrollAmount", - "_menuScrollingOffset", - "_menuWillSendAction:", - "_menusWithName:", - "_mergeAutoCompleteHints:", - "_mergeGlyphHoles", - "_mergeLayoutHoles", - "_mergeObjectWithChanges:array:", - "_mergeValueForKey:object:string:", - "_metaElementImpl", - "_methodNameForCommand:", - "_metrics", - "_middleViewFrameChanged:", - "_mightHaveSpellingAttributes", - "_migrateAllObjectsInStore:toStore:", - "_migrateMappedStore:toNewSameTypeStoreAtURL:", - "_migrateMetadataFromStore:toStore:", - "_migrateSQLStore:toSQLStoreAtURL:", - "_minContentRectSize", - "_minContentSizeForDrawers", - "_minExpandedFrameSize", - "_minLinesWidthWithSpace", - "_minNonExpandedFrameSize", - "_minParentWindowContentSize", - "_minSizeForDrawers", - "_minXBorderRect", - "_minXLocOfOutlineColumn", - "_minXResizeRect", - "_minXTitleOffset", - "_minXTitlebarBorderThickness", - "_minXTitlebarButtonsWidth", - "_minXTitlebarDecorationMinWidth", - "_minXTitlebarDecorationMinWidth:", - "_minXTitlebarWidgetInset", - "_minXTitlebarWidgetInset:", - "_minXWindowBorderWidth", - "_minXWindowBorderWidth:", - "_minXmaxYResizeRect", - "_minXminYResizeRect", - "_minYBorderRect", - "_minYResizeRect", - "_minYTitlebarButtonsOffset", - "_minYWindowBorderHeight", - "_minYWindowBorderHeight:", - "_minYmaxXResizeRect", - "_minYminXResizeRect", - "_miniaturizedOrCanBecomeMain", - "_minimizeAll", - "_minimizeOnDoubleClickChanged", - "_minimizeSucceeded:", - "_minimizeToDock", - "_minimumSizeNeedForTabItemLabel:", - "_modElementImpl", - "_modalSession:sendEvent:", - "_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::::::", - "_mouseUp:", - "_moveAndResizeEditedCellWithOldFrame:", - "_moveDown:", - "_moveDownAndModifySelection:", - "_moveDownWithEvent:", - "_moveGapAndMergeWithBlockRange:", - "_moveGapToBlockIndex:", - "_moveInDirection:", - "_moveItemFromIndex:toIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", - "_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", - "_mutationEventImpl", - "_nameFieldContentsAsPosixName", - "_nameForCollection:", - "_nameIsEqualToNameOfNode:", - "_nameOfDictionaryForDocumentTag:", - "_nameWithLooseRequiredExtensionCheck:", - "_nameWithRequiredExtensionCheck:", - "_nameWithStrictRequiredExtensionCheck:", - "_namedNodeMapImpl", - "_namedNodeMapWithImpl:", - "_namespaceForURI:", - "_namespaces", - "_naughtDelegate", - "_navView", - "_nearestCrayonUnderViewPoint:", - "_nearestCrayonUnderViewPoint:inRow:", - "_needRedrawOnWindowChangedKeyState", - "_needToFlushGlyph", - "_needsDisplayfromColumn:", - "_needsDisplayfromRow:", - "_needsHighlightedTextHint", - "_needsLiveResizeCacheInSyncWithSiblingView", - "_needsLiveUpdates", - "_needsModalCompatibilityMode", - "_needsModeConfiguration", - "_needsOutline", - "_needsPopulate", - "_needsRecalc", - "_needsRedisplayWhenBeginningToolbarEditing", - "_needsRedrawBeforeFirstLiveResizeCache", - "_needsRedrawForMovement", - "_needsRedrawOnMouseInsideChange", - "_needsRevealoverWithFrame:trackingRect:inView:", - "_needsToRemoveFieldEditor", - "_needsToResetDragMargins", - "_needsToUseHeartBeatWindow", - "_needsViewerLayout", - "_nestListAtIndex:", - "_newAdapterForModel:", - "_newCustomizeToolbarItem", - "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:", - "_newFirstResponderAfterResigning", - "_newIconlessMenuItemForNavNode:", - "_newImageName:", - "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:", - "_newItemFromInitPListWithItemIdentifier:", - "_newItemFromItemIdentifier:requireImmediateLoad:willBeInsertedIntoToolbar:", - "_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:", - "_newSubstringWithRange:zone:", - "_newUncommittedChangesForObject:", - "_newUncommittedChangesForObject:dictionary:", - "_newValueForColumnOfSQLType:atIndex:inStatement:", - "_newWildSubStringForGlob:wildStart:wildEnd:", - "_newWithName:fromPath:forDeviceType:", - "_new_implicitlyObservedKeys", - "_nextAttributeForString:type:location:range:", - "_nextDisplayMode", - "_nextFrame:", - "_nextFrameWithWrap:", - "_nextInputManagerInScript:", - "_nextSibling", - "_nibName", - "_noVerticalAutosizing", - "_nodeFilterImpl", - "_nodeFilterWithImpl:", - "_nodeFromLibXML2Node:", - "_nodeFromObject:objectIDMap:", - "_nodeImpl", - "_nodeIteratorImpl", - "_nodeIteratorWithImpl:filter:", - "_nodeListImpl", - "_nodeListWithImpl:", - "_nodeWithImpl:", - "_nodesToDisplayForNodeInfo:", - "_nominalCharacterCoverage", - "_nominalSizeNeedForTabItemLabel:", - "_nonAutomaticObservingKeys", - "_nonNilArrayValueWithSelector:", - "_nonNilMutableArrayValueWithSelector:", - "_nonNilSetValueWithSelector:", - "_nonPredicateValidateValue:forKey:inObject:error:", - "_noop:", - "_normalListmodeDown::::", - "_notationImpl", - "_noteAutosavedContentsOfDocument:", - "_noteDefaultMenuAttributeChanged", - "_noteFontCollectionsChanged", - "_noteItemUserVisibilityPriorityChanged:", - "_noteLengthAndSelectedRange:", - "_noteNote1:", - "_noteNote2:", - "_noteNote3:", - "_noteNote4:", - "_notePendingRecentDocumentURLs", - "_noteToolbarDisplayModeChanged", - "_noteToolbarDisplayModeChangedAndPostSyncSEL", - "_noteToolbarLayoutChanged", - "_noteToolbarModeChangedAndUpdateItemViewers:", - "_noteToolbarShowsBaselinePropertyChanged", - "_noteToolbarSizeModeChanged", - "_noteToolbarSizeModeChangedAndPostSyncSEL", - "_noticeEditablePeerBinder:", - "_noticeTextColorPeerBinder:", - "_notifyCookiesSynced", - "_notifyDelegate_DidRemoveItem:", - "_notifyDelegate_DidRemoveItems:", - "_notifyDelegate_WillAddItem:", - "_notifyEdited:range:changeInLength:invalidatedRange:", - "_notifyEditor:stateChanged:", - "_notifyFamily_DidRemoveItemAtIndex:", - "_notifyFamily_DidSetAllCurrentItems:", - "_notifyFamily_InsertedNewItem:atIndex:", - "_notifyFamily_MovedFromIndex:toIndex:", - "_notifyLocalCookiesChanged:", - "_notifyObserversForKeyPath:change:", - "_notifyObserversOfAddedStores:", - "_notifyObserversOfRemovedStores:", - "_notifyOfAnyContentChange", - "_notifyView_DidRemoveItemAtIndex:", - "_notifyView_DidSetAllCurrentItems:", - "_notifyView_InsertedNewItem:atIndex:", - "_notifyView_MovedFromIndex:toIndex:", - "_numPendingOrLoadingRequests:", - "_numberByTranslatingNumericDescriptor:toType:inSuite:", - "_numberEnumerator", - "_numberOfGlyphs", - "_numberOfItems", - "_numericIndicatorCell", - "_nxeventTime", - "_oListElementImpl", - "_obeysHiddenBit", - "_objcClassName", - "_objectCacheSize", - "_objectClassName", - "_objectDidTriggerAction:bindingAdaptor:", - "_objectElementImpl", - "_objectForAttributeKey:", - "_objectForProperty:usingDataSize:withRequestedObjectClass:", - "_objectID", - "_objectIDClass", - "_objectIDFactory", - "_objectIsMatch:", - "_objectSpecifierFromDescriptor:", - "_objectSpecifierTypeDescription", - "_objectTypeDescriptionForClassAppleEventCode:isValid:", - "_objectValue:forString:", - "_objectValue:forString:errorDescription:", - "_objectWithName:", - "_objectsChangedInStore:", - "_observeKeyPathForBindingInfo:registerOrUnregister:", - "_observeKeyPathForRelatedBinder:registerOrUnregister:", - "_observePathOfEntry:", - "_observeSpecifierOfEntry:", - "_observeValueForKeyPath:ofObject:context:", - "_observesModelObjects", - "_obtainKeyFocus", - "_obtainOpenChannel", - "_offset", - "_offsetFromStartRect", - "_okForOpenMode", - "_okForSaveMode", - "_okToStartTextEndEditing", - "_oldBoundsDuringLiveResize", - "_oldFirstResponderBeforeBecoming", - "_oldFontSetNames", - "_oldFontSetWithName:", - "_oldPlaceWindow:", - "_oldValueForKey:", - "_oldValueForKeyPath:", - "_old_encodeWithCoder_NSBrowser:", - "_old_encodeWithCoder_NSComboBoxCell:", - "_old_encodeWithCoder_NSTabView:", - "_old_encodeWithCoder_NSTabViewItem:", - "_old_encodeWithCoder_NSTableColumn:", - "_old_encodeWithCoder_NSTableHeaderView:", - "_old_encodeWithCoder_NSTableView:", - "_old_initWithCoder_NSBrowser:", - "_old_initWithCoder_NSColorWell:", - "_old_initWithCoder_NSComboBoxCell:", - "_old_initWithCoder_NSTabView:", - "_old_initWithCoder_NSTabViewItem:", - "_old_initWithCoder_NSTableColumn:", - "_old_initWithCoder_NSTableHeaderView:", - "_old_initWithCoder_NSTableView:", - "_old_readColorsFromGlobalPreferences", - "_old_writeColorsToGlobalPreferences", - "_opString", - "_opacity", - "_opacityAtPoint:inBitmapImageRep:", - "_opaqueRect", - "_opaqueState", - "_open:", - "_open:fromImage:withName:", - "_openBlocksForParagraphStyle:atIndex:inString:", - "_openChannel", - "_openCollections", - "_openDocumentFileAt:display:", - "_openDrawers", - "_openExtrasPopup:", - "_openFile:", - "_openFile:withApplication:asService:andWait:andDeactivate:", - "_openLinkFromMenu:", - "_openListsForParagraphStyle:atIndex:inString:", - "_openNewWindowWithRequest:", - "_openOldCollections", - "_openOldFavorites", - "_openRecentDocument:", - "_openRegularCollections", - "_openStrikeMenu:", - "_openUnderlineMenu:", - "_openUntitled", - "_openableFileExtensions", - "_opened", - "_operationInfo", - "_operatorForType:", - "_optGroupElementImpl", - "_optimizedRectFill:gray:", - "_optionElementImpl", - "_optionsCollectionImpl", - "_optionsCollectionWithImpl:", - "_optionsForBinding:specifyOnlyIfDifferentFromDefault:", - "_orderFrontHelpWindow", - "_orderFrontModalColorPanel", - "_orderFrontModalWindow:relativeToWindow:", - "_orderFrontRelativeToWindow:", - "_orderOutAllToolTipsImmediately:", - "_orderOutAndCalcKeyWithCounter:", - "_orderOutHelpWindow", - "_orderOutHelpWindowAfterEventMask:", - "_orderOutRelativeToWindow:", - "_orderedDrawerAndWindowKeyLoopGroupingViews", - "_orderedSidebarItemViews", - "_orderedWindowsWithPanels:", - "_orientationInPageFormat:", - "_originPointInRuler", - "_originalData", - "_originalFontA", - "_originalFontB", - "_originalNextKeyView", - "_originalRequest", - "_originalRowForUpdate:", - "_originalSnapshot", - "_outlineAction:", - "_outlineDelegate", - "_outlineDoubleAction:", - "_outlineIsOn", - "_outlineView", - "_overflowHeaderCellPrototype", - "_overrideEncoding", - "_overwriteExistingFileCheck:", - "_ownedByPopUp", - "_ownerElement", - "_owningPopUp", - "_ownsDestinationObjectsForRelationshipKey:", - "_ownsWindowGrowBox", - "_packedGlyphs:range:length:", - "_pageCacheSize", - "_pageCount", - "_pageDownWithEvent:", - "_pageForIndex:", - "_pageFormat", - "_pageFormatAttributeKeys", - "_pageFormatForGetting", - "_pageFormatForSetting", - "_pageHeaderAndFooterTextAttributes", - "_pageHorizontally:", - "_pageLayout:wasPresentedWithResult:inContext:", - "_pageRuleImpl", - "_pageUpWithEvent:", - "_pageVertically:", - "_panelInitWithCoder:", - "_panelSizeExcludingToolbar", - "_paperNameForSize:", - "_paperNameInPrintSession:pageFormat:", - "_paperSizeInPageFormat:", - "_paragraphClassforParagraphStyle:range:isEmpty:headerString:alignmentString:", - "_paragraphElementImpl", - "_paramElementImpl", - "_parametersForReading", - "_parametersForWriting", - "_parentWindow", - "_parse", - "_parseArchivedList:", - "_parseCacheControl", - "_parseCharacterAttributes", - "_parseCharacterAttributes1", - "_parseCharacterAttributes2", - "_parseCharacterAttributesFromElement:namespaceURI:qualifiedName:attributes:", - "_parseContentsDictionary", - "_parseDocumentAttributes", - "_parseDocumentAttributes1", - "_parseDocumentAttributes2", - "_parseFonts", - "_parseFonts1", - "_parseFonts2", - "_parseGlobals", - "_parseLibXML2Node:", - "_parseMenuString:menuName:itemName:", - "_parseNode:", - "_parsePantoneLikeList:fileName:", - "_parseParagraphAttributes", - "_parseParagraphAttributes1", - "_parseParagraphAttributes2", - "_parseParagraphAttributesFromElement:namespaceURI:qualifiedName:attributes:", - "_parsePredefinedAttributes", - "_parsePredefinedAttributes1", - "_parsePredefinedAttributes2", - "_parseReleaseTwoList:", - "_parseSummaryInfo:", - "_parseText", - "_parseText1", - "_parseText1Fast", - "_parseText1Full", - "_parseText2", - "_parserableCollectionDescription:", - "_parserableDateDescription:", - "_parserableStringDescription:", - "_passwordData", - "_pasteWithPasteboard:allowPlainText:", - "_pasteboardWithName:", - "_pathData", - "_pathForFSRef:", - "_pathToFileNamed:inFolder:", - "_patternForBinding:", - "_pauseUIHeartBeatingInView:", - "_pendingActCount", - "_perThreadHandlingStack:", - "_performActionWithCommitEditing", - "_performActionWithCommitEditing:didCommit:contextInfo:", - "_performActivationClickWithShiftDown:", - "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:", - "_performBatchWindowOrdering:", - "_performCancel", - "_performChangesWithAdapterOps:", - "_performConnectionEstablishedRefresh", - "_performContinueWithoutCredential", - "_performDragFromMouseDown:", - "_performKeyEquivalentOnAllCells:", - "_performKeyEquivalentWithDelegate:", - "_performLoad", - "_performMenuFormRepresentationClick", - "_performMutatorOperation:object:index:", - "_performOriginLoad", - "_performRemoveFileAtPath:", - "_performResponderOperation:with:", - "_performTimeOut", - "_performToggleToolbarShown:", - "_performUseCredential", - "_periodicEvent:", - "_persistentStoreCoordinator", - "_persistentStoreForIdentifier:", - "_persistsWidthCacheToUserDefaults", - "_physicalSizeCompare:", - "_pickUpMissingStuffFromNode:forEntity:", - "_pidString", - "_pinDocRect", - "_pinViews:resizeFlagsToLeaveAlone:", - "_pixelBufferAuxiliary", - "_pixelFormatAuxiliary", - "_pixelRectInPoints:", - "_pk", - "_placeHelpWindowNear:", - "_placePopupWindow:", - "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:", - "_placeholderAttributedString", - "_placeholderString", - "_plainFontNameForFont:", - "_platformFont", - "_plugInPath", - "_plugIns", - "_plugin", - "_pluginCancelledConnectionError", - "_pluginClassWithObject:", - "_pluginController", - "_pluginProtocol", - "_pointFromColor:", - "_pointInPicker:", - "_pointRectInPixels:", - "_policyDelegateForwarder", - "_popCompoundStack", - "_popIfTopHandling:", - "_popPerformingProgrammaticFocus", - "_popState", - "_popSubframeArchiveWithName:", - "_popUpButton", - "_popUpButtonCellInstances", - "_popUpContextMenu:withEvent:forView:", - "_popUpContextMenu:withEvent:forView:withFont:", - "_popUpItemAction:", - "_popUpMenuWithEvent:forView:", - "_poppedTopHandling", - "_populate:", - "_populateEntityDescription:fromNode:", - "_populateMiniMode", - "_populateOpenRecentMenu:", - "_populatePopup:withTableView:", - "_populateReplyAppleEventWithResult:", - "_populateRowForOp:withObject:", - "_portData", - "_portInvalidated:", - "_position", - "_positionAllDrawers", - "_positionAndResizeSearchParts", - "_positionForPoint:", - "_positionLabels", - "_positionSheetAndDisplay:", - "_positionSheetConstrained:andDisplay:", - "_positionSheetRect:onRect:andDisplay:", - "_positionWindow", - "_positionalSpecifierFromDescriptor:", - "_posixPathComponentsWithPath:", - "_postAtStart:", - "_postBoundsChangeNotification", - "_postCallback:", - "_postCarbonWindowActivateEvent:makeKeyWindow:", - "_postCheckpointNotification", - "_postColumnConfigurationDidChangeNotification", - "_postColumnDidMoveNotificationFromColumn:toColumn:", - "_postColumnDidResizeNotificationWithOldWidth:", - "_postDidFailCallback", - "_postDidFinishLoadingCallback", - "_postDidFinishNotification", - "_postDidReceiveDataCallback", - "_postDidReceiveResponseCallback", - "_postDidScrollNotification", - "_postEventNotification:", - "_postEventNotification:fromCell:", - "_postFocusChangedNotification", - "_postFrameChangeNotification", - "_postFromSubthread:", - "_postInitWithCoder:signature:valid:wireSignature:target:selector:argCount:", - "_postInitialization", - "_postInvalidCursorRects", - "_postItemDidCollapseNotification:", - "_postItemDidExpandNotification:", - "_postItemWillCollapseNotification:", - "_postItemWillExpandNotification:", - "_postNotificationForEvent:notificationName:parent:", - "_postNotificationForEvent:notificationName:parent:child:", - "_postNotificationForEvent:notificationName:parent:child:fbeProperty:", - "_postPreferencesChangesNotification", - "_postQueryFinishedNotification", - "_postQueryStartedNotification", - "_postSelectionDidChangeNotification", - "_postSelectionIsChangingAndMark:", - "_postSessionNotificationIfNeeded", - "_postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:", - "_postWillCacheResponseCallback", - "_postWillScrollNotification", - "_postWillSendRequestCallback", - "_postWindowNeedsDisplay", - "_postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:", - "_postingDisabled", - "_postscriptName", - "_potentialMaxSize", - "_potentialMinSize", - "_preElementImpl", - "_preEvaluate", - "_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", - "_prepareForPushChanges:", - "_prepareForReloadChildrenForNode:", - "_prepareHelpWindow:locationHint:", - "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:", - "_preparePrintStream", - "_prepareString:expressionPath:caseSensitive:wildStart:wildEnd:", - "_prepareSubstringWith:wildStart:wildEnd:", - "_prepareSynchronizationOfEditedFieldForColumnWidthChange", - "_prepareToMessageClients", - "_prepareToMinimize", - "_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", - "_previousDisplayMode", - "_previousFrameWithWrap:", - "_previousNextTab:loop:", - "_previousNibBindingConnector", - "_previousSibling", - "_primitiveInvalidateDisplayForGlyphRange:", - "_primitiveSetDefaultNextKeyView:", - "_primitiveSetNextKeyView:", - "_primitiveSetPreviousKeyView:", - "_primitiveValueForKey:", - "_primitiveValueImpl", - "_printAndPaginateWithOperation:helpedBy:", - "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:", - "_printOperation:wasRunWithSuccess:inContext:", - "_printPagesWithOperation:helpedBy:", - "_printPanel:didEndAndReturn:contextInfo:", - "_printSession", - "_printSessionAttributeKeys", - "_printSessionForGetting", - "_printSessionForSetting", - "_printSettings", - "_printSettingsAttributeKeys", - "_printSettingsForGetting", - "_printSettingsForSetting", - "_printSettingsValue", - "_printVerboseDebuggingInformation:", - "_printer", - "_printerForPrinter:", - "_printerInPrintSession:", - "_proceedGivenDBInfo:", - "_processDBInfoNode:", - "_processDeletedObjects", - "_processDocument", - "_processElement:tag:display:", - "_processEndOfEventNotification:", - "_processGlobalIDChanges:", - "_processHeadElement:", - "_processHeaders:", - "_processInstanceNode:", - "_processKeyboardUIKey:", - "_processLibXML2ElementNode:tag:", - "_processLibXML2HeadElementNode:", - "_processLibXML2MetaNode:", - "_processLibXML2TextNode:content:", - "_processLibXML2TitleNode:", - "_processMetaElementWithName:content:", - "_processMetadataNode:", - "_processNotificationQueue", - "_processNotifications:", - "_processObjectStoreChanges:", - "_processOwnedObjects:set:boolean:", - "_processRecentChanges", - "_processReferenceQueue", - "_processRequest:", - "_processRequest:named:usingPasteboard:", - "_processText:", - "_processingInstructionImpl", - "_progress", - "_progressCompleted:", - "_progressPanel:didEndAndReturn:contextInfo:", - "_progressPanelWasCancelled:contextInfo:", - "_progressStarted:", - "_promoteGlyphStoreToFormat:", - "_propagateDelete", - "_propagateDeletesUsingTable:", - "_propagateDirtyRectsToOpaqueAncestors", - "_properties", - "_propertiesOfType:", - "_propertyAccessFromElement:", - "_propertyContainerClassDescriptionFromDictionaryType:inSuite:", - "_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:", - "_rangeOfPrefixOfString:fittingWidth:withFont:", - "_rangeOfSuffixFittingWidth:withAttributes:", - "_rangeOfTextTableRow:atIndex:", - "_rangeWithImpl:", - "_ranges", - "_rangesForUserBaseWritingDirectionChange", - "_rawAddColor:key:", - "_rawKeyEquivalent", - "_rawKeyEquivalentModifierMask", - "_rawSetSelectedIndex:", - "_reactToDisplayChanged", - "_reactToFontSetChange", - "_reactToMatchingInsertions:deletions:", - "_readAcceptCookiesPreference", - "_readBBox", - "_readColorIntoRange:fromPasteboard:", - "_readColorsFromLibrary", - "_readFilenameStringsIntoRange:fromPasteboard:", - "_readFilenamesIntoRange:fromPasteboard:", - "_readFontIntoRange:fromPasteboard:", - "_readHTMLIntoRange:fromPasteboard:", - "_readImageInfoWithImageSource:imageNumber:properties:", - "_readImageIntoRange:fromPasteboard:", - "_readMovieIntoRange:fromPasteboard:", - "_readPersistentBrowserColumns", - "_readPersistentExpandItems", - "_readPersistentTableColumns", - "_readRTFDIntoRange:fromPasteboard:", - "_readRTFIntoRange:fromPasteboard:", - "_readRecentDocumentDefaultsIfNecessary", - "_readRulerIntoRange:fromPasteboard:", - "_readSelectionFromPasteboard:types:", - "_readStringIntoRange:fromPasteboard:", - "_readURLIntoRange:fromPasteboard:", - "_readURLStringIntoRange:fromPasteboard:", - "_readURLStringsWithNamesIntoRange:fromPasteboard:", - "_readVersion0:", - "_readWidthsFromDefaults", - "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:", - "_realControlTint", - "_realControlTintForView:", - "_realCopyPSCodeInside:helpedBy:", - "_realCreateContext", - "_realDestroyContext", - "_realDoModalLoop:peek:", - "_realDoModalLoopForCarbonWindow:peek:", - "_realHeartBeatThreadContext", - "_realMaximumRecents", - "_realPrintPSCode:helpedBy:", - "_realStoreTypeForStoreWithType:URL:error:", - "_realWindowNumber", - "_reallocColors:", - "_reallocData:", - "_reallyChooseGuess:", - "_reallyControlView", - "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:", - "_reallyInitWithIncrementalImageReader:", - "_reallyNeedsDisplayForBounds", - "_reallyProcessNotifications:", - "_realmForURL:", - "_rebuildOrUpdateServicesMenu:", - "_recacheAll", - "_recacheButtonColors", - "_recacheString", - "_recalcRectsForCell:", - "_recalculateUsageForTextContainerAtIndex:", - "_receiveHandlerRef", - "_receivedData:", - "_receivedError:fromDataSource:", - "_receivedMainResourceError:", - "_receivedMainResourceError:complete:", - "_recentMenuItemTitlesFromLocationComponentChains:", - "_recentPlacesNode", - "_recomputeBucketIndex:bucketFirstRowIndex:", - "_recomputeLabelHeight", - "_reconcileDisplayNameAndTrackingInfoToFileName", - "_reconcilePageFormatAttributes", - "_reconcilePrintSessionAttributes", - "_reconcilePrintSettingsAttributes", - "_reconcileToSuiteRegistry:", - "_reconfigureAnimationState:", - "_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", - "_recursiveCheckLoadComplete", - "_recursiveDisableTrackingRectsForHiddenViews", - "_recursiveDisplayAllDirtyWithLockFocus:visRect:", - "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:", - "_recursiveEnableTrackingRectsForNonHiddenViews", - "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:", - "_recursiveFindDefaultButtonCell", - "_recursiveGainedHiddenAncestor", - "_recursiveGatherAllKeyViewCandidatesInArray:", - "_recursiveGoToItem:fromItem:withLoadType:", - "_recursiveLostHiddenAncestor", - "_recursiveOrderFrontSurfacesForNonHiddenViews", - "_recursiveOrderOutSurfacesForHiddenViews", - "_recursiveRecomputeToolTips", - "_recursiveSetDefaultKeyViewLoop", - "_recursiveStopLoading", - "_recursiveWindowDidEnableToolTipCreationAndDisplay", - "_recursivelyAddItemsInMenu:toTable:", - "_recursivelyRemoveItemsInMenu:fromTable:", - "_redisplayAndResizeFromRow:", - "_redisplayTableContentWithRowIndexes:columnIndexes:", - "_refaultLocalObjectWithGlobalID:", - "_refaultObject:globalID:editingContext:boolean:", - "_refaultObjectWithGlobalID:globalID:", - "_referenceArray", - "_referenceBinderForTableColumn:", - "_referenceBinding", - "_referenceBindingValue", - "_referenceBindingValueAtIndex:", - "_referenceBindingValueAtIndexPath:", - "_referenceData", - "_referenceData64", - "_referenceDataPtr", - "_reflectDocumentViewBoundsChange", - "_reflectFont", - "_reflectSelection", - "_reflectSelection:", - "_reformListAtIndex:", - "_reformTableRow", - "_refreshDetailContentInBackground:", - "_refreshesAllModelKeys", - "_refreshesAllModelObjects", - "_regenerateFormatter", - "_region:", - "_regionForOpaqueDescendants:forMove:", - "_registerAllDrawersForDraggedTypesIfNeeded", - "_registerBuiltInFormatters", - "_registerClearStateWithUndoManager", - "_registerDefaultPlaceholders", - "_registerDefaultStoreClassesAndTypes", - "_registerDragTypes:", - "_registerDragTypesIfNeeded", - "_registerDragTypesLater", - "_registerDraggedTypes", - "_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:", - "_registerStoreClass:forStoreType:", - "_registerSuiteDescriptions:", - "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:", - "_registerToolbarInstance:", - "_registerUndoForModifiedObject:", - "_registerUndoObject:", - "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:", - "_registerWebKitErrors", - "_registerWithDock", - "_registerWithDockIfNeeded", - "_registeredForChildNotifications", - "_registeredObjects", - "_registeredStoreTypes", - "_registrationDictionaryForUnitNamed:", - "_relatedNodes", - "_relationshipNamed:", - "_relationshipNamesByType:", - "_releaseAllPendingPageCaches", - "_releaseAllPreWillChangeExpandedNodes", - "_releaseBindingAdaptor", - "_releaseDelegate", - "_releaseEffect", - "_releaseEvents", - "_releaseFutureIconForURL:", - "_releaseIconForIconURLString:", - "_releaseInput", - "_releaseKVCMaps", - "_releaseLiveResizeCachedImage", - "_releaseNodePreviewHelper", - "_releaseOneLevelPreWillChangeExpandedNodes", - "_releaseOriginalIconsOnDisk", - "_releasePageCache:", - "_releaseProtocolClientReference", - "_releaseRowHeightStorageIfNecessary", - "_releaseUndoManager", - "_releaseWireCount:", - "_reloadAllowingStaleDataWithOverrideEncoding:", - "_reloadChildrenForNode:", - "_reloadForPluginChanges", - "_reloadSidebarNodes", - "_remainingString", - "_remove:", - "_remove:andAddMultipleToTypingAttributes:", - "_removeAllCellMouseTracking", - "_removeAllDrawersImmediately:", - "_removeAllRevealovers", - "_removeAllTrackingRects", - "_removeAndDecrementBy:startingAtIndex:", - "_removeBinding:", - "_removeBinding:byReplacingWithRemainingBindingsInArray:", - "_removeBottom", - "_removeButtons", - "_removeChild:", - "_removeClipIndicatorFromSuperview", - "_removeCursorRect:cursor:forView:", - "_removeEntities:fromConfiguration:", - "_removeEntity:", - "_removeEntityNamed:", - "_removeFileAtPath:handler:shouldDeleteFork:", - "_removeFontDescriptor:fromCollection:save:", - "_removeFontDescriptorFromDrag:point:", - "_removeFrameUsingName:domain:", - "_removeFromGroups:", - "_removeFromKeyViewLoop", - "_removeHeartBeartClientView:", - "_removeHelpKeyForObject:", - "_removeHiddenWindow:", - "_removeItem:fromTable:", - "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", - "_removeMouseMovedListener:", - "_removeNextPointersToMe", - "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:", - "_removeObject:objectIDMap:", - "_removeObjectAtArrangedObjectIndex:objectHandler:", - "_removeObjectForAttributeKey:", - "_removeObjects:objectHandler:", - "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:", - "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:", - "_removeObserver:forProperty:", - "_removeObserver:notificationNamesAndSelectorNames:object:", - "_removeOrRename:", - "_removePasswordForRealm:URL:", - "_removePlugInStreamClient:", - "_removePopUpWithTag:", - "_removePreviousPointersToMe", - "_removeProperty:", - "_removePropertyNamed:", - "_removeProxyPasswordForURL:", - "_removeRangeInArrayAtIndex:", - "_removeReferenceForIdentifier:", - "_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:", - "_replaceAllItemsAndSetNewWithItemIdentifiers:", - "_replaceCString:withCString:", - "_replaceFontDescriptor:withDescriptor:inCollection:", - "_replaceObject:withObject:", - "_replaceRangeInArrayAtIndex:withRange:", - "_replaceSelectionWithArchive:selectReplacement:", - "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:", - "_replicatePath:atPath:operation:fileMap:handler:", - "_representationClassForMIMEType:", - "_representationExistsForURLScheme:", - "_representedObjectForString:", - "_representedObjectForString:allowNULL:", - "_requestAnyEditableState", - "_requestAnyEnabledState", - "_requestAnyHiddenState", - "_requestEditableState:", - "_requestEnabledState:", - "_requestHiddenState:", - "_requestNotification", - "_requestTextColor:", - "_requestTypeForOperationKey:", - "_requiredCarbonCatalogInfoMask", - "_requiredMinSize", - "_requiresCacheWithAlpha:", - "_reset", - "_resetAllChanges", - "_resetAllChanges:", - "_resetAllDrawersDisableCounts", - "_resetAllDrawersPostingCounts", - "_resetAlternateICUValues", - "_resetCachedValidationState", - "_resetCursorRects", - "_resetDictionaryRepresentation", - "_resetDisableCounts", - "_resetDiscardMask", - "_resetDragMargins", - "_resetDrawerFirstResponder", - "_resetFirstResponder", - "_resetIncrementalSearchBuffer", - "_resetMeasuredCell", - "_resetModificationDate", - "_resetMoveAndRenameSensing", - "_resetOpacity:andForceSetColor:", - "_resetPostingCounts", - "_resetProgress", - "_resetScreens", - "_resetTitleBarButtons", - "_resetTitleFont", - "_resetTitleWidths", - "_resetToolTipIfNecessary", - "_reshapeContentAndToolbarView:resizeWindow:animate:", - "_resignKeyFocus", - "_resize:", - "_resizeAccordingToTextView:", - "_resizeAllCaches", - "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:", - "_resizeColumn:withEvent:", - "_resizeColumnByDelta:resizeInfo:", - "_resizeContentsOfMainBox", - "_resizeContentsOfMiniMode", - "_resizeContentsOfPreviewBox", - "_resizeCursorForTableColumn:", - "_resizeDeltaFromPoint:toEvent:", - "_resizeFromEdge", - "_resizeHeight:", - "_resizeImage", - "_resizeKeepingPanelOnScreen:expand:", - "_resizeOutlineColumn", - "_resizeSelectedTabViewItem", - "_resizeTable:level:range:column:widthDelta:", - "_resizeTable:level:range:row:heightDelta:", - "_resizeTextFieldToFit:", - "_resizeTextViewForTextContainer:", - "_resizeToolbarImageRepViewToFit:", - "_resizeToolbarViewToFit:", - "_resizeViewToFit:", - "_resizeViewsForOffset:coordinate:", - "_resizeWeight", - "_resizeWeightSharedWithDuplicateItems", - "_resizeWeighting", - "_resizeWindow:toFrame:display:", - "_resizeWindowWithMaxHeight:", - "_resizeWithDelta:fromFrame:beginOperation:endOperation:", - "_resizedImage:", - "_resolveHelpKeyForObject:", - "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:", - "_resolveName", - "_resolveNamespaceForPrefix:", - "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:", - "_resolveTypeAlias:", - "_resourceLoadDelegateForwarder", - "_resourceLoadDelegateImplementations", - "_resourceLoadLoop:", - "_resourcesFromPropertyLists:", - "_responderInitWithCoder:", - "_response", - "_responses", - "_responsibleDelegateForSelector:", - "_restartEditingWithTextView:", - "_restartMovementTracking", - "_restoreCursor", - "_restoreDefaultSettingsCommon", - "_restoreDefaultSettingsForOpenMode", - "_restoreDefaultSettingsForSaveMode", - "_restoreInitialMenuPosition", - "_restoreMiniaturizedWindow", - "_restoreModalWindowLevel", - "_restoreMode", - "_restoreMovieEditState:", - "_restoreScrollPosition", - "_restoreSplitPositionFromDefaults", - "_restoreSubviews", - "_restoreTornOffMenus", - "_resultTypeDescription", - "_resumeExecutionWithResult:", - "_resumeIfNotTopHandling:withScriptCommandResult:", - "_resumeInformation", - "_resumeLoading", - "_resumeUIHeartBeatingInView:", - "_retainFutureIconForURL:", - "_retainIconForIconURLString:", - "_retainIconInDatabase:", - "_retainOriginalIconsOnDisk", - "_retainedObjectWithID:optionalHandler:", - "_retainedPrimaryKeyNumberForObject:", - "_retainedPrimaryKeyNumberForObjectID:", - "_retrieveKeyboardUIModeFromPreferences:", - "_returnFirstResponderToWindowFromKeyboardHotKeyEvent", - "_returnValue", - "_revealoverInfoForCell:cellRect:", - "_revertAlertSheet:wasPresentedWithResult:inContext:", - "_revertDisplayValueBackToOriginalValue:", - "_revertToOldRowSelection:fromRow:toRow:", - "_rightGroupRect", - "_rightMouseUpOrDown:", - "_rightToLeftAtIndex:", - "_rightmostAutoresizingColumn", - "_rollbackTransaction:", - "_rootEntity", - "_rootNode", - "_rotateCoordsForDrawLabelInRect:", - "_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:", - "_rulerAccViewCenterTabWell", - "_rulerAccViewDecimalTabWell", - "_rulerAccViewLeftTabWell", - "_rulerAccViewRightTabWell", - "_rulerAccViewSetUpLists", - "_rulerAccViewUpdateStyles:", - "_rulerAccessoryViewAreaRect", - "_rulerOrigin", - "_runAlertPanelForDocumentMoved:orDocumentRenamed:orDocumentInTrash:orDocumentUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:", - "_runArrayHoldingAttributes", - "_runBlocking", - "_runCustomizationPanel", - "_runInNewThread", - "_runInitBook:", - "_runModalWithColor:", - "_runModalWithPrintInfo:", - "_runningDocModal", - "_sanityCheckPListDatabase:", - "_saveConfigurationUsingName:domain:", - "_saveCookies", - "_saveCookiesIfScheduled", - "_saveCredential:forProtectionSpace:isDefault:", - "_saveCurrentPanelState:", - "_saveDocumentAndScrollState", - "_saveDocuments:", - "_saveFrameUsingName:domain:", - "_saveHistoryGuts:URL:error:", - "_saveInitialMenuPosition", - "_saveMode", - "_saveObjects:toStore:usingContext:", - "_savePanelAccessoryViewForWritableTypes:defaultType:", - "_savePanelWasPresented:withResult:inContext:", - "_saveRequestForStore:originalRequest:", - "_saveScrollPositionToItem:", - "_saveSplitPositionToDefaults", - "_saveTornOffMenus", - "_saveVisibleFrame", - "_saveWidthsToDefaults", - "_savedMode", - "_savedVisibleFrame", - "_scaleFactor", - "_scaleFactorForPrintOperation:", - "_scaleFactorForStyleMask:", - "_scaleIcon:toSize:", - "_scaledBackground", - "_scaledIntegralRect:", - "_scalesBackgroundHorizontally", - "_scalesBackgroundVertically", - "_scanDecimal:into:", - "_scanForPlugIns:", - "_scanImages", - "_scheduleAutoExpandTimerForItem:", - "_scheduleCallbacks", - "_scheduleChangeNotification", - "_scheduleDelayedAutocomplete", - "_scheduleDelayedShowOpenHandCursorIfNecessary", - "_scheduleInDefaultRunLoopForMode:", - "_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", - "_scrollColumnToVisible:private:", - "_scrollColumnToVisible:requireCompletelyVisible:", - "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:", - "_scrollColumnsRightBy:", - "_scrollDown:", - "_scrollFieldEditorToVisible:", - "_scrollHorizontallyBy:", - "_scrollInProgress", - "_scrollLastColumnMaxXEdgeToVisible", - "_scrollLineHorizontally:", - "_scrollLineVertically:", - "_scrollPageInDirection:", - "_scrollPoint:fromView:", - "_scrollRangeToVisible:forceCenter:", - "_scrollRectToVisible:fromView:", - "_scrollRowToCenter:", - "_scrollSelectionToVisible", - "_scrollTo:", - "_scrollTo:animate:", - "_scrollToFinalPosition", - "_scrollToMatchContentView", - "_scrollToPosition:", - "_scrollUp:", - "_scrollVerticallyBy:", - "_scrollView", - "_scrollViewForColumnsDidTrackHorizontalScroller:", - "_scrollViewForColumnsDocumentViewFrameDidChange:", - "_scrollViewForColumnsDocumentViewVisibilityChange:", - "_scrollViewForColumnsWillTrackHorizontalScroller:", - "_scrollWheelMultiplier", - "_scrollingDirectionAndDeltas:", - "_scrollingMenusAreEnabled", - "_searchChanged:", - "_searchFavoriteStyleCollection", - "_searchFieldAction:", - "_searchFieldCancel:", - "_searchFieldClearRecents:", - "_searchFieldDoRecent:", - "_searchFieldSearch:", - "_searchForImageNamed:", - "_searchForSoundNamed:", - "_searchForSystemImageNamed:", - "_searchMenuForProxy", - "_searchMenuTemplate", - "_searchMenuTracking", - "_searchRegularCollection", - "_secProtocolForProtectionSpace:", - "_secondsFromGMTForAbsoluteTime:", - "_seemsToBeVertical", - "_segmentIndexForElementIndex:", - "_selectAllContent:inDetailcontroller:", - "_selectAllForMatrix:sender:", - "_selectAllNoRecurse:", - "_selectAnyValidResponderOverride", - "_selectCell:inColumn:", - "_selectCellIfRequired", - "_selectCrayon:updateSelection:", - "_selectElementImpl", - "_selectFirstEnabledCell", - "_selectFirstKeyView", - "_selectHighlightedSegment", - "_selectInTabView:itemAtIndex:", - "_selectInTabView:itemWithIdentifier:", - "_selectInTabView:itemWithLabel:", - "_selectKeyCellAtRow:column:", - "_selectMarkedText", - "_selectModuleOwner:", - "_selectNameFieldContentsExcludingExtension", - "_selectNextCellKeyStartingAtRow:column:", - "_selectNextItem", - "_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::", - "_selectRowIndexes:inColumn:", - "_selectRowRange::", - "_selectTabWithDraggingInfo:", - "_selectTextOfCell:", - "_selectWindow:", - "_selectedArchive", - "_selectedCellsInColumn:", - "_selectedCollectionDescriptors", - "_selectedCollectionName", - "_selectedCollectionStyle", - "_selectedCrayon", - "_selectedFaceName", - "_selectedFamilyArray", - "_selectedFamilyName", - "_selectedFontName", - "_selectedRange", - "_selectedRanges", - "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:", - "_selectedSize", - "_selectionChanged", - "_selectionIndexesCount", - "_selectionIsInsideMarkedText", - "_selectionPasteboardTypes", - "_selectionStartFontAttributesAsRTF", - "_selectorName", - "_selectorToGetValueWithNameForKey:", - "_selectorToGetValueWithUniqueIDForKey:", - "_selfBoundsChanged", - "_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", - "_sendDidFailToDispatchNotification", - "_sendDidFinishLoadingCallback", - "_sendDidReceiveAuthenticationCallback", - "_sendDidReceiveDataCallback", - "_sendDidReceiveResponseCallback", - "_sendDirectoryDidChange", - "_sendDoubleActionToCellAt:", - "_sendFileSystemChangedNotificationForSavePanelInfo:", - "_sendFinderAppleEvent:class:file:", - "_sendFinishLaunchingNotification", - "_sendNotification:entries:", - "_sendNotificationForURL:", - "_sendOrEnqueueNotification:selector:", - "_sendPartialString", - "_sendPortMessageWithComponent:msgID:timeout:", - "_sendQueuedAction", - "_sendSelectionDidChange", - "_sendToReceiversWithIndex:andFillInResults:", - "_sendToolTipMouseEntered", - "_sendToolTipMouseExited", - "_sendWillCacheResponseCallback", - "_sendWillSendRequestCallback", - "_senderIsInvalid:", - "_sendingSocketForPort:", - "_sendingTableViewRowAction", - "_separatorFinishInit", - "_serverDied:", - "_servicesMenuHasBeenBuilt", - "_setActivationState:", - "_setActsAsPalette:forToolbar:", - "_setAdditionalThingsFromEvent:", - "_setAllItemsTransparentBackground:", - "_setAllPossibleLabelsToFit:", - "_setAllowsMultipleRows:", - "_setAllowsNonVisibleCellsToBecomeFirstResponder:", - "_setAllowsTearOffs:", - "_setAltContents:", - "_setAlwaysUseATSU:", - "_setAnimateColumnScrollingForAnyEvent:", - "_setAnimates:", - "_setAppleEventHandling:", - "_setApplicationIconImage:setDockImage:", - "_setArgFrame:", - "_setAsideSubviews", - "_setAttributeValueClassName:", - "_setAttributes:isMultiple:", - "_setAttributes:newValues:range:", - "_setAutoAppendsMDAttributesToSavedFile:", - "_setAutoGeneratedInitialFirstResponder:", - "_setAutoPositionMask:", - "_setAutoscrollDate:", - "_setAutovalidatesItems:", - "_setAvoidsActivation:", - "_setBackgroundColor:", - "_setBaselineRenderingMode:", - "_setBatchingParams", - "_setBindingAdaptor:", - "_setBindingCreationDelegate:", - "_setBlockCapacity:", - "_setBool:ifNoAttributeForKey:", - "_setBoolValue:forKey:", - "_setBorderType:", - "_setBox:enabled:", - "_setBrowserOptimizationsEnabled:", - "_setBulletCharacter:", - "_setBundle:forClassPresentInAppKit:", - "_setBundleForHelpSearch:", - "_setButtonImageSource:", - "_setButtonToolTip:", - "_setButtonType:adjustingImage:", - "_setCGImageRef:", - "_setCacheWindowNum:forWindow:", - "_setCalculatedExpiration:", - "_setCallbackHandler:", - "_setCanUseReorderResizeImageCache:", - "_setCaseConversionFlags", - "_setCellFrame:", - "_setChangedFlags:", - "_setChangedObjectIDs:", - "_setClipIndicatorItemsFromItemViewers:", - "_setColorList:", - "_setColorPanelColor:force:", - "_setColorToChange:", - "_setColumnName:", - "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:", - "_setConfigurationUsingName:domain:", - "_setContainerObservesTextViewFrameChanges:", - "_setContentInBackground:", - "_setContentKindAndEncoding", - "_setContentRect:", - "_setContentToContentFromIndexSet:", - "_setContents:", - "_setContentsDirty:", - "_setContentsDirtyForNodeWithIdentifier:", - "_setContextMenuEvent:", - "_setContextMenuTarget:", - "_setContinuousSpellCheckingEnabledForNewTextAreas:", - "_setControl:", - "_setControlTextDelegateFromOld:toNew:", - "_setControlView:", - "_setConversionFromData:type:inPasteboard:generation:item:", - "_setConvertedData:pboard:generation:inItem:", - "_setCookies:forURL:policyBaseURL:", - "_setCookiesWithoutSaving:whilePrivateBrowsing:", - "_setCorrelationTableName:", - "_setCtrlAltForHelpDesired:", - "_setCurrImageName:", - "_setCurrentAttachmentRect:index:", - "_setCurrentBrowsingNodePath:makeHistory:notify:", - "_setCurrentClient:", - "_setCurrentCollectionRep:", - "_setCurrentDirectoryNode:", - "_setCurrentDirectoryNode:makeHistory:notify:", - "_setCurrentDirectoryNode:pathToNode:", - "_setCurrentEvent:", - "_setCurrentInputFilepath:", - "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", - "_setCurrentListLevel:", - "_setCurrentListNumber:", - "_setCurrentlyEditing:", - "_setDTDString:", - "_setData:", - "_setData:encoding:", - "_setDataForkReferenceNumber:", - "_setDataSource:", - "_setDefaultButtonCell:", - "_setDefaultButtonIndicatorNeedsDisplay", - "_setDefaultButtonPaused:", - "_setDefaultKeyViewLoop", - "_setDefaultKeyViewLoopAndInitialFirstResponder", - "_setDefaultRedColor:", - "_setDefaultUserInfoFromURL:", - "_setDefaultWindowKeyViewLoop", - "_setDefaults:", - "_setDelegate:", - "_setDelegate:forPanel:", - "_setDescriptorNoCopy:", - "_setDeselectsWhenMouseLeavesDuringDrag:", - "_setDirectoryPath:", - "_setDisableLiveResizeImageCaching:", - "_setDisplayContents:usingSimpleCommandDefaults:", - "_setDisplayName:", - "_setDisplayValue:object:triggerRedisplay:", - "_setDistanceForVerticalArrowKeyMovement:", - "_setDocViewFromRead:", - "_setDocumentDictionaryName:", - "_setDocumentEdited:", - "_setDocumentView:", - "_setDocumentWindow:", - "_setDontWarnMessage:", - "_setDragAndDropCharRange:", - "_setDragAndDropCharRanges:", - "_setDragGlyphRange:", - "_setDragRef:", - "_setDraggingDocumentView:", - "_setDraggingMarker:", - "_setDrawBackground:", - "_setDrawDelegate:", - "_setDrawerEdge:", - "_setDrawingBackground:", - "_setDrawingInRevealover:", - "_setDrawingToHeartBeatWindow:", - "_setDrawsBaseline:", - "_setDrawsOwnDescendants:", - "_setDynamicToolTipsEnabled:", - "_setEditingTextView:", - "_setEnableDelegateNotifications:", - "_setEnableFlippedImageFix:", - "_setEnabled:", - "_setEnabledFileTypes:", - "_setEncounteredCloseError:", - "_setEndSubelementFromDescriptor:", - "_setEndsTopLevelGroupingsAfterRunLoopIterations:", - "_setEntity:", - "_setEntityTag:", - "_setError:", - "_setEventMask:", - "_setEventRef:", - "_setExcludedFromVisibleWindowList:", - "_setExpectedContentLength:", - "_setExplicitlyCannotAdd:insert:remove:", - "_setExplicitlyCannotAdd:remove:", - "_setFault:", - "_setFaultHandler:", - "_setFetchIndex:", - "_setFileSpecifier:", - "_setFileURL:", - "_setFinalSlideLocation:", - "_setFirstColumnTitle:", - "_setFloat:ifNoAttributeForKey:", - "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:", - "_setFocusRingNeedsDisplay", - "_setFocusRingNeedsDisplayIfNecessary", - "_setFont:", - "_setFont:forCell:", - "_setFontPanel:", - "_setForceActiveControls:", - "_setForceFixAttributes:", - "_setForceItemsToBeMinSize:", - "_setForceNotKeyWindowForInputContext:", - "_setForceOriginalFontBaseline:", - "_setFormInfoFromRequest:", - "_setFrame:", - "_setFrameAfterMove:", - "_setFrameAutosaveName:changeFrame:", - "_setFrameCommon:display:stashSize:", - "_setFrameFromString:force:", - "_setFrameNeedsDisplay:", - "_setFrameSavedUsingTitle:", - "_setFrameSize:", - "_setFrameSize:forceScroll:", - "_setFrameUsingName:domain:force:", - "_setGenericValue:forKey:withIndex:flags:", - "_setGroupIdentifier:", - "_setHasBorder:", - "_setHasCustomSettings:", - "_setHasHorizontalScroller:", - "_setHasObservers:", - "_setHasRetainedStoreResources:", - "_setHasSeenRightToLeft:", - "_setHaveNoIconForIconURL:", - "_setHelpCursor:", - "_setHelpKey:forObject:", - "_setHidden:", - "_setHiddenExtension:", - "_setHideWithoutResizingWindowHint:", - "_setHidesOnDeactivateInCache:forWindow:", - "_setHighlighted:displayNow:", - "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:", - "_setHorizontalScrollerHidden:", - "_setIcon:forIconURL:", - "_setIconRef:", - "_setIconURL:", - "_setIconURL:forURL:", - "_setIconURL:withType:", - "_setIgnoreForKeyViewLoop:", - "_setIgnoringScrolling:", - "_setImage:", - "_setImage:fromWindow:", - "_setImageAndNotifyTarget:", - "_setImageForState", - "_setImageNumber:", - "_setImpactsWindowMoving:", - "_setInScaledWindow:", - "_setIndex:", - "_setIndicatorImage:", - "_setInitialColumnContentSizeOfColumn:", - "_setInitialFirstResponder:autoGenerated:", - "_setInitialNameFieldContentsFromPosixName:", - "_setInitialized:", - "_setInitiatedDrag:", - "_setInputs:", - "_setInsertionPointDisabled:", - "_setInstance:forIdentifier:", - "_setInt:ifNoAttributeForKey:", - "_setIntegerValue:forKey:", - "_setInteriorNextKeyView:", - "_setInternalLoadDelegate:", - "_setInverseManyToMany:", - "_setInverseRelationship:", - "_setIsActive:", - "_setIsClientRedirect:", - "_setIsEditable:", - "_setIsExpanded:", - "_setIsGrabber:", - "_setIsSmallCapsRenderer:", - "_setIsWhite:", - "_setItemViewer:", - "_setJavaClassesLoaded", - "_setJobDisposition:savePath:inPrintSession:printSettings:", - "_setJustOpenedForTargetedLink:", - "_setKeepCacheWindow:", - "_setKeyCellAtRow:column:", - "_setKeyCellFromBottom", - "_setKeyCellFromTop", - "_setKeyCellNeedsDisplay", - "_setKeySegment:", - "_setKeyViewGroupBoundaryNeedsRecalc:", - "_setKeyViewLoopNeedsRecalc:", - "_setKeyViewRedirectionDisabled:", - "_setKeyViewSelectionDirection:", - "_setKeyWindow:", - "_setKeyboardFocusRingNeedsDisplay", - "_setKeyboardFocusRingNeedsDisplayDuringLiveResize", - "_setKeyboardFocusRingNeedsDisplayForTabViewItem:", - "_setKeyboardLoopNeedsUpdating:", - "_setKind:", - "_setKnobThickness:usingInsetRect:", - "_setLabel:", - "_setLang:", - "_setLastCheckedRequest:", - "_setLastDragDestinationOperation:", - "_setLastGuess:", - "_setLastSnapshot:", - "_setLastVisitedTimeInterval:", - "_setLazyDestinationEntityName:", - "_setLength:ofStatusItemWindow:", - "_setLevel", - "_setLevelForAllDrawers", - "_setLineBorderColor:", - "_setLineBreakMode:", - "_setLineColor:", - "_setLiveResize:", - "_setLiveResizeImageCacheingEnabled:", - "_setLoadType:", - "_setLoadedCookiesWithoutSaving:", - "_setLoading:", - "_setLocalName:", - "_setLocalizationPolicy:", - "_setLocationTemporary:", - "_setMIMEType:", - "_setMainDocumentError:", - "_setMainWindow:", - "_setMaintainingInverse:", - "_setManagedObjectContext:", - "_setManagedObjectModel:", - "_setMap:", - "_setMarginHeight:", - "_setMarginWidth:", - "_setMarkedText:selectedRange:forInputManager:", - "_setMarkedWidth:", - "_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:", - "_setMultipleValue:forKey:atIndex:", - "_setMultipleValue:forKey:atIndexPath:", - "_setMultipleValue:forKeyPath:atIndex:", - "_setMultipleValue:forKeyPath:atIndexPath:", - "_setName:", - "_setNameFieldContentsFromPosixName:", - "_setNeedToFlushGlyph:", - "_setNeedsDisplay:", - "_setNeedsDisplayBeginingAtColumn:", - "_setNeedsDisplayForColumn:draggedDelta:", - "_setNeedsDisplayForDropCandidateItem:childIndex:mask:", - "_setNeedsDisplayForDropCandidateRow:operation:mask:", - "_setNeedsDisplayForFirstResponderChange", - "_setNeedsDisplayForItemIdentifierSelection:", - "_setNeedsDisplayForItemViewerSelection:", - "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:", - "_setNeedsDisplayForSelectedCells", - "_setNeedsDisplayForSortingChangeInColumn:", - "_setNeedsDisplayForTabViewItem:", - "_setNeedsDisplayIfTopLeftChanged", - "_setNeedsDisplayInColumn:", - "_setNeedsDisplayInColumn:includeHeader:", - "_setNeedsDisplayInColumn:row:", - "_setNeedsDisplayInColumnRange:includeHeader:", - "_setNeedsDisplayInPrimarySortColumns", - "_setNeedsDisplayInPrimarySortColumnsIfNecessary", - "_setNeedsDisplayInRectForLiveResize:", - "_setNeedsDisplayInRow:", - "_setNeedsDisplayInRow:column:", - "_setNeedsHighlightedTextHint:", - "_setNeedsModeConfiguration:", - "_setNeedsModeConfiguration:itemViewers:", - "_setNeedsRecalc", - "_setNeedsRedrawBeforeFirstLiveResizeCache:", - "_setNeedsStateUpdate:", - "_setNeedsTiling", - "_setNeedsToRemoveFieldEditor:", - "_setNeedsToResetDragMargins:", - "_setNeedsToUseHeartBeatWindow:", - "_setNeedsViewerLayout:", - "_setNeedsViewerLayout:itemViewers:", - "_setNeedsZoom:", - "_setNewPreferedColumnWidth:", - "_setNextKeyBindingManager:", - "_setNextKeyViewFor:toNextKeyView:", - "_setNextSizeAndDisplayMode", - "_setNextToolbarSizeAndDisplayMode:", - "_setNoVerticalAutosizing:", - "_setNonactivatingPanel:", - "_setNumVisibleColumns:", - "_setNumVisibleSwatchRows:", - "_setNumberOfRowsCacheIsValid:", - "_setObject:", - "_setObject:forAttributeKey:", - "_setObject:forBothSidesOfRelationshipWithKey:", - "_setObject:forProperty:usingDataSize:", - "_setObject:ifNoAttributeForKey:", - "_setObject:inReceiver:", - "_setObjectHandler:", - "_setObjectID:", - "_setObjects:", - "_setOneShotIsDelayed:", - "_setOpenRecentMenu:", - "_setOptions:forBinding:", - "_setOptions:withBindingInfo:", - "_setOrderDependency:", - "_setOrientation:inPageFormat:", - "_setOriginalFileInfoFromFileAttributes:", - "_setOriginalSnapshot:", - "_setOriginalString:range:", - "_setOverflowHeaderCellPrototype:", - "_setOverrideEncoding:", - "_setOwnedByPopUp:", - "_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:", - "_setPreviousNibBindingConnector:", - "_setPreviousSizeAndDisplayMode", - "_setPreviousToolbarSizeAndDisplayMode:", - "_setPrimaryLoadComplete:", - "_setPrimitiveValue:forKey:", - "_setPrintEventRetrofitInfo:", - "_setPrintSettings:", - "_setPrinter:inPrintSession:", - "_setPrinting:minimumPageWidth:maximumPageWidth:adjustViewSize:", - "_setProperty:forKey:", - "_setProvisionalDataSource:", - "_setRTFDFileWrapper:", - "_setReadOnly:", - "_setRealDelegate:", - "_setRealTitle:", - "_setRealm:forURL:", - "_setReceiveHandlerRef:", - "_setRecents:", - "_setRegisteredForChildNotifications:", - "_setRegistryAttributes:", - "_setRelativeOrdering:", - "_setReorderResizeImageCache:", - "_setRepresentation:", - "_setRepresentationListCache:", - "_setRepresentedFilename:", - "_setRequest:", - "_setResizeControlNeedsDisplay", - "_setResizeWeighting:", - "_setResourceForkReferenceNumber:", - "_setResponse:", - "_setRevealoversDirty:", - "_setRootNode:makeHistory:notify:", - "_setRotatedFromBase:", - "_setRotatedOrScaledFromBase:", - "_setRowHeaderTableColumn:", - "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:", - "_setSQLType:", - "_setScaleFactor:", - "_setScriptErrorExpectedType:", - "_setScriptErrorFromKVCException:", - "_setScriptErrorOffendingObjectDescriptor:", - "_setScroller:", - "_setSelectedCell:", - "_setSelectedCell:atRow:column:", - "_setSelectedNodes:", - "_setSelectedScopeLocationNodes:", - "_setSelectionRange::", - "_setSelectorName:", - "_setServerModificationDateString:", - "_setShadowParameters", - "_setShadowStyle:", - "_setSharedIdentifier:", - "_setSheet:", - "_setShouldPostEventNotifications:", - "_setShowAlpha:andForce:", - "_setShowOpaqueGrowBox:", - "_setShowOpaqueGrowBoxForOwner:", - "_setShowingModalFrame:", - "_setShowsAllDrawing:", - "_setSidebarVolumesNode:favoritesNode:", - "_setSidebarWidth:maintainSnap:constrain:", - "_setSingleChild:", - "_setSingleValue:forKey:", - "_setSingleValue:forKeyPath:", - "_setSlotIfDefault:", - "_setSortable:showSortIndicator:ascending:priority:highlightForSort:", - "_setSpotlightedAttachment:", - "_setStartSubelementFromDescriptor:", - "_setState:", - "_setStatesImmediatelyInObject:mode:triggerRedisplay:", - "_setStoredInPageCache:", - "_setStringValue:forKey:", - "_setSubmenu:", - "_setSuperentity:", - "_setSuperview:", - "_setSurface:", - "_setTabRect:", - "_setTabState:", - "_setTabView:", - "_setTarget:", - "_setTargetProcess:", - "_setTextAttributeParaStyleNeedsRecalc", - "_setTextColorInObject:mode:compareDirectly:toTextColor:", - "_setTextContainer:", - "_setTextFieldStringValue:", - "_setTexturedBackground:", - "_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:useTrackingNum:", - "_setTrackingRect:inside:owner:userData:useTrackingNum:install:", - "_setTrackingRects", - "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:", - "_setTriggeringAction:", - "_setUIConstraints:", - "_setURI:", - "_setURL:", - "_setUndoRedoInProgress:", - "_setUnicodeInputEventReceived:", - "_setUpAppKitCoercions", - "_setUpAppKitTranslations", - "_setUpDefaultTopLevelObject", - "_setUpFoundationCoercions", - "_setUpFoundationTranslations", - "_setUpOperation:helpedBy:", - "_setUpTextField:", - "_setUseCellFieldEditorUndo:", - "_setUseModalAppearance:", - "_setUsesQuickdraw:", - "_setUtilityWindow:", - "_setValidatedPosixName:", - "_setValue:forBinding:errorFallbackMessage:", - "_setValue:forKey:", - "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:", - "_setValue:forKeyPath:ofObjectAtIndex:", - "_setValue:forKeyPath:ofObjectAtIndexPath:", - "_setValue:type:forParameter:", - "_setValueWithSelector:", - "_setVerticalScrollerHidden:", - "_setVisible:", - "_setVisibleInCache:forWindow:", - "_setVisibleRectOfColumns:", - "_setWaitingForCallback:", - "_setWantsHideOnDeactivate:", - "_setWantsKeyboardLoop:", - "_setWantsRevealovers:", - "_setWantsToActivate:", - "_setWantsToBeOnMainScreen:", - "_setWantsToDestroyRealWindow:", - "_setWantsToolbarContextMenu:", - "_setWebFrame:", - "_setWebView:", - "_setWidth:", - "_setWindow:", - "_setWindowContextForCurrentThread:", - "_setWindowDepth:", - "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", - "_setWindowNumber:", - "_setWindowTag", - "_setWindowsNeedUpdateForSecondaryThread:", - "_setWithOffset:", - "_setWords:inDictionary:", - "_setWritesCancelled:", - "_settings", - "_setup", - "_setupAnimationInfo", - "_setupBoundsForLineFragment:", - "_setupButtonImageAndToolTips", - "_setupCallbacksSavingToFile:", - "_setupFileListModeControl", - "_setupFont", - "_setupForWindow:", - "_setupHistoryControl", - "_setupIdle", - "_setupOpenPanel", - "_setupProfileUI", - "_setupRootForPrinting:", - "_setupRunLoopTimer", - "_setupSearchParts", - "_setupSegmentSwitchForControl:firstImage:secondImage:action:", - "_setupSurfaceAndStartSpinning:", - "_setupToolbar", - "_setupUI", - "_setupWindow", - "_shadowAsString:", - "_shadowFlags", - "_shadowType", - "_shapeMenuPanel", - "_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:", - "_shouldDeleteRange:", - "_shouldDispatch:invocation:sequence:coder:", - "_shouldDrawBorder", - "_shouldDrawFocus", - "_shouldDrawFocusIfInKeyWindow", - "_shouldDrawRightSeparatorInView:", - "_shouldDrawSelectionIndicator", - "_shouldDrawSelectionIndicatorForItem:", - "_shouldDrawTwoBitGray", - "_shouldEndEditingInDOMRange:", - "_shouldExecuteDelayedAutocomplete", - "_shouldForceShiftModifierWithKeyEquivalent:", - "_shouldHandleAsGotoForTypedString:", - "_shouldHaveBlinkTimer", - "_shouldHaveResizeCursorAtPoint:", - "_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:", - "_showBorder", - "_showDragError:forFilename:", - "_showDrawRect:", - "_showEffects", - "_showHideToolbar:resizeWindow:animate:", - "_showKeyboardUILoop", - "_showLanguagePopUp", - "_showOpaqueGrowBox", - "_showOpenHandCursor:", - "_showQueryProgress", - "_showTextColorImmediatelyInObject:mode:", - "_showToolTip", - "_showToolTip:", - "_showToolbar:animate:", - "_showToolbarWithAnimation:", - "_showingFocusRingAroundEnclosingScrollView:", - "_showsAllDrawing", - "_showsDontWarnAgain", - "_showsNode:", - "_sideTitlebarWidth", - "_sideTitlebarWidth:", - "_sidebarView", - "_signatureValid", - "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:", - "_simpleDeleteGlyphsInRange:", - "_simpleDescription", - "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:", - "_simpleOverflowMenuItemClicked:", - "_singleFilePathValue", - "_singleMutableArrayValueForKey:", - "_singleMutableArrayValueForKeyPath:", - "_singleValueForKey:", - "_singleValueForKeyPath:", - "_singleValueForKeyPath:operationType:", - "_size", - "_sizeAllDrawersWithRect:", - "_sizeChanged", - "_sizeDocumentViewToColumnsAndAlignIfNecessary:", - "_sizeDownIfPossible", - "_sizeHeightBucket:withSize:toFitSize:", - "_sizeHorizontallyToFit", - "_sizeListChanged:", - "_sizeMatrixOfColumnToFit:", - "_sizeModeIsValidForCurrentDisplayMode:", - "_sizeOfTitlebarFileButton", - "_sizeRowHeaderToFitIfNecessary", - "_sizeTableColumnsToFitForAutoresizingWithStyle:", - "_sizeTableColumnsToFitForColumnResizeWithStyle:", - "_sizeTableColumnsToFitWithStyle:", - "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:", - "_sizeToFit:", - "_sizeToFitColumn:withEvent:", - "_sizeToFitColumn:withSizeToFitType:", - "_sizeToFitColumnMenuAction:", - "_sizeToFitForUserColumnResize", - "_sizeVerticalyToFit", - "_sizeWindowForPicker:", - "_sizeWithRect:", - "_sizeWithSize:", - "_sizeWithSize:attributedString:", - "_smallCapsFont", - "_smallCapsRenderer", - "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:", - "_snapPositionConstrainedResizeSplitView:", - "_snapSplitPosition:forItem:snapIndex:", - "_sniffForContentType", - "_sortCollections", - "_sortDescriptors", - "_sortNodes:", - "_sortObjects:", - "_sortOrderAutoSaveNameWithPrefix", - "_sortedAETEElementClassDescriptions:", - "_sortedAETEPropertyDescriptions:", - "_sortedEdges", - "_spanClassForAttributes:inParagraphClass:spanClass:flags:", - "_speakingString", - "_specialServicesMenuUpdate", - "_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", - "_startHitTracking:", - "_startInsertionOptimization", - "_startInsertionOptimizationWithDragSource:", - "_startLiveResize", - "_startLiveResizeAsTopLevel", - "_startLiveResizeCacheOK:", - "_startLiveResizeForAllDrawers", - "_startLoadWithRequest:delegate:", - "_startLoading", - "_startLoading:", - "_startMove", - "_startObservingModelObject:", - "_startObservingSelectionIfNecessary", - "_startObservingUndoManagerNotifications", - "_startOrContinueAnimationIfNecessary", - "_startRunMethod", - "_startRunWithDuration:firingInterval:", - "_startRunningNonBlocking", - "_startSQL:", - "_startSheet", - "_startSound", - "_startTable", - "_startTableCell", - "_startTearingOffWithScreenPoint:", - "_startTimer:", - "_startingWindowForSendAction:", - "_startingWithDocument:continueSavingAndClosingAll:contextInfo:", - "_stashCollapsedOrigin:", - "_stashOrigin:", - "_stashedOrigin", - "_state", - "_stateMarkerForValue:", - "_statusItemWithLength:withPriority:", - "_stepInUpDirection:", - "_stepperCell", - "_stepperCellValueChanged:", - "_stopAnimation", - "_stopAnimation:", - "_stopAnimationWithWait:", - "_stopAutoExpandingItemFlash", - "_stopAutoscrollTimer", - "_stopDraggingUpdates", - "_stopGotoWithCode:", - "_stopLoading", - "_stopLoadingInternal", - "_stopLoadingWithError:", - "_stopModal:", - "_stopObservingModelObject:", - "_stopObservingSelectionIfNecessary", - "_stopObservingUndoManagerNotifications", - "_stopPeriodicEventsForSource:", - "_stopRun", - "_stopSearchTimer", - "_stopTearingOff", - "_stopTimerIfRunningForToolTip:", - "_stopsValidationAfterFirstError:", - "_storeClassForStoreType:", - "_storeCurrentDirectory", - "_storeExpandedFrameSize", - "_storeExpandedState", - "_storeFileListMode", - "_storeMetadataForSaving", - "_storeNewColorInColorWell:", - "_storeOrderedByFileProperty:orderedAscending:", - "_storeRootDirectory", - "_storeTypeForStore:", - "_storeUserSetHideExtensionButtonState", - "_storeZone", - "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:", - "_string:objectValueTokenRangeForIndex:", - "_string:tokenRangeForIndex:", - "_string:tokenizeIndex:inTextStorage:", - "_stringByReplacingChar:withChar:inString:", - "_stringByResolvingSymlinksInPathUsingCache:", - "_stringByStandardizingPathUsingCache:", - "_stringByTranslatingAliasDescriptor:toType:inSuite:", - "_stringByTranslatingFSSpecDescriptor:toType:inSuite:", - "_stringByTranslatingTextDescriptor:toType:inSuite:", - "_stringByTrimmingLeadingDot", - "_stringForDatePickerElement:", - "_stringForEditing", - "_stringForNode:property:", - "_stringRepresentation", - "_stringSearchParametersForListingViews", - "_stringToWrite", - "_stringValueForKey:", - "_stringWithData:", - "_stringWithDocumentTypeStringAndMarkupString:", - "_stringWithSavedFrame", - "_stripAttachmentCharactersFromAttributedString:", - "_stripAttachmentCharactersFromString:", - "_styleDeclarationImpl", - "_styleDeclarationWithImpl:", - "_styleElementImpl", - "_styleForAttributeChange:", - "_styleFromColorPanelWithSelector:", - "_styleFromFontAttributes:", - "_styleFromFontManagerOperation", - "_styleRuleImpl", - "_styleSheetListImpl", - "_styleSheetListWithImpl:", - "_subImageFocus", - "_subclassDescriptionsForDescription:", - "_subclassManagesData", - "_subentitiesIncludes:", - "_subentityNamed:", - "_subpredicateDescription:", - "_subresourceURLs", - "_subsetDescription", - "_substituteEntityAndProperty:inString:", - "_substituteFontForCharacters:length:families:", - "_substituteFontForString:families:", - "_subtextStorageFromRange:", - "_subtractColor:", - "_subtreeDescriptionWithDepth:", - "_subviews", - "_subviewsExcludingHiddenViews", - "_suggestCompletionsForPartialWordRange:inString:language:", - "_suggestGuessesForWord:inLanguage:", - "_suggestedControllerKeyForController:binding:", - "_suiteDescriptions", - "_suiteDescriptionsByName", - "_sumForKeyPath:", - "_superviewClipViewFrameChanged:", - "_supportedMIMETypes", - "_supportsGetValueWithNameForKey:perhapsByOverridingClass:", - "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:", - "_supportsMinAndMax", - "_supportsVariableHeightRows", - "_supposedNumberOfItems", - "_suppressNotification", - "_suppressNotification:", - "_surface", - "_surfaceBounds", - "_surfaceDidComeBack:", - "_surfaceNeedsUpdate:", - "_surfaceWillGoAway:", - "_suspendIfTopHandling:", - "_suspendLoading", - "_swapFileListKeyViewFrom:to:", - "_sweeperInterval", - "_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", - "_synchronizeExpandedNodesWithOutlineExpandedItems", - "_synchronizeTextView:", - "_synchronizeTitlesAndColumnsViewVisibleRect", - "_synchronizeTitlesAndColumnsViewWidth", - "_synchronizeWindowTitles", - "_synchronizeWithPeerBindersInArray:", - "_systemColorChanged:", - "_systemColorsChanged:", - "_tabHeight", - "_tabOrientation", - "_tabRect", - "_tabRectAdjustedForOverlap:", - "_tabRectForTabViewItem:", - "_tabViewWillRemoveFromSuperview", - "_tableBinderForTableView:", - "_tableBinderForTableViewSupportsSorting:", - "_tableCaptionElementImpl", - "_tableCaptionElementWithImpl:", - "_tableCellElementImpl", - "_tableCellElementWithImpl:", - "_tableColElementImpl", - "_tableElementImpl", - "_tableElementWithImpl:", - "_tableRowElementImpl", - "_tableSectionElementImpl", - "_tableSectionElementWithImpl:", - "_tableView:willAddTableColumn:", - "_tableView:willRemoveTableColumn:", - "_takeApplicationMenuIfNeeded:", - "_takeColorFrom:andSendAction:", - "_takeColorFromAndSendActionIfContinuous:", - "_takeColorFromDoAction:", - "_takeFocus", - "_takeValuesFromTextBlock:", - "_target", - "_targetAndArgumentsAcceptableForMode:", - "_targetBinding", - "_targetBindingBound", - "_taskNowMultiThreaded:", - "_tempHide:relWin:", - "_tempHideHODWindow", - "_tempUnhideHODWindow", - "_temporaryAttribute:atCharacterIndex:effectiveRange:", - "_temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:", - "_temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:", - "_temporaryFilename:", - "_termOneShotWindow", - "_termWindowIfOwner", - "_termedDescriptionWithTabCount:propertyKindName:", - "_terminate", - "_terminate:", - "_terminateSendShould:", - "_testPartUsingDestinationFloatValue:", - "_testWithComparisonOperator:object1:object2:", - "_textAreaElementImpl", - "_textAttributes", - "_textColorWithMode:", - "_textDidEndEditing:", - "_textDimColor", - "_textFieldWithStepperCellSize", - "_textFieldWithStepperKeyDown:inRect:ofView:", - "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:", - "_textHighlightColor", - "_textImpl", - "_textSizeMultiplierChanged", - "_textSizeMultiplierFromWebView", - "_textTransform", - "_textViewOwnsTextStorage", - "_textureImage", - "_texturePattern", - "_theMap", - "_themeContentRect", - "_themeTabAndBarArea", - "_threadContext", - "_throwIfNotEditable", - "_tidyWithData:error:isXML:", - "_tile", - "_tile:", - "_tileAndRedisplayAll", - "_tileContinuousScrollingBrowser", - "_tileNonContinuousScrollingBrowser", - "_tileTitlebarAndRedisplay:", - "_timeOfLastCompletedLoad", - "_timedAdjustTextControl:", - "_timestamp", - "_title", - "_titleCellHeight", - "_titleCellHeight:", - "_titleCellOfColumn:", - "_titleCellSize", - "_titleCellSizeForTitle:styleMask:", - "_titleElementImpl", - "_titleRectForCellFrame:", - "_titleRectForTabViewItem:", - "_titleSizeWithSize:", - "_titlebarHeight", - "_titlebarHeight:", - "_titlebarTitleRect", - "_toManyInformation", - "_toOneRange", - "_toggleBold", - "_toggleCollapsedSplitView", - "_toggleFrameAutosaveEnabled:", - "_toggleItalic", - "_toggleLogging", - "_toggleOrderedFrontMost:", - "_toggleOrderedFrontMostWillOrderOut", - "_toggleSelectAnyValidResponderOverride", - "_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", - "_toolbarFrameSizeChanged:oldSize:", - "_toolbarIsHidden", - "_toolbarIsInTransition", - "_toolbarIsShown", - "_toolbarItemCommonInit", - "_toolbarPatternPhase", - "_toolbarPillButtonClicked:", - "_toolbarRegisterForNotifications", - "_toolbarUnregisterForNotifications", - "_toolbarView", - "_toolbarViewCommonInit", - "_tooltipForColorPicker:", - "_tooltipStringForCell:column:row:point:trackingRect:", - "_topContainerView", - "_topCornerSize", - "_topHandling", - "_topLeftResizeCursor", - "_topMenuView", - "_topRightResizeCursor", - "_topmostChild", - "_totalAdvancementForNativeGlyphs:count:", - "_totalHeightOfTableView", - "_totalMinimumTabsLengthWithOverlap:", - "_totalNominalTabsLengthWithOverlap:", - "_totalTabsLength:overlap:", - "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:", - "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:", - "_trackButton:forEvent:inRect:ofView:", - "_trackMouse:", - "_trackSelectedItemMenu", - "_trackingHandlerRef", - "_trackingSegment", - "_transferCache:", - "_transferWindowOwnership", - "_transform", - "_transformDstRect:clipRect:", - "_transformerRegistry", - "_transitionToCommitted:", - "_transitionToLayoutAcceptable", - "_transparency", - "_transparentBackground", - "_trapezoidForRun:style:atPoint:", - "_trashContainsOrIs:", - "_traverseLibXML2Node:depth:", - "_traverseNode:depth:", - "_traverseToSubmenu", - "_traverseToSupermenu", - "_treeHasDragTypes", - "_treeWalkerImpl", - "_treeWalkerWithImpl:filter:", - "_triggeringAction", - "_trimRecentSearchList", - "_trimWithCharacterSet:", - "_truncateToSizeLimit:", - "_tryChallenge:", - "_tryCookieLookup:path:secure:result:", - "_tryDrop:dropItem:dropChildIndex:", - "_tryDrop:dropRow:dropOperation:", - "_tryToSendDoubleAction", - "_tryUserDrillIntoHighlightedNode", - "_tryUserMoveToParentNode", - "_type", - "_typeDescription", - "_typeDescriptionForName:", - "_typeDescriptionForName:suiteName:isValid:", - "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:", - "_typeDictForType:", - "_typeIdentifierFromCarbonCode:", - "_typeIdentifierFromCocoaName:", - "_types", - "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:", - "_typesIncludingConversionsFromTypes:", - "_typesetterBehavior", - "_typographicLeading", - "_typographyPanel", - "_uListElementImpl", - "_umask", - "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:", - "_uncachedRectHeightOfRow:", - "_uncachedSize", - "_under", - "_underlineIsOn", - "_underlineStyleForArgument:", - "_undoDelete:", - "_undoManagerCheckpoint:", - "_undoManagerForFieldEditor:defaultUndoManager:", - "_undoRedoAttributedSubstringFromRange:", - "_undoRedoTextOperation:", - "_undoStack", - "_undoUpdate:", - "_unformattedAttributedStringValue:", - "_ungrowFrameForDropGapStyle", - "_unhide", - "_unhideAllDrawers", - "_unhideChildren", - "_unhideSheet", - "_uninstallActionButtonIfNecessary", - "_unionOfArraysForKeyPath:", - "_unionOfObjectsForKeyPath:", - "_uniqueNameForNewSubdocument:", - "_uniquer", - "_unitsForClientLocation:", - "_unitsForRulerLocation:", - "_unlock", - "_unlockFirstResponder", - "_unlockQuickDrawPort", - "_unlockViewHierarchyForDrawing", - "_unlockViewHierarchyForModification", - "_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:", - "_unregisterViewClassAndRepresentationClassForMIMEType:", - "_unresolveTypeAlias:", - "_unsetFinalSlide", - "_unsetInputs", - "_unshowOpenHandCursor:", - "_untitledDocumentNumber", - "_untitledNumberForDocument:", - "_update", - "_updateAllViews", - "_updateAntialiasingThreshold", - "_updateAppleMenu:", - "_updateAttributes", - "_updateAutosavedRecents:", - "_updateAutoscrollingStateWithTrackingViewPoint:event:", - "_updateButtonState", - "_updateButtons", - "_updateCell", - "_updateCellIfNotEditing", - "_updateCellImage:", - "_updateCommandDisplayWithRecognizer", - "_updateContent", - "_updateContentsIfNecessary", - "_updateCrayonsFromColorList", - "_updateCreatedTime:", - "_updateDataCellControlView", - "_updateDateColumnDetailLevelWidths", - "_updateDateColumnDetailLevels", - "_updateDefaultState:forCredential:protectionSpace:", - "_updateDependenciesWithPeerBinders:", - "_updateDocumentMetadata", - "_updateDragInsertion:", - "_updateDragInsertionIndicatorWith:", - "_updateDraggingInfo:dragInside:", - "_updateDrawer:withVisibilityState:", - "_updateDrawsBackground", - "_updateEnabled", - "_updateExpansionButtonEnabledState", - "_updateExpirationTimer:", - "_updateFileDatabase", - "_updateFileNamesForChildren", - "_updateFilterPredicate:", - "_updateFirstItemIfNecessary", - "_updateFocusRing", - "_updateFontPanel", - "_updateForEditedMovie:", - "_updateForLiveResizeWithOldSize:", - "_updateForVersion:", - "_updateFrameWidgets", - "_updateFromDeltas:", - "_updateFromPath:checkOnly:exists:", - "_updateFromSnapshot:", - "_updateGlyphEntryForCharacter:glyphID:font:", - "_updateHeaderCellControlView", - "_updateHideExtensionButtonStateFromNameFieldContents", - "_updateHighlightedItemWithTrackingViewPoint:event:", - "_updateIconDatabaseWithURL:", - "_updateInputManagerState", - "_updateInvalidatedObjectValue:", - "_updateKeychainItem:", - "_updateKnownNotVisibleAppleMenu:", - "_updateLabel", - "_updateLastEditingAndFocusRingFrame", - "_updateLastUncollapsedSidebarWidth", - "_updateLengthAndSelectedRange:", - "_updateLoading", - "_updateMenuForClippedItems", - "_updateMenuItemIcon:", - "_updateMouseTracking", - "_updateMouseoverWithEvent:", - "_updateMouseoverWithFakeEvent", - "_updateNameFieldContentsFromHideExtensionButtonState", - "_updateNewFolderButtonEnabledState", - "_updateNodeList:byAddingNode:", - "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:", - "_updateNodeList:forChangedProperty:ofNode:", - "_updateNumberOfTitleCellsIfNecessary", - "_updateNumberOfTitleCellsIfNecessary:", - "_updateObject:observedController:observedKeyPath:context:", - "_updateObservingRegistration:", - "_updateOkButtonEnabledState", - "_updateOkButtonEnabledStateAndErrorMessage", - "_updateParagraphStyleCache:", - "_updatePlaceholdersForBindingInfo:", - "_updateProxySettings", - "_updateRulerlineForRuler:oldPosition:newPosition:vertical:", - "_updateSearchMenu", - "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:", - "_updateSelectionForInputManager", - "_updateSelectionIndexPaths:", - "_updateSelectionIndexes:", - "_updateSizeAndLocation", - "_updateSortDescriptors:", - "_updateSubfieldStringsForDateChange", - "_updateSubmenuKnownStale:", - "_updateTable", - "_updateTableColumn", - "_updateTableColumn:withWidth:", - "_updateTableRow", - "_updateTearOffPositionWithScreenPoint:", - "_updateTextSizeMultiplier", - "_updateTextViewWidth", - "_updateToNewPrefs:", - "_updateUIToMatchCachedValues", - "_updateUnprocessedOwnDestinations:", - "_updateUsageForTextContainer:addingUsedRect:", - "_updateWebCoreSettingsFromPreferences:", - "_updateWidgets", - "_updateWindow:withVisibilityState:", - "_updateWindow:withWidth:height:", - "_updateWindowsUsingCache", - "_updatedItemViewsForChildrenOfContainerNodes:", - "_useErrorPresenter:", - "_useFSRefsEvenOnPathBasedFileSystems", - "_useIconNamed:from:", - "_usePolicy:", - "_useSharedKitWindow:rect:", - "_useSimpleTrackingMode", - "_useSquareToolbarSelectionHighlight", - "_userCanChangeSelection", - "_userCanEditTableColumn:row:", - "_userCanMoveColumn:toColumn:", - "_userCanSelectAndEditTableColumn:row:", - "_userCanSelectColumn:byExtendingSelection:", - "_userCanSelectRow:byExtendingSelection:", - "_userChangeSelection:fromAnchorRow:toRow:lastExtensionRow:selecting:", - "_userClickOrKeyInColumnShouldMaintainColumnPosition", - "_userData", - "_userDeselectColumn:", - "_userDeselectRow:", - "_userInsertItemWithItemIdentifier:atIndex:", - "_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:", - "_usesCorrectContentSize", - "_usesCustomTrackImage", - "_usesFastJavaBundleSetup", - "_usesPageCache", - "_usesProgrammingLanguageBreaks", - "_usesScreenFonts", - "_usesToolTipsWhenTruncated", - "_usingAlternateHighlightColorWithFrame:inView:", - "_usingToolbarShowHideWeightingOptimization", - "_validDestinationForDragsWeInitiate", - "_validFrameForResizeFrame:fromResizeEdge:", - "_validIndexes:indexType:", - "_validItemViewerBounds", - "_validItemViewerBoundsAssumingClipIndicatorNotShown", - "_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:", - "_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", - "_valueBuffer", - "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:", - "_valueClass", - "_valueClass:", - "_valueClassIsSortableWithBinding:", - "_valueForBindingWithResolve:mode:", - "_valueForBindingWithoutResolve:mode:", - "_valueForKey:", - "_valueForKey:withInputs:", - "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:", - "_valueForKeyPath:ofObjectAtIndex:", - "_valueForKeyPath:ofObjectAtIndexPath:", - "_valueForOptionalCocoaAttributeKey:fromElement:", - "_valueForParameter:", - "_valueForRequiredCocoaAttributeKey:fromElement:", - "_valueImpl", - "_valueListImpl", - "_valueOfType:", - "_valueTransformerNameForBinding:", - "_valueTypeForParameter:", - "_valueWithImpl:", - "_valueWithOperatorKeyPath:", - "_variableValueInBindings:", - "_verifyDataIsPICT:", - "_verifyDefaultButtonCell:", - "_verifyNoChangesToReadonlyEntity:", - "_verifySelectionIsOK", - "_verticalDistanceForLineScroll", - "_verticalDistanceForPageScroll", - "_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:", - "_waitForLoadThreadSetup", - "_wakeup", - "_wantsDeviceDependentEventModifierFlags", - "_wantsFiles:", - "_wantsHeartBeat", - "_wantsHideOnDeactivate", - "_wantsKeyboardLoop", - "_wantsLiveResizeToUseCachedImage", - "_wantsRevealoverAtColumn:row:", - "_wantsRevealovers", - "_wantsToActivate", - "_wantsToDestroyRealWindow", - "_wantsToolTipAtColumn:row:", - "_wantsToolbarContextMenu", - "_wasFirstResponderAtMouseDownTime:", - "_wasRedirectedToRequest:redirectResponse:", - "_webArchiveClass", - "_webDataRequestBaseURL", - "_webDataRequestData", - "_webDataRequestEncoding", - "_webDataRequestExternalRequest", - "_webDataRequestExternalURL", - "_webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:", - "_webDataRequestMIMEType", - "_webDataRequestParametersForReading", - "_webDataRequestParametersForWriting", - "_webDataRequestSetBaseURL:", - "_webDataRequestSetData:", - "_webDataRequestSetEncoding:", - "_webDataRequestSetMIMEType:", - "_webDataRequestSetUnreachableURL:", - "_webDataRequestUnreachableURL", - "_webIsDataProtocolURL:", - "_webKitBundle", - "_webKitErrorWithDomain:code:URL:", - "_webPreferences", - "_webResourceClass", - "_webView", - "_webViewClass", - "_web_HTTPStyleLanguageCode", - "_web_HTTPStyleLanguageCodeWithoutRegion", - "_web_RFC1123DateString", - "_web_RFC1123DateStringWithTimeInterval:", - "_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_background", - "_web_backgroundRemoveFileAtPath:", - "_web_backgroundRemoveLeftoverFiles:", - "_web_bestURL", - "_web_boolForKey:", - "_web_buildAcceptLanguageHeaderFromPreferredLanguages:", - "_web_canonicalize", - "_web_capitalizeRFC822HeaderFieldName", - "_web_carbonPathForPath:", - "_web_changeFileAttributes:atPath:", - "_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_dataForKey:", - "_web_dataForURLComponentType:", - "_web_dateFromHTTPDateString:", - "_web_declareAndWriteDragImage:URL:title:archive:source:", - "_web_decodeHostNameWithRange:", - "_web_defaultsDidChange", - "_web_dissolveToFraction:", - "_web_doesEveryElementSatisfyPredicate:", - "_web_domainFromHost", - "_web_domainMatches:", - "_web_dragImage:rect:event:pasteboard:source:offset:", - "_web_dragOperationForDraggingInfo:", - "_web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:", - "_web_dragTypesForURL", - "_web_drawAtPoint:font:textColor:", - "_web_drawDoubledAtPoint:withTopColor:bottomColor:font:", - "_web_encodeHostNameWithRange:", - "_web_encodeWWWFormURLData", - "_web_encodeWWWFormURLData:", - "_web_encodingForResource:", - "_web_errorWithDomain:code:URL:", - "_web_errorWithDomain:code:URL:userInfoObjectsAndKeys:", - "_web_fileExistsAtPath:isDirectory:traverseLink:", - "_web_fileNameFromContentDispositionHeader", - "_web_filenameByFixingIllegalCharacters", - "_web_firstOccurrenceOfCharacter:", - "_web_firstResponderCausesFocusDisplay", - "_web_firstResponderIsSelfOrDescendantView", - "_web_fixedCarbonPOSIXPath", - "_web_guessedMIMEType", - "_web_guessedMIMETypeForExtension:originalType:", - "_web_guessedMIMETypeForXML", - "_web_hasCaseInsensitivePrefix:", - "_web_hasCaseInsensitiveSubstring:", - "_web_hasCaseInsensitiveSuffix:", - "_web_hasCountryCodeTLD", - "_web_hasQuestionMarkOnlyQueryString", - "_web_hostData", - "_web_hostNameNeedsDecodingWithRange:", - "_web_hostNameNeedsEncodingWithRange:", - "_web_initWithDomain:code:URL:", - "_web_initWithDomain:code:failingURL:", - "_web_intForKey:", - "_web_isCaseInsensitiveEqualToCString:", - "_web_isCaseInsensitiveEqualToString:", - "_web_isEmpty", - "_web_isFTPDirectoryURL", - "_web_isFileURL", - "_web_isJavaScriptURL", - "_web_isKeyEvent:", - "_web_isTabKeyEvent", - "_web_lastOccurrenceOfCharacter:", - "_web_layoutIfNeededRecursive:testDirtyRect:", - "_web_locationAfterFirstBlankLine", - "_web_looksLikeAbsoluteURL", - "_web_looksLikeDomainName", - "_web_looksLikeIPAddress", - "_web_lowercaseStrings", - "_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_pathWithUniqueFilenameForPath:", - "_web_performBooleanSelector:", - "_web_performBooleanSelector:withObject:", - "_web_preferredLanguageCode", - "_web_rangeOfURLResourceSpecifier", - "_web_rangeOfURLScheme", - "_web_rangeOfURLUserPasswordHostPort", - "_web_removeFileOnlyAtPath:", - "_web_safeMakeObjectsPerformSelector:", - "_web_scaleToMaxSize:", - "_web_schemeData", - "_web_scriptIfJavaScriptURL", - "_web_selectorValue", - "_web_setBool:forKey:", - "_web_setFindPasteboardString:withOwner:", - "_web_setInt:forKey:", - "_web_setObject:forUncopiedKey:", - "_web_setObjectIfNotNil:forKey:", - "_web_setObjectUsingSetIfNecessary:forKey:", - "_web_setPrintingModeRecursive", - "_web_spaceSeparatedPrefix", - "_web_spaceSeparatedSuffix", - "_web_splitAtNonDateCommas", - "_web_startsWithBlankLine", - "_web_startupVolumeName", - "_web_stringByAbbreviatingWithTildeInPath", - "_web_stringByCollapsingNonPrintingCharacters", - "_web_stringByReplacingValidPercentEscapes", - "_web_stringByStrippingCharactersFromSet:", - "_web_stringByStrippingReturnCharacters", - "_web_stringByTrimmingWhitespace", - "_web_stringForKey:", - "_web_stringRepresentationForBytes:", - "_web_stringWithUTF8String:length:", - "_web_suggestedFilenameWithMIMEType:", - "_web_superviewOfClass:", - "_web_superviewOfClass:stoppingAtClass:", - "_web_textSizeMultiplierChanged", - "_web_uniqueWebDataURL", - "_web_uniqueWebDataURLWithRelativeString:", - "_web_userVisibleString", - "_web_valueWithSelector:", - "_web_visibleItemsInDirectoryAtPath:", - "_web_widthWithFont:", - "_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", - "_window", - "_windowAnimationVelocity", - "_windowBorderThickness", - "_windowBorderThickness:", - "_windowChangedHilite:", - "_windowChangedKeyState", - "_windowChangedNumber:", - "_windowDepth", - "_windowDeviceRound", - "_windowDidBecomeVisible:", - "_windowDidChangeScreens:", - "_windowDidComeBack:", - "_windowDidHideToolbar", - "_windowDidLoad", - "_windowDying", - "_windowExposed:", - "_windowFileButtonSpacingWidth", - "_windowInitWithCoder:", - "_windowMoved:", - "_windowMovedToRect:", - "_windowNumber:changedTo:", - "_windowRefCreatedForCarbonControl", - "_windowResizeBorderThickness", - "_windowResizeCornerThickness", - "_windowSideTitlebarTitleMinWidth:", - "_windowTitlebarButtonSpacingWidth", - "_windowTitlebarButtonSpacingWidth:", - "_windowTitlebarTitleMinHeight:", - "_windowTitlebarXResizeBorderThickness", - "_windowTitlebarYResizeBorderThickness", - "_windowWillClose:", - "_windowWillGoAway:", - "_windowWillLoad", - "_windowWillOrderOut:", - "_windowWillShowToolbar", - "_windowWithRealWindowNumber:", - "_wiringNibConnections", - "_wordsInDictionary:", - "_workspaceDidResignOrBecomeActive:", - "_wrappingAttributes", - "_writeCallback:", - "_writeCharacterAttributes:", - "_writeCharacterData", - "_writeCharacters:range:", - "_writeColorsToLibrary", - "_writeDataForkData:resourceForkData:", - "_writeDocumentAttributes", - "_writeDocumentData", - "_writeDocumentProperties", - "_writeDocumentPropertiesToString:", - "_writeDocumentProperty:value:", - "_writeDocumentProperty:value:toString:", - "_writeFontInRange:toPasteboard:", - "_writeFonts", - "_writeForkData:isDataFork:", - "_writeImageElement:withPasteboardTypes:toPasteboard:", - "_writeLinkElement:withPasteboardTypes:toPasteboard:", - "_writeParagraphData", - "_writeParagraphStyle:", - "_writePersistentBrowserColumns", - "_writePersistentExpandItems", - "_writePersistentTableColumns", - "_writeRTFDInRanges:toPasteboard:", - "_writeRTFInRanges:toPasteboard:", - "_writeRecentDocumentDefaults", - "_writeRulerInRange:toPasteboard:", - "_writeSafelyToURL:ofType:forSaveOperation:error:", - "_writeSelectionToPasteboard:", - "_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", - "_wsmOwnsWindow", - "_zapResultArray", - "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:", - "_zeroScreen", - "_zoomButtonOrigin", - "abbreviation", - "abbreviationDictionary", - "abbreviationForDate:", - "abortAllToolTips", - "abortEditing", - "abortModal", - "abortParsing", - "abortToolTip", - "absolutePathForAppBundleWithIdentifier:", - "absoluteString", - "absoluteURL", - "absoluteX", - "absoluteY", - "absoluteZ", - "acceptColor:atPoint:", - "acceptConnectionInBackgroundAndNotifyForModes:", - "acceptLastEnteredText", - "acceptNode:", - "acceptVisitor:flags:", - "acceptableDragTypes", - "acceptsFirstMouse:", - "acceptsFirstResponder", - "acceptsGlyphInfo", - "acceptsMarker:binding:overrideWithPlaceholderIfDefined:", - "acceptsMouseMovedEvents", - "acceptsStyleChanges", - "access", - "accessInstanceVariablesDirectly", - "accessibilityAXAttributedStringForCharacterRange:includingLinksAndAttachments:", - "accessibilityActionDescription:", - "accessibilityActionNames", - "accessibilityArrayAttributeCount:", - "accessibilityArrayAttributeValues:index:maxCount:", - "accessibilityAttachmentAtIndex:", - "accessibilityAttachments", - "accessibilityAttributeNames", - "accessibilityAttributeValue:", - "accessibilityAttributeValue:forParameter:", - "accessibilityBoundsForCharacterRange:", - "accessibilityBoundsForRangeAttributeForParameter:", - "accessibilityCharacterRangeForLineNumber:", - "accessibilityCharacterRangeForPosition:", - "accessibilityChildForColumn:", - "accessibilityChildrenAttribute", - "accessibilityClearButtonAttribute", - "accessibilityColumnForChild:", - "accessibilityColumnTitlesAttribute", - "accessibilityContentsAttribute", - "accessibilityCurrentEditor", - "accessibilityCurrentEditorForCell:", - "accessibilityDecrementButtonAttribute", - "accessibilityElementForAttachment:", - "accessibilityElementWithParent:", - "accessibilityFocusRingBounds", - "accessibilityFocusRingBoundsForBounds:", - "accessibilityFocusedUIElement", - "accessibilityGrowAreaAttribute", - "accessibilityHeaderAttribute", - "accessibilityHelpStringForChild:", - "accessibilityHitTest:", - "accessibilityHorizontalScrollBarAttribute", - "accessibilityIncrementButtonAttribute", - "accessibilityIndexForAttachment:", - "accessibilityIndexOfChild:", - "accessibilityInsertionPointLineNumber", - "accessibilityIsAttributeSettable:", - "accessibilityIsChildFocusable:", - "accessibilityIsChildOfApp", - "accessibilityIsIgnored", - "accessibilityIsSelectedRangeSettable", - "accessibilityIsSelectedTextSettable", - "accessibilityIsSingleCelled", - "accessibilityIsSortButton", - "accessibilityIsVisibleCharacterRangeSettable", - "accessibilityLineForIndexAttributeForParameter:", - "accessibilityLineNumberForCharacterIndex:", - "accessibilityMenuBarAttribute", - "accessibilityOverflowButtonAttribute", - "accessibilityOverriddenAttributes", - "accessibilityParameterizedAttributeNames", - "accessibilityPerformAction:", - "accessibilityPopUpMenuCreated:", - "accessibilityPopUpMenuParent:", - "accessibilityPositionOfChild:", - "accessibilityPostNotification:", - "accessibilityRTFForCharacterRange:", - "accessibilityRangeForLineAttributeForParameter:", - "accessibilityRangeForPositionAttributeForParameter:", - "accessibilityRoleAttribute", - "accessibilityRulerMarkerType", - "accessibilityRulerMarkerTypeDescription", - "accessibilitySearchButtonAttribute", - "accessibilitySelectedChildrenAttribute", - "accessibilitySelectedRange", - "accessibilitySelectedText", - "accessibilitySetFocus:forChild:", - "accessibilitySetOverrideValue:forAttribute:", - "accessibilitySetSelectedRange:", - "accessibilitySetSelectedText:", - "accessibilitySetValue:forAttribute:", - "accessibilitySetVisibleCharacterRange:", - "accessibilitySharedCharacterRange", - "accessibilitySharedTextViews", - "accessibilityShouldUseUniqueId", - "accessibilitySizeOfChild:", - "accessibilitySplittersAttribute", - "accessibilityStyleRangeForCharacterIndex:", - "accessibilitySubroleAttribute", - "accessibilitySupportsOverriddenAttributes", - "accessibilityTabsAttribute", - "accessibilityTextLinkAtIndex:", - "accessibilityTextLinks", - "accessibilityTextView", - "accessibilityTitleUIElementAttribute", - "accessibilityTopLevelUIElementAttributeValueHelper", - "accessibilityTree", - "accessibilityValueAttribute", - "accessibilityValueIndicatorAttribute", - "accessibilityVerticalScrollBarAttribute", - "accessibilityVisibleCharacterRange", - "accessibilityVisibleCharacterRangeAttribute", - "accessibilityWindowAttribute", - "accessibilityWindowAttributeValueHelper", - "accessibilityWindowNumber", - "accessibilityWindowsAttribute", - "accessoryView", - "accessoryViewContainerContentFrameDidChange:", - "accumulate::minRadius:factor:", - "action", - "action:", - "actionForControlCharacterAtIndex:", - "actionHasBegun:sender:", - "actionHasEnded:sender:", - "actionType", - "activate:", - "activateIgnoringOtherApps:", - "activateInputManagerFromMenu:", - "activeColorSpace", - "activeConversationChanged:toNewConversation:", - "activeConversationWillChange:fromOldConversation:", - "activeFileListDelegate", - "actualBitsPerPixel", - "actualIndexForIndex:filtered:", - "adapter", - "adapterOperations", - "adapterOperator", - "add:", - "add:to:", - "addAcceptFieldsToHeader", - "addAdapterOperation:", - "addAnimatingRenderer:inView:", - "addAttribute:", - "addAttribute:value:range:", - "addAttributes:range:", - "addAttributesWeakly:range:", - "addAuthenticationFieldsToHeader", - "addBindVariable:", - "addBinder:", - "addBinding:toController:withKeyPath:valueTransformer:options:", - "addButtonWithTitle:", - "addCharactersInRange:", - "addCharactersInString:", - "addChild:", - "addChildItem:", - "addChildObject:", - "addChildWindow:ordered:", - "addChildren:", - "addChildrenToArray:", - "addClassNamed:version:", - "addClient:", - "addClip", - "addColumn", - "addColumns:", - "addCommon:docInfo:value:zone:", - "addConditionalFieldsToHeader", - "addConnection:forKey:", - "addConnection:toRunLoop:forMode:", - "addConnectionFieldToHeader", - "addContentObject:isPlaceholder:value:tag:cellOrControl:", - "addConversation:", - "addCookieFieldToHeader", - "addCrayon:", - "addCredential:forProtectionSpace:", - "addCredentialsToInitialHTTPRequest:protocol:", - "addCredentialsToRetryHTTPRequest:afterFailureResponse:nsFailureResponse:failureCount:protocol:withCallback:context:", - "addCursorRect:cursor:", - "addData:", - "addDefaultTable", - "addDelta:forManyToManyKey:", - "addDescription:forSubelementName:", - "addDirNamed:lazy:", - "addDocument:", - "addEntity:index:", - "addEntriesFromDictionary:", - "addEnumeration:", - "addEventListener:::", - "addExpandedNode:", - "addExtraFieldsToHeader", - "addFavorite", - "addFavoriteInWindow:", - "addFeatureDescriptions:", - "addFileButton:", - "addFileNamed:fileAttributes:", - "addFileWrapper:", - "addFontDescriptorToRecents:", - "addFontDescriptors:toCollection:", - "addFontTrait:", - "addGlyphs:advances:count:at::", - "addHeartBeatView:", - "addHostFieldToHeader", - "addIndex:", - "addIndexRange:", - "addIndexes:", - "addIndexesInRange:", - "addItem:", - "addItemForURL:", - "addItemWithObjectValue:", - "addItemWithTitle:", - "addItemWithTitle:action:keyEquivalent:", - "addItemWithTitle:action:tag:", - "addItems:", - "addItemsWithObjectValues:", - "addItemsWithTitles:", - "addJoinForDirectToManyToMany:", - "addJoinForManyToManyRelationship:sourcePath:destinationPath:", - "addJoinForToManyRelationship:sourcePath:destinationPath:", - "addJoinForToOneRelationship:sourcePath:destinationPath:", - "addLayoutManager:", - "addListenerIfAbsent:", - "addMarker:", - "addMessageBodyToRequest", - "addMessageToConsole:", - "addMouseMovedObserver", - "addNamespace:", - "addNewColor:andShowInWell:", - "addObject:", - "addObject:objectIDMap:", - "addObject:toBothSidesOfRelationshipWithKey:", - "addObject:toPropertyWithKey:", - "addObjectToMasterArrayRelationship:selectionMode:", - "addObjectsFromArray:", - "addObjectsToMasterArrayRelationship:selectionMode:", - "addObserver:forKeyPath:options:context:", - "addObserver:selector:name:object:", - "addObserver:selector:name:object:suspensionBehavior:", - "addOrNestTable", - "addPathToLibrarySearchPaths:", - "addPersistentStoreWithType:configuration:URL:readOnly:error:", - "addPlugin:", - "addPolicy:", - "addPort:forMode:", - "addPortsToAllRunLoops", - "addPortsToRunLoop:", - "addPreferenceNamed:owner:", - "addRect:", - "addReferrerFieldToHeader", - "addRegularFileWithContents:preferredFilename:", - "addRepresentation:", - "addRepresentations:", - "addRow", - "addRowWithCells:", - "addRows:", - "addRunLoop:", - "addServiceProvider:", - "addSpecialGStateView:", - "addStatistics:", - "addSubresource:", - "addSubview:", - "addSubview:positioned:relativeTo:", - "addSuperviewObservers", - "addTabStop:", - "addTableColumn:", - "addTemporaryAttributes:forCharacterRange:", - "addTextContainer:", - "addTimeInterval:", - "addTimer:forMode:", - "addTimerToModes", - "addToPageSetup", - "addToolTipRect:owner:userData:", - "addTrackingRect:owner:userData:assumeInside:", - "addTrackingRectForToolTip:reuseExistingTrackingNum:", - "addTypes:owner:", - "addUserAgentFieldToHeader", - "addValue:forHTTPHeaderField:", - "addVariationDescriptions:", - "addView:frame:toView:characterIndex:layoutManager:", - "addWebView:toSetNamed:", - "addWindowController:", - "addWindowObservers", - "addWindowsItem:title:filename:", - "additionalClip", - "additionalPatternPhase", - "address", - "addresses", - "adjustCTM:", - "adjustControls:", - "adjustFrameOriginX:", - "adjustFrameSize", - "adjustHalftonePhase", - "adjustOffsetToNextWordBoundaryInString:startingAt:", - "adjustPageHeightNew:top:bottom:limit:", - "adjustPageWidthNew:left:right:limit:", - "adjustScroll:", - "adjustScrollView", - "adjustSubviews", - "adjustView:frame:forView:characterIndex:layoutManager:", - "adjustViewSize", - "advanceProxyArray", - "advanceToNextMisspelling", - "advanceToNextMisspellingStartingJustBeforeSelection", - "advancementForGlyph:", - "aeDesc", - "aeteResource:", - "affineTransform", - "afterEntityLookup", - "alertDidEnd:returnCode:contextInfo:", - "alertShowHelp:", - "alertWithError:", - "alignCenter:", - "alignJustified:", - "alignLeft:", - "alignRight:", - "alignment", - "allBundles", - "allConnections", - "allCredentials", - "allFrameworks", - "allHTTPHeaderFields", - "allHeaderFields", - "allKeys", - "allKeysForObject:", - "allObjects", - "allOrderedScopeButtons", - "allPropertyKeys", - "allValues", - "alloc", - "allocFromZone:", - "allocWithZone:", - "allocateGState", - "allocateObjectIDForPayload:withType:", - "allowDHTMLDrag:UADrag:", - "allowEmptySel:", - "allowFlushing", - "allowedContentBindingMask", - "allowedFileTypes", - "allowedValueBindingMask", - "allowsAnyHTTPSCertificateForHost:", - "allowsBranchSelection", - "allowsColumnReordering", - "allowsColumnResizing", - "allowsColumnSelection", - "allowsDocumentBackgroundColorChange", - "allowsDuplicatesInToolbar", - "allowsEditingMultipleValuesSelection", - "allowsEditingTextAttributes", - "allowsEmptySelection", - "allowsExpandingMultipleDirectories", - "allowsFloats", - "allowsKeyedCoding", - "allowsMixedState", - "allowsMultipleSelection", - "allowsNaturalLanguage", - "allowsNullArgumentWithBinding:", - "allowsOtherFileTypes", - "allowsReverseTransformation", - "allowsScrolling", - "allowsTickMarkValuesOnly", - "allowsToolTipsWhenApplicationIsInactive", - "allowsUndo", - "allowsUserCustomization", - "alpha", - "alphaComponent", - "alphaControlAddedOrRemoved:", - "alphaValue", - "alphanumericCharacterSet", - "altIncrementValue", - "altModifySelection:", - "alterCurrentSelection:direction:granularity:", - "alterCurrentSelection:verticalDistance:", - "alternateArrangeInFront:", - "alternateImage", - "alternateMnemonicLocation", - "alternateSelectedControlColor", - "alternateSelectedControlTextColor", - "alternateTitle", - "alwaysAttemptToUsePageCache", - "alwaysPresentsApplicationModalAlerts", - "alwaysPresentsApplicationModalAlertsWithBinding:", - "alwaysUsesMultipleValuesMarker", - "analyzeKeyPath:registerOrUnregister:", - "ancestorSharedWithView:", - "ancestorsStartingWith:", - "anchorElement", - "andPredicateOperator", - "angledROI:forRect:", - "animate", - "animate:", - "animation:didReachProgressMark:", - "animation:valueForProgress:", - "animationBlockingMode", - "animationCurve", - "animationDidEnd:", - "animationDidStop:", - "animationResizeTime:", - "animationShouldStart:", - "anyObject", - "appDidActivate:", - "appearanceChanged:", - "appendAttributedString:", - "appendBezierPath:", - "appendBezierPathWithArcFromPoint:toPoint:radius:", - "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:", - "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:", - "appendBezierPathWithGlyphs:count:inFont:", - "appendBezierPathWithOvalInRect:", - "appendBezierPathWithPoints:count:", - "appendBezierPathWithRect:", - "appendBytes:length:", - "appendCharacter:", - "appendChild:", - "appendClause:forKeyPath:allowToMany:", - "appendClause:forKeyPathExpression:allowToMany:", - "appendClause:forProperty:keypath:", - "appendData:", - "appendDisplayedNode:identifier:title:displaysChildren:", - "appendElementClassDeclarationToAETEData:", - "appendEnumerationDeclarationToAETEData:", - "appendFormat:", - "appendJoinClauseToSQL", - "appendLimitClauseToSQL:", - "appendObjectClassDeclarationToAETEData:", - "appendOrderByClauseToSQL", - "appendParameterDeclarationsToAETEData:", - "appendPropertyDeclarationToAETEData:", - "appendPropertyDeclarationsToAETEData:", - "appendReceivedData:fromDataSource:", - "appendRecordTypeDeclarationsToAETEData:", - "appendSQL:", - "appendSelectListToSQL", - "appendSelectableScopeLocationNode:", - "appendString:", - "appendSuiteDeclarationsToAETEData:", - "appendTransform:", - "appendWhereClause:", - "appendWhereClauseToSQL", - "appleEventClassCode", - "appleEventCode", - "appleEventCodeForKey:", - "appleEventCodeForReturnType", - "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", - "applicationName", - "applicationOpenUntitledFile:", - "applicationShouldHandleReopen:hasVisibleWindows:", - "applicationShouldOpenUntitledFile:", - "applicationShouldTerminate:", - "applicationShouldTerminateAfterLastWindowClosed:", - "appliesImmediately", - "apply:", - "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:", - "archiver:didEncodeObject:", - "archiver:willEncodeObject:", - "archiver:willReplaceObject:withObject:", - "archiverDidFinish:", - "archiverWillFinish:", - "areCursorRectsEnabled", - "arePlugInsEnabled", - "areScrollbarsVisible", - "areToolbarsVisible", - "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:", - "arguments", - "arrangeInFront:", - "arrangeObjects:", - "arrangedObjects", - "array", - "arrayByAddingObject:", - "arrayByAddingObjects:count:", - "arrayByAddingObjectsFromArray:", - "arrayByExcludingObjectsInArray:", - "arrayByExcludingObjectsInArray:identical:", - "arrayForKey:", - "arrayForOptionalSubelementName:", - "arrayOrNumberFromResolutions:andValues:withCount:", - "arrayRepresentation", - "arrayWithArray:", - "arrayWithArray:copyItems:", - "arrayWithCapacity:", - "arrayWithContentsOfFile:", - "arrayWithIFURLsWithTitlesPboardType", - "arrayWithIndexes:", - "arrayWithObject:", - "arrayWithObjects:", - "arrayWithObjects:count:", - "arrayWithRange:", - "arrayWithRanges:count:", - "arrowCursor", - "arrowPosition", - "asRef", - "ascender", - "ascending", - "ascent", - "aspectRatio", - "assignValuesForInsertedObject:", - "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:", - "atomAttachmentCell", - "attachColorList:", - "attachColorList:systemList:makeSelected:", - "attachPopUpWithFrame:inView:", - "attachSubmenuForItemAtIndex:", - "attachToolbarToColorPanel:", - "attachedListDictionary", - "attachedMenu", - "attachedMenuView", - "attachedSheet", - "attachedViewFrameDidChange:", - "attachment", - "attachmentCell", - "attachmentMenu", - "attachmentSizeForGlyphAtIndex:", - "attemptOverwrite:", - "attemptRecoveryFromError:optionIndex:", - "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:", - "attemptRetryAfter3xxResponse", - "attribute:atIndex:effectiveRange:", - "attribute:atIndex:longestEffectiveRange:inRange:", - "attributeColumnDefinitions", - "attributeColumns", - "attributeDescriptorForKeyword:", - "attributeForLocalName:URI:", - "attributeForName:", - "attributeKeys", - "attributeMappings", - "attributeType", - "attributeTypeForXMLInfo:", - "attributeValueClassName", - "attributeValueForSlot:", - "attributedAlternateTitle", - "attributedString", - "attributedStringForNil", - "attributedStringForNotANumber", - "attributedStringForObjectValue:withDefaultAttributes:", - "attributedStringForZero", - "attributedStringFrom:startOffset:to:endOffset:", - "attributedStringValue", - "attributedStringWithAttachment:", - "attributedStringWithHTML:documentAttributes:", - "attributedStringWithHTML:useEncoding:documentAttributes:", - "attributedSubstringForMarkedRange", - "attributedSubstringFromRange:", - "attributedTitle", - "attributes", - "attributesAtEndOfGroup", - "attributesAtIndex:effectiveRange:", - "attributesAtIndex:effectiveRange:inRange:", - "attributesAtIndex:longestEffectiveRange:inRange:", - "attributesAtPath:traverseLink:", - "attributesByName", - "attributesForExtraLineFragment", - "attributesWithStat:", - "authenticateComponents:withData:", - "authenticateWithDelegate:", - "authenticationDataForComponents:", - "authenticationMethod", - "autoenablesItems", - "automaticallyNotifiesObserversForKey:", - "automaticallyPreparesContent", - "autorecalculatesKeyViewLoop", - "autorelease", - "autorepeat", - "autoresizesAllColumnsToFit", - "autoresizesSubviews", - "autoresizingMask", - "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:", - "autosaveName", - "autosaveTableColumns", - "autosavedContentsFileURL", - "autosavesConfiguration", - "autosavingFileType", - "autoscroll:", - "autosizesCells", - "autovalidates", - "availableBindings", - "availableColorLists", - "availableData", - "availableFontFamilies", - "availableFonts", - "availableLanguageContextNames", - "availableMembersOfFontFamily:", - "availableProfiles", - "availableResourceData", - "availableTypeFromArray:", - "average:", - "avoidsEmptySelection", - "awake", - "awakeAfterUsingCoder:", - "awakeFromFetch", - "awakeFromInsert", - "awakeFromNib", - "backForwardList", - "backItem", - "backListCount", - "backListWithLimit:", - "background", - "backgroundColor", - "backgroundEdgeColor", - "backgroundLoadDidFailWithReason:", - "backingType", - "base64DecodeData:", - "baseAffineTransform", - "baseGetter", - "baseSetter", - "baseSpecifier", - "baseURL", - "baseWritingDirection", - "baseline", - "baselineLocation", - "baselineOffsetInLayoutManager:glyphIndex:", - "becomeFirstResponder", - "becomeKeyWindow", - "becomeMainWindow", - "becomeMultiThreaded:", - "becomeSingleThreaded:", - "becomesKeyOnlyIfNeeded", - "beginConstructionWithSuiteRegistry:", - "beginDataLoad", - "beginDocument", - "beginDocumentWithTitle:", - "beginEditing", - "beginLayoutChange", - "beginLineWithGlyphAtIndex:", - "beginLoadInBackground", - "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:", - "beginUsingMenuFormRepresentation:", - "bestLocationRep", - "bestLocationRep:matchesBestLocationRep:", - "bestLocationRepFromURL:", - "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:", - "bestRepresentationForDevice:", - "bestVisualFrameSizeForCharacterCount:", - "bezelStyle", - "bezierPath", - "bezierPathWithOvalInRect:", - "bezierPathWithRect:", - "bidiProcessingEnabled", - "binaryCollator", - "binaryOperatorForSelector", - "bind:toObject:withKeyPath:options:", - "bindHIViewToNSView:nsView:", - "bindVariables", - "binderClassesForObject:", - "binderClassesSuperseded", - "binderSpecificFlagAtIndex:", - "binders", - "binding", - "bindingCategory", - "bindingRunsAlerts:", - "bindingsForObject:", - "bitmapData", - "bitmapFormat", - "bitmapRepresentation", - "bitsPerPixel", - "bitsPerSample", - "blackColor", - "blackComponent", - "blendedColorWithFraction:ofColor:", - "blue", - "blueColor", - "blueComponent", - "blueControlTintColor", - "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", - "boundsForButtonCell:", - "boundsForTextCell:", - "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:", - "boundsRectForContentRect:inRect:textContainer:characterRange:", - "boundsRectForTextBlock:atIndex:effectiveRange:", - "boundsRectForTextBlock:glyphRange:", - "boxType", - "branchImage", - "breakConnection", - "breakLineAtIndex:", - "breakLock", - "bridgeForDOMDocument:", - "bridgeForView:", - "brightColor", - "brightnessComponent", - "broadcast", - "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:", - "browserDidScroll:", - "browserWillScroll:", - "buddhistCalendar", - "bufferingSize", - "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:", - "buildAlertStyle:title:message:first:second:third:oldStyle:args:", - "buildFilterCache", - "buildHTTPRequest", - "buildOrderByClauseWithSortDescriptors:", - "buildWhereClauseForRow:", - "buildWhereClauseWithSelectPredicate:", - "builderForClass:", - "builtInPlugInsPath", - "bundle", - "bundleForClass", - "bundleForClass:", - "bundleIdentifier", - "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", - "cStringLength", - "cStringUsingEncoding:", - "cache", - "cacheDepthMatchesImageDepth", - "cacheInsertStatement:", - "cacheMiniwindowTitle:guess:", - "cachePolicy", - "cacheRect:", - "cacheStringImage:whiteText:", - "cachedChildren", - "cachedChildrenForExpandedNode:", - "cachedChildrenForNode:", - "cachedDrawingImage", - "cachedFontFromFamily:traits:size:", - "cachedHandleForURL:", - "cachedResponse", - "cachedResponseForRequest:", - "cachedResponseMustBeRevalidated", - "cachedResponseRevalidated", - "cachedSQLiteStatement", - "calcDrawInfo:", - "calcSize", - "calculateFigureCenter:", - "calculateFigureSize:", - "calculatesAllSizes", - "calendar", - "calendarDate", - "calendarFormat", - "canAdd", - "canAddBinding:toController:", - "canAddChild", - "canApplyValueTransformer:toBinding:", - "canBeCompressedUsing:", - "canBeConvertedToEncoding:", - "canBeDisabled", - "canBecomeKeyView", - "canBecomeKeyWindow", - "canBecomeMainWindow", - "canBrowseNode:allowInteraction:", - "canCachePage", - "canChooseDirectories", - "canChooseFiles", - "canChooseNode:", - "canClickDisabledFiles", - "canCloseDocument", - "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", - "canConnect", - "canCreateCollapsedSpecifierFromAbsolutePositionRecord:", - "canCreateCollapsedSpecifierFromRangeRecord:", - "canCreateDirectories", - "canCycle", - "canDecodeDownloadHeaderData:", - "canDragRowsWithIndexes:atPoint:", - "canDraw", - "canGoBack", - "canGoBackOrForward:", - "canGoForward", - "canHandleRequest:", - "canHide", - "canHighlightNode:", - "canIgnorePopulatingObject:", - "canIgnoreSettingMinAndMaxForObject:", - "canImportData:", - "canInitWithData:", - "canInitWithPasteboard:", - "canInitWithRequest:", - "canInitWithURL:", - "canInsert", - "canInsertChild", - "canMakeTextLarger", - "canMakeTextSmaller", - "canPaste", - "canPopulateWithPlaceholders", - "canProvideDocumentSource", - "canRedo", - "canRemove", - "canResumeDownloadDecodedWithEncodingMIMEType:", - "canSearch", - "canSelectHiddenExtension", - "canSelectNext", - "canSelectPrevious", - "canShowFile:", - "canShowMIMEType:", - "canShowMIMETypeAsHTML:", - "canStart", - "canStoreColor", - "canSupportMinAndMaxForObject:", - "canTakeFindStringFromSelection", - "canTargetLoadInFrame:", - "canUndo", - "cancel", - "cancel:", - "cancelAddCredentialsToRetryHTTPRequest:", - "cancelAuthentication:", - "cancelAuthenticationChallenge:", - "cancelButtonRectForBounds:", - "cancelContentPolicy", - "cancelDelayedUpdate", - "cancelIncrementalLoadForImage:", - "cancelInput:conversation:", - "cancelLoadAndDestroyStreamWithError:", - "cancelLoadInBackground", - "cancelLoadWithError:", - "cancelOperation:", - "cancelPerformSelector:target:argument:", - "cancelPreviousPerformRequestsWithTarget:", - "cancelPreviousPerformRequestsWithTarget:selector:object:", - "cancelPreviouslScheduleRolloverWindow", - "cancelUserAttentionRequest:", - "cancelWithError:", - "cancelledError", - "canonicalHTTPURLForURL:", - "canonicalRequestForRequest:", - "canonicalXMLStringPreservingComments:", - "canonicalizeHTTPEncodingString", - "capHeight", - "capabilityMask", - "capacity", - "capitalizedLetterCharacterSet", - "capitalizedString", - "captionTextField", - "carbonHICommandIDFromActionSelector:", - "carbonNotificationProc", - "caretRectAtNode:offset:affinity:", - "cascadeTopLeftFromPoint:", - "caseInsensitiveCompare:", - "caseSensitive", - "castObject:toType:", - "catalogNameComponent", - "cell", - "cellAtIndex:", - "cellAtPoint:row:column:", - "cellAtPoint:row:column:loaded:", - "cellAtRow:column:", - "cellAtRow:column:loaded:", - "cellAttribute:", - "cellBackgroundColor", - "cellBaselineOffset", - "cellClass", - "cellForRow:column:tableView:", - "cellForRow:tableColumn:", - "cellFrameAtRow:column:", - "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:", - "cellMenuForSearchField", - "cellOrControlForObject:", - "cellPadding", - "cellPrototype", - "cellSize", - "cellSizeForBounds:", - "cellSpacing", - "cellWithTag:", - "cells", - "center", - "center:didAddObserver:name:object:", - "center:didRemoveObserver:name:object:", - "centerOverMainWindow", - "centerScanRect:", - "centerSelectionInVisibleArea", - "centerSelectionInVisibleArea:", - "centerTabMarkerWithRulerView:location:", - "centerTruncateString:toWidth:withFont:", - "cgsRegionObj", - "changeAttributes:", - "changeBaseWritingDirection:", - "changeColor:", - "changeCount", - "changeCurrentDirectoryPath:", - "changeDestinationToPoint:", - "changeDestinationToRect:", - "changeDisplayedColorName:", - "changeDocumentBackgroundColor:", - "changeFileAttributes:atPath:", - "changeFont:", - "changeFontTrait:", - "changeInLength", - "changeOptionsPanelSettings:", - "changeSpelling:", - "changeToolbarDisplayMode:", - "changeWillBeUndone:", - "changeWindowFrameSizeByDelta:display:animate:", - "changeWindowsItem:title:filename:", - "charIndex", - "charRefToUnicode:", - "charValue", - "character:hasNumericProperty:", - "character:hasProperty:", - "characterAtIndex:", - "characterCollection", - "characterEncoding", - "characterIdentifier", - "characterIndexForGlyphAtIndex:", - "characterIndexForPoint:", - "characterIsMember:", - "characterRange", - "characterRangeForGlyphRange:actualGlyphRange:", - "characterSetWithBitmapRepresentation:", - "characterSetWithCharactersInString:", - "characterSetWithContentsOfFile:", - "characterSetWithName:", - "characterSetWithRange:", - "characters", - "charactersIgnoringModifiers", - "charactersToBeSkipped", - "cheapBlur", - "cheapBlurROI:::", - "check:", - "checkContentPolicyForResponse:", - "checkForAuthenticationFailureInHTTPResponse:withURL:", - "checkForRemovableMedia", - "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:", - "checkSpaceForParts", - "checkSpelling:", - "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:", - "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:", - "childAtIndex:", - "childCount", - "childFrames", - "childGlyphStorageWithGlyphRange:cleanCopy:", - "childItemWithName:", - "childOfNode:atIndex:", - "childStore:didForgetObjectsWithObjectIDs:", - "childStores", - "childWindows", - "children", - "childrenChanged", - "childrenKeyPath", - "chineseCalendar", - "chooseButtonPressed:", - "class", - "classCode", - "classDescription", - "classDescriptionForClass:", - "classDescriptionForDestinationKey:", - "classDescriptionForEntityName:", - "classDescriptionForKey:", - "classDescriptionForKeyPath:", - "classDescriptionWithAppleEventCode:", - "classDescriptions", - "classDescriptionsByName", - "classDescriptionsInSuite:", - "classFallbacksForKeyedArchiver", - "classForArchiver", - "classForClassName:", - "classForCoder", - "classForKeyedArchiver", - "classForKeyedUnarchiver", - "classForPortCoder", - "className", - "classNameDecodedForArchiveClassName:", - "classNameForClass:", - "classNamed:", - "classPropertyKeys", - "cleanUpAfterDragOperation", - "cleanUpForRetry", - "cleanUpOperation", - "clear", - "clear:", - "clearAllModelObjectObserving", - "clearAsMainCarbonMenuBar", - "clearAttributesCache", - "clearCaches", - "clearChildren", - "clearClipping", - "clearColor", - "clearControlTintColor", - "clearController", - "clearConversationRequest", - "clearCurrentContext", - "clearCurrentValues", - "clearDrawable", - "clearFilterCache", - "clearGLContext", - "clearGlyphCache", - "clearMarkedRange", - "clearNewAvailableData", - "clearProperties", - "clearRecentDocuments:", - "clearRolloverTrackingRect", - "clearStartAnimation", - "clearStopAnimation", - "clearTableParameters", - "clearsFilterPredicateOnInsertion", - "clickCount", - "clickableContentRectForBounds:", - "clicked", - "clickedColumn", - "clickedOnLink:atIndex:", - "clickedRow", - "client", - "clientView", - "clientWrapperWithRealClient:", - "clip:", - "clipForDrawingRow:column:", - "clipFrameChanged:", - "clipRect:", - "clipToQDRegion:", - "clippedItems", - "clipviewBoundsChangedNotification:", - "clockPreferencesChanged:", - "cloneRange", - "close", - "close:", - "closeAllDocuments", - "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:", - "closeButton", - "closeFile", - "closePath", - "closeResourceFile:", - "closeSpellDocumentWithTag:", - "closeURL", - "closeWidgetInView:withButtonID:action:", - "closeWindowSoon", - "closedHandCursor", - "closestTickMarkValueToValue:", - "coalesceAffectedRange:replacementRange:selectedRange:text:", - "coalesceInTextView:affectedRange:replacementRange:", - "coalesceTextDrawing", - "cocoaSubVersion", - "cocoaVersion", - "code", - "coerceArray:toColor:", - "coerceColor:toArray:", - "coerceColor:toData:", - "coerceColor:toString:", - "coerceData:toColor:", - "coerceData:toTextStorage:", - "coerceString:toColor:", - "coerceString:toTextStorage:", - "coerceTextStorage:toData:", - "coerceTextStorage:toString:", - "coerceToDescriptorType:", - "coerceValue:forKey:", - "coerceValue:toClass:", - "collapseItem:", - "collapseItem:collapseChildren:", - "collapsed", - "collatorElementWithName:", - "collatorWithName:", - "collectResources", - "color", - "colorAtIndex:filtered:", - "colorFromPasteboard:", - "colorFromPoint:", - "colorList", - "colorListChanged:", - "colorListNamed:", - "colorMatrixBiasKernel", - "colorNameComponent", - "colorPanel", - "colorPanelColorChanged:", - "colorPanelColorDidChange:", - "colorPanelDidSelectColorPicker:", - "colorProfile", - "colorSpace", - "colorSpaceForColorSpaceName:", - "colorSpaceModel", - "colorSpaceName", - "colorSwathesChangedInAnotherApplicationNotification:", - "colorSyncData", - "colorSyncProfile", - "colorTable", - "colorUsingColorSpace:", - "colorUsingColorSpaceName:", - "colorUsingColorSpaceName:device:", - "colorWithAlphaComponent:", - "colorWithCalibratedHue:saturation:brightness:alpha:", - "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:", - "columnDefinitions", - "columnName", - "columnOfMatrix:", - "columnResizeButtonImage", - "columnResizeButtonRect", - "columnResizingType", - "columnSpan", - "columnWidthForColumnContentWidth:", - "columnWithIdentifier:", - "columnsAutosaveName", - "columnsInRect:", - "columnsToFetch", - "comboBox:completedString:", - "comboBox:indexOfItemWithStringValue:", - "comboBox:objectValueForItemAtIndex:", - "comboBoxCell:completedString:", - "comboBoxCell:indexOfItemWithStringValue:", - "comboBoxCell:objectValueForItemAtIndex:", - "comboBoxTextDidEndEditing:", - "command", - "commandClassName", - "commandDescription", - "commandDescriptionWithAppleEventClass:andAppleEventCode:", - "commandDescriptions", - "commandDescriptionsByName", - "commandDescriptionsInSuite:", - "commandDisplay", - "commandName", - "commandWithEditCommand:", - "commands", - "comment", - "commentURL", - "commitChanges:", - "commitEditing", - "commitEditingWithDelegate:didCommitSelector:contextInfo:", - "commitTransaction", - "committedSnapshotForObject:", - "commonAncestorContainer", - "compare:", - "compare:options:", - "compare:options:range:", - "compare:options:range:locale:", - "compareBoundaryPoints::", - "compareGeometry:", - "compareGeometryInWindowCoordinates:", - "compareObject:toObject:", - "compareObjectValue:toObjectValue:", - "compareSelector", - "comparisonPredicateModifier", - "compileAndReturnError:", - "complete:", - "completedSpoolToFile", - "completedString:", - "completes", - "completionDelay", - "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:", - "completionsForPartialWordRange:indexOfSelectedItem:", - "components", - "componentsJoinedByString:", - "componentsSeparatedByString:", - "compositeToPoint:fromRect:operation:", - "compositeToPoint:fromRect:operation:fraction:", - "compositeToPoint:operation:", - "compositeToPoint:operation:fraction:", - "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:", - "conditionalBehaviorOffByDefault:", - "conditionallySetsEditable", - "conditionallySetsEnabled", - "conditionallySetsHidden", - "configurationDictionary", - "configurationName", - "configurations", - "configureForActiveState", - "configureForAllowsExpandingMultipleDirectories:", - "configureForAllowsMultipleSelection:", - "configureForCalculatesAllSizes:", - "configureForCanChooseDirectories:", - "configureForCanChooseFiles:", - "configureForCanClickDisabledFiles:", - "configureForDisplayMode:andSizeMode:", - "configureForDisplayedFileProperties:", - "configureForInactiveState", - "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:", - "configureForRolloverTrackingIfNecessary", - "configureForRolloverTrackingIfNecessaryForClipViewFrameChange", - "configureForShowsPreviews:", - "configureForSortedByFileProperty:ascending:caseSensitive:", - "configureForTreatsDirectoryAliasesAsDirectories:", - "configureForTreatsFilePackagesAsDirectories:", - "configurePersistentStoreCoordinatorForURL:ofType:error:", - "confirmCloseSheetIsDone:returnCode:contextInfo:", - "conformsTo:", - "conformsToProtocol:", - "connect", - "connectedToInternet:", - "connection", - "connection:didCancelAuthenticationChallenge:", - "connection:didFailWithError:", - "connection:didReceiveAuthenticationChallenge:", - "connection:didReceiveData:", - "connection:didReceiveData:lengthReceived:", - "connection:didReceiveResponse:", - "connection:handleRequest:", - "connection:shouldMakeNewConnection:", - "connection:willCacheResponse:", - "connection:willSendRequest:redirectResponse:", - "connectionDidFinishLoading:", - "connectionForProxy", - "connectionWasBroken:", - "connectionWasEstablished:", - "connectionWithReceivePort:sendPort:", - "connectionWithRegisteredName:host:", - "connectionWithRegisteredName:host:usingNameServer:", - "connectionsForKey:", - "constantValue", - "constrainFrameRect:toScreen:", - "constrainResizeEdge:withDelta:elapsedTime:", - "constrainScrollPoint:", - "constraintDefinitions", - "containerClassDescription", - "containerComponent", - "containerIsObjectBeingTested", - "containerIsRangeContainerObject", - "containerNode", - "containerNodeWithChildren:", - "containerSize", - "containerSpecifier", - "containsAttachments", - "containsIndex:", - "containsIndexesInRange:", - "containsItemForURLLatin1:length:", - "containsItemForURLString:", - "containsItemForURLUnicode:length:", - "containsObject:", - "containsObjectIdenticalTo:", - "containsPoint:", - "containsPort:forMode:", - "containsRect:", - "containsURL:", - "containsValueForKey:", - "content", - "contentAlpha", - "contentBinder", - "contentCountWithEditedMode:", - "contentDocument", - "contentFill", - "contentFrame", - "contentKind", - "contentMaxSize", - "contentMinSize", - "contentObjectKey", - "contentObjectWithEditedMode:contentIndex:", - "contentRect", - "contentRectForFrameRect:", - "contentRectForFrameRect:styleMask:", - "contentSize", - "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:", - "contentValueKey", - "contentValueWithEditedMode:contentIndex:", - "contentView", - "contentWidth", - "contentWidthValueType", - "contentsAtPath:", - "contentsEqualAtPath:andPath:", - "context", - "contextHelpForKey:", - "contextHelpForObject:", - "contextID", - "contextMenuItemsForElement:", - "contextWithBitmap:rowBytes:bounds:format:options:", - "contextWithCGContext:", - "contextWithCGContext:options:", - "contextWithCGLContext:pixelFormat:options:", - "contextWithOptions:", - "continue", - "continueAfterBytesAvailable", - "continueAfterContentPolicy:", - "continueAfterContentPolicy:response:", - "continueAfterEndEncountered", - "continueAfterNavigationPolicy:formState:", - "continueBeginLoadInBackgroundAfterCreatingHTTPRequest", - "continueHeaderReadAfterFailureResponse", - "continueTracking:at:inView:", - "continueTrackingWithEvent:", - "continueWithoutCredentialForAuthenticationChallenge:", - "continuouslyUpdatesValue", - "control", - "control:didFailToFormatString:errorDescription:", - "control:didFailToFormatString:errorDescription:inFrame:", - "control:didFailToValidatePartialString:errorDescription:", - "control:didFailToValidatePartialString:errorDescription:inFrame:", - "control:isValidObject:", - "control:isValidObject:inFrame:", - "control:textShouldBeginEditing:", - "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", - "controlCharacterSet", - "controlColor", - "controlContentFontOfSize:", - "controlDarkShadowColor", - "controlDrawsSelectionHighlights", - "controlFillColor", - "controlHighlightColor", - "controlLightHighlightColor", - "controlMenu:", - "controlPointBounds", - "controlShadowColor", - "controlSize", - "controlTextColor", - "controlTextDidBeginEditing:", - "controlTextDidBeginEditing:inFrame:", - "controlTextDidChange:", - "controlTextDidChange:inFrame:", - "controlTextDidEndEditing:", - "controlTextDidEndEditing:inFrame:", - "controlView", - "controller", - "controller:didChangeToFilterPredicate:", - "controller:didChangeToSelectionIndexPaths:", - "controller:didChangeToSelectionIndexes:", - "controller:didChangeToSortDescriptors:", - "controllerForBinding:", - "controlsInForm:", - "conversationIdentifier", - "conversationRequest", - "convertAttributes:", - "convertBaseToScreen:", - "convertCString:toUnsignedInt64:withBase:", - "convertFont:", - "convertFont:toFace:", - "convertFont:toFamily:", - "convertFont:toHaveTrait:", - "convertFont:toNotHaveTrait:", - "convertFont:toSize:", - "convertPoint:fromView:", - "convertPoint:toView:", - "convertRect:fromView:", - "convertRect:toView:", - "convertScreenToBase:", - "convertSize:fromView:", - "convertSize:toView:", - "convertStringToUChar:", - "convertToDictionary", - "convertToRGBA:", - "convertType:data:to:inPasteboard:usingFilter:", - "convertWeight:ofFont:", - "convolveROI:forRect:", - "cookieAcceptPolicy", - "cookieWithProperties:", - "cookieWithV0Spec:forURL:locationHeader:", - "cookies", - "cookiesEnabled", - "cookiesForURL:", - "cookiesMatchingDomain:path:secure:", - "cookiesWithResponseHeaderFields:forURL:", - "copiesOnScroll", - "copy", - "copy:", - "copyBindingsFromObject:toObject:", - "copyCachedInstance", - "copyDOMNode:copier:", - "copyDOMTree:", - "copyDropDirectory", - "copyFont:", - "copyFromZone:", - "copyIcon", - "copyImageToClipboard:", - "copyLinkToClipboard:", - "copyOfCalendarDate", - "copyPath:toPath:handler:", - "copyPreviewIcon", - "copyRenderNode:copier:", - "copyRenderTree:", - "copyRuler:", - "copySerializationInto:", - "copyToObject:", - "copyWithZone:", - "copyright", - "cornerView", - "correlation", - "correlationTableName", - "count", - "countFiltered:", - "countForIndexPath:", - "countForNode:", - "countForObject:", - "countKeyPath", - "countOfCachedChildrenForNode:", - "coveredCharacterCache", - "coveredCharacterCacheData", - "coveredCharacterSet", - "crayonAtIndex:", - "crayonClosestToIndex:", - "crayonToLeft", - "crayonToLeftOfCrayon:", - "crayonToRight", - "crayonToRightOfCrayon:", - "crayons", - "createAdapterOperationsForDatabaseOperation:", - "createAndCacheRowHeightSumsIfNecessary", - "createCGImage:", - "createCGImage:format:", - "createCGImage:fromRect:format:", - "createCMYKColorSpace", - "createCSSStyleDeclaration", - "createCTTypesetter", - "createChildFrameNamed:withURL:renderPart:allowsScrolling:marginWidth:marginHeight:", - "createClassDescription", - "createCommandInstance", - "createCommandInstanceWithZone:", - "createConnection", - "createContext", - "createConversationForConnection:", - "createCopy:", - "createDictHashTable:", - "createDirectoryAtPath:attributes:", - "createDocumentFragment", - "createElement:", - "createElementContent:", - "createElementContentFromString:", - "createFTPReadStream", - "createFileAtPath:contents:attributes:", - "createGrayColorSpace", - "createKHTMLViewWithNSView:marginWidth:marginHeight:", - "createKeyValueBindingForKey:typeMask:", - "createMDQueryNodeRefIfNecessary", - "createMetadata", - "createNamedNodeFromNode:reader:", - "createPredicateForFetchFromPredicate:", - "createRGBColorSpace", - "createRandomKey:", - "createRange", - "createRealObject", - "createSchema", - "createSharedAdapter", - "createSharedBridge", - "createSharedFactory", - "createSharedGenerator", - "createStream:", - "createSymbolicLinkAtPath:pathContent:", - "createTablesForEntities:", - "createUniqueKey:", - "createWindowWithURL:frameName:", - "createsSortDescriptor", - "creationDate", - "credentialWithKeychainItem:", - "credentialWithUser:password:persistence:", - "credentialsForProtectionSpace:", - "credits", - "criticalValue", - "crosshairCursor", - "cssText", - "cssValueType", - "ctFontRef", - "cubeImage", - "current", - "currentAppleEvent", - "currentBrowsingNodePath", - "currentButtonCell", - "currentButtonClicked:", - "currentButtonState", - "currentClipRect", - "currentConstructionContext", - "currentContext", - "currentContextDrawingToScreen", - "currentCursor", - "currentDirectory", - "currentDirectoryNode", - "currentDirectoryPath", - "currentDocument", - "currentEditor", - "currentEvent", - "currentForm", - "currentFrame", - "currentFrameDuration", - "currentHandler", - "currentHost", - "currentInputContext", - "currentInputManager", - "currentItem", - "currentLocalSearchScopeNode", - "currentLocale", - "currentMode", - "currentOperation", - "currentPage", - "currentParagraphStyle", - "currentPluginView", - "currentPoint", - "currentProgress", - "currentReplyAppleEvent", - "currentResolvedDirectoryNode", - "currentRunLoop", - "currentSuiteAppleEventCode", - "currentSuiteTerminology", - "currentTaskDictionary", - "currentTextContainer", - "currentThread", - "currentTypeSelectDirectoryNode", - "currentValue", - "currentVoiceIdentifier", - "currentWindow", - "cursiveFontFamily", - "curveToPoint:controlPoint1:controlPoint2:", - "customAttributes", - "customTextEncodingName", - "customizationPaletteIsRunning", - "cut:", - "cyanColor", - "cyanComponent", - "cycleToNextInputKeyboardLayout:", - "cycleToNextInputLanguage:", - "cycleToNextInputScript:", - "cycleToNextInputServerInLanguage:", - "darkGrayColor", - "dashboardRegions", - "dashboardRegionsChanged:", - "data", - "data1", - "data2", - "dataCell", - "dataCellForRow:", - "dataForKey:", - "dataForObjectID:", - "dataForObjectID:withContext:", - "dataForPPI:", - "dataForResolutionData:", - "dataForType:", - "dataForType:fromPasteboard:", - "dataFromPropertyList:format:errorDescription:", - "dataFromRange:documentAttributes:error:", - "dataOfType:error:", - "dataRepresentation", - "dataRepresentationOfType:", - "dataSource", - "dataSourceUpdated:", - "dataStampForTriplet:littleEndian:", - "dataUsingEncoding:", - "dataUsingEncoding:allowLossyConversion:", - "dataWithBytes:length:", - "dataWithBytesNoCopy:length:", - "dataWithBytesNoCopy:length:freeWhenDone:", - "dataWithCapacity:", - "dataWithContentsOfFile:", - "dataWithContentsOfFile:options:error:", - "dataWithContentsOfMappedFile:", - "dataWithContentsOfURL:", - "dataWithContentsOfURL:options:error:", - "dataWithData:", - "dataWithEPSInsideRect:", - "dataWithLength:", - "dataWithPDFInsideRect:", - "database", - "databaseOperationForGlobalID:", - "databaseOperationForObject:", - "databaseOperator", - "databaseUUID", - "databaseVersion", - "date", - "dateByAddingYears:months:days:hours:minutes:seconds:", - "dateFormat", - "datePickerCell:validateProposedDateValue:timeInterval:", - "datePickerElements", - "datePickerMode", - "datePickerStyle", - "dateValue", - "dateWithNaturalLanguageString:", - "dateWithNaturalLanguageString:date:locale:", - "dateWithNaturalLanguageString:locale:", - "dateWithString:calendarFormat:locale:", - "dateWithTimeIntervalSince1970:", - "dateWithTimeIntervalSinceNow:", - "dateWithTimeIntervalSinceReferenceDate:", - "dateWithYear:month:day:hour:minute:second:timeZone:", - "dayOfMonth", - "dayOfWeek", - "dayOfYear", - "dbSnapshot", - "deactivate", - "dealloc", - "deallocAllExpandedNodes", - "deallocateCFNetworkResources", - "deallocatePayloadForObjectID:", - "debugDefault", - "debugDescription", - "decObservationCount", - "decimalDigitCharacterSet", - "decimalNumberByAdding:withBehavior:", - "decimalNumberByDividingBy:", - "decimalNumberByDividingBy:withBehavior:", - "decimalNumberByMultiplyingBy:withBehavior:", - "decimalNumberByMultiplyingByPowerOf10:withBehavior:", - "decimalNumberByRaisingToPower:withBehavior:", - "decimalNumberByRoundingAccordingToBehavior:", - "decimalNumberBySubtracting:withBehavior:", - "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", - "decimalNumberWithDecimal:", - "decimalNumberWithString:", - "decimalNumberWithString:locale:", - "decimalSeparator", - "decimalTabMarkerWithRulerView:location:", - "decimalValue", - "declareTypes:owner:", - "decodeAllIntoBuffer:size:useZeroBytesForCRC:", - "decodeArrayOfObjCType:count:at:", - "decodeBoolForKey:", - "decodeBytesForKey:returnedLength:", - "decodeBytesWithReturnedLength:", - "decodeClassName:asClassName:", - "decodeData:", - "decodeDataObject", - "decodeDoubleForKey:", - "decodeDownloadData:dataForkData:resourceForkData:", - "decodeDownloadHeader", - "decodeDownloadHeader:headerLength:modificationTime:filename:", - "decodeFloatForKey:", - "decodeForkWithData:count:CRCCheckFlag:", - "decodeInt32ForKey:", - "decodeInt64ForKey:", - "decodeIntForKey:", - "decodeIntoBuffer:size:useZeroBytesForCRC:", - "decodeNXColor", - "decodeObject", - "decodeObjectForKey:", - "decodePoint", - "decodePointForKey:", - "decodePortObject", - "decodePropertyList", - "decodeRect", - "decodeRectForKey:", - "decodeReleasedProxies:", - "decodeRetainedObject", - "decodeReturnValueWithCoder:", - "decodeSize", - "decodeSizeForKey:", - "decodeValueOfObjCType:at:", - "decodeValuesOfObjCTypes:", - "decomposableCharacterSet", - "decomposedStringWithCanonicalMapping", - "decomposedStringWithCompatibilityMapping", - "decreaseUseCount", - "decrementButtonWithParent:", - "decrementRefCount", - "decrementRefCountForObjectID:", - "decrementSnapshotCountForGlobalID:", - "decryptComponents:", - "decryptWithDelegate:", - "deepNodeCopy:", - "deepPropertiesCopy:", - "deepSubnodeCopy:", - "deepestScreen", - "defaultAttachmentScaling", - "defaultBaselineOffsetForFont:", - "defaultBehavior", - "defaultButtonCell", - "defaultCStringEncoding", - "defaultCenter", - "defaultClassPath", - "defaultCollator", - "defaultCompletionDelay", - "defaultCredentialForProtectionSpace:", - "defaultDateFormatter", - "defaultDecimalNumberHandler", - "defaultDepthLimit", - "defaultFixedFontSize", - "defaultFlatness", - "defaultFocusRingType", - "defaultFontSize", - "defaultFormatterBehavior", - "defaultHandler", - "defaultIconSize", - "defaultIconWithSize:", - "defaultLabelFontAttribute", - "defaultLanguage", - "defaultLanguageCode", - "defaultLanguageContext", - "defaultLineCapStyle", - "defaultLineHeightForFont", - "defaultLineHeightForFont:", - "defaultLineJoinStyle", - "defaultLineWidth", - "defaultManager", - "defaultMappingGenerator", - "defaultMenu", - "defaultMiterLimit", - "defaultNamespaceForPrefix:", - "defaultNamespaceForURI:", - "defaultParagraphStyle", - "defaultPixelFormat", - "defaultPlaceholderForBinding:onObjectClass:", - "defaultPlaceholderForMarker:withBinding:", - "defaultPlaceholderLookupClassForBinding:object:", - "defaultPreferencesClass", - "defaultPrinter", - "defaultQueue", - "defaultShadowColor", - "defaultSortDescriptorPrototypeForTableColumn:", - "defaultStringDrawingTypesetterBehavior", - "defaultSubcontainerAttributeKey", - "defaultTabInterval", - "defaultTextColor", - "defaultTextColorWhenObjectValueIsUsed:", - "defaultTextEncodingName", - "defaultTimeZone", - "defaultTokenizingCharacterSet", - "defaultType", - "defaultTypesetterBehavior", - "defaultValue", - "defaultValueFontAttribute", - "defaultVoice", - "defaultWindingRule", - "defaultWritingDirectionForLanguage:", - "defaults", - "defaultsChanged:", - "deferSync", - "defersCallbacks", - "defersLoading", - "definition", - "delayedProcessGetInfoButtonClick:", - "delayedProcessLogonButtonClick:", - "delegate", - "delete:", - "deleteBackward:", - "deleteCharactersInRange:", - "deleteCookies:", - "deleteCorrelation:", - "deleteGlyphsInRange:", - "deleteImageTexture:name:userInfo:", - "deleteKeyPressed", - "deleteLastCharacter", - "deleteObject:", - "deleteObjectsInRange:", - "deleteRow:", - "deleteRows:atIndex:", - "deleteRule", - "deleteSelectionWithSmartDelete:", - "deletedObjects", - "deletesObjectsOnRemove", - "deliverResource", - "deliverResourceAfterDelay", - "deliverResult", - "deltaX", - "deltaY", - "deltaZ", - "deminiaturize:", - "depth", - "depthLimit", - "descender", - "descent", - "description", - "descriptionForClassMethod:", - "descriptionForInstanceMethod:", - "descriptionForMIMEType:", - "descriptionForMethod:", - "descriptionForOptionalSubelementName:", - "descriptionWithCalendarFormat:", - "descriptionWithCalendarFormat:locale:", - "descriptionWithCalendarFormat:timeZone:locale:", - "descriptionWithLocale:", - "descriptionWithLocale:indent:", - "descriptorAtIndex:", - "descriptorByTranslatingObject:ofType:inSuite:", - "descriptorForKeyword:", - "descriptorType", - "descriptorWithDescriptorType:bytes:length:", - "descriptorWithDescriptorType:data:", - "descriptorWithEnumCode:", - "descriptorWithInt32:", - "descriptorWithString:", - "descriptorWithTypeCode:", - "deselectAll", - "deselectAll:", - "deselectAllCells", - "deselectColumn:", - "deselectItemAtIndex:", - "deselectRow:", - "deselectSelectedCell", - "deselectText", - "deserializeAlignedBytesLengthAtCursor:", - "deserializeData:", - "deserializeIntAtCursor:", - "deserializeIntAtIndex:", - "deserializeInts:count:atCursor:", - "deserializeList:", - "deserializeListItemIn:at:length:", - "deserializeNewData", - "deserializeNewKeyString", - "deserializeNewList", - "deserializeNewObject", - "deserializeNewPList", - "deserializeNewString", - "deserializeObjectAt:ofObjCType:fromData:atCursor:", - "deserializePList:", - "deserializePListKeyIn:", - "deserializePListValueIn:key:length:", - "deserializePropertyListFromData:atCursor:mutableContainers:", - "deserializePropertyListFromData:mutableContainers:", - "deserializeString:", - "deserializer", - "destKey", - "destNode", - "destination", - "destinationAttributeName", - "destinationEntity", - "destinationEntityExternalName", - "destinationsForRelationship:", - "destroyAllPlugins", - "destroyContext", - "destroyStream:reason:", - "destroyStreamWithError:", - "detach", - "detachColorList:", - "detachInstanceInfo:", - "detachNewThreadSelector:toTarget:withObject:", - "detachQButton", - "detachQComboBox", - "detachQLineEdit", - "detachQScrollBar", - "detachQSlider", - "detachQTextEdit", - "detachSubmenu", - "detailedDescriptionForClass:", - "determineContentEncoding", - "determineErrorAndFail", - "determineHTTPEncodingFromString:", - "determineTransferEncoding", - "deviceCMYKColorSpace", - "deviceDescription", - "deviceGrayColorSpace", - "deviceID", - "deviceRGBColorSpace", - "dictionary", - "dictionaryForOptionalSubelementName:", - "dictionaryInfo:", - "dictionaryNesting:", - "dictionaryRepresentation", - "dictionaryWithCapacity:", - "dictionaryWithContentsOfFile:", - "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:pageCache:", - "didPostNotificationForNodeEventKind:notification:", - "didReceiveAuthenticationChallenge:", - "didReceiveData:lengthReceived:", - "didReceiveResponse:", - "didSave", - "didSendActionNotification:", - "didSetName:", - "didStart", - "didTurnIntoFault", - "differenceParameter:new:old:into:", - "directDataAvailable:", - "directDataComplete", - "directParameter", - "directory", - "directoryCanBeCreatedAtPath:", - "directoryContentsAtPath:", - "directoryContentsAtPath:matchingExtension:options:keepExtension:", - "disableCursorRects", - "disableDisplayPositing", - "disableFlush", - "disableFlushWindow", - "disableHeartBeating", - "disableKeyEquivalentForDefaultButtonCell", - "disableMakeHistory", - "disableUpdates", - "disabledControlTextColor", - "disabledWhenInactive", - "disappearingItemCursor", - "discardCursorRects", - "discardEditing", - "discardEventsMatchingMask:beforeEvent:", - "disconnect", - "dismissPopUp", - "dismissPopUp:", - "dispatch", - "dispatchEvent:", - "dispatchInvocation:", - "dispatchRawAppleEvent:withRawReply:handlerRefCon:", - "displaceROI:forRect:userInfo:", - "display", - "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:", - "displayIfNeeded", - "displayIfNeededIgnoringOpacity", - "displayIfNeededInRect:", - "displayIfNeededInRectIgnoringOpacity:", - "displayIgnoringOpacity", - "displayMode", - "displayName", - "displayNameAtPath:", - "displayNameForType:", - "displayPattern", - "displayRect:", - "displayRectIgnoringOpacity:", - "displayStateForNode:", - "displayString", - "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:", - "displayStringsForAttributes:includeBoldItalic:", - "displayStringsForParagraphStyle:", - "displayToolTip:", - "displayValueForObjectValue:", - "displayableString", - "displayedFileProperties", - "displayedStringsArray", - "displayedTitle", - "displaysEnabledAtRow:", - "displaysTokenWhileEditing", - "displaysTooltips", - "displaysWhenScreenProfileChanges", - "disposeGlyphStack", - "dissolveToPoint:fraction:", - "dissolveToPoint:fromRect:fraction:", - "distantFuture", - "distantPast", - "divide:by:", - "dividerThickness", - "doCalcDrawInfo:", - "doClick:", - "doCommandBySelector:", - "doCommandBySelector:client:", - "doCompletion", - "doDoubleClick:", - "doFileCompletion:isAutoComplete:reverseCycle:", - "doProgressiveLoad", - "doProgressiveLoadHeader", - "doProgressiveLoadImage", - "doQueuedWork", - "doRegexForString:pattern:flags:", - "docFormatData", - "dockTitleIsGuess", - "document", - "documentAttribute:", - "documentAttributes", - "documentClassForType:", - "documentClassNames", - "documentContentKind", - "documentCursor", - "documentEdited", - "documentElement", - "documentForFileName:", - "documentForURL:", - "documentForWindow:", - "documentFragmentForDocument:", - "documentFragmentWithMarkupString:baseURLString:", - "documentFragmentWithText:", - "documentRect", - "documentRef", - "documentSource", - "documentState", - "documentView", - "documentViewAtWindowPoint:", - "documentVisibleRect", - "documents", - "doesContain:", - "doesNotRecognize:", - "doesNotRecognizeSelector:", - "domain", - "done", - "doneLoading", - "doneProcessingData", - "doneSendingPopUpAction:", - "doneTrackingMenu:", - "doubleAction", - "doubleClickAtIndex:", - "doubleClickAtIndex:inRange:", - "doubleClickHandler", - "doubleClickInString:atIndex:useBook:", - "doubleValue", - "download", - "download:decideDestinationWithSuggestedFilename:", - "download:didBeginChildDownload:", - "download:didCancelAuthenticationChallenge:", - "download:didCreateDestination:", - "download:didFailWithError:", - "download:didReceiveAuthenticationChallenge:", - "download:didReceiveDataOfLength:", - "download:didReceiveResponse:", - "download:shouldBeginChildDownloadOfSource:delegate:", - "download:shouldDecodeSourceDataOfMIMEType:", - "download:willResumeWithResponse:fromByte:", - "download:willSendRequest:redirectResponse:", - "downloadDelegate", - "downloadDidBegin:", - "downloadDidFinish:", - "downloadImageToDisk:", - "downloadLinkToDisk:", - "downloadURL:element:", - "downloadWindowForAuthenticationSheet:", - "dragCaretDOMRange", - "dragColor:withEvent:fromView:", - "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:", - "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", - "draggingSource", - "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:", - "drawCellAtRow:column:", - "drawColor", - "drawColor:", - "drawCrayonLayer", - "drawDividerInRect:", - "drawFocusRingInView:", - "drawFrame:", - "drawGlyphsForGlyphRange:atPoint:", - "drawGridInClipRect:", - "drawHashMarksAndLabelsInRect:", - "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:pinToTop:", - "drawInRect:withAlpha:operation:flipped:", - "drawInRect:withAttributes:", - "drawInView:", - "drawInsertionPointInRect:color:turnedOn:", - "drawInteriorWithFrame:inView:", - "drawKeyEquivalentWithFrame:inView:", - "drawKnob", - "drawKnob:", - "drawKnobSlotInRect:highlight:", - "drawLabel:inRect:", - "drawLineForCharacters:yOffset:withWidth:withColor:", - "drawLineForMisspelling:withWidth:", - "drawMarkersInRect:", - "drawNormalInteriorWithFrame:inView:", - "drawPageBorderWithSize:", - "drawPreviewInteriorWithFrame:inView:", - "drawRect:", - "drawRect:withPainter:", - "drawRepresentation:inRect:", - "drawResizeIndicator:", - "drawRevealoverTextWithFrame:inView:forView:", - "drawRow:clipRect:", - "drawRowIndexes:clipRect:", - "drawRun:style:geometry:", - "drawScroller:", - "drawSegment:inFrame:withView:", - "drawSelectionIndicatorInRect:", - "drawSeparatorInRect:", - "drawSeparatorItemWithFrame:inView:", - "drawSortIndicatorWithFrame:inView:ascending:priority:", - "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", - "drawStateImageWithFrame:inView:", - "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:", - "drawWindowBackgroundRegion:", - "drawWindowBackgroundRegion:level:", - "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", - "drawsGrid", - "dropFirstComponent:", - "dropLastComponent:", - "dstDraggingDepositedAtPoint:draggingInfo:", - "dstDraggingEnteredAtPoint:draggingInfo:", - "dstDraggingExitedAtPoint:draggingInfo:", - "dstDraggingMovedToPoint:draggingInfo:", - "duration", - "dynamicToolTipRectAtPoint:", - "dynamicToolTipRevealoverInfoAtPoint:trackingRect:", - "dynamicToolTipStringAtPoint:trackingRect:", - "eMapResult:eMap:arcsinTable:", - "echosBullets", - "edge", - "editColumn:row:withEvent:select:", - "editWithFrame:inView:editor:delegate:event:", - "editableBinder", - "editableDOMRangeForPoint:", - "editableState", - "editableStateAtIndex:", - "editableStateAtIndexPath:", - "edited", - "edited:range:changeInLength:", - "editedColumn", - "editedMask", - "editedMode:forEditingOrAction:", - "editedRange", - "editedRow", - "editedToolbar", - "editingBinderForControl:", - "editingColorAdjustableObject:", - "editingContextMenuItemsForElement:", - "editingDelegate", - "editingHasBegun:", - "editingHasEnded:", - "editingStringForObjectValue:", - "editingWasAborted:", - "editor", - "editorDidBeginEditing:", - "editorDidEndEditing:", - "editorWithObject:", - "eject", - "ejectButtonPressedAction:", - "element", - "elementAt:", - "elementAtIndex:", - "elementAtIndex:associatedPoints:", - "elementAtIndex:effectiveRange:", - "elementAtPoint:", - "elementCount", - "elementDoesAutoComplete:", - "elementForView:", - "elementIsPassword:", - "elementName", - "elementTypeDescription", - "elementWithName:inForm:", - "elementWithRole:parent:", - "elementWithRole:subrole:parent:", - "elementsForLocalName:URI:", - "elementsForName:", - "emapROI:forRect:", - "empty", - "emptyAttributeDictionary", - "enable:", - "enableAll:", - "enableCursorRects", - "enableFlushWindow", - "enableFreedObjectCheck:", - "enableKeyEquivalentForDefaultButtonCell", - "enableMakeHistory", - "enableMultipleThreads", - "enableRelease:", - "enableSecureInput:", - "enableSecureString:", - "enableUpdates", - "enabledFileTypes", - "enabledState", - "enabledStateAtIndex:", - "enabledStateAtIndexPath:", - "enabledStateForMenuItem:", - "enclosingClipViewBoundsOrFrameDidChangeNotification:", - "enclosingScrollView", - "encodeArrayOfObjCType:count:at:", - "encodeBool:forKey:", - "encodeBycopyObject:", - "encodeBytes:length:", - "encodeBytes:length:forKey:", - "encodeConditionalObject:", - "encodeConditionalObject:forKey:", - "encodeDataObject:", - "encodeDouble:forKey:", - "encodeFloat:forKey:", - "encodeInt32:forKey:", - "encodeInt64:forKey:", - "encodeInt:forKey:", - "encodeObject:", - "encodeObject:forKey:", - "encodeObject:isBycopy:isByref:", - "encodePoint:", - "encodePoint:forKey:", - "encodePortObject:", - "encodePropertyList:", - "encodeRect:", - "encodeRect:forKey:", - "encodeReturnValueWithCoder:", - "encodeRootObject:", - "encodeSize:", - "encodeSize:forKey:", - "encodeValueOfObjCType:at:", - "encodeValuesOfObjCTypes:", - "encodeWithCoder:", - "encodeWithCoder:colorSpaceCode:", - "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:", - "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", - "entityNameOrderingArrayForEntities:", - "entityNamed:", - "entryForNode:inCachedChildrenForNode:", - "entryState:", - "entryType", - "enumCodeValue", - "enumerationDescriptionFromName:implDeclaration:presoDeclaration:", - "enumerations", - "enumeratorAtPath:", - "enumeratorDescriptions", - "error", - "error:", - "errorExpectedType", - "errorForReason:", - "errorNumber", - "errorOffendingObjectDescriptor", - "errorStringForFTPStatusCode:fromURL:", - "errorWithDomain:code:userInfo:", - "establishConnection", - "evaluate", - "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:", - "evaluateJavaScriptPluginRequest:", - "evaluatePredicates:withObject:variableBindings:", - "evaluateWithObject:", - "evaluateWithObject:variableBindings:", - "evaluateXQuery:constants:contextItem:error:", - "evaluatedArguments", - "evaluatedReceivers", - "evaluationErrorNumber", - "evaluationErrorSpecifier", - "event", - "eventClass", - "eventID", - "eventMayStartDrag:", - "eventNumber", - "eventQueue", - "exactSizeToCellsSize", - "exceptionAddingEntriesToUserInfo:", - "exceptionDuringOperation:error:leftOperand:rightOperand:", - "exceptionRememberingObject:key:", - "exceptionWithName:reason:userInfo:", - "exclusives", - "executablePath", - "executableType", - "execute", - "executeCommand", - "executeFetchRequest:error:", - "executeFetchRequest:withContext:", - "executeRequest:withContext:", - "executeSaveChangesRequest:withContext:", - "executionContextForView:", - "expandIndexPath:", - "expandItem:", - "expandItem:expandChildren:", - "expandedNodes", - "expandedNodesForObservedNode:", - "expandedRingROI:::", - "expect:", - "expectEndOfInput", - "expectSeparatorEqualTo:", - "expectedContentLength", - "expiresDate", - "expiresTimeForResponse:", - "exposeBinding:", - "exposedBindings", - "expressionForConstantValue:", - "expressionForKeyPath:", - "expressionType", - "expressionValueWithObject:context:", - "extendPowerOffBy:", - "extensionEnumerator", - "extensionsForMIMEType:", - "extent", - "externalDataForObjectID:timestamp:", - "externalDataForSourceObjectID:key:timestamp:", - "externalName", - "externalNameForEntityName:", - "externalNameForPropertyName:", - "externalPrecision", - "externalScale", - "externalType", - "extraArgument2", - "extraLineFragmentRect", - "extraLineFragmentTextContainer", - "extraLineFragmentUsedRect", - "extractHeaderInfo:", - "fadeToolTip:", - "failWithError:", - "failureReason", - "failureResponse", - "fallbackFontWithTraits:size:", - "familyName", - "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", - "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:", - "fieldEditorTextDidChange:", - "file", - "fileAttributes", - "fileAttributesAtPath:traverseLink:", - "fileAttributesToWriteToFile:ofType:saveOperation:", - "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:", - "fileButton", - "fileButtonWithDelegate:", - "fileDescriptor", - "fileExistsAtPath:", - "fileExistsAtPath:isDirectory:", - "fileExtensionsFromType:", - "fileHFSCreatorCode", - "fileHFSTypeCode", - "fileHandleForReading", - "fileHandleForReadingAtPath:", - "fileHandleForWriting", - "fileHandleWithNullDevice", - "fileHandleWithStandardError", - "fileHandleWithStandardInput", - "fileHandleWithStandardOutput", - "fileListMode", - "fileListOrderedByFileProperty", - "fileManager:shouldProceedAfterError:", - "fileManager:willProcessPath:", - "fileModificationDate", - "fileName", - "fileNameExtensionWasHiddenInLastRunSavePanel", - "fileNameFromRunningSavePanelForSaveOperation:", - "fileNamesFromRunningOpenPanel", - "filePosixPermissions", - "fileProperty", - "fileSpecForName:atDestination:", - "fileSystemAttributesAtPath:", - "fileSystemRepresentation", - "fileSystemRepresentationWithPath:", - "fileType", - "fileTypeFromLastRunSavePanel", - "fileURL", - "fileURLWithPath:", - "fileWrapper", - "fileWrapperForURL:", - "fileWrapperFromRange:documentAttributes:error:", - "fileWrapperOfType:error:", - "fileWrapperRepresentationOfType:", - "fileWrappers", - "filelistDelegate", - "filename", - "filenameChanged:", - "filenameToDrag:", - "filenameWithOriginalFilename:", - "filenames", - "filepath", - "filepathLabel", - "fill", - "fillAttributesCache", - "fillObjCType:count:at:", - "fillRect", - "fillRect:", - "filter", - "filterClassDescription", - "filterEvents:", - "filterKeyDown:", - "filterNamesInCategories:", - "filterPredicate", - "filterUsingPredicate:", - "filterWithName:", - "filterWithName:keysAndValues:", - "filteredArrayUsingPredicate:", - "filteredImage:keysAndValues:", - "filteredIndexForActualIndex:", - "finalWritePrintInfo", - "finalize", - "finalizeForWebScript", - "findBundleResources:callingMethod:directory:languages:name:types:limit:", - "findClass:", - "findCombinationForLetter:accent:", - "findFontLike:forCharacter:inLanguage:", - "findFontLike:forString:withRange:inLanguage:", - "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:", - "findFrameNamed:", - "findInView:forward:", - "findIndex:forDay:", - "findPPDFileName:", - "findPanel:", - "findSidebarNodeForNode:", - "findSoundFor:", - "findString", - "findString:selectedRange:options:", - "findString:selectedRange:options:wrap:", - "findVoiceByIdentifier:returningCreator:returningID:", - "fini", - "finish", - "finishDataLoad", - "finishDecoding", - "finishDownloadDecoding", - "finishEncoding", - "finishEncoding:", - "finishJobAndHandle", - "finishLaunching", - "finishProgressiveLoad:", - "finishProvideNewSubviewSetup", - "finishUnarchiving", - "finishUsingMenuRepresentation", - "finishedLoadingWithData:", - "finishedLoadingWithDataSource:", - "fireDate", - "firstChild", - "firstComponent:", - "firstIndentMarkerWithRulerView:location:", - "firstIndex", - "firstLineHeadIndent", - "firstObjectCommonWithArray:", - "firstPresentableName", - "firstRange", - "firstRectForCharacterRange:", - "firstRectForDOMRange:", - "firstResponder", - "firstTextView", - "firstTextViewForTextStorage:", - "firstUnlaidCharacterIndex", - "firstUnlaidGlyphIndex", - "firstVisibleColumn", - "fixAttachmentAttributeInRange:", - "fixAttributesInRange:", - "fixFontAttributeInRange:", - "fixGlyphInfoAttributeInRange:", - "fixInvalidatedFocusForFocusView", - "fixParagraphStyleAttributeInRange:", - "fixedFontFamily", - "fixesAttributesLazily", - "fixupDirInfo:", - "fk", - "flags", - "flagsChanged:", - "flatness", - "flattenIntoPath:", - "floatCocoaVersion", - "floatForKey:", - "floatParameterValue:forResolution:", - "floatValue", - "floatWidthForRun:style:widths:", - "flush", - "flushAllCachedChildren", - "flushAllCaches", - "flushAllKeyBindings", - "flushBufferedKeyEvents", - "flushCachedChildren", - "flushCachedChildrenForNode:", - "flushCachedData", - "flushCaches", - "flushClassKeyBindings", - "flushDataForTriplet:littleEndian:", - "flushGraphics", - "flushHostCache", - "flushKeyBindings", - "flushRasterCache", - "flushTextForClient:", - "flushWindow", - "focusChanged:", - "focusRingType", - "focusStack", - "focusView", - "focusView:inWindow:", - "focusWindow", - "focusedSwatchRect", - "focusedView", - "folderPath", - "font", - "fontAttributes", - "fontAttributesForSelectionStart", - "fontAttributesInRange:", - "fontDescriptor", - "fontDescriptorByAddingAttributes:", - "fontDescriptorWithFamily:", - "fontDescriptorWithFontAttributes:", - "fontDescriptorWithMatrix:", - "fontDescriptorWithName:matrix:", - "fontDescriptorWithName:size:", - "fontDescriptorWithSize:", - "fontForSelection:", - "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:", - "fontInstanceForRenderingMode:", - "fontInvalidationCapableObjectForObject:", - "fontMenu:", - "fontName", - "fontNameWithFamily:traits:weight:", - "fontPanel:", - "fontPanelDidChooseCollection:", - "fontPanelDidChooseFace:", - "fontPanelDidChooseFamily:", - "fontPanelDidChooseSize:", - "fontSize", - "fontWithDescriptor:size:", - "fontWithDescriptor:textTransform:", - "fontWithFamilies:traits:size:", - "fontWithFamily:traits:size:", - "fontWithFamily:traits:weight:size:", - "fontWithName:matrix:", - "fontWithName:size:", - "forceLayoutAdjustingViewSize:", - "forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:", - "forcePromise:", - "forceRedraw", - "forceSetMode:", - "foreignEntityKey", - "foreignEntityKeyColumns", - "foreignEntityKeyForSlot:", - "foreignKey", - "foreignKeyColumnDefinitions", - "foreignKeyColumns", - "foreignKeyConstraintDefinitions", - "foreignKeyForSlot:", - "foreignKeys", - "forgetAllExternalData", - "forgetAllSnapshots", - "forgetExternalDataForObjectID:", - "forgetSnapshotForGlobalID:", - "forgetSnapshotsForGlobalIDs:", - "forgetWord:", - "forgetWord:language:", - "form", - "formContentType", - "formData", - "formForElement:", - "formReferrer", - "formUnionWithCharacterSet:", - "formalName", - "formattedValueInObject:errorEncountered:error:", - "formatter", - "formatterBehavior", - "formatterOfObject:", - "forward::", - "forwardInvocation:", - "forwardItem", - "forwardListCount", - "fractionOfDistanceThroughGlyphForPoint:inTextContainer:", - "fragment", - "frame", - "frame:resizedFromEdge:withDelta:", - "frame:sourceFrame:willSubmitForm:withValues:submissionListener:", - "frameAutosaveName", - "frameCount", - "frameDetached", - "frameDidChange:", - "frameElement", - "frameLength", - "frameLoadDelegate", - "frameName", - "frameOfCellAtColumn:row:", - "frameOfColumn:", - "frameOfInsideOfColumn:", - "frameRate", - "frameRectForContentRect:", - "frameRectForContentRect:styleMask:", - "frameRequiredForMIMEType:URL:", - "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:", - "frameView", - "frameViewClassForStyleMask:", - "free", - "freeAttributeKeysAndValues", - "freeBitsAndReleaseDataIfNecessary", - "freeSerialized:length:", - "freeSpace", - "from:subtract:", - "fulfillAggregateFaultForObject:andRelationship:withContext:", - "fulfillFault:withContext:", - "fullJustifyLineAtGlyphIndex:", - "fullMetadata", - "fullPathForApplication:", - "gState", - "gamma", - "garbageCollect", - "gaussianBlur", - "generalPasteboard", - "generateFrameName", - "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:", - "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:", - "generatePropertyName:", - "generateTableName:", - "generatesCalendarDates", - "generatesDecimalNumbers", - "generatorClass", - "genericCMYKColorSpace", - "genericColorSpace", - "genericGrayColorSpace", - "genericRGBColorSpace", - "getAdvancements:forGlyphs:count:", - "getAdvancements:forPackedGlyphs:length:", - "getAppletInView:", - "getArgument:atIndex:", - "getArgumentTypeAtIndex:", - "getAttribute:", - "getAttributesForCharacterIndex:", - "getBitmapDataPlanes:", - "getByte", - "getBytes:", - "getBytes:length:", - "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:", - "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:", - "getBytes:range:", - "getCFRunLoop", - "getCString:", - "getCString:maxLength:encoding:", - "getCString:maxLength:range:remainingRange:", - "getCarbonEvent:", - "getCarbonEvent:withEvent:", - "getCharacters:", - "getCharacters:range:", - "getClasses", - "getClassesFromResourceLocator:", - "getComponents:", - "getCompression:factor:", - "getComputedStyle::", - "getCursorPositionAsIndex:inParagraph:", - "getCustomAdvance:forIndex:", - "getCyan:magenta:yellow:black:alpha:", - "getDirInfo:", - "getDocument:docInfo:", - "getFileSystemRepresentation:maxLength:", - "getFileSystemRepresentation:maxLength:withPath:", - "getFilenamesAndDropLocation", - "getFirstUnlaidCharacterIndex:glyphIndex:", - "getFloatValue:", - "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:", - "getHIViewForNSView:", - "getHue:saturation:brightness:alpha:", - "getHyphenLocations:inString:", - "getHyphenLocations:inString:wordAtIndex:", - "getImage:rect:", - "getIndexes:maxCount:inIndexRange:", - "getInfoButtonCell", - "getLELong", - "getLEWord", - "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", - "getNewIDForObject:", - "getNodeAsContainerNodeForBrowsing:", - "getNodeAsDeepResolvedNode:", - "getNodeAsInfoNode:", - "getNodeAsResolvedNode:", - "getNumberOfRows:columns:", - "getObjectCacheSize", - "getObjectValue:forString:errorDescription:", - "getObjectValue:forString:range:error:", - "getObjects:", - "getObjects:andKeys:", - "getObjects:range:", - "getParagraphStart:end:contentsEnd:forRange:", - "getPath", - "getPeriodicDelay:interval:", - "getPluginInfoFromBundleAndMIMEDictionary:", - "getPluginInfoFromPLists", - "getPluginInfoFromResources", - "getProperties", - "getProperty::", - "getPropertyCSSValue:", - "getPropertyValue:", - "getRGBColorValue", - "getRects:count:", - "getRectsBeingDrawn:count:", - "getRectsExposedDuringLiveResize:count:", - "getRed:green:blue:alpha:", - "getReleasedProxies:length:", - "getRemote:", - "getResourceLocator", - "getReturnValue:", - "getRotationAngle", - "getRow:column:forPoint:", - "getRow:column:ofCell:", - "getRulebookData:makeSharable:littleEndian:", - "getSavedNumVisibleRows:", - "getSnapToWidthList:snapRadiusList:count:", - "getState:", - "getStringValue", - "getTypographicLineHeight:baselineOffset:leading:", - "getURL:target:", - "getURLNotify:target:notifyData:", - "getValue:", - "getValueFromObject:", - "getVariable:value:", - "getWhite:alpha:", - "globallyUniqueString", - "glyphAtIndex:", - "glyphAtIndex:isValidIndex:", - "glyphBufferForFont:andColor:", - "glyphGenerator", - "glyphGeneratorForEncoding:language:font:", - "glyphGeneratorForEncoding:language:font:makeSharable:", - "glyphGeneratorForTriplet:makeSharable:", - "glyphIndexForPoint:inTextContainer:", - "glyphIndexForPoint:inTextContainer:fractionOfDistanceThroughGlyph:", - "glyphIndexToBreakLineByClippingAtIndex:", - "glyphIndexToBreakLineByHyphenatingWordAtIndex:", - "glyphIndexToBreakLineByWordWrappingAtIndex:", - "glyphInfoWithCharacterIdentifier:collection:baseString:", - "glyphInfoWithGlyph:forFont:baseString:", - "glyphInfoWithGlyphName:forFont:baseString:", - "glyphIsEncoded:", - "glyphName", - "glyphPacking", - "glyphRange", - "glyphRangeForBoundingRect:inTextContainer:", - "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:", - "glyphRangeForCharacterRange:actualCharacterRange:", - "glyphRangeForTextContainer:", - "glyphWithName:", - "goBack", - "goBack:", - "goBackOrForward:", - "goBackwardInHistoryIfPossible", - "goForward", - "goForward:", - "goForwardInHistoryIfPossible", - "goToBackForwardItem:", - "goToItem:", - "goUpDirectory", - "gotString", - "gotoSheetDidEnd:returnCode:contextInfo:", - "grabberImage", - "gradientROI:forRect:", - "graphicsContextWithAttributes:", - "graphicsPort", - "graphiteControlTintColor", - "grayColor", - "green", - "greenColor", - "greenComponent", - "gregorianCalendar", - "greySliderFrameChangedNotification:", - "gridColor", - "gridStyleMask", - "groupIdentifier", - "groupName", - "groupingSeparator", - "groupsByEvent", - "growBoxWithParent:", - "growBuffer:current:end:factor:", - "growGlyphCaches:fillGlyphInfo:", - "guessDockTitle:", - "guessesForWord:", - "handleAppTermination:", - "handleAutoscrollForMouseDragged:", - "handleCarbonBoundsChange", - "handleCloseScriptCommand:", - "handleCommandEvent:withReplyEvent:", - "handleCurrentDirectoryNodeChanged", - "handleDelayedUpdate:", - "handleDelegateChangedCurrentDirectory", - "handleDelegateChangedSelection", - "handleDelegateClickedFauxDisabledNode:", - "handleDelegateConfirmedSelection", - "handleDelegateMovedDiplayedProperty:toIndex:", - "handleDroppedConnection", - "handleEndEncountered", - "handleFailureInFunction:file:lineNumber:description:", - "handleFailureInMethod:object:file:lineNumber:description:", - "handleFetchRequest:", - "handleFileListModeChanged", - "handleGetAETEEvent:withReplyEvent:", - "handleHasBytesAvailable", - "handleKeyboardShortcutWithEvent:", - "handleMachMessage:", - "handleMetadataCallback", - "handleMouseDownEvent:at:inPart:withMods:", - "handleMouseEvent:", - "handleNodePropertyChanged", - "handleObservingRefresh:", - "handlePortCoder:", - "handlePortMessage:", - "handlePreviewTextChange", - "handlePreviewTextUpdate", - "handlePrintScriptCommand:", - "handleQueryWithUnboundKey:", - "handleReadStreamEvent:event:", - "handleReleasedProxies:length:", - "handleRequest:sequence:", - "handleRootNodeChanged", - "handleSaveScriptCommand:", - "handleSetFrameCommonRedisplay", - "handleTakeValue:forUnboundKey:", - "handleUserGoUpDirectory", - "handleValidationError:description:inEditor:errorUserInterfaceHandled:", - "handlesContentAsCompoundValue", - "handlesObject:", - "handlesRequest:", - "hasAdditionalClip", - "hasAlpha", - "hasAttachmentMenu", - "hasBackingStore", - "hasChanges", - "hasChangesPending", - "hasChildNodes", - "hasCloseBox", - "hasCredentials", - "hasDirectoryNode", - "hasDynamicDepthLimit", - "hasEditedDocuments", - "hasEditor", - "hasElasticRange", - "hasHorizontalRuler", - "hasHorizontalScroller", - "hasImageWithAlpha", - "hasItemsToDisplayInPopUp", - "hasMarkedText", - "hasMetadataTable", - "hasNodeLabel", - "hasOpenTransaction", - "hasPageCache", - "hasPassword", - "hasPrefix:", - "hasRunLoop:", - "hasSelectedColor", - "hasShadow", - "hasSubentities", - "hasSubmenu", - "hasSuffix:", - "hasThousandSeparators", - "hasUndoManager", - "hasVerticalRuler", - "hasVerticalScroller", - "hash", - "hashForID:", - "haveCompleteImage", - "haveCredentialForURL:", - "headIndent", - "headerCell", - "headerColor", - "headerLevel", - "headerRectOfColumn:", - "headerTextColor", - "headerView", - "heartBeat:", - "hebrewCalendar", - "heightAdjustLimit", - "heightForNumberOfVisibleRows:", - "heightTracksTextView", - "helpAnchor", - "helpRequested:", - "helpText", - "hexString", - "hiddenState", - "hiddenStateAtIndex:", - "hiddenStateAtIndexPath:", - "hide", - "hide:", - "hideOtherApplications:", - "hideRolloverWindow", - "hideToolbar:", - "hidesOnDeactivate", - "highlight:", - "highlight:withFrame:inView:", - "highlightCell:atRow:column:", - "highlightColor", - "highlightColor:", - "highlightColorInView:", - "highlightColorWithFrame:inView:", - "highlightMode", - "highlightROI:forRect:", - "highlightSelectionInClipRect:", - "highlightWithLevel:", - "highlightedBranchImage", - "highlightedItemIndex", - "highlightedTableColumn", - "highlightsBy", - "hintCapacity", - "historyAgeInDaysLimit", - "historyItemLimit", - "historyLength", - "historyProvider", - "hitPart", - "hitTest:", - "horizontalEdgePadding", - "horizontalLineScroll", - "horizontalPagination", - "horizontalRulerView", - "horizontalScroller", - "horizontalScrollingMode", - "host", - "hostNameResolved:", - "hostWindow", - "hostWithName:", - "hotSpot", - "hourOfDay", - "href", - "hueComponent", - "hyphenCharacterForGlyphAtIndex:", - "hyphenGlyph", - "hyphenGlyphForLocale:", - "hyphenationFactor", - "hyphenationFactorForGlyphAtIndex:", - "iDiskNode", - "icon", - "iconAsAttributedString", - "iconForFile:", - "iconForFileType:", - "iconForSize:", - "iconForSpecifier:size:", - "iconForURL:withSize:", - "iconForURL:withSize:cache:", - "iconRect", - "iconSize", - "identifier", - "identity", - "ignore", - "ignoreModifierKeysWhileDragging", - "ignoreSpelling:", - "ignoreWord:inSpellDocumentWithTag:", - "ignoresAlpha", - "ignoresMouseEvents", - "illegalCharacterSet", - "image", - "image:didLoadPartOfRepresentation:withValidRows:", - "image:didLoadRepresentation:withStatus:", - "image:didLoadRepresentationHeader:", - "image:focus:", - "image:willLoadRepresentation:", - "imageAlignment", - "imageAndTitleOffset", - "imageAndTitleWidth", - "imageAtIndex:", - "imageBounds", - "imageByApplyingTransform:", - "imageDidNotDraw:inRect:", - "imageFileTypes", - "imageForPreferenceNamed:", - "imageForSegment:", - "imageForState:", - "imageFrameStyle", - "imageInterpolation", - "imageNamed:", - "imagePasteboardTypes", - "imagePosition", - "imageRectForBounds:", - "imageRectInRuler", - "imageRef", - "imageRenderer", - "imageRendererWithBytes:length:", - "imageRendererWithBytes:length:MIMEType:", - "imageRendererWithData:MIMEType:", - "imageRendererWithMIMEType:", - "imageRendererWithName:", - "imageRendererWithSize:", - "imageRepClassForData:", - "imageRepClassForFileType:", - "imageRepClassForPasteboardType:", - "imageRepWithContentsOfFile:", - "imageRepWithContentsOfURL:", - "imageRepWithData:", - "imageRepsWithContentsOfFile:", - "imageRepsWithContentsOfURL:", - "imageRepsWithData:", - "imageScaling", - "imageSize", - "imageUnfilteredFileTypes", - "imageUnfilteredPasteboardTypes", - "imageWidth", - "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:", - "importObject:", - "importedObjects", - "importsGraphics", - "inLiveResize", - "inNextKeyViewOutsideWebFrameViews", - "inPalette", - "incObservationCount", - "incomingReferrer", - "increaseLengthBy:", - "increaseSizesToFit:", - "increaseUseCount", - "increment", - "incrementButtonWithParent:", - "incrementRefCount", - "incrementRefCountForObjectID:", - "incrementSnapshotCountForGlobalID:", - "incrementalImageReaderForRep:", - "incrementalLoadWithBytes:length:complete:", - "increments", - "indentationLevel", - "indentationPerLevel", - "index", - "indexAtPosition:", - "indexFollowing:", - "indexForKey:", - "indexGreaterThanIndex:", - "indexGreaterThanOrEqualToIndex:", - "indexLessThanIndex:", - "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:", - "indexOfCrayon:", - "indexOfFirstRangeContainingOrFollowing:", - "indexOfItem:", - "indexOfItemAtPoint:", - "indexOfItemWithObjectValue:", - "indexOfItemWithRepresentedNavNode:", - "indexOfItemWithRepresentedObject:", - "indexOfItemWithSubmenu:", - "indexOfItemWithTag:", - "indexOfItemWithTarget:andAction:", - "indexOfItemWithTitle:", - "indexOfNode:inCachedChildrenForNode:", - "indexOfObject:", - "indexOfObject:range:identical:", - "indexOfObjectIdenticalTo:", - "indexOfObjectIdenticalTo:inRange:", - "indexOfSelectedItem", - "indexOfTabViewItem:", - "indexOfTabViewItemWithIdentifier:", - "indexOfTickMarkAtPoint:", - "indexPath", - "indexPathByAddingIndex:", - "indexPathByRemovingLastIndex", - "indexPathForOutlineView:row:", - "indexPathWithIndex:", - "indexReferenceModelObjectArray", - "indexSet", - "indexSetWithIndex:", - "indexSetWithIndexesInRange:", - "indicesOfObjectsByEvaluatingObjectSpecifier:", - "indicesOfObjectsByEvaluatingWithContainer:count:", - "infoDictionary", - "infoForBinding:", - "init", - "initAndTestWithTests:", - "initAtPoint:withSize:callbackInfo:", - "initByReferencingFile:", - "initByReferencingURL:", - "initCount:", - "initDir:file:docInfo:", - "initDirectoryWithFileWrappers:", - "initEPSOperationWithView:insideRect:toData:printInfo:", - "initFileURLWithPath:", - "initForActionType:", - "initForDeserializerStream:", - "initForDirectImageRep:", - "initForExpression:usingIteratorExpression:predicate:", - "initForExpression:usingIteratorVariable:predicate:", - "initForKeyBackPointer:", - "initForKeys:", - "initForKeys:count:", - "initForMetal:", - "initForReadingWithData:", - "initForSerializerStream:", - "initForToolbar:withWidth:", - "initForURL:withContentsOfURL:ofType:error:", - "initForWritingWithMutableData:", - "initFromDictionaryRepresentation:", - "initFromDocument:", - "initFromImage:rect:", - "initFromMemoryNoCopy:length:freeWhenDone:", - "initFromSerializerStream:length:", - "initGlyphStack:", - "initImageCell:", - "initListDescriptor", - "initNotTestWithTest:", - "initOrTestWithTests:", - "initPopUpWindow", - "initPriv", - "initRecordDescriptor", - "initRegularFileWithContents:", - "initRemoteWithProtocolFamily:socketType:protocol:address:", - "initSymbolicLinkWithDestination:", - "initTextCell:", - "initTextCell:pullsDown:", - "initTitleButton:", - "initTitleCell:", - "initTitleCell:styleMask:", - "initToBuffer:capacity:", - "initToFileAtPath:append:", - "initToMemory", - "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:", - "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:", - "initWithBitmapRepresentation:", - "initWithBool:", - "initWithBridge:delegate:", - "initWithButtonID:", - "initWithBytes:length:", - "initWithBytes:length:copy:freeWhenDone:bytesAreVM:", - "initWithBytes:length:encoding:", - "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:", - "initWithCString:noCopy:", - "initWithCStringNoCopy:length:freeWhenDone:", - "initWithCVImageBuffer:options:", - "initWithCachedResponse:request:key:", - "initWithCallback:selector:", - "initWithCapacity:", - "initWithCapacity:compareSelector:", - "initWithCapacity:origin:image:yOffset:", - "initWithCarbonWindowRef:takingOwnership:", - "initWithCarbonWindowRef:takingOwnership:disableOrdering:", - "initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:", - "initWithCatalogName:colorName:genericColor:", - "initWithCell:", - "initWithChar:", - "initWithCharacterIdentifier:collection:baseString:", - "initWithCharacterRange:isSoft:", - "initWithCharacterRange:parent:", - "initWithCharacterSet:", - "initWithCharacters:length:", - "initWithCharactersInString:", - "initWithCharactersNoCopy:length:freeWhenDone:", - "initWithClass:", - "initWithClassDescription:", - "initWithClassPath:", - "initWithClient:", - "initWithCode:key:object:", - "initWithCoder:", - "initWithCoercer:selector:", - "initWithCollection:", - "initWithColorProfile:", - "initWithColorSpace:components:count:", - "initWithColorSyncInfo:", - "initWithColorSyncProfile:", - "initWithColumnName:sqlType:", - "initWithCommandDescription:", - "initWithCompareSelector:", - "initWithConnection:components:", - "initWithContainer:key:mutableSet:", - "initWithContainer:key:mutableSet:mutationMethods:", - "initWithContainerClass:keyPath:", - "initWithContainerClass:keyPath:firstDotIndex:", - "initWithContainerClassDescription:", - "initWithContainerClassDescription:containerSpecifier:key:", - "initWithContainerClassDescription:containerSpecifier:key:index:", - "initWithContainerClassDescription:containerSpecifier:key:name:", - "initWithContainerClassDescription:containerSpecifier:key:relativePosition:baseSpecifier:", - "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:", - "initWithContentRect:styleMask:backing:defer:drawer:", - "initWithContentRect:styleMask:backing:defer:screen:", - "initWithContentSize:preferredEdge:", - "initWithContentsOfFile:", - "initWithContentsOfFile:encoding:error:", - "initWithContentsOfFile:error:", - "initWithContentsOfFile:ofType:", - "initWithContentsOfFile:options:error:", - "initWithContentsOfFile:usedEncoding:error:", - "initWithContentsOfMappedFile:", - "initWithContentsOfMappedFile:withFileAttributes:", - "initWithContentsOfURL:", - "initWithContentsOfURL:byReference:", - "initWithContentsOfURL:encoding:error:", - "initWithContentsOfURL:ofType:", - "initWithContentsOfURL:ofType:error:", - "initWithContentsOfURL:options:", - "initWithContentsOfURL:options:error:", - "initWithContentsOfURL:usedEncoding:error:", - "initWithController:", - "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:", - "initWithDataNoCopy:", - "initWithDataRepresentation:", - "initWithDataSource:", - "initWithDataSource:ascending:", - "initWithDateFormat:allowNaturalLanguage:", - "initWithDecimal:", - "initWithDefaultAttributes:", - "initWithDefaults:initialValues:", - "initWithDelegate:", - "initWithDelegate:name:", - "initWithDescription:kernelFile:filterBundle:", - "initWithDescriptorType:bytes:length:", - "initWithDescriptorType:data:", - "initWithDictionary:", - "initWithDictionary:copyItems:", - "initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:", - "initWithDocument:forStore:", - "initWithDocumentView:", - "initWithDomain:code:userInfo:", - "initWithDomain:type:name:", - "initWithDomain:type:name:port:", - "initWithDomainName:key:title:image:", - "initWithDouble:", - "initWithDrawingView:rects:", - "initWithDuration:animationCurve:", - "initWithDynamicMenuItemDictionary:", - "initWithEditCommand:", - "initWithElement:fauxParent:", - "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:", - "initWithFactory:", - "initWithFile:", - "initWithFileAtPath:", - "initWithFileAttributes:", - "initWithFileDescriptor:closeOnDealloc:", - "initWithFileName:markerName:", - "initWithFileProperty:dataSource:ascending:", - "initWithFileWrapper:", - "initWithFilter:closure:", - "initWithFilter:connectionID:", - "initWithFilter:options::", - "initWithFireDate:interval:target:selector:userInfo:repeats:", - "initWithFloat:", - "initWithFocusedViewRect:", - "initWithFont:color:", - "initWithFont:usingPrinterFont:", - "initWithFontAttributes:", - "initWithFontDescriptor:", - "initWithForm:values:sourceFrame:", - "initWithFormat:", - "initWithFormat:arguments:", - "initWithFormat:locale:", - "initWithFormat:locale:arguments:", - "initWithFormat:shareContext:", - "initWithFrame:", - "initWithFrame:depth:", - "initWithFrame:error:", - "initWithFrame:frameName:groupName:", - "initWithFrame:inStatusBar:", - "initWithFrame:menuView:", - "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:", - "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:", - "initWithFrame:node:", - "initWithFrame:plugin:URL:baseURL:MIMEType:attributeKeys:attributeValues:", - "initWithFrame:prototypeRulerMarker:", - "initWithFrame:pullsDown:", - "initWithFrame:styleMask:owner:", - "initWithFrame:textContainer:", - "initWithFunc:forImp:selector:", - "initWithFunc:ivarOffset:", - "initWithGLContext:pixelFormat:vtable:options:", - "initWithGlyph:forFont:baseString:", - "initWithGlyphIndex:characterRange:", - "initWithGlyphName:glyph:forFont:baseString:", - "initWithGrammar:", - "initWithGraph:", - "initWithGraphicsContext:", - "initWithHTML:documentAttributes:", - "initWithHTML:options:documentAttributes:", - "initWithHTMLView:", - "initWithHistory:", - "initWithHost:port:protocol:realm:authenticationMethod:", - "initWithHue:saturation:brightness:alpha:", - "initWithICCProfileData:", - "initWithIdentifier:", - "initWithIdentifier:forColorPanel:", - "initWithImage:", - "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:", - "initWithImage:hotSpot:", - "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:", - "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:", - "initWithKind:", - "initWithKind:name:stringValue:", - "initWithKind:name:stringValue:URI:", - "initWithKind:options:", - "initWithLeftExpression:rightExpression:customSelector:", - "initWithLeftExpression:rightExpression:modifier:type:options:", - "initWithLength:", - "initWithListBox:", - "initWithLoader:dataSource:", - "initWithLocal:connection:", - "initWithLocalName:URI:", - "initWithLocaleIdentifier:", - "initWithLong:", - "initWithLongLong:", - "initWithMIMEType:", - "initWithMKKDInitializer:index:", - "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:", - "initWithName:", - "initWithName:appleEventCode:enumeratorDescriptions:", - "initWithName:appleEventCode:fieldDescriptions:presentableDescription:", - "initWithName:appleEventCode:objcClassName:", - "initWithName:attributes:", - "initWithName:color:image:", - "initWithName:data:", - "initWithName:element:", - "initWithName:elementNames:", - "initWithName:fromFile:", - "initWithName:host:", - "initWithName:object:userInfo:", - "initWithName:position:rect:view:children:", - "initWithName:reason:userInfo:", - "initWithName:stringValue:", - "initWithName:value:source:children:", - "initWithName:webFrameView:webView:", - "initWithNamespaces:", - "initWithNavView:", - "initWithNestedDictionary:", - "initWithNibNamed:bundle:", - "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:", - "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:", - "initWithPasteboardDataRepresentation:", - "initWithPath:", - "initWithPath:documentAttributes:", - "initWithPath:flags:createMode:", - "initWithPath:logonOK:", - "initWithPath:traverseLink:", - "initWithPersistenceStore:", - "initWithPickerMask:colorPanel:", - "initWithPosition:objectSpecifier:", - "initWithPredicate:", - "initWithPredicateOperator:leftExpression:rightExpression:", - "initWithPredicateOperator:leftKeyPath:rightKeyPath:", - "initWithPredicateOperator:leftKeyPath:rightValue:", - "initWithPrintInfo:", - "initWithPrompt:text:", - "initWithProperties:", - "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:", - "initWithProperty:", - "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:", - "initWithProtocol:httpRequest:challenge:callback:context:", - "initWithProtocolFamily:socketType:protocol:address:", - "initWithProxyHost:port:type:realm:authenticationMethod:", - "initWithQButton:", - "initWithQComboBox:", - "initWithQLineEdit:", - "initWithQObject:timerId:", - "initWithQScrollBar:", - "initWithQSlider:", - "initWithQTextEdit:", - "initWithRTF:", - "initWithRTF:documentAttributes:", - "initWithRTFD:", - "initWithRTFD:documentAttributes:", - "initWithRTFDFileWrapper:", - "initWithRange:", - "initWithRanges:count:", - "initWithRealClient:", - "initWithRealTextStorage:", - "initWithReceivePort:sendPort:", - "initWithReceivePort:sendPort:components:", - "initWithRect:", - "initWithRect:clip:type:", - "initWithRect:color:ofView:", - "initWithRects:count:", - "initWithRed:green:blue:alpha:", - "initWithRef:", - "initWithRefCountedRunArray:", - "initWithRegistryClass:andObjectClass:", - "initWithRegistryString:andObjectClass:", - "initWithRemoteName:", - "initWithRenderer:", - "initWithRequest:", - "initWithRequest:cachedResponse:client:", - "initWithRequest:delegate:", - "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:", - "initWithRulerMarker:parent:", - "initWithRulerView:", - "initWithRulerView:markerLocation:image:imageOrigin:", - "initWithRunStorage:", - "initWithRuns:glyphOrigin:lineFragmentWidth:", - "initWithSQLCore:", - "initWithSQLEntity:objectID:", - "initWithSavedQueryNode:", - "initWithScrollView:orientation:", - "initWithSearchStrategy:", - "initWithSelector:", - "initWithSelector:argumentArray:", - "initWithSendPort:receivePort:components:", - "initWithSerializedRepresentation:", - "initWithSet:", - "initWithSet:copyItems:", - "initWithSetFunc:forImp:selector:", - "initWithSetFunc:ivarOffset:", - "initWithSetHeader:", - "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:", - "initWithShadow:", - "initWithShort:", - "initWithSimpleQueryString:", - "initWithSize:", - "initWithSize:depth:separate:alpha:", - "initWithSize:forSpaceItem:", - "initWithSource:", - "initWithSource::dest::", - "initWithSource:forRelationship:asFault:", - "initWithSourceAttributeName:destinationAttributeName:", - "initWithSparseArray:", - "initWithSpecifier:", - "initWithStatement:", - "initWithStore:", - "initWithStore:fromPath:", - "initWithStream:", - "initWithStream:view:", - "initWithString:", - "initWithString:attributes:", - "initWithString:calendarFormat:", - "initWithString:calendarFormat:locale:", - "initWithString:locale:", - "initWithString:relativeToURL:", - "initWithStringValue:", - "initWithSuiteName:className:dictionary:", - "initWithSuiteName:commandName:dictionary:", - "initWithTCPPort:", - "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:", - "initWithTableView:", - "initWithTableView:clipRect:", - "initWithTarget:", - "initWithTarget:action:", - "initWithTarget:connection:", - "initWithTarget:defaultTarget:templateClass:", - "initWithTarget:invocation:", - "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:", - "initWithTextTable:charIndex:layoutManager:containerWidth:", - "initWithTexture:size:flipped:colorSpace:", - "initWithTexture:size:options:", - "initWithTidyNode:", - "initWithTimeIntervalSinceNow:", - "initWithTimeIntervalSinceReferenceDate:", - "initWithTitle:", - "initWithTitle:action:keyEquivalent:", - "initWithTitle:action:keyEquivalent:representedNavNode:", - "initWithTransform:", - "initWithTranslator:selector:", - "initWithTreeController:", - "initWithTreeController:keyPath:", - "initWithType:", - "initWithType:arg:", - "initWithType:error:", - "initWithType:location:", - "initWithType:subpredicates:", - "initWithTypefaceInfo:key:", - "initWithTypesetter:", - "initWithURL:", - "initWithURL:MIMEType:expectedContentLength:textEncodingName:", - "initWithURL:allowNonExecutable:", - "initWithURL:byReference:", - "initWithURL:cachePolicy:timeoutInterval:", - "initWithURL:cached:", - "initWithURL:documentAttributes:", - "initWithURL:options:documentAttributes:error:", - "initWithURL:target:parent:title:", - "initWithURL:title:", - "initWithURL:traverseLink:", - "initWithURLString:title:lastVisitedTimeInterval:", - "initWithUTF8String:", - "initWithUnavoidableSpecifier:path:url:isSymbolicLink:", - "initWithUnsignedChar:", - "initWithUnsignedInt:", - "initWithUnsignedLong:", - "initWithUnsignedLongLong:", - "initWithUnsignedShort:", - "initWithUser:", - "initWithUser:password:persistence:", - "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:", - "initWithWindow:", - "initWithWindow:rect:", - "initWithWindowNibName:", - "initWithWindowNibName:owner:", - "initWithX:", - "initWithX:Y:", - "initWithX:Y:Z:", - "initWithX:Y:Z:W:", - "initWithXMLNode:objectID:", - "initWithXMLString:", - "initWithYear:month:day:hour:minute:second:timeZone:", - "initialFirstResponder", - "initialPoint", - "initialRequest", - "initialValues", - "initialize", - "initialize:", - "initializeButtonStructureAtX:y:forResolution:", - "initializeFromDefaults", - "initializeItem:", - "initializeRecipe:", - "initializeSettings:", - "initializerFromKeyArray:", - "inlayROI:forRect:", - "innerRect", - "innerTitleRect", - "inputClientBecomeActive:", - "inputClientDisabled:", - "inputClientEnabled:", - "inputClientResignActive:", - "inputContext", - "inputContextForFirstTextView:", - "inputContextWithClient:", - "inputElementAltText", - "inputKeyBindingManager", - "inputKeys", - "inputStreamWithFileAtPath:", - "insert:", - "insertAttributedString:atIndex:", - "insertBacktab:", - "insertChild:atIndex:", - "insertColor:key:atIndex:", - "insertColumn:", - "insertColumn:withCells:", - "insertCompletion:forPartialWordRange:movement:isFinal:", - "insertCorrelation:", - "insertDescriptor:atIndex:", - "insertElement:atIndex:", - "insertElement:range:coalesceRuns:", - "insertElements:count:atIndex:", - "insertEntity:intoOrderingArray:withDependencies:processingSet:", - "insertEntry:atIndex:", - "insertGlyph:atGlyphIndex:characterIndex:", - "insertGlyphs:", - "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:", - "insertItem:atDateIndex:", - "insertItem:atIndex:", - "insertItem:path:dirInfo:zone:plist:", - "insertItemViewer:atIndex:", - "insertItemWithItemIdentifier:atIndex:", - "insertItemWithObjectValue:atIndex:", - "insertItemWithTitle:action:keyEquivalent:atIndex:", - "insertItemWithTitle:atIndex:", - "insertLineBreak", - "insertNewButtonImage:in:", - "insertNewline:", - "insertNode:atSubNodeIndex:", - "insertObject:", - "insertObject:at:", - "insertObject:atArrangedObjectIndex:", - "insertObject:atArrangedObjectIndexPath:", - "insertObject:atIndex:", - "insertObject:inAttributesAtIndex:", - "insertObject:inNamespacesAtIndex:", - "insertObject:range:", - "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:", - "insertObjects:atArrangedObjectIndexes:", - "insertObjects:atIndexes:", - "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:", - "insertParagraphSeparator", - "insertParagraphSeparatorInQuotedContent", - "insertPopItemWithTitle:andObject:", - "insertProxy:", - "insertRow:", - "insertRow:withCells:", - "insertRows:atIndex:", - "insertStatement", - "insertString:atIndex:", - "insertTab:", - "insertTable:", - "insertText:", - "insertText:client:", - "insertText:selectInsertedText:", - "insertTextContainer:atIndex:", - "insertValue:atIndex:inPropertyWithKey:", - "insertValue:inPropertyWithKey:", - "insertedObjects", - "insertionContainer", - "insertionIndex", - "insertionKey", - "insertionPointColor", - "insertionReplaces", - "insertsNullPlaceholder", - "insetByX:Y:", - "installInFrame:", - "installInputManagerMenu:", - "installKeyEventHandler", - "installedPlugins", - "instanceMethodDescFor:", - "instanceMethodDescriptionForSelector:", - "instanceMethodFor:", - "instanceMethodForSelector:", - "instanceMethodSignatureForSelector:", - "instancesImplementSelector:", - "instancesRespondTo:", - "instancesRespondToSelector:", - "instantiate::", - "instantiateNibWithExternalNameTable:", - "instantiateNibWithOwner:topLevelObjects:", - "instantiateObject:", - "instantiateWithObjectInstantiator:", - "int32Value", - "intAttribute:forGlyphAtIndex:", - "intParameterValue:", - "intValue", - "integerForKey:", - "intercellSpacing", - "interceptKeyEvent:toView:", - "interfaceStyle", - "internCString:pointer:", - "internalNameForEntityName:version:", - "internalNameForPropertyName:version:", - "internalSaveTo:removeBackup:errorHandler:", - "internalSaveTo:removeBackup:errorHandler:temp:backup:", - "internalWritePath:errorHandler:remapContents:hardLinkPath:", - "interpretEventAsCommand:forClient:", - "interpretEventAsText:forClient:", - "interpretKeyEvents:", - "interpretKeyEvents:forClient:", - "interpretKeyEvents:sender:", - "interpreterBuiltins", - "interpreterCount", - "interruptForPolicyChangeError", - "intersectSet:", - "intersectWith:", - "intersectWithRect:", - "intersectsSet:", - "intervalSinceLastActive", - "invTransform:", - "invTransformRect:", - "invalidate", - "invalidate:", - "invalidateAttributesInRange:", - "invalidateCacheAndStorage", - "invalidateCachedDrawingImage", - "invalidateConnectionsAsNecessary:", - "invalidateCursorRectsForView:", - "invalidateDisplayForCharacterRange:", - "invalidateDisplayForGlyphRange:", - "invalidateFocus:", - "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:", - "invalidateHashMarks", - "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:", - "invalidateObjectValueInObject:", - "invalidateObjectsWithGlobalIDs:", - "invalidateProxy", - "invalidateRect:", - "invalidateRegion:", - "invalidateShadow", - "invalidateTextContainerOrigin", - "inverseColumnName", - "inverseForRelationshipKey:", - "inverseManyToMany", - "inverseRelationship", - "inverseToOne", - "invert", - "invertedSet", - "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:", - "isARepeat", - "isAbsolutePath", - "isAbstract", - "isActive", - "isAlias", - "isAlternate", - "isAncestorOfObject:", - "isAnimating", - "isAnimationFinished", - "isAtEnd", - "isAttached", - "isAttribute", - "isAutodisplay", - "isBeginMark", - "isBeingEdited", - "isBezeled", - "isBindingKeyOptional:", - "isBindingKeyless:", - "isBindingReadOnly:", - "isBooleanValueBindingForObject:", - "isBordered", - "isButtonBordered", - "isByref", - "isCachedSeparately", - "isCaseInsensitiveLike:", - "isCharacterSmartReplaceExempt:isPreviousCharacter:", - "isCoalescing", - "isColor", - "isColumn", - "isColumnSelected:", - "isCompiled", - "isConnected", - "isContainer", - "isContentEditable", - "isContextHelpModeActive", - "isContinuous", - "isContinuousGrammarCheckingEnabled", - "isContinuousSpellCheckingEnabled", - "isCopyingOperation", - "isCurrListEditable", - "isDataRetained", - "isDaylightSavingTime", - "isDaylightSavingTimeForDate:", - "isDebugEnabled", - "isDeletableFileAtPath:", - "isDeleted", - "isDescendantOf:", - "isDescendantOfNode:", - "isDirectory", - "isDirectoryNode:", - "isDisconnectedMountPoint", - "isDisplayPostingDisabled", - "isDocumentEdited", - "isDone", - "isDragging", - "isDrawingContentAtIndex:", - "isDrawingToScreen", - "isDroppedConnectionException:", - "isEPSOperation", - "isEditable", - "isEditableIfEnabled", - "isEditableQuery", - "isEditing", - "isEditingAtIndex:withObject:", - "isEditingAtIndexPath:withObject:", - "isEditingWithObject:", - "isEjectable", - "isEmpty", - "isEmptyHTMLElement:", - "isEnabled", - "isEnabledForSegment:", - "isEndMark", - "isEnteringProximity", - "isEntryAcceptable:", - "isEnumeration", - "isEqual:", - "isEqualTo:", - "isEqualToArray:", - "isEqualToAttributedString:", - "isEqualToData:", - "isEqualToDate:", - "isEqualToDictionary:", - "isEqualToIndexSet:", - "isEqualToNumber:", - "isEqualToSet:", - "isEqualToString:", - "isEqualToTimeZone:", - "isEqualToValue:", - "isErrorStatusCode:", - "isExcludedFromWindowsMenu", - "isExecutableFileAtPath:", - "isExpandable:", - "isExpandableAtArrangedObjectIndexPath:", - "isExpanded", - "isExpandedNode:", - "isExtensionHidden", - "isFault", - "isFauxDisabled", - "isFauxDisabledNode:", - "isFetchInProgress", - "isFieldEditor", - "isFileListOrderedAscending", - "isFileListOrderedCaseSensitive", - "isFilePackageAtPath:", - "isFilePropertyDisplayed:", - "isFileURL", - "isFinishedDecoding", - "isFirstAndKey", - "isFixedPitch", - "isFlipped", - "isFloatingPanel", - "isFlushDisabled", - "isFlushWindowDisabled", - "isFontFixedPitch:", - "isFrameSet", - "isGatheringResults", - "isGreaterThan:", - "isGreaterThanOrEqualTo:", - "isHeartBeatThread", - "isHidden", - "isHiddenOrHasHiddenAncestor", - "isHighlighted", - "isHorizontal", - "isHorizontallyCentered", - "isHorizontallyResizable", - "isInInterfaceBuilder", - "isInMotion", - "isIndeterminate", - "isInserted", - "isInvalidationCapableObject:withSelector:", - "isItemExpanded:", - "isItemSelected", - "isItemShownInPopupIfSoleEntry:", - "isJavaEnabled", - "isJavaPlugIn", - "isJavaScriptEnabled", - "isKey:inTable:", - "isKeyExcludedFromWebScript:", - "isKeyWindow", - "isKindOf:", - "isKindOfClass:", - "isKindOfClassNamed:", - "isLeaf", - "isLenient", - "isLessThan:", - "isLessThanOrEqualTo:", - "isLike:", - "isLinearX0:y0:x1:y1:x2:y2:", - "isList", - "isLoaded", - "isLoading", - "isLocationRequiredToCreate", - "isLocationRequiredToCreateForKey:", - "isLocking", - "isMainWindow", - "isMakeHistoryEnabled", - "isManyToMany", - "isMaster", - "isMemberOf:", - "isMemberOfClass:", - "isMemberOfClassNamed:", - "isMiniaturized", - "isMovable", - "isMovableByWindowBackground", - "isMultiThreaded", - "isMutable", - "isMuted", - "isNSIDispatchProxy", - "isNativeType:", - "isNegation", - "isNewWindowEqualToOldWindow", - "isNotEqualTo:", - "isNull", - "isObjectID:equalTo:", - "isObjectTableColumnDataCell:", - "isObscured", - "isOneShot", - "isOneway", - "isOpaque", - "isOpen", - "isOptional", - "isPackage", - "isPaged", - "isPartialStringValid:newEditingString:errorDescription:", - "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:", - "isPlaceholderForMarkerExplicitlySet:", - "isPlanar", - "isPlaying", - "isPlugInView:", - "isPluginViewStarted", - "isPreview", - "isPreviewColumn", - "isPrimaryKey", - "isProxy", - "isQuery", - "isQuickTimePlugIn", - "isReadOnly", - "isReadableFileAtPath:", - "isRedoing", - "isReflexive", - "isRegularFile", - "isRelationship", - "isReleasedWhenClosed", - "isReloading", - "isResizable", - "isRichText", - "isRightToLeft", - "isRootEntity", - "isRotatedFromBase", - "isRotatedOrScaledFromBase", - "isRowSelected:", - "isRulerVisible", - "isRunning", - "isScalarProperty", - "isScrollable", - "isSearchable", - "isSecure", - "isSelectable", - "isSelected", - "isSelectedForSegment:", - "isSelectionByRect", - "isSelectionEditable", - "isSelectorExcludedFromWebScript:", - "isSeparatorItem", - "isSessionOnly", - "isSheet", - "isSimpleRectangularTextContainer", - "isSingleAttribute:", - "isSingleDTDNode", - "isSingleTableEntity", - "isSizeDisplayedForNode:", - "isSpeaking", - "isStandalone", - "isStarted", - "isStatusBarVisible", - "isSubclassOfClass:", - "isSubsetOfSet:", - "isSubviewCollapsed:", - "isSuperclassOfClass:", - "isSymbolicLink", - "isTargetItem", - "isTemporary", - "isTemporaryID", - "isTestingInterface", - "isTitled", - "isToMany", - "isToManyKey:", - "isToOne", - "isTornOff", - "isTracking", - "isTransient", - "isTransparent", - "isTrue", - "isTypeNotExclusive:", - "isUndoing", - "isUpdated", - "isUsableWithObject:", - "isValid", - "isValidGlyphIndex:", - "isVertical", - "isVerticallyCentered", - "isVerticallyResizable", - "isViewOfPickerLoaded:", - "isVirtual", - "isVisible", - "isVolume", - "isWellFormed", - "isWindowInFocusStack:", - "isWindowLoaded", - "isWord:inDictionaries:caseSensitive:", - "isWordInUserDictionaries:caseSensitive:", - "isWritableFileAtPath:", - "isZoomed", - "isaForAutonotifying", - "islamicCalendar", - "islamicCivilCalendar", - "issueCopyCommand", - "issueCutCommand", - "issuePasteCommand", - "item", - "itemAdded:", - "itemArray", - "itemAtIndex:", - "itemAtRow:", - "itemChanged:", - "itemForURL:", - "itemForURLString:", - "itemHeight", - "itemIdentifier", - "itemIdentifierForColorPicker:", - "itemMatrix", - "itemObjectValueAtIndex:", - "itemRemoved:", - "itemTitleAtIndex:", - "itemTitles", - "itemWithTag:", - "itemWithTitle:", - "items", - "ivar", - "japaneseCalendar", - "javaScriptCanOpenWindowsAutomatically", - "jobDisposition", - "jobWillBeDeallocated", - "joinSemantic", - "joinWithSourceAttributeName:destinationAttributeName:", - "joins", - "joinsForRelationship:", - "jumpSlider:", - "jumpToSelection", - "jumpToSelection:", - "justifyWithFactor:", - "keepBackupFile", - "kernelsWithString:", - "key", - "keyBackPointer", - "keyBindingManager", - "keyBindingManagerForClient:", - "keyBindingState", - "keyCell", - "keyClassDescription", - "keyCode", - "keyDown:", - "keyDown:inRect:ofView:", - "keyEnumerator", - "keyEquivalent", - "keyEquivalentAttributedString", - "keyEquivalentFont", - "keyEquivalentModifierMask", - "keyEquivalentOffset", - "keyEquivalentRectForBounds:", - "keyEquivalentWidth", - "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", - "keyForFileWrapper:", - "keyForParameter:", - "keyMessageForEvent:", - "keyPath", - "keyPathExpressionForString:", - "keyPathForBinding:", - "keyPathIfAffectedByValueForKey:exactMatch:", - "keySpecifier", - "keyUp:", - "keyUp:inRect:ofView:", - "keyValueBindingForKey:typeMask:", - "keyViewSelectionDirection", - "keyWindow", - "keyWindowFrameHighlightColor", - "keyWindowFrameShadowColor", - "keyWithAppleEventCode:", - "keyboardFocusIndicatorColor", - "keyboardUIMode", - "keys", - "keywordForDescriptorAtIndex:", - "kind", - "knobColor", - "knobProportion", - "knobRectFlipped:", - "knobThickness", - "knownKeyValuesForObjectID:withContext:", - "knownKeyValuesPointer", - "knowsPageRange:", - "knowsPagesFirst:last:", - "label", - "labelColor", - "labelFontOfSize:", - "labelForSegment:", - "labelOnlyMenuDidSendActionNotification:", - "labelRectOfRow:", - "labelSizeForBounds:", - "lanczosTable", - "language", - "languageCode", - "languageContext", - "languageContextWithName:", - "languageLevel", - "languageModel", - "languageName", - "languageWithName:", - "lastChild", - "lastColumn", - "lastComponent:", - "lastComponentOfFileName", - "lastConversation", - "lastCrayon", - "lastIndex", - "lastItem", - "lastModifiedDate", - "lastObject", - "lastPathComponent", - "lastRange", - "lastResortFont", - "lastSelectedItem", - "lastVisibleColumn", - "launch", - "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:", - "launchApplication:", - "launchRealPlayer", - "launchWithDictionary:", - "launchedApplications", - "launchedTaskWithLaunchPath:arguments:", - "layout", - "layoutControlGlyphForLineFragment:", - "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:", - "layoutGlyphsInHorizontalLineFragment:baseline:", - "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:", - "layoutManager", - "layoutManager:didCompleteLayoutForTextContainer:atEnd:", - "layoutManagerDidInvalidateLayout:", - "layoutManagerOwnsFirstResponderInWindow:", - "layoutManagers", - "layoutOptions", - "layoutParagraphAtPoint:", - "layoutRectForTextBlock:atIndex:effectiveRange:", - "layoutTab", - "layoutToFitInIconWidth:", - "layoutToFitInMinimumIconSize", - "layoutToFitInViewerFrameHeight:", - "layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:", - "lazyBrowserCell", - "lazyGetChildrenForNodeWithIdentifier:", - "lazySync:", - "leading", - "leadingOffset", - "leafKeyPath", - "learnWord:", - "learnWord:language:", - "leftChild", - "leftExpression", - "leftIndentMarkerWithRulerView:location:", - "leftMargin", - "leftSplitItem", - "leftTabMarkerWithRulerView:location:", - "leftView", - "length", - "letterCharacterSet", - "level", - "levelForItem:", - "levelForRow:", - "libxml2Content", - "lightGrayColor", - "lightweightHandleChildChanged:parent:property:", - "like:", - "limitDateForMode:", - "lineBreakBeforeIndex:withinRange:", - "lineBreakByHyphenatingBeforeIndex:withinRange:", - "lineBreakHandler", - "lineBreakInString:beforeIndex:withinRange:useBook:", - "lineBreakMode", - "lineCapStyle", - "lineFragmentPadding", - "lineFragmentRectForGlyphAtIndex:effectiveRange:", - "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", - "lineFragmentRectForProposedRect:remainingRect:", - "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:", - "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:", - "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", - "lineFragmentWidth", - "lineHeightMultiple", - "lineJoinStyle", - "lineNumber", - "lineRangeForRange:", - "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", - "loadData:MIMEType:textEncodingName:baseURL:", - "loadDataRepresentation:ofType:", - "loadDidFinish", - "loadDidSucceed", - "loadEmptyDocumentSynchronously", - "loadFaces:", - "loadFileWrapperRepresentation:ofType:", - "loadFindStringFromPasteboard", - "loadFindStringToPasteboard", - "loadFinished", - "loadFromURL:error:", - "loadImage:", - "loadImageHeader", - "loadImageWithName:", - "loadInBackground", - "loadInForeground", - "loadKernel", - "loadLibrary:", - "loadNib", - "loadNibFile:externalNameTable:withZone:", - "loadNibNamed:owner:", - "loadPanelNamed:", - "loadPlugIn", - "loadPlugIn:allowNonExecutable:", - "loadPluginRequest:", - "loadRecipeOverrides:", - "loadRequest:", - "loadRequest:inTarget:withNotifyData:sendNotification:", - "loadRulebook:", - "loadSoundWithName:", - "loadSuiteWithDictionary:fromBundle:", - "loadSuitesFromBundle:", - "loadTidy", - "loadType", - "loadUI", - "loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:", - "loadWindow", - "loadWithRequest:", - "loadWithRequestNow:", - "loadedBundles", - "loadedCellAtRow:column:", - "loadsImagesAutomatically", - "localName", - "localNameForName:", - "localObjects", - "localProxies", - "localSnapshotForGlobalID:", - "localSnapshotForSourceGlobalID:relationshipName:", - "localTimeZone", - "locale", - "localeIdentifier", - "localizationDictionary", - "localizations", - "localizationsToSearch", - "localizedCaseInsensitiveCompare:", - "localizedColorNameComponent", - "localizedCompare:", - "localizedDescription", - "localizedEntityNameForEntity:", - "localizedFormattedDisplayLabels", - "localizedInfoDictionary", - "localizedInputManagerName", - "localizedModelStringForKey:", - "localizedName", - "localizedNameForFamily:face:", - "localizedNameOfStringEncoding:", - "localizedPropertyNameForProperty:", - "localizedRecoveryOptions", - "localizedRecoverySuggestion", - "localizedStringForKey:value:table:", - "localizedStringWithFormat:", - "localizesFormat", - "location", - "locationForGlyphAtIndex:", - "locationForSubmenu:", - "locationInWindow", - "locationOfPrintRect:", - "locationProperties", - "locationX", - "locationY", - "locationZ", - "lock", - "lockDocument", - "lockFocus", - "lockFocusForView:inRect:needsTranslation:", - "lockFocusIfCanDraw", - "lockFocusIfCanDrawInFrame:flipped:clip:", - "lockFocusOnRepresentation:", - "lockForReading", - "lockForReadingWithExceptionHandler:", - "lockForWriting", - "lockObjectStore", - "lockParentStore", - "lockWhenCondition:", - "lockWhenCondition:beforeDate:", - "logicalSize", - "loginWindowDidSwitchFromUser:", - "loginWindowDidSwitchToUser:", - "logonButtonCell", - "longCharacterIsMember:", - "longLongValue", - "longValue", - "loopCount", - "loosenKerning:", - "lossyCString", - "lowerBaseline:", - "lowercaseLetterCharacterSet", - "lowercaseString", - "machPort", - "magentaColor", - "magentaComponent", - "mainBundle", - "mainDocumentURL", - "mainFrame", - "mainMenu", - "mainResource", - "mainScreen", - "mainWindow", - "mainWindowFrameColor", - "mainWindowFrameHighlightColor", - "mainWindowFrameShadowColor", - "maintainsInactiveSelection", - "makeCellAtRow:column:", - "makeCharacterSetCompact", - "makeCharacterSetFast", - "makeCurrentContext", - "makeDocumentForURL:withContentsOfURL:ofType:error:", - "makeDocumentWithContentsOfFile:ofType:", - "makeDocumentWithContentsOfURL:ofType:error:", - "makeFirstResponder:", - "makeIdentity", - "makeImmutable", - "makeKeyAndOrderFront:", - "makeKeyWindow", - "makeMainWindow", - "makeNewConnection:sender:", - "makeNextSegmentKey", - "makeObjectsPerformSelector:", - "makeObjectsPerformSelector:withObject:", - "makePreviousSegmentKey", - "makeRegexFindSafe:", - "makeRegexSafe:", - "makeStale", - "makeTextLarger:", - "makeTextSmaller:", - "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", - "markerWithRulerMarker:parent:", - "markers", - "markupStringFromNode:nodes:", - "markupStringFromRange:nodes:", - "matchLabels:againstElement:", - "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:", - "matches:", - "matchesOnMultipleResolution", - "matchesPattern:caseInsensitive:", - "matchesWithoutOperatorComponentsKeyPath:", - "matchingFontDescriptorsWithMandatoryKeys:", - "matrix", - "matrixInColumn:", - "max", - "maxContentSize", - "maxCount", - "maxDate", - "maxFormattedDisplayLabelWidth", - "maxSize", - "maxValue", - "maxWidth", - "maximizeWindow:", - "maximum", - "maximumDecimalNumber", - "maximumHeight", - "maximumLength", - "maximumLineHeight", - "maximumRange", - "maximumRecentDocumentCount", - "mayDHTMLCopy", - "mayDHTMLCut", - "mayDHTMLPaste", - "mayStartDragAtEventLocation:", - "mblurROI:forRect:userInfo:", - "measurementUnits", - "measurements:fromResolutionData:", - "mediaBox", - "mediaStyle", - "member:", - "menu", - "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", - "mergeAttributesInto:", - "mergeCells", - "mergeFontFeaturesInto:", - "mergeFontVariationsInto:", - "mergeInVariations:", - "mergeStyleInto:", - "mergedModelFromBundles:", - "messageFontOfSize:", - "metadataColumns", - "metadataForPersistentStoreWithURL:error:", - "metadataQuery:replacementObjectForResultObject:", - "metadataQuery:replacementValueForAttribute:value:", - "method", - "methodArgSize:", - "methodDescriptionForSelector:", - "methodFor:", - "methodForSelector:", - "methodReturnLength", - "methodReturnType", - "methodSignature", - "methodSignatureForSelector:", - "methods", - "migratePersistentStore:toURL:withType:error:", - "minColumnWidth", - "minContentSize", - "minContentSizeForMinFrameSize:styleMask:", - "minCount", - "minDate", - "minFrameSize", - "minFrameSizeForMinContentSize:styleMask:", - "minFrameWidthWithTitle:styleMask:", - "minPickerContentSize", - "minSize", - "minValue", - "minWidth", - "miniaturize:", - "minimizeButton", - "minimizeWindow:", - "minimum", - "minimumDecimalNumber", - "minimumFontSize", - "minimumHeight", - "minimumLineHeight", - "minimumLogicalFontSize", - "minimumWidth", - "miniwindowTitle", - "minusSet:", - "minuteOfHour", - "miterLimit", - "mixedStateImage", - "mnemonic", - "mnemonicLocation", - "modDate", - "modalWindow", - "mode", - "modeButton", - "model", - "modelAndProxyKeysObserved", - "modelByMergingModels:", - "modifier", - "modifierFlags", - "modifiersForEvent:", - "modifyFont:", - "modifyFontTrait:", - "modifyFontViaPanel:", - "moduleCanBeRemoved", - "moduleWasInstalled", - "moduleWillBeRemoved", - "monthOfYear", - "mostCompatibleStringEncoding", - "mountedRemovableMedia", - "mouse:", - "mouse:inRect:", - "mouseDown:", - "mouseDownCanMoveWindow", - "mouseDownFlags", - "mouseDownOnCharacterIndex:atCoordinate:withModifier:client:", - "mouseDragged:", - "mouseDraggedOnCharacterIndex:atCoordinate:withModifier:client:", - "mouseEntered:", - "mouseEnteredToolTip:inWindow:withEvent:", - "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", - "mouseExited:", - "mouseLocation", - "mouseLocationOutsideOfEventStream", - "mouseMoved:", - "mouseMovedNotification:", - "mouseTracker:constrainPoint:withEvent:", - "mouseTracker:didStopTrackingWithEvent:", - "mouseTracker:handlePeriodicEvent:", - "mouseTracker:shouldContinueTrackingWithEvent:", - "mouseTracker:shouldStartTrackingWithEvent:", - "mouseUp:", - "mouseUpOnCharacterIndex:atCoordinate:withModifier:client:", - "moveBackward:", - "moveBackwardAndModifySelection:", - "moveColumn:toColumn:", - "moveCurrentPointInDirection:", - "moveDown:", - "moveDragCaretToPoint:", - "moveForward:", - "moveForwardAndModifySelection:", - "moveGlyphsTo:from:", - "moveInDirection:", - "moveLeft:", - "movePath:toPath:handler:", - "moveRight:", - "moveSelectionToDragCaret:smartMove:", - "moveToPoint:", - "moveUp:", - "moveWordBackward:", - "moveWordBackwardAndModifySelection:", - "moveWordForward:", - "moveWordForwardAndModifySelection:", - "movie", - "movieController", - "movieRect", - "movieUnfilteredFileTypes", - "movieUnfilteredPasteboardTypes", - "multipleThreadsEnabled", - "multiply:by:", - "mutableArrayValueForBinding:resolveMarkersToPlaceholders:", - "mutableArrayValueForKey:", - "mutableArrayValueForKeyPath:", - "mutableAttributes", - "mutableBytes", - "mutableCollectionGetter", - "mutableCopy", - "mutableCopyWithZone:", - "mutableSetValueForBinding:resolveMarkersToPlaceholders:", - "mutableSetValueForKey:", - "mutableSetValueForKeyPath:", - "mutableString", - "mutableSubstringFromRange:", - "mutatingMethods", - "name", - "nameAtIndex:filtered:", - "nameFieldLabel", - "nameFromPath:extra:", - "names", - "namesOfPromisedFilesDroppedAtDestination:", - "namespaceForPrefix:", - "namespaces", - "navNodeClass", - "navNodeWithSimpleQueryString:", - "navView", - "navView:compareFilename:with::caseSensitive:", - "navView:compareFilename:with:caseSensitive:", - "navView:shouldShowNode:", - "needsAction", - "needsDelegate", - "needsDisplay", - "needsLayout", - "needsPanelToBecomeKey", - "needsResyncWithDefaultVoice", - "needsSizing", - "needsToDrawRect:", - "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:", - "networkNode", - "new", - "new:firstIndirectType:", - "newCloseButton", - "newColor:", - "newColorName:", - "newConversation", - "newCount:", - "newCreateTableStatementForEntity:", - "newCreateTableStatementForManyToMany:", - "newDataAvailable", - "newDeleteStatementWithCorrelation:", - "newDeleteStatementWithRow:", - "newDistantObjectWithCoder:", - "newDocument:", - "newFetchedArray", - "newFetchedRow", - "newFetchedRowForObjectID:", - "newFetchedRowsForObjectID:forManyToMany:", - "newFetchedRowsForObjectID:forToMany:", - "newFileButton", - "newFlipped:", - "newForeignEntityKeyNumberForSlot:", - "newForeignKeyID:entity:", - "newForeignKeyNumberForSlot:", - "newGeneratorWithStatement:", - "newInsertStatementWithCorrelation:", - "newInsertStatementWithRow:", - "newInsertedObject", - "newInstanceWithKeyCount:sourceDescription:destinationDescription:zone:", - "newInvocationWithCoder:", - "newInvocationWithMethodSignature:", - "newLegalColorSwatchHeightFromHeight:", - "newListName:", - "newMiniaturizeButton", - "newNode", - "newNodeWithIndex:belowIndexPath:firstChild:sibling:", - "newObject", - "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:zone:", - "newWithKey:object:", - "newWithKeyArray:", - "newWithKeyArray:zone:", - "newWithPath:prepend:attributes:cross:", - "newZoomButton", - "nextEventForWindow:", - "nextEventMatchingMask:", - "nextEventMatchingMask:untilDate:inMode:dequeue:", - "nextKeyView", - "nextKeyViewInsideWebFrameViews", - "nextKeyViewOutsideWebFrameViews", - "nextObject", - "nextPK64", - "nextResponder", - "nextSibling", - "nextState", - "nextToken", - "nextValidKeyView", - "nextWordFromIndex:forward:", - "nextWordInString:fromIndex:useBook:forward:", - "nibInstantiate", - "nibInstantiateWithOwner:topLevelObjects:", - "nilSymbol", - "noGCAllowedObjectCount", - "noResponderFor:", - "node", - "nodeAtIndexPath:", - "nodeFromManagedObject:objectIDMap:", - "nodeType", - "nodeWithFBENode:", - "nodeWithName:position:rect:view:children:", - "nodeWithName:value:source:children:", - "nodeWithPath:", - "nodesForXPath:error:", - "nodesFromList:", - "noiseImage", - "nonBaseCharacterSet", - "nonmutatingMethods", - "nonretainedObjectValue", - "normalSpeakingRate", - "normalizeAdjacentTextNodesPreservingCDATA:", - "normalizeWhitespace:", - "normalizedFontDescriptor", - "normalizedRect:", - "notANumber", - "notANumberSymbol", - "notActiveWindowFrameColor", - "notActiveWindowFrameHighlightColor", - "notActiveWindowFrameShadowColor", - "notPredicateOperator", - "notShownAttributeForGlyphAtIndex:", - "notationName", - "noteContentValueHasChanged", - "noteFileSystemChanged:", - "noteFontCollectionsChanged", - "noteHeightOfRowsWithIndexesChanged:", - "noteNewRecentDocument:", - "noteNewRecentDocumentURL:", - "noteNumberOfItemsChanged", - "noteNumberOfRowsChanged", - "noteQueryAttributesChanged", - "notificationCenter", - "notificationCenterForType:", - "notificationWithName:object:", - "notificationWithName:object:userInfo:", - "notifyData", - "null", - "nullDescriptor", - "numPendingOrLoadingRequests", - "numRowsToToggleVisible", - "numberOfArguments", - "numberOfColorComponents", - "numberOfColumns", - "numberOfComponents", - "numberOfGlyphs", - "numberOfGroups", - "numberOfImages", - "numberOfItems", - "numberOfItemsInComboBox:", - "numberOfItemsInComboBoxCell:", - "numberOfItemsInMenu:", - "numberOfMajorTickMarks", - "numberOfPages", - "numberOfPlanes", - "numberOfRows", - "numberOfRowsInTableView:", - "numberOfSelectedColumns", - "numberOfSelectedRows", - "numberOfTabViewItems", - "numberOfTickMarks", - "numberOfVisibleCols", - "numberOfVisibleColumns", - "numberOfVisibleItems", - "numberOfVisibleRows", - "numberWithBool:", - "numberWithChar:", - "numberWithDouble:", - "numberWithFloat:", - "numberWithInt:", - "numberWithLong:", - "numberWithLongLong:", - "numberWithShort:", - "numberWithUnsignedChar:", - "numberWithUnsignedInt:", - "numberWithUnsignedLong:", - "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:", - "objectClass", - "objectCount", - "objectDidBeginEditing:", - "objectDidEndEditing:", - "objectDidTriggerAction:", - "objectDidTriggerDoubleClickAction:", - "objectEnumerator", - "objectForIndex:dictionary:", - "objectForInfoDictionaryKey:", - "objectForKey:", - "objectForKey:inDomain:", - "objectForServicePath:", - "objectForServicePath:app:doLaunch:limitDate:", - "objectForWebScript", - "objectFrom:withIndex:", - "objectID", - "objectIDDataSize", - "objectIDDataType", - "objectIDFactoryForEntity:", - "objectIDFactoryForSQLEntity:", - "objectIDWithInteger32:", - "objectIDWithInteger64:", - "objectIDWithObject:", - "objectIDsForRelationship:forObjectID:", - "objectLoadedFromCacheWithURL:response:size:", - "objectMechanismsRequired", - "objectMechanismsRequiredForObject:", - "objectRegisteredForID:", - "objectSpecifier", - "objectStore", - "objectValue", - "objectValueForDisplayValue:", - "objectValueInvalidationCapableObjectForObject:", - "objectValueOfSelectedItem", - "objectValues", - "objectWillChange:", - "objectZone", - "objectsAtIndexes:", - "objectsByEvaluatingSpecifier", - "objectsByEvaluatingWithContainers:", - "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", - "oldSystemColorWithCoder:", - "onStateImage", - "oneOrMoreDescriptionsForSubelementName:", - "opaqueAncestor", - "open", - "open:", - "openAppleMenuItem:", - "openCategoryFile:", - "openDocument:", - "openDocumentWithContentsOfFile:display:", - "openDocumentWithContentsOfURL:display:error:", - "openFile:", - "openFile:ok:", - "openFile:withApplication:", - "openFile:withApplication:andDeactivate:", - "openFirstDrawer:", - "openFrameInNewWindow:", - "openGLContext", - "openHandCursor", - "openHelpAnchor:inBook:", - "openImageInNewWindow:", - "openInclude:", - "openLinkInNewWindow:", - "openListFromFile:", - "openNewWindowWithURL:element:", - "openOnEdge:", - "openPanel", - "openResourceFile", - "openRoot", - "openTempFile:ok:", - "openURL:", - "openURL:reload:contentType:refresh:lastModified:pageCache:", - "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:", - "openUntitledDocumentAndDisplay:error:", - "openUntitledDocumentOfType:display:", - "openUserDictionary:", - "openWithApplication", - "openWithFinder:", - "operand", - "operatingSystem", - "operationNotAllowedCursor", - "operatorType", - "operatorWithCustomSelector:modifier:", - "operatorWithType:modifier:options:", - "optionalSharedHistory", - "options", - "optionsAttributes", - "optionsFromPanel", - "orPredicateOperator", - "orangeColor", - "orderAdapterOperations", - "orderFront", - "orderFront:", - "orderFrontCharacterPalette:", - "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:flags:", - "orderSurface:relativeTo:", - "orderWindow:relativeTo:", - "orderedDocuments", - "orderedItemsLastVisitedOnDay:", - "orderedLastVisitedDays", - "orderedWindows", - "orientation", - "origin", - "originalBodyStream", - "originalURLString", - "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", - "otherMouseDown:", - "otherMouseDragged:", - "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:", - "outlineView:willDisplayCell:forTableColumn:row:", - "outlineView:willDisplayOutlineCell:forTableColumn:item:", - "outlineView:willDisplayOutlineCell:forTableColumn:row:", - "outlineView:writeItems:toPasteboard:", - "outputFormat", - "outputImage", - "outputKeys", - "overrideMediaType", - "owner", - "ownerDocument", - "ownsDestinationObjectsForRelationshipKey:", - "pListForPath:createFile:", - "page", - "pageCache", - "pageCacheSize", - "pageCount", - "pageDown:", - "pageFooter", - "pageHeader", - "pageLayout", - "pageOrder", - "pageSizeForPaper:", - "pageTitle", - "pageUp:", - "pair", - "paletteFontOfSize:", - "paletteImageRep", - "paletteLabel", - "panel", - "panel:compareFilename:with:caseSensitive:", - "panel:directoryDidChange:", - "panel:isValidFilename:", - "panel:shouldShowFilename:", - "panel:userEnteredFilename:confirmed:", - "panel:willExpand:", - "panelConvertFont:", - "panelSelectionDidChange:", - "paperSize", - "paragraphAttributesAtIndex:effectiveRange:inRange:", - "paragraphCharacterRange", - "paragraphGlyphRange", - "paragraphRangeForRange:", - "paragraphSeparatorCharacterRange", - "paragraphSpacing", - "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:", - "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:", - "paragraphSpacingBefore", - "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:", - "paramDescriptorForKeyword:", - "parameter:differs:from:", - "parent", - "parentCrayonRow", - "parentCrayonView", - "parentForItem:", - "parentFrame", - "parentItemRepresentedObjectForMenu:", - "parentNode", - "parentObject", - "parentObjectUnignored", - "parentSpecifier", - "parentStore", - "parentWindow", - "parse", - "parse:", - "parseError:", - "parseKey:", - "parseMachMessage:localPort:remotePort:msgid:components:", - "parseMetaSyntaxLeafResultShouldBeSkipped:", - "parseSeparatorEqualTo:", - "parseStream", - "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:", - "parseTokenEqualTo:mask:", - "parseTokenWithMask:", - "parser:didEndElement:namespaceURI:qualifiedName:", - "parser:didStartElement:namespaceURI:qualifiedName:attributes:", - "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:", - "parser:foundCDATA:", - "parser:foundCharacters:", - "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:", - "partWithCode:parent:", - "partialControllerKey", - "partialObjectKey", - "passesFilterAtIndex:", - "password", - "paste:", - "pasteFont:", - "pasteImageNamed:", - "pasteRuler:", - "pasteboard:provideDataForType:", - "pasteboard:provideDataForType:itemIdentifier:", - "pasteboardByFilteringFile:", - "pasteboardByFilteringTypesInPasteboard:", - "pasteboardChangedOwner:", - "pasteboardTypesForSelection", - "pasteboardWithName:", - "pasteboardWithUniqueName", - "path", - "pathByResolvingSymlinksAndAliasesInPath:", - "pathComponents", - "pathContentOfSymbolicLinkAtPath:", - "pathExpression", - "pathExtension", - "pathForImageResource:", - "pathForResource:ofType:", - "pathForResource:ofType:inDirectory:forLocalization:", - "pathForSoundResource:", - "pathStoreWithCharacters:length:", - "pathToColumn:", - "pathWithComponents:", - "pathnameForDatabase", - "pathsForResourcesOfType:inDirectory:", - "pathsForResourcesOfType:inDirectory:forLocalization:", - "patternImage", - "pausedActions", - "peerCertificateChain", - "percentEscapeDecodeBuffer:range:stripWhitespace:", - "perform:", - "perform:with:", - "perform:with:with:", - "perform:withEachObjectInArray:", - "performAction:", - "performActionFlashForItemAtIndex:", - "performActionForItemAtIndex:", - "performActionWithHighlightingForItemAtIndex:", - "performActivity:modes:", - "performAdapterOperation:", - "performAdapterOperations:", - "performChanges", - "performClick", - "performClick:", - "performClickWithFrame:inView:", - "performClose:", - "performDefaultImplementation", - "performDelayedComplete", - "performDragOperation:", - "performFindPanelAction:", - "performFindPanelAction:forClient:", - "performHTTPHeaderRead:", - "performKeyEquivalent:", - "performMenuAction:withTarget:", - "performMiniaturize:", - "performMnemonic:", - "performOperationUsingObject:andObject:", - "performPrimitiveOperationUsingObject:andObject:", - "performRemoveObjectForKey:", - "performSelector:", - "performSelector:object:afterDelay:", - "performSelector:target:argument:order:modes:", - "performSelector:withObject:", - "performSelector:withObject:afterDelay:", - "performSelector:withObject:afterDelay:inModes:", - "performSelector:withObject:withObject:", - "performSelector:withObject:withObject:withObject:", - "performSelectorOnMainThread:withObject:waitUntilDone:", - "performSelectorOnMainThread:withObject:waitUntilDone:modes:", - "performSetObject:forKey:", - "performStreamRead", - "performStreamRead:", - "performZoom:", - "performsContentDecoding", - "performv::", - "persistence", - "persistenceStore", - "persistentDomainForName:", - "persistentStore", - "persistentStoreCoordinator", - "persistentStoreForURL:", - "persistentStoreTypeForFileType:", - "persistentStores", - "physicalSize", - "pipe", - "pixelsHigh", - "pixelsWide", - "pk64", - "placeButtons:firstWidth:secondWidth:thirdWidth:", - "placeholderAttributedString", - "placeholderForMarker:", - "placeholderString", - "play", - "plugInViewWithArguments:", - "plugInViewWithArguments:fromPluginPackage:", - "plugin", - "pluginClassForObject:andBinderClass:requiredPluginProtocol:", - "pluginDescription", - "pluginDestroy", - "pluginForExtension:", - "pluginForKey:withEnumeratorSelector:", - "pluginForMIMEType:", - "pluginInitialize", - "pluginPointer", - "pluginScriptableObject", - "pluginStart", - "pluginStop", - "pluginViewWithArguments:", - "pluginViewWithPackage:attributeNames:attributeValues:baseURL:", - "pluginWithPath:", - "plugins", - "pluginsInfo", - "pointSize", - "pointToOffset:style:position:reversed:includePartialGlyphs:", - "pointValue", - "pointerID", - "pointerSerialNumber", - "pointerType", - "pointerValue", - "pointingDeviceID", - "pointingDeviceSerialNumber", - "pointingDeviceType", - "pointingHandCursor", - "policyDelegate", - "pollForAppletInView:", - "pollForAppletInWindow:", - "pop", - "popAndInvoke", - "popBundleForImageSearch", - "popGlyph:", - "popSubnode", - "popTopView", - "popUndoObject", - "popUp:", - "popUpContextMenu:withEvent:forView:", - "popUpContextMenu:withEvent:forView:withFont:", - "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:", - "populateCacheFromStream:data:", - "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:", - "popupStatusBarMenu:inRect:ofView:withEvent:", - "port", - "portCoderWithComponents:", - "portForName:", - "portForName:host:", - "portForName:host:nameServerPortNumber:", - "portList", - "portalDied:", - "poseAs:", - "poseAsClass:", - "position", - "positionButton", - "positionOfGlyph:forCharacter:struckOverRect:", - "positionOfGlyph:forLongCharacter:struckOverRect:", - "positionOfGlyph:precededByGlyph:isNominal:", - "positionOfGlyph:struckOverGlyph:metricsExist:", - "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:", - "positionRelativeToAttachedView", - "positiveFormat", - "positiveInfinitySymbol", - "postColorSwatchesChangedDistributedNotification", - "postEvent:atStart:", - "postNotification:", - "postNotificationName:object:", - "postNotificationName:object:userInfo:", - "postNotificationName:object:userInfo:deliverImmediately:", - "postNotificationName:object:userInfo:options:", - "postURL:target:len:buf:file:", - "postURLNotify:target:len:buf:file:notifyData:", - "postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:", - "postsFrameChangedNotifications", - "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", - "preferredLocalizationName", - "preferredLocalizations", - "preferredLocalizationsFromArray:", - "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:", - "preferredPlaceholderForMarker:", - "prefersAllColumnUserResizing", - "prefersColorMatch", - "prefersEnabledOverEditable:", - "prefersTrackingUntilMouseUp", - "prefix", - "prefixForName:", - "prepare", - "prepareBeginsWith:", - "prepareCallbacks", - "prepareComparisonPredicate:", - "prepareContent", - "prepareDeleteStatementWithCorrelation:", - "prepareDeleteStatementWithRow:", - "prepareEndsWith:", - "prepareForDragOperation:", - "prepareForReloadChildrenForNode:", - "prepareForSave", - "prepareForSave:", - "prepareGState", - "prepareIn:", - "prepareInsertStatementWithCorrelation:", - "prepareInsertStatementWithRow:", - "prepareLike:", - "prepareMatches:", - "prepareOpenGL", - "preparePageLayout:", - "prepareSQLStatement:", - "prepareSavePanel:", - "prepareSelectStatementWithFetchRequest:", - "prepareUpdateStatementWithRow:originalRow:", - "prepareWithInvocationTarget:", - "presentError:", - "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:", - "presentableDescription", - "presentableName", - "presentableNameForSpecifier:", - "presentableNames", - "presentationWindowForError:originatedInWindow:", - "preservesContentDuringLiveResize", - "preservesSelection", - "pressure", - "preventWindowOrdering", - "previewHelperClass", - "previousFailureCount", - "previousItem", - "previousKeyView", - "previousKeyViewInsideWebFrameViews", - "previousKeyViewOutsideWebFrameViews", - "previousSibling", - "previousValidKeyView", - "primaryKey", - "primaryKeyColumnDefinitions", - "primaryKeyForEntity:", - "primaryKeyGeneration", - "primaryKeys", - "primitiveType", - "primitiveValueForKey:", - "principalClass", - "print", - "print:", - "printDocument:", - "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:", - "printFile:ok:", - "printInfo", - "printInfoIsBeingDeallocated", - "printJobTitle", - "printOperationWithSettings:error:", - "printOperationWithView:", - "printOperationWithView:printInfo:", - "printPanel", - "printShowingPrintPanel:", - "printer", - "printerFont", - "printerWithType:", - "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:", - "priorityForFlavor:", - "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:", - "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:", - "propertyList", - "propertyListForType:", - "propertyListFromData:mutabilityOption:format:errorDescription:", - "propertyListFromStringsFileFormat", - "propertyMappings", - "propertyNamed:", - "propertyTableAtIndex:", - "propertyTableCount", - "propertyType", - "proposedCredential", - "protectionSpace", - "protocol", - "protocolCheckerWithTarget:protocol:", - "protocolFamily", - "prototype", - "provideImageData:bytesPerRow:origin::size::userInfo:", - "provideImageTexture:bounds:userInfo:", - "provideNewButtonImage", - "provideNewSubview:", - "provideNewView:", - "providerRespondingToSelector:", - "provisionalDataSource", - "provisionalItem", - "provisionalLoadStarted", - "proxyClass", - "proxyDictionary", - "proxyFor:fauxParent:", - "proxyForRulebookServer", - "proxyPropertiesForURL:", - "proxyType", - "proxyWithLocal:", - "proxyWithLocal:connection:", - "proxyWithTarget:connection:", - "publicID", - "publish", - "pullsDown", - "punctuationCharacterSet", - "purgeCookiesFromPrivateBrowsing", - "purpleColor", - "push", - "push:", - "pushBundleForImageSearch:", - "pushGlyph:", - "pushSubnode:", - "put:", - "put::", - "putByte:", - "putCell:atRow:column:", - "putLELong:", - "putLEWord:", - "queryNode", - "quotedStringRepresentation", - "raise", - "raise:format:", - "raise:format:arguments:", - "raise:toPower:", - "raiseBaseline:", - "raisesForNotApplicableKeys", - "range", - "rangeAtIndex:", - "rangeByAlteringCurrentSelection:direction:granularity:", - "rangeByAlteringCurrentSelection:verticalDistance:", - "rangeByExpandingSelectionWithGranularity:", - "rangeContainerClassDescription", - "rangeContainerObject", - "rangeCount", - "rangeForUserCharacterAttributeChange", - "rangeForUserCompletion", - "rangeForUserParagraphAttributeChange", - "rangeForUserTextChange", - "rangeOfCharacterFromSet:", - "rangeOfCharacterFromSet:options:", - "rangeOfCharacterFromSet:options:range:", - "rangeOfCharactersAroundCaret", - "rangeOfComposedCharacterSequenceAtIndex:", - "rangeOfString:", - "rangeOfString:options:", - "rangeOfString:options:range:", - "rangeOfTextBlock:atIndex:", - "rangeOfTextList:atIndex:", - "rangeOfTextTable:atIndex:", - "rangeValue", - "rangesForUserCharacterAttributeChange", - "rangesForUserParagraphAttributeChange", - "rangesForUserTextChange", - "rasterize:", - "rawData", - "readAlignedDataSize", - "readBinaryStoreFromData:originalPath:error:", - "readColors", - "readData:length:", - "readDataOfLength:", - "readDataOfLength:buffer:", - "readDataToEndOfFile", - "readDocumentFragment:", - "readDocumentFromPbtype:filename:", - "readFromData:ofType:error:", - "readFromData:options:documentAttributes:", - "readFromData:options:documentAttributes:error:", - "readFromFile:", - "readFromFile:error:", - "readFromFile:ofType:", - "readFromFileWrapper:ofType:error:", - "readFromURL:ofType:", - "readFromURL:ofType:error:", - "readFromURL:options:documentAttributes:", - "readFromURL:options:documentAttributes:error:", - "readInBackgroundAndNotifyForModes:", - "readInt", - "readLock", - "readMetadataFromFile:error:", - "readObsoleteBinaryStoreFromData:error:", - "readPrintInfo", - "readSelectionFromPasteboard:", - "readSelectionFromPasteboard:type:", - "readToEndOfFileInBackgroundAndNotify", - "readToEndOfFileInBackgroundAndNotifyForModes:", - "readUnlock", - "readablePasteboardTypes", - "readableTypes", - "realAddDirNamed:", - "realElement", - "reallyDealloc", - "reallyInsertObject:atIndex:", - "reallyRemoveAllObjects", - "reallyRemoveObject:", - "reallyRemoveObjectAtIndex:", - "reallyReplaceObjectAtIndex:withObject:", - "realm", - "reapplyStyles", - "reapplyStylesForDeviceType:", - "reason", - "reasonForError:", - "recacheAllColors:", - "recacheColor", - "recalcFigure:path:button:offset:", - "recalcFigureForResolution:", - "recalculateKeyViewLoop", - "receivePort", - "receivedData:", - "receivedData:textEncodingName:", - "receivedData:withDataSource:", - "receivedError:", - "receivedError:withDataSource:", - "receivedResponse:", - "receiversSpecifier", - "receivesCredentialSecurely", - "recentSearches", - "recentsAutosaveName", - "recipe", - "recipeDifference:with:", - "recipeDiffers:from:", - "recomputeToolTipsForView:remove:add:", - "reconcileSelfToSuiteRegistry:", - "reconcileSubdescriptionsToSuiteRegistry:", - "reconcileToCarbonWindowBounds", - "reconcileToSuiteRegistry:suiteName:", - "reconcileToSuiteRegistry:suiteName:className:", - "reconcileToSuiteRegistry:suiteName:commandName:", - "reconcileToSuiteRegistry:suiteName:recordTypeName:", - "reconnectBindings:", - "recordChangesInContext:", - "recordDatabaseOperation:", - "recordDeleteForObject:", - "recordDescriptor", - "recordPrimaryKeyForInsertedObject:", - "recordSnapshot:forGlobalID:", - "recordSnapshot:forSourceGlobalID:relationshipName:", - "recordSnapshots:", - "recordToManySnapshots:", - "recordUpdateForObject:", - "recoveryAttempter", - "recoveryOptionIndex", - "rect", - "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:", - "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:", - "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:", - "rectForIndex:", - "rectForKey:inTable:", - "rectForLayoutAtPoint:inRect:textContainer:characterRange:", - "rectForPage:", - "rectForPart:", - "rectForRolloverTracking", - "rectIncludingShadow", - "rectOfColumn:", - "rectOfItemAtIndex:", - "rectOfRow:", - "rectOfTickMarkAtIndex:", - "rectPreservedDuringLiveResize", - "rectValue", - "rectWithoutShadow", - "recycle", - "red", - "redColor", - "redComponent", - "redeliverStream", - "redirectedToURL:", - "redo", - "redo:", - "redoActionName", - "redoEditing:", - "redoMenuItemTitle", - "redoMenuTitleForUndoActionName:", - "reenableDisplayPosting", - "reenableFlush", - "reenableHeartBeating:", - "refCount", - "refaultObject:globalID:editingContext:", - "referenceBinder", - "referencedObjectCount", - "referrer", - "reflectScrolledClipView:", - "refrROI:forRect:", - "refreashUI", - "refresh", - "refreshDetailContent", - "refreshObjects:", - "refreshPlugins:", - "refusesFirstResponder", - "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:", - "registerName:", - "registerName:withNameServer:", - "registerObject:withServicePath:", - "registerPluginClass:forObjectClass:andBinderClass:", - "registerPort:name:", - "registerPort:name:nameServerPortNumber:", - "registerServicesMenuSendTypes:returnTypes:", - "registerTranslator:selector:toTranslateFromClass:", - "registerTranslator:selector:toTranslateFromDescriptorType:", - "registerURLHandleClass:", - "registerUndoOperation", - "registerUndoWithTarget:selector:object:", - "registerViewClass:representationClass:forMIMEType:", - "registeredImageRepClasses", - "registeredObjects", - "regularFileContents", - "rel", - "relatedIDsForKey:", - "relationship", - "relationshipDataWithSourceID:forRelationship:", - "relationshipDataWithSourceID:forRelationship:withContext:", - "relationshipDescription", - "relationshipMappings", - "relationshipNamed:", - "relationshipsByName", - "relativeLineToPoint:", - "relativePosition", - "relativeString", - "release", - "releaseAllPools", - "releaseCaches", - "releaseConnectionWithSynchronizePeerBinders:", - "releaseGState", - "releaseGlobally", - "releaseIconForURL:", - "releaseName:count:", - "releaseResources", - "releaseSQLStatement", - "releaseView:", - "relinquishFocus", - "reload", - "reload:", - "reloadChildrenForNode:", - "reloadColumn:", - "reloadData", - "reloadDefaultFontFamilies", - "reloadItem:reloadChildren:", - "reloadRootNode", - "rememberedSnapToIndex", - "remoteObjects", - "remove:", - "removeAllActions", - "removeAllActionsWithTarget:", - "removeAllBindVariables", - "removeAllContentObjectsInCellOrControl:", - "removeAllExpandedNodes", - "removeAllIndexes", - "removeAllItems", - "removeAllObjects", - "removeAllObjectsWithTarget:", - "removeAllPoints", - "removeAllSubNodes", - "removeAllToolTips", - "removeAllToolTipsForView:", - "removeAnimatingRenderer:", - "removeAttribute:range:", - "removeAttributeForName:", - "removeBinder:", - "removeBinding:", - "removeCharactersInString:", - "removeChild:", - "removeChildAtIndex:", - "removeChildWindow:", - "removeClassDescriptions:", - "removeClient:", - "removeCollection:", - "removeColor:", - "removeColorSheetDidEnd:returnCode:context:", - "removeColorWithKey:", - "removeColumns:", - "removeCommandDescriptions:", - "removeConnection:forKey:", - "removeConnection:fromRunLoop:forMode:", - "removeContextHelpForObject:", - "removeConversation", - "removeCredential:forProtectionSpace:", - "removeCursorRect:cursor:", - "removeDescriptorAtIndex:", - "removeDocument:", - "removeDragCaret", - "removeEditingStyleFromBodyElement", - "removeElementAtIndex:", - "removeElementsInRange:", - "removeElementsInRange:coalesceRuns:", - "removeEventListener:::", - "removeExpandedNode:", - "removeExpandedNodesStartingWithIndex:", - "removeFavoriteInWindow:", - "removeFile", - "removeFile:", - "removeFileAtPath:handler:", - "removeFileWrapper:", - "removeFontDescriptor:fromCollection:", - "removeFrameUsingName:", - "removeFreedView:", - "removeFreedWindow:", - "removeFromFrame", - "removeFromOriginLoadSet", - "removeFromRunLoop:forMode:", - "removeFromSuperview", - "removeFromSuperviewWithoutNeedingDisplay", - "removeHeartBeatView:", - "removeImmediately:", - "removeIndex:", - "removeIndexRange:", - "removeIndexes:", - "removeIndexesInRange:", - "removeItem:", - "removeItemAtIndex:", - "removeItemForURLString:", - "removeItemViewerAtIndex:", - "removeItemWithObjectValue:", - "removeItemWithTitle:", - "removeItems:", - "removeKeyEventHandler", - "removeLastObject", - "removeLayoutManager:", - "removeList:", - "removeListSheetDidEnd:returnCode:context:", - "removeListener:", - "removeLocal:", - "removeMarker:", - "removeMouseMovedObserver", - "removeNamespaceForPrefix:", - "removeObject:", - "removeObject:fromBothSidesOfRelationshipWithKey:", - "removeObject:fromPropertyWithKey:", - "removeObject:objectIDMap:", - "removeObject:range:identical:", - "removeObjectAt:", - "removeObjectAtArrangedObjectIndex:", - "removeObjectAtIndex:", - "removeObjectForKey:", - "removeObjectForKey:inDomain:", - "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:", - "removeObjectIdenticalTo:", - "removeObjects:", - "removeObjectsAtArrangedObjectIndexPaths:", - "removeObjectsAtArrangedObjectIndexes:", - "removeObjectsAtIndexes:", - "removeObjectsForKeys:", - "removeObjectsFromIndices:numIndices:", - "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:", - "removeObjectsInArray:", - "removeObjectsInRange:", - "removeObserver:", - "removeObserver:forKeyPath:", - "removeObserver:name:object:", - "removePathFromLibrarySearchPaths:", - "removePersistentStore:error:", - "removePort:forMode:", - "removePortForName:", - "removePortsFromAllRunLoops", - "removePortsFromRunLoop:", - "removeProxy:", - "removeRequestMode:", - "removeRow:", - "removeRows:", - "removeRunLoop:", - "removeServiceProvider:", - "removeSubNodeAtIndex:", - "removeSuperviewObservers", - "removeTabStop:", - "removeTable", - "removeTableColumn:", - "removeTemporaryAttribute:forCharacterRange:", - "removeTextContainerAtIndex:", - "removeToolTip:", - "removeToolTipForView:tag:", - "removeToolbarItem:", - "removeTrackingRect", - "removeTrackingRect:", - "removeValueAtIndex:fromPropertyWithKey:", - "removeView:fromView:layoutManager:", - "removeWebView:fromSetNamed:", - "removeWindowController:", - "removeWindowObservers", - "removeWindowsItem:", - "renameColor:", - "renameColorSheetDidEnd:returnCode:context:", - "renameList:", - "renameListSheetDidEnd:returnCode:context:", - "render:", - "renderResolutionData:toBitmap:width:height:bytesPerRow:", - "renderTreeAsExternalRepresentation", - "rendererWithFont:usingPrinterFont:", - "renderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:maximumWidth:", - "renderingMode", - "renewGState", - "renewRows:columns:", - "reopenDocumentForURL:withContentsOfURL:error:", - "rep", - "replaceAllInView:selectionOnly:", - "replaceAndFindInView:", - "replaceBytesInRange:withBytes:", - "replaceBytesInRange:withBytes:length:", - "replaceCharactersInRange:withAttributedString:", - "replaceCharactersInRange:withCString:length:", - "replaceCharactersInRange:withCharacters:length:", - "replaceCharactersInRange:withRTF:", - "replaceCharactersInRange:withRTFD:", - "replaceCharactersInRange:withString:", - "replaceChildAtIndex:withNode:", - "replaceElementsInRange:withElement:coalesceRuns:", - "replaceFile:path:", - "replaceGlyphAtIndex:withGlyph:", - "replaceInView:", - "replaceIndexReferenceModelObjectArrayWithEqualCopy:", - "replaceLayoutManager:", - "replaceNodeWithIdentifier:withDataFromDelegate:", - "replaceNodeWithIdentifier:withNode:", - "replaceObject:withObject:", - "replaceObjectAtIndex:withObject:", - "replaceObjectsAtIndexes:withObjects:", - "replaceObjectsInRange:withObject:length:", - "replaceObjectsInRange:withObjectsFromArray:", - "replaceObjectsInRange:withObjectsFromArray:range:", - "replaceOccurrencesOfString:withString:options:range:", - "replaceSelectionWithFragment:selectReplacement:smartReplace:", - "replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:", - "replaceSelectionWithNode:selectReplacement:smartReplace:", - "replaceSelectionWithText:selectReplacement:smartReplace:", - "replaceString:withString:ranges:options:inView:replacementRange:", - "replaceSubview:with:", - "replaceSubviewWith:", - "replaceTemporaryIDInObject:", - "replaceTextStorage:", - "replaceValueAtIndex:inPropertyWithKey:withValue:", - "replacementClassForClass:", - "replacementObjectForArchiver:", - "replacementObjectForCoder:", - "replacementObjectForKeyedArchiver:", - "replacementObjectForPortCoder:", - "replyAppleEventForSuspensionID:", - "replyEvent", - "replyToApplicationShouldTerminate:", - "replyWithException:", - "reportClientRedirectCancelled:", - "reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:", - "reportDataToClient:", - "reportDidFinishToClient", - "reportError", - "reportException:", - "reportStreamError", - "repositionRolloverTrackingRectIfNecessary", - "representation", - "representationOfCoveredCharacters", - "representationOfImageRepsInArray:usingType:properties:", - "representationUsingType:properties:", - "representationWithImageProperties:withProperties:", - "representations", - "representedFilename", - "representedObject", - "request", - "requestHeaderFieldsWithCookies:", - "requestIsCacheEquivalent:toRequest:", - "requestStreamForTransmission", - "requestUserAttention:", - "requestWithURL:", - "requestWithURLCString:", - "requestedURLString", - "requiredFileType", - "requiredMinSize", - "requiredMinSizeFor:", - "requiredThickness", - "requiresDirectKeyValueCodingCall", - "reservedSpaceLength", - "reset", - "resetAdditionalClip", - "resetButtonDefaultLabel", - "resetCancelButtonCell", - "resetCursorRect:inView:", - "resetCursorRects", - "resetDateFormats", - "resetDisplayDisableCount", - "resetFlushDisableCount", - "resetMeasurements:forInterpolatedResolutionData:", - "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:", - "resetQueryForChangedAttributes:", - "resetSearchButtonCell", - "resetState", - "resetToolbarToDefaultConfiguration:", - "resetTrackingRect", - "reshape", - "resignFirstResponder", - "resignKeyWindow", - "resignMainWindow", - "resize:", - "resizeDownCursor", - "resizeEdgeForEvent:", - "resizeFlags", - "resizeIncrements", - "resizeIndicatorRect", - "resizeLeftCursor", - "resizeLeftRightCursor", - "resizeRightCursor", - "resizeSubviewsWithOldSize:", - "resizeToScreenWithEvent:", - "resizeUpCursor", - "resizeUpDownCursor", - "resizeWithDelta:fromFrame:beginOperation:endOperation:", - "resizeWithEvent:", - "resizeWithOldSuperviewSize:", - "resizedColumn", - "resizingMask", - "resolve", - "resolveMarkerToPlaceholder:binding:", - "resolveNamespaceForName:", - "resolvePrefixForNamespaceURI:", - "resolvedKeyDictionary", - "resolvesAliases", - "resourceData", - "resourceDataUsingCache:", - "resourceLoadDelegate", - "resourceLoaderRunLoop", - "resourceNamed:", - "resourcePath", - "resourceSpecifier", - "respectStandardStyleKeyEquivalents", - "respondToChangedContents", - "respondToChangedSelection", - "respondsTo:", - "respondsToSelector:", - "response", - "restOfKeyPathIfContainedByValueForKeyPath:", - "restartNullEvents", - "restore", - "restoreAttributes:", - "restoreAttributesOfTextStorage:", - "restoreDefaults", - "restoreDocumentState", - "restoreGraphicsState", - "restoreParameter:from:", - "restorePortState:", - "restoreSavedSettings", - "restoreWindowOnDockDeath", - "restoreWindowOnDockReincarnation", - "resultAtIndex:", - "resultCount", - "resumeExecutionWithResult:", - "resumeInformation", - "resumeWithScriptCommandResult:", - "resumeWithSuspensionID:", - "retain", - "retainArguments", - "retainCaches", - "retainCount", - "retainIconForURL:", - "retainOrCopyIfNeeded", - "retainWireCount", - "retainedXmlInfoForRelationship:", - "retryAfterAuthenticationFailure:", - "retryAfterTLSFailure", - "retryWithRedirectedURLAndResultCode:", - "returnDisconnectedBindingsOfObject:", - "returnResult:exception:sequence:imports:", - "returnType", - "reverseObjectEnumerator", - "reverseTransformedValue:", - "reversedSortDescriptor", - "revert:", - "revertDocumentToSaved:", - "revertToContentsOfURL:ofType:error:", - "revertToSavedFromFile:ofType:", - "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:", - "rightChild", - "rightExpression", - "rightIndentMarkerWithRulerView:location:", - "rightMargin", - "rightMouseDown:", - "rightMouseDragged:", - "rightMouseUp:", - "rightSplitItem", - "rightTabMarkerWithRulerView:location:", - "rightTruncateString:toWidth:withFont:", - "rightView", - "role", - "roleDescription", - "rollback", - "rollbackChanges", - "rollbackTransaction", - "rolloverXLocation", - "root", - "rootDocument", - "rootElement", - "rootEntity", - "rootNode", - "rootObject", - "rootObjectClasses", - "rootObjectStore", - "rootProxy", - "rotateByAngle:", - "rotateByDegrees:", - "rotated", - "rotation", - "roundingBehavior", - "roundingMode", - "row", - "rowAtPoint:", - "rowForItem:", - "rowForObjectID:", - "rowForObjectID:after:", - "rowForUpdate", - "rowHeight", - "rowSpan", - "rowsInRect:", - "ruler", - "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:", - "rulerAttributesInRange:", - "rulerMarkersForTextView:paragraphStyle:ruler:", - "rulerView:didAddMarker:", - "rulerView:didMoveMarker:", - "rulerView:didRemoveMarker:", - "rulerView:handleMouseDown:", - "rulerView:shouldAddMarker:", - "rulerView:shouldMoveMarker:", - "rulerView:shouldRemoveMarker:", - "rulerView:willAddMarker:atLocation:", - "rulerView:willMoveMarker:toLocation:", - "rulerView:willRemoveMarker:", - "rulerView:willSetClientView:", - "rulerViewClass", - "rulersVisible", - "run", - "run:", - "runAsModalDialogWithChallenge:", - "runAsSheetOnWindow:withChallenge:", - "runCustomizationPalette:", - "runInitialization", - "runJavaScriptAlertPanelWithMessage:", - "runJavaScriptConfirmPanelWithMessage:", - "runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:", - "runLoop", - "runLoopModesForAnimating", - "runModal", - "runModalForCarbonWindow:", - "runModalForDirectory:file:", - "runModalForDirectory:file:types:", - "runModalForDirectory:file:types:relativeToWindow:", - "runModalForSavePanel:", - "runModalForSavePanel:withFilepath:", - "runModalForTypes:", - "runModalForWindow:", - "runModalForWindow:relativeToWindow:", - "runModalOpenPanel:forTypes:", - "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:", - "runModalPrintOperation:delegate:didRunSelector:contextInfo:", - "runModalSavePanel:withAccessoryView:", - "runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:", - "runModalSession:", - "runModalWithPrintInfo:", - "runMode:beforeDate:", - "runOpenPanelForFileButtonWithResultListener:", - "runOperation", - "runOperationModalForWindow:delegate:didRunSelector:contextInfo:", - "runPageLayout:", - "runPoof", - "runPoofAtPoint:withSize:callbackInfo:", - "runToolbarCustomizationPalette:", - "runUntilDate:", - "sampleTextForTriplet:", - "samplerOptionForKey:", - "samplerOptions", - "samplerWithImage:", - "samplerWithImage:keysAndValues:", - "samplesPerPixel", - "sansSerifFontFamily", - "saturationComponent", - "save", - "save:", - "saveAllDocuments:", - "saveAndSetPortState", - "saveAndSetPortStateForUpdate:", - "saveChanges", - "saveChanges:", - "saveConfigurationUsingName:", - "saveDefaults", - "saveDocument:", - "saveDocumentAs:", - "saveDocumentState", - "saveDocumentState:", - "saveDocumentToPageCache", - "saveDocumentToPageCache:", - "saveDocumentToPath:", - "saveDocumentWithDelegate:didSaveSelector:contextInfo:", - "saveFavoritesToDefaults", - "saveFontCollection:", - "saveFrameUsingName:", - "saveGraphicsState", - "saveImageNamed:andShowWarnings:", - "saveList:", - "saveMetadata:", - "saveMorphedGlyphs:", - "saveNumVisibleRows", - "saveOptions", - "savePanel", - "saveParameter:to:", - "savePreviewHeightInDefaults:", - "saveRecipeChanges", - "saveResource", - "saveResourceWithCachedResponse:", - "saveRoot", - "saveToDocument:removeBackup:errorHandler:", - "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:", - "saveToPath:", - "saveToURL:error:", - "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", - "saveToURL:ofType:forSaveOperation:error:", - "saveWithGlyphOrigin:", - "scale", - "scaleBy:", - "scaleRegionOf:destRect:userInfo:", - "scaleTo::", - "scaleUnitSquareToSize:", - "scaleXBy:yBy:", - "scalesWhenResized", - "scanCharactersFromSet:intoString:", - "scanDecimal:", - "scanDouble:", - "scanFloat:", - "scanHexInt:", - "scanInt:", - "scanLocation", - "scanLongLong:", - "scanString:intoString:", - "scanUpToCharactersFromSet:intoString:", - "scanUpToString:intoString:", - "scannerWithString:", - "schedule", - "scheduleDelayedUpdate", - "scheduleInRunLoop:forMode:", - "scheduleShowRolloverWindow", - "scheduleUpdate", - "scheduledTimerWithTimeInterval:invocation:repeats:", - "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", - "scheme", - "scopeButtonAction:", - "screen", - "screenFont", - "screenFontWithRenderingMode:", - "screens", - "scriptCommand", - "scriptErrorNumber", - "scriptErrorString", - "scriptingBeginsWith:", - "scriptingContains:", - "scriptingEndsWith:", - "scriptingIsEqualTo:", - "scriptingIsGreaterThan:", - "scriptingIsGreaterThanOrEqualTo:", - "scriptingIsLessThan:", - "scriptingIsLessThanOrEqualTo:", - "scriptingProperties", - "scroll:", - "scrollBarColor", - "scrollCellToVisibleAtRow:column:", - "scrollClipView:toPoint:", - "scrollColumnToVisible:", - "scrollColumnsLeftBy:", - "scrollColumnsRightBy:", - "scrollDown", - "scrollItemAtIndexToTop:", - "scrollItemAtIndexToVisible:", - "scrollLineDown:", - "scrollLineUp:", - "scrollOverflowInDirection:granularity:", - "scrollOverflowWithScrollWheelEvent:", - "scrollPageDown:", - "scrollPageUp:", - "scrollPoint", - "scrollPoint:", - "scrollRangeToVisible:", - "scrollRect:by:", - "scrollRectToVisible:", - "scrollRectToVisible:inScrollView:animate:", - "scrollRowToVisible:", - "scrollToAnchor:", - "scrollToAnchorWithURL:", - "scrollToBeginningOfDocument:", - "scrollToEndOfDocument:", - "scrollToPoint:", - "scrollToSelected", - "scrollUp", - "scrollViaScroller:", - "scrollView", - "scrollViewDidTile", - "scrollWheel:", - "scrollerWidth", - "scrollerWidthForControlSize:", - "searchButtonCell", - "searchButtonRectForBounds:", - "searchFieldCellOrControlDidClearRecents:", - "searchFor:direction:caseSensitive:wrap:", - "searchForBrowsableDomains", - "searchForLabels:beforeElement:", - "searchMenuTemplate", - "searchScopeDisplayName", - "searchTextRectForBounds:", - "searchableIndexIntroduction", - "secondOfMinute", - "secondaryInvocation", - "secondarySelectedControlColor", - "secondsFromGMT", - "secondsFromGMTForDate:", - "seedPrimaryKeyInt:", - "seedPrimaryKeys", - "seekToFileOffset:", - "segmentCount", - "segmentWithIndex:parent:", - "segmentedCell", - "selectAll", - "selectAll:", - "selectAllInView:selectionOnly:", - "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:", - "selectCell:", - "selectCellAtRow:column:", - "selectColumn:byExtendingSelection:", - "selectColumnIndexes:byExtendingSelection:", - "selectDefaultRange", - "selectDraggedFileNode:", - "selectFarthestRangeForward:", - "selectItem:", - "selectItemAtIndex:", - "selectItemWithObjectValue:", - "selectItemWithTag:", - "selectItemWithTitle:", - "selectKeyViewFollowingView:", - "selectKeyViewPrecedingView:", - "selectNext:", - "selectNextKeyView:", - "selectNextRangeForward:", - "selectNextTabViewItem:", - "selectNode:", - "selectPrevious:", - "selectPreviousKeyView:", - "selectRow:byExtendingSelection:", - "selectRow:inColumn:", - "selectRowIndexes:byExtendingSelection:", - "selectRowsWithFetchRequest:", - "selectSegmentWithTag:", - "selectTabViewItem:", - "selectTabViewItemAtIndex:", - "selectText:", - "selectTextAtRow:column:", - "selectWithFrame:inView:editor:delegate:start:length:", - "selectWord:", - "selectableItemIdentifiers", - "selectableScopeLocationNodes", - "selectedAttributedString", - "selectedAttributes", - "selectedCell", - "selectedCellInColumn:", - "selectedCells", - "selectedColorSpace", - "selectedColumn", - "selectedColumnEnumerator", - "selectedControlColor", - "selectedControlTextColor", - "selectedDOMRange", - "selectedFontChangedTo:", - "selectedIndex", - "selectedIndexAndQuality:", - "selectedItem", - "selectedItemIdentifier", - "selectedKnobColor", - "selectedMenuItemColor", - "selectedMenuItemTextColor", - "selectedName", - "selectedNavNode", - "selectedNodes", - "selectedObjects", - "selectedRange", - "selectedRanges", - "selectedResolvedNodes", - "selectedRow", - "selectedRowEnumerator", - "selectedRowInColumn:", - "selectedRowIndexes", - "selectedScopeLocationNodes", - "selectedSegment", - "selectedString", - "selectedTabViewItem", - "selectedTextAttributes", - "selectedTextBackgroundColor", - "selectedTextColor", - "selectionAffinity", - "selectionColor", - "selectionGranularity", - "selectionImage", - "selectionIndexPaths", - "selectionIndexes", - "selectionRangeForProposedRange:granularity:", - "selectionRect", - "selectionShouldChangeInOutlineView:", - "selectionShouldChangeInTableView:", - "selectionStartHasStyle:", - "selectionState", - "selector", - "selectorForCommand:", - "selectsAllWhenSettingContent", - "selectsInsertedObjects", - "self", - "send", - "sendAction", - "sendAction:to:", - "sendAction:to:from:", - "sendActionOn:", - "sendActivateEvent:", - "sendBeforeDate:components:from:reserved:", - "sendBeforeDate:msgid:components:from:reserved:", - "sendBeforeTime:sendReplyPort:", - "sendBeforeTime:streamData:components:from:msgid:", - "sendBeforeTime:streamData:components:to:from:msgid:reserved:", - "sendCarbonProcessHICommandEvent:", - "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:", - "sendConsumedMouseUpIfNeeded", - "sendContextMenuEvent:", - "sendDoubleAction", - "sendEvent:", - "sendInvocation:", - "sendModifierEventWithKeyCode:character:", - "sendMouseUpActionForDisabledCell:atRow:column:", - "sendNotification", - "sendNullEvent", - "sendOpenEventFor:", - "sendPort", - "sendReleasedProxies", - "sendResizeEvent", - "sendResponseAvailableCallback", - "sendScrollEvent", - "sendSelectionChangedNotification", - "sendSuperEvent:", - "sendSynchronousRequest:returningResponse:error:", - "sendTimerEvent", - "sendUpdateEvent", - "sendWireCountForTarget:port:", - "sender", - "senderDidBecomeActive:", - "senderDidResignActive:", - "sendsActionOnEndEditing", - "sendsSearchStringImmediately", - "sendsWholeSearchString", - "separatesColumns", - "separatorColor", - "separatorItem", - "serialize:length:", - "serializeAlignedBytes:length:", - "serializeAlignedBytesLength:", - "serializeData:", - "serializeDataAt:ofObjCType:context:", - "serializeInt:", - "serializeInt:atIndex:", - "serializeList:", - "serializeListItemIn:at:", - "serializeObject:", - "serializeObjectAt:ofObjCType:intoData:", - "serializePListKeyIn:key:value:", - "serializePListValueIn:key:value:", - "serializePropertyList:", - "serializePropertyList:intoData:", - "serializeString:", - "serializeToData", - "serializedRepresentation", - "serifFontFamily", - "server", - "serviceError:error:", - "serviceListener", - "servicesInfoIdentifier:", - "servicesMenu", - "servicesMenuData:forUser:", - "servicesProvider", - "set", - "setAbsorbedCount:forIndex:", - "setAcceptsColorDrops:", - "setAcceptsGlyphInfo:", - "setAcceptsMouseMovedEvents:", - "setAccessoryView:", - "setAction:", - "setActionName:", - "setActivated:sender:", - "setActivationEventNumber:", - "setActiveColorSpace:", - "setActsLikeButton:", - "setAdditionalClip:", - "setAdditionalPatternPhase:", - "setAdvance:forIndex:", - "setAffectedStores:", - "setAfterEntityLookup:", - "setAlertStyle:", - "setAlignment:", - "setAlignment:range:", - "setAllDestinations:", - "setAllHTTPHeaderFields:", - "setAllHeaderFields:", - "setAllowedFileTypes:", - "setAllowsAnimatedImageLooping:", - "setAllowsAnimatedImages:", - "setAllowsBranchSelection:", - "setAllowsColumnReordering:", - "setAllowsColumnResizing:", - "setAllowsColumnSelection:", - "setAllowsEditingMultipleValuesSelection:", - "setAllowsEditingTextAttributes:", - "setAllowsEmptySelection:", - "setAllowsExpandingMultipleDirectories:", - "setAllowsFloats:", - "setAllowsIncrementalSearching:", - "setAllowsMixedState:", - "setAllowsMultipleSelection:", - "setAllowsOtherFileTypes:", - "setAllowsScrolling:", - "setAllowsTickMarkValuesOnly:", - "setAllowsToolTipsWhenApplicationIsInactive:", - "setAllowsUndo:", - "setAllowsUserCustomization:", - "setAlpha:", - "setAlphaValue:", - "setAltIncrementValue:", - "setAlternate:", - "setAlternateImage:", - "setAlternateMnemonicLocation:", - "setAlternateTitle:", - "setAlwaysPresentsApplicationModalAlerts:", - "setAlwaysUsesMultipleValuesMarker:", - "setAnimates:", - "setAnimationBlockingMode:", - "setAnimationDelay:", - "setAppleMenu:", - "setArgument:atIndex:", - "setArgumentBinding:", - "setArguments:", - "setArray:", - "setArrowPosition:", - "setArrowsPosition:", - "setAsMainCarbonMenuBar", - "setAspectRatio:", - "setAssociatedInputManager:", - "setAttachment:", - "setAttachmentCell:", - "setAttachmentSize:forGlyphRange:", - "setAttribute::", - "setAttributeKeys:andValues:", - "setAttributeSlot:withObject:", - "setAttributeType:", - "setAttributedAlternateTitle:", - "setAttributedString:", - "setAttributedStringForNil:", - "setAttributedStringForNotANumber:", - "setAttributedStringForZero:", - "setAttributedStringValue:", - "setAttributedTitle:", - "setAttributes:", - "setAttributes:Values:ValueSizes:Count:", - "setAttributes:range:", - "setAttributesInTextStorage:", - "setAutoAddExtensionToNextInput:", - "setAutodisplay:", - "setAutoenablesItems:", - "setAutohidesScrollers:", - "setAutorecalculatesKeyViewLoop:", - "setAutorepeat:", - "setAutoresizesAllColumnsToFit:", - "setAutoresizesSubviews:", - "setAutoresizingMask:", - "setAutosaveName:", - "setAutosaveTableColumns:", - "setAutosavedContentsFileURL:", - "setAutosaves:", - "setAutosavesConfiguration:", - "setAutoscroll:", - "setAutovalidates:", - "setAvoidableSpecifier:path:", - "setAvoidsEmptySelection:", - "setBackgroundColor:", - "setBackgroundLayoutEnabled:", - "setBaseAffineTransform:", - "setBaseSpecifier:", - "setBaseURL:", - "setBaseWritingDirection:", - "setBaseWritingDirection:range:", - "setBecomesKeyOnlyIfNeeded:", - "setBezelStyle:", - "setBezeled:", - "setBidiLevels:forGlyphRange:", - "setBinderSpecificFlag:atIndex:", - "setBinding:", - "setBitmap:rowBytes:bounds:format:", - "setBitsPerSample:", - "setBool:forKey:", - "setBoolParameterValue:to:", - "setBoolParameterValue:to:inResolutionData:", - "setBorderColor:", - "setBorderColor:forEdge:", - "setBorderType:", - "setBorderWidth:", - "setBordered:", - "setBottomCornerRounded:", - "setBottomMargin:", - "setBounds:", - "setBoundsOrigin:", - "setBoundsRect:forTextBlock:glyphRange:", - "setBoundsSize:", - "setBoxType:", - "setBrightness:", - "setBrowser:", - "setBulletCharacter:", - "setBundle:", - "setBundlePath:", - "setButtonBordered:", - "setButtonID:", - "setButtonType:", - "setCGCompositeOperation:inContext:", - "setCGCompositeOperationFromString:inContext:", - "setCGContext:", - "setCTM:", - "setCacheDepthMatchesImageDepth:", - "setCacheHint:", - "setCacheMode:", - "setCachePolicy:", - "setCachedChildren:", - "setCachedChildren:forObservedNode:", - "setCachedSQLiteStatement:", - "setCachedSeparately:", - "setCalculatesAllSizes:", - "setCalendar:", - "setCalendarFormat:", - "setCanChooseDirectories:", - "setCanChooseFiles:", - "setCanClickDisabledFiles:", - "setCanCreateDirectories:", - "setCanCycle:", - "setCanHide:", - "setCanSelectHiddenExtension:", - "setCancelButtonCell:", - "setCancellationDelegate:wasCancelledSelector:contextInfo:", - "setCaseSensitive:", - "setCell:", - "setCellAttribute:to:", - "setCellBackgroundColor:", - "setCellClass:", - "setCellPrototype:", - "setCellSize:", - "setCertificatePolicyOnStream", - "setCharacterEncoding:", - "setCharacterIndex:forGlyphAtIndex:", - "setCharacterIndex:layoutManager:", - "setCharactersToBeSkipped:", - "setChildSpecifier:", - "setChildren:", - "setChildrenKeyPath:", - "setClassDescription:", - "setClearsFilterPredicateOnInsertion:", - "setClient:", - "setClientView:", - "setClip", - "setClippedItems:", - "setCocoaSubVersion:", - "setCocoaVersion:", - "setCollapsesBorders:", - "setColor:", - "setColor:forAttribute:", - "setColor:forKey:", - "setColorList:", - "setColorSpaceName:", - "setColumnAutoresizingStyle:", - "setColumnResizingType:", - "setColumnsAutosaveName:", - "setColumnsToFetch:", - "setCommandDescription:", - "setCompareSelector:", - "setCompletes:", - "setCompletionDelay:", - "setCompression:factor:", - "setConditionallySetsEditable:", - "setConditionallySetsEnabled:", - "setConditionallySetsHidden:", - "setConfiguratioName:", - "setConfigurationUsingName:", - "setConstrainedFrameSize:", - "setContainerClassDescription:", - "setContainerIsObjectBeingTested:", - "setContainerIsRangeContainerObject:", - "setContainerSize:", - "setContainerSpecifier:", - "setContainingWindow:", - "setContent:", - "setContentMaxSize:", - "setContentMinSize:", - "setContentSize:", - "setContentView:", - "setContentViewMargins:", - "setContentsNoCopy:length:freeWhenDone:isUnicode:", - "setContextHelp:forObject:", - "setContextHelpModeActive:", - "setContextMenuRepresentation:", - "setContinuous:", - "setContinuousGrammarCheckingEnabled:", - "setContinuousSpellCheckingEnabled:", - "setContinuouslyUpdatesValue:", - "setControl:", - "setControlSize:", - "setControlTint:", - "setControlView:", - "setController:", - "setController:retainController:", - "setConversationRequest:", - "setCookies:forURL:mainDocumentURL:", - "setCookies:forURL:policyBaseURL:", - "setCookies:whilePrivateBrowsing:", - "setCopiesOnScroll:", - "setCornerView:", - "setCountKeyPath:", - "setCreatesSortDescriptor:", - "setCredential:forProtectionSpace:", - "setCriticalValue:", - "setCssText:", - "setCurrListName:", - "setCurrent:", - "setCurrentAppleEventAndReplyEventWithSuspensionID:", - "setCurrentBrowsingNodePath:", - "setCurrentConstructionContext:", - "setCurrentContext:", - "setCurrentDirectoryNode:", - "setCurrentEntity:", - "setCurrentFrame:", - "setCurrentImageNumber:", - "setCurrentInputManager:", - "setCurrentItem:", - "setCurrentOperation:", - "setCurrentPage:", - "setCurrentPluginView:", - "setCurrentProgress:", - "setCurrentVoiceIdentifier:", - "setCursiveFontFamily:", - "setCursorPositionToIndex:inParagraph:", - "setCustomizationSheetWidth:", - "setDBSnapshot:", - "setDTD:", - "setDTDKind:", - "setData:", - "setData:forType:", - "setDataCell:", - "setDataRetained:", - "setDataSource:", - "setDatabaseOperator:", - "setDatabaseUUID:", - "setDatabaseVersion:", - "setDateFormat:", - "setDatePickerElements:", - "setDatePickerMode:", - "setDatePickerStyle:", - "setDateStyle:", - "setDateValue:", - "setDebugDefault:", - "setDecimalSeparator:", - "setDefaultAttachmentScaling:", - "setDefaultBorderColor:", - "setDefaultButtonCell:", - "setDefaultCredential:forProtectionSpace:", - "setDefaultFixedFontSize:", - "setDefaultFlatness:", - "setDefaultFontSize:", - "setDefaultFormatterBehavior:", - "setDefaultLineCapStyle:", - "setDefaultLineJoinStyle:", - "setDefaultLineWidth:", - "setDefaultMenu:", - "setDefaultMiterLimit:", - "setDefaultParagraphStyle:", - "setDefaultPlaceholder:forBinding:onObjectClass:", - "setDefaultPlaceholder:forMarker:withBinding:", - "setDefaultTabInterval:", - "setDefaultTextColor:", - "setDefaultTextEncoding:", - "setDefaultType:", - "setDefaultWindingRule:", - "setDeferSync:", - "setDefersCallbacks:", - "setDefersLoading:", - "setDelegate:", - "setDelegate:withNotifyingTextView:", - "setDeletedObjects:", - "setDeletesObjectsOnRemove:", - "setDepthLimit:", - "setDescriptor:forKeyword:", - "setDestination:", - "setDestination:allowOverwrite:", - "setDestinationEntityExternalName:", - "setDestinationOrigin:travelTimeInSeconds:", - "setDestinations:forRelationship:", - "setDictionary:", - "setDirectParameter:", - "setDirectory:", - "setDisabled:", - "setDisabledWhenInactive:", - "setDiskCapacity:", - "setDisplayMode:", - "setDisplayPattern:", - "setDisplayedContainerNodes:", - "setDisplayedStringsArray:", - "setDisplayedTitle:", - "setDisplaysTokenWhileEditing:", - "setDisplaysWithFocusAttributes:", - "setDocument:", - "setDocumentAttributes:", - "setDocumentCursor:", - "setDocumentEdited:", - "setDocumentState:", - "setDocumentView:", - "setDoubleAction:", - "setDoubleValue:", - "setDragAndDropCharRanges:", - "setDragWindowImage:", - "setDraggingImage:at:", - "setDrawingAttributes:", - "setDrawingStyle:", - "setDrawnInSelectedRow:", - "setDrawsBackground:", - "setDrawsGrid:", - "setDrawsOutsideLineFragment:forGlyphAtIndex:", - "setDrawsOutsideLineFragment:forGlyphRange:", - "setDrawsTrackAsColorScaleType:", - "setDropItem:dropChildIndex:", - "setDropRow:dropOperation:", - "setDynamicDepthLimit:", - "setEchosBullets:", - "setEditable:", - "setEditableIfEnabled:", - "setEdited:", - "setEditedFlag:", - "setElementName:", - "setEmpty", - "setEnableSelectionHighlightDrawing:", - "setEnableTextHighlightDrawing:", - "setEnabled", - "setEnabled:", - "setEnabled:forSegment:", - "setEnabledFileTypes:", - "setEncoding:userChosen:", - "setEnd::", - "setEndSpecifier:", - "setEndSubelementIdentifier:", - "setEndSubelementIndex:", - "setEndWhitespace:", - "setEntities:", - "setEntities:forConfiguration:", - "setEntity:", - "setEntityName:", - "setEntryType:", - "setError:info:fatal:", - "setErrorExpectedType:", - "setErrorNumber:", - "setErrorOffendingObjectDescriptor:", - "setEvaluationErrorNumber:", - "setEventHandler:andSelector:forEventClass:andEventID:", - "setExpanded:", - "setExpandedView:", - "setExtensionHidden:", - "setExternalName:", - "setExternalPrecision:", - "setExternalScale:", - "setExternalType:", - "setExtraLineFragmentRect:usedRect:textContainer:", - "setFBENode:", - "setFantasyFontFamily:", - "setFauxFilePackageTypes:", - "setFetchPredicate:", - "setFetchRequestTemplate:forName:", - "setFidelity:", - "setFieldEditor:", - "setFileAttributes:", - "setFileListMode:", - "setFileListOrderedByFileProperty:", - "setFileListOrderedByFileProperty:ascending:", - "setFileListOrderedByFileProperty:ascending:caseSensitive:", - "setFileModificationDate:", - "setFileName:", - "setFileType:", - "setFileURL:", - "setFilename:", - "setFill", - "setFilter:", - "setFilterPredicate:", - "setFindString:writeToPasteboard:updateUI:", - "setFireDate:", - "setFirstLineHeadIndent:", - "setFixedFontFamily:", - "setFixedWidthFont", - "setFlatness:", - "setFlipped:", - "setFloat:forKey:", - "setFloatParameterValue:forResolution:to:", - "setFloatParameterValue:to:inResolutionData:", - "setFloatValue:", - "setFloatValue:knobProportion:", - "setFloatingPanel:", - "setFloatingPointFormat:left:right:", - "setFocusRingStyle:radius:color:", - "setFocusRingType:", - "setFocusStack:", - "setFocusedColorChipIndex:", - "setFont:", - "setFontDescriptorKey:", - "setFontFamily:", - "setFontMenu:", - "setFontPanel:", - "setFontSize:", - "setFontStyle:", - "setFontWeight:", - "setForegroundColor:", - "setForeignEntityKeySlot:unsigned:", - "setForeignKeySlot:int64:", - "setForeignKeys:", - "setFormat:", - "setFormatter:", - "setFormatterBehavior:", - "setFrame:", - "setFrame:display:", - "setFrame:display:animate:", - "setFrameAutosaveName:", - "setFrameFromContentFrame:", - "setFrameFromString:", - "setFrameLoadDelegate:", - "setFrameOrigin:", - "setFrameRotation:", - "setFrameSize:", - "setFrameTopLeftPoint:", - "setFrameUsingName:", - "setFullMetadata:", - "setGlyphGenerator:", - "setGlyphID:forIndex:", - "setGlyphRange:characterRange:", - "setGridColor:", - "setGridStyleMask:", - "setGroupIdentifier:", - "setGroupName:", - "setGroupingSeparator:", - "setHTTPBody:", - "setHTTPContentType:", - "setHTTPMethod:", - "setHTTPReferrer:", - "setHTTPUserAgent:", - "setHandle:", - "setHandlesContentAsCompoundValue:", - "setHardInvalidation:forGlyphRange:", - "setHasBorder:", - "setHasFocus:", - "setHasHorizontalRuler:", - "setHasHorizontalScroller:", - "setHasPageCache:", - "setHasShadow:", - "setHasThousandSeparators:", - "setHasUndoManager:", - "setHasVerticalScroller:", - "setHeadIndent:", - "setHeader", - "setHeaderCell:", - "setHeaderLevel:", - "setHeaderView:", - "setHeightTracksTextView:", - "setHelpAnchor:", - "setHidden:", - "setHiddenUntilMouseMoves:", - "setHidesEmptyCells:", - "setHidesOnDeactivate:", - "setHighlightMode:", - "setHighlighted:", - "setHighlightedItemIndex:", - "setHighlightedTableColumn:", - "setHighlightsBy:", - "setHintCapacity:", - "setHistoryAgeInDaysLimit:", - "setHistoryItemLimit:", - "setHistoryProvider:", - "setHorizontal:", - "setHorizontalAlignment:", - "setHorizontalEdgePadding:", - "setHorizontalLineScroll:", - "setHorizontalPageScroll:", - "setHorizontalPagination:", - "setHorizontalScrollingMode:", - "setHorizontallyCentered:", - "setHorizontallyResizable:", - "setHyphenationFactor:", - "setIcon:", - "setIconURL:", - "setIconURL:withType:", - "setIdentifier:", - "setIgnoredWords:inSpellDocumentWithTag:", - "setIgnoresAlpha:", - "setIgnoresMouseEvents:", - "setIgnoresViewTransformations:", - "setImage:", - "setImage:dirtyRect:", - "setImage:forSegment:", - "setImageAlignment:", - "setImageFrameStyle:", - "setImageInterpolation:", - "setImageNamed:forView:", - "setImagePosition:", - "setImageRep:", - "setImageRep:forImage:", - "setImageRep:forItemIdentifiers:", - "setImageScaling:", - "setImplementor:atIndex:", - "setImportsGraphics:", - "setInContext:", - "setInDrawingMachinery:", - "setInPalette:", - "setIncrement:", - "setIndentationLevel:", - "setIndentationPerLevel:", - "setIndeterminate:", - "setIndex:", - "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:", - "setInformativeText:", - "setInitialFirstResponder:", - "setInitialGState:", - "setInitialValues:", - "setInnerHTML:", - "setInsertedObjects:", - "setInsertionClassDescription:", - "setInsertionGlyphIndex:", - "setInsertionPointColor:", - "setInsertsNullPlaceholder:", - "setIntAttribute:value:forGlyphAtIndex:", - "setIntParameterValue:to:", - "setIntParameterValue:to:inResolutionData:", - "setIntValue:", - "setInteger:forKey:", - "setIntercellSpacing:", - "setInterfaceStyle:", - "setIsActive:", - "setIsClosable:", - "setIsContainer:", - "setIsEmptyColumn:", - "setIsFileListOrderedAscending:", - "setIsFileListOrderedCaseSensitive:", - "setIsFileProperty:displayed:", - "setIsResizable:", - "setIsSelected:", - "setIsSelected:forView:", - "setIsTargetItem:", - "setIsUp:", - "setItemHeight:", - "setJavaEnabled:", - "setJavaScriptCanOpenWindowsAutomatically:", - "setJavaScriptEnabled:", - "setJobDisposition:", - "setJobStyleHint:", - "setJoinSemantic:", - "setJoins:", - "setKey:", - "setKeyBindingManager:", - "setKeyCell:", - "setKeyEquivalent:", - "setKeyEquivalentFont:", - "setKeyEquivalentModifierMask:", - "setKeyPath:", - "setKeyboardFocusRingNeedsDisplayIfNeededInRect:", - "setKeyboardFocusRingNeedsDisplayInRect:", - "setKeys:triggerChangeNotificationsForDependentKey:", - "setKnobThickness:", - "setLabel:", - "setLabel:forSegment:", - "setLanguage:", - "setLanguageModel:", - "setLastColumn:", - "setLastEditedStringValue:", - "setLaunchPath:", - "setLayoutAlgorithm:", - "setLayoutManager:", - "setLayoutRect:forTextBlock:glyphRange:", - "setLeadingOffset:", - "setLeaf:", - "setLeafKeyPath:", - "setLeftChild:", - "setLeftMargin:", - "setLength:", - "setLevel:", - "setLineBreakMode:", - "setLineCapStyle:", - "setLineDash:count:phase:", - "setLineFragmentPadding:", - "setLineFragmentRect:forGlyphRange:usedRect:", - "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:", - "setLineHeightMultiple:", - "setLineJoinStyle:", - "setLineScroll:", - "setLineSpacing:", - "setLineWidth:", - "setLinkInWindow:string:delegate:", - "setLinkTextAttributes:", - "setLoadType:", - "setLoaded:", - "setLoadsImagesAutomatically:", - "setLocale:", - "setLocaleListForDefaultFontFallback:", - "setLocalizationDictionary:", - "setLocalizesFormat:", - "setLocation:forStartOfGlyphRange:", - "setLocation:forStartOfGlyphRange:coalesceRuns:", - "setLocation:withAdvancements:forStartOfGlyphRange:", - "setLoopMode:", - "setMIMEToDescriptionDictionary:", - "setMIMEToExtensionsDictionary:", - "setMIMEType:", - "setMainDocumentURL:", - "setMainMenu:", - "setMaintainsBackForwardList:", - "setManagedObjectContext:", - "setMapData:", - "setMark:", - "setMarkDOMRange:", - "setMarkedText:selectedRange:", - "setMarkedTextAttributes:", - "setMarkedTextDOMRange:", - "setMarkerFormatInWindow:delegate:", - "setMarkerLocation:", - "setMarkers:", - "setMasterObjectRelationship:", - "setMasterObjectRelationship:refreshDetailContent:", - "setMatchedColor:", - "setMatrixClass:", - "setMax:", - "setMaxContentSize:", - "setMaxCount:", - "setMaxDate:", - "setMaxSize:", - "setMaxValue:", - "setMaxVisibleColumns:", - "setMaxWidth:", - "setMaximum:", - "setMaximumLength:", - "setMaximumLineHeight:", - "setMaximumRecents:", - "setMemoryCapacity:", - "setMenu:", - "setMenu:forSegment:", - "setMenuChangedMessagesEnabled:", - "setMenuFormRepresentation:", - "setMenuItem:", - "setMenuRepresentation:", - "setMenuView:", - "setMessage:", - "setMessageText:", - "setMinColumnWidth:", - "setMinContentSize:", - "setMinCount:", - "setMinDate:", - "setMinSize:", - "setMinValue:", - "setMinWidth:", - "setMinimum:", - "setMinimumFontSize:", - "setMinimumLineHeight:", - "setMinimumLogicalFontSize:", - "setMiterLimit:", - "setMixedStateImage:", - "setMnemonicLocation:", - "setMode:", - "setMonoCharacterSeparatorCharacters:usualPunctuation:", - "setMovableByWindowBackground:", - "setMovie:", - "setMsgid:", - "setMultipleCharacterSeparators:", - "setMutableAttributedString:", - "setName:", - "setNameFieldLabel:", - "setNames:", - "setNamespaces:", - "setNavNodeClass:", - "setNeedsDisplay:", - "setNeedsDisplayForItemAtIndex:", - "setNeedsDisplayForResponderChange", - "setNeedsDisplayIfSelectionNeedsToRedraw", - "setNeedsDisplayInRect:", - "setNeedsDisplayInRect:avoidAdditionalLayout:", - "setNeedsLayout:", - "setNeedsReapplyStyles", - "setNeedsResyncWithDefaultVoice:", - "setNeedsSizing:", - "setNeedsToApplyStyles:", - "setNegativeFormat:", - "setNewAvailableData:", - "setNextKeyView:", - "setNextResponder:", - "setNextState", - "setNextUndoManager:", - "setNilSymbol:", - "setNilValueForKey:", - "setNode:", - "setNode:displayState:", - "setNode:isDirectory:displayState:", - "setNotANumberSymbol:", - "setNotShownAttribute:forGlyphAtIndex:", - "setNotShownAttribute:forGlyphRange:", - "setNotationName:", - "setNotificationCenterSerializeRemoves:", - "setNumRowsToToggleVisible:", - "setNumberOfColumns:", - "setNumberOfMajorTickMarks:", - "setNumberOfTickMarks:", - "setNumberOfVisibleItems:", - "setObject:forKey:", - "setObject:forKey:inDomain:", - "setObjectBeingTested:", - "setObjectClass:", - "setObjectForCurrentRecognition:", - "setObjectID:", - "setObjectValue:", - "setObjectValuePreservingEntitiesForNode:string:", - "setObjectZone:", - "setObscured:", - "setObservationInfo:", - "setObservedObject:", - "setObservingBinder:", - "setObservingToModelObjectsRange:", - "setOffStateImage:", - "setOffset:", - "setOnStateImage:", - "setOneShot:", - "setOpaque:", - "setOptimizableColumn:", - "setOption:forKey:", - "setOptional:", - "setOptions:", - "setOptionsAttributes:string:", - "setOptionsDictionary:", - "setOrientation:", - "setOrigin:", - "setOriginOffset:", - "setOriginalURLString:", - "setOutline:", - "setOutlineTableColumn:", - "setOutputFormat:", - "setPackage:", - "setPage:", - "setPageOrder:", - "setPaletteLabel:", - "setPanel:", - "setPanelFont:isMultiple:", - "setPaperName:", - "setPaperSize:", - "setParagraphGlyphRange:separatorGlyphRange:", - "setParagraphSpacing:", - "setParagraphSpacingBefore:", - "setParagraphStyle:", - "setParamDescriptor:forKeyword:", - "setParameter:forOption:", - "setParent:", - "setParentCrayonRow:", - "setParentCrayonView:", - "setParentNode:", - "setParentStore:", - "setParentWindow:", - "setParsesCocoaElements:", - "setPath:", - "setPathSeparator:", - "setPausedActions:", - "setPerformsContentDecoding:", - "setPeriodicDelay:interval:", - "setPersistentDomain:forName:", - "setPersistentStoreCoordinator:", - "setPhase:", - "setPixelsHigh:", - "setPixelsWide:", - "setPlaceholder:forMarker:isDefault:", - "setPlaceholderAttributedString:", - "setPlaceholderString:", - "setPlaysEveryFrame:", - "setPlaysSelectionOnly:", - "setPlugInsEnabled:", - "setPlugin:", - "setPluginDescription:", - "setPluginPointer:", - "setPluginsEnabled:", - "setPolicyDelegate:", - "setPoolCountHighWaterMark:", - "setPoolCountHighWaterResolution:", - "setPopulatingMenu:", - "setPositiveFormat:", - "setPostsBoundsChangedNotifications:", - "setPostsFrameChangedNotifications:", - "setPredicate:", - "setPredicateName:", - "setPredicateOperator:", - "setPredicateString:", - "setPreferences:", - "setPreferredEdge:", - "setPreferredFilename:", - "setPreservesContentDuringLiveResize:", - "setPreservesSelection:", - "setPreviewNode:", - "setPreviousItem:", - "setPrimaryKeyGeneration:", - "setPrimaryKeys:", - "setPrimitiveValue:forKey:", - "setPrintInfo:", - "setPrintPanel:", - "setPrinter:", - "setPriority:forFlavor:", - "setPrompt:", - "setPropagatesDeletesAtEndOfEvent:", - "setProperties:", - "setProperty:", - "setProperty:::", - "setProperty:forKey:inRequest:", - "setProperty:withValue:", - "setPropertyList:forType:", - "setPropertyMappings:", - "setProps:forIndex:", - "setProtocolForProxy:", - "setPrototype:", - "setProvisionalDataSource:", - "setProvisionalItem:", - "setProxyPropertiesForURL:onStream:", - "setPublicID:", - "setPullsDown:", - "setQueryNode:", - "setQuoteBinding:", - "setQuotingWithSingleQuote:double:", - "setROISelector:", - "setRaisesForNotApplicableKeys:", - "setRangeContainerClassDescription:", - "setRanges:", - "setRate:", - "setReadLimit:", - "setReadOnly:", - "setRealDelegate:", - "setReceiversSpecifier:", - "setRecentSearches:", - "setRecentsAutosaveName:", - "setRefusesFirstResponder:", - "setRefusesToBeShown:", - "setRegistryClass:", - "setRegistryString:", - "setRelatedIDs:forKey:options:", - "setRelativePosition:", - "setReleasedWhenClosed:", - "setReleasesAfterPoofing:", - "setRememberedSnapToIndex:", - "setRemovable:", - "setRenderPart:", - "setReplyTimeout:", - "setRepresentedFilename:", - "setRepresentedObject:", - "setRequestError:", - "setRequestTimeout:", - "setRequestURL:", - "setRequiredFileType:", - "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:", - "setReservedThicknessForAccessoryView:", - "setReservedThicknessForMarkers:", - "setResizable", - "setResizeIncrements:", - "setResizingMask:", - "setResolvesAliases:", - "setResourceLoadDelegate:", - "setResourceLocator:", - "setResponseHeader:", - "setResponseHeaderUsingHTTPResponse:", - "setResponseURL:", - "setReturnValue:", - "setRichText:", - "setRightChild:", - "setRightMargin:", - "setRoot:", - "setRootElement:", - "setRootNode:", - "setRootObject:", - "setRootObjectStore:", - "setRootPath:", - "setRoundingBehavior:", - "setRoundingMode:", - "setRowForUpdate:", - "setRowHeight:", - "setRulerVisible:", - "setRulersVisible:", - "setRunLoop:", - "setSQLString:", - "setSRRecognitionSystem:", - "setSRRecognizer:", - "setSamplerOption:forKey:", - "setSamplerOptionsFromDictionary:", - "setSansSerifFontFamily:", - "setSaveWeighting:", - "setScalesWhenResized:", - "setScanLocation:", - "setScopeLocationNodes:", - "setScriptCommand:", - "setScriptErrorNumber:", - "setScriptErrorString:", - "setScriptingProperties:", - "setScrollBarsSuppressed:repaintOnUnsuppress:", - "setScrollPoint:", - "setScrollView:", - "setScrollable:", - "setScrollbarsVisible:", - "setScrollingMode:", - "setSearchButtonCell:", - "setSearchMenuTemplate:", - "setSearchScopeDisplayName:", - "setSegmentCount:", - "setSelectable:", - "setSelected:forSegment:", - "setSelectedAttributes:isMultiple:", - "setSelectedDOMRange:affinity:", - "setSelectedFont:isMultiple:", - "setSelectedIndexPaths:", - "setSelectedItemIdentifier:", - "setSelectedRange:", - "setSelectedRange:affinity:stillSelecting:", - "setSelectedRanges:", - "setSelectedRanges:affinity:stillSelecting:", - "setSelectedScopeLocationNodes:", - "setSelectedSegment:", - "setSelectedTextAttributes:", - "setSelectionByRect:", - "setSelectionFrom:to:anchor:highlight:", - "setSelectionFromDroppedNode:selectionHelper:", - "setSelectionFromNone", - "setSelectionFromPasteboard:selectionHelper:", - "setSelectionGranularity:", - "setSelectionIndex:", - "setSelectionIndexPaths:", - "setSelectionIndexes:", - "setSelectionToDragCaret", - "setSelector:", - "setSelectsAllWhenSettingContent:", - "setSelectsInsertedObjects:", - "setSendsActionOnEndEditing:", - "setSendsWholeSearchString:", - "setSerifFontFamily:", - "setServicesMenu:", - "setServicesProvider:", - "setSet:", - "setShadowBlurRadius:", - "setShadowColor:", - "setShadowOffset:", - "setShadowState:", - "setShouldAntialias:", - "setShouldCloseDocument:", - "setShouldCreateRenderers:", - "setShouldCreateUI:", - "setShouldPrintBackgrounds:", - "setShouldPrintExceptions:", - "setShouldResolveExternalEntities:", - "setShowPanels:", - "setShownAboveComboBox:", - "setShowsBorderOnlyWhileMouseInside:", - "setShowsControlCharacters:", - "setShowsFirstResponder:", - "setShowsGetInfoButton:", - "setShowsHelp:", - "setShowsHiddenFiles:", - "setShowsInvisibleCharacters:", - "setShowsLogonButton:", - "setShowsPreviews:", - "setShowsPrintPanel:", - "setShowsProgressPanel:", - "setShowsResizeIndicator:", - "setShowsRollover:", - "setShowsStateBy:", - "setSimpleCommandsArray:", - "setSimpleQueryString:", - "setSingleTableEntity:", - "setSize:", - "setSizeLimit:", - "setSizeMode:", - "setSliderType:", - "setSmartInsertDeleteEnabled:", - "setSortDescriptorPrototype:", - "setSortDescriptors:", - "setSound:", - "setSource:", - "setSpacing:inWindow:delegate:", - "setSpeakingSpeechFeedbackServices:", - "setSpeakingString:", - "setSpeechChannelWithVoiceCreator:voiceID:", - "setSpeechChannelWithVoiceIdentifier:", - "setSpeechFeedbackServicesTimer:", - "setSpeechFinishedSuccessfully:", - "setSpoolPath:", - "setStandalone:", - "setStandardFontFamily:", - "setStandardInput:", - "setStandardOutput:", - "setStart::", - "setStartSpecifier:", - "setStartSubelementIdentifier:", - "setStartSubelementIndex:", - "setState:", - "setStateToSelected", - "setStateToUnselected", - "setStatusBar:", - "setStatusBarVisible:", - "setStatusCode:", - "setStatusMenu:", - "setStatusText:", - "setStoreMetadata:", - "setString:", - "setString:forType:", - "setStringIndex:forIndex:", - "setStringParameterValue:to:", - "setStringValue:", - "setStringValue:resolvingEntities:", - "setStroke", - "setSubentities:", - "setSubentityColumn:", - "setSubentityID:", - "setSubmenu:", - "setSubmenu:forItem:", - "setSubmenuRepresentedObjectsAreStale", - "setSuperentity:", - "setSupermenu:", - "setSuppressLayout:", - "setSuspended:", - "setSynthesizerIsRetained:", - "setSystemCharacterProperties:", - "setSystemID:", - "setTXTRecordData:", - "setTabKeyTraversesCells:", - "setTabStops:", - "setTableColumn:", - "setTableView:", - "setTag:", - "setTag:forSegment:", - "setTailIndent:", - "setTakesTitleFromPreviousColumn:", - "setTarget:", - "setTearOffMenuRepresentation:", - "setTemporaryID:", - "setTest:", - "setTestedObjectClassDescription:", - "setText:", - "setTextAlign:", - "setTextAttributesForNegativeValues:", - "setTextAttributesForNil:", - "setTextAttributesForNotANumber:", - "setTextAttributesForPositiveValues:", - "setTextAttributesForZero:", - "setTextBlocks:", - "setTextColor:", - "setTextColor:whenObjectValueIsUsed:", - "setTextContainer:", - "setTextContainer:forGlyphRange:", - "setTextDecoration:", - "setTextLists:", - "setTextShadow:", - "setTextSizeMultiplier:", - "setTextStorage:", - "setTextView:", - "setThousandSeparator:", - "setTickMarkPosition:", - "setTighteningFactorForTruncation:", - "setTimeInterval:", - "setTimeIntervalSince1970:", - "setTimeStyle:", - "setTimeZone:", - "setTimeoutInterval:", - "setTimer", - "setTimestampToNow", - "setTitle:", - "setTitle:andDefeatWrap:", - "setTitle:andMessage:", - "setTitle:ofColumn:", - "setTitleAlignment:", - "setTitleBaseWritingDirection:", - "setTitleCell:", - "setTitleColor:", - "setTitleFont:", - "setTitleNoCopy:", - "setTitlePosition:", - "setTitleWidth:", - "setTitleWithMnemonic:", - "setTitled:", - "setTokenStyle:", - "setTokenizingCharacterSet:", - "setToolTip:", - "setToolTip:forCell:", - "setToolTip:forSegment:", - "setToolTip:forView:cell:", - "setToolTipForView:rect:displayDelegate:displayInfo:", - "setToolTipForView:rect:owner:userData:", - "setToolTipString:", - "setToolbar:", - "setToolbarsVisible:", - "setTopLevelObject:", - "setTopMargin:", - "setTrackingMode:", - "setTrailingOffset:", - "setTransformStruct:", - "setTransparent:", - "setTransparentBackground:", - "setTreatsDirectoryAliasesAsDirectories:", - "setTreatsFilePackagesAsDirectories:", - "setType:", - "setTypes:onPasteboard:", - "setTypesetter:", - "setTypesetterBehavior:", - "setTypingAttributes:", - "setTypingStyle:", - "setURI:", - "setURL:", - "setURLString:", - "setUndoActionName:", - "setUndoManager:", - "setUniqueID:", - "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:", - "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:", - "setUpFieldEditorAttributes:", - "setUpForChallenge:", - "setUpGState", - "setUpPrintOperationDefaultValues", - "setUpSourceForData:", - "setUpdatedObjects:", - "setUseSSLOnly:forKey:", - "setUserColumnResizingAutoresizesWindow:", - "setUserInfo:", - "setUserStyleSheetEnabled:", - "setUserStyleSheetLocation:", - "setUsesDataSource:", - "setUsesFeedbackWindow:", - "setUsesFontLeading:", - "setUsesFontPanel:", - "setUsesGroupingSeparator:", - "setUsesItemFromMenu:", - "setUsesRuler:", - "setUsesScreenFonts:", - "setUsesThreadedAnimation:", - "setUsesUserKeyEquivalents:", - "setUsingDefaultVoice:", - "setValidateSize:", - "setValidatesImmediately:", - "setValue:", - "setValue:forBinding:atIndex:error:", - "setValue:forBinding:atIndexPath:error:", - "setValue:forBinding:error:", - "setValue:forHTTPHeaderField:", - "setValue:forKey:", - "setValue:forKeyPath:", - "setValue:forUndefinedKey:", - "setValue:inObject:", - "setValue:type:forDimension:", - "setValueTransformer:", - "setValueTransformer:forName:", - "setValueTransformerName:", - "setValueWraps:", - "setValues:forParameter:", - "setValuesForKeysWithDictionary:", - "setVersion:", - "setVertical:", - "setVerticalAlign:", - "setVerticalAlignment:", - "setVerticalLineScroll:", - "setVerticalPageScroll:", - "setVerticalPagination:", - "setVerticalScrollingMode:", - "setVerticallyCentered:", - "setVerticallyResizable:", - "setView:", - "setViewAnimations:", - "setViewKind:", - "setViewOfPickerIsLoaded:", - "setViewScale:", - "setViewSize:", - "setViewsNeedDisplay:", - "setVisibilityPriority:", - "setVisible:", - "setVisualFrame:", - "setVoice:", - "setVolatileDomain:forName:", - "setVolume:", - "setWantsNotificationForMarkedText:", - "setWarningValue:", - "setWebFrameView:", - "setWebView:", - "setWhitespace:", - "setWidget:", - "setWidth:", - "setWidth:forSegment:", - "setWidth:ofColumn:", - "setWidth:type:forLayer:", - "setWidth:type:forLayer:edge:", - "setWidthTracksTextView:", - "setWillLoadImagesAutomatically:", - "setWindingRule:", - "setWindow:", - "setWindowContentRect:", - "setWindowController:", - "setWindowFrame:", - "setWindowFrameAutosaveName:", - "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", - "setWindowIfNecessary", - "setWindowIsResizable:", - "setWindowsMenu:", - "setWindowsNeedUpdate:", - "setWithArray:", - "setWithCapacity:", - "setWithObjects:", - "setWithSet:", - "setWordWrap:", - "setWorksWhenModal:", - "setWraps:", - "setZeroSymbol:", - "settings", - "setupAttributes", - "setupCarbonMenuBar", - "setupForNoMenuBar", - "setupGuessesBrowser", - "setupLoadedNib", - "shadeColorWithDistance:towardsColor:", - "shadowBlurRadius", - "shadowColor", - "shadowOffset", - "shadowState", - "shadowWithLevel:", - "shapeWindow", - "shapeWithCGSRegion:", - "shapeWithRect:", - "sharedAEDescriptorTranslator", - "sharedAdapter", - "sharedAppleEventManager", - "sharedApplication", - "sharedBridge", - "sharedCoercionHandler", - "sharedColorPanel", - "sharedColorPanelExists", - "sharedController", - "sharedCredentialStorage", - "sharedDocumentController", - "sharedDragManager", - "sharedEditingDelegate", - "sharedFactory", - "sharedFileInfoCache", - "sharedFocusState", - "sharedFontManager", - "sharedFontOptions", - "sharedFontPanel", - "sharedFontPanelExists", - "sharedFrameLoadDelegate", - "sharedGenerator", - "sharedGlyphGenerator", - "sharedHTTPAuthenticator", - "sharedHTTPCookieStorage", - "sharedHandler", - "sharedHeartBeat", - "sharedHelpManager", - "sharedIconDatabase", - "sharedInfoPanel", - "sharedInstance", - "sharedKeyBindingManager", - "sharedMagnifier", - "sharedMappings", - "sharedNetworkSettings", - "sharedPolicyDelegate", - "sharedPrintInfo", - "sharedRegistry", - "sharedResourceLoadDelegate", - "sharedScriptExecutionContext", - "sharedScriptSuiteRegistry", - "sharedScriptingAppleEventHandler", - "sharedServiceMaster", - "sharedSpellChecker", - "sharedSpellCheckerExists", - "sharedSystemTypesetterForBehavior:", - "sharedTableOptions", - "sharedTextFinder", - "sharedTextRulerOptions", - "sharedToolTipManager", - "sharedToolTipStringDrawingLayoutManager", - "sharedTracer", - "sharedTypesetter", - "sharedTypographyPanel", - "sharedUIDelegate", - "sharedURLCache", - "sharedUserDefaultsController", - "sharedWorkspace", - "sheetDidEnd:returnCode:contextInfo:", - "shiftIndexesStartingAtIndex:by:", - "shiftModifySelection:", - "shortTimeFormat", - "shortValue", - "shortVersion", - "shouldAllowUserColumnResizing", - "shouldAlwaysUpdateDisplayValue", - "shouldAntialias", - "shouldBeTreatedAsInkEvent:", - "shouldBecomeAETEPropertyDeclaration", - "shouldBeginEditing:", - "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:", - "shouldBreakLineByWordBeforeCharacterAtIndex:", - "shouldBufferTextDrawing", - "shouldCascadeWindows", - "shouldChangePrintInfo:", - "shouldChangeTextInRange:replacementString:", - "shouldChangeTextInRanges:replacementStrings:", - "shouldCloseDocument", - "shouldCloseWindowController:", - "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", - "shouldCollapseAutoExpandedItemsForDeposited:", - "shouldCreateRenderers", - "shouldCreateUI", - "shouldDelayWindowOrderingForEvent:", - "shouldDrawColor", - "shouldDrawInsertionPoint", - "shouldEdit:inRect:ofView:", - "shouldEndEditing:", - "shouldIgnoreAction:", - "shouldPersist", - "shouldPrintBackgrounds", - "shouldPrintExceptions", - "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:", - "shouldProvideSortDescriptor:optionsAdvertisingOnly:", - "shouldRefresh", - "shouldRunSavePanelWithAccessoryView", - "shouldShowPreviewColumn:", - "shouldSubstituteCustomClass", - "shouldSuppressNotificationFromObject:keyPath:", - "shouldUseEnabledTextColor", - "shouldUseInvalidationForObject:", - "showAttachmentCell:atPoint:", - "showAttachmentCell:inRect:characterIndex:", - "showCMYKView:", - "showContextHelpForObject:locationHint:", - "showController:adjustingSize:", - "showDeminiaturizedWindow", - "showFeaturesPanel:", - "showGotoWithInitialFilename:", - "showGreyScaleView:", - "showGuessPanel:", - "showHSBView:", - "showHelp:", - "showInfoPanel:", - "showModalPreferencesPanelForOwner:", - "showNode:inDirectory:selectIfEnabled:", - "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:", - "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:", - "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:", - "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:", - "showPanel:andNotify:with:", - "showPopup", - "showPreferencesPanelForOwner:", - "showPrimarySelection", - "showRGBView:", - "showRelativeToView:", - "showRolloverWindow", - "showToolbar:", - "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", - "sidebarVolumesNode", - "signal", - "signature", - "signatureWithObjCTypes:", - "signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:", - "significantText", - "simpleCommandsArray", - "simpleQueryString", - "singleLineTypesetter", - "size", - "sizeCreditsView", - "sizeForDisplayingAttributedString:", - "sizeForKey:inTable:", - "sizeForMagnification:", - "sizeHeightToFit", - "sizeLastColumnToFit", - "sizeLimit", - "sizeMode", - "sizeOfLabel:", - "sizeOfString:", - "sizeOfTitlebarButtons", - "sizeOfTitlebarButtons:", - "sizeOfTitlebarToolbarButton", - "sizeToCells", - "sizeToFit", - "sizeToFitAndAdjustWindowHeight", - "sizeToFitWidth", - "sizeValue", - "sizeWhenSizedToFit", - "sizeWidthToFit", - "sizeWithAttributes:", - "sizeWithBehavior:usesFontLeading:baselineDelta:", - "sizeWithColumns:rows:", - "skipDescendents", - "sleepUntilDate:", - "slide:", - "slideDraggedImageTo:", - "slideImage:from:to:", - "sliderType", - "slot", - "slotForKey:", - "smallSystemFontSize", - "smallestEncoding", - "smartDeleteRangeForProposedRange:", - "smartInsertAfterStringForString:replacingRange:", - "smartInsertBeforeStringForString:replacingRange:", - "smartInsertDeleteEnabled", - "smartInsertForString:replacingRange:beforeString:afterString:", - "smemapROI:forRect:", - "snapshotForSourceGlobalID:relationshipName:after:", - "snapshots", - "socketType", - "sortDescriptorPrototype", - "sortDescriptors", - "sortIndicatorRectForBounds:", - "sortUsingDescriptors:", - "sortUsingFunction:context:", - "sortUsingSelector:", - "sortedArrayUsingDescriptors:", - "sortedArrayUsingFunction:context:", - "sortedArrayUsingFunction:context:hint:", - "sortedArrayUsingSelector:", - "sortedClassDescriptions:", - "sortsChildrenEfficiently", - "sound", - "sound:didFinishPlaying:", - "soundNamed:", - "soundUnfilteredFileTypes", - "source", - "sourceAttributeName", - "sourceEntity", - "sourceFrame", - "sourceKey", - "sourceNode", - "spaceForScrollbarAndScrollViewBorder", - "speakString:", - "speakingString", - "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", - "spherePullROI:forRect:", - "splitCell:range:", - "splitCells", - "splitView:canCollapseSubview:", - "splitView:constrainMaxCoordinate:ofSubviewAt:", - "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:", - "splitView:constrainMinCoordinate:ofSubviewAt:", - "splitView:constrainSplitPosition:ofSubviewAt:", - "splitView:resizeSubviewsWithOldSize:", - "splitViewDidTrackOrResize:", - "splitViewDoubleClick:", - "splitViewWillTrackOrResize:", - "splitterWithIndex:parent:", - "spoolPath", - "spotlight:", - "spotlightColor", - "spotlightEdgeColor", - "sqlCore", - "sqlStatement", - "sqlString", - "sqlType", - "sqlTypeForExpressionConstantValue:", - "srRecognitionSystem", - "srRecognizer", - "src", - "stalenessInterval", - "standardFontFamily", - "standardPreferences", - "standardUserDefaults", - "standardWindowButton:", - "standardWindowButton:forStyleMask:", - "standardizedPath", - "standardizedURL", - "standardizedURLPath", - "start", - "start:", - "startAllPlugins", - "startAnimation:", - "startArchiving:", - "startAuthentication:window:", - "startCoalesceTextDrawing", - "startContainer", - "startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:", - "startInputStream:closeOnEnd:", - "startLoading", - "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:", - "startProgressiveLoad", - "startQuery", - "startRectForSheet:", - "startSpeaking:", - "startSpecifier", - "startStreamResponseURL:expectedContentLength:lastModifiedDate:MIMEType:", - "startStreamWithResponse:", - "startSubelementIdentifier", - "startSubelementIndex", - "startTextTimer", - "startTimer:userInfo:", - "startTimerForSpeaking", - "startTrackingAt:inView:", - "startTrackingWithEvent:inView:withDelegate:", - "startingColumn", - "startingRow", - "stashSize", - "state", - "stateImageOffset", - "stateImageRectForBounds:", - "stateImageWidth", - "statementClass", - "statistics", - "status", - "status:", - "statusBar", - "statusCode", - "statusMenu", - "stepKey:elements:number:state:", - "stepTowardsDestinationAtleastAsFarAs:", - "stop", - "stop:", - "stopAllPlugins", - "stopAllTimersForSpeaking", - "stopAnimation", - "stopAnimation:", - "stopAnimationsInView:", - "stopCoalescing", - "stopDeferringTimers", - "stopListening", - "stopLoading", - "stopLoading:", - "stopLoadingForPolicyChange", - "stopModal", - "stopModalWithCode:", - "stopNullEvents", - "stopObservingModelObjectAtReferenceIndex:", - "stopObservingModelObjectsAtReferenceIndexes:", - "stopObservingNode", - "stopObservingPreviewNode", - "stopObservingRelatedObject:", - "stopPeriodicEvents", - "stopSpeaking", - "stopSpeaking:", - "stopTextTimer", - "stopTimer", - "stopTimerForSpeaking", - "stopTracking:at:inView:mouseIsUp:", - "stopTrackingWithEvent:", - "stopUpdateInsertionAnimation", - "storagePolicy", - "store", - "storeCachedResponse:forRequest:", - "storeColorPanel:", - "storeCurrentBrowsingNodePath:", - "storeMetadata", - "storeMin:andMax:ofObject:", - "storeType", - "storedAttributes", - "storedValueForKey:", - "stores", - "stream:handleEvent:", - "strengthMenuItemTitles", - "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", - "string", - "string:", - "stringArrayForKey:", - "stringByAbbreviatingWithTildeInPath", - "stringByAddingPercentEscapes", - "stringByAddingPercentEscapesUsingEncoding:", - "stringByAppendingFormat:", - "stringByAppendingPathComponent:", - "stringByAppendingPathExtension:", - "stringByAppendingString:", - "stringByDeletingLastPathComponent", - "stringByDeletingPathExtension", - "stringByEvaluatingJavaScriptFromString:", - "stringByExpandingTildeInPath", - "stringByPaddingToLength:withString:startingAtIndex:", - "stringByReplacingPercentEscapesUsingEncoding:", - "stringByResolvingSymlinksInPath", - "stringByStandardizingPath", - "stringByTrimmingCharactersInSet:", - "stringForEditing", - "stringForKey:", - "stringForKey:inTable:", - "stringForObjectValue:", - "stringForRange:", - "stringForStringListID:andIndex:", - "stringForType:", - "stringFromDate:", - "stringListForKey:inTable:", - "stringMarkingUpcaseTransitionsWithDelimiter2:", - "stringParameterValue:", - "stringValue", - "stringValueForObject:", - "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:", - "stringWithCString:", - "stringWithCString:encoding:", - "stringWithCString:length:", - "stringWithCapacity:", - "stringWithCharacters:length:", - "stringWithContentsOfFile:", - "stringWithContentsOfURL:", - "stringWithData:textEncoding:", - "stringWithData:textEncodingName:", - "stringWithFileSystemRepresentation:length:", - "stringWithFormat:", - "stringWithSavedFrame", - "stringWithString:", - "stringWithUTF8String:", - "stringWithoutAmpersand", - "stringsByAppendingPathComponent:", - "stringsByAppendingPaths:", - "stripDiacriticsFromString:", - "stroke", - "strokeLineFromPoint:toPoint:", - "strokeRect:", - "style", - "styleMask", - "styleSheetForPrinting", - "subNodeAtIndex:", - "subNodes", - "subarrayWithRange:", - "subdataWithRange:", - "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:", - "subentities", - "subentitiesByName", - "subentityColumn", - "subentityID", - "subentityKey", - "subentityMaxID", - "subexpression", - "subframeArchives", - "submenu", - "submenuAction:", - "submenuRepresentedObjects", - "submenuRepresentedObjectsAreStale", - "submitButtonDefaultLabel", - "subpredicate", - "subpredicates", - "subresourceForURL:", - "subresources", - "subscript:", - "subscriptRange:", - "substituteFontForFont:", - "substituteGlyphsInRange:withGlyphs:", - "substitutedValueForPredicate:", - "substringFromIndex:", - "substringToIndex:", - "substringWithRange:", - "subtractRect:", - "subtractRegion:", - "subtype", - "subviews", - "suggestedFilename", - "suiteDescriptionFromPropertyListDeclaration:bundle:", - "suiteDescriptions", - "suiteName", - "suiteRegistry", - "sum:", - "superClass", - "superclass", - "superclassDescription", - "superentity", - "supermenu", - "superscript:", - "superscriptRange:", - "superview", - "superviewFrameChanged:", - "supportedImageMIMETypes", - "supportedMIMETypes", - "supportsCommand:", - "supportsMode:", - "supportsMutableFBENode", - "supportsSortingByFileProperties", - "supportsTableEditing", - "supportsTextEncoding", - "suppressAllNotificationsFromObject:", - "suppressSpecificNotificationFromObject:keyPath:", - "surfaceID", - "suspend", - "suspendCurrentAppleEvent", - "suspendExecution", - "suspended", - "swapGlyph:withIndex:", - "swatchWidth", - "switchCell", - "switchImage:", - "switchToListNamed:", - "symbol", - "symbolCharacterSet", - "symbolicLinkDestination", - "symbolicTraits", - "sync", - "syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:", - "syncToView:", - "syncToViewUnconditionally", - "syncWithRemoteToolbars", - "synchronize", - "synchronizeTableViewSelectionWithText:", - "synchronizeTitleAndSelectedItem", - "synchronizeWindowTitleWithDocumentName", - "synthesizerIsRetained", - "systemCharacterProperties", - "systemColorsDidChange:", - "systemDefaultPortNameServer", - "systemFontOfSize:", - "systemFontSize", - "systemFontSizeForControlSize:", - "systemID", - "systemLanguage", - "systemLanguageContext", - "systemLocale", - "systemTabletID", - "systemVersion", - "tabKeyTraversesCells", - "tabState", - "tabStopType", - "tabStops", - "tabView", - "tabView:didSelectTabViewItem:", - "tabView:shouldSelectTabViewItem:", - "tabView:willSelectTabViewItem:", - "tabViewAdded", - "tabViewDidChangeNumberOfTabViewItems:", - "tabViewItemAtIndex:", - "tabViewItemAtPoint:", - "tabViewItems", - "tabViewRemoved", - "tabViewType", - "table", - "tableAction:", - "tableColumn:didChangeToWidth:", - "tableColumn:willDisplayCell:row:", - "tableColumnWithIdentifier:", - "tableColumns", - "tableName", - "tableOptionsPanel:", - "tableParameters", - "tableRow:ofTableView:", - "tableView", - "tableView:acceptDrop:row:dropOperation:", - "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:", - "tableViewSelectionIsChanging:", - "tabletEvent", - "tabletID", - "tabletPoint:", - "tabletProximity:", - "tabsToLinks", - "tag", - "tagForSegment:", - "tagName", - "tailIndent", - "take", - "takeColorFrom:", - "takeColorSpaceFrom:", - "takeFindStringFromSelection:", - "takeFindStringFromView:", - "takeStoredValue:forKey:", - "takeStoredValuesFromDictionary:", - "takeValue:forKey:", - "takeValue:forKeyPath:", - "takeValuesFromDictionary:", - "tangentialPressure", - "target", - "targetAndArgumentsAcceptable", - "targetAndArgumentsAcceptableAtIndex:", - "targetAndArgumentsAcceptableAtIndexPath:", - "targetAndArgumentsAcceptableForPerformAction", - "targetAnimationRect", - "targetForAction:", - "targetForAction:to:from:", - "targetOrigin", - "targetWithQObject:member:", - "targetWithQTimer:", - "tearOffMenuRepresentation", - "tellQuickTimeToChill", - "temporaryAttributesAtCharacterIndex:effectiveRange:", - "temporaryID", - "temporaryObjectIDWithEntity:", - "terminate", - "terminate:", - "terminateForClient:", - "test", - "testPart:", - "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", - "textDidChange:", - "textDidEndEditing:", - "textEncoding", - "textEncodingName", - "textLists", - "textObjectToSearchIn", - "textPasteboardTypes", - "textShadowForButtonState:", - "textShouldBeginEditing:", - "textShouldEndEditing:", - "textSizeMultiplier", - "textStorage", - "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: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", - "textWithStringValue:", - "textureIsDestination:name:userInfo:", - "textureROI:forRect:", - "thickness", - "thicknessRequiredInRuler", - "thousandSeparator", - "threadDictionary", - "tickMarkPosition", - "tickMarkValueAtIndex", - "tickMarkValueAtIndex:", - "tightenKerning:", - "tightenThresholdForTruncation", - "tighteningFactorForTruncation", - "tile", - "tileAndSetWindowShape:", - "tileForView:", - "tileIfNecessary", - "tileInRect:fromPoint:context:", - "tileVertically", - "tilt", - "tiltX", - "tiltY", - "timeInterval", - "timeIntervalSince1970", - "timeIntervalSinceDate:", - "timeIntervalSinceNow", - "timeIntervalSinceReferenceDate", - "timeZone", - "timeZoneForSecondsFromGMT:", - "timeZoneWithAbbreviation:", - "timeZoneWithName:", - "timeoutInterval", - "timer:", - "timerFired", - "timerFired:", - "timerWithTimeInterval:target:selector:userInfo:repeats:", - "timestamp", - "timestampForKey:", - "title", - "titleBarFontOfSize:", - "titleButtonOfClass:", - "titleCell", - "titleColor", - "titleFont", - "titleForIdentifier:", - "titleFrameOfColumn:", - "titleHeight", - "titleOfSelectedItem", - "titlePosition", - "titleRect", - "titleRectForBounds:", - "titleWidth", - "titleWidth:", - "titlebarRect", - "tmpNameFromPath:extension:", - "toManyRelationshipKeys", - "toOneRelationship", - "toOneRelationshipKeys", - "toggleBaseWritingDirection:", - "toggleContinuousGrammarChecking:", - "toggleContinuousSpellChecking:", - "toggleExpanded:", - "toggleIsExpanded:", - "toggleKeepVisibleToolbarItem:", - "togglePlatformInputSystem:", - "togglePreview:", - "toggleRuler:", - "toggleSmartInsertDelete:", - "toggleToolbarShown:", - "toggleTraditionalCharacterShape:", - "toggleUsingSmallToolbarIcons:", - "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:", - "topLevelNode", - "topLevelObject", - "topLevelObjectClassDescription", - "topMargin", - "topUndoObject", - "totalNumberOfItemViewersAndSeparators", - "touch", - "trace", - "traceWithFlavor:priority:format:arguments:", - "trackKnob:", - "trackMagnifierForPanel:", - "trackMarker:withMouseEvent:", - "trackMouse:adding:", - "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:", - "trackMouse:inRect:ofView:untilMouseUp:", - "trackMouseForPopupMenuFormRepresentation:", - "trackPagingArea:", - "trackScrollButtons:", - "trackWithEvent:", - "trackWithEvent:inView:withDelegate:", - "trackingMode", - "trackingNumber", - "trailingOffset", - "traitsOfFont:", - "transactionDidBegin", - "transactionDidCommit", - "transactionDidRollback", - "transform", - "transform:", - "transformBy:interior:", - "transformPoint:", - "transformRect:", - "transformStruct", - "transformUsingAffineTransform:", - "transformedImage:", - "transformedValue:", - "transformedValueClass", - "translateOriginToPoint:", - "translateTo::", - "translateXBy:yBy:", - "transparentBackground", - "treatNilValuesLikeEmptyCollections", - "treatsDirectoryAliasesAsDirectories", - "treatsFilePackagesAsDirectories", - "tryDHTMLCopy", - "tryDHTMLCut", - "tryDHTMLPaste", - "tryLock", - "tryNewColorListNameSheetDidEnd:returnCode:context:", - "tryNextChallengeForWindow:", - "tryToPerform:with:", - "turnObject:intoFaultWithContext:", - "turnOffKerning:", - "turnOffLigatures:", - "type", - "typeCodeValue", - "typeDescription", - "typeDescriptions", - "typeForContentsOfURL:error:", - "typeForKey:", - "typeForParameter:", - "typeFromFileExtension:", - "typeSelectNodeInTypeSelectDirectoryWithKeyDownEvent:recursively:", - "typeStringForColumn:", - "typeToUnixName:", - "typefaceInfoForFontDescriptor:", - "typefaceInfoForKnownFontDescriptor:", - "typefaceInfoForPostscriptName:", - "types", - "typesFilterableTo:", - "typesetter", - "typesetterBehavior", - "typesetterLaidOneGlyph:", - "typingAttributes", - "typingStyle", - "unableToSetNilForKey:", - "unarchiveObjectWithData:", - "unarchiveObjectWithFile:", - "unarchiver:cannotDecodeObjectOfClassName:originalClasses:", - "unarchiver:didDecodeObject:", - "unarchiver:willReplaceObject:withObject:", - "unarchiverDidFinish:", - "unarchiverWillFinish:", - "unbind:", - "unbindNSView:", - "undefined", - "underline:", - "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", - "underlineThickness", - "undo", - "undo:", - "undoActionName", - "undoEdit", - "undoEditing:", - "undoManager", - "undoManagerForTextView:", - "undoManagerForWebView:", - "undoManagerForWindow:", - "undoMenuItemTitle", - "undoMenuTitleForUndoActionName:", - "undoNestedGroup", - "undoRedo:", - "unfocusView:", - "unfocusWindow", - "unhide", - "unhide:", - "unhideAllApplications:", - "unhideWithoutActivation", - "unionSet:", - "unionWith:", - "unionWithRect:", - "uniqueID", - "uniqueKey:", - "uniqueNameWithBase:", - "uniqueNodeForIndexes:count:indexPath:", - "uniqueSpellDocumentTag", - "unixToTypeName:", - "unload", - "unloadNib:", - "unloadWithoutShutdown", - "unlock", - "unlockDocument", - "unlockFocus", - "unlockFocusInRect:", - "unlockObjectStore", - "unlockParentStore", - "unlockTopMostReader", - "unlockWithCondition:", - "unmarkText", - "unpackROI:forRect:", - "unreachableURL", - "unregisterDragTypesForWindow:", - "unregisterDraggedTypes", - "unregisterForEnclosingClipViewNotifications", - "unregisterForPropertyChangedNotifications", - "unregisterForWindowNotifications", - "unregisterObjectWithServicePath:", - "unscript:", - "unscriptRange:", - "unsignedCharValue", - "unsignedIntValue", - "unsignedLongLongValue", - "unsignedLongValue", - "unsignedShortValue", - "unsupportedTextMIMETypes", - "unsuppressAllNotificationsFromObject:", - "unsuppressSpecificNotificationFromObject:keyPath:", - "untrashedLeafFileLocationComponentWithLocator:", - "unvalidatedPath", - "unvalidatedSpecifier", - "update", - "updateAndSetWindow", - "updateCacheForStreamDisposal", - "updateCell:", - "updateCellInside:", - "updateCellOrControl:forMaxValue:", - "updateCellOrControl:forMinValue:", - "updateChangeCount:", - "updateColorOptionsUI", - "updateConnectionForResponse:", - "updateCurGlyphOffset", - "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:", - "updateDragTypeRegistration", - "updateDynamicServices:", - "updateFavoritesFromDefaults", - "updateFavoritesUI", - "updateFocusDisplay", - "updateFontPanel", - "updateFrameColors:", - "updateFromPath:", - "updateFromPrintInfo", - "updateHeartBeatState", - "updateInputContexts", - "updateInsertionPointStateAndRestartTimer:", - "updateInvalidatedFont:forObject:", - "updateInvalidatedObjectValue:forObject:", - "updateInvalidatedTextColor:forObject:", - "updateLabel", - "updateLineSpacingUI", - "updateNib", - "updateOptions:", - "updateOptionsUI", - "updateOptionsWithApplicationIcon:", - "updateOptionsWithApplicationName:", - "updateOptionsWithCopyright:", - "updateOptionsWithCredits:", - "updateOptionsWithMarketingVersion:", - "updateOptionsWithVersion:", - "updateOutlineColumnDataCell:forDisplayAtIndexPath:", - "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:", - "updatePoofAnimation", - "updateQueryNode:", - "updateReferenceIndexesToReflectInsertionAtIndex:", - "updateReferenceIndexesToReflectInsertionAtIndexes:", - "updateReferenceIndexesToReflectRemovalAtIndex:", - "updateReferenceIndexesToReflectRemovalAtIndexes:", - "updateRoot", - "updateRow:", - "updateRuler", - "updateScroller", - "updateScrollers", - "updateSearchFieldWithPredicate:", - "updateSpellingPanelWithMisspelledWord:", - "updateSubmenu:", - "updateSwatch", - "updateTableColumnDataCell:forDisplayAtIndex:", - "updateTextAttributes:", - "updateTextColor", - "updateUI", - "updateWindows", - "updateWindowsItem:", - "updateWithFocusRing", - "updateWithFocusRingForWindowKeyChange", - "updatedObjects", - "uppercaseLetterCharacterSet", - "uppercaseString", - "url", - "usage", - "use", - "useAllLigatures:", - "useCredential:forAuthenticationChallenge:", - "useDisabledEffectForState:", - "useHighlightEffectForState:", - "useMap", - "useOptimizedDrawing:", - "useSSLOnlyForKey:", - "useStandardKerning:", - "useStandardLigatures:", - "useStoredAccessor", - "usedRectForTextContainer:", - "usedSize", - "user", - "userAgent", - "userAgentForURL:", - "userColumnResizingAutoresizesWindow", - "userData", - "userFixedPitchFontOfSize:", - "userFontOfSize:", - "userHomeNode", - "userInfo", - "userKeyEquivalent", - "userKeyEquivalentModifierMask", - "userSpaceScaleFactor", - "userStyleSheetEnabled", - "userStyleSheetLocation", - "usesAlternatingRowBackgroundColors", - "usesButtons", - "usesDataSource", - "usesEPSOnResolutionMismatch", - "usesFeedbackWindow", - "usesFindPanel", - "usesFontLeading", - "usesFontPanel", - "usesGroupingSeparator", - "usesItemFromMenu", - "usesMenuFormRepresentationInDisplayMode:", - "usesRuler", - "usesScreenFonts", - "usesUnnamedArguments", - "usesUserKeyEquivalents", - "usingDefaultVoice", - "validAttributesForMarkedText", - "validModesForFontPanel:", - "validRequestorForSendType:returnType:", - "validRows", - "validStartCharacter:", - "validate", - "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:", - "validateEditing", - "validateFindPanelAction:forClient:", - "validateForDelete:", - "validateForInsert:", - "validateForUpdate:", - "validateItem:", - "validateMenuItem:", - "validateObjectValue:", - "validateRename", - "validateTakeValue:forKeyPath:", - "validateToolbarItem:", - "validateUserInterfaceItem:", - "validateValue:forKey:", - "validateValue:forKey:error:", - "validateValue:forKeyPath:error:", - "validateVisibleItems", - "validatesImmediately", - "validationPredicates", - "validationWarnings", - "value", - "value:withObjCType:", - "valueAtIndex:", - "valueAtIndex:inPropertyWithKey:", - "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:", - "valueOfAttribute:forResultAtIndex:", - "valueTransformer", - "valueTransformerForBinding:", - "valueTransformerForName:", - "valueTransformerName", - "valueTransformerNames", - "valueTypeDescriptionFromName:declaration:", - "valueTypeForDimension:", - "valueWithBytes:objCType:", - "valueWithName:inPropertyWithKey:", - "valueWithNonretainedObject:", - "valueWithPoint:", - "valueWithPointer:", - "valueWithRange:", - "valueWithRect:", - "valueWithSize:", - "valueWithUniqueID:inPropertyWithKey:", - "valueWraps", - "values", - "values:forResolutions:withCount:fromArrayOrNumber:", - "valuesForKeys:", - "variable", - "variableExpression", - "variant", - "vectorWithString:", - "vectorWithValues:count:", - "vectorWithX:", - "vectorWithX:Y:", - "vectorWithX:Y:Z:", - "vectorWithX:Y:Z:W:", - "vendor1", - "vendor2", - "vendor3", - "vendorDefined", - "vendorID", - "vendorPointerType", - "vendorPointingDeviceType", - "verifyWithDelegate:", - "version", - "versionForClassName:", - "versionForClassNamed:", - "versionString", - "verticalAlignment", - "verticalLineScroll", - "verticalPageScroll", - "verticalPagination", - "verticalRulerView", - "verticalScroller", - "verticalScrollingMode", - "view", - "view:customToolTip:drawInView:displayInfo:", - "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:", - "view:customToolTip:frameForToolTipWithDisplayInfo:", - "view:stringForToolTip:point:userData:", - "viewBoundsChanged:", - "viewDidEndLiveResize", - "viewDidLiveResizeFromRect:", - "viewDidMoveToHostWindow", - "viewDidMoveToSuperview", - "viewDidMoveToWindow", - "viewFactory", - "viewForCharacterIndex:layoutManager:", - "viewForJavaAppletWithFrame:attributeNames:attributeValues:baseURL:", - "viewForObject:", - "viewForPluginWithURL:attributeNames:attributeValues:MIMEType:", - "viewForPreferenceNamed:", - "viewFrameChanged:", - "viewHasMoved:", - "viewSize", - "viewSizeChanged:", - "viewWillDealloc", - "viewWillMoveToHostWindow:", - "viewWillMoveToSuperview:", - "viewWillMoveToWindow:", - "viewWillResetCursorRects", - "viewWillStartLiveResize", - "viewWithFrame:forView:characterIndex:layoutManager:", - "viewWithTag:", - "visibilityPriority", - "visibleFrame", - "visibleItems", - "visibleRect", - "visibleSelectionRect", - "visitPredicate:", - "visitPredicateExpression:", - "visitPredicateOperator:", - "visitor", - "visualFrame", - "visualRootNode", - "voiceIdentifierForVoiceCreator:voiceID:", - "volatileDomainForName:", - "wait", - "waitForDataInBackgroundAndNotifyForModes:", - "waitInterval:", - "wakeup:", - "wantsDefaultClipping", - "wantsDoubleBuffering", - "wantsNotificationForMarkedText", - "wantsPeriodicDraggingUpdates", - "wantsScrollWheelEvent:", - "wantsToDelayTextChangeNotifications", - "wantsToDrawIconInDisplayMode:", - "wantsToDrawIconIntoLabelAreaInDisplayMode:", - "wantsToDrawLabelInDisplayMode:", - "wantsToHandleMouseEvents", - "wantsToInterpretAllKeystrokes", - "wantsToTrackMouse", - "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:", - "webView:didCancelClientRedirectForFrame:", - "webView:didChangeLocationWithinPageForFrame:", - "webView:didCommitLoadForFrame:", - "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:", - "webView:resource:didReceiveAuthenticationChallenge:fromDataSource:", - "webView:resource:didReceiveContentLength:fromDataSource:", - "webView:resource:didReceiveResponse:fromDataSource:", - "webView:resource:willSendRequest:redirectResponse:fromDataSource:", - "webView:runJavaScriptAlertPanelWithMessage:", - "webView:runJavaScriptConfirmPanelWithMessage:", - "webView:runJavaScriptTextInputPanelWithPrompt:defaultText:", - "webView:runOpenPanelForFileButtonWithResultListener:", - "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:", - "webViewDidBeginEditing:", - "webViewDidChange:", - "webViewDidChangeSelection:", - "webViewDidChangeTypingStyle:", - "webViewDidEndEditing:", - "webViewFirstResponder:", - "webViewFocus:", - "webViewFooterHeight:", - "webViewFrame:", - "webViewHeaderHeight:", - "webViewIsResizable:", - "webViewIsStatusBarVisible:", - "webViewPrint:", - "webViewShow:", - "webViewsInSetNamed:", - "weightOfFont:", - "whiteColor", - "whiteComponent", - "whitespace", - "whitespaceAndNewlineCharacterSet", - "whitespaceCharacterSet", - "widget", - "widgetInView:withButtonID:action:", - "width", - "widthAdjustLimit", - "widthForLayer:edge:", - "widthForSegment:", - "widthOfString:", - "widthTracksTextView", - "widthValueTypeForLayer:edge:", - "willAccessValueForKey:", - "willBeDisplayed", - "willCacheResponse:", - "willChange:valuesAtIndexes:forKey:", - "willChangeExpandedNodes", - "willChangeValueForKey:", - "willChangeValueForKey:withSetMutation:usingObjects:", - "willChangeValuesForArrangedKeys:objectKeys:indexKeys:", - "willForwardSelector:", - "willHaveItemsToDisplayForItemViewers:", - "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:", - "windowControllerWillLoadNib:", - "windowControllers", - "windowDidBecomeKey:", - "windowDidBecomeKeyNotification:", - "windowDidDeminiaturize:", - "windowDidEnableToolTipCreationAndDisplay", - "windowDidLoad", - "windowDidMiniaturize:", - "windowDidResignKey:", - "windowDidResignKeyNotification:", - "windowDidResize:", - "windowDidUpdate:", - "windowForSheet", - "windowFrame", - "windowFrameAutosaveName", - "windowFrameColor", - "windowFrameOutlineColor", - "windowFrameTextColor", - "windowID", - "windowIsResizable", - "windowIsSpellingPanel:", - "windowNibName", - "windowNibPath", - "windowNumber", - "windowObjectCleared", - "windowProperties", - "windowRef", - "windowResignedKey:", - "windowScriptNPObject", - "windowScriptObject", - "windowShouldClose:", - "windowShouldZoom:toFrame:", - "windowTitle", - "windowTitleForDocumentDisplayName:", - "windowTitlebarLinesSpacingWidth", - "windowTitlebarLinesSpacingWidth:", - "windowTitlebarTitleLinesSpacingWidth", - "windowTitlebarTitleLinesSpacingWidth:", - "windowWillClose:", - "windowWillCloseNotification:", - "windowWillLoad", - "windowWillResize:toSize:", - "windowWillReturnFieldEditor:toObject:", - "windowWillReturnUndoManager:", - "windowWillUseStandardFrame:defaultFrame:", - "windowWithWindowNumber:", - "windows", - "wordMovementHandler", - "wordWrap", - "workQueue", - "worksWhenModal", - "wrapMode", - "wrapROI:forRect:", - "wraps", - "writablePasteboardTypes", - "writableTypes", - "writableTypesForSaveOperation:", - "write:len:buffer:", - "writeAlignedDataSize:", - "writeAttachment:", - "writeBackgroundColor", - "writeBaselineOffset:", - "writeBody", - "writeCharacterAttributes:previousAttributes:", - "writeCharacterShape:", - "writeColor:type:", - "writeColorTable", - "writeColors", - "writeData:", - "writeData:length:", - "writeDate:", - "writeDateDocumentAttribute:withRTFKeyword:", - "writeDefaultTabInterval", - "writeDelayedInt:for:", - "writeDocument:pbtype:filename:", - "writeEscapedUTF8String:", - "writeExpansion:", - "writeFont:", - "writeFontTable", - "writeGlyphInfo:", - "writeHeader", - "writeHyphenation", - "writeImageToPasteboard:types:", - "writeInfo", - "writeInt:", - "writeKern:", - "writeKeywordsDocumentAttribute", - "writeLigature:", - "writeLinkInfo:", - "writeListTable", - "writeLock", - "writeObliqueness:", - "writePaperSize", - "writeParagraphStyle:", - "writePath:docInfo:errorHandler:remapContents:hardLinkPath:", - "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:", - "writePrintInfo", - "writeProperty:forKey:", - "writeRTF", - "writeRoomForInt:", - "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:", - "writeToURL:atomically:", - "writeToURL:ofType:error:", - "writeToURL:ofType:forSaveOperation:originalContentsURL:error:", - "writeURLs:andTitles:toPasteboard:", - "writeUnderlineStyle:allowStrikethrough:", - "writeUnlock", - "writeWithBackupToFile:ofType:saveOperation:", - "xHeight", - "xmlInfoForAttribute:", - "xmlNode", - "yearOfCommonEra", - "yellowColor", - "yellowComponent", - "zero", - "zeroOrMoreDescriptionsForSubelementName:", - "zeroSymbol", - "zone", - "zoom:", - "zoomButton" +// Automatically generated. Do not edit. +static const char * const _objc_builtin_selectors[] = { + "_fillsClipViewHeight", + NULL, + "accessibilityIsTitleAttributeSettable", + "theaterNumberOfAudioChannels", + "_makeHistory", + "setIgnoredWords:inSpellDocumentWithTag:", + "birthdayFieldPresent", + "contextID", + "rolloverMenuForCardProxy", + "errorExpectedTypeDescriptor", + "searchButtonRectForBounds:", + "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:", + "objectGraphDescription", + NULL, + "installScrollValuesToScrollView:", + "_audioLevelsForPropertyID:", + "_cursorOfDividerAtIndex:position:dragConstraints:", + NULL, + NULL, + "initWithStartingColor:endingColor:", + "setAppleMenu:", + "maximumAdvancement", + "handleSwitchToCardAndColumnsFrom:animate:", + "kickYourSelfIntoMotion", + "textureColorSpace", + "supportsPlaying", + NULL, + "setCropInfo:", + "itemMatrix", + "_editSubgraph:", + "newChildObject", + "rateChangePreservesPitch", + "addTrackingRectForToolTip:reuseExistingTrackingNum:", + NULL, + NULL, + "_changeDrawerKeyState", + NULL, + "touchCachedImageForEmail:", + "allocateBatch:count:", + "notificationCenterForType:", + "setCurrentSelection:", + "objectID", + "target", + "_lockCachedImage", + "_setContentType:", + "setBaseWritingDirection:", + "initWithCSR:clHandle:", + "_listenForProxySettingChanges", + "setCoreUIWindowType:", + "_invalidateGlyphsForCharacterRange:editedCharacterRange:changeInLength:actualCharacterRange:", + "_setDelegate:", + "setGlyphGenerator:", + "setUsesRuler:", + "write", + "_indexForMoveRight", + "setMyButton:", + "_setKeyBindingMonitor:", + "_setURI:", + "asRef", + "setUpdateMovieBoxWhileResizing:", + "_installTrackingRect:assumeInside:userData:trackingNum:", + "_scriptingCount", + "addFirst:", + "_canGuaranteeOrderOfContentObjects", + "textView:doCommandBySelector:", + "_yesterdayString", + "_getSelectorForType:", + "_postpone", + "isContinuousSpellCheckingEnabled", + "_outputAudioSampleBuffer:fromConnection:", + "_restoreMode", + "layoutPopupViews", + "_growCachedRectArrayToSize:", + "setShowsSuppressionButton:", + "isHorizontal", + "saveQuery", + "isKeyExcludedFromWebScript:", + "CA_isAbsolutePath:", + NULL, + NULL, + "setShowsInvisibleCharacters:", + "_componentsOfInterestToDatePickerFromDate:", + "retainedFigSampleBuffer", + NULL, + "_setTrust:", + "resetToolbarToDefaultConfiguration:", + "nts_RestoreFromMetaDataIfNeeded", + "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:", + "_ignoreForKeyViewLoop", + "bogusbogus", + "substringFromIndex:", + "accessibilityIsWindowsAttributeSettable", + "blurHorizontalPass3ROI:destRect:", + "charactersToBeSkipped", + "initWithKey:type:isReadOnly:appleEventCode:isLocationRequiredToCreate:", + "_spellingGuessesForRange:", + "initForWritingWithMutableData:", + "delayWindowOrdering", + "_defaultObjectClass", + "removeDocument:", + NULL, + "initWithTimeIntervalSinceReferenceDate:", + "addressBookWillDealloc:", + "rowsPerScreen", + "words", + "hasVerticalScroller", + "_NSNibPathForNibID:", + NULL, + "_intercellSpace", + "_setSelected:", + NULL, + "fontDescriptor", + "_clearRawPropertiesWithHint:", + "setUIController:", + "setSaveWeighting:", + "chapterlist", + "fauxFilePackageTypes", + "invalidateAnimatedCellsArrayCache", + "_dotMacEmailEncryptionUsage", + NULL, + NULL, + "_releaseURIArray", + "closeFileHandler", + "setUsesItemFromMenu:", + "cgContext", + NULL, + "peopleWithScreenName:", + "addEffectWithDictionary:", + "moveAnnotationToEnd:", + NULL, + "selectCell:", + "beginRenderTexture:colorSpace:virtualScreen:", + "clearShadow", + "_scheduleAnimationContextStackFlush", + "initWithRuns:glyphOrigin:lineFragmentWidth:elasticWidth:usesScreenFonts:isRTL:", + "_invalidLabelSize", + "systemDefaultPortNameServer", + "growBuffer:current:end:factor:", + "preferredPlaceholderForMarker:", + "processNode:permutations:path:replacingNode:subtreeWith:into:", + "alignmentRect", + "_setTexturedBackground:", + "_startAutoExpandingItemFlash", + "writeProperty:forKey:", + "_updatedState:", + "sortedArrayUsingFunction:context:", + "_updateOverlay", + "yTranslation", + "saveOptionCanUseFileType:", + "encodeWithCoder:", + "cStringUsingEncoding:", + "_hasKeyFocus", + "importFactor", + "unquiesce", + NULL, + "operationWasAborted", + "pixelFormatKYMC8", + "openListFromFile:", + NULL, + "processEventQ", + "_closeInlinePreview", + "headerView", + "_moveDown:", + "colorForProperty:", + "_resetCurrentSearchIndex", + "_selectWindow:", + "_drawCustomTrackWithTrackRect:inView:", + "setDatabaseUUID:", + "compressedSizeForOriginalSize:", + "pixelFormatRGB16", + "controlSize", + "imageBrowser:didMoveItemsAtIndexes:", + "setContinuous:", + "_validateSpecifier", + "resizeDisplayView:", + "cancelScheduledEndOfSearch", + "standardItemWithItemIdentifier:", + "shouldCreateIvarPorts", + "preservesAspectRatio", + "_setDrawsOwnDescendants:", + "addCancelButton", + "sessionFinished:", + "_sendDataSourceWriteDragDataWithIndexes:toPasteboard:", + "isPolicySpecificStatusCode:", + "gotoPreviousItem:", + NULL, + "stopClearSearchTimer", + "_flushAllCachedChildren", + "setImageLayer:originalLayer:mode:", + "_send:", + "_copyCGImageAndRect:forDrawingInRect:inReferenceContext:", + NULL, + "notActiveWindowFrameColor", + "needsDisplay", + "applyFontTraits:range:", + "lockFocusIfCanDrawInContext:", + "_setAlignmentRectInNormalizedCoordinates:", + "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", + "setConditionallySetsEditable:", + NULL, + "_assertFilterRestrictsInsertionOfObjects:atArrangedObjectIndexes:", + "mediaBrowserView", + "_getATSTypesetterGuts", + "_setDocumentEdited:", + NULL, + "launchQCPickerWithParent:withDelegate:fromView:centerPoint:onScreen:currentQCIdentifier:", + "originalURL", + NULL, + "highestMipmapItem", + "makeKeyAndOrderFrontWithEffect:", + "_isHidden", + "_getExternalData:", + "handlePrintScriptCommand:", + "commitChanges:", + "characterSetCoveredByFont:language:", + "shouldEdit:inRect:ofView:", + "tickMarkValueAtIndex", + "cropPRSFromCropRegion:cropSize:originalImageSize:", + "_updateForDocumentEdited:", + "setCurrentInputManager:", + "validateMenuItem:", + "internals", + "systemTabletID", + "systemVersion", + "trustSettingsDomain", + "codecType", + "removeAppleUseCoreUIAtIndexes:", + "setNeedsDisplayInRect:avoidAdditionalLayout:", + "fillColor", + "deselectMemberRow:subrow:", + "_invalidateExecutionMode", + "_enableRefreshOnWindow:", + "componentRemoveNotification:", + "discardMarkedText", + "indexFromURL:", + "isRegularFile", + "removeCurrentSchedule", + "valueClass:forBinding:", + "initWithPreview:forView:", + "initWithCIImage:options:", + "_registerMenuItemForKeyEquivalentUniquing:", + "setPreloadRange:", + "_fetchAllInstancesFromStore:intoContext:underlyingException:", + "accessibilityIsMainAttributeSettable", + "addNormalAndDownAppearanceWithStateToDictionaryRef:", + "ancestorsStartingWith:", + "insertBacktab:", + "insertROI:destRect:", + "iconForItem:", + NULL, + "setThemeFrameWidgetState:", + "deselectGroup:", + "getAttributeFromBuffer:allowBinary:", + "_animatePulse", + "indexOfCurrentSlideshowItem", + "_verticalDistanceForPageScroll", + "_invalidateBezierPathsForKeyFrame:", + NULL, + "_CAAdminEmailAddress", + "selfDidResize:", + "shouldRunSavePanelWithAccessoryView", + "isGatheringResults", + "isBusy", + "directoryTraversalOperation:shouldProceedAfterError:", + "_keyBindingMonitor", + "ibIsInDesignMode", + "_stateUpdated:", + "nts_UniqueId", + "_newLazyIconRefRepresentation:ofSize:", + "initWithContentRect:styleMask:backing:defer:drawer:", + "multiply:by:", + "_dayOfWeekForDate:", + "allowsExpandingMultipleDirectories", + "vertBlur2ROI:destRect:", + "_validateMultipleValue:forKeyPath:atIndex:error:", + NULL, + "firstUnlaidCharacterIndex", + "_remove:", + "autovalidates", + "_redoLayout:", + "_setEventDelegate:", + "allowsDragging", + "file", + "_interviewPadding", + NULL, + "contentDidChangeAtIndexes:", + "invalidateParagraphStyles", + "_initWithRTFSelector:argument:documentAttributes:", + "initWithPosition:objectSpecifier:", + "registerModelKeyPath:", + "copyPublicRecordsForClass:withDatabaseImpls:inAddressBook:", + "_reCalcTextButton", + "raise", + "_userDeselectColumn:", + "appendParameterDeclarationsToAETEData:", + "_updateTextSize", + NULL, + NULL, + "_getPartStruct:numberOfParts:withInnerBounds:", + "_opacityAtPoint:inBitmapImageRep:", + "isFBOSupported", + "discardThumbnail", + "action:", + "_setSortDescriptorsNoCopy:", + NULL, + "_isSettingSubmenuForOldMenu:", + "_certPanelSheetDidEnd:returnCode:contextInfo:", + "_setCurrentAttachmentRect:index:", + "selectionFromTopToPoint:", + "_isConnectionKeyInUse:", + "clearsDepthBuffer", + "drawsCellBackground", + "_captureVisibleIntoLiveResizeCache", + "_setKeyCellAtRow:column:", + "frameForPlusButton:atIndex:", + "askDiscardChangesWithFile:", + "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:", + "_setExplicitlyCannotAdd:insert:remove:", + "setKnobProportion:", + NULL, + "_pluginClassWithObject:", + "showInspector:", + "timeLimit", + "_applyStylesheet:arguments:error:", + "_clickedInExpansionTriangle:", + "DSQueryString", + "resumeInformation", + "endDisplay", + "_similarFontWithName:", + "PDFViewPerformFind:", + "isFlashMovie", + "removeObjectForKey:inDomain:", + "_openDocumentFileAt:display:", + "_fallbackLoadPreview:", + "_activateDocumentPreview:", + "figFormatDescription", + "clipViewBoundsChanged:", + NULL, + "_NSNibIDForNibPath:", + "_filterRestrictsInsertion", + "autoAdaptDuration", + "largerButton", + "_convertRectToSuperview:", + "lineFragmentRectForGlyphAtIndex:effectiveRange:", + "getAttribute:index:", + "pageColor", + "_coreUICircularValue:", + "standardizedURLPath", + "import", + "drawHelpIcon:inContext:", + "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:", + "associate:with:", + NULL, + "handleDelegateClickedFauxDisabledNode:", + "_checkSpellingForRange:excludingRange:", + NULL, + "_addCursorRect:cursor:forView:", + "loadArchive:", + NULL, + "currentTaskDictionary", + "iconSize", + "_popNamespaces", + "handleResponseSubnode:", + "openDescendantCount", + "_color", + "_newLineForLibXML2ElementNode:", + "quartzFilterManager:didRemoveFilter:", + "columnsAutosaveName", + "setDraggable:", + "_savePanelAccessoryViewForWritableTypes:defaultType:", + "addButtonWithTitle:", + "setAutofillColor:", + "preferredLanguages", + "_cfurlcredential", + NULL, + "control:textView:completions:forPartialWordRange:indexOfSelectedItem:", + "expire", + "__hierarchyControlAction:", + "isOneShot", + NULL, + "_setNeedsDisplayForTargetRow:column:operation:", + "CAJS_timerWithTimeInterval:function:repeats:", + "customRect:", + "listDictionary", + "_hasRowHeaderColumn", + "clearStopAnimation", + "setGroupIdentifier:", + "useTableViewLook", + "_setComposition:context:", + "_saveRequestForStore:originalRequest:andOptimisticLocking:", + "dateRangeExtendedWithDate:", + "setDeferred:", + "liveImportCell:", + "_gray136Color", + "_selectRange::::", + "accessibilityIsSearchButtonAttributeSettable", + "_guaranteeStorageInDictionary:addBinding:", + "encodeBool:forKey:", + "stores", + "_baselineOffsetForUILayout", + "_defaultLineHeightForUILayout", + "nts_ValueForProperty:row:", + "_addContent", + "creationDateYear", + "initWithCharacters:length:", + "fetchPredicate", + "nodeWithPath:", + "databaseUUID", + "infos", + "_isContextualMenu", + "selectedDirectories", + "_drawRowHeaderSeparatorAsSurface", + "criteriaSlices", + NULL, + NULL, + "panelShouldHaveSingleIndexPageButton", + "recordToOutputFileURL:bufferDestination:", + "_generateSQLForVariableExpression:inContext:", + "_presentAlertPanelForError:responder:responderCandidate:", + "convertToDictionary", + "shadowColor", + "appendCharacters:length:", + "computeMargin", + "lineWidthForType:", + "unregisterCallbackObserver:", + "initWithPatch:dataSource:", + NULL, + "positionOfGlyph:struckOverRect:metricsExist:", + "_refreshLinkedDevicesAttributeFromCallback", + "updateSearchHilight", + "createFTPReadStream", + "setMenuItem:", + "drawGroupsOverlays", + "cardsFromGroup", + "_addUpdatesToDatabaseOp:forManyToMany:", + "_moveInDirection:", + "dividerStyle", + "_layoutRightHandButtons", + "_oldStyleTypeNameForIdentifier:", + "childWithKey:", + "initWithKeyOptions:valueOptions:capacity:", + "windowEffectDidTerminate:", + "labelFontOfSize:", + "defaultClassPath", + NULL, + "hasTag:", + "currentFrameAsNSImage", + "dataWithBytesNoCopy:length:", + "datePickerStyle", + "indexSheetStatus", + "_setImpl:", + "copyDataToPasteboard:", + "sendEvent:", + "_allocateDatePickerCellExtraIvars", + "setManagedObjectClassName:", + "tintedImageWithColor:operation:", + "parentWillDie:", + "scrollerWidth", + "saveFrameUsingName:", + "_dirtyRect", + "configureForCanChooseFiles:", + "_startBatchWindowAccumulation:", + "setSimpleQueryString:withAdvancedQueryString:", + "storeNSBitmapImageRep:glID:offset:", + "_web_defaultsDidChange", + "focusImageAtIndex:", + "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:", + "_responder", + NULL, + "viewWillMoveToSuperview:", + "_supportsMinAndMax", + "nts_FindMemberUID:inArray:", + "broadcast", + "_getTiffImage:ownedBy:", + "setNoDepthBuffer:", + "initWithOffset:", + "_blockClassForBlock:", + "_hasFocusRingInView:", + "configureForShowsPreviews:", + "_changeAllDrawersMainState", + NULL, + "associateSourceInstance:withDestinationInstance:forEntityMapping:", + "originalBodyStream", + "setCanGoNext:", + "supportedPixelBufferFormatsForManager:", + "setMipmapVMUsagePolicy:", + "slideshowSwitchToFullScreen:", + "hasChildNodes", + NULL, + NULL, + "indexOfSelectedItem", + "_setLiveResize:", + "_installAutoreleasePoolsOnCurrentThreadIfNecessary", + "menu:willHighlightItem:", + "deletePerson:", + NULL, + "_updateUserKEsAfterActivation:", + "initWithColorSpace:components:count:", + "addIndexes:", + "removeMipmapDataInfoWithUID:", + "dataRepresentation", + "_redisplay", + "fadeHUDIn", + "bindIntoRAMScheduleStep", + "_currentBorderIsTable", + NULL, + "cacheRetainCount", + "scheduleTrickleSyncRetry:", + "loadTidy", + "_turnOnVerticalScroller", + "mode", + "_transparency", + "_setFrame:updateBorderViewSize:", + "_preloadingEnded", + "dateYear", + "renderContext", + "initWithNodes:count:", + "invalidateAllCachedPropertyValues", + "subcacheMatchingMd5List:forIndices:count:", + "alwaysPresentsApplicationModalAlertsWithBinding:", + "updateInvalidatedFont:forObject:", + "imageCropView:keyDown:", + "outputFileURL", + "_addIndexedEntity:", + NULL, + NULL, + "setLegendVisible:", + "minimalParseCert:", + "initWithPreviousContext:", + "integrateReferenceInstance:", + NULL, + "_vCardKeyForGenericLabel:", + NULL, + "_isDocumentAddedToIPhoto:", + "usageInMovie", + "compare:options:range:", + "replaceSelectedPagesWithPageRange:drawNow:", + "faultHandler", + "entryViewForEntry:", + "allocForSQLEntity:", + "nts_ImportTipCards", + NULL, + "isDirectoryNode:", + "addErrorMessage:", + "_lookForDisplayBundles", + "drawCell:", + "titleWidth:", + "fileHandleWithStandardError", + NULL, + "_finishWritingFileAtPath:byTakingContentsFromFileAtPath:addingAttributes:usingTemporaryDirectoryAtPath:keepingBackupFile:error:", + "descriptorWithBoolean:", + "autoenablesItems", + "setSizeNeedsUpdate:", + "writeDateValue", + "CI_initWithRect:", + "_consistencyCheck:", + NULL, + "_hasTableWithName:", + "__finalize_QCPickerSelectionLayer", + "__oldnf_replaceFirstAppearanceOfString:withString:", + "removeAttribute:", + "ABIsAddressBook", + "setUpDataSources", + "maximumAvailableMemoryOfType:rendererID:", + "createPixelBufferFromProvider:withFormat:transformation:bounds:colorSpace:options:", + "setValue:type:forDimension:", + "filesystemItemRemoveOperation:shouldProceedAfterError:removingItemAtPath:", + "setRecursive:", + "setEndSubelementIdentifier:", + "_readFileListMode", + "selectedColorSpace", + "_bind:toController:withKeyPath:valueTransformerName:options:existingNibConnectors:connectorsToRemove:connectorsToAdd:", + "stretchImageHorizontalROI:forRect:userInfo:", + "dismissPopUp", + "_selectDownstream:", + "accessibilityPostNotification:withNotificationElement:", + "fileProperty", + "_selectCorrectScopeButton", + "horizontalLineScroll", + "_editParentGraph:", + "hackQueryForManyToManyPrefetching:andSourceObjectIDs:", + "drawBorderImage:middleImage:borderImage:inRect:withOrientation:flipped:", + "imageManagerDefaultOptions", + "userInfoForKey:", + "inputTopLine", + NULL, + NULL, + NULL, + "initWithPredicateOperator:leftKeyPath:rightKeyPath:", + "initPointersForResolutionData:", + "clearRecents:", + "_setQNamesAreResolved:", + "configureForInactiveState", + "mainOperation", + "_viewHandlesEvents", + "spellServer:didForgetWord:inLanguage:", + "people", + "redisplay", + "setAnimateCompositions:", + "serializeInt:atIndex:", + "_reestablishInternalCFCachedURLResponse:", + "_leftBezelToTitleOrImageHorizontalOffset", + "scaleUnitSquareToSize:", + "_setWindowNeedsDisplayInViewsDrawableRect", + "_replySequenceNumber:ok:", + "initWithColorSyncInfo:", + NULL, + "_relatedNodes", + NULL, + "selectDown", + "_calcMarginSize:operation:", + "fadeFromNormalToBlack:wait:", + "_baseString", + "modifyFontTrait:", + "setUpTrackingRects", + "_setDirection:", + "arrayByApplyingSelector:", + "setSpeakingSpeechFeedbackServices:", + NULL, + "_drawOptimizedRectFills", + "deserializeInts:count:atIndex:", + "setCity:", + "addNormalAppearanceWithStateToDictionaryRef:", + "_zeroScreenHeight", + "addOptionsToDictionaryRef:", + "_setDropHighilightColorIfSelected:", + "_getAttributesInNode:fromBuffer:listReference:count:includeValues:allowBinary:", + "newColor:", + "computeRowsCount", + "adjustAndDisplay:", + "_sizeToFitForUserColumnResize", + "_rangeOfPrefixFittingWidth:withAttributes:", + "initWithRanges:count:", + "windowDidChangeNumber:", + "cancelQueries:", + "uniqueProxyPortKeyFromName:", + "typeCodeValue", + "readFromFile:ofType:", + "countByEnumeratingWithState:objects:count:", + "_initializeICUStructuresWithLocale:andOptions:", + NULL, + "textureFlipped", + "setDirectoriesSubrowDelegate:", + NULL, + "_storeTypeForStore:", + "_hasSourceListBackground", + "_initWithSourceEntityDescription:destinationEntityDescription:", + "_getITypeFor:", + "_requestEditableState:", + "accessibilityShouldUseUniqueId", + "deleteForward:", + "_registerUndoForModifiedObjects:", + "cellPrototype", + "qcComposition", + "indexOfMember:inSortedMembers:", + "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:isTable:", + "_runGarbageCollection", + "accessibilitySelectedAttribute", + "newCreatePrimaryKeyTableStatement", + "_members", + NULL, + "setAutoAdaptDuration:", + "_canCreateCollapsedSpecifierFromAbsolutePositionRecord:", + "setupTooltipViewForPoint:inNode:bounds:tooltipBounds:", + "_handleKeyEquivalent:", + "initOffScreenWithPixelFormat:size:colorSpace:patch:", + "sharedSyncManager", + "standaloneMonthSymbols", + "removeBinding:fromObject:", + "isMainWindow", + "setSubitems:", + "convertPoint:fromPage:", + "customAttributes", + NULL, + "writePaneGeometryToDefaults", + "isMemberOfClass:", + "maximumRecentDocumentCount", + "textObjectToSearchIn", + "displayedProperty", + "acquireLock:lockMode:", + "operationHasEnded:", + "initWithCarbonWindowRef:takingOwnership:disableOrdering:forNSViewHosting:", + "page", + "initWithClassDescription:", + "_oldFontSetWithName:", + "hudFadeInTimerElapsed:", + "cracklibDictionarylocation", + "_setTimelineColor:", + "observedNodesSet", + "hideToolbar:", + "_initWithDestinationName:valueExpression:", + "_dataEnciphermentUsage", + "indexPathFromSelectionInBrowser:upToColumn:", + "boundsForSelectedPages", + "initWithDefaults:initialValues:", + "setSelectionFromGUIDs:", + "addControlPointAtTime:withValue:", + "_undoableSetEffectsWithDisplay:", + "_resizeCursorForTableColumn:", + "colorUsingColorSpaceName:device:", + "_keyPathIfAffectedByValueForKey:exactMatch:", + "recalcOutsideShadow:forResolutionData:", + "_delegateDoesNotCreateRowsInMatrix", + "endDisplayAndComplete:", + "scrollPoint:fromView:", + "cellIndexAtPosition:", + "_resizedTargetImageRect:", + "_updateWindowFrame:", + "_controlColor", + "_setContextMenuTarget:", + "stopLiveCapture", + "_saveFrameUsingName:domain:", + "_titleToBezelOrIndicatorPadding", + "_drawMatrix", + "setScrollsDynamically:", + NULL, + "_prepareSynchronizationOfEditedFieldForColumnWidthChange", + "_addColumnWithIdentifier:title:dataCell:sortable:", + "_availableFontFamiliesForCollectionName:", + "removeObjectsFromIndices:numIndices:", + "_setAcceptsFirstResponder:", + "_validateValue:forKeyPath:ofObjectAtIndexPath:error:", + "_currentPoint", + "__oldnf_decimalIsNotANumber:", + "undoManagerForOperation:", + "timeSlider:didClickOnButtonWithTag:", + "allocWithEntity:", + "clipRect:", + "representedObject", + NULL, + "_pointFromColor:", + "exportCurrentItemToiPhoto", + "_buildSupportUnitsForVideoInputConnection:error:", + "isCDATA", + "needsAction", + "animationManager", + "writeBackgroundColor", + "depthLimit", + "registerPixelFormat:", + NULL, + "_setUndoManager:", + "_deleteNodeFromEntityCache:", + "keyframeStartTime:", + "fileModificationDate", + "setSizeMode:", + "initWithContainerClassDescription:containerSpecifier:key:name:", + "_updateKnownNotVisibleAppleMenu:", + "rulerView:handleMouseDown:", + "buildAlertStyle:title:message:first:second:third:oldStyle:args:", + "setSubrowSelection:", + "reply", + "rootDocument", + "initWithTransform:", + NULL, + "isOrScoped", + "_allocAuxiliary:", + "movie:shouldChangeController:", + NULL, + "_resolveTypeAlias:", + "colorWithDeviceHue:saturation:brightness:alpha:", + "initWithImageProvider:size::format:colorSpace:options:", + "_endCustomizationPalette:", + "metadataForPersistentStoreOfType:URL:error:", + "_disableChangeSync", + "drawAtPoint:", + "setButton:enabled:", + "windowFrameOutlineColor", + "_itemMenuInPaletteForEvent:", + "objectDidTriggerDoubleClickAction:", + "_updateDragInsertionIndicatorWith:", + "setJavaScriptCanOpenWindowsAutomatically:", + "_toolbarView", + "cacheFaultingStatement:", + "_writeDocumentProperty:value:toString:", + "registerForHardwareNotification", + "_collapseRootEntry:clearExpandState:", + "_invalidateGroupRowsIfNeeded", + "cellMargin", + "startImportVisibleCells", + "pointerAtIndex:", + "subsampling", + "targetHref", + "object", + NULL, + NULL, + NULL, + "cellFont", + "_web_parseRFC822HeaderFields", + "_getOriginalNSImageWithOriginalData", + "dispatchInstructions", + "_needsToRemoveFieldEditor", + NULL, + "doBilateralPass:points:weights:sums:slope:", + "initWithDir:", + "updateUI", + "_emailProtectionUsage", + "_calculateSelectedSegmentForPoint:", + NULL, + "_getPassword:", + "pushActiveListAnalyzer:", + "_textFont", + "_markerForMarkerFormat:itemNumber:isNumbered:substitutionStart:end:specifierStart:end:", + "setUseCleanAperture:", + "canExportToApplication:", + "initWithAssignmentVariable:expression:", + "setDrawsGrid:", + "setAppliesImmediately:", + "setInsertedObjects:", + "setDataCallback:", + NULL, + "_setAdditionalThingsFromEvent:", + "fullTitle", + "fontDescriptorByAddingAttributes:", + NULL, + "_readFromFileWrapper:ofType:", + "netServiceBrowser:didRemoveService:moreComing:", + "addLast:", + "frameDidChange:", + "_hiddenStateWithMode:", + "changeFieldLabel:", + "sourcePosition", + "setTopMargin:", + "splitterFrame", + NULL, + "dataSourceIndex", + "selectedColor", + "removeInfoForKey:", + "setLineFragmentPadding:", + "addToWindow:flags:", + "setAnimationDuration:", + "_separatorRectForInactiveWindow", + "defaultPortNameServer", + "_removePrivateAttributes", + "defaultAnimationForKey:", + NULL, + "plugInClassIsValid:", + "initWithCGLayer:options:", + "_restoreLevelAfterRunningModal", + "eventQueue", + "databaseWasReset:", + "_writeSelectionToState:fromPoint:", + NULL, + "managedObjectContext", + "removeFileAtURL:andReturnResultCode:", + "selectedDirectoryResultsSubrows", + "globalID", + "resizeByMovingKnob:toPoint:", + "filename", + "_endWiringNibConnections", + "_resolvedDecompressionOptionsForInputConnection:alsoRequiresDeviceNative:", + "_syncScrollerSizeOfColumn:", + "reloadMembers", + "initWithLimit:inScope:", + "intersectWith:", + "applyInContext:", + "__setTimeBase:", + "lock", + "invalidateCacheSinceIndex:", + "_determineIsSameTargetForDragInfo:", + "attachPopUpWithFrame:inView:", + "descendantNodeAtIndexPath:", + "getDrawingTransformForBox:", + "setWhiteBackground:", + "_loadFontFiles", + "raise:toPower:", + "_bitmapImageRepFromArbitraryImageRep:pixelsWide:pixelsHigh:", + "_setDNSName:", + "_windowTitlebarXResizeBorderThickness", + "pageNumber", + "updateTrackingAreas", + "originalPort", + "initWithDecimal:", + "setBackgroundColor:", + "expectedContentLength", + "_bottomCornerSize", + "_setInt:ifNoAttributeForKey:", + "tokenFieldCell:shouldUseDrawingAttributes:forRepresentedObject:", + "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:", + "_validateError:forPresentationMethod:", + "_recentDocumentRecordsKeyForMenuTag:", + "shouldBeginDrag:", + "addRemoveOperationWithIndex:", + "outlookWebAccessServer", + "_buttonsRect", + "setZoom:", + "addItemWithTitle:andIdentifier:", + "didPostNotificationForNodeEventKind:notification:", + "setCriteria:andDisplayValues:forRowAtIndex:", + "_lockButtonOrigin", + "IKIPImageWithMaxSize:", + "_thumbnailWithSize:antialiased:qualityRequested:qualityProduced:", + "updateFormData", + "presentableNameForName:", + NULL, + "_cgsEventTime", + "_updateButtonsWithReadOnly:", + "MIMEType", + "grabFocusIfNeeded", + "_sortedSubentities", + "accessibilityMainAttribute", + "expressionWithFormat:arguments:", + "isInPriorityList", + "lineFragmentRectForProposedRect:remainingRect:", + "pointSize", + "_addPeople:usingAddressBook:", + "isWordInUserDictionaries:caseSensitive:", + "selectionIndexPaths", + "applicationShouldOpenUntitledFile:", + "_rowCacheForIndex:", + "invalidXMLCharacterSet", + "setRoundedEdges:", + NULL, + "_saveCollections", + "noteDirectoriesSelectionChanged", + "_uniqueNameForNewSubdocument:", + "setOnOpenGLContext:unit:", + "_undoUpdates:", + "_recursiveGenerateFormattingDictionaryPlistForItem:rowType:intoArray:withPriorValues:hasSiblings:", + "addElement:", + "inverseToOne", + "_convertRange:toPosition:", + "takeColorSpaceFrom:", + "_configureCell:forItemAtIndex:", + "setRunLoopModes:", + "setClassName:", + "_useSquareToolbarSelectionHighlight", + NULL, + "addBindVariable:", + "_forceSetLastEditedStringValue:", + NULL, + "_setKeyAgreementUsage:", + "paragraphCharacterRange", + "sendBeforeTime:streamData:components:from:msgid:", + "externalName", + "updateDisplayedViewWithTransition:", + NULL, + "scanString:intoString:", + NULL, + "_totalTabsLength:overlap:", + NULL, + "maxFormattedDisplayLabelWidth", + "setSupermenu:", + "handleGoIntoSelectedDirectory", + "setIndices:", + "computeInterpolatedResolution:data:", + "formatWidth", + "iconForFiles:", + "URL:resourceDataDidBecomeAvailable:", + "saveState:", + "drawColor:", + NULL, + "memberOfInputExtent:", + "privateSliderDidChanged:", + "_image", + "_propertyDescriptionsOfClass:fromImplDeclarations:presoDeclarations:suiteName:className:", + "enterFullscreen:", + "_enableChangeSync", + "_setModalInCache:forWindow:", + "systemCharacterProperties", + "_rowHeaderColumn", + "_setLayerTreeRenderer:", + "_infoSession", + "_imageNamed:", + "IKAccelerationCoefiscient", + "stringByAppendingPathExtension:", + "credentialWithKeychainItem:", + "initWithValue:label:property:addressBook:", + "changeFont:", + NULL, + "_fillToken:withString:position:", + "tokenFieldCell:completionsForSubstring:indexOfToken:indexOfSelectedItem:", + "addGroupView", + "sharedTracer", + "matchingFontDescriptorWithMandatoryKeys:", + "_sendCarbonNotificationFor:tags:withValuePtrs:andSizes:", + "_updateDetailLevelWidths", + "deviceSystem", + "eMapResultForMaterial:", + "displayedURL", + "preferencesNibName", + "filterGeneratorWithContentsOfURL:", + "_rulerOrigin", + "readTimeOut", + "ABBogus:", + "bitmapImageRepForCachingDisplayInRect:", + "_updateLayerMasksToBoundsFromView", + "screenRectForResource", + "canAddField:", + "_endScrolling", + "convertImageRectToViewRect:", + "initWithCharacterIdentifier:collection:baseString:", + "_installRulerAccViewForParagraphStyle:ruler:enabled:", + "nts_ReopenDatabaseForAddressBook:", + "_checkDisplayDelegate:", + "_setShadowParameters", + "_setKeyFrameEditor:", + "directoryListQuery", + "attachment", + "_enable", + "setIsUp:", + "_currentSuiteName", + "qualityChanged:", + "setPreviousText:", + "initWithImage:hotSpot:", + "_resetImage", + "sendBeforeDate:msgid:components:from:reserved:", + "setSelectedRanges:affinity:stillSelecting:", + "contentRectForBounds:", + "_accessibilityUIElementPathForChild:", + "compositionRenderer", + "trackingArea", + "getCString:maxLength:encoding:", + "lightPaperBackgroundUsingTexture:", + "_NSNavFilePropertyCompare:", + "hyphenGlyphForLanguage:", + "_fillGrayRect:with:", + "_removeOrRename:", + "_validateForSave:", + "transformFromRect:windowWidth:windowHeight:", + "_doUpdate:", + "magentaComponent", + "_raiseIfInvalidURL:", + "setDocument:", + "boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:", + NULL, + "_currentChildOperation", + "setSelectedItemsReordering:", + "removeObservedKey:", + "__ivar_getTrackingCell", + "initWithMutableData:forDebugging:languageEncoding:nameEncoding:textProc:errorProc:", + "_postQueryStartedNotification", + "_editClickedCell:", + NULL, + "numberOfVisibleItems", + "levelsOfDetail", + "toolbarItemClicked:", + "pointingDeviceID", + "ISS__ay_performSelector:withObject:withObject:inThread:", + "showPools", + "issueChangePropertiesCommand", + "_newLineForElement:", + "_fetchConfigsWithURL:", + "_resetErrorInfo", + "_flushCurrentDocument", + "setPanTiltSpeed:", + "isMainThread", + "info", + "_parseHalf:intoArray:isValue:errorDescription:", + "noteMembersListChanged", + "startingColumn", + "setLastColumn:", + "fontDescriptorWithFace:", + "note", + "_imagesHaveAlpha", + "cyanComponent", + "_setSingleValue:forKeyPath:", + "isListChoice", + "updateCurGlyphOffset", + "deserializePList:", + "isGreaterThanOrEqualTo:", + "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:", + "setIsContainer:", + "supportedRenderFormatsForContext:", + "_forKey:getType:andSuite:", + "sendAppleEventSetup:", + "_addOption:", + "_ensureSubviewNextKeyViewsAreSubviews", + "drawOverlayRect:", + "_loadFromDOMRange", + "setAlwaysPresentsApplicationModalAlerts:", + "nts_Save", + "_nameWithRequiredExtensionCheck:", + "uniqueMembersInSelectedGroups", + "imageScaling", + "_createLayer", + "draggingPasteboard", + "scrollSelectionToView", + "searchElementForConjunction:children:", + "defaultDepthLimit", + "_windowTitlebarYResizeBorderThickness", + "_abCompareWithinIntervalAroundTodayYearless:", + "_initWithObservances:count:", + "_windowBorderGradientFromGrayValue:toGrayValue:colorSpace:", + "decomposedStringWithCanonicalMapping", + "removeObjectsAtArrangedObjectIndexes:", + "setLongitude:latitude:", + "_startServer", + NULL, + "reservedSpaceLength", + "_focusRingVisibleRect", + "_doStopDrawer", + "getLineFragmentInsertionPointArraysForCharacterAtIndex:inDisplayOrder:positions:characterIndexes:count:alternatePositions:characterIndexes:count:", + "_findInCacheMapWithRadius:strokeColor:fillColor:mode:lineWidth:", + "childNodes", + "noteGroupsListChanged", + "standardWindowButton:", + "setScriptErrorNumber:", + "updateComponentState", + "_updateRulerlineForRuler:oldPosition:newPosition:vertical:", + "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:", + "exit", + "_wasReshapingEnabled", + "backgroundComposition", + "unsuppressAllNotifications", + "setVCardField:isPrivate:", + "addIMValueTo:", + "_disable", + "entityNamed:", + "selectedTag", + "isItemShownInPopupIfSoleEntry:", + "bestPixelFormatWithCompatibility:forProvider:usingColorSpace:", + "_setNeedsDisplayInRect:", + "setAttributes:Values:ValueSizes:Count:", + NULL, + "suiteDescriptionFromPropertyListDeclaration:bundle:", + "pathsForResourcesOfType:inDirectory:forLocalization:", + "registerLayerWithView:", + "_ikMainThreadInvoke", + "rootLayer", + "_resizeSelectedTabViewItem", + "_targetAndArgumentsAcceptableForMode:", + "drawFragmentationInRect:fromPosition:andLength:", + NULL, + "startPrefetchThumbnails", + "_isEventInContentView:", + "elementAt:", + "masterTemplateHasChanged:", + "performFindPanelAction:forClient:", + "_initWithCGEvent:eventRef:", + "_resizeDeltaFromPoint:toEvent:", + "nts_PopulateWithDictionary:includeCoreProperties:addressBook:", + "returnDisconnectedBindingsOfObject:", + "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:", + "setValueWraps:", + "initWithNodeClass:", + "setDeadKeyProcessingEnabled:", + "URLWithString:relativeToURL:", + "getMaximumAscender:minimumDescender:", + "_lastKeyView", + "_removeProperty:", + "setIsRuleGrouping:", + "enforceParameter:interpolatedValue:", + NULL, + "_dynamicToolTipManagerClass", + "portClassFromParameterInfo:", + "setSyncState:keychain:", + "installGRLPerformCallbacks", + "isReferenceToReferenceFile", + "addItemWithRecentPicture:", + NULL, + "bindTextureToContext:textureUnit:applyMatrix:savedState:", + "setCalculationMode:", + "invalidateCachedDrawingImage", + "_suspendLoading", + "_startLiveResizeCacheOK:", + "wrapperWithValue:", + "_removeObserver:forProperty:", + "subpaths", + "setRelationshipKeyPathsForPrefetching:", + "initWithView:className:", + "_updateURLsToCache", + "_coreUIDrawTab:withState:inRect:", + "familyName", + "menuFontOfSize:", + "_fixHeaderAndCornerViews", + "allBundles:", + "updateGroups", + "relatedIDsForKey:", + NULL, + "insertContainerBreak:", + "_modelAndProxyKeys", + "gotoPreviousSelectionPoint:", + "_expandRep:expandImageContentNow:", + "expressionForVariable:", + "removeObjectForKey:", + "setNestingMode:", + NULL, + "importVisibleCellsProgress", + "_parseCharacterAttributes", + NULL, + "inputBottomLineParams", + "_finalizeStatement", + "layerAtLocation:", + "setURLs:currentIndex:preservingDisplayState:", + "image", + "hasBackingStore", + "_suggestGuessesForWord:inLanguage:", + "_menuFormRepresentationChanged", + "balance", + "graphViewClass", + "windowWillReturnUndoManager:", + "abWords", + "_keyListForKeyNode:", + "_blockRowRangeForGlyphRange:", + "textBlocks", + "principalClass", + "nonSelectedColor", + "_invalidateLayoutForExtendedCharacterRange:isSoft:", + "maxValueForControlType:keyFrame:", + NULL, + NULL, + "_setCtrlAltForHelpDesired:", + "searchElement", + "orderFrontRegardless", + "_updateForEditedMovie:", + "_surfaceNeedsUpdate:", + "becomeMainWindow", + "indexOfMipmapItem:", + "newGroup:", + "pixelFormatRGBA16", + "connectionWithRegisteredName:host:usingNameServer:", + "_createCGImage:format:colorSpace:matrix:bounds:", + "calculateRowsAndColumnsForBlankSize:frameSize:", + "_validSize:force:", + NULL, + "documentPreviewViewForPreview:forView:forcedPreviewType:", + "preprocessorColor", + "_attributesAreEqualToAttributesInAttributedString:", + "processKeyword:option:keyTran:arg:argTran:quotedArg:", + "_allowedTypesFromSavePanelType", + "keyboardFocusIndicatorColor", + "_dataSource", + "closeWindowForPerson:", + "_usingToolbarShowHideWeightingOptimization", + "setTypingAttributes:", + "initWithLayer:", + "runSlideshowWithDataSource:inMode:options:", + "addMember:", + "conjoinedElementForProperties:value:withComparison:", + "stringColor", + "removeSubgroup:", + "_crackPoint:", + "removeFromContext:", + "_printSession", + "croppedImage", + "_pkinitServerAuthUsage", + "searchScopeDisplayName", + "_setCertAuthorityCertSigning:", + "setCaption:", + "pathForImageResource:", + "_hasDarkShadow", + "selectionForRect:", + "setNeedsResyncWithDefaultVoice:", + "truncationMode", + "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", + "_setSinglePage:", + NULL, + "_bulletCharacter", + "conversationIdentifier", + "itemsForSearchString:withPartialResults:", + NULL, + "primaryKeys", + "sharedImageEditView", + "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:", + "_enlargeVertically:", + "_keyboardUIActionForEvent:", + NULL, + "sortSubviewsUsingFunction:context:", + "removeTimer:forMode:", + "isFloatingPanel", + "contentSizeOfGrid:", + "_sendQueuedAction", + "setInformativeText:", + "suffix", + "_commonInitState", + "setDragHighlight:", + "_unregisterWindowNotifications", + "accessibilityDecodeOverriddenAttributes:", + "recentMenu", + NULL, + "alignCenter:", + "URLFromPasteboard:", + "setScope:", + "commit", + NULL, + "mediaDataReferenceEnumerator", + "_handleKeyUp:inNode:", + "cacheDisplayInRect:toBitmapImageRep:", + "_defaultTableHeaderReverseSortImage", + NULL, + "memberOfInputBottomLineParams:", + "updateTableColumnDataCell:forDisplayAtIndex:", + "setDisplaysWhenScreenProfileChanges:", + NULL, + "CI_affineTransform", + "positionOfGlyph:forLongCharacter:struckOverRect:", + "initWithStream:", + "clearFilterCache", + NULL, + "predicateName", + "initWithRegistryClass:andObjectClass:", + "_provideAllPromisedData:", + "_stopCacheTimeOutTimerIfNeeded", + "fileNameExtensionWasHiddenInLastRunSavePanel", + "_gradientImage", + "setDocumentView:", + "_selectableToolbarViews", + "initWithUIController:group:", + "selectNext:", + "containsTimer:forMode:", + "netServiceBrowser:didNotSearch:", + "copyIcon", + "languageChoices", + "initWithController:dataSource:", + "_singleValueForKey:", + "slideshowPlayStopped:", + "_doBidiProcessing", + "createCGImage:format:", + "_grestore", + "convertPointToBase:", + "serverFieldValue", + "activateIgnoringOtherApps:", + NULL, + "updateGrids", + "endDocument", + "_addKeyPathsFromPredicate:toSet:", + "_certificates", + "instantiateNibWithExternalNameTable:", + "glyphRangeForBoundingRect:inTextContainer:", + "glyphIndexForCharacterAtIndex:", + "_adjustSubviewsIfNecessary", + "nts_shouldUpdateDateRelatedSmartGroups", + "initWithObservedNode:", + "ISS__ay_performSelector:inThread:beforeDate:", + "_captureVisibleIntoImageCache", + "getNewIDForObject:", + "supportedPreviewTypes", + "performClick:", + "download:didReceiveAuthenticationChallenge:", + "containerSize", + "defaultsDictionary", + "_displaySomeWindowsIfNeeded:", + NULL, + "setAllowsDragging:", + "_registerToolbarInstance:", + "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:", + NULL, + "evaluateWithObject:", + "_recursiveOrderOutSurfacesForHiddenViews", + "_applyAttributes:", + "_lightGrayRGBColor", + "maxTimeForControlType:keyFrame:inTimeLine:", + "isMakeHistoryEnabled", + "committedValuesForKeys:", + "setUsesArrowStyle:", + "_ignoringScrolling", + "valueWithPointer:", + "setDisplaysMarkupAnnotations:", + "isEditable", + "_createTextureBufferFromImageBuffer:target:bounds:needsClipping:flippedState:options:", + "_proceedGivenDBInfo:", + "extractSearchableAttributesFromResource:", + NULL, + "canCycle", + "drawAtPoint:inContext:", + "colorWithCalibratedHue:saturation:brightness:alpha:", + "_validateStrikethrough:", + "setReturnValue:", + "_setTopLevelObjects:", + "setShadowOpacity:", + "_setPreviousToolbarSizeAndDisplayMode:", + "_freeRef:", + "addFileWrapper:", + "_shortNameFor:", + "stringByReplacingOccurrencesOfString:withString:options:range:", + "_choosePart:", + "selector", + "persistenceStore", + "imageBrowser:getFreeFormLayoutAtIndex:position:scaleFactor:", + "writeToFile:ofType:", + "valueForKey:", + "_fullCacheUpdate", + "setQueuePriority:", + "_contextAuxiliary", + "activeSegment", + "saveConfigurationUsingName:", + "unsetOnOpenGLContext:", + "isSymbolicLink", + "supportedWindowDepths", + "configureForAllowsExpandingMultipleDirectories:", + "cancelPerformSelectorsWithTarget:", + "imageView", + "setModel:", + "_updateTooltip", + "aliasesByName", + "addStateGRL:", + "_resetDragMargins", + NULL, + "fulfillFault:withContext:", + NULL, + "_createLayerTreeRenderer", + "createAndCacheRowHeightSumsIfNecessary", + "setAllowsImageEditing:", + NULL, + "numberOfVisibleCols", + "editSelectedGroupWithUndo:", + "_makeAllCollectionsNonEditable", + "_initFlippableViewCacheLock", + "addActionToDictionaryRef:", + "_fileModificationDate", + "_cflastIndexOfObject:inRange:", + NULL, + "updateExtensions", + "attributesAtPath:traverseLink:", + "canSelectNext", + "_keyViewFollowingModalButtons", + "cgColor", + "applyAuthToRequest:", + "getThumbnail:", + "writeAlignedDataSize:", + "documentPreviewURL", + "getWhitePointVectorsR:g:b:", + "valueForKeyFrame:controlType:inTimeLine:", + "_disableEnablingKeyEquivalentForDefaultButtonCell", + "setPropertyMappings:", + "_cf2nsCookies:", + "_lockForReading", + NULL, + "_smallestEncodingInCFStringEncoding", + "objectWithUID:withResolution:withKey:", + "requestStreamForTransmission", + "accessibilitySelectedTextAttribute", + "isOneway", + "setOnMouseExited:", + NULL, + "_setMenuName:", + "_aquaScrollerVariantChanged:", + "trackingMode", + "_binderWithClass:withBinders:createAutoreleasedInstanceIfNotFound:", + "sendCancelToOwner", + "_calcScrollArrowHeight", + "startFreeTemporaryCache", + "_displayedView", + "setSeed:", + "_removeFromGroups:", + "isLinearX0:y0:x1:y1:x2:y2:", + "isDRMAuthorized", + "setDataCell:", + "sharedHeartBeat", + "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:", + "_coreUISize:", + "multiStatusRequestWithURL:method:responseClass:", + "_sizeHorizontallyToFit", + "_beginSrcDragItemWithEvent:", + "togglePageMembershipInSelectedPages:drawNow:", + "layoutRectForTextBlock:glyphRange:", + "postOperation", + NULL, + "_setSound:", + "setMenuItemIndex:", + "_underlineStyleForArgument:", + "_sharedDateFormatter", + "setBitmap:rowBytes:bounds:format:", + "_dataFromBase64String:", + "removePersistentStore:error:", + "_keySegment", + NULL, + "changedValues", + "versionString", + "keyAtIndex:", + "_addCurrentDirectoryToRecentPlaces", + NULL, + "_imageRepsWithContentsOfFile:expandImageContentNow:", + "imageBrowserSelectionDidChange:", + "targetForAction:", + "itemTitleAtIndex:", + "positivePrefix", + "selectionShouldChangeInTableView:", + "viewForName:", + "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:", + "_validateCarbonCatalogInfo", + "_stopObservingSelectionIfNecessary", + "rotationAngle", + "nextPK64", + "_calibratedColorOK", + "setResourcePool:", + "_rawKeyEquivalent", + "delete:", + "requestIsCacheEquivalent:toRequest:", + NULL, + "playerViewWithFrame:forRepresentationInstance:forCell:", + "previewRange", + "_allowAnimated_setFrameCenterRotation:", + "setShowsFullscreenButton:", + "insertItem:atIndex:", + "initWithGlyphIndex:characterRange:", + "setMaximumFrameRate:", + "_providerThread:", + "blueControlTintColor", + "usedSpace", + "validateVisibleColumns", + "setMinimumSignificantDigits:", + NULL, + "ISS_classicPortForScheme:", + "deserializeIntAtIndex:", + "_setFontPanel:", + "rowHeightForRow:", + "waitForDataInBackgroundAndNotifyForModes:", + "_contentToFrameMaxXWidth", + "_rulerline::last:", + "updateColorOptionsUI", + "_type", + "pdfView", + "setImage:imageProperties:", + "_blockRowRangeForCharRange:", + "keyBackPointer", + "currentDirectory", + "expired", + "_setResourceForkReferenceNumber:", + "_addToGroups:ordered:", + "initWithImage:options:", + "lockDirectoryPath", + "urlAddresses", + NULL, + "_resetDisableCounts", + "_keyEquivalentVirtualKeyCode", + "attributedCertificateName:showsIssuer:selected:prefix:", + "setRows:", + "_drawOverlayRectSet:", + "_goneMultiThreaded", + "theaterStatus", + "localizedNameForFilterName:", + "drawAtPoint:withAttributes:", + "_clearPressedButtons", + "setInkListFromArray:", + "pageDownAndModifySelection:", + "controlFromPoint:", + "addressBookDatabaseFile", + "initWithProperty:withPopup:", + "setUserSpaceScaleFactor:", + "_popURLToCacheWithRequestIndex:", + "getPath", + "animationForKeyPath:", + "_makeTable:inNode:", + "firstName", + "dateWithTimeIntervalSince1970:", + NULL, + "isDownloading", + "setCursorForAreaOfInterest:", + "instantiateNodeWithName:", + "_adjustMinContentSizeForMinFrameSize:", + "takeStoredValuesFromDictionary:", + "_willPowerOff", + "setShowsHelp:", + "abArrayCombinedWithArray:", + "IKIPFrame:constrainedToScreen:", + "setFrameCount:", + "indentationMarkerFollowsCell", + "menuForEventDelegate:", + "addFilterToRegistry:properties:", + "runLoopModesForAnimating", + "_focusRingCGColor", + "_iLifeMediaBrowserFrameworkInstalled", + "setAttributeType:", + "saveGraphicsState", + "__delete:context:", + "setDraggingSourceOperationMask:forLocal:", + "setFlavor:", + "setSelectionFromDroppedNode:selectionHelper:", + "_isSidebarCollapsed", + "baseWindowWillClose:", + "vendorPointerType", + "locationForSubmenu:", + "destroyContext", + "initWithFilter:connectionID:", + "parseContentsOfURL:", + "attachToAudioMixerNode:element:scope:isReadOnly:", + "setBoundsRotation:", + "_performDragForSlice:withEvent:", + NULL, + "initWithIndex:parent:", + "indexOfItemContainingDataSource:inArray:arrayIsIndexed:newIndexIs:uidToIndexCache:", + "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:", + "addAnnotationControl:", + "activateNextAnnotation:", + "resizeComponents", + "isEditingAtIndex:withObject:", + "startRunning", + "controlPointsCount", + "titleRect", + "writeToFile:error:", + "canInsert", + NULL, + "dockTile", + NULL, + "_isImageCache", + "_getInputRampParams", + "toggleRuler:", + "_outlineAction:", + "_forcesLeadingZeroes", + "currentDestination", + "pixelFormatRGBh", + "addFullScreenButton", + "setIsActive:", + "_setArrowsConfig:", + "parentCrayonView", + "_restoreValidation", + "waitWithTimeout:", + "fetchRequest", + "roughSizeEstimate", + "_getFSSpecForPath:", + "_topHandling", + "selectedSubrows", + NULL, + NULL, + NULL, + "_scriptingRealDescriptor", + "IKNSImageAdditionalPossibleExtensions", + "initWithGroup:person:properties:addressBook:", + "_addManyToManysToDatabaseOp:", + "newPrimaryKeyInitializeStatementForEntity:withInitialMaxPK:", + "_inlineSlideshowGoToNextItem:", + "registerPort:name:nameServerPortNumber:", + NULL, + NULL, + "indexCarbonMenu:resultGRLs:isRootMenu:systemHelpMenu:", + "decodeDownloadHeader:headerLength:modificationTime:filename:", + "readDataToEndOfFile", + "setSpeechChannelWithVoiceCreator:voiceID:", + "_stopAnimationWithWait:", + "animateCompositionsIfNeeded", + "compoundPredicateType", + "setPopup:", + "differenceParameter:new:old:into:", + NULL, + "isWellFormed", + NULL, + "setEnableTextHighlightDrawing:", + "_tryDrop:dropRow:dropOperation:", + "_initWithProperties:defaultSubcontainerAttributeKey:inverseRelationshipKeys:", + "fieldsIncludedAreCleared", + "_quotesForRange:useGermanApostrophes:useDutchApostrophes:", + "doPass:sums:", + "_scriptingShouldCheckObjectIndexes", + "ruleEditorSizeChangedForSearchController:", + "menuRepresentation", + "selectKeyViewFollowingView:", + "_count", + "rulerView:willSetClientView:", + "cellLabel", + "panel:willExpand:", + "setFormatString:", + "ejectButtonFrameForCellFrame:", + "_readVersion0:", + "performActionWithHighlightingForItemAtIndex:", + "removeListEnabled", + NULL, + "_maxRuleAreaRect", + "notificationPort", + "glyphGenerator", + "refreshDisplayedCard", + "_getFSRefForPath:", + NULL, + "_sheet:didEndWithResult:contextInfo:", + "_pathsForResourcesOfType:inDirectory:forRegion:", + NULL, + "setQueueLimit:", + "setEntityName:", + "_messageStringForType:", + "removePasswordView", + "updateChildNodesForKeyPath:", + "_adjustLineScroll", + "ab_smallestTimeIntervalAroundTodayYearLess", + "_isVisibleUsingCache:", + "_predicateRestrictingToSubentitiesForEntity:", + "sourceDimensions", + "_globalWindowNum", + "setDataLength:", + "_widthOfColumn:", + "_dictionaryForSavedConfiguration", + "_setFaultHandler:", + NULL, + "nts_ImportFromMetaKitDatabaseAtPath:andSave:", + NULL, + "setPlaysSelectionOnly:", + "patchIsInMacro:", + "descriptionWithCalendarFormat:locale:", + "_fileControlCallbackTimeout:", + NULL, + "propertyListFromInputValues", + "baseAddressForSkippedRows:skippedPixels:", + "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:", + "setAutosizesAndCenters:", + NULL, + "setMinimumFractionDigits:", + "setFields:", + "MD5", + "_removePersistentStore:", + "standardUserDefaults", + "loadCIImageWithName:", + "previewBounds", + "canMixDynamicAndStaticContent", + NULL, + "setHeaderLevel:", + "ISS__ay_postNotificationName:object:userInfo:inThread:", + NULL, + "abGlobalMailRecentAPIUnlockInFile:line:", + "screenRect", + "_indexOfItemWithPartialTitle:", + "systemFontSize", + "_containerRelativeFrameOfColumn:", + "protectionSpace", + "initWithSourcePath:andLocalDestination:", + "nts_imageNameForPerson", + "setShouldCloseWithWindow:", + "verticalAlignment", + "insertRow:", + "nodeActorForNode:", + "initWithDouble:", + "_setImageNumber:", + "setImportFactor:", + "hasControls", + "initWithSelector:", + "defaultRecentPictureWithImageWrapper:cropSize:", + "initWithFilter:options::", + "_handleHelpURL:", + "_initForURL:withContentsOfURL:ofType:error:", + "_windowDidHideToolbar", + "_deviceClosePath", + "_countByEnumeratingWithState:objects:count:forKeys:", + "_accessibilityPerformClickAction:", + "abGlobalAPIUnlockInFile:line:", + "hide:", + "movieUnfilteredPasteboardTypes", + "_openDialog:file:", + "replaceHeaderView", + "_needToPrefetchMipmap:", + "initWithBindingTarget:", + "_loopHit:row:col:", + "accessibilitySetFocusedAttribute:", + "dataRepresentationOfType:", + "_singleValueForKeyPath:", + "allowsReverseTransformation", + "appendWhereClauseToSQL", + "setConjunction:", + "initWithController:retainController:key:valueTransformer:binding:", + "qdCreatePortForWindow:", + "_informAffectedStoresOfInterestByChildContext:inObjectsWithObjectIDs:withSelector:", + "setGroupsByEvent:", + "_trashContainsOrIs:", + "_updateButtonState", + "stopListening", + "setStartSubelementIdentifier:", + "initWithKey:", + "collatorWithName:", + "_DAVUnlock", + NULL, + "_copyMetadataFromStore:toStore:migrationManager:", + "initWithOwner:mediaType:formatDescription:attributes:", + "_keyEquivalentGlyphWidth", + "propertyList:isValidForFormat:", + "imageUnfilteredTypes", + "shouldShowEffects", + "windowDidResignKeyNotification:", + "selectToMark:", + "_setUpdated:", + "subentityColumn", + "computeHighlight", + "initWithPerson:model:", + "startPlay", + NULL, + "findBundleResources:callingMethod:directory:languages:name:types:limit:", + "initWithShadow:", + "_newSortingLastName", + "_changeSizeStyle:", + "totalSpace", + "addImage:forDuration:atTime:withAttributes:", + "_initWithfeImage:", + NULL, + "dateWithDate:", + "pixelSamples", + "actionMenuFilter:", + "_atEndOfTextTableRow:atIndex:", + "_registerOrCollectSuiteDescription:", + "passes", + "_addDragTypesTo:", + "_buildUIDtoIndexCache:", + "setCacheHint:", + "_invalidateObjectValue", + "setupKeyboardNavigation:", + "transitionFrame", + "dateFormat", + "timeZoneNames", + "_revertAlertSheet:wasPresentedWithResult:inContext:", + "viewWillResetCursorRects", + "_setMenu:", + "_realStoreTypeForStoreWithType:URL:error:", + "nts_TracksModification", + "_setAvoidsActivation:", + "setZeroSymbol:", + "_updateUbertrustPopupValues:", + "unregisterServiceProviderNamed:", + NULL, + "_setControlView:", + "setUserAgent:", + "processElement:", + "setMinificationFilter:", + "_childrenByUniqueName", + "replaceNodeWithIdentifier:withDataFromDelegate:", + "rawValue", + "initWithRed:green:blue:alpha:", + "isByref", + "writeToURL:ofType:forSaveOperation:originalContentsURL:error:", + "certificateSheetDidEnd:returnCode:contextInfo:", + "setTitlePosition:", + "shadowMapCoordinatesForStrip", + "registerName:", + "bufferPixelFormat", + "_initializeRegisteredDefaults", + "setFrameSize:", + NULL, + "initializeDataSource:", + "initWithCString:noCopy:", + "setChildSpecifier:", + "initWithOperatorType:modifier:negate:", + "windowWillMiniaturize:", + "tokenField:completionsForSubstring:indexOfToken:", + "isLinear", + "inputExtent", + "_toolbarItemCommonInit", + NULL, + "_addMarker:", + NULL, + "toValue", + "setFilterTypes:orUTIs:", + "_focusOnCache:", + "defaultButtonCell", + "selectedUTType", + "installCGOverlay:", + "_currentPageBounds", + "_drawRowHeaderBackgroundInRect:", + "_putCellNoUpdate:atRow:column:", + "setLastNameNormalized:", + "selectWithFrame:inView:editor:delegate:start:length:", + "indexReferenceModelObjectArray", + "_executeSave:didCommitSuccessfully:actionSender:", + NULL, + "_localClassNameForClass", + "initWithNamespace:", + "_usesSourceListColors", + "components:fromDate:toDate:options:", + "hasUndoManager", + "scanDouble:", + "_updateInvalidatedObjectValue:", + "_visibleName", + "_getGaugeFrame", + "_titleCellHeight", + "_setFont:", + NULL, + NULL, + "tableView:portForRow:", + "prefetchDataForRecords:", + "composite:into:", + "_excludeObject:fromPropertyWithKey:andIndex:", + "movie:linkToURL:", + "_drawThemeProgressArea:", + "updateFontPanel", + "initWithFrame:delegate:", + "initForDeserializerStream:", + "setStringColor:", + "_willPresentCreationError:", + "hasDuration", + "initWithFunc:ivarOffset:", + "_adjustToMode", + "_backgroundColors", + "bestLocationRep:matchesBestLocationRep:", + "_show:", + "deleteTextureInCurrentContext", + "setBackgroundWindowLevel:", + "setMovieBeingSet:", + "initWithResource:withParent:", + "glyphRange", + "setShowsCheckerboard:", + "_cgColor", + "_originalNextKeyView", + "preferredExtensionForMIMEType:", + "_createSubfields", + "setSpeed:", + "convertRectFromBase:", + "standardRecordTypes", + "readData:length:", + "_minXTitlebarDragWidth", + "_eventInTitlebar:", + "setDescription:", + "_renderingBounds", + "done", + "saveFilter:", + "setAttribute:", + "centerImage", + "windowRegion", + "descriptionInStringsFileFormat", + "hasCardWithEmail:", + "newDeleteStatementWithRow:", + "animatedCells", + "requestExpression", + "freeRect:", + "collapsesBorders", + "valueWithQTTime:", + "endDisplayNoComplete", + "supportedTextureBufferFormatsForFormat:", + "loops", + "_currentAttachmentIndex", + "boolValue", + "_viewSurfaceDidComeBack:", + "_web_createIntermediateDirectoriesForPath_nowarn:attributes:", + "setWords:", + "_getUUID", + "internalSaveTo:removeBackup:errorHandler:temp:backup:", + NULL, + "maximumFrameRate", + "_configFileCommonNameAndSerialNumber:", + "enumeratorOfInputWhiteParams", + "embedded", + "_setSelectorName:", + "isSafe", + "setBottomMargin:", + "month", + "createsSortDescriptor", + "isRootEntity", + "mouseUp:", + NULL, + "deepNodeCopy:", + "miniaturizeAll:", + "initWithFile:options:", + "attributesForInputPort:nodeIdentifier:", + "parsePhoto:", + NULL, + "_shouldShowFocusRingInView:", + NULL, + "gridColor", + NULL, + "reversedSortDescriptor", + "_tryState:interactive:", + "compositionOutputs", + "appendSubThumbnail:", + "rulerView:willAddMarker:atLocation:", + "setContactIndex:", + "automaticRearrangementKeyPaths", + "initIndex:", + NULL, + "coreUIDrawOptions", + "setFrameAutosaveName:", + NULL, + "_propFindRequestPostHandler:", + "_setAppleEventHandling:", + "stringByConvertingHTMLEntities", + NULL, + "addBorderStyleToDictionaryRef:", + "selectedQCIdentifier", + "mouseTracker:shouldStartTrackingWithEvent:", + "invalidateAllItemsLayout", + "filter:setValue:forKey:", + NULL, + NULL, + "cookieAcceptPolicy", + "_expandJustEnoughToLoadRepProperties", + NULL, + "_isLockingFocus", + "_createSaveButtonIfRequired", + "_getWindowCache:add:", + "_placeAccessoryView", + "_unpackTextInputEventRef:", + "_openableFileExtensions", + "_scriptingAddToReceiversArray:", + "URLWithString:", + "truncationString", + "splitterTrackingRect", + "setHidesOutlineColumn:", + "drain", + "_doPositionDrawer", + "updateRuler", + "hostWithName:", + "controlColor", + "CAJS_scheduledTimerWithTimeInterval:function:repeats:", + "itemHasDiskCache:", + "_hasgState", + "imagingModeForcedToSharedSurface", + "_cgImage", + "allowsToolTipsWhenApplicationIsInactive", + "_removePropertyNamed:", + "currentToolMode", + NULL, + "brightnessComponent", + NULL, + "stopModal", + NULL, + "_objectValue:forString:", + "tableRow:ofTableView:", + "initialPoint", + "isDaylightSavingTimeForTimeInterval:", + "setCancelButtonCell:", + "initWithContentsOfMappedFile:withFileAttributes:", + "elementWithRole:subrole:parent:", + "step:", + "replaceObjectAtIndex:withObject:", + "titlesForItem:", + NULL, + "propertyLineForGenericABProperty21:vCardProperty:", + "accessibilityStyleRangeForCharacterIndex:", + "setCompletes:", + "_printer", + "setSaveFileName:", + "outlineRoot", + "generatePropertyName:", + "_configureIntegrityCheck", + "setStartSubelementIndex:", + "_addSubview:", + "members:notFoundMarker:", + "_delegateSupportsEditing", + "parseHeader", + "currentValue", + "_setMultipleValue:forKeyPath:atIndex:", + "_minXminYResizeRect", + "setSelectedCompositionIndex:", + "filesystemItemLinkOperationWithSourcePath:destinationPath:", + "_middleIndexForCount:", + "IKDVGrabberUpdated:", + NULL, + "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:", + "alertDidEnd:returnCode:contextInfo:", + "setExifOrientation:", + "_performClickOnSlice:withEvent:", + "_hideChildren", + "authorize:", + "_visibleRows", + "_maxCachedThumbnails", + "selectedRow", + "setAbstract:", + "filterWithName:compatibilityVersion:keysAndValues:", + "bitmapData", + "_toolbarCommonBeginInit", + "controlsController", + "setCacheDepthMatchesImageDepth:", + "_contentToFrameMaxYHeight", + "destinationAttributeName", + "dictionaryWithObject:forKey:", + "loopsBackAndForth", + "currentSize", + "sendWireCountForWireID:port:", + "imageWithData:bytesPerRow:size:format:options:", + "relockResourceAtPath:withDuration:", + "_configureSavePane", + "movieWithData:error:", + "pixelFormat422YpCbCr8_601", + "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:", + "_stopObservingUndoManagerNotifications", + NULL, + NULL, + "invalidateFocusPoint", + "_old_drawImage:withFrame:inView:", + "nextSearchStringForNewValue:", + "attributedStringForObjectValue:withDefaultAttributes:", + "supermenu", + "sendString:", + NULL, + "currentReplyAppleEvent", + "publicRecordWithUniqueId:inAddressBook:", + "displayedMembersSubrows", + "initWithAppleEventCode:value:isHidden:presentableDescription:name:", + "_drawOrientedLabel:inRect:", + "addAnnotation:", + "readFromFile:", + "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:", + "createContext", + "alternateImageForSegment:", + "trustPolicies", + "_nonNilSetValueWithSelector:", + "synchronize", + "_parseNode:", + "areCursorRectsEnabled", + "dataSourceDidChange", + NULL, + "updateFrame", + "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:", + "_aboveContentBox", + "_resetClickedRowAndColumn", + "_ascenderDeltaForBehavior:", + "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:", + "_portsFromList:withSetFlags:unsetFlags:", + "pasteFont:", + "_firstMoveableItemIndex", + "setSwitchedToIndexMode:", + "displaysAnnotations", + "_auxiliaryStorage", + "writeRTFDToFile:atomically:", + NULL, + "updatedPeople", + "addListener:", + "allowsImageEditing", + "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:", + "setLastFileListMode:", + "ikSetNeedsDisplayInRect:", + NULL, + "test", + "matches:", + "_tabRect", + "_descriptionForNode:", + "barRequest:", + "temporaryItem", + "_allowTabbingIntoCells", + "commonISOCurrencyCodes", + "timeZoneDetail", + "connectionForProxy", + "company", + "handleButtonHit:", + "previewPanel:willLoadPreviewForDocumentURL:", + "accessibilityIsNumberOfCharactersAttributeSettable", + "languageWithName:", + "_didMountDeviceAtPath:", + "cachedChildren", + "setSecond:", + "lockFocus", + "columnAutoresizingStyle", + "createNSImageForManager:withOptions:", + "_setReceiveHandlerRef:", + "currentDocumentURL", + NULL, + "textUnfilteredFileTypes", + NULL, + "itemAtIndex:", + "_frameRectForIndexInGrid:gridSize:", + "layout", + NULL, + "flipsIfNeeded", + "sharedPreviewView:didStopSharingWithPreviewPanel:", + "directoryContentsAtURL:andReturnResultCode:", + "_preferredPlaceholderForMarker:onlyIfNotExplicitlySet:", + "SCTPerformDelayedSelector:", + "_ignoringChangeNotifications", + "_objectTypeDescriptionForClassAppleEventCode:isValid:", + "setSearchValue:", + "pushSubnodeForEditing:", + "bodyForContact:", + "_selectItem:atIndex:", + "lazyBrowserCell", + "_blockRowRangeForGlyphRange:completeRows:", + "_startSound", + NULL, + "_resumeLayerTreeRenderingForWindowOrderIn:", + "fetchPublicRecordsForClass:withPredicate:addressBook:", + "_testLayoutTree", + "colorWithAlphaComponent:", + "deserializeListItemIn:at:length:", + "layerSuperview", + "colorWithKey:", + "_controlView:textView:doCommandBySelector:", + "_fixCommandAlphaShifts", + "_resumeIfNotTopHandling:withScriptCommandResult:", + "navView", + "_createClipIndicatorIfNecessary", + "thumbnailToRightOfPoint:", + "editorDidBeginEditing:", + NULL, + "_removeProxyPasswordForProxyURL:", + "_cleanupMenuMaps", + "_setTableCells", + "_accessibilityMaxValue", + "jobTitleFieldPresent", + "setMinimum:", + NULL, + "createCGLayerWithSize:info:", + "filterName", + "isEntityUsable:", + NULL, + "initWithArchive:options:", + "portKey", + "_scriptIsYesForKey:default:", + "isNSDate__", + "insertValue:atIndex:inPropertyWithKey:", + "blurVerticalPass3ROI:destRect:", + NULL, + "mouseDownLocation", + "warningValue", + NULL, + "_removeRangeInArrayAtIndex:", + "currentDocument", + "_computeCommonItemViewers", + "_resetCursorRects", + "retainedCompressionSessionOptions", + "initWithData:isSingleDTDNode:options:error:", + "_fileWriterUnitElementForConnection:", + "_isFlattened", + "compareObjectValue:toObjectValue:", + "_addDependentValueKey:", + NULL, + "selectsInsertedObjects", + "vendorID", + "_avoidsActivation", + "browser:didClickOnDisabledCell:atRow:column:", + NULL, + "allowedInputSourceLocales", + "_loadRecentSearchList", + "formIntersectionWithCharacterSet:", + "_writeURLStringInRange:toPasteboard:", + "_dragImageForCell:withEvent:offset:", + "setVersionIdentifiers:", + "rowAtIndex:", + "_withinDate", + "objcClassName", + "initWithExtent:format:", + "ISS__ay_performSelector:withObject:withObject:inThread:beforeDate:", + "_cacheTransientStateOfObject:", + "_setPaperSize:inPrintSession:pageFormat:", + "_canSaveGraphRootedAtObject:intoStore:givenOthers:", + "_invalidateNumberOfRowsCache", + "download:didReceiveResponse:", + "accessibilityRangeForLineAttributeForParameter:", + "moveIndexAtTop:", + "highlightSelectedItem:", + "_groupCellAttributesWithDefaults:highlighted:", + "_scriptingMightHandleCommand:", + NULL, + "addDescription:forSubelementName:", + "_setDefaultButtonCell:", + "_allowsDisplayMode:", + "_setState:", + NULL, + "match:strokeColor:fillColor:mode:lineWidth:", + NULL, + "enableUndoRegistration", + "setEdge:", + "setFocusStack:", + "updateControlButtonsForOutlineViewSelection", + "renderBezelGroupWithPoints:count:radius:strokeColor:fillColor:lineWidth:", + "mapIntoVRAM", + "_physicalSizeCompare:", + "setAllowsUndo:", + "rangesContainLocation:", + "_drawBorderWithFrame:", + "thisIsACompany:", + "showsApplicationBadge", + "_alternateButtonTitle", + "openCustomLabelEditorForProperty:withPopup:", + "showAndShiftFocus", + "transformedValue:", + "second", + "finalWritePrintInfo", + "_forceSetView:", + NULL, + "completed:forType:", + "nts_StringForIndexing", + "defaultCredentialForProtectionSpace:", + "tableAction:", + "_initWithEntityMappings:", + "accessibilitySetVisibleCharacterRange:", + "addRect:", + "controller:didChangeToSelectionIndexes:", + "_accessibilityTreatButtonAsToolbarButton:", + "length", + "quartzFilterWithURL:", + "windowWillLoad", + "ensureLayoutForGlyphRange:", + NULL, + "coreUIRenderer", + NULL, + "getPropertyCSSValue:", + "initWithRTFDFileWrapper:", + NULL, + "showsShadowedText", + "applicationWillUpdate:", + "_recursiveDisableTrackingRectsForHiddenViews", + "setAltersStateOfSelectedItem:", + "thumbnailDidLoadNotification:", + "imageDataForPerson:", + "groupsController:outlineView:objectValueForTableColumn:byItem:", + "leftChild", + "_isReadOnlyIgnoresInert:", + "_gatherDataAndPerformMigration:", + "noteFirstLineParagraphStyle", + NULL, + "setReordering:", + "_setShowsAllDrawing:", + "simpleTraverseWithPathArray:pos:", + "completionsForPartialWordRange:indexOfSelectedItem:", + "updateGRLIndex", + "storedValueForKey:", + "_initWithPickers:", + "initWithSlideshow:dataSource:slideshowMode:options:", + "_updateLayerCompositingFilterFromView", + "displayableString", + "_old_initWithCoder_NSBrowser:", + "handleDelegateChangedCurrentDirectory", + "arrayWithCapacity:", + "settingsView:settingForKey:", + "_accessibilityViewCorrectedForFieldEditor:", + "imageBrowser:removeItemsAtIndexes:", + "listeners", + "setCachedChildren:forObservedNode:", + "downCaption", + "setDestination:allowOverwrite:", + "createRelationshipsForDestinationInstance:entityMapping:manager:error:", + NULL, + "setCanDRMInteractWithUser:", + "reallyInsertObject:atIndex:", + "_unsetFinalSlide", + "initWithImage:context:", + "_000103", + "encodeFloat:forKey:", + NULL, + "clearAllForRemoteLocation:", + "savePanel", + "statusCode", + "classDescriptionForKeyPath:", + NULL, + "fastIndexForKnownKey:", + "_deselectAll", + NULL, + "setImagingModeResetting:", + "previewPanel:shouldHandleEvent:", + "resizeBoundsForNote:inBounds:", + "flushPreferences", + "_lineFragmentDescription:", + "bindInRamMipmapItem:withUID:", + "preferredLocalizationsFromArray:", + "pointInConsumerOrderRect:inNode:bounds:", + "_nameAtIndex:", + "_insertKeyFrame:", + "imageByRenderingInRect:format:callback:data:options:", + "_itemVisibilityPriority", + "setText:", + "reallyRemoveFilter:", + NULL, + "_coreUIBezelDrawOptionsWithFrame:inView:", + "pixelFormat422YpCbCr8_709", + "rolloverCaption", + "initWithKey:appleEventCode:type:isOptional:isHidden:presentableDescription:name:", + "_engravedBoldActiveForegroundTextColor", + "extendSelectionAtStart:", + "_web_hasCaseInsensitivePrefix:", + "colorRenderingIntent", + "drawNote:inBounds:withColor:", + "_contents", + "setQuadPointsFromArray:", + "lockWhenCondition:", + "initWithCGSRegion:", + NULL, + "_setupButtonImageAndToolTips", + "draggingSourceOperationMaskForTableView:", + "_insertItemInSortedOrderWithTitle:action:keyEquivalent:", + "appendString:withFont:", + NULL, + "_mightHaveSpellingAttributes", + "numberWithLong:", + "_windowScreenDidChange:", + "_swapName", + "createProviderWithSource:options:", + "cleanupFind", + "setTracksModification:", + "_resizeContentsOfPreviewBox", + "_wiringNibConnections", + "_generateIdentifier", + "showInfoPanel:", + "_dataIndexFromRowIndex:", + "transparentBackground", + "_objectMatchesEntity:", + "faultingStatementForRelationship:", + "nextEventMatchingMask:untilDate:inMode:dequeue:", + "addRequestMode:", + "_keyCodeFromRecord:", + "_testWithComparisonOperator:object1:object2:", + NULL, + NULL, + NULL, + "_storeOrderedByFileProperty:orderedAscending:", + "drawSelectionAndOverlays", + "_addBindVarForConstId:ofType:inContext:", + "initWithObjectToken:node:", + "subcacheUsingFilteringFunction:userInfo:userInfoReleaseCallback:", + "createContextForCGImage:width:height:data:", + "_bestSettingWithBitsPerPixel:width:height:exactMatch:", + "shouldChangeTextInRanges:replacementStrings:", + "scrollColumnsRightBy:", + "view:customToolTip:drawInView:displayInfo:", + "newNode", + "setByAddingObjectsFromSet:", + "_hasWindowRef", + "_setNeedsDisplayInRectForLiveResize:", + "expandIndexPath:", + "numberOfItemsInImageFlow:", + "_userAgent", + "setType:creator:", + "_UTIMIMETypeForExtension:", + "_immediateScrollToPoint:", + "URL", + "afterEntityLookup", + "_makeEditable::::", + "_fileListModeControlCell", + "initWithString:locale:", + "pathComponentCellClass", + NULL, + "_updateSearchMenu", + "charValue", + "allocateSize:", + "blur:radius:", + "_orderOutAndCalcKeyWithCounter:", + "valueWithFont:range:", + "wantsPeriodicDraggingUpdates", + "treatsDirectoryAliasesAsDirectories", + "_doRemove", + "clearPastedImage", + "setCertificatesDisclosed:", + "updateWithFocusRing", + "removeObserver", + "addColor:forKey:toDictionaryRef:", + "duplicateWithClass:", + "indexLessThanOrEqualToIndex:", + "shouldDisplayControls", + "_finishShowAnimation", + "addFieldWithPopup:property:stringAttribute:endOfRange:", + "initWithValue:", + "setGridStyleMask:", + "_setPressedStateImage", + NULL, + NULL, + "_handleFileListSelectionChanged:", + NULL, + "updateLayout", + "gridWithCompositions:", + "yellowColor", + "_propertiesOfType:", + "_valueForKey:withInputs:exists:", + "_resolveHelpKeyForObject:", + "__setOrder:forConsumerSubpatch:", + "setWantsLayer:", + "setAffectedStores:", + "arrayWithObjects:count:", + "setCarbonDelegate:", + "displayNameForCollectionWithName:", + NULL, + "_tryUserMoveToParentNode", + "_setDefaultTargetAndActionOnView:", + "_generateSQLForSubqueryExpression:trailingKeypath:inContext:", + "currentPage", + "drawSheetBorderWithSize:", + "regularColorIfPossible:", + "classForClassName:", + "reportException:", + "_betweenDropFeedbackStyle", + "ivarInputPorts", + "_web_URLWithString:relativeToURL:", + "shapeWithRect:", + "_bindVariablesWithInsertedRow:", + "resourceDataUsingCache:", + "invTransform:", + "setAutorepeat:", + "setBottomColor:", + "initWithTextureName:releaseCallback:releaseInfo:context:format:target:flipped:colorSpace:options:", + "_accessibilityScreenRectForSegment:", + "_fastCharacterContents", + NULL, + "setPlaysEveryFrame:", + "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:", + "cropInfo", + "freeImageCache", + "tableView:validateDrop:proposedRow:proposedDropOperation:", + "_fillSpellCheckerPopupButton:", + "switchPanes:", + "_typeSelectStringForIndex:", + "sharedUserDefaultsController", + "_graphiteKeyboardFocusColor", + "writeGlyphInfo:", + NULL, + "_batch_release", + "getNewMipmapsFromMipmapDB:", + "drawIrisClosedInRect:", + "setActiveSegment:", + "_isDocumentXMLStore:", + "setFrameOrigin:", + "_dispose", + "currentIndex", + "removeInput:", + "_backupEngaged:", + "isPrinting", + "setMnemonicLocation:", + "_setCertificateData:", + "_drawKeyViewOutline:", + "pixelFormat", + "changeAttributes:", + "setVariableSizeCacheLength:", + "outlineView:writeItems:toPasteboard:", + "mailRecents", + "removeAllToolTipsForView:", + "encodedLineForValue:", + NULL, + NULL, + "registerForCompletionOfDrag:", + "bookID", + "versionIdentifiers", + NULL, + "DPSContext", + "setPrimitiveCreationDateYear:", + "_isSynonym", + "serializeInts:count:", + "_orderFrontModalColorPanel", + "allPersonProperties", + "instantiateWithFile:", + "timeScale", + "readInt", + "setRowIndex:", + "_toolbarContentsAttributesChanged:", + "_setIsFirstItem:", + "initWithLong:", + "_orderOutHelpWindow", + "scrollByPage:", + "objectMechanismsRequiredForObject:", + "_hideAllScopeButtons", + "recordDescriptor", + "objectForInfoDictionaryKey:", + "parameter:differs:from:", + "enableNotifications", + "_menu", + "_setChannelMapping:error:", + "operationCanAbort", + "_isPaged", + "_drawRowHeaderSeparatorInClipRect:", + "_distinctUnionOfSetsForKeyPath:", + "splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:", + "dataObject", + "isFullScreen", + NULL, + "frameRotation", + "_setApplicationID:", + "muted", + "sharedCameraServices", + "openWithApplication:", + NULL, + NULL, + "initWithType:leftExpression:rightExpression:", + NULL, + "rulerView:didMoveMarker:", + "togglePlatformInputSystem:", + "bilateralInitROI:destRect:userInfo:", + "animationValueForKey:forCell:", + "directoryQueryStatusChanged:", + "_rootEntity", + "_scrollLastColumnMaxXEdgeToVisible", + "repositionHUDWindow", + NULL, + NULL, + "_setDisplayState:updatePreviewView:", + "_mouseInTitleRect:", + "kerningShift", + "finalize", + "divide:by:", + "_typeDescriptionForName:suiteName:isValid:", + "_isFakeFixedPitch", + "enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:", + "updateTrackingRect", + "_drawerHorizontalOpenOffset", + "_logObservingInfo", + "addAnImageWithPath:toArray:", + "flushWindowIfNeeded", + "alphanumericCharacterSet", + "_sourceListFont", + "_sizeVerticalyToFit", + "_containsSimilarValue:property:", + "_itemViewer", + "isColumnSelected:", + "setSelectionZoomRect:", + "canonicalXMLStringPreservingComments:", + "_processHeader", + "initWithContentsOfURL:error:", + NULL, + "_fadePopUpWindow", + "createConnection", + "_newWithName:fromPath:forDeviceType:", + "_smartTagForTag:", + "createTextureBufferFromImageBuffer:withFormat:target:transformation:bounds:colorSpace:options:", + NULL, + "_setOrderOutInProgress:", + NULL, + "directoryResults", + "life", + "didImport", + "_initReaderWithClass:", + "_setLayer:", + "lastUpdatedDefaultKey", + NULL, + "_hasOverriddenAwake", + "draggingLocation", + "_setFrameSize:", + NULL, + "setChanges:", + "initWithElementSize:capacity:", + "_validateDeclarationStrings:forKey:", + "_finalSlideLocation", + "deletionStatement", + NULL, + "sharedSystemTypesetter", + NULL, + "setFieldType:", + "setRepresentedObject:", + "movie:shouldContinueOperation:withPhase:atPercent:withAttributes:", + "initWithWeaksReferences:", + "_unobstructedVisibleRectOfColumn:", + NULL, + "soundUnfilteredFileTypes", + "dropLastComponent:", + "nts_SetIsModified:", + "handleEventInThread:", + "_setInputs:", + "_sendCarbonNotification", + "headerToolTip", + "_engravedMenuOffsetTextColor", + "_sendDelegateCanSelectRow:", + "browserZoom", + "fetchObjectsWithFetchRequest:error:", + NULL, + "_setParserError:", + "mipmapItems", + "_showField:", + "_assertValidStateWithSelector:", + "setVisualContext:forConnection:", + "_ikVisibleRect", + "_setTableFlags:", + "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:", + "fetchLimit", + NULL, + "effects", + "_drawTickMarks", + "completedString:", + "showPopup", + "_postSelectionIsChangingAndMark:", + "assign:key:value:isNew:", + "freeRAMCache", + "savePanelDidEnd:returnCode:contextInfo:", + NULL, + "_modelKeysTriggeringChangeNotificationsForDependentKey:", + "componentUpdateNotification:", + "underlineThickness", + "imageRepsWithPasteboard:", + "applicationOpenUntitledFile:", + "deleteReferencesToTrack:ofType:", + "newStandardItemWithItemIdentifier:", + "initWithDataRef:type:", + "imageBrowser:willMoveItemsAtIndexes:", + "_sliderAction:", + NULL, + NULL, + "_indexForMoveUp", + "_typesetter", + "initWithButton:", + "_doPreSaveAssignmentsForObjects:", + "setAllowsColumnReordering:", + "_scrollerEventForEvent:", + "cleanUpOperation", + "_readURLStringIntoRange:fromPasteboard:", + NULL, + "attachmentStringForEmailCertificate:", + "retainIndex:", + "leafItem", + "setContainerIsRangeContainerObject:", + NULL, + "_cfLowercase:", + NULL, + "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:", + "initWithGlyphName:glyph:forFont:baseString:", + "_handleAppActivation:", + "recenterResolutionData:toX:andY:", + "nts_AddMembersAndSubgroupsFromDictionaryRepresentation:withRecordMapping:", + "_displayValueForKeyPath:", + "dataWithLength:", + "array", + "_setAttributedDictionaryClass:", + "_commandMethodSelectorsByName", + NULL, + NULL, + "_compatibleListShouldUseAlternateSelectedControlColor", + "contextWithCGLContext:pixelFormat:options:", + "acceptHelpResults:isLastBatch:", + "setVisualizePatchExecution:", + "registerImageRepClass:", + "loadFileWrapperRepresentation:ofType:", + "_setIChatSigningUsage:", + NULL, + "_removeActiveConnection:", + "_setIdentifiedItems:", + "serviceError:error:", + "_userSelectTextOfNextCell", + "_setIChatEncryptionUsage:", + "loadNibFile:externalNameTable:withZone:", + "addAddToiPhotoButton", + "_canHide", + "accessibilityIsSortDirectionAttributeSettable", + "_setTopRow:animate:", + "decodeDownloadData:dataForkData:resourceForkData:", + "_beginListeningForSessionStatusChanges", + "setResetOutputs:", + NULL, + "_synchronizeTextView:", + "initWithMovie:", + "_metalStyle", + "initWithObjects:", + "updateLineSpacingUI", + "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:", + "propagatesDeletesAtEndOfEvent", + "_desiredKeyEquivalentModifierMask", + NULL, + "addCharactersInString:", + "removeChildWindow:", + "nts_PopulateWithDictionary:withRecordMapping:generateIds:addressBook:", + "buttonGroup", + "encodeRect:forKey:", + "_reverseScanLines", + "getAttributesForCharacterIndex:", + "_chSheetDidEnd:returnCode:contextInfo:", + "_installOpenRecentMenus", + "titleFont", + "appendEnumerationDeclarationToAETEData:includingParts:", + "isMovableByWindowBackground", + "getLineStart:end:contentsEnd:forRange:", + "adjustSize", + "_setAnimates:", + "migrateStoreAtURL:withManager:metadata:options:error:", + "canCreateProxyPortWithOriginalPort:", + "_web_startupVolumeName_nowarn", + "setCellClass:", + "mostCompatibleStringEncoding", + "_invalidateUsageForTextContainersInRange:", + "_selectToolbarItemViewerInDirection:relativeToView:", + "addSelection:", + "_newPredicateWithInheritanceForFetchRequest:", + "_itemInStatusBar:withLength:withPriority:", + "_destroyFloatStorage", + "_appIdentifierFromServiceDictionary:appURL:", + "tabletID", + "connectionWasEstablished:", + "decimalNumberBySubtracting:", + "buttonClicked:", + "zoomInX", + NULL, + "fadeIn:orientation:", + "deselectAll:", + "_findIndexOfFirstDuplicateItemWithItemIdentier:", + "showPreviousDocument:", + "_highlightColorDependsOnWindowState", + "rowsInRect:", + "gotoBeginning", + "flipKnob:horizontal:", + "initWithName:fromFile:", + NULL, + "beginGrouping", + NULL, + "updateReferenceIndexesToReflectInsertionAtIndex:", + "bindItemFromDisk:withUID:", + "__fcCreateBlackListWithIndexes:", + "indexOfGroup:", + "_notes", + "mainThread", + "_isNSDocumentBased", + "addHeartBeatView:", + "objectForServicePath:", + "inlayROI:forRect:", + "doesPropertyExist:", + "selectText:", + "setValueTransformerName:", + "coreFindStrings:", + NULL, + "updateDragRectWithProgress:", + "advanceToEOLUnicode", + "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:", + "ISS_IANACharSetNameFromEncoding:", + "initWithContainerClassDescription:", + "_createDocument", + "_noteToolbarShowsBaselinePropertyChanged", + "applyDiff:toOldArray:withDataSource:allocator:allocatorSelector:", + "nts_CustomImageData", + "initForReadingWithData:", + "_windowWantsSquareToolbarSelectionHighlight", + "connectionUnitComponentSubType", + "updateFocusPoint", + "_release_1", + "undoNestedGroup", + "rangeOfString:options:range:", + "_tokenAttachmentForPoint:glyphIndex:drawingRect:", + "slideshowMode", + "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:", + "useCleanAperture", + "_multipleValuesObjectCount", + "_releaseDockWindowID", + "performActionForControl:", + "_replaceObject:withObject:", + "insertRowAtIndex:withType:asSubrowOfRow:animate:", + "visualMovieBoxBackgroundColor", + "_setRenderingBorder:", + "bind", + "_locationOfOriginPoint:", + "_serverConnection", + "accessibilityLineNumberForCharacterIndex:", + "_countBindings", + "predefinedAttributesForIndex:", + "accessibilityFocusedUIElementAttribute", + "_drawIndicatorInRect:", + "_isInternalFontName:", + "arrayOrNumberFromResolutions:andValues:withCount:", + "edgeAntialiasingMask", + "_performTypeSelect:", + "processNode:", + "shouldCollapseAutoExpandedItemsForDeposited:", + "_normalListmodeDown::::", + "autoconfigureWithPatch:", + "nofSubItems", + "setImage:dirtyRect:", + NULL, + "setPDFView:", + "_clearTemporaryAttributesForCharacterRange:changeInLength:", + "_freeTemporaryCacheStepWithVisibleIndexes:blackList:", + "processDocumentFragment:", + "cachedDrawingImage", + "setShadowOffset:", + "inputStreamWithData:", + "_setMarkedWidth:", + "initWithCompoundTypes:", + "flattenMipmapItemIfNeeded:withUID:", + "setContentsChanged", + "initWithContainerClassID:key:containerIsa:", + "_setIsUserRemovable:", + "defaultLineJoinStyle", + "usesPageLabels", + "initWithObjects:forKeys:count:", + NULL, + "notificationWithName:object:", + "_newNode:", + "_setOptions:withBindingInfo:", + "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:", + "trackMarqueeTextSelection:", + "initWithProperties:classExtensionDescriptions:", + "versionForClassName:", + NULL, + NULL, + "characterIndexForGlyphAtIndex:", + "setCropInfo:smallIcon:", + "sendData:", + "_setDefaultPrototypeCell", + "_isToolTipCreationAndDisplayEnabled", + "transformBy:interior:", + "toolTipForCell:", + "initWithObjectToken:track:", + "_scriptTerminologyPluralName", + "save:", + "addCursorRect:cursor:", + NULL, + "sendAppleEventCompleted", + "_drawQCBackground", + "includesPropertyValues", + "_filenamesAlwaysIncludingDirectories", + "_NSThemeWidgetCell_commonInit", + "deselectAll", + "linearBumpCenter:size:fromLevel:toLevel:angle:", + "_initWithData:error:", + "async", + "pause", + "_generateToOneSQLStringInContext:", + "identifier", + "drawSwatchOfColor:inRect:", + "cursor", + "isBadImage", + "releaseRenderedTexture:forCGLContext:", + NULL, + "IKAnimatedRepresentation", + "validStartCharacter:", + "monthSymbols", + "applyPaste:", + "setBaseSpecifier:", + NULL, + "_clearRefreshedObjects", + "activeColor", + "setKBProductString:", + "_cfNumberType", + "initWithEntity:alias:fetchColumns:inScope:", + "totalAdditionalHeightAtRow:", + "_tabRectForTabViewItem:", + "_desiredTextAreaSize", + "objcCreationMethodSelector2", + "setMinDoubleValue:", + "tableParameters", + NULL, + "certData", + "initWithPhoneString:", + "displayableSubpredicatesOfPredicate:", + "secondsFromGMTForDate:", + "objectsForFetchRequest:inContext:", + "setInnerHTML:", + "updateFromPMPageFormat", + NULL, + "keepLastRenderedCIImage:", + "paragraphSeparatorCharacterRange", + "_indexOfFirstGlyphInTextContainer:okToFillHoles:", + "__ivar_setClickedRow:clickedColumn:", + "isOCSPStatusCode:", + "_nameOfDictionaryForDocumentTag:", + "_doAttributeDecoding", + "_validateFaces:", + "initWithSimpleQueryString:searchScopes:", + "setSlideshowPanel:", + "_changeMainState", + "lineBreakInString:beforeIndex:withinRange:useBook:", + "toggleUsingSmallToolbarIcons:", + NULL, + "imageBounds", + "compositionIndexForPage:", + "alwaysUsesMultipleValuesMarker", + "freeVRAMCache", + "_handleKeyEvent:", + "operationScheduledForTime:dequeue:", + "_setForceItemsToBeMinSize:", + "breakUndoCoalescing", + "scaleFrame", + "handleMachMessage:", + "canonicalLocaleIdentifierFromString:", + "addDependency:", + "_ensureMediaBrowserViewLoaded", + "allowsCutCopyPaste", + "_disableChangeNotifications", + "_internalNextTypeSelectMatchFromRow:toRow:forString:", + "writeColorTable", + NULL, + "setValue:forInputKey:", + "rightIndentMarkerWithRulerView:location:", + NULL, + "_beginDrawView:", + NULL, + "prepareDeleteStatementWithRow:", + "IKImageIOLocalizedString:", + NULL, + "createDisplayList", + "_cfurl", + "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated", + "_setForceActiveControls:", + "setNeedsDisplay:", + "elementSize", + "_didChangeValuesForKeys:", + NULL, + "_shouldCoalesceTypingForText::", + "_rowHeightStorageComputeRectOfRow:cacheHint:", + "insertElements:count:atIndex:", + "initWithRegion:", + "_releaseAllPreWillChangeExpandedNodes", + "accessibilitySetSelectedAttributeOfChild:toValue:", + "_textDidChange:", + "toggleSearchMenu:", + "setAutomaticLinkDetectionEnabled:", + "_setWindowsNeedUpdateForSecondaryThread:", + "drawImage:atPoint:", + "panel:shouldShowFilename:", + "minDoubleValue", + "initMovingAndDisappearingAnimationWithItems:diff:", + "stopAnimations", + "_setDevice:", + NULL, + "saveLastImportContent", + "_contentToFrameMaxXWidth:", + NULL, + "_adjustDate:byEras:years:months:days:hours:minutes:seconds:", + "registerHelpBook", + "setPassphraseInfoStrings:::", + "isOutputTraced", + "horizBlur8ROI:destRect:", + "documentDidEndPageFind:", + "addRecordsToGroup", + NULL, + "_scriptingBooleanDescriptor", + "usesFindPanel", + "supportsSetAttributeValues", + "fileWrapperOfType:error:", + "request:acceptResponseWithHTTPStatusCode:", + "_tokenizeString:intoArray:errorDescription:", + NULL, + "setPickerMask:", + "_chooseGuess:", + "_changeIDsForManagedObjects:toIDs:", + "_setBackgroundColorWithRed:green:blue:alpha:", + "_queueBatchForDealloc:", + "_computeMenuForClippedItemsIfNeeded", + NULL, + "_sharedTextCell", + "insertString:atIndex:", + "clearMark", + NULL, + NULL, + "setContentResizeIncrements:", + "markUniqueIdsAsCompleted:", + "_proxyMutableArrayValueForKey:", + "_web_rangeOfURLUserPasswordHostPort", + NULL, + NULL, + "_delegate_nextTypeSelectMatchFromRow:toRow:forString:", + "_setTitleFixedPointWindowFrame:display:animate:", + "setValue:forUndefinedKey:", + "_copyDragCursor", + "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:", + "setWindowsMenu:", + "setMovie:", + "addresses", + "closeButton", + "initPropFindWithURL:withDepth:lookingForProps:", + "_drawsOwnDescendants", + "_cancelTypeAhead", + "addTableColumn:", + "abortTransitionAndSetRendertime:", + "replaceCharactersInRange:withCString:length:", + "initWithDir:cStrings:", + NULL, + "greekingThreshold", + "nextUnicodeBase64Line:", + "substituteQuotesForRange:", + "removeMetadataForRecordWithUniqueId:", + "insert:", + NULL, + "_parseParagraphAttributes", + "_getGlyphIndex:characterIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:", + "_removeChildForUniqueName:", + NULL, + "show", + "setControlPoint:time:value:", + "_updateAutosavedRecents:", + "_writeFonts", + "setShortWeekdaySymbols:", + "_validItemViewerBoundsAssumingClipIndicatorNotShown", + "purgeResources", + "_updateColorSpace", + NULL, + NULL, + "customValuesDictionary", + "_highlightedNodes", + "removeRow:", + "_setIsPresent:", + "findUser:", + "_faceForFamily:fontName:", + "setTiltAngle:", + NULL, + "policyValues", + "sizeWithAttributes:", + "_isBooleanBinding:", + "poolCountHighWaterMark", + "createThumbnailFromImageSourceRef:", + "_fetchedPreviewTypeForDocumentPreview:", + NULL, + "graphicsContext", + "displayRect:", + "_drawCenteredVerticallyInRect:scrollable:", + "_viewFreeing:", + "redoMenuItemTitle", + "duplicate:", + NULL, + NULL, + "trackByIndexAndType:type:flags:", + "_drawOutlineCellAtRow:", + "blueBayerReconstructionProcessedROI:destRect:", + "performSelector:", + "_menuBarShouldSpanScreen", + "setCountPerRow:", + NULL, + "setBecomesKeyOnlyIfNeeded:", + "accessibilityValueIndicatorAttribute", + "setVolume:", + "defaultCenter", + "_drawingByHIView", + "_scheduleAutoExpandTimerForItem:", + "newWithProperties:quartzFilter:", + "_sizeAllDrawers", + "objectsByEvaluatingWithContainers:", + "_setAttributes:newValues:range:", + "frameCount", + "_setTimelineIdentifier:", + "_XMLStringWithOptions:appendingToString:", + "_appropriateColorPanelSliderPane", + "addToolbar", + "linkTextAttributes", + "_chosenIdentityToSignInvitation", + "smallIcon", + "characterRange", + NULL, + "setOpenGLTextureID:withGLContext:", + "lossyCString", + "becomesKeyOnlyIfNeeded", + "_growRegistrationCollectionForEntitySlot:toSize:", + "movieVisualContext", + "validateValue:forKeyPath:error:", + "_handleTabKey:", + "_wantsKeyDownForEvent:", + "initWithBundle:nibName:", + "_unregisterMenuForKeyEquivalentUniquing:", + "initForRelationship:sourceAlias:destinationAlias:correlationAlias:direct:inScope:", + "setSystemLanguages:", + "_fillLayoutHoleAtIndex:desiredNumberOfLines:", + "_shouldProceedAfterErrno:copyingItemAtPath:toPath:", + "_retainedObjectWithID:optionalHandler:withInlineStorage:", + "_makeKeyAndOrderFrontWithEffect:canClose:willOpen:toFullscreen:", + "originalDontAskUnresolvedDataRefsFlag", + "lockFocusIfCanDraw", + "_setTrackingAreasDirty", + "_destroyRealWindowIfNotVisible:", + "_searchWithGoogleFromMenu:", + NULL, + "nextKeyView", + "_web_errorWithDomain:code:failingURL:", + "maximumLineHeight", + "setIsPaneSplitter:", + "usableSortDescriptorsFromArray:", + "_makeUpCellKey", + "initWithPath:", + "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:", + "_adjustTextBoundingRect:toFitInCellFrame:withMaxSize:", + "lockResourceAtPath:withDuration:", + "_fromRecord:getContainerInfo:andKey:", + "storeCurrentBrowsingNodePath:", + "_forwardMetadata", + "setWithSet:", + "createKeyValueBindingForKey:typeMask:", + "fillTemplate:withReplacements:", + "_validateSessionCredentials", + "_notifyFamily_DidSetAllCurrentItems:", + "_validateDeletesUsingTable:withError:", + "_endTopLevelGroupings", + "_setDocViewFromRead:", + "_setPaperName:inPrintSession:pageFormat:", + NULL, + NULL, + "originalImageIsInvalid", + "_userCanMoveColumn:toColumn:", + "assertFileHandlerIsReady", + "initWithDir:separator:pattern:", + NULL, + "_didEndSheet:returnCode:contextInfo:", + "partialControllerKey", + "sRGBColorSpace", + "proxyPort", + "setStackSize:", + "drawCellAtRow:column:", + "_utiUsage", + "netServiceDidResolveAddress:", + NULL, + "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:", + "_animateFadeOut", + "valueWithCATransform3D:", + "_mutableSetValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", + "_responseWithCFURLResponse:", + "unregisterForPropertyChangedNotifications", + "setButtonBordered:", + "_open:", + "_resizeContentsOfMiniMode", + NULL, + "writeListTable", + "_updateOverlayFrame", + "simpleCommandsArray", + "_windowChangedHilite:", + "roundingIncrement", + "setIndex:", + "setDate:", + "focusedIndex", + "getValues:forAttribute:forVirtualScreen:", + "glyph", + "_resizeWithDelta:fromFrame:beginOperation:endOperation:", + NULL, + "setDefaultTimeZone:", + "closeAll:", + "storeNode:withUID:withResolution:", + NULL, + "sourceRepresentation", + "addNavigationLayer:", + "_codeSigningDevelopmentUsage", + "countOfRecordsForClass:matchingPredicate:takeLock:", + "_setupWindow", + "didEndAlert:returnCode:contextInfo:", + NULL, + "extraArgument1", + "isEqual:", + "_getBucketForSeekingToPoint:", + "_changedTransientProperties", + "performAction:onSelectedTimeLines:withSelectedKeyFrames:object:context:", + "setCalendarFormat:", + NULL, + "_applicationWillDeactivate:", + "imageContents", + "inFlightAnimationWithObject:animation:", + "_blockRowRectForCharRange:rect:", + "_setClient:", + "gotoBeginning:", + "setSensibility:", + "_changeWasUndone:", + "addPropertiesAndTypes:withAddressBook:", + "sublayerEnumerator", + "writeDelayedInt:for:", + "addObserver", + "initWithNibName:bundle:", + "updateCanGoBackAndNext", + "_rearrangementExtensions:", + "SCTWindowIdentifier", + "saveChanges", + "_tabHeight", + "_sendDidFailToDispatchNotification", + "_draggedURL:", + "_configureSearching", + "_setKeyAlgorithm:", + "launchApplication:showIcon:autolaunch:", + "_clearLockedObjects", + "executeSubpatches:arguments:", + "_checkCollectionMoveOut:", + "valueClassForBinding:", + "initWithContainerSpecifier:key:", + "addTemporaryAttribute:value:forCharacterRange:", + "_setImpactsWindowMoving:", + "drawWithCurrentRendererInRect:", + "indexMenuBar:", + "_wantsRevealovers", + "_setSelectableItems:", + "outputImageWasModifiedByDelegate", + "setEnumerator:", + "_populateMiniMode", + "accessibilityIsSelectedTextRangeAttributeSettable", + "setAllowsIdentitySelection:", + "_clearEditingTextView:", + "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:", + "_loadPickerUI", + "_exposedBindings", + "openPanel", + "unlockWithPassword:", + "adjustCTM:", + "_selectNextSubfield", + "_pathForImageTaggedByEmails:", + "_startAnimation", + "nts_CreateInfoWithAddressBook:", + "bindingCategory", + "cellAttribute:", + "setAllowedClasses:", + "fetch:", + "getColorFromAppearanceString:", + "drawSelectionIndicatorInRect:", + "parseABExtensionType:", + "temporaryAttributesAtCharacterIndex:effectiveRange:", + "accessibilityPopUpMenuCreated:", + "setReplyMode:", + "_configurePathComponentPicker", + "nts_RemoteLocation", + "nodeWithIdentifier:", + "_reconcileToSuiteRegistry:", + "updateLockFileTimeStamp", + "originalProvider", + "setTimingFunction:", + "rulerView:shouldMoveMarker:", + "_didSelectComposition:", + "_isVisible", + "_fixupKeyboardLoop", + "IKIPSetFrame:constrainedToScreen:", + "setMenuView:", + "enterFullscreenWithEffect:frame:fromPanel:", + "previousPage:", + "noteContentValueHasChanged", + "_clearAllChanges", + "_shouldForceShiftModifierWithKeyEquivalent:", + "scaleFactor", + "evaluateWithObject:substitutionVariables:", + "_accessibilityPopUpButtonCellPressAction:", + "unlockTopMostReader", + "pathnameForDatabase", + "_createCGColorWithAlpha:", + NULL, + "saveOptionsHandler", + "mapData", + "cachedMipmapWithUID:", + NULL, + "_setHasRetainedStoreResources:", + "indexOfFirstCharacterOnPage:", + "loadFromDirectory:", + "_accountInfoPostHandler:", + "initWithData:bytesPerRow:size:format:colorSpace:", + NULL, + "_removeFormatDescriptionPropertyListener", + "tabletPoint:", + "_presentDiscardEditingSheetWithError:discardEditingCallback:otherCallback:callbackContextInfo:relatedToBinding:", + "isEqualToArray:", + NULL, + "_markerAtIndex:inText:", + "_dnsName", + "printDocument:", + "_setWindowNumber:", + "_setCompileResult:", + "markWithTag:notify:", + NULL, + "removeNodeForKey:", + "_windowTitlebarButtonSpacingWidth", + "writeInfo", + "countForKey:", + "setButton", + "makeIdentity", + "_clearConfigPanel", + "fontWithName:matrix:", + "_ruleOptionPopupChangedAction:", + "_workspaceDidResignOrBecomeActive:", + "applicationQuit:handle:", + "_isViewValidOriginalNextKeyView:", + "_compositeAndUnlockCachedImage", + "globallyUniqueString", + "selected", + "_copyCompositeCoreUIDrawOptions", + "_setIsCritical:", + "normalizeAdjacentTextNodesPreservingCDATA:", + "_setHideNonPartDrawing:", + "_newObjectGraphStyleRecordForRow:andObject:", + "_processMetaElementWithName:content:", + "rectSetBeingDrawnForView:", + "_prepareCropPRSUndo:", + "needsToDrawRect:", + "_delegateRespondsToGetToolTip", + "_observePreferredFileNameOfChild:", + "ensureAttributesAreFixedInRange:", + "_autorecalculateMinSize:maxSize:", + "initWithEntity:propertyDescription:", + "outlineView:willDisplayCell:forTableColumn:row:", + "_addDisplayedView", + "slideshowDidStop", + "contentMaxSize", + "arrayOfObjects", + "numberWithUnsignedShort:", + "_termOneShotWindow", + NULL, + "sharedFrameworksPath", + "totalCacheUsed", + NULL, + "_locationOfRow:", + "setUniqueID:", + "_setKeepCacheWindow:", + "shouldDrawFocusRing", + "lockFileContentsDictionary", + "applicationWillResignActive:", + "ignoreWord:inSpellDocumentWithTag:", + "unlockForThreadedOperation", + "tokenFieldCell:writeRepresentedObjects:toPasteboard:", + "resolveURL:withTarget:", + "abortParsing", + "popUndoObject", + "videoDecompressionRequirementForConnection:", + "_drawGraph:selectionRingColor:selectionRingWidth:nodeCount:nodeList:connectionCount:connectionList:", + "valueForHTTPHeaderField:", + "setPredicateName:", + "initWithUnsignedInteger:", + "_selectToolbarItemViewerPreviousToView:", + "panel:directoryDidChange:", + "drawSeparatorInRect:", + "mainWindow", + "_boolValueFromObject:", + "_doOpenUntitled", + "setUnderlyingDataAreVolatile:", + "SNNROI:destRect:", + NULL, + NULL, + "_clearKeyCell", + "finishAwakeFromNib:", + "setLayoutRect:forTextBlock:glyphRange:", + "attributeKeys", + "session:authenticateForURL:withRealm:attempt:username:password:", + "_shouldTryCoreUIBezelDrawingWithFrame:inView:", + "breakConnection", + "controller:didChangeToSortDescriptors:", + "rootObject", + NULL, + "clipFrameChanged:", + "isActive", + "_chunkAndFindMisspelledWordInString:language:learnedDictionaries:wordCount:usingSpellServer:", + "initWithDrawingView:rects:", + "setFillMode:", + "_drawHeaderFillerInRect:matchLastState:", + "fullNoiseReduction:pattern:radius:slope:", + NULL, + NULL, + "performDefaultImplementation", + "object:didAddObservance:", + "setAlternateButtonTitle:", + "attrStringForWarning:type:font:", + "scrollToSelected", + "entityVersionHashesByName", + "_currentImage", + "compositionLayer", + "setMouseCol:", + "boundsDidChange:", + NULL, + "shapeWidth", + "setMapData:", + "attributesForNodeIdentifier:", + "outlineTableColumn", + "setStartUpDelay:", + "setChanged:", + NULL, + "_restoreMiniaturizedWindow", + "setHintCapacity:", + "_rootmostLayerTreeHostAncestor", + "pathStyle", + "performSelector:withObject:afterDelay:", + "posterTime", + NULL, + "_customizationPaletteSheetWindow", + "beginPage:label:bBox:fonts:", + "_setRawDataAccess:", + "selectedIndexAndQuality:", + "_font", + "zoomValue", + NULL, + "inverseManyToMany", + "isValid", + NULL, + "_currentCollectionName", + NULL, + "_callImplementor:context:chars:glyphs:stringBuffer:font:", + "handleFileListModeChanged", + "availableVideoPreviewConnections", + "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:", + "_tableFlags", + NULL, + "_drawGrowBoxWithClip:", + "_dragHandleColors", + "setSubmenuRepresentedObjectsAreStale", + "UTF8String", + NULL, + "_resizeWeightSharedWithDuplicateItems", + NULL, + "setDisplayPattern:", + "_setupHistoryControl", + "createManyToManyTablesForEntity:", + "setCompression:factor:", + NULL, + "playerView", + "postNotificationName:object:userInfo:", + "selectItemWithObjectValue:", + "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:", + "automaticallyNotifiesObserversOfAppleUseCoreUI", + "_typeIdentifierFromCarbonCode:", + "_decodeDepth", + "_IKBuildImageWrapperForType:withObject:withOwner:", + "antiAliasingFilter:phase:greenAmount:redBlueAmount:", + "thumbnailWithSize:", + "comboBox:indexOfItemWithStringValue:", + "didRecycleResource:", + "isButtonVisible:", + "_privateAttributesWithIdentifier:", + "_valueForDepth:", + "fileSystemRepresentationWithPath:", + "allGroups", + "_validateAllObjectsAfterMigration:", + "drawAtPoint:fromRect:operation:fraction:", + "numberOfItemsInComboBoxCell:", + "thumbnailSize", + "encodeObject:", + "_userSetStateOfCellsInSet:toState:", + "imageRenderedSize", + NULL, + "_convert:toValueClassUsing:", + "attributedSubstringForMarkedRange", + "preview", + "renderWithBounds:matrix:function:info:", + "_typeDescriptionForName:", + "isInFrontWindow", + "_encodeObjectValuedMapTable:withCoder:", + "outlineView:typeSelectStringForTableColumn:item:", + "browser:sizeToFitWidthOfColumn:", + "selectTabViewItem:", + "setFireTime:", + "removeControlPoint:", + "setParentWindow:", + "_setToPresentCritical", + "autoPlay", + NULL, + "highlightColorInView:", + "flipCellsHorizontally", + "removePortForName:", + "addItemsWithRecentPictures:", + NULL, + "_animates", + "dashCountRaw", + "_packedGlyphs:range:length:", + "_escapeHTMLAttributeCharacters:withQuote:appendingToString:", + "descriptionFunction", + "_saveCacheAndIndexes:", + NULL, + "alignLeft:", + "typeToUnixName:", + NULL, + "setupTableView:", + NULL, + "dateYearless", + "_changeSyncPostingEnabled", + "_currentPath", + "localizedRecoverySuggestion", + "_canShowToolTip", + "_userRemoveItemAtIndex:", + "_hiddenWindows", + "_bindingInformationWithExistingNibConnectors:availableControllerChoices:", + "computeFigure:rectangle:", + "originalWidthForIndex:", + "initWithView:", + "_viewForControlID:", + "_anyUsage", + "imageIndexesInDocumentRect:", + "windowIsSpellingPanel:", + NULL, + "_applySelectionToItems:", + "setupAttributes", + "setVmUsagePolicy:", + "_acceptableRowAboveKeyInVisibleRect:", + "_revertDisplayValueBackToOriginalValue:", + "symbolicatorForTask:", + "_readColorIntoRanges:fromPasteboard:", + "_resizeButtons", + "setGrouping:", + "_liveResizeCacheableBounds", + "encoding", + "acquireFunction", + NULL, + NULL, + "autosizesCells", + "accessibilityInsertionPointLineNumberAttribute", + "setNeedsLayout", + "_nxeventTime", + "_eventRef", + NULL, + "selectedPeople", + "subrowIndexesForRow:", + NULL, + "encodeBytes:length:", + "_activeBackgroundColor", + "_adjustFreeFormLayout", + "startLineStyle", + "isExecutableFileAtPath:", + "RTFDFromRange:", + NULL, + NULL, + "_blinkCaret:", + "_acceptableRowBelowRow:tryAbovePoint:", + "_loadBundle", + "_gray204Color", + "hasSubmenu", + "typeDescriptions", + "initWithFrame:forMenuItem:", + "deserializeAlignedBytesLengthAtCursor:", + "_detailedContentsAtPath:", + "_handleChildAdded:", + "sampleBufferWithFigSampleBuffer:", + "gradientType", + "setChapterlist:", + NULL, + "_bodyStreamCanRead", + "initWithX:Y:Z:W:", + "imageExporterClasses", + "ancestorSharedWithLayer:", + "propertyValueWithKey:uniqueId:addressBook:", + NULL, + "_label", + "_isBeingEdited", + "vendorDefined", + "createPatchWithName:", + "_enableSelectionPostingAndPost", + "takeValue:fromPort:", + "defaults", + "_lmouseUpPending", + "objcDescriptorCreationMethodSelector", + NULL, + "initWithBool:", + "_adjustHelpDependentButtons", + NULL, + "deltaStateForUID:", + "_keyEnciphermentUsage", + "_isUpdating", + NULL, + "helpCursorShown", + "visibilityPriority", + "toolbarDidRemoveItem:", + "showsLogonButton", + NULL, + NULL, + "_scaleEffectForItemFrame:fullscreenFrame:fromPanel:subEffects:", + "setWidth:type:forLayer:", + "showcaseRect:window:position:", + "connectionGraphNodeForConnection:", + "_setUnprocessedUpdate:", + "imageFlowDidStabilize:", + "_cgsevent", + "setInt64:", + "_imageInterpolation", + "setToolTip:forSegment:", + "processDocumentType:", + "circleRect", + "renderOptionsForOptionsCallback:param:", + "_toggleOrderedFrontMost:", + "contentsAtPath:", + "showNode:inDirectory:selectIfEnabled:", + "runOperationModalForWindow:delegate:didRunSelector:contextInfo:", + "_progressPanelWasCancelled:contextInfo:", + "_setHiddenExtension:", + "_abortEditingIfFirstResponderIsASubview", + "_parseDocumentAttributes1", + "_filterMainSource:", + "isLiveCapturing", + "abNormalizedUID", + "__oldnf_containsChar:", + "cycleToNextInputLanguage:", + "_processLibXML2MetaNode:", + "drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", + "setCollapsedLayout", + "linearGradientCenter:size:fromAlpha:toAlpha:angle:offset:", + "horizBlur32ROI:destRect:", + "fetchMetadata", + "_generateSQLEndsWithStringInContext:", + "addMembers:", + "setShowZoomSlider:", + "_groupObjectsByRootEntity:", + "isColumn", + NULL, + "_getDisplayDelegateFadesOutWhenInactive:", + "notReadyError", + "_resumeUIHeartBeatingInView:", + "_lockViewHierarchyForDrawing", + "canInitWithData:", + "fxButtonClicked:", + "_colorWellCommonAwake", + "setItemHeight:", + "_allowAnimated_setCompositingFilter:", + "boundsHeightGivenWidth:font:", + "_createPattern", + "isQuery", + "currentVirtualScreen", + "setIsEmptyColumn:", + "valueForControlPoint:", + "_rowObjectFromPredicate:", + "lockTimeout", + "moveBackward:", + "add:", + "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:", + "setupWithOptions:", + "setKeyView:", + "_convertPoint:fromAncestor:", + "sublayers", + "prepareCountStatementWithFetchRequest:", + "_wasCGOrderingEnabled", + "pasteboardByFilteringTypesInPasteboard:", + "thumbnailImageSize", + "externalNameForPropertyName:", + "movieBounds", + "layoutSublayers", + "_addQuoteForLibXML2ElementNode:opening:level:", + "keyFrameSelected:inTimeLine:", + "imageWithPathInner:", + "center", + "_valueForRequiredCocoaAttributeKey:fromElement:", + "_synchronizeUserDefaultsIfNecessary", + "doubleClickAtIndex:inRange:", + "_collapsePanel:andMoveParent:toFrame:", + "evaluatedReceivers", + "fontDescriptorWithName:matrix:", + "setBitmapRepresentation:", + "_setIgnoringScrolling:", + "copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped:", + "anyObject", + "unregisterForPropertyChanges", + "nativeRotation", + "encryptChanged:", + "containsPoint:", + "fetchRequestForSourceEntityNamed:predicateString:includesSubentities:", + "getGlobalWindowNum:frame:", + "_decrementLine:", + "unlock:", + "_updateFormatDescriptionFromCallback", + "_establishEventSnapshotsForObject:", + "setDocumentEdited:", + "currentTextContainer", + "numberOfThumbnails", + "emptyView", + "initForFetch:context:countOnly:", + "accessibilitySizeOfChild:", + "canBecomeVisibleWithoutLogin", + "imageAlignment", + "_editNote:", + "initWithURLResponse:", + "_setObjectHandler:", + "unsignedCharValue", + "_startelement:attributes:", + "isIrisClosed", + "symbolForAddress:", + "updateOptionsWithMarketingVersion:", + "regionOf:destRect:", + "parseCertPolicies:", + "insertTabIgnoringFieldEditor:", + "entityName", + "classDescriptionForDestinationKey:", + "datePickerCell:validateProposedDateValue:", + "coerceToDescriptorType:", + "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:", + NULL, + "_explicitlyCannotRemove", + "nts_IsParentGroupOfRecord:", + "defaultActionForKey:", + "servicesMenu", + "cameraIsGone:", + "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:", + "userControlForAnnotation:", + "schedule:mode:", + "currentParagraphStyle", + "naturalSize", + "createSoftwareContext", + "setFieldVisible:withBool:", + "setExportToiPhoto:", + "cheapChromaBlurROI:destRect:", + "microsecondOfSecond", + "bindCGCache", + "loadNibNamed:owner:", + "departmentFieldPresent", + "generateNewGLTextureID", + "endInputStream", + NULL, + "_printSettingsValue", + "setLastEditedStringValue:", + "_okForSaveMode", + "setSubEffects:", + "setTitle:", + "nts_GroupUID", + "canBeCompressedUsing:", + "pixelFormatI16", + "heartBeatCycle", + "_commitOnMouseDown:", + "didLayoutDocumentView:", + "_isDarkWindow", + "_removeItem:fromTable:", + "initWithOutputIntents:quartzFilter:", + "_updateFormatDescription", + "classDescriptionsInSuite:", + "setImagePosition:", + "_documentURLAtIndex:", + "_clearCurrentAttachmentSettings", + "rowsCount", + "setPortClass:", + "_openInlinePreview", + "groupsController:outlineView:isItemExpandable:", + "sizeDidChange", + "_clearPreviousKeyWindowProperties", + "usePixels", + "_clearUnprocessedUpdates", + "enableExecution:", + "dispatchNameDoubleClick:", + "executeFetchRequest:error:", + "setPosition:atIndex:", + "accessibilitySharedTextViews", + "outlineView:setObjectValue:forTableColumn:byItem:", + "hasCGCache", + "initWithFrame:pullsDown:", + "setCurrencyGroupingSeparator:", + "itemNumberInTextList:atIndex:", + "allowedContentBindingMask", + "_isKeypathScopedToSubquery:", + "metaDataCachePathForUID:", + "_allLabels", + "writeKeywordsDocumentAttribute", + NULL, + "imagePath", + "externalMovie:", + "transitionImage", + "commonInitWithDictionary:", + "disabledWhenInactive", + "createRealObject", + "_abCompareNotWithinIntervalAroundTodayYearless:", + "_unregisterInstance", + "_releaseEvents", + "createPredicateForFetchFromPredicate:", + "addThumbnailForIndex:toArray:", + "setCertificate:", + "didAddToPersistentStoreCoordinator:", + "_drawAlternatingRowBackgroundColors:inRect:", + "textBackgroundColor", + "retreatMonthButtonCellForDatePickerCell:", + NULL, + "removeTextContainerAtIndex:", + "systemFontSizeForControlSize:", + "formatter", + "addNameDefaultValueToDictionaryRef:", + "setLocaleListForDefaultFontFallback:", + "_setAutovalidatesItems:", + NULL, + "_web_fileNameFromContentDispositionHeader_nowarn", + "_imagesWithData:hfsFileType:extension:zone:expandImageContentNow:", + "matchesPattern:caseInsensitive:", + NULL, + "_registerViewNotifications", + "imageBufferRef", + "setClass:forClassName:", + "replaceValueAtIndex:inPropertyWithKey:withValue:", + "_target", + "renderingContext", + "_frameOfOutlineCellAtRow:", + "_initWithCGSEvent:", + "descriptorByTranslatingObject:ofType:inSuite:", + "spacing", + "_focusInto:withClip:", + "setAttachmentFrame:", + "_nestingModeShouldHideAddButton", + "virtualScreen", + "_buttonTitleForTag:", + "setSendsSearchStringImmediately:", + "initWithVCardRepresentation:", + "insertItemWithRecentPicture:atIndex:", + "_defaultType:", + "registerNotificationsForWindow:", + "_shouldDisplayView:forDocumentPreview:", + "_createProfileFor:", + "vendor1", + "_findColorListNamed:forDeviceType:", + "_hasCursorRectsForView:", + "listOptions", + "__swapCompositions:", + "beginUsingMenuFormRepresentation:", + "_existsForArray:", + "_colorList", + "_setToolbarShowHideResizeWeightingOptimizationOn:", + NULL, + "setClient:", + "unregisterViewNotifications", + "_getCGImageRefCreateIfNecessary", + "resultType", + "setBezelStyle:", + "drawPageBorderWithSize:", + NULL, + "_addCert:certData:commonName:", + "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:", + "datePickerMode", + "performSelectorDelayed:", + "extendedNodeInfo", + "moduleWasInstalled", + "soundNamed:", + "performMenuAction:withTarget:", + "accessibilityIsVisibleCharacterRangeSettable", + "_addTrackingRectsForView:", + "setRepresentation", + "initWithRulerView:", + NULL, + "tokenizingCharacterSet", + "_firstSelectedCell", + "whitespace", + "_descriptorByTranslatingData:ofType:inSuite:", + "bind:toObject:withKeyPath:options:", + "_accessibilityTitleCell", + "_printSettingsForGetting", + "_adjustedCenteredScrollRectToVisible:forceCenter:", + "reduceWithKernels:::", + "tokenAttachment:shouldUseTokenAttachmentCell:", + "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:", + "_accessibilityParentAdjustedHitTestElement:atLocation:", + "_clockAndCalendarAdvanceMonthButtonCell", + NULL, + "_createAutosaveRecordForDocument:", + NULL, + "layoutSublayersOfLayer:", + NULL, + "_setRepresentedURL:", + "pathForResource:ofType:inDirectory:forLocalization:", + "rectForSegment:inFrame:", + "boundsForThumbnail:", + "getIndexes:maxCount:inIndexRange:", + "setCurrentValue:", + "composition", + "setInputPortOrder:forKey:", + "_rulerAccViewLeftTabWell", + "imageFileExtensions", + "setItemViewer:", + "registerClient:", + "canInstantiateWithFile:", + "isFieldEditor", + "setCapacityHint:forSlot:", + "sharpenReconstructedGreenEdges:radius:intensity:edgeIntensity:edgeThreshold:edgeMaskRadius:edgeMask:", + "_addNode:atPosition:", + "initWithComparisonFunction:", + "_compositeNameIncludingAuxiliaryElements:", + "_setTrustHeaderValue:", + "_enableToolTipCreationAndDisplay", + "decodeQTTimeRangeForKey:", + "_baseLineHeightForFont:", + "_setIndex:", + "pointerSerialNumber", + "accessibilityRangeForSelection:", + "toolbarInstancesWithIdentifier:", + "addressBookWithDatabaseDirectory:", + "matrix", + NULL, + "setQueryAttributes:", + "_buttonWidth", + "setAllowsEditingTextAttributes:", + "_layoutEnabled", + "_finishedWiringNibConnections", + "initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:", + "inputPorts", + "hasVRamLeftToContinueSchedule", + "_renderLayerPropertyAffectsGeometry:", + "_cellForPoint:characterIndex:level:row:column:range:", + NULL, + "contentInsetColor", + "mouseRow", + "initWithPath:directory:", + "setAutosavingDelay:", + "_removeHoleFromRanks:", + "nextSingleByteStringInEncoding:quotedPrintable:stopTokens:trim:", + "cString", + "_pathForLocalImage", + "timeStyle", + "resetCaches", + "sharedURLCache", + "_web_countOfString:", + "propPatchWithSession:URI:updatingProps:token:inNameSpace:", + "_addImage:named:", + "processEntity:", + "abortPrefetchThumbnails", + "simpleTraverseWithPath:", + "createSharedGWorld", + "indexOfLastCharacterOnPage:", + "accessibilityIndexForAttachment:", + "lineHeightMultiple", + "_enableMovedPosting", + "setClip", + "_accessibilityTreatSegmentedControlAsToolbarButtons:", + "setThread:withObject:withSessionUID:", + "_responsibleDelegateForSelector:", + "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:", + "_setPlaceholderAttributedString:", + "resourceImageNamed:", + "_sizePopUp", + "_selectAnyValidResponderOverride", + "_postColumnConfigurationDidChangeNotification", + "initWithFormat:baseAddress:releaseCallback:releaseInfo:bytesPerRow:pixelsWide:pixelsHigh:flipped:colorSpace:options:", + "_focusedCrayon", + "_updateLayerGeometryFromView", + "initWithURL:options:", + "ensureQueue", + "_drawFromRect:toRect:operation:alpha:compositing:flipped:ignoreContext:", + "_wantsHeartBeat", + "initWithTexture:size:flipped:colorSpace:", + "range", + "_shouldShowFirstResponderForCell:", + NULL, + "_setGraphEditor:", + "_isLocatedByURL:withCache:", + "_doUserSetListMarkerFormat:options:", + "_moveObjectsInContainer:toContainer:withKey:atIndex:replace:", + "convertRect:toLayer:", + "maxItemSize", + "setSelectedGroupsFromModel:", + "_drawMappingAlignmentRectToRect:withState:backgroundStyle:operation:fraction:flip:", + "setPrecision:", + "__oldnf_replaceLastAppearanceOfString:withString:", + "_indicatorImageForCellHeight:", + "getBytes:", + "itemSupportedByiPhoto", + "_colorPickers", + "alloc_10_4", + "_clearGLContext", + "phoneFormatsDictionary", + "nibBundle", + "_initContentView", + "_shouldMinimizeWindowForEvent:", + NULL, + "items", + "setCacheDBIndex:", + NULL, + "_imageByRenderingInRect:format:callback:data:options:", + "accessibilityIsVisibleColumnsAttributeSettable", + "performActionForPerson:identifier:", + "setDiskCapacity:", + "_internalTypeSelectStringForIndex:", + "allowsColumnReordering", + "willPopRenderState:", + "isDataRetained", + NULL, + "shouldIncludeMember:", + "initWithName:URI:", + "initWithFormat:locale:arguments:", + "updateView", + "_sharedData", + "oldCustomRect", + "setIsFileListOrderedCaseSensitive:", + "initWithExpressionType:operand:selector:argumentArray:", + "classForCoder", + "drawInRect:fromRect:alpha:", + "_updatePredicate", + "resolvedKeyDictionary", + "_enableMatrixLiveResizeImageCacheing", + "_initServicesMenu:", + "_defaultUserActionForEvent:", + "_builtInLocalizedDescription", + "_threadedGenieFXWithImage:fromScreenRect:toScreenRect:withAlpha:", + "distributionStringsForMembers", + "extraArgument2", + "_setNeedsDisplayForColumn:draggedDelta:", + "saveLanguagesToDefaults", + "bindThumbnailWithSize:fromMipmap:withUID:toLocation:", + "IKCreateCGImage", + "reportStreamError", + "_endLiveResizeForAllDrawers", + "selectorForCommand:", + "_loadContentData", + NULL, + "PDFViewUserOpenGutterToWidth:", + "_groupCellAttributedStringForString:withDefaultAttributes:highlighted:", + "accessibilityLineForIndexAttributeForParameter:", + "_restoreModalWindowLevel", + "calculateFigure:size:", + NULL, + "element", + "abShowWindowDragProxie", + "_addOptionValue:toArray:withKey:type:", + "setError:", + NULL, + "_setToolbarViewWindow:", + "_selectRectRange::", + NULL, + "nts_AlternateName", + "_itemAtViewIndex:", + NULL, + "willHide", + "setDebugMode:", + "_setSelectedMember:withHistory:", + "preloadPDFXOptions", + "_validateBundleSecurity", + "accessibilityIsMinValueAttributeSettable", + "filesystemItemCopyOperationWithSourcePath:destinationPath:", + "hasEffects", + "rulerView:userClickedOnMarker:", + "copyRequestWithSession:sourceURI:destinationURI:token:", + "pageClass", + "clearDirectoryResultsSelection", + "initWithAddress:port:", + "setHostName:", + "_invalidateRunLoopTimer", + "_computeTargetItemViewFrameRects", + "widthAdjustLimit", + "indicatorImageInTableColumn:", + "arrayByExcludingToObjectsInArray:", + "_cfTrimWS", + "_constructTreesForTemplates:", + "imageRepsWithContentsOfURL:", + "item", + "_GC_queueForDealloc:", + "showImportDecisionPanelForDelegate:count:duplicatesCount:hasErrors:", + "exceptionWithName:reason:userInfo:", + "_drawThemeTab:withState:inRect:", + "_templateControlValueDidChange:", + "sendActionOn:", + "selectedCell", + "isMuted", + "otherMouseUpDelegate:", + "readBinaryStoreFromData:originalPath:error:", + "_isDoingHide", + "resetSelectionIndexes", + "currentDirectoryNode", + "_readColorsFromLibrary", + "_internalXMLStringWithOptions:appendingToString:", + "lightGrayDeviceColor", + "setBestVirtualScreenForRenderingSize:", + "_QNamesAreResolved", + "writableTypesForSaveOperation:", + "localizedFormattedDisplayLabels", + "_delayedDeactiveWindowlessWell:", + "helpMenuClosed", + "createIndexesForEntity:", + "firstIndentMarkerWithRulerView:location:", + "defaultLockDuration", + "_verticalOriginForRow:", + "outlineView:shouldExpandItem:", + NULL, + "actionForKey:", + "_cacheRow:rect:", + "matcher:foundService:", + "generatePrimaryKeysForEntity:batch:", + "newToolbarButton", + "_noise2d:y:", + "securityLockIcon", + "isGridBased", + "objectFrom:withIndex:", + NULL, + "setRowHeight:", + "willChangeValue", + "initWithAEDescNoCopy:", + "accessibilitySelectedRowsAttribute", + "_typeSelectInterpretKeyEvent:", + "defaultStringValue", + "doubleClickAtIndex:", + "invalidateTextSelection", + "separatorColor", + "panelSelectionDidChange:", + "_drawColumnHeaderWithIndexes:", + "_calcAndSetFilenameTitle", + "_printWithInfo:showingPrintPanel:", + NULL, + "initializeGrabberIfNeeded", + "initWithFormat:shareContext:", + "selectedRecord", + "setValue:forProperty:", + NULL, + "_publicAttributesWithIdentifier:", + "vectorWithValues:count:", + "setResultType:", + "mipmapCache", + "scrollToPoint:", + "setPlaceholderAttributedString:", + "_isNegation", + "_firstPageNumber", + "_dimpleDragStarted:event:", + "timeIntervalSinceDate:", + "_growBoxRect", + NULL, + "parseEMAIL", + "_changeTexture", + "importLock", + "initWithView:layoutManager:characterIndex:attachmentCell:", + "generateAccessibilityTable", + "tokenFieldCell:hasMenuForRepresentedObject:", + "getRow:column:ofCell:", + "setRelatedIDs:forKey:options:andTimestamp:", + "setAllowsFloats:", + "connectionClass", + "_drawDropHighlight", + "initWithSavedQueryData:title:", + NULL, + NULL, + "addToFavoritesAtIndex:", + "_informParentStore:ofInterestInObjects:", + "port", + "initWithData:documentClass:options:error:", + "filters", + NULL, + "cacheRetain:", + "_createMenuSeparatorItem", + "nextQuotedPrintableData", + NULL, + "sizeWithBehavior:usesFontLeading:baselineDelta:", + "orderForConsumerSubpatch:", + "autofill", + "copyCGLPixelFormatForDisplayMask:", + "keyEquivalentOffset", + "animationDidStop:", + "cancelAllOperations", + "secureTextViewForWindow:", + "replaceInView:", + "_setAppleMenuEnabled:", + "scrollRectToVisible:fromView:", + NULL, + "selectedCompositionIndex", + NULL, + NULL, + "createFileAtPath:contents:attributes:", + "performClickOnCell:", + "mergedModelFromBundles:", + "blurVerticalPass9ROI:destRect:", + "modifyOptionsViaPanel:", + "allObjects", + "_buttonHeight", + "_web_intForKey:", + "stopObservingModelObjectAtReferenceIndex:", + "shouldProceedAfterError:linkingItemAtPath:toPath:", + "initWithSourceModel:destinationModel:", + "_typesFilterableToType:", + "findFontLike:forCharacter:inLanguage:", + "_cycleUtilityWindowsReversed:", + "_setEmailProtectionUsage:", + "getFileSystemRepresentation:maxLength:", + "numberOfThreadsAlive", + "customProperties", + "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:", + "_isUnprocessedUpdate", + "movieControllerView", + "replaceObjectsInRange:withObjects:count:", + "_removePropertyForKey:", + "_attributesFromArchive:", + "isInputRampParams", + "_shouldShowRegularToolTipOnExpansionToolTip", + "parseError:", + "setFloatingPanel:", + "_panelSizeExcludingToolbar", + "_values", + NULL, + "removeNamespaceForPrefix:", + NULL, + "sampleTextForTriplet:", + "accumulate::minRadius:factor:", + "popOperation:", + "_uninstallTrackingAreas", + "initMultiStatusRequestWithURL:method:", + NULL, + "_resetAllChanges", + "_portsUpdated", + NULL, + "_scrollRangeToVisible:forceCenter:", + "drop:", + "_rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:", + "_setPatch:", + "transformForOrientationAndDPI", + "_pagesCountforCompositionsCount:", + "setMarkerFormatInWindow:textList:delegate:", + NULL, + "_imageForMenu", + "_addDrawerWithView:", + "_adjustedFrameFromFrame:value:currentScaleFrame:", + "encodeObject:isBycopy:isByref:", + NULL, + "initWithKeyFrameList:", + "_insertHoleInRanks:", + "reallyDealloc", + "comparisonForProperty:", + "_ivars", + "hasInheritance", + "newCreateTableStatementForEntity:", + "_accessibilityTableRow:", + "_limitedViewWantsRedisplayForItem:inRect:", + "fontMenu:", + "itemData", + "crayons", + "_controlAppearanceChangesOnKeyStateChange", + "textView:draggedCell:inRect:event:atIndex:", + "setupAudio", + "selectedGroupsInMembersColumn", + "popNibPath", + "_giveUpFirstResponder:", + "preferredLanguage", + NULL, + "multipleThreadsEnabled", + "_pageFormatForGetting", + "setCustomProperty:", + NULL, + "idlingEnabled", + "setThumbnailLimit:", + "initWithString:attributes:layoutSize:options:", + "coerceData:toColor:", + NULL, + "requestFileSizeCalculation", + "connection:didFailWithError:", + "yankAndSelect:", + "_formattedAddressFromDictionary:includeName:includeCompany:order:", + "write:toURL:securely:andReturnResultCode:", + "_regionsArray", + "mutableArrayValueForBinding:resolveMarkersToPlaceholders:", + "_cycleDrawers:", + NULL, + "updateCard:withImportedCard:", + NULL, + "_handleChildChanged:", + "bundleLanguages", + "supportedBufferPixelFormats", + "availableFonts", + "_searchMenuTracking", + NULL, + "groupIdentifier", + "didSendActionNotification:", + "makeBig", + "_restrictColumnResizingToWidth", + "handlePreviewTextChange", + "regularFileContents", + "debugMode", + "_maximumSizeForSearchFieldToolbarItem", + "objectValueForDisplayValue:", + "scrollPageDown:", + "_diskCacheCreateDirectory", + "_openFile:withApplication:asService:andWait:andDeactivate:", + "windowID", + NULL, + "valueOfAttribute:forResultAtIndex:", + "slideshowDidChangeCurrentIndex:", + "_inactiveStateShowsRolloversForSegment:", + "_applyTargetConfigurationWithoutAnimation:", + "download:didCreateDestination:", + "countOfCachedChildrenForNode:createIfNeeded:", + "hasMenuForTokenAttachment:", + "fileManager:shouldRemoveItemAtPath:", + "backgroundStyle", + "_saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", + "initWithData:URL:MIMEType:textEncodingName:frameName:", + "_finishedTableViewInitWithCoder", + "filteredSetUsingPredicate:", + "_specifiesCollection", + "destinationEntityForEntityMapping:", + "setMask:", + "setFocusRingType:", + "orderFrontStylesPanelInWindow:textView:", + "_imageForDivider:keyWindow:", + "_subclassDescriptionsForDescription:", + NULL, + "setAllowLoadingOfUnsupportedPreviewTypes:", + "defaultNeutralTint", + "_setDisableLiveResizeImageCaching:", + NULL, + "_addTrackingRects", + "_selectionIndexesCount", + "_isFileClosed", + "usesEPSOnResolutionMismatch", + "_storeRootDirectory", + "_toolbarButtonIsClickable", + "initWithUser:", + "_valueForOptionalCocoaAttributeKey:fromElement:", + "performInvocation:waitUntilDone:", + NULL, + "compileStatusForSourceOfType:", + "setRegistryString:", + "emapROI:forRect:", + "_bodyBackgroundColor", + "_adjustObject:mode:triggerRedisplay:", + "_drawTitlebar:", + "tokenTextView:shouldUseReadablePasteboardTypes:", + "setSingleTableEntity:", + "initWithCIFilterShape:", + NULL, + "_notifyView_InsertedNewItem:atIndex:", + "_addActionFrom:toDictionary:forCarbonMenu:base:", + "productionApertureExceedsMaximumTexture", + "predicateForFetchRequestInContext:", + "addedPeople", + NULL, + NULL, + "stopMetaDataControllerAndWait", + "_updateLocalizedDictionaryForNewLocalizedKeyTable", + "setControlsFixed:forKeyFrame:", + "pushInvocation:", + "writeOutInfo", + NULL, + "setIncludesPropertyValues:", + "isKindOfEntity:", + "horizPass9ROI:destRect:", + "nts_ShouldLaunchABDForListening", + "defaultKnob", + "doShowResource:", + "_menuMinimumWidthForEvent:inCellFrame:ofView:", + "isValidColorSpace:", + "requiresDirectKeyValueCodingCall", + "previewPanel:didChangeDisplayStateForURL:", + "setPrimitiveModificationDate:", + "selectionAffinity", + "_unregisterUniqueContext:", + NULL, + "mark", + "setCollapsesBorders:", + "_wantToBeModal", + "highlightRecovery:pattern:clipLevels:redPhase:greenPhase:bluePhase:redBlueSwap:image:", + "_stopUsingDevice", + "chooseRollOverIdentifier:withSelection:", + "enableMakeHistory", + "initWithBinder:object:", + "processDocument:", + "_separatorFinishInit", + "getInputRampParams", + "_fadeFindIndicator:", + "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:", + "setShouldBeVisibleOnlyOnCurrentSpace:", + "_validateOpacitySlider", + "_computeNominalDisplayedLabelSize", + NULL, + "redoActionName", + "_doResetOfCursorRects:revealovers:", + "portWithMachPort:options:", + "setAccessoryControllers:", + NULL, + "prepareMatches:", + NULL, + "autoPlayNextItem:", + "exifOrientation", + "standardizedPath", + "applicationWillTerminate:", + "_adjustEditedCellLocation", + NULL, + "_isURLString:", + "attributeForLocalName:URI:", + "_setApplicationIconImage:setDockImage:", + "calcDrawInfo:", + "_readAcceptCookiesPreference", + "saveResolutionData:into:", + "_contextMenuEvent", + "setCenter:", + "previewView:receivedDrop:forURL:", + "abEllipsizeWithFont:withWidth:", + "baseOptions", + "accessInstanceVariablesDirectly", + "_setHighlighted:displayNow:", + "ivarOutputPorts", + "draggingDestinationWindow", + "AddressKeys", + "W", + "_hasTabs", + "minimunWindowWidth:", + "href", + "execLoading", + NULL, + "_oneWordName", + "_handleFrameChangeForSubview:", + "_noteLengthAndSelectedRange:", + "mainWindowController", + "additionalDuration", + "valueAtIndex:inPropertyWithKey:", + "_characterCoverage", + "_compositionInfo", + "closeInspector:", + "removeRunLoop:", + "stopTimer", + "sizeToCells", + "enumeratorOfInputRampParams", + "getDocument:docInfo:", + "animationChannelEnabled:", + "destinationEntityExternalName", + NULL, + "_setWasReshapingEnabled:", + "_setup", + "_scriptingPointWithDescriptor:", + "valueForBinding:atIndex:resolveMarkersToPlaceholders:", + "_verifySelectionIsOK", + "setValue:inObject:", + "_registerForDragTypes", + "autosavesConfiguration", + "createNewMaskedImage:", + "makeKeyWindow", + "initializeRecipe:", + "usesVisualContext", + "_isSynchronous", + "isRendering", + "_debugDrawRowNumberForRow:clipRect:", + "_removeCurrentColor", + "_scrollColumnToVisible:private:", + "_decipherOnlyUsage", + "_validateLinkTargetCarbonCatalogInfo", + "insertionIndexForGroup:", + "code", + "initWithContentKind:occurrence:", + NULL, + "_setCurrentPreview:documentPreview:displayedView:canDelayDisplay:transition:", + "numberOfRows", + "setCurrentIndex:", + "_hasActiveAppearanceIgnoringKeyFocus", + NULL, + "_rulerAccViewCenterTabWell", + "_writeRTFInRange:toPasteboard:", + "setUseOriginalLayerToDraw:", + "blackColor", + "newFaultingPredicateForSourceID:andRelationship:", + "convertFont:toFamily:", + "_detatchNextAndPreviousForView:", + "matchesOnMultipleResolution", + NULL, + "removeEntriedOlderThanSessionID:", + "initWithContentRect:contentImage:forView:selfDestruct:", + "sidebarController", + "tabDelimitedTextData", + "encodeSize:forKey:", + "showsStateColumn", + "heightFieldImage:withBlur:usingDistortion:andInitialConditions:", + "evaluateString:", + "setTrack:", + "entity", + "_modifySelectedObjects:useExistingIndexesAsStartingPoint:avoidsEmptySelection:addOrRemove:sendObserverNotifications:forceUpdate:", + "initWithTitle:action:keyEquivalent:representedNavNode:", + "abortAllToolTips", + "_backingColorSettingPhase:", + "takeObjectValueFrom:", + "_installCarbonAppDockHandlers", + "updateSyncIndicatorsReloadItems:", + "_setInitialNameFieldContentsFromPosixName:", + "allowedTypes", + "displayID", + "appleEventCodeForReturnType", + "changeValue:forKey:", + "_drawDropHighlightOutlineForRow:", + "leadingOffset", + "dataWithCapacity:", + "_addInsertsToDatabaseOp:forManyToMany:", + "didChangeValueForKey:", + "mipmapDBIndex", + "_getRow:column:forPoint:", + "show:", + NULL, + "qfilter", + "addPageToSelectedPages:drawNow:", + "colorWithRGBA:", + NULL, + "addressEntityWithValue:", + "keysForLocalizedString:", + "validateRename", + "_undoInsertions:", + "setAuthorization:", + "_adjustLength", + "requestType", + "clearVarietyCharSets", + "recentPicturePopup:willPopupRecentItems:", + "buildRepresentationFromSearchElement:builder:order:", + "pageAtIndex:", + "diffuseROI:destRect:", + "setColor:", + "URLProtocol:didReceiveAuthenticationChallenge:", + NULL, + "_mergeRegionInvalidatedDuringDisplayIntoDirtyRegion", + "_printSettingsWasEdited", + "controlTextDidChange:", + "_processDeletedObjects:", + "nameSorting", + "createImageForVNodeAtPath:maximumSize:", + "_moveUp:", + "contentObjectWithEditedMode:contentIndex:", + "firstStringValueOfProperty:", + "resultsTable", + "_setForceFixAttributes:", + "__createConnectionFrom:to:forKey:withUserInfo:", + "_drawHighlightWithFrame:inView:", + "perform:with:", + NULL, + "_updateForLiveResizeWithOldSize:", + "addCertificate:to:forUser:domain:settings:", + "dataPtr", + "_isCString", + "_setCredentials:", + "endAngle", + "delete", + "didMatchString:", + "resizeLeftCursor", + "setGroups:", + "_setEntity:", + "_errorOffendingObjectDescriptor", + "beginTransaction:", + "accessibilitySetSelectedTextAttribute:", + "_trackingAreasDirty", + NULL, + "nts_Cleanup", + "zoomOutY", + "addressBookMetaDataDirectory", + "_makeNextCellOrViewKey", + "_setUsesLightBottomGradient:", + "_valueInMultiValue:", + "_invalidateForKeyChange", + NULL, + "setIKView:", + "_undoableSetGizmoPositionWithDisplay:", + "_clearDragMargins", + "_drawView:", + "cellIndexAtPoint:", + "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:", + NULL, + "_request", + "_stopObservingRowObjectsRecursively:", + "textView:menu:forEvent:atIndex:", + "setMinCount:", + "scalesWhenResized", + "propertyForKey:", + "addRows:", + NULL, + NULL, + "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:", + NULL, + "topChangeCommand", + "_constructTitleMappingDictionariesFromOptionDictionaries:localizationItemIndex:", + "_setWin32MouseActivationInProgress:", + "willStopRenderingPatch:", + "unsignedShortValue", + "_compareWidthWithSuperview", + NULL, + "_ensureDatabaseMatchesModel", + "_setBrowserOptimizationsEnabled:", + "_compositeFlipped:inRect:fromRect:operation:fraction:", + "pointSizeFromAppearanceTokens:", + "tableView:defaultSubRowForRow:", + "setAnnotation:ofType:", + "encodeValueOfObjCType:at:", + "_windowTitlebarTitleMinHeight:", + "_refreshServerList", + "popUpWithEvent:inView:", + "ensureLayoutForBoundingRect:inTextContainer:", + "_drawSortIndicatorIfNecessaryWithFrame:inView:", + "_valueForBindingWithResolve:mode:", + "socketType", + "setIsSynchronous:", + "moveSelectionRight", + "appleEventCodeForKey:", + "_cancelActionIfCmdDot:", + "windowTitlebarLinesSpacingWidth:", + "processString:", + NULL, + "initWithInvocation:", + NULL, + NULL, + "setPreservesContentDuringLiveResize:", + "setSaveButtonAction:target:", + "_rebuildOrUpdateServicesMenu:", + "windowWillUseStandardFrame:defaultFrame:", + "_makeBranchTableForKeys:count:", + "reflection", + "handleTakePictureAbortedNotification:", + "setSuperviewBeingDeallocated:", + "_endedLoadingPreview:documentPreviewView:result:", + "tokenFieldCell:shouldUseDraggingPasteboardTypes:", + "_setWantsHideOnDeactivate:", + "_mutableIndexSetInAppliedGridForRect:", + "initWithEngine:indexHandler:", + NULL, + "readFromURL:ofType:", + "_concludeDefaultKeyLoopComputation", + NULL, + "_betweenDropGapSize", + "cardScrollView", + "_shadowType", + "tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:", + "_confirmSize:force:", + "documentChangedIfDragSelectedPagesToIndex:", + "unsignedLongLongValue", + NULL, + "_setNeedsToRemoveFieldEditor:", + "_recursiveAllValues", + "setWraps:", + "_setView:", + "backupDatabaseToPath:", + "controller:didChangeToSelectionIndexPaths:", + "_setAlwaysDrawsActive:", + "drawInRect:angle:", + "parseBody:", + "setDraggingDestinationDelegate:", + "insertChild:atIndex:", + "setLoaded:", + "setWhite:", + "_organizationUnit", + "_javascriptFromKernel:", + "currentButtonCell", + "rangeOfUnit:inUnit:forDate:", + "initFromPreferencesWithApplicationID:", + "setObject:atIndex:forDatabaseKey:", + NULL, + NULL, + "foregroundColor", + "IKIPJPEGDataWithMaxSize:compression:", + "_modelsReferenceID", + "endPoint", + "int32Value", + "parameterString", + "executeSaveChangesRequest:withContext:", + "numberWithUnsignedInteger:", + NULL, + "_resumeLayerTreeRenderer", + "SQLGenerationV1Default", + "_drawMenuIndicatorForSegment:withRect:inView:", + "_setup:state:", + "_rowHeaderSeparatorLineColor", + "scrollRowToVisible:", + "logicalSize", + "setupImportPanelWithTitle:selector:target:object:", + "isExecuting", + "getCount", + "rawIntegerRowsForSQL:", + "getNthInputImagePort:", + "pixelDepth", + "_displayWidth", + "membersController", + "_handleSelfTestEvent:", + "_didPresentModalAlert:contextInfo:", + NULL, + "_doAttachDrawerIgnoreHidden:", + "_setPreviousKeyWindow:", + "substituteFontForFont:", + "nextPersonWithLength:addressBook:", + "seed", + "_nonPredicateValidateValue:forKey:inObject:error:", + "_descriptionWithTabCount:", + "_computedAttributesForElement:", + "setOrigin:rotation:scale:", + "unregisterMovieNotifications", + "_linkDragCursor", + "_installPBuffer", + "initWithEvent:inView:", + "splitCell:range:", + NULL, + "initWithType:location:", + "allImportableFilesFromPaths:", + "_searchInDictionary:", + "poseAs:", + NULL, + "handleUserGoUpDirectory", + "setButtonID:", + "parseOid:", + "imagePickerValidated:code:contextInfo:", + "itemBoundsInScreenCoordinatesForItem:itemIndex:", + "maxTimeLoaded", + "bindMipmapItem:withUID:", + "_combobox_windowDidBecomeKey:", + "setSerialNumber:", + "processCells:withBrowser:", + "groupsController:outlineView:child:ofItem:", + "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", + NULL, + "initWithExpressionType:", + "arrayByAddingObjectsFromArray:", + "imageWithCGImage:options:", + "pdfDocument", + "eMapResult:eMap:type:", + "_scriptTerminologyName", + "colorAtIndex:filtered:", + NULL, + "_postDidChange", + "openOnEdge:", + "constrainResizeEdge:withDelta:elapsedTime:", + "getRGBColorValue", + "setLineDash:count:phase:", + NULL, + "_setWasCGOrderingEnabled:", + "setAllowsCutCopyPaste:", + "imageByApplyingEffects:", + "context", + "_setTextShadow:", + "_performMutatorOperation:object:index:", + "effectDescriptionWithDictionary:", + "recentSearches", + "authenticateComponents:withData:", + "_RTFDFileWrapper", + "showFlare", + "setMenuRepresentation:", + "removeObjectsForKeys:", + "textureTarget", + "accessibilitySetSelectedColumnsAttribute:", + "_autoLockStepper", + "_setKnobThickness:usingInsetRect:", + "lockRequestWithSession:URI:duration:", + "_contextMenuTarget", + "setCacheSize:", + "setDefaultPreferencesClass:", + "_setAllPossibleLabelsToFit:", + "setDeltas:", + "vrTrack", + "recursiveSetImpliedPropertiesForAnimation:object:keyPath:targetValue:", + "initWithCGLContext:pixelFormat:colorSpace:composition:", + "iconAsAttributedString", + NULL, + "_setNeedsToolTipRecalc:", + "setSelectedRecords:", + "setStyleMask:", + "fireDate", + NULL, + NULL, + "_shouldValidateMenuFormRepresentation", + "_autosaveForTimer:", + NULL, + "updateImageView", + "_viewGlobalFrameDidChange:", + "_invalidateOrComputeNewCursorRectsIfNecessary", + "foreignKeyConstraintDefinitions", + "setShowsAlpha:", + "characterRangeForGlyphRange:actualGlyphRange:", + "_startTableRowDefinition", + "stringWithCString:encoding:", + "initWithNotificationCenter:", + "setBrowser:", + NULL, + "_redisplayCellForNode:", + "favoriteAttributesForName:", + "_viewDidDrawInLayer:inContext:", + "_updateIndicators", + NULL, + "nts_LaunchABDIfNeeded", + "setImagingModeAllowsGWorld:", + "generateMetadataDescription", + "sharedTextRulerOptions", + "updateMultiValue:forProperty:changes:", + "_valueAsFilePath", + "_appInactive:", + "_descriptorByTranslatingString:ofType:inSuite:", + NULL, + "frameCenterRotation", + "addMigratedStoreToCoordinator:withType:configuration:URL:options:error:", + "usesUnnamedArguments", + "setPosition:ofDividerAtIndex:", + "_caConfigFileExtension", + "_vCard21RepresentationOfRecords:", + "_loadMenuItemIconsIfNecessary", + "dataReferenceWithReferenceToURL:", + "initWithFileAttributes:", + NULL, + "setApertureMode:", + "handleFailureInMethod:object:file:lineNumber:description:", + "propertyCache", + "_mouse:force:", + "isLocationRequiredToCreateForKey:", + "deleteConnection:", + "_rowHeaderShadowSurface", + "_fontFromDescriptor:", + "_setDiskHost:port:scheme:", + "setHorizontallyResizable:", + "postExternalChangeDEMNotificationForEngineType:onDisplayID:", + "initWithDuration:animationCurve:", + "descriptorWithDescriptorType:bytes:length:", + "setKeyEquivalent:", + "unlockFocus", + "setData:dataSourceIndex:subIndex:", + "drawInRect:onView:pinToTop:", + "_windowMovedToRect:", + "disableDisplayPositing", + "_propertyChanged:", + "editingHasEnded:", + "_setPageOrderFromPrintInfo", + "setAutomaticallyMinimizeRowMargin:", + "queryNode", + "legendVisible", + "_countForKeyPath:", + "objectByApplyingXSLTString:arguments:error:", + "showGuessPanel:", + "originalImagePathForRecent:", + "_scriptingObjectAtIndex:inValueForKey:", + "supportedPixelBufferFormatsForFormat:", + "databaseChangedForUserInfo:groupsChanged:peopleChanged:", + "mouseMoved:", + "appendClause:forKeyPath:allowToMany:", + "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:", + "_middleViewFrameChanged:", + "willCurrentItemBeExportedToiPhoto", + "_booleanValueForAttributeKey:fromElement:", + "browser:writeRowsWithIndexes:inColumn:toPasteboard:", + "fileExtensionHidden", + NULL, + "setAutoBackupEnabled:", + "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:", + "setMaxViewFrameSize:", + "closeAllDocuments", + "shouldAntiAlias", + "scaleSegment:newDuration:", + "dataWithContentsOfURL:error:", + "compareObject:toObject:", + NULL, + "_hitTestForEvent:atColumn:row:", + "createBoxDictionary", + "parseTEL", + "_limitedViewMenuItemWantsRedisplay:inRect:", + "loadImageWithName:", + "collapseGroup:", + "setupWindowNotifications:", + NULL, + "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:", + "_releaseEffect", + "previewView", + "_setEntityTag:", + "accessibilityOverriddenAttributes", + "performSublayout", + "zeroSymbol", + "_setAutoPositionMask:", + "hasUnsavedChanges", + "openGLUnlock", + "_updateNameFieldContentsFromHideExtensionButtonState", + "finishAddingGroupDictionaryRepresentations:recordsByUniqueId:", + "_fieldEditorUndoManager", + "_nextNonHiddenColumnFromColumn:", + "subEffectWithID:", + "controlTextDidEndEditing:", + "setAutosaveName:", + "persistentStoreCoordinator", + "clearsBackground", + "initWithAppleEventCode:alernativeTypeDescriptions:", + NULL, + "Z", + "_deallocateGState", + "setOrientation:", + NULL, + "isCopyingOperation", + NULL, + "replaceGlyphAtIndex:withGlyph:", + "_sendSelectionChangedNotification", + "textEditor", + "sourceOfType:", + "_userCanSelectIndex:", + NULL, + "setAlwaysUsesMultipleValuesMarker:", + NULL, + "loadColorLists", + "slideshowWillStart", + "countOfInputWhiteParams", + "initWithContextAttributes:", + "_scriptingCanAddObjectsToValueForKey:", + "recordSnapshot:forObjectID:", + "suspendRendering", + "startNicestRendering", + "stateKeysWithIdentifier:", + NULL, + NULL, + "setPublicRecord:", + "getProposedHUDFrame", + "_registrationDictionaryForUnitNamed:", + "_setStatesImmediatelyInObject:mode:triggerRedisplay:", + "currentConversation", + "setCountKeyPath:", + "isCustomProperty:returnType:customProperty:addressBook:", + "indexPathForOutlineView:row:", + "_affectedExpandedNodes:", + "stepKey:elements:number:state:", + "nts_ImportMailRecentsFromMetaKitIfNeededIntoContext:", + "setEchosBullets:", + "_hasActiveRequest", + "queryStringChangedForSearchController:", + "sharedPrintInfo", + "_stopAutoExpandingItemFlash", + "_portFromSelector:", + "CGX_initWithTexture:size:flipped:isDest:", + "_stepperCellValueChanged:", + "_web_looksLikeAbsoluteURL", + "_updateRefreshTimer", + "adjustedWindowFrameForOpening:", + "graphicsContextWithAttributes:", + "_processEndOfEventNotification:", + "blueColor", + "_parseDocumentAttributes2", + NULL, + "showsInvisibleCharacters", + "_characterIndexForMoveBackwardFromSelectedRanges:", + "initComponent", + "_accessibilityToolbarItemLabelAtIndex:", + "_drawBezelBorder:inRect:", + NULL, + "setServicesMenu:", + "initWithIndexesInRange:", + "IKEditPanelLocalizedString:", + "controlAlternatingRowColor", + "setFileType:", + "initWithDOMRange:", + "updateAndOrUI", + "setActions:", + "_compiledScriptID", + "urlPathRelativeToPath:", + "_supportedPixelFormatsForContext:compatibility:", + "mergeMultiValue:forProperty:", + "replyToApplicationShouldTerminate:", + "_specifiesSetting", + "_shouldAutoscrollForDraggingInfo:", + "setBinaryAttributes:", + NULL, + "_hasBackgroundColor", + "initWithContentsOfURL:", + "_emptyRulePartSubviews", + "endDrawingInView:", + NULL, + "resetDisplayedMemberSubrows", + "cacheResolutionInfoForResolution:createIfNeeded:", + "_highlightSelectedItem:", + "_swapToolbarItemViewerPreviousToView:", + NULL, + "_removeTabViewItems:", + "isToManyCountKeyPath:", + "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:", + "imageRepWithCIImage:", + "_codeSigningUsage", + "parseVERSION", + "_drawToolbarTransitionIfNecessary", + "_setCSR:", + "setIsDraggingOver:", + "animatedCellsArrayCache:", + "stringWithContentsOfFile:usedEncoding:error:", + "_attrStatusString:status:", + "presentableName", + "_loadScriptSuites", + "initWithName:color:image:", + NULL, + "timebase", + "initWithPage:atPoint:", + "contextWithCGLSContext:pixelFormat:options:", + "setWindowsNeedUpdate:", + "sharedBuddyStatus", + "initWithKeychainItem:", + "initWithCGImage:", + "setSubject:", + "_editNode:", + "_drawGrid:", + NULL, + "shouldAlwaysUpdateDisplayValue", + "nts_PopulateWithDictionary:withRecordMapping:generateIds:includeCoreProperties:addressBook:", + NULL, + "_didDeleteFile", + "_flattenMenu:", + "_setLayerBackedOpenGLContext:", + "requiresProxyAuthCredentials", + "nicestImageForSize:forGLRendering:cacheIt:", + "setFirstWeekday:", + "minimalFormInContext:ofPredicate:", + NULL, + "interruptExecution", + "addConflictingRecord:", + "_sendDirectoryDidChange", + "sendReleasedProxies", + "_liveResizeCachedImage", + "structureValue", + "isAbsolutePath", + "resetRecordsWithUniqueIds:", + "_deactivate", + NULL, + "superclass", + "xmlNode", + "samplerWithImage:options:", + "_startLiveResize", + "alignOnPixelValue", + "_scriptingIndexOfObjectForSpecifier:", + "sharedSystemTypesetterForBehavior:", + "_recalcRectsForCell:", + "groupIndexForGridIndex:", + "sharedColorPanelExists", + "handleNotification:", + "setPageScroll:", + "_doPath", + "_setShowPlayButton:showPageButtons:", + "regularImageForState:", + "toggleTraditionalCharacterShape:", + "threadedExecScript:", + "attachedViewFrameDidChange:", + "_focusRingFrameForFrame:cellFrame:", + "_briefDescription", + "parentGroupsIncludingSubscriptions", + "initWithIndexSet:", + NULL, + "_inputController", + "scaleBy:", + "isThreadRunning", + "createCGColor", + NULL, + "cacheRect:", + "_SMPTETime", + "getArgumentTypeAtIndex:", + "positionOfGlyph:struckOverGlyph:metricsExist:", + "_tempHideHODWindow", + "initWithImageManager:openGLContext:options:", + NULL, + "_displayID", + "principal", + "_getRowRange:columnRange:inRect:", + "fixParagraphStyleAttributeInRange:", + "_outlineIsOn", + "_sendActionAndNotification", + "download:willResumeWithResponse:fromByte:", + "characterSetWithContentsOfFile:", + "releaseCGLPixelFormat:", + "_leftmostViewFixedHorizontalPadding", + "allowEditing", + "resourceForData:preferredFilename:", + "autoresizingMask", + "frameOfDocumentAtIndex:", + "_invertCurrentEffect", + "xAtColumn:", + "_updateFirstItemIfNecessary", + "cellClass", + "doCommandBySelector:", + "_closedHandCursor", + "multiStatusRequestWithURL:method:", + "initTitleButton:", + "isStateKey:", + NULL, + "initializeCell:", + "dataWithContentsOfURL:options:error:", + "_draggingUpdatedForFilenameDrop:inProposedItem:", + "contextWithBitmap:rowBytes:bounds:format:options:", + "loadItemAtIndexWithTransition:", + "nts_GroupsAtRemoteLocation:withAddressBook:", + "previewPanel:frameForURL:", + "downloadDidFinish:", + "setIsInInterfaceBuilderSimulator:", + "safeURLFromString:", + "dragImageForSelectionWithEvent:origin:", + NULL, + NULL, + "_moveParent:andOpenSheet:", + "_rightMouseDownOnSlice:withEvent:", + "_worksWhenModalOrChildOfModalWindow", + "_makeCellForMenuItemAtIndex:", + "noteFileSystemChanged", + "firstComponent:", + "outlookWebAccessPathFromUserString:withUserName:", + "colorAtX:y:", + "setSelectedFont:isMultiple:", + "result", + "initWithPasteboard:error:", + "releaseDisplayList", + NULL, + "redBayerReconstructionProcessedROI:destRect:", + "_updateUnprocessedOwnDestinations:", + "_changeSortDescriptorsForClickOnColumn:", + "_setVersionNumber:", + "moveWordRight:", + "knobProportion", + "_propagateBackgroundStyle", + "tooltipStringForPoint:tooltipBounds:", + NULL, + "defaultNamespaceForURI:", + "indexLabelAtIndex:", + "attributesAtIndex:effectiveRange:inRange:", + "_setLengthOfStatusItem:to:", + "object:withObservance:willChangeValueForKeyOrKeys:forwardingValues:", + "initWithNSImage:", + "beginParagraph", + "updateDragProgress", + "_surfaceBackedOpenGLContext", + "CA_stringByDeletingLastPathComponent:", + "keyForPort:", + "setPrefersColorMatch:", + "selectedImageForControlTint:", + "_enableItems", + "_releaseCapture:", + "__frameChanged:", + "pairWithKey:value:", + "_delegateRespondsToShouldShowCellExpansion", + "_isInCustomizationMode", + "_commonAwake", + "_ipAddress", + NULL, + "_writeRTFInRanges:toPasteboard:", + "setPackage:", + "autoconfigureFromProtocol:", + "_documentIndexWithDelta:", + NULL, + "sobelEdgesROI:destRect:", + "nonSelectedTabTextColor", + "initWithDefaultAttributes:", + "_endOfLastNonHiddenColumn", + NULL, + NULL, + "nicestRenderingPriority", + "prepareForPrimaryKeyGeneration", + "_setNoVerticalAutosizing:", + "_drawWindowsGaugeRects:", + "undoHack:", + "groupSelectionChangedInPeabody:", + "ISS_URLWithoutPassword", + "setShouldResolveExternalEntities:", + NULL, + "_setKeyWindow:", + "maxSize", + NULL, + "autoDistinct", + NULL, + "_createPBuffer", + "selectRowsWithStatement:", + "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:allowLayout:", + "isSelectionByRect", + "errorProc", + "defaultStringDrawingTypesetterBehavior", + "fileIsImmutable", + "isMobileHomeUser", + "_containerObservesTextViewFrameChanges", + NULL, + "previewPanel:didLoadPreviewForURL:", + "_menuDidEndTracking:", + NULL, + "getRequestWithSession:URI:ifModifiedSince:includeRangeHeader:rangeStart:rangeEnd:localDestination:", + "_rename:as:", + "_updateOkButtonEnabledState", + "setScanLocation:", + "_setTrustWithPolicies:", + "insertObject:atIndex:forKey:", + "cleanupChallenges", + "_createFloatStorage", + "_objectClassName", + "_printForCurrentOperation", + "_compareSingleArrayWithRecordValue:", + NULL, + NULL, + "elementsForName:", + "canDecodeDownloadHeaderData:", + "setPathSeparator:", + "subtype", + "dataRepresentationFromCGRepresentationWithCompressionFactor:", + "_storeDeallocated", + "horizontalScroller", + "eventClass", + "quickTimeChapterTrack", + NULL, + "domainName", + "appendData:length:", + "sampleSize", + "drawKnob", + "doSendAppleEventOfKind:", + "addSublayer:", + "_integrateReferenceInstance:", + "expressionValueWithObject:context:", + "initWithCatalogName:colorName:genericColor:", + "fetchRowForObjectID:", + "imageWithTexture:size:options:", + "takeStringValueFrom:", + "gotoNextItem", + "setNeedsExecution", + "isAddressBook", + "speechSynthesizer:didEncounterSyncMessage:", + "delayedProcessLogonButtonClick:", + NULL, + "tableView:didDragTableColumn:", + NULL, + NULL, + "_newSelectStatementWithFetchRequest:ignoreInheritance:", + "completes", + "setSession:", + "extendedAttributeForKey:atPath:error:", + "_undoStack", + "fileNameExtensionsAndHFSFileTypes", + "countForFetchRequest:inContext:", + NULL, + NULL, + "transformedImage", + "validateValue:forKey:error:", + "_setHideWithoutResizingWindowHint:", + "_cleanUpConnectionWithSynchronizePeerBinders:", + "uniqueNameWithBase:", + "_revealoverInfoForCell:cellRect:", + "PDFOperationWithView:insideRect:toData:", + "attributesForExtraLineFragment", + "controlAlternatingRowBackgroundColors", + "documentViewResized:", + "invalidate", + "_invalidateTabsCache", + "keyPathsForValuesAffectingValueForKey:", + "_currentModifierFlags", + "_volumeSupportsLongFilenamesForRefNum:", + "setInsertsNullPlaceholder:", + "directoriesPane", + "_web_stringRepresentationForBytes:", + "_runArrayHoldingAttributes", + NULL, + "getNumberOfInputImagePorts", + "accessibilityFocusedUIElement", + NULL, + "rotationMode", + NULL, + "timeLinesCount", + "_noteFirstTextViewVisibleCharacterRangeIfAfterIndex:", + "isSessionOnly", + "indexOfObject:inRange:", + "ISS_hasKey:", + "_shouldDispatch:invocation:sequence:coder:", + "_completionsFromDocumentForPartialWordRange:", + "setSynchronized:", + "setSelectionMode:", + "isDirectoriesPaneVisible", + "_RTFWithSelector:range:documentAttributes:", + "_endCustomizationMode", + NULL, + "mipmapDataInfoWithUID:", + "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:", + "dataWithContentsOfURL:", + "_globalIDForObject:", + "replaceChildAtIndex:withNode:", + "pathWithComponents:", + "_hasDefaultButtonIndicator", + "initWithGroup:addressBook:", + "_stopGotoWithCode:", + "offsetByX:Y:", + NULL, + "bitmapRepresentation", + "trackAtIndex:", + NULL, + "stopExecution:", + "colorSpaceName", + "_contextMenuImpl", + "removeFileWrapper:", + "titleComponentAtIndex:", + "_uploadLocalFileAtPath:toPath:", + NULL, + "isEqualToOrderedSet:", + "accessibilityMinimizedAttribute", + "columnsToFetch", + "nameValueForConjoinedSearchElement:comparison:", + NULL, + "preventWindowOrdering", + "_sizeHasBeenSet", + "containsDisplayValue:", + "imageRepWithPasteboard:", + "addPerson:", + "getLocalizedLabels:andLocalizedValues:", + "hasBleedBox", + "setContentWidth:type:", + NULL, + "_setIsContextualMenu:", + "CA_interpolateValue:byFraction:", + "drawBulletAtPoint:shape:inContext:", + "_cellContentForNode:columnIdentifier:", + "_refreshFormatDescriptionsAttributeFromCallback", + "_setIntegerValue:", + "databaseOperationForObject:", + "processEntityReference:", + NULL, + "setCurrentContext:", + "setMoviePort:", + "_commonSecureTextFieldInit:", + "findFontLike:forString:withRange:inLanguage:", + "setFrameLoadDelegate:", + "_allowsActiveInputContextDuringMenuTracking", + "selectedAttributes", + "_hasImage", + "slideshowPrev:", + "objCType", + "accessibilityIsMainWindowAttributeSettable", + "_setOrganization:", + "_previewCurrentPageForPrintOperation:", + "_guess:", + "setRetainsRegisteredObjects:", + "stopCurrentPlayerIfAny", + "slideWindow:withNewContentView:direction:duration:delegate:", + "_engravedDisabledForegroundTextColor", + "openFile:ok:", + "_shouldUseAlternateImageForSegment:", + "recentRepositoryWithDomainName:", + "addStatistics:", + "keyViewSelectionDirection", + "_goToHistoryState:", + "_handleFileListModeChanged:", + "moveToFront", + "userInfo", + "_postItemDidCollapseNotification:", + "searchFieldCell:shouldChangeCancelButtonVisibility:", + "getAttribute:", + "initWithDataSource:ascending:", + NULL, + "beginEdits", + "fireDidSelectComposition", + "_postInvalidCursorRects", + "_arrayByTranslatingAEList:toType:inSuite:", + "_initParsingInformation", + "toolbarSelectableItemIdentifiers:", + "fileExistsAtPath:isDirectory:", + "placeHolderFrame", + "displaysMarkupAnnotations", + "_setBlobForCurrentObject:", + "_containsTrackingRect:", + "editSmartGroupSheetDidEnd:returnCode:contextInfo:", + "_threadedGenieFXFromWindow:toWindow:", + "numberWithUnsignedInt:", + "mergeInVariations:", + "canInitWithDataReference:fileTypes:", + "fireDidLoadComposition:", + "_minLinesWidthWithSpace", + "layoutTab", + "setVisible:", + "originalTemplate", + "setReadTimeOut:", + "_validateAsCommonItem:", + "_fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:padding:scrollable:", + "_setUpDefaultTopLevelObject", + "_releaseLiveResizeCachedImage", + "_fullPathForService:", + "_genericUpdateFromSnapshot:", + "shouldPersist", + "_writeRulerInRange:toPasteboard:", + "_setNumVisibleColumns:", + "createInfoDictionary", + NULL, + "saveFavoritesToDefaults", + "setStandardUserDefaults:", + "postNotificationName:object:userInfo:options:", + "_editorCommittingFailedForSaveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", + "setMouseUpAction:", + "invokeServiceIn:msg:pb:userData:error:", + "__oldnf_containsColorForTextAttributesOfNegativeValues", + "setNeedsSizing:", + "_setBackingStore", + "emailAddresses", + "IKIPImageWithMaxSize:withLeftPad:", + "_showFilesForBrowserType:", + "dissolveToPoint:fraction:", + "cacheKeyFrames", + "_dirtyRegion", + "userFontOfSize:", + "arrowCursor", + "_selectedScopeButton", + "setAnnotations:", + NULL, + "_initWithImpl:uniquedFileName:docInfo:imageData:parentWrapper:", + "scriptingValueForSpecifier:", + NULL, + "endHeaderComments", + "_changeShadowAngle:", + NULL, + "setupDisplay", + NULL, + "_validateVisibleToolbarItems", + "setEnabled:forSegment:", + NULL, + "setLoops:", + "_centerScanPoint:", + NULL, + "_addGrammarAttributesForRange:details:", + "italicAngle", + "allowsMultipleSubrowSelection", + "cellEnabled:", + "initWithPatch:", + "irisOpened:", + "_keyForNode:", + "removeResource:", + "setCanCreateDirectories:", + "_searchFieldCancel:", + NULL, + "_processRecentlyForgottenObjects:", + "_positionAndResizeSearchParts", + "addAppSmartFolderForNode:", + "tableView:selectionIndexesForProposedSelection:", + "_prepareGizmoPositionUndo:", + "startUsingDevice:", + NULL, + "parser:foundComment:", + "setTakesTitleFromPreviousColumn:", + "_insertionIndexForGroup:", + "setCustomInterpolation:", + "sharedAEDescriptorTranslator", + "_removeFontDescriptor:fromCollection:save:", + "rangeOfComposedCharacterSequencesForRange:", + "_postInitialization", + "vectorWithX:", + "allPeopleForRemoteLocation:", + "childArray", + "_insertObject:atArrangedObjectIndexPath:objectHandler:", + "currentSearch", + "_saveCredential:forProtectionSpace:isDefault:", + "_recursiveDisplayAllDirtyWithLockFocus:visRect:", + "_scriptingSetValue:forKey:", + "removeObjectFromSubNodesAtIndex:", + "_UTIextensionForMIMEType:", + "layerForThumbnail:", + "createImageFromNSFileWrapper:", + "stopRunning", + "insertItemWithTitle:atIndex:", + "_sizeTableColumnsToFitWithStyle:", + "draggedDistance", + "disposeTrack:", + "_setColorPanelColor:force:", + NULL, + "noDepthBuffer", + "setRoundingBehavior:", + "currentSearchCol", + "resizeIndicatorRect", + "_editorCommittingFailedForPrintDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:", + "setGroupingSeparator:", + "importPromisedFiles:intoGroup:", + NULL, + "checkNetworkDiagnosticError", + NULL, + "customInputPorts", + "addDestinationToDictionaryRef:", + "_resetToolTipIfNecessary", + "_toolbarLabelFontSize", + "moveForwardAndModifySelection:", + "instanceMethodSignatureForSelector:", + "accessibilitySetSelectedRange:", + "localizationDictionary", + "writeToFile:options:error:", + "appliesImmediately", + "resetMetaData", + "resolveConflicts:", + "SCTExtractTitle", + "_registerForCompletion:", + "boundsForButtonCell:", + "clickCount", + "ciContext", + "displayedProperties", + "writeSuperscript:", + "setIntendedLanguage:", + "longForKey:", + "CA_stringByAppendingPathExtension::", + "requestBodyData", + "_dictionaryFromUser:", + "vertBlur32ROI:destRect:", + "_setShouldPostEventNotifications:", + "_updateKeychainItem:", + "builtInLabels", + "setAttributes:range:", + "_removed", + "selectNextRangeForward:", + "_defaultFontSet", + NULL, + "_fixKeyViewForView:", + "addDelta:forManyToManyKey:", + "dataValueOfProperty:", + "_iconSize", + "controlFillColor", + "_updateSoundShouldLoopByStoredLoopFlag", + "newObjectIDForToOne:", + "_sizeTableColumnsToFitForAutoresizingWithStyle:", + "governingAliasForKeypathExpression:", + "addKeyToBeUpdated:", + "_fastDrawGlyphs:advances:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:", + "scheduleTrickleSyncRetry:allowingLock:", + "maxCharacterSetSize", + "defaultSortDescriptors", + "pathVector", + "setInputColor0:", + "initUnlockWithSession:URI:lockToken:", + "timerWithTimeInterval:invocation:repeats:", + "rootEntity", + "setFilename:", + "privateFrameworksPath", + NULL, + "_reactToFontSetChange", + "windowControllerWillLoadNib:", + "prebindMipmapItem:withUID:", + "removeEventHandlerForEventClass:andEventID:", + NULL, + "findPPDFileName:", + "setQuality:", + NULL, + "menuItem", + NULL, + "_setSubviewsAreAdjusted:", + "nts_PeopleAtRemoteLocation:withAddressBook:", + "testPart:", + "setAutomaticallyManageVisibility:", + "_scriptingFileDescriptor", + "_deselectAllExcept::andDraw:", + "parseADD", + "listMembersRequestWithSession:URI:showHidden:", + "EPSOperationWithView:insideRect:toData:printInfo:", + "quickTimeMovie", + "doCalcDrawInfo:", + "setByAddingObject:", + "_parseSummaryInfo:", + "_scrollArrowHeight", + "_configurePlusButtonByRowType:", + "_sortedAETEPropertyDescriptions:", + "_setJavaClassesLoaded", + "copyWithZoneDeep:", + "prepare", + "initWithBundleIdentifier:", + "initWithOpenGLID:size:offset:premultiplied:deleteWhenDone:", + NULL, + "_buffersForRegisteredFunctions", + "_typeSelectStringForColumn:row:", + "intersectsHashTable:", + "abbreviationForTimeInterval:", + "setPrimitiveLastName:", + "_mediaNodeTitle", + "allocWithZone_10_4:", + "setAllowsNonContiguousLayout:", + "initWithSlideshowEngine:", + "_hasImageCache", + "_layoutSublayersOfLayer:", + NULL, + "setScriptErrorExpectedTypeDescriptor:", + "applyFunctionOnInputPorts:context:", + "scanLongLong:", + "isSubscribed", + "speechFeedbackServicesRef", + "_restore", + "grayColor", + NULL, + "_realMaximumRecents", + "criteriaSliceForCriteria:values:", + "initWithRole:index:parent:", + "composer", + "_executeSelectPrevious:didCommitSuccessfully:actionSender:", + "_createViews", + "packedBytesPerRowForWidth:", + "setTitleWidth:", + NULL, + NULL, + "initRegularFileWithContents:", + "setCellAttribute:to:", + "isContinuous", + NULL, + "setFormatWidth:", + "_lightweightHandleChildChanged:parents:property:", + "readerInitialized", + "loadAndReturnError:", + "sortedArrayUsingFunction:context:hint:", + "_initWithSet:", + "_printSessionForSetting", + "_handleRootNodeChanged:", + "dateWithTimeInterval:sinceDate:", + "setNavNodeClass:", + NULL, + "initWithRenderer:userData:renderSize:renderContext:", + "_discloseCertificates:", + "_setLineBorderColor:", + "writeLockFile", + "thickness", + "sourcePort", + NULL, + "parentPatch", + "transformRect:", + "writeSafelyToURL:ofType:forSaveOperation:error:", + NULL, + "setNextKeyView:", + "canBeDisabled", + "addSubIndex:", + "customDisplayName", + "propertyDescriptionFromKey:implDeclaration:presoDeclaration:suiteName:className:", + "setExponentSymbol:", + "contentRectForFrameRect:styleMask:", + "tableViewColumnDidMove:", + "sortUsingDescriptors:", + "cachedCustomPropertiesByNameForRecordType:", + "translateXBy:yBy:", + "_colorSpacesForColorPanelPaneUsingModel:", + "encodeBytes:length:forKey:", + "deserializeNewKeyString", + "fetchMaxPrimaryKeyForEntity:", + "recordDeleteForObject:", + "indexPath", + "_doUserSetAttributes:removeAttributes:", + "isGroupsPaneVisible", + "destinationInstancesForEntityMapping:sourceInstance:", + "operatingSystem", + "endLoadInBackground", + "highlighted", + "_areIPAddressesValid:", + "allGroupForRemoteLocation:", + NULL, + "setFileName:", + "_addVersionIdentifiers:", + "loadKernel", + "colorWithCatalogName:colorName:", + "isReadOnlyIgnoresInert:", + "allocIndexesBuffers:", + "mkcolRequestWithSession:URI:token:", + "selectedFont", + "_finalizeDirectTakePicture", + "highlightedBranchImage", + "_maxForKeyPath:", + "_doModifySelectionWithEvent:onColumn:", + "boundingBox", + "sharedHTTPCookieStorage", + "_effectiveJobTitle", + "directoryContentsAtPath:matchingExtension:options:keepExtension:error:", + "setSortDescriptors:", + "_initDefaultNamespaces", + "start:", + "useFont:", + NULL, + "imageSize", + "_compatibility_takeValue:forKey:", + "makePreviousSegmentKey", + "_moveRightWithEvent:", + "setOptLock:", + "pathForEmbeddedTool:", + "setPopupExtension:saveType:saveCreator:", + "removeWindowController:", + "createPixelBufferFromPixelBuffer:bounds:flip:options:", + "currentNode", + "_descriptorByTranslatingDate:ofType:inSuite:", + "processInfo", + NULL, + "_menuImpl", + "cacheNodeForObjectID:", + "_scrollToPosition:", + "_copyAcquiredViewHierarchyLock", + "prepareOpenGL", + "normalizeRect:", + "updateFilterNotification:", + "setDisableFlash:", + NULL, + "showFindIndicatorForRange:", + "copyFont:", + "tableView:sortDescriptorsDidChange:", + "_constrainAndSetDateValue:timeInterval:sendActionIfChanged:beepIfNoChange:returnCalendarToHomeMonth:preserveFractionalSeconds:", + NULL, + "setAutosavedContentsFileURL:", + "beginPictureTakerSheetForWindow:withDelegate:didEndSelector:contextInfo:", + "isAnimatedGifs", + NULL, + NULL, + NULL, + NULL, + NULL, + "_synchronizeExpandedNodesWithOutlineExpandedItems", + "_getInputImage", + "editorDidEndEditing:", + "characters", + "drawTitleWithFrame:inView:", + "buildString", + "_valueTransformerNameForBinding:", + "setFlipCellsHorizontally:", + "isInputWhiteParams", + "_setSuppressAutoenabling:", + "activeConversationChanged:toNewConversation:", + "_delayedEnableRevealoverComputationAfterScrollWheel:", + "removeToolbar", + "addCacheNodes:", + "filteredIndexForActualIndex:", + "setAllowsColumnSelection:", + "_hasScaledBackground", + "_hasHiddenParts", + "_setTrackingRect:inside:owner:userData:", + "originalImage", + "_clockAndCalendarFillDayCell:withColor:inFrame:inView:", + "remoteURL", + "setEventKind:", + "writeToDataReference:withAttributes:error:", + "_fetchUserSetHideExtensionButtonState", + "_performConnectionEstablishedRefresh", + "tabView:didSelectTabViewItem:", + "sourceModel", + "_selectObjectsAtIndexPaths:avoidsEmptySelection:sendObserverNotifications:", + "activateSliderTimer", + "setQueryNode:", + "itemType", + "_forceUpdateFocusRing", + NULL, + "tableColumns", + "accessibilityPositionAttribute", + "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:", + "_indexForNode:inGraph:", + "backgroundIsLight", + "setBookID:", + "drawSortIndicatorWithFrame:inView:ascending:priority:", + "_setWantsKeyboardLoop:", + "meta", + "initialFieldsForProperty:", + "_appProperties", + "_dateFormatterForDetailLevel:", + "drawImage:inRect:fromRect:", + "printWithInfo:autoRotate:pageScaling:", + "_savedSearcheNodeTitle", + "setAltIncrementValue:", + "_uniqueProxyPortKeyFromPort:", + "_forceUpdateLayerTreeRenderer", + "_mouseUpWithEvent:forView:", + NULL, + "_mainThread", + "selectRecord:byExtendingSelection:", + "_clearRowHeightCache", + "postNicestDraw", + "outtype", + "resumeWritingOperationWithScheduledTime:", + "tokenField:hasMenuForRepresentedObject:", + "movePages:", + "stringWithCapacity:", + "defaultLabelFontAttribute", + "setNextText:", + "_addCollection:options:sender:", + "_createMungledDictionary:", + "decompressionAccuracy", + "iconImageForIconRef:", + "_calendarFirstWeekday", + "setInPalette:", + "realCount", + "accessibilityAttributeValue:forParameter:", + "setExcludedFromWindowsMenu:", + "_notePendingRecentDocumentURLsIfNecessary", + "canZoomOut", + "mixedStateImage", + "_cancelWithErrorCode:", + "switchToFullScreen:", + NULL, + "_didChangeArrangementCriteriaWithOperationsMask:useBasis:", + "_backgroundTransparent", + "nts_SharedDBCache", + "stringWithUTF8String:", + "__ikSetupGLContext:", + "initWithController:", + "_old_drawKnob", + "propFindWithSession:withDepth:URI:lookingForProps:includingParent:", + "_fileExtensions", + "setRawValue:", + "beginUpdate", + "thumbnailWithSize:antialiased:qualityRequested:qualityProduced:", + "callbackObserver:", + "persistentStoreForURL:", + "_customToolbarLabelAttributeTable", + "draggedImage:beganAt:", + "getHyphenLocations:inString:", + NULL, + "_menuDelayTimeForSegment:", + "initWithVoice:", + "initWithCocoaName:", + "_decrementPage:", + "superscriptRange:", + "selectRow:subrow:byExtendingSelection:", + "_publish:", + "_defaultSecondaryColor", + "setResultList:", + "metalBackgroundUsingTexture:andWidth:", + "_sendDelegateWillDisplayOutlineCell:inOutlineTableColumnAtRow:", + "sqliteVersion", + NULL, + "pageLayout", + "loadCell:", + NULL, + "hasHorizontalRuler", + "timeZoneForSecondsFromGMT:", + "minValue", + "setSelectedGroups:", + "drawLoadingFrame", + "_validateMultipleValue:forKeyPath:atIndexPath:error:", + "_updateTableColumn:withWidth:", + "flushBufferedKeyEvents", + "_contextDidDealloc", + "removeExtendedAttributeForKey:atPath:error:", + "setSuckEffect:", + "localNameForName:", + "_rangeByTrimmingWhitespaceFromRange:", + "createTransition:forView:", + "_textFieldWithStepperKeyDown:inRect:ofView:", + "dictionaryWithValuesForKeys:", + "delayedBackground:", + "preferredEdge", + "classForPlugInIdentifier:", + "_drawLiveResizeCachedImage", + "_unarchiving", + "_hasItemTooltips", + "_extendItem:withRow:", + "parse", + "ignoreModifierKeysWhileDragging", + "_updateForTracking", + "nicestRenderingFinalizeExpendStepWithCell:withMipmap:withMipmapCopy:", + "setSearchElement:", + NULL, + "showsRollover", + "persistentStore", + "setSwitchedToToFullScreen:", + "PDFViewOpenPDFInNativeApplication:", + "showRenderedTextWithInfo:renderMode:textColor:alpha:", + "performSelectorDelayed:withObject:soon:", + "_setKeyboardFocusRingNeedsDisplay", + "copyStandardSidebarNodes", + "performSelector:target:argument:order:modes:", + "textView:clickedOnLink:", + NULL, + "_forceUseDelegate", + "defaultLineHeightForFont", + "canCompleteForforPartialWordRange:", + "renderPatch:time:arguments:", + "valueForBinding:atIndexPath:resolveMarkersToPlaceholders:", + "hasChapters", + "_resizeToolbarImageRepViewToFit:", + "removeColor:", + "_computeOriginForRow:cacheHint:", + "_initShared", + "_setResultingCertificate:", + "_changeFirstResponder", + NULL, + "createCroppedImageWithRect:", + "_titleAttributes", + "closeDownContentView", + "attributesForCharacterIndex:", + "_clearAnimationInfo", + "_localizationPolicy", + "rulerView:shouldRemoveMarker:", + "_getBracketedStringFromBuffer:string:", + "launchPreview:", + NULL, + "setLeftMargin:", + "addToolTip:inRect:", + "window:shouldDragDocumentWithEvent:from:withPasteboard:", + NULL, + "_setFirst:", + "clickedPathComponentCell", + "initWithExpression:usingIteratorVariable:predicate:", + "_usesQuickdraw", + "willSave", + "columnContentWidthForColumnWidth:", + "CI_initWithAffineTransform:", + "_doUserRemoveMarkerFormatInRange:", + "stopObservingModelObject:", + "printFormat:", + "_saveTrustValues", + "bitsPerSample", + "setIcon:", + "setImage:orientation:duration:", + "decodeAllIntoBuffer:size:useZeroBytesForCRC:", + "_invalidate", + "_treeHasDragTypes", + NULL, + "url", + "hasEffect", + "_toolbarButtonOrigin", + NULL, + "_parseCommand", + "_lightBlueColor", + "setShowsShadowedText:", + "layerForName:", + "superscript:", + "_columnAtLocation:", + "setShouldLoadAttributes:", + NULL, + "initWithOrderedSet:copyItems:", + "sharedManager", + "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:", + "CGLPixelFormatObj", + "_userEmailAddressOfRequestor", + "_documentForURL:", + "lockWithPath:", + "_selectInTabView:itemWithLabel:", + "setAutovalidates:", + "setViewMovingToWindow:", + "editCellTitleAtIndex:withEvent:select:", + "_setPressedTabViewItem:", + "_storesDidChange:", + "removeFromSuperviewWithoutNeedingDisplay", + NULL, + "reallyRemoveAllObjects", + "hasPassword", + "fontNameFromAppearanceTokens:", + "_removeGrammarAttributeForRange:includeAccessibility:", + "prepareForReloadChildrenForNode:", + "displayedMembers", + "prefersAllColumnUserResizing", + "canResumeDownloadDecodedWithEncodingMIMEType:", + "compositeToPoint:operation:", + "updateWindows", + NULL, + "sendBeforeTime:streamData:components:to:from:msgid:reserved:", + "appendString:", + "updateGroupMembership", + "_cell_setRefusesFirstResponder:", + "insertionRectFromPoint:", + "drawWindowBackgroundRegion:", + "_old_drawKnobSlotInRect:highlight:", + "startObservingNode", + "_whiteRGBColor", + "previousValidKeyView", + "_recreateQuery", + "startThumbnailRefreshTimer", + "recoverArrowScrolling", + "_preloadDocumentAtIndex:", + "canCreateConnectionFromPort:toPort:", + "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:", + "endUploadTexture", + "setModality:withParentWindow:", + "_glyphDescriptionForGlyphRange:", + "_descriptorByTranslatingNull:ofType:inSuite:", + "_bottomLeftResizeCursor", + "intersectsSet:", + "_controlFileWritingForConnection:busNumber:fileControlToken:", + "moveSelectionLeft", + NULL, + "accessibilityIsSingleCelled", + "setNumStacks:", + "lastComponent", + "decimalNumberByRaisingToPower:withBehavior:", + "popup", + "pasteboardWithName:", + "drawText:inRect:attributes:alpha:deferred:", + "willRefresh:", + "_setInputImage:", + "hyphenGlyphForLocale:", + "defaultValueForInputKey:", + "_deselectPart:", + "_displayProfileChanged", + "croppingRect", + "_encounteredCloseError", + "leafKeyPath", + "drawWithExpansionFrame:inView:", + "toggleOrientation:", + "_orientationInPageFormat:", + "_prepareToMinimize", + "canRemove", + "_contentToFrameMinYHeight:", + "_selectItemsInRange:selected:", + "forceTransactionClosed", + "allocateGState", + "smallerButton", + "idle", + "dataUsingEncoding:allowLossyConversion:", + "_writableTypeForFileNameExtension:saveOperation:", + "_branchImageEnabled", + "setInspector:", + "authorizationViewDidAuthorize:", + "_setObject:", + "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:", + "_failedTransactionWithRequest:error:", + "initWithHTML:baseURL:documentAttributes:", + "_getAttributes:includeValues:", + NULL, + "convertRect:toView:", + "_animatorTimerProc:", + "memberOfInputRampParams:", + "setAssociatedInputManager:", + "removeFontDescriptor:fromCollection:", + "_setTrackingHandlerRef:", + "_fileModificationDateForURL:", + NULL, + "_readImageIntoRange:fromPasteboard:", + "_prepareForDispatch", + "_defaultButtonCycleValue", + "removeObjectForCacheKey:", + "boundingRectForFont", + NULL, + "drawRowsInRange:clipRect:", + "registerNotificationsForMovie:", + "displayRectIgnoringOpacity:", + "_vCardRepresentationAsStringUsingImageCache:", + "_initBlock", + "_configureForDirectory:name:", + "_alignSize:force:", + NULL, + NULL, + NULL, + "buildElementsFromSmartGroup:", + "setAutoresizingMask:", + "removeColumnFilter:", + "_writeMultipleTextSelectionRanges:toPasteboard:", + "setFile:", + "initWithURL:cached:", + "testImage:", + "setBackgroundCheckerboardSize:", + "_setPreviousSizeAndDisplayMode", + "itemCount", + "initAddressWithLocalFromSocket:", + "fullPathForApplication:", + "_isShowingKeyboardFocus", + "changeWillBeUndone:", + "_calcVisibleColumnAreaAvailable", + "_resetGrid:", + "_windowDidLoad", + "_getImageAndHotSpotFromCoreCursor", + "blur:radius:kind:", + "_userVisibilityPriorityValues", + "startEditing:", + "_compareMultiLabelDictionaryNoKeyWithRecordValue:", + "_ikCommonInit", + "showsAlpha", + NULL, + "columnName", + "getPixel:atX:y:", + "fixFontAttributeInRange:", + "_isCachedSeparately", + "_setNextKeyViewFor:toNextKeyView:", + "copiesOnScroll", + "setNewValue:", + NULL, + "sharedInstanceForAddressBook:", + "setTitled:", + "setIsABMeImage:", + "isRunning", + "canRedo", + "removeAllActions", + "_updateImage", + "stop:", + "isFinishedDecoding", + NULL, + "_setGuesses:", + "previousItemDelta", + "accessibilityAttributedStringForRangeAttributeForParameter:", + "removeItems:", + "nts_SearchElement", + "_computeDragImageFromItemViewer:", + "_setRowHeaderTableColumn:", + "_invertedSkipSet", + "ISS_URLWithoutUsername", + "_loadImageKit", + "containerClassDescription", + "setLayoutFlags:", + "initListMembersWithSession:path:showHidden:", + "tokenField:readFromPasteboard:", + "distantFuture", + "loadFromDirectory:withBrowser:", + "fileTypeFromLastRunSavePanel", + "baseURL", + "textureUnits", + "setIconsForAnimationFilenames:", + "_reallyRemoveOldestSubthumbnail", + "_executeAllPragmaSettings", + "patternRepeat2ROI:forRect:userInfo:", + "setImageWithData:imageProperties:options:", + "nextData", + NULL, + "setImage:forControlTint:", + "boundOutlineView:isItemExpandable:", + "_unlock", + "initWithInteger:", + "setRoundDeterminateColor:", + "proxyFor:fauxParent:", + NULL, + NULL, + "decrementButtonWithParent:", + "imageRepWithCocoaName:", + "_advancedQueryStringPortion", + "colorPanelDidSelectColorPicker:", + "_visibleAndCanBecomeKeyLimitedOK:", + "removeIndexesFromIndexSet:", + "_setDefaultToolbarItemSetFromMenuItem:", + "_setWantsToActivate:", + "setReservedThicknessForAccessoryView:", + "CA_stringByExpandingTildeInPath:", + "toOneRelationshipKeys", + "subviewFrameAtIndex:", + "setExtensionHidden:", + "firstResponderView", + "_reconfigureSubviewsAnimate:", + "_setCGImageRef:", + "startIdleTimer", + "_setSizeHasBeenSet:", + "preferredFontNames", + "_updateSource:", + "setAlwaysShowsDecimalSeparator:", + "removeAllBindVariables", + "baselineForImage:renderSize:", + "setSearchBase:", + "numberOfCharacters", + "setInitialLocation:", + "runConfigurationPalette:", + NULL, + "_compareMultiNoLabelDictionaryNoKeyWithRecordValue:", + "releaseTexture:", + NULL, + NULL, + NULL, + "layoutOptions", + "_convertRect:fromAncestor:", + NULL, + "exposedBindings", + "addStringDefaultValueToDictionaryRef:", + "updateMultiThreaded", + "fileExistsAtURL:andReturnResultCode:", + "_setNeedsSizeUpdate", + "_sizeWithRect:", + "showContextHelp:", + "_setUsesToolTipsWhenTruncated:", + "saveRecipeChanges", + "textSizeMultiplier", + "insertObjects:atIndexes:", + "_toolbarBackgroundColor", + "initWithGraphNode:ofGraph:", + "initWithExpression:usingIteratorExpression:predicate:", + "_setSharedUserDefaultsControllerProxy:", + "__shiftLeft:", + "_drawIndicatorWithFrame:inView:", + "enableMultipleThreads", + "_protocolClassForRequest:", + "sampleCount", + "copyImageBuffer", + "initWithConjunctionOperator:children:", + "setMutableAttributedString:", + "setName:forIndex:", + "databaseIsEmpty", + "sizeForKey:inTable:", + "_mainThreadSetNeedsDisplay", + "speechChannel", + NULL, + "setComparison:", + "_reloadComboBoxWithTag:", + "mergeROI2:destRect:", + "password", + "secondaryGroupingSize", + "imageWithObject:", + "vramManager", + "_rectOfColumn:ignoringTile:", + "numberWithChar:", + "releaseSQLStatement", + "cellSpacing", + "addIndexesFromIndexSet:", + "initWithPoint:", + "_getPoints:", + "setShowRemainingTime:", + "resignFirstResponderDelegate", + "drawBevel:", + "didChangeArrangementCriteria", + "setCanHide:", + "_drawFrame", + "animator", + "accessibilityDefaultButtonAttribute", + "remoteLocations", + "_insetRect:", + "serializeInts:count:atIndex:", + "invalidateHashMarks", + "_mergeTableCellsVertically", + "_tableView:willAddTableColumn:", + "_endListeningForPowerStatusChanges", + "optionsDictionary", + "defaultPlaceholderLookupClassForBinding:object:", + NULL, + "_selectRootNode", + "drawViewBackgroundInRect:", + "threadDictionary", + "_previousDisplayMode", + NULL, + "rangeForUserCharacterAttributeChange", + NULL, + "_NSView_isWebClipView", + "_updateNewFolderButtonEnabledState", + "initEmptyFormatDescriptionWithMediaType:", + "_addTrackingRect:owner:userData:assumeInside:useTrackingNum:", + "availableStringEncodings", + "resizeDownCursor", + "containsIndex:", + "setAllowsDocumentBackgroundColorChange:", + "setHeaderHeight:", + "showButton:", + "accessibilityIsVerticalScrollBarAttributeSettable", + "findSoundFor:", + "undoManager", + "_performRedoCommand:withName:", + "invalidateDictionaryRef", + "redisplayUpdateDate", + "setDefaultType:", + "_windowDidOrderOffScreen:", + "selectedFXName", + NULL, + "drawDragBackground", + "_initWithData:fileType:hfsType:", + "_selectAllForMatrix:sender:", + "setIgnoresMouseEvents:", + "_postNotification:", + "authorization", + "initWithQTMedia:", + "setCoreUIWidgetType:", + "_oldUserCanSelectColumn:", + "setSourceModel:", + NULL, + "_removeCursorRect:cursor:forView:", + "URLProtocol:didLoadData:lengthReceived:", + "startTheater", + "_sizeDocumentViewToColumnsAndAlignIfNecessary:", + "updateColumns", + "_old_initWithCoder_NSTabView:", + "indexGreaterThanIndex:", + "revertBrightness", + "_configSheetDidEnd:returnCode:contextInfo:", + "subrowObjectsAtIndex:", + "initWithBitmapRepresentation:", + "collectionNames", + "_enableInput", + "currentSuiteAppleEventCode", + "defaultPreferencesClass", + "hiddenStateAtIndex:", + "keyForFileWrapper:", + "_setRowArrayCache:", + "_animateLastAddedColumnToVisible", + "_mouseDownSimpleTrackingMode:", + "unlockInfo", + "_idleMovies", + "setExpandMode:", + "restoreAttributes:", + "markNumRowsToToggleVisible", + "nts_RemoveMember:fromGroup:", + "_setMouseDownFlags:", + "textView:shouldHandleEvent:", + "archiveData", + "enclosedSubscriptionGroups", + NULL, + "propertyMappings", + "setCredential:forProtectionSpace:", + "setPeoplePickerView:", + "_isAutoCreated", + "_deallocAuxiliary", + "_lockRequestPostHandler:", + "updateDragTypeRegistration", + "addAttributes:range:", + "compare:options:range:locale:", + "containsKeys:values:count:", + "setSharedPreviewView:", + "_undoRedoTextOperation:", + "dispatchValueSelection:", + "layoutManager", + "_initWithDescriptorType:bytes:byteCount:", + "_maintainInverseRelationship:forProperty:forChange:onSet:", + "_cfTrim:", + "_helpKeyForObject:", + NULL, + "mutablePlaceholder", + "_loadAppSmartFolders", + "bumpSession", + "handleKeyDown:", + "_distanceForVerticalArrowKeyMovement", + "makeCollectionAtPath:", + "goToDestination:", + "imageWithNSBitmapImageRep:", + "_delayCancelStartEditing", + "arrayWithContentsOfURL:", + "personFromDictionary:addressBook:skipUnknownProperties:generateMultiValueIDs:", + "iconForAnimationAtIndex:", + "_buildSupportUnitsForAudioInputConnection:error:", + "currentProgress", + "_shouldDrawFocus", + "_initWithCFURLCredential:", + "_oldStyleOneWordName", + "initWithString:error:", + "_isSheet", + "_booleanValueForCocoaAttributeKey:fromElement:", + "setCorrespondingDisclosureGroup:", + "_performExhaustiveConflictDetectionForObjects:withChannel:", + "_isToManyRelationshipOrderedForKey:", + "_drawOutlineCell:withFrame:inView:", + "previewContentFrameIgnoringIndexSheet:", + NULL, + "initWithWindow:delegate:animation:", + "isSimpleSearch", + "_aeteElementClassDescriptions", + "groupsChanged:", + "setSelected:forKeyFrame:extendSelection:", + "deepCopiesValues", + "trustValuesForDomain:", + "_addDescriptorCheckingForDuplicates:toCollection:", + "setCurrentSearchIndex:", + "setMasterObjectRelationship:refreshDetailContent:", + "mappingGenerator", + "_setSerialNumberToIssuerMappedToCAConfigFile", + "availableFontFamilies", + "fetchObjectForClass:withUniqueId:managedObjectContext:", + NULL, + "getNodeAsResolvedNode:withError:", + "_renderLayerDefinesProperty:", + "locationOfControlType:keyFrame:inTimeLine:", + "setInfo:", + "_flattenMipmap:withCopy:forCell:", + "independentConversationQueueing", + "dataForType:", + "initWithEntity:alias:inScope:", + NULL, + "maxIndexValue", + "documentDidEndDocumentFind:", + "setAddress:", + "vertBlur4ROI:destRect:", + "_customTitleCell", + "initWithPredicateOperator:leftKeyPath:rightValue:", + "_updatesDisabled", + "_initWithName:type:withClassName:", + "_currentFont", + "viewDidHide", + "_appendValue:withLabel:andIdentifier:", + "_propertyAccessFromElement:", + "nextState", + "_acceptableRowBelowRow:maxRow:", + NULL, + "vmSchedulerEnabled", + "_preparePredicateExpression:", + "setTag:", + "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:", + "_invalidateFont", + "_setLockToken:forURI:withDuration:", + NULL, + "initWithData:options:error:", + "releaseSpaceAtPos:withLen:", + "theaterVideoOptimizationOptions", + "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:", + "pathComponentCells", + "createOutputWithPortClass:forKey:attributes:", + NULL, + "logonButtonCell", + "certIssuerIndex", + "_compositeToPoint:fromRect:operation:fraction:", + "finishEncoding:", + "addLayer:linkedTo:", + "installShortcutMenuHandlers:", + "colorPanel", + "initWithKey:type:isReadOnly:appleEventCode:presentableDescription:nameOrNames:", + "_setCurrentDocumentIndex:withTransition:blocking:", + "_loadKeywords", + "_infoToSaveInRepository:", + "defaultComparisonForProperty:", + "_requiredMinSize", + "setDatePickerStyle:", + "_sortOptionDictionariesByLayoutOrder:", + "_drawingInRevealover", + "timeInterval", + "intValue", + "tokenField:writeRepresentedObjects:toPasteboard:", + NULL, + "actionForLayer:forKey:", + "_updateToManyRelationship:from:to:with:", + "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:", + "_handleSendControlSize:toView:", + NULL, + "_positionSheetRect:onRect:andDisplay:", + "setKerningShift:", + "isEqualToDate:", + "_initRemoteWithSignature:", + "shouldTakeFocus", + "isExcludedFromWindowsMenu", + "_usesScreenFonts", + NULL, + "setKeyPrompt:", + "_dragImageForRowsWithIndexes:tableColumns:event:offset:", + "setCurrencySymbol:", + "_updateWindowsUsingCache", + "columnDefinitions", + "play", + "saveCacheIfNeeded", + "nearestControlPointAtTime:andValue:withTolerance:", + "writeIndexToStorage", + "drawKnobs:", + "transfer:X:Y:", + "drawInContext:", + "pathStoreWithCharacters:length:", + "setNSImage:imageProperties:", + "implicitParameterAnimations", + "removeLockFile", + "relationshipCaches", + "_filteredPreviewType", + "willShow", + NULL, + "_getUndoManager:", + "_unregisterForClipBoundsDidChangeNotificationIfNecessaryForSuperview:force:", + "_selectorToGetValueWithUniqueIDForKey:", + "credentialWithUser:password:persistence:", + "selectRowIndexes:inColumn:", + "posterImage", + "writeToFile:atomically:", + "_queryHitResultsFilterUTIs", + "nts_ACL", + "_layoutIsSameAsCachedLayoutWithFrame:", + "_setDefaultKeyViewLoop", + "setManagedObjectContext:", + "initWithPersistentStoreCoordinator:configurationName:URL:options:", + "_updateNumberOfTitleCellsIfNecessary", + "methodSignatureForSelector:", + "getBitmapForControl:active:", + "_lastOnScreenContext", + "opacity", + "defaultDoubleClickAction:", + "documentClassNames", + "_setDefaultKeyViewLoopAndInitialFirstResponder", + "graph", + "registerDisplayBundle:withBundleIdentifier:", + "_isSharedUserDefaultsControllerProxy", + "discardCachedImage", + "initWithMaximumSize:maximumResourceAge:options:", + NULL, + "_insertObjectInSortOrder:", + "initWithKeyPath:", + "doRemoveFromGroup", + "pasteboardByFilteringFile:", + "localizedPropertyNameForProperty:", + "_clippedItemViewers", + "setLoadsImagesAutomatically:", + "calculateResolutionData:maskUnderTransform:withOutset:needsLofting:", + "initWithURL:documentAttributes:", + "stringWithFormat:locale:", + "initWithFileWrapper:", + "_rangeOfPrefixFittingWidth:withFont:", + "_preferredFileNameExtension", + "initMoveWithSession:sourceURI:destinationURI:sourceToken:destinationToken:", + "panel:userEnteredFilename:confirmed:", + "_deleteOption:", + NULL, + "_updateAttributesFromAudioChannelMap", + "colorListChanged:", + "predicateWithFormat:", + "convertWeight:ofFont:", + "getRealName", + "_orderedWindowsWithPanels:", + "placeButtons:firstWidth:secondWidth:thirdWidth:", + "initInNode:type:name:", + "_suspendIfTopHandling:", + NULL, + "_areUISoundEffectsEnabled", + "setFairEntropyRange:", + "_isAllowedFileNameExtension:", + "handleMouseDownAtPoint:", + "_migrationPolicy", + "setDefaultButtonCell:", + "_pushNamespaces:", + "rendererID", + "_setMiniImageInDock", + "showWindow:", + "createImageWithSource:options:", + "_remainingString", + "setDirectImportMode:", + "_resizeMetalBackground", + "_textureImage", + "parseN", + "_realHeartBeatThreadContext", + "setBottomCornerRounded:", + "scrollBarColor", + "constrainedScrollToPoint:", + "orderOutOnlyExpansionToolTip", + "initRemoveActionWithItem:", + "unregisterDraggedTypes", + "cells", + "isUsedInFilter:", + "replaceCustomLabel:", + "_observePeer:ofChild:", + NULL, + NULL, + "xmlAttributesForNodeIdentifier:", + "unhideApplication", + "typeAhead:", + "streams", + "_autoresizeToFit", + "windowFrameColor", + "parseABReleatedNames", + "initialFirstResponder", + "_getNextKeyAndDataToken:forPosition:", + "startAnimations", + "mipmapCacheDidLoad:", + "glyphPacking", + "setStatusBar:", + "addDocumentWithURLToIPhoto:", + "setOriginalPasswordField:", + "removeAllGRLs", + "setTokenStyle:", + "presentationLayer", + "scaleAndCenter:", + "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:", + "_mouseLoop::::::", + "restoreMovieEditState:", + "colorWithCIColor:", + "_writeSafelyToURL:ofType:forSaveOperation:error:", + "dispatchRawAppleEvent:withRawReply:handlerRefCon:", + NULL, + "_startSQL:", + "_viewAspectRatio", + "localizationsToSearch", + "paletteImageRep", + "layerFrom:inRed:green:blue:", + "saveDocument:", + "_initWithSize:depth:separate:alpha:allowDeep:", + "_debugDrawRowNumberInCell:withFrame:forRow:", + "alignJustified:", + "_doesOwnRealWindow", + "_setObject:ifNoAttributeForKey:", + "objectIDFactoryForEntity:", + NULL, + "sharedSlideshowExporter", + "startInlineSlideshow", + "removedMembers:fromGroup:", + "_scaleFrameFromFrame:", + "initWithURL:andDelegate:", + "imageDidNotDraw:inRect:", + "imageWithColor:", + "resolveForwardingConflictWithPreviousMetadata:forKey:", + "dragImage:at:offset:event:pasteboard:source:slideBack:", + "colorListNamed:", + "_initInfoDictionary", + "transformContextForBox:", + "abDatabaseImpl", + "_endelement:", + "nts_Subgroups", + "_stopWatchingWindowKeyness", + "initWithColors:atLocations:colorSpace:", + "_changeSelectionWithEvent:", + NULL, + "tokenTextView:shouldUseWritablePasteboardTypes:", + "_writeDocumentAttributes", + "versionHashInfo", + "showCMYKView:", + "sharedSpellCheckerExists", + "setReadLimit:", + "commonCreateDictionaryRef", + "_mapForRadius:strokeColor:fillColor:mode:lineWidth:", + "encodePropertyList:", + "dashPatternRaw", + "setFilterProc:", + "editName:inView:", + "_removeSpellingAttributeForRange:includeAccessibility:", + NULL, + "acceptVisitor:flags:", + "_needsDisplayForEntireRect:", + "_generateCombinedVCards", + "readToEndOfFileInBackgroundAndNotify", + "_scriptCommandTerminologyForName:", + "_setEndsTopLevelGroupingsAfterRunLoopIterations:", + "pathForAuxiliaryExecutable:", + "_renderCurrentPageForPrintOperation:", + "_toolbarLabelFontOfSize:", + "outlineView:draggingEndedAt:operation:", + "_getTitle", + "updateBounds", + NULL, + "setOption:value:", + "setMetadata:", + "dotMacUserAgent", + "zoomFactorX", + "attributeRuns", + "_needsToolTipRecalc", + "offsetControlType:byTime:byValue:keyFrame:", + "_underlineIsOn", + "_updateQuarantinePropertiesIfNecessary", + "_compatibility_initWithUnkeyedCoder:", + "_incrementInserted", + "_enablesOnWindowChangedKeyState", + "_removeAppSmartFolderNode:", + "_autosavingContentsURLWithFileNameExtension:", + "asDestination", + "interiorColor", + "createNotification:callback:", + "accessibilityDescriptionAttribute", + "createRealObjectIfNeeded", + "initPutFromWithSession:sourceURI:destinationURI:sourceToken:destinationToken:", + "slideshowSwitchToIndexMode:", + "_hasOverlayControls", + "initWithProperty:", + "_requestAnyEnabledState", + "_toolbarRegisterForNotifications", + "moveLeft:", + "createDocumentFragment", + "maxStringLength", + "_newPrintItem", + "_beginUpdate", + "conformsToProtocol:", + "weightOfFont:", + "rangeOfString:options:range:locale:", + "_findCursorForView:", + "grow", + "classDescriptionWithAppleEventCode:", + "initWithWindow:delegate:parameters:duration:", + "userDataOfType:atIndex:", + "_characterIndexForMoveWordLeftFromCharacterIndex:", + "setDirectParameter:", + "previewMode", + NULL, + "_URLWithDataAsString:relativeToURL:", + NULL, + "appendWhereClause:", + "removeIndexes:", + "_titlebarTitleRect", + "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:", + "_updateVolume", + "nts_DoInitWithRemoteLocation:displayName:readWriteACL:isAll:", + "initWithAnnotation:", + "_purgeImageManagerResourcesIfNeeded", + "addressFormats", + "appendFormat:", + "updateTextLayer:", + "doDelete:", + "closeGenieFX:", + "_findIndicatorPathsForGlyphRange:", + NULL, + "tokenField:styleForRepresentedObject:", + "_testedObjectTypeDescription", + "_valueCountByEnumeratingWithState:objects:count:", + "_minimumViewSize", + "_clearUndoRegistrations", + "_selectorToGetValueWithNameForKey:", + "setWasGeneratedWithIconServices:", + "disabledImageForControlTint:", + "forwardInvocation:", + "_notifyOfAnyContentChange", + "_updateUIToMatchCachedValues", + "setRulerMarker:", + "hiddenStateAtIndexPath:", + "_decodeWithoutNameWithCoder:newStyle:", + "displayedGroups", + "isUnauthenticatedMountPoint", + "__addStats:", + "twoPage:", + "entityForFetchRequest:", + "setFlags:", + "_imageByCroppingToRect:", + "inlinePreview:didHidePreview:", + "drawTitle", + "_maxXBorderRect", + "abEntityName", + "_setDoCheckPreAuth:", + NULL, + "defaultInstance", + "_dataSourceChild:ofItem:", + NULL, + "_createValueSetterWithContainerClassID:key:", + "_textColorBasedOnEnabledState", + "orderBack:", + "_shouldShowFocusRing", + "importCount", + "setInitialFrame:", + NULL, + "_discardEditingForAllBinders", + "registerToMany:forSourceObjectID:relationshipName:andTimestamp:", + "selectSegmentWithTag:", + "isSubsetOfSet:", + NULL, + "_temporaryDirectoryPathForWritingToPath:forSaveOperation:error:", + "setFileListOrderedByFileProperty:ascending:", + "toolTipForSegment:", + "trustValues", + "nts_RemoveValueForProperty:", + "_regularCommitEditingFailureInvocationWithDelegate:didWhateverSelector:contextInfo:", + "sama", + "setStatus:", + "removeAllToolTips", + "setupGLState", + "enclosingScrollView", + "recache", + "previewPanel:didLoadPreviewForDocumentURL:", + "_tearDownObserving", + "gotoNextSelectionPoint:", + "helperForView:layoutManager:characterIndex:", + "_perDialogPrefString:", + "_removeHeartBeartClientView:", + "imageFlow:removeItemsAtIndexes:", + "windowWillResize:toSize:", + "evaluationErrorSpecifier", + "tableView:typeSelectStringForTableColumn:row:", + "_reorderAppSmartFolderNode:toIndex:", + "hasUnautosavedChanges", + NULL, + "clearControlTintColor", + NULL, + "recipe", + "drawSynchronously", + "isReadableFileAtPath:", + "_stripForMigration", + "member:", + "setPrimitiveSortingLastName:", + "hideSearchWindow", + "initWithTextBlock:charRange:text:layoutManager:containerWidth:collapseBorders:", + "applyFunction:context:", + "_textDidEndEditing:", + "TIFFRepresentation", + "setContentResizingMask:", + "_setSelectorDictionary:", + NULL, + NULL, + "setBundlePath:", + NULL, + "timeForControlPoint:", + "_optimalThumbnailSize", + "_segmentsDeselectedBySegment:", + NULL, + "setUsesStrongWriteBarrier:", + "canInitWithRequest:", + "_addPlugIn:allowNonExecutable:", + "setReturnsObjectsAsFaults:", + "_radioHit:row:col:", + "drawRepresentation:inRect:", + "whiteColor", + "_gatherFocusStateInto:upTo:withContext:", + "_addObserver:notificationNamesAndSelectorNames:object:onlyIfSelectorIsImplemented:", + "_stopObservingModelObject:", + "indicesType", + "outlineView:shouldShowCellExpansionForTableColumn:item:", + "setCellMargin:", + "deleteRequestWithSession:URI:token:", + "sizeLastColumnToFit", + "pixelFormatI8", + "dequeueNotificationsMatching:coalesceMask:", + "_web_filenameByFixingIllegalCharacters", + "imageAvailable:", + "accessiblityChildCells", + "showcaseSelectedResult:", + "isDirectoryGroupSelected", + "_openFile:", + "layerForTool:", + "setMatrix:", + "_performDragOperationForReorder:toIndex:", + "isReloading", + "XMLString", + "matchesWithoutOperatorComponentsKeyPath:", + "_cachedObjectForKey:value:", + "moveWordBackwardAndModifySelection:", + NULL, + "deletesObjectsOnRemove", + "colorMatrixBiasKernel", + "valueForOptionalAttributeKey:", + "setRenameGroupUndoable:", + "_calculateResponses", + "_scanDecimal:into:", + "_commonInit", + "attributedAlternateTitle", + "_deselectUpstream:", + "setFontName:size:", + "_updateHideExtensionButtonStateFromNameFieldContents", + "createWithPublicKey:privateKey:keychain:authenticator:signer:inputParms:error:", + "addGroupFromDictionary:", + "customCall:sendData:withAuthorization:", + "_filesCompleted:", + "_drawDropHighlightBackgroundAroundRect:", + "persistentDomainNames", + "_setNeedToFlushGlyph:", + "_compareSingleScalarWithRecordValue:", + "_graphEditor", + "accessibilitySortDirectionAttribute", + "unregisterModalWindow:", + "imageWithImageProvider:userInfo:size:format:flipped:colorSpace:", + "attributedCertificateName:showsStatus:showsIssuer:selected:prefix:", + "_transientProperties", + "_registerOrUnregister:observerNotificationsForKeyPath:", + "initWithAnnotationDictionary:forFlavor:", + "_previewPanelFrameDidChange:", + "nts_ParentGroupsOfRecord:", + NULL, + "taskLoop", + "activeProcessorCount", + "initDeleteWithSession:URI:token:", + "presentableDescription", + NULL, + "_invalidateGlyphsForExtendedCharacterRange:changeInLength:includeBlocks:", + "setValue:forTag:client:", + NULL, + "_updateDragging:", + "cacheImageInRect:", + "selectionDictionary", + NULL, + "initAll:actions:owner:index:", + "blurRegionOf:destRect:userInfo:", + NULL, + "_initMainThread", + "setCost:", + "menuWillOpen:", + "localizedCompare:", + "indexOfItemWithTitle:", + NULL, + "_releaseOneLevelPreWillChangeExpandedNodes", + "setCompositions:", + "setFileURL:", + "beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:", + "highlightedTableColumn", + "tabViewDidChangeNumberOfTabViewItems:", + "_stripDotEntries", + "_runFullDialog", + "_reallocColors:", + "_committedSnapshotForObject:", + "removeAllSubviews", + "magnifyer", + "selectFile:inFileViewerRootedAtPath:", + "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:", + "initWithMemorySize:", + "initWithRenderer:renderSize:renderContext:userData:", + "findNodeNames:matchType:", + "setFrameUsingName:", + "setVirtualScreen:", + "initWithSourceAttributeName:destinationAttributeName:", + "tabViewRemoved", + NULL, + "_dockIsAlive:", + "setLineJoinStyle:", + "indexSetWithIndexesInRange:", + "movieWithQuickTimeMovie:disposeWhenDone:error:", + "_multipleValuesObjectsAtIndexes:", + "_wrapsDateComponentArithmetic", + "_updateProtectedCurrentDocumentURL", + "count", + "processRealDocument:", + "getNodeAsDeepResolvedNode:", + "updatePasswordField:", + NULL, + "pathCell:willDisplayOpenPanel:", + "_notifyDelegate_DidRemoveItems:", + "distributionIndexForProperty:person:", + NULL, + "editedMode:forEditingOrAction:", + "layoutGlyphsInHorizontalLineFragment:baseline:", + "tokenField:editingStringForRepresentedObject:", + "isRunLoopBased", + "insertItemWithObjectValue:atIndex:", + NULL, + "initWithUniqueID:connectionID:", + "setUseDistinct:", + "appendCountClause:forToManyKeyPath:", + "_rectForSegment:inFrame:", + NULL, + "bezelStyle", + "draggingSourceOperationMaskForLocal:", + "_recycleResource:", + NULL, + "initWithData:encoding:", + "_readDocumentFragment:fromRange:documentAttributes:subresources:", + "_isFilteringEvents", + "endEditing", + "performanceCountersForVirtualScreen:purgeable:", + "ivar", + "_topCornerSize", + "childContext:didRememberObjectsWithObjectIDs:", + "_setPrintInfo:", + "initWithName:element:", + "initWithResponse:data:userInfo:storagePolicy:", + "customPropertyValueKeyNameForPropertyType:isSerializedPropertyList:", + "_configureFileListModeControlForMode:", + NULL, + "_totalMinimumTabsLengthWithOverlap:", + NULL, + "_drawerDepthOffset", + "inputNeutralChromaticityX", + "createIdentityImages", + "outlineView:isItemExpandable:", + "mergeSingleValue:forProperty:", + NULL, + "loadFindStringFromPasteboard", + NULL, + "canGoToFirstPage", + "leftBorder", + "_traverseToSubmenu", + "_countWithMergedChangesForRequest:possibleChanges:possibleDeletes:error:", + "readAlignedDataSize", + "_dispose:", + "tearOffTitlebarShadowColor", + "cachedImageNamed:", + "comboBoxCell:indexOfItemWithStringValue:", + "_listClassForList:", + NULL, + "_accessibilityNextSplitterMinCoordinate", + "setOrderingIndex:", + "hasAlpha", + "tileAndSetWindowShape:", + "miniaturize:", + "keyUp:", + "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", + "_setPersistentStore:", + "_executeInsert:didCommitSuccessfully:actionSender:", + "initByReferencingFile:", + "willTurnIntoFault", + "__close", + "_loadDefaultSetImageRep", + "_parseFonts2", + "updatePDFPage", + "getCFRunLoop", + "width", + "secondsFromGMT", + NULL, + NULL, + "xAccel", + NULL, + "closeDown", + "_sourceListBackgroundColor", + "setTighteningFactorForTruncation:", + NULL, + "stackSize", + NULL, + "externalPrecision", + "setDefaultPlaceholder:forMarker:withBinding:", + "addCollection:options:", + NULL, + "_userResetToDefaultConfiguration", + "createPatternColor", + "vectorWithString:", + "_NSNibShortcutNameForUIItemIdentifier:", + "_needsPopulate", + "tableViewColumnDidResize:", + "_updateTrackingValueForPoint:", + "keyEquivalentModifierMask", + "_flushCache:", + "deserializeDataAt:ofObjCType:atCursor:context:", + "_setNeedsDisplayInColumn:", + "_regionForOpaqueDescendants:forMove:", + "decrementRefCount", + "initNotTestWithTest:", + "vectorWithRect:", + "deserializePropertyListFromData:mutableContainers:", + "_appActive:", + "verifyPath:", + "setTimeScale:", + "tabSelectionChanged:", + "schedule", + "createCleanCopyOfPropertiesDictionary:", + "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:", + "imageWithBaseName:state:backgroundStyle:", + "deviceRGBColorSpace", + "cardPane", + "createSchema", + "parseAuthorityInfoAccess:", + "_autounbinder", + "highlightsBy", + "setValue:forBinding:atIndexPath:error:", + "_keyViewPrecedingModalButtons", + "textUnfilteredPasteboardTypes", + "_setRealTitle:", + "_bottomBarHeight", + NULL, + "loadInBackground", + NULL, + "methodSignature", + "mergeFontVariationsInto:", + "contentMinSize", + "_replaceCharactersInRange:withPastedAttributedString:", + "updateClientFreeFormLayoutWithIndexes:", + "_temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:", + "invocationWithMethodSignature:", + "setDelegate:withNotifyingTextView:", + "supportGLRenderer", + "_readFilenameStringsIntoRange:fromPasteboard:", + "referenceFile", + "__000:", + "_selectRowRange::", + "initWithController:keyPath:", + NULL, + "endPrologue", + NULL, + "initWithFullPath:", + "addFilterNotification:", + "setParentInDictionary:", + "initWithFrame:andController:", + "_hasPendingChanges", + "decodeValueOfObjCType:at:", + "_setCommand:", + NULL, + "eventWithEventRef:", + "_showLanguagePopUp", + "mainWindowFrameHighlightColor", + NULL, + NULL, + "_setLabel:", + "chooseButton", + "toOneRelationship", + "_stoleVisibleSharedPreviewView", + "initWithString:calendarFormat:locale:", + "_setBoundDataSource:withKeyPath:options:", + "comparisonPredicateModifier", + "_updateMouseTracking", + "generatorClass", + "applyFunctionOnNodes:context:", + "recordsForClass:matchingPredicate:prefetchingKeyPaths:takeLock:", + "fontWithFamily:traits:weight:size:", + "dictionaryByAddingObjectsFromArray:forKeys:", + "_doSynchronizationOfEditedFieldForColumnWidthChange", + "updateOptionsWithCopyright:", + NULL, + "deselect", + "transformSize:", + "_delegate_isGroupRow:", + "valueForProperty:", + "abBackupPeopleCount", + NULL, + "_recursiveLostLayerTreeHostAncestor", + "frameOfInsideOfColumn:", + "scaleSpeed", + "pushBundleForImageSearch:", + "focusView:inWindow:", + "trackPagingArea:", + "findComponentByID:", + NULL, + "_searchMenuTemplate", + "setCountLabel:", + "canChooseDirectories", + "isTemporary", + NULL, + "cameraOffText", + "numberOfArguments", + "setIsMiniaturized:", + "setImageZoomFactor:centerPoint:", + "isVerticallyCentered", + "_conditionallySetsStates", + NULL, + "setIndentationPerLevel:", + "lastPageIndex", + "_resizeTopView:", + "getKeys:", + "moveSelection::", + "tableView:acceptDrop:row:dropOperation:", + "_isKeyWindow", + "singleFieldVideo", + "stringsByAppendingPathComponent:", + "_colorSyncProfileSpace", + "propertiesOfSearchElements:", + "sqlStatement", + "fileSystemNumber", + "_setValidityPeriod:", + "setIsModified:", + NULL, + "_setCellsOutlineColorRed:green:blue:", + "setDefaultStringValue:", + NULL, + "timeValue", + "parseABPhoto", + "setItemSize:", + NULL, + "maxCount", + "_specifiesMultipleObjectsPerContainer", + "keychainName:", + "avoidsEmptySelection", + "_setKeyEnciphermentUsage:", + NULL, + "drawCenteredIcon:inRect:reflection:", + "keyPointerFunctions", + "accessibilityRangeForPositionAttributeForParameter:", + NULL, + "_whenDrawn:fills:", + "getPrimitiveAppleUseCoreUI", + "showsPrintPanel", + "_validateNodePosition:", + "setFilePathFromObject:", + "resizeWithEvent:", + "_opacity", + "setConnected:", + "_setupToolbar", + "imageRectWithoutRotations", + "_performUndoCommand:withName:", + "addFontDescriptorToRecents:", + "_adjustMovieToView", + "_takeColorFromDoAction:", + "setDisplayModeState:", + "sizeForString", + "scrollPoint:", + "_setPasswordStrengthString:", + NULL, + "_setNeedsDisplayForItemViewerSelection:", + "_adjustDatePickerElement:by:returnCalendarToHomeMonth:", + "_documentEditor:didCommit:contextInfo:", + "setSelectionIndexes:byExtendingSelection:", + "nts_MembersRecursive", + "evaluationErrorNumber", + "propertiesByName", + "nts_AddRecord:", + "setQuadrilateralPoints:", + "_maxTitlebarTitleRect", + "initWithOriginalString:range:", + "saveImageInCache:forEmail:", + "setPreservesAspectRatio:", + "_registerUndoForOperation:withObjects:withExtraArguments:", + "startAnimation:", + "pathlessURL", + "_hide", + "_setHelpCursor:", + "_sendSelectionDidChange", + "_mouseInPopupRect:", + "removeFilterSheetDidEnd:returnCode:contextInfo:", + "_finishDownloadDecoding", + NULL, + "document", + "setDeletedObjects:", + "_handlePhonemeCallbackWithOpcode:", + "initWithOriginalImage:cropSize:cropInfo:smallIcon:", + "newCreateIndexStatementsForManyToMany:", + "tabViewType", + NULL, + "saveInDirectory:saveIndexes:", + "initialize:", + "underlinePosition", + "_setNeedsModeConfiguration:", + "propagateConnections", + "configureAndLoadLayout", + "pushRoundedRectPath:inContext:withCornerRadius:topLeftCorner:topRightCorner:bottomRightCorner:bottomLeftCorner:alignOnPixelCenter:", + "initWithXMLData:", + "characterIdentifier", + "restore", + "rotationTransform", + "writeAttachment:", + "reconcileToSuiteRegistry:suiteName:", + NULL, + "_credentialInfo", + NULL, + "__setUndoableValue:forKeyPath:updatesState:", + "requiresDomain", + "CGColorSpace", + NULL, + "_organization", + NULL, + "annotationEditing", + NULL, + "setCurrentToolMode:", + "_iconViewDoubleAction:", + NULL, + "_imageRectForDrawing:inFrame:inView:", + "URLHandle:resourceDataDidBecomeAvailable:", + "origin", + "startSchedule", + "setStyleFromDictionary:", + "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:", + "submenu", + "minute", + "setDisplaysAsBook:", + "readInBackgroundAndNotifyForModes:", + "_backingPlistIsNewer", + "isExpandable:", + "_setNumberOfRowsCacheIsValid:", + "_informationField", + "fileURLWithPath:isDirectory:", + "_updateDefaultState:forCredential:protectionSpace:", + NULL, + "deferSync", + "_updateScrollWithAnimation:", + "setLineSpacing:", + "defaultPlaceholderForMarker:withBinding:", + NULL, + "cancelDownload", + "_accessibilityIsRadioGroup", + "_initializeArchiverMappings", + "_getNodeForKey:inTable:", + NULL, + "animationDidEnd:", + "_newParagraphForLibXML2ElementNode:tag:allowEmpty:suppressTrailingSpace:", + "updateNib", + "_focusRingRect", + "setGeneratesDecimalNumbers:", + "_isVertical", + "getNewRequestMessage:andStream:forRequest:", + "_isSelectableItemIdentifier:", + "isSpecialGroup", + "parser:parseErrorOccurred:", + "_releaseWireCount:", + "isEnteringProximity", + "accountWithName:password:applicationID:", + NULL, + "_insertPopup", + "greenVotingROI:destRect:", + "smallSystemFontSize", + "accessibilityVisibleRowsAttribute", + "getAttribute:index:allowBinary:", + "_setLastGuess:", + "colorWithDeviceCyan:magenta:yellow:black:alpha:", + "_characterRangeForPoint:inRect:ofView:", + "_setInputBottomLineParams:", + "setPeriodicDelay:interval:", + "_allowSmallIcons", + "_invokeSelector:withArguments:onKeyPath:", + "loadComposition:", + "doFileCompletion:isAutoComplete:reverseCycle:", + "removeGRLPerformCallbacks", + "_handleRecognitionBeginningWithRecognitionResult:", + NULL, + "doRegexForString:pattern:patternLength:flags:", + "translationRatioAtRow:", + NULL, + "filenameExtension:", + "nts_RecordForUniqueId:", + "endEditingFor:", + "originForPageDisplay:", + NULL, + "parser:foundElementDeclarationWithName:model:", + NULL, + "_setInvitation:", + "_attributedString:madeToFitInSize:", + "_minimizeSucceeded:", + NULL, + "clearView", + "view", + "center:didRemoveObserver:name:object:", + "subItemAtIndex:", + "topPool", + NULL, + "migratePersistentStore:toURL:options:withType:error:", + "setStringValue:resolvingEntities:", + "moveGlyphsTo:from:", + "maxLabelStringWidth", + "hidePalettes", + "attachedListDictionary", + "applyFunctionOnOutputPorts:context:", + "localizedScannerWithString:", + "_updateSortDescriptors:", + "fieldNamed:", + NULL, + "cameraDisabledIcon", + "bytesPerRow", + "isTornOff", + "initWithImageManager:options:", + "drawKnobSlotInRect:highlight:", + "_imageForCell:keyWindow:", + NULL, + "setMergePolicy:", + "isColor", + "initWithNamespaces:", + "CIImage", + "writeStringDocumentAttribute:withRTFKeyword:", + "initWithIdentifier:forColorPanel:", + "insertItemWithItemIdentifier:atIndex:", + "enqueueInvocation:", + "addObserver:forKeyPath:options:context:", + "_engravedActiveForegroundTextColor", + "setObject:forKey:", + "_distinctUnionOfArraysForKeyPath:", + "_filePathValue", + NULL, + "openFile:fromImage:at:inView:", + "_validateNodePositions", + NULL, + "_web_createDirectoryAtPathWithIntermediateDirectories:attributes:", + "_collapseItem:collapseChildren:clearExpandState:", + "initWithCustomSelector:modifier:", + "_setClipRect:", + "_setImage:", + "isReadOnly", + "setBorderType:", + "_findScrollerToAutoLiveScrollInWindow:", + "_drawSliceBackgroundsWithClipRect:", + "fileHandleForUpdatingAtPath:", + "setPositionX:Y:Z:", + "setUserStyleSheetEnabled:", + "previewView:timedOutPreviewLoadForURL:", + NULL, + "registerNodeWithClass:", + "moveParagraphBackwardAndModifySelection:", + "_registerObjectClass:placeholder:binding:", + NULL, + "valueAtTime:", + "setSharingPreviewPanel:", + "imageRotation", + "beginCertLookupForEmail:cell:", + "addCoachMarkWithContentRect:contentImage:forView:selfDestruct:", + "setOneShot:", + "shortVersion", + "didAddSubview:", + "error:", + "setVerifyPasswordField:", + "publicID", + "dateFromHTTPStyleString:", + NULL, + "saveOptions", + "mirrorMode", + "grlIndex", + "_setHelpBooks:", + "setRequestError:", + NULL, + "cleanupAppNotifications:", + "graphView", + "levelForRow:", + "_setCurrentPreview:documentPreview:displayedView:canDelayDisplay:transition:stealing:", + "addAddOperationWithIndex:", + "propertyPath", + "initWithRealClient:", + "_copyAuthorizationRights:toRights:", + "pluginForType:", + "_willDeleteNodeInputPort:", + "alphaValue", + "imageWithoutEffectsRect", + "setResizingMask:", + "setSize:", + "selectedColumnEnumerator", + "defaultType", + NULL, + "controlHighlightColor", + "findApplications", + NULL, + "combineStructures:withCustom:", + "addRepresentationForElementWithProperty:value:comparison:order:", + "abIsUTF16EntourageVCard", + "setWindingRule:", + "removeFreedWindow:", + "crop:to:", + "__patchStarted:", + "_activePort", + "_enableTrackingRect:", + "createPlistFromFile:", + "_setOneShotIsDelayed:", + "movePopupToFrontForAnnotation:", + "hasPrefix:", + "openInSeparateWindow:", + "addFavoriteInWindow:", + "_recursiveBreakKeyViewLoop", + "_screenFromPoint:", + "indexOfNode:inCachedChildrenForNode:", + "_objectForProperty:usingDataSize:withRequestedObjectClass:", + "_setAutoscrollDate:", + "_specifiesValueContainedByObjectBeingTested", + "initWithRef:", + "initWithGraphicsContext:", + "parser:foundProcessingInstructionWithTarget:data:", + NULL, + "indexLabelsCount", + "useStandardLigatures:", + "nullImage", + NULL, + "paragraphSpacing", + NULL, + NULL, + "_plotCurve:offset:scale:sample:min:max:stride:count:", + "initGetInfosWithURL:", + NULL, + "_setSQLType:", + "updateChangeCount:", + "addObject:forKey:", + "setRulerVisible:", + "setCompositionAspectRatio:", + "_orderedDrawerAndWindowKeyLoopGroupingViews", + "setRoundingMode:", + "_startSheet", + "buttonPressed:", + "selectionFromPage:atPoint:toPage:atPoint:", + "_accessibilityTitleRect", + "quotedStringRepresentation", + "_queryValueForItem:inRow:", + "_shouldAbortMouseDownAfterDragAttempt:", + "hasElasticRange", + "_removeAllColumns", + "IKIPSliderMouseDown:", + "_readRTFDIntoRange:fromPasteboard:", + "isEqualToSet:", + "highlightedItemIndex", + "city", + "_setCurrentDirectoryNode:pathToNode:", + "revertInvalidXMLEscapedString:", + "updateOptionsWithCredits:", + "_actOnKeyDown:", + "removeGroup:", + "_initWithImage:", + "classDescriptionForClass:", + "_displayAllDrawersIfNeeded", + "invert:", + "controlDarkShadowColor", + "removeRecordsFromGroup", + NULL, + "unlockTextureRepresentation", + "runPromptToSaveQueryWithName:modalForWindow:", + "setLastNavigationDirection:", + NULL, + "setSuperentity:", + "applyMultiValue:withCustomProperty:toRecord:managedObject:", + "appendRows:", + "addIndexButton", + NULL, + "appendPropertyDeclarationToAETEData:", + NULL, + "ikMouseDragged:", + "_imageFromItemTitle:", + "_trackRect", + "_pinDocRect", + "popupViewEntered:", + "updateRoot", + "_nameAsRegisteredWithImageClass", + "usesGroupInDefinition:", + "removeCredential:forProtectionSpace:", + "setEstimatedFileSize:", + "standardCrop:original:", + "addSelectionRange:page:normalize:", + "optionFlags", + "indexesToRemove", + "startSpeakingString:", + "minificationFilterBias", + "nibInstantiateWithOwner:", + "setPredicateString:", + "convertIndex:toResults:andOffset:", + "_loadViews:", + "concludeDragOperation:", + NULL, + NULL, + "getResourceLocator", + NULL, + "_indicatorFrameForCellFrame:isFlipped:", + "initWithRecord:managedObject:property:", + "_setHiddenViewsTint:", + "_setDefaultUserInfoFromURL:", + "externalDataForObjectID:timestamp:", + "setHashFunction:", + "find:", + "redReconstruction:green:phase:image:", + "machPort", + "saveRoot", + NULL, + "_resetFragHandlerWithSize:", + "download:shouldDecodeSourceDataOfMIMEType:", + "numRowsToToggleVisible", + "_usesCustomTrackImage", + "setSelectedRanges:", + "_saveIconViewSize:", + "roundingBehavior", + "addNormalAppearanceToDictionaryRef:", + "attachmentSizeForGlyphAtIndex:", + NULL, + "mouseTracker:constrainPoint:withEvent:", + "valueForOutputKey:", + "_makeLinkFromMenu:", + "fullscreenFrame", + "setThumbnailCount:", + "moveToBeginningOfDocumentAndModifySelection:", + "addPopupToDictionaryRef:", + "commonPrefixWithString:options:", + "_managedAttributeKeys", + "_specifiedValueInContainer:", + NULL, + "leftMargin", + "serviceName", + "setColor:atX:y:", + NULL, + "intersectsRect:", + "controlTextColor", + "_doesCAConfigFileExistWithFileName:", + "_moveDownWithEvent:", + "pageFooter", + "sharedTextFinder", + "startEditingSmartGroup:", + "defaultLineHeightForFont:", + "oscPortsConfiguration", + "acceptsMarker:binding:overrideWithPlaceholderIfDefined:", + "defaultTabInterval", + "_readRTFIntoRanges:fromPasteboard:", + "abAppendString:", + "fixAttachmentAttributeInRange:", + "_originalSnapshot", + "netServiceDidStop:", + "_allowKillRing", + NULL, + "predicateWithFormat:arguments:", + "PDFViewWillClickOnLink:withURL:", + "accessibilityIsHorizontalScrollBarAttributeSettable", + "knobColor", + "addAppleUseCoreUI:", + "dataForKey:", + NULL, + "enableSearchField:", + "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:", + "_proxyNonGCPoolPointer", + "drawStateImageWithFrame:inView:", + "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", + "nts_GroupsThatUseGroup:", + "_makeKeyNode:inKeyNode:", + "drawerShouldClose:", + "noResponderFor:", + "_subclassManagesData", + "_selectDocumentFromLayer:", + "stringsFromRows:expanding:", + "filterRemoved:filterChain:", + NULL, + "_propagateDelete", + NULL, + "addTooltip", + "renderingFlags", + "lockFocusOnRepresentation:", + "nonRetainedCachedRecordForKey:", + "moveUp:", + "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:", + "sourceURL", + NULL, + "allMetadata", + "isReachable", + "nodeNameWithClassName:identifier:", + "setPersistentDomain:forName:", + "setDictionaryRepresentation:", + "createAttributesForFont:color:", + "propertyForKeyIfAvailable:", + NULL, + "_alternateButton", + NULL, + "lowercaseLetterCharacterSet", + "invokesSeparatelyWithArrayObjectsWithBinding:", + "_enableResizedPosting", + "_checkTrashiness", + "canSelectPrevious", + "moveToEndOfParagraphAndModifySelection:", + "_SFCertificateTrustPanel_disclosureStateChanged:", + "initWithCallbacks:andEngineRef:", + NULL, + "scriptingBeginsWith:", + NULL, + "compressionOptionsForConnection:", + "mapTableWithWeakToStrongObjects", + "addTrackingArea:", + "insertTabViewItem:atIndex:", + "createTextureBufferForManager:withFormat:target:bounds:colorSpace:options:", + "rootProxy", + "addACE:append:", + "_lengthForSize:", + "_baseTransform", + "hasMetadataTable", + "_setEnableDelegateNotifications:", + "_writeFileListMode", + "createChildNodeForRepresentedObject:", + "compositionsAtPage:", + "setToolTip:forView:cell:", + "parserDidEndDocument:", + "_popUpMenuCurrentlyInvokingAction", + "targetObject", + "ab_queryPieces", + "toolbarAllowedItemIdentifiers:", + "_pageChanged:direction:", + "initWithAuthentication:forUser:andPass:", + "_postSelectionDidChangeNotification", + "controlDidResignFirstResponder:", + "setClearsColorBuffer:", + "_sendChangeNotification", + "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:", + "_coreUIDrawBezelWithFrame:inView:", + "_stopFadeTimer", + "_setNeedsToResetDragMargins:", + "dirty", + "_getActiveUndoManager", + "friction", + "setSizeRequisition:", + "_setContentInBackground:", + "baselineLocation", + "countryName", + NULL, + "initWithDateFormat:allowNaturalLanguage:", + "windowWillStartLiveResize:", + NULL, + "_loadState:", + "setUserInfo:", + "_addColor:", + "filter", + "setErrorLine:", + "_validateIsSymbolicLink", + "resolveWithCallback:target:", + "drawSelectionFrame:", + "doValidateMetaData", + "_toolbarItemViewerClass", + "devicesWithIOType:", + "suspend", + "_endOfParagraphAtIndex:", + "pointForPort:inNode:bounds:", + "valueExpression", + NULL, + "setJoins:", + "centerAfterViewResize:", + "runModalForTrust:message:", + "imagePasteboardTypes", + "operatingSystemName", + "_showAs", + "localContextWithOptions:", + "_glyphAdvancementCache:renderingMode:", + "setScaleFrame:", + "contentViewMargins", + "nts_SetImageData:", + "initWithViewAnimations:", + "setFloat:forKey:", + "_miniaturizedOrCanBecomeMain", + "setColor:forKey:", + "accessibilityHitTest:", + "delayedSaveCacheIfNeeded", + "mappingsForConfigurationWithName:inModel:", + "hookUpContext:", + "setEditing:", + "_cfUppercase:", + "onResize:", + "_connectGraphUnitsForGenericOutputConnection:error:", + "addRowWithCells:", + "arrayByAddingObject:", + "deleteBackward:", + "filterWithImageURL:options:", + "senderDidBecomeActive:", + NULL, + "redReconstruction:green:phase:", + "_addHeartBeatClientView:", + NULL, + "finalizeRenderer", + NULL, + "shouldDrawInsertionPoint", + "updateStrengthBar:", + NULL, + "_uniqueOutputPortKey", + "stringWithFormat:", + "_selfBoundsChanged", + "setStartingIconSize:", + "setAlignmentMode:", + "_setNonactivatingPanel:", + "stopSpeakingAtBoundary:", + "_addRootSeperatorIfNeeded", + "_reloadChildrenForNode:", + "metadataForPersistentStoreWithURL:error:", + "workLoop", + "_highlightTextColor", + "itemPrototype", + "recalcPointersForResolutionData:mask:firstRes:", + "_metaProperties", + "_itemViewerForDraggingInfo:draggingSource:", + "cancelFindString", + "_resetTitleWidths", + "isAncestorOfObject:", + "captureSession", + NULL, + NULL, + NULL, + "_accessibilityPanel", + NULL, + "initWithContent:", + "_insertionKeyForDictionary:minimumIndex:", + "primitiveModificationDateYear", + "_pageForIndex:", + "_displayForLayerTime:displayTime:", + "_createOverlay", + "_defaultScriptingComponent", + "initWithPath:options:error:", + "_updateSizeAndLocation", + "_computeMinimumDisplayedLabelForWidth:", + "earlierDate:", + "_listener", + "setJobDisposition:", + "_processEvents", + "fileGroupOwnerAccountNumber", + "_setDotMacEmailEncryptionUsage:", + "textView:shouldDrawInsertionPointInRect:color:turnedOn:", + "textView", + "setQueryHitResultsFilterUTIs:", + "_selectHighlightedSegment", + "encodedDataForValue:charsetName:", + NULL, + "removeObserverTextField:", + "convertPointFromDocumentToView:", + "loadRulebook:", + "preparedImage", + "operatingSystemVersionString", + NULL, + "_resetUpdate", + "_columnPositionsTheSame", + "setFloatParameterValue:to:inResolutionData:", + "initWithDir:values:", + NULL, + "drawResolutionData:outlineToContext:withFill:", + "push", + "_convert:row:point:cacheHint:", + "getFullFieldNameFromDictionary:", + "thumbnailImageWithSize:", + "initWithBitmapImageRep:", + "_parsePredefinedAttributes", + "shouldBeVisibleOnlyOnCurrentSpace", + "currentOperation", + "generateWhereIntermediatesInContext:", + "initWithDataReferenceRecord:", + "containerClassID", + "rightChild", + "availableResourceData", + "_postRefreshedObjectsNotificationAndClearList", + "encodeRootObject:", + "_postNotification:sender:", + "_rowHeightStorageUpdateForDeletedRows:atIndex:", + "initWithOptions:createFilter:", + "_web_objectForMIMEType:", + "ciIdentifier", + "nts_AddMember:", + "isPrimaryKey", + "doVariancePass:means:sums:offset:count:factor:", + "generatePrimaryKeysForEntity:", + "transformVectorFromViewSpaceToCropSpace:", + "addInputUnitsForConnection:toGraph:ofCaptureSession:error:", + "defaultNeutralChromaticityX", + "sortConnections", + "writeRTF", + NULL, + "_applicableSegmentedCellStyle", + "annotationPreceding:wrapAround:", + "windowDidEndLiveResize:", + "invokeSelector:withArguments:forBinding:error:", + "initWithReceivePort:sendPort:components:", + "dragSelectionWithEvent:offset:slideBack:", + "_recomputeLocalizedKeys", + "setRenderTime:", + "thumbnailsDidFinishLoading", + "panelShouldHaveBackPlayNextButtons", + "play:", + "addDependentTexture:", + "joinIntermediates", + "_shouldSlideBackAfterDragFailed", + "alphaSpeed", + "_releaseKVCMaps", + "usesButtons", + "animationProgressed", + "autoresizesAllColumnsToFit", + "addFieldWithNoPopup:", + "_writeRecentDocumentDefaultsForKey:", + "setEndSpecifier:", + "_darkGrayRGBColor", + NULL, + NULL, + "lastChild", + "_invalidateTypeDescriptionCache", + "_minimumSizeNeedForTabItemLabel:", + "_beginSessionUpdates", + "_delegateWillDisplayCellIfNecessary:forColumn:row:", + "displayIfNeededInRectIgnoringOpacity:", + "setImageContents:", + "isEditing", + NULL, + "_refaultObject:globalID:boolean:", + "nextSlicePiece:", + "_setSession:", + "revertToInitialValues:", + "_web_rangeOfURLScheme_nowarn", + "directoryServicesNodes", + "_under", + "fullTypeName", + "_updateAttributes", + "removeMarker:", + "nodeForPath:", + "parser:foundExternalEntityDeclarationWithName:publicID:systemID:", + "_updateTooltipsForMouseLocation:", + NULL, + "toggleShown:", + "forwardEvent:to:", + "_dataSourceIsItemExpandable:", + "isEditingAtIndexPath:withObject:", + "detatchFromView", + "textureIsDestination:name:userInfo:", + "_notifyManagedContextEditorStateChanged:", + NULL, + "unbindTextureRepresentationFromCGLContext:textureUnit:", + "isDaylightSavingTimeForDate:", + NULL, + "_isAnyBindingInMaskBound:", + "rawDataFormat", + "writeSelectedGroupsAndPeopleToDefaults", + "searchIsInProgress", + "descriptionForProtocol:", + "_drawerDefaultBottomTrailingOffset", + NULL, + "instantiate::", + "disableFlush", + "setAddressBook:", + "_performActionOnNodes:context:selectedOnly:", + "setDefaultLockDuration:", + "selectedMembersSubrows", + "drawFeedbackMode", + "_setReorderResizeImageCache:", + "calculateFigureSize:", + "accessibilityCancelButtonAttribute", + "_readStreamEvent:", + "setEffectID:", + "_doDelayedValidateVisibleToolbarItems", + "filterWithName:compatibilityVersion:", + "initWithDestination:", + "redrawSelectedPagesDrawNow:", + "setMarkedText:selectionRange:replacementRange:", + "createPixelBufferFromImageBuffer:sourceBounds:options:", + "application:runTest:duration:", + "workaroundReorderResizeProblem", + "issueSetImageCommandWithData:", + "defaultController", + "application:delegateHandlesKey:", + "cellIndexAtColumn:andRow:", + "actionHasBegun:sender:", + NULL, + "setSessionUID:", + "startControlWithDelegate:duration:", + "_noteDefaultMenuAttributeChanged", + "fetchRequestWithSortDescriptors:limit:", + "changeInLength", + "useVisualContext", + NULL, + "editValueWithEvent:inView:atPoint:", + "_windowDidChangeScreenProfile:", + "_abortAndRestartTracking:", + NULL, + "setValue:forTag:", + NULL, + "fileManager:shouldProceedAfterError:copyingItemAtPath:toPath:", + "attributeType", + "_expandItemEntryChildren:atStartLevel:expandChildren:andInvalidate:", + "windowNibName", + "initWithRTF:", + "veryShortStandaloneWeekdaySymbols", + "_solveForInput:", + "graphicsContextWithBitmapImageRep:", + "timingFunctions", + "inLiveResize", + "computeRealDropIndexFromIndex:takingInAccountHiddenItemsIndexes:", + "fontWithDescriptor:size:", + "_overlapAmount", + "_sortCollections", + "isCoreImageAccelerated", + "unsignedLongValue", + "gotoPreviousPage:", + NULL, + "setSpecifiedRect:", + "matchTarget:selector:object:", + "dateWithString:calendarFormat:", + "_resetAllDrawersDisableCounts", + "_certificateData", + "_afterAutosavingDocument:closeAndContinue:context:", + "textView:willBeginEditingProperty:effectiveRange:", + "rotationGizmoRadius", + "lineWidth", + "stringByPaddingToLength:withString:startingAtIndex:", + "displayPattern", + "permitRequest:", + "setIgnoresViewTransformations:", + "usesUserKeyEquivalents", + "accessibilityIsMenuBarAttributeSettable", + "authenticationDataForComponents:", + "_forceSendDoubleActionForPreviewCell", + "initWithFileDescriptor:closeOnDealloc:", + "leaveSlideshowFullScreen", + "_isDrawingMultiClippedContentAtIndex:", + "setInitialValues:", + "_retrieveAVCDeviceOpcode:", + "setNextState", + NULL, + "_changeBaseWritingDirection:", + "_selectFirstKeyView", + "updateItemList", + "tableView:shouldEditTableColumn:row:", + NULL, + "_terminate", + "objectInTitleAtIndex:", + "_initWithCFURLResponse:", + "_timeGlyphTree", + "_setNeedsModeConfiguration:itemViewers:", + "_validateToOnes", + "updateWithFocusRingForWindowKeyChange", + "renderingMode", + "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:", + "_labelCell", + "_scriptingBooleanWithDescriptor:", + "pressure", + "_entitysReferenceID", + "_startCacheTimeOutTimer", + "_setIsInUILayoutMode:", + "pumaLDAPServers", + "nonThreadedSave", + "drawRectShadow:withAlpha:", + "glyphAtIndex:isValidIndex:", + "_newSaveRequestForCurrentState", + "_registerForChildChangedNotifications", + "_isHiragino", + "_applyHTTPProxyCredentials:forProxyURL:", + "instantiateObject:", + "_widthOfLongestDateStringWithLevel:", + "grlCount", + "contentBorderThicknessForEdge:", + "_setTransaction:", + "_fetchRootDirectory", + "shouldShowWhiteLoadingView", + "setPoolCountHighWaterResolution:", + "_multipleValueForKeyPath:atIndex:", + "trackCloseHit", + "_newStandardItemWithItemIdentifier:", + "fileCreationDate", + "connectionWasBroken:", + "_itemChanged:", + NULL, + "displayedStringsArray", + "characterIndexForPoint:tracking:inMarkedRange:", + "canCalculateEstimatedSize", + "DTDString", + "isScrollable", + "_signatureUsage", + "_renderView", + "selectGroup:byExtendingSelection:", + "specifierWithPath:", + "_nestListAtIndex:", + "localizedKeyDictionary", + "_menuName", + "enumeratorOfTitle", + "defaultNameOrdering", + "ramBindedRange", + "scrollToEndOfDocument:", + "_suiteDescriptions", + "makeWindowsPerform:inOrder:", + "_minXTitlebarResizeRect", + "sourceAlias", + "captureOutput:willFinishRecordingToOutputFileAtURL:forConnections:dueToError:", + "_enableScreenUpdatesIfNeeded", + "_endEditingIfNecessaryWhenSelectingColumnRange:", + "setTest:", + "selectionModeDidChange", + "compositionsWithProtocols:andAttributes:", + "_writePersistentExpandItems", + "setData:forType:", + "_postNotificationForEvent:notificationName:parent:child:", + "hasOrderedToManyRelationshipForKey:", + "_web_noteFileChangedAtPath_nowarn:", + "_setMenuItemView:", + "_setImageInterpolation:", + "lastError", + "_sortSublayersToMatchSubviews", + NULL, + "_clockAndCalendarGetClockFrame:calendarFrame:retreatMonthButtonCellFrame:advanceMonthButtonCellFrame:returnToHomeMonthButtonCellFrame:forDatePickerCellFrame:", + "_accessibilityLoadBrowserCellsAtRow:count:", + "_showToolbar:animate:", + "addCrayon:", + "sourceInstancesForEntityMapping:destinationInstance:", + "helpMenuOpening", + "computeColumnCount", + "_applyCompressionOptionsForConnection:", + "_setKeyCellFromBottom", + "nts_SharedAddressBook", + "setAutoValidationDisabled:", + "amountOfMemoryOfCurrentDataSource:", + "_adjustFrame", + "updateReferenceIndexesToReflectRemovalAtIndexes:", + "_uncachedRectHeightOfRow:", + "initWith:::", + "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:", + "_rectOfRowRange:", + "setHyphenationFactor:", + "_checkSpelling:", + "setPolicy:", + "objcDescriptorCreationMethodSelector2ForClass:", + "initWithRulerView:markerLocation:image:imageOrigin:", + "additionalHeightAtRow:", + "createDirectoryAtPath:attributes:", + "_colorForMetal:style:topHeight:bottomHeight:", + "_combineWithMultiValue:updating:", + "initWithItemIdentifier:", + "imageLayer", + "_firstTextViewChanged", + "_didEndSelector", + "removeWindowsItem:", + "foreignEntityKeyColumns", + "_handleSelectionChanged", + "openGLPixelType", + "_isNodeFileTypeEnabled:", + "laterDate:", + "setPreferredMuted:", + "convertPointFromViewToDocument:", + "_needsRedisplayWhenBeginningToolbarEditing", + "defaultClassNames", + "_accessibilityTitleForColumn:", + "hasReadablePropertyForKey:", + NULL, + "_sendManufacturedTrackingAreaEventsForMouseDraggedEvent:forceExit:", + "paragraphSpacingBefore", + "addEffectWithName:", + "changeDestinationToPoint:", + "binderClassesSuperseded", + "drawImage:inRect:fromRect:alpha:", + "distributionListConfigWithKey:person:inGroup:", + "policiesDisclosedClicked:", + "nts_PeopleWithAddressBook:", + "_clearCachedKey", + "needInitialDataForKey:", + "rangeOfComposedCharacterSequenceAtIndex:", + "_standardFrameForDrawersInRect:", + "_initFromTestRecord:", + "_predicateOperator", + "_recreateViews", + "initWithBytes:", + "_postEventHandling", + "setWeekdayOrdinal:", + "_resultingCertificate", + "positionRelativeToAttachedView", + "saveDefaults", + "_resizeOutlineColumn", + "boolForKey:", + "accessibilityIsInsertionPointLineNumberAttributeSettable", + NULL, + "_getAllAvailableItems:values:asChildrenOfItem:inRow:", + "environment", + "_scriptingValueOfComplexType:withDescriptor:", + "localizedDescriptionForVNodeAtPath:", + "_wantsMouseMoveEventsInBackground", + NULL, + "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_nearestKeyFrameAtX:andY:controlType:timeLineIndex:", + "addGRLToTree:", + NULL, + "_setJavaLastError:", + "renderWithRotationsInContext:rect:", + "_internalNetService", + "_configureProgressIndicator", + "saveComposition:", + "contentWidthValueType", + "_portIsConnected:view:", + "inputClientEnabled:", + "cancelSheet:", + "_storeMetadataForSaving", + "pullDownRectForBounds:", + "_getValue:forType:", + NULL, + "initWithKeyPointerFunctions:valuePointerFunctions:capacity:", + "tokenTextViewForWindow:", + "initWithObject:basicAnimation:", + NULL, + NULL, + "_notifyFamily_InsertedNewItem:atIndex:", + "mountedRemovableMedia", + "_wantsPastedFile:", + "_document:shouldClose:contextInfo:", + NULL, + "startNote", + "setLanguageModel:", + NULL, + "getItem:", + "indexOfItemWithTarget:andAction:", + NULL, + "drawSelection:forPage:", + NULL, + "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:", + "buildWhereClauseForRow:optLock:", + "ikConvertEventLocationInWindow:toLayer:", + "canAddBinding:toController:", + "formatAutosaveName", + "_populatePopup:withTableView:", + "contentRect", + "_downloadEnded", + "_zeroScreen", + NULL, + "_setAllowsTearOffs:", + "useCredential:forChallenge:", + "_unobstructedPortionOfRect:", + "_setConversionFromData:type:inPasteboard:generation:item:", + "isInInterfaceBuilder", + "totalSize", + "lockFocusIfCanDrawInFrame:flipped:clip:", + "sortIndicatorRectForBounds:", + "findSidebarNodeForNode:", + "clearProperties", + "commandDescriptions", + "initBeforeDispatch", + "endEdits", + NULL, + "initWithFrame:pixelFormat:", + "setInputData:", + "_trackMouseForHitCell:withEvent:", + "_insertNewRowAtIndex:ofType:withParentRow:", + "_selectionUpdated:", + NULL, + "updateGridContent", + "initWithAffectedRange:layoutManager:undoManager:replacementRange:", + "updateIndexPair:subIndex:count:", + "_caseInsensitiveNumericCompare:", + "useStoredAccessor", + "setDecision:forRecord:", + "refresh", + "removeFromSuperlayer", + "_mutableArrayValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:", + NULL, + "updateSearchViewWithWidth:", + "abGroupDatabaseImpl", + "stopTimerForSpeaking", + "addProperty:atRow:toRecord:withUniqueId:resultsView:tableName:", + "currentDirectoryPath", + "setProgrammablePatch:sourceType:", + "registerCommandDescription:", + "kernelsWithString:", + NULL, + "availableBindings", + "setDisplayDirty", + "redSpeed", + "whitespaceAndNewlineCharacterSet", + "_processObjectStoreChanges:", + "rightMouseDown:", + "fetchPublicRecordsForClass:withPredicate:prefetchingKeyPaths:addressBook:", + "parseBDAY", + "frameViewClassForStyleMask:", + "_doHide", + "substitutedValueForPredicate:", + "_fetchPreviewTypeTimedOutForDocumentPreview:", + "setContextHelp:forObject:", + "_handleSendControlSize:toCellOfView:", + "cacheZoomState", + "initWithContainerClassID:key:baseGetter:baseSetter:containerIsa:proxyClass:", + "_getCursorBitmapWidth:andHeight:", + "replacePointerAtIndex:withPointer:", + "point", + "reactToDockSizeChange", + "_sourceEntityVersionHashesByName", + "labelForPage:", + "currentGRLResolved:", + "_appendTypeDefinitionsSuiteDeclarationToAETEData:", + "_changeAllDrawersFirstResponder", + "setStartSpecifier:", + "_imp", + "arrayRepresentation", + NULL, + NULL, + "animation:didReachProgressMark:", + "calculatesAllSizes", + "elementTypeDescription", + "fastestMipmapItemForSize:forGLRendering:", + "_shouldProcessLongTasks", + "_configureDirectoryPopup", + NULL, + "_couldHaveBlinkTimer", + NULL, + "ignoresAlpha", + "revertAndCloseManagedObjectContext:", + "_cleanUpOpenGLContext", + "endLocalContext", + "localizedModelStringForKey:", + "initWithSetHeader:", + "_dictionaryRepresentationForPropertyTypes:andProperties:", + "superclassDescription", + "operatorType", + NULL, + "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:", + "mergeNote:", + "generateTableAlias", + "_writeMetadataData:andMapDataData:toFile:error:", + "removeTabStop:", + "initWithCalendarIdentifier:", + NULL, + "isShown", + "attributesForParameterPortWithInfo:name:index:", + "initWithType:arguments:inHelpBooks:", + "setArrowPosition:", + "sortingGroup", + "findNode:matchType:useFirst:", + "setFrameFromString:", + "_recacheButtonColors", + "scrollDown", + "_changed:", + "_highlightAllLinesWithColor:", + "_getValue:forObj:", + NULL, + "isSecure", + "boundingRectWithSize:options:attributes:", + "monthOfYear", + "accessibilityRowsAttribute", + "_generateMetalBackground", + "visibleFrame", + "_pageFormatAttributeKeys", + NULL, + "imageToDrawAtIndex:", + "ruleEditor:child:forCriterion:withRowType:", + NULL, + "curveHullsEnabled", + "popupDictionary", + "nonmutatingMethods", + "_windowDidClose", + "_unpackEventRef:", + "_menuItemViewerHIViewClassName", + NULL, + "_setupCallbacks", + "indexItemsArray:", + "_handleError:delta:fromRect:toPoint:", + "localContext", + "_result", + "drawInRect:withAttributes:", + "graphicsPort", + "allowPictureEditing", + "_drawerDepthInset", + "_moveCursor", + "_setEncounteredCloseError:", + "moveRequestWithSession:sourceURI:destinationURI:sourceToken:destinationToken:", + "paperSize", + "recycle", + "startTrackingWithEvent:inView:withDelegate:", + "fullPath", + "replaceCharactersInRange:withString:", + "_setMultipleValue:forKey:atIndexPath:", + "_bottomMargin", + "setMaximumSignificantDigits:", + "createImageFromImageSourceRef:", + "onSliderMouseUp:event:", + "_allowAnimated_setShadow:", + "_initializeSAX2Callbacks", + "abDictionaryForBackupAtPath:", + "startProxy", + "filesystemItemRemoveOperation:shouldRemoveItemAtPath:", + "setDrawsContainmentIndicator:", + "totalCount", + "initPopUpWindow", + "_unprotectEvilCharacter:", + "methods", + NULL, + "_dataRepresentationFromBitmapRepresentation:", + "recordToManyUpdatesForObject:withOperation:", + "_prefetchWithFetchRequest:withObjectIDs:inContext:", + "_renderingInfo", + "provideNewSubview:", + "setQuotingWithSingleQuote:double:", + "countKeyPathForNode:", + "_registerOrUnregister:observerNotificationsForKeyPath:ofModelObject:", + "initWithAppleEventCode:", + "setItemsPerRow:", + "_animatedScrollToPoint:", + "_doAutoselectEdge", + "customProperty", + "initGetWithSession:URI:ifModifiedSince:includeRangeHeader:rangeStart:rangeEnd:localDestination:", + "_convertRectFromSuperview:test:", + "computeAlphaMask", + "setMinimumIntegerDigits:", + "_updateLayerSize", + "sortedArrayUsingSelector:", + "confirmCloseSheetIsDone:returnCode:contextInfo:", + "shouldColorMatch", + "localTimeZone", + "indexGreaterThanOrEqualToIndex:", + "shouldIndex", + "_fetchRequestForPerformingFetch", + "_doAutoscroll:", + "defaultBoostShadowAmount", + "primitiveAppleUseCoreUI", + "setUsesDataSource:", + "valueWithSize:", + "pointingDeviceType", + "reflROI:forRect:userInfo:", + "_servicesMenuHasLoaded", + "_segmentedMenuDelayTime", + "_insertNodeIntoEntityCache:", + "setClearsFilterPredicateOnInsertion:", + "URLsFromRunningOpenPanel", + "_receivedSuccessResponse", + "_needsLiveUpdates", + "cacheMode", + "didStartRenderingPatch:", + "convertNeutralX:y:toTemperature:tint:", + "coveredCharacterSet", + NULL, + "_endCustomizationPanel", + "fastMipmapItemForSize:forGLRendering:", + "separatesColumns", + "sharingType", + "CIContext", + "operation:notify:", + "resolveDecompressionSessionOptions:pixelBufferAttributes:", + "mouseExitedDelegate:", + "destinationEntity", + "setInterpolateSizeAndColor:", + "viewOffsetForCurrentClipRect", + "selectRowsWithCachedStatement:", + "_addOutputPortWithClass:forKey:attributes:", + "_drawFocusRingWithFrame:", + "adjustView:frame:forView:characterIndex:layoutManager:", + "versionForClassNamed:", + "enableSecureInput:", + "allProperties", + NULL, + "setFileAttributes:", + NULL, + "setCanChooseFiles:", + "attributeTypeForXMLInfo:", + "registeredImageRepClasses", + "setScriptErrorOffendingObjectDescriptor:", + "_childrenChangedForNode:", + "errorWithDomain:code:userInfo:", + "containerNodeWithChildren:", + "setCurrentOperation:", + "initWithName:", + "filesystemItemCopyOperation:shouldCopyItemAtPath:toPath:", + "setRepresentedURL:", + "_doneEditing:", + "canZoomIn", + "_setForceOriginalFontBaseline:", + "pullDownImage", + "_clearTrackingRects", + "isZoomable", + "imageCropView:keyUp:", + "markBegin", + "vcHardwareCaps", + NULL, + "_noDataConnections", + "_clientDidEndSelector", + "initWithSetFunc:forImp:selector:", + "compositionsWithProtocols:andAttributes:sortedBy:", + NULL, + NULL, + NULL, + "_keyboardIsOldNeXT", + "_isAll", + "deviceWithUniqueID:", + "movieBeingSet", + NULL, + "nsImage:", + "showsSuppressionButton", + "_textBackgroundColor", + "nts_IsAll", + "_topmostChild", + "sharedPreviewView", + "bufferBytesPerRow", + "writablePasteboardTypes", + "setSendsWholeSearchString:", + "initWithName:url:filterData:actions:domains:comments:readOnly:owner:", + "_getPageHeaderRect:pageFooterRect:forBorderSize:", + NULL, + "bumpDatasourceVersion", + "setWhereIntermediate:", + "_windowWithRealWindowNumber:", + "_computeMinimumDisplayedLabelSize", + "resolveConflict:", + NULL, + NULL, + NULL, + "_noUiClearField:", + "switchVisualContexts", + "_reloadData", + "firstResponder", + "date", + "_acceptSubpredicates:flags:", + "screen", + "fidelityForEngineOfClass:forDisplayID:", + "_checkInName:onHost:andPid:forUser:", + "conditionalBehaviorOffByDefault:", + "didFinishLoading", + "accessibilityRangeForIndexAttributeForParameter:", + "usesIndexLabels", + "convertFontTraits:", + "_adaptPreviewFrameForStaticPreviewSizeHint:minSize:maxSize:", + "fieldDataForOid:", + "isDateComparison:forProperty:", + "_buttonToolTip", + "minimumRangeOfUnit:", + "initWithFrame:prototypeRulerMarker:", + "_isCollectionDecodingUnarchiver:", + "accountUpgradeURL", + "measureRequirementsOf:query::results:", + "ignoresViewTransformations", + "pathFromPartialURLOrHFSPath", + "roundDeterminateColor", + "keyForIndex:", + "newWithOwner:", + "importFinished:", + "closeWithEffect:", + "_pathLocationControlDoubleClick:", + "_requireMainThreadDefaultBezelCaching", + "_initEmptyHTMLNames", + "_arrayForPartialPinningFromArray:", + "totalLen", + "_delegateRespondsToCanSelectRow", + "_setResultingCertificateData:", + "minuteOfHour", + "language", + "clearAllFieldVisiblity", + NULL, + "tableColumn", + "bufferBaseAddress", + "registeredProtocols", + "mouseDown:", + "_didCloseFile:", + "setKeyBindingManager:", + "showGroupMembership", + "connection:didReceiveAuthenticationChallenge:", + "setCellPrototype:", + "filteredImage:keysAndValues:", + "lastRange", + NULL, + "_addProperty:", + NULL, + "setTreatsDirectoryAliasesAsDirectories:", + "_buildGraphUnitsForOutputConnection:error:", + "startDragNDropWithEvent:", + "setSelectionIndex:", + "_raiseNilValueExceptionWithSelector:", + "goToPage:", + "newNormalizedSearchString", + NULL, + "initWithFrame:options:", + "_doFindIndexesOfNodes:inDirectory:visitedNodes:", + "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:", + "_canUseKeyEquivalentForMenuItem:", + "freeExpendedRepresentationCaches", + NULL, + "canDragRowsWithIndexes:inColumn:withEvent:", + "_getProgressFrame", + "_removeSubview:", + "rectOfTickMarkAtIndex:", + NULL, + NULL, + "setFauxFilePackageTypes:", + "_closeAlertSheet:wasPresentedWithResult:inContext:", + "presentableNames", + "_keyViewRedirectionDisabled", + "modificationDate", + "didChangeValuesForArrangedKeys:objectKeys:indexKeys:", + "imageUID", + "_superitem", + "pointerArrayWithStrongObjects", + "_datasourceImageRepresentationType", + "_archivedData", + "isFloatSupported", + "initWithXMLString:options:error:", + "_setRemoved:", + "invokeSelector:withArguments:forBinding:atIndexPath:error:", + "_hasBezelBorder", + "nodeAtIndex:", + "_singleFilePathValue", + "handleEvent:characterIndex:edge:client:", + "_layoutOrderForItem:inRow:", + "_setLineBreakMode:", + "computeInlay", + "_updateMeasurements", + "_customFieldWindowSheetDidEnd:returnCode:contextInfo:", + "client", + "removeObserver:name:object:", + "outlineView:persistentObjectForItem:", + "_didSaveChanges", + "commitPendingChangesAndSave:", + "fileHandleForReading", + "highlightedMenuColor", + "runActionForKey:object:arguments:", + "_ensureMinAndMaxSizesConsistentWithBounds", + "rootProxyForConnectionWithRegisteredName:host:", + "scrollOriginForPageTopLeft:", + "acceptsRootNode", + "animationWithKeyPath:", + "_goUp:", + "_coreUILinearKnobCallbacksMap", + "menuBarVisible", + "_animationTimerCallback:", + "isHeartBeatThread", + NULL, + "defaultAttachmentScaling", + "_traverseLibXML2Node:depth:", + "afmDictionary", + "createArrayRef", + "_getBucketLocationForBucket:", + "addEntriesFromDictionary:", + "clearsColorBuffer", + NULL, + "_cachedObjectValue", + "_readURLStringsWithNamesIntoRange:fromPasteboard:", + "_setCertAuthorityIsEnabled:", + "_inQuickDisplayModeForWindow:", + "isErrorStatusCode:", + "_recursivelyUpdateKeyEquivalents", + "tableView:shouldTrackCell:forTableColumn:row:", + "indexOfItemWithObjectValue:", + "whitePoint", + "settingsView:clearSettingForKey:", + "_backingType", + "endEditing:", + NULL, + "_willPresentReopeningError:forURL:contentsURL:", + NULL, + "superRelease", + "clearProgressBarToolTip", + "isRotatedOrScaledFromBase", + "fadePopUpWindowImmediately", + "setOperationColor:", + "resetRectCaches", + "setTexturePackerIndex:", + "createAuxData", + "connect:", + "setHidesEmptyCells:", + "_generateInverseRelationshipsAndMore", + "forwardMetadataToObject:", + "setAttributedAlternateTitle:", + "documents", + "_eventRelativeToWindow:", + "backupInfoDictionariesSortedByDate", + NULL, + "changedMembers:", + "_distinctUnionOfObjectsForKeyPath:", + "getClasses", + "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:", + "commonInit", + "decompressionRequirementsDidChangeForConnection:", + "setMeCard:", + NULL, + "selectionGranularity", + "deviceCMYKColorSpace", + "srRecognitionSystem", + "_maintainInverseRelationship:forProperty:oldDestination:newDestination:", + "applyToContext:", + "_stopObservingNodeIfNecessary:", + "childrenKeyPathForNode:", + "alwaysShowsDecimalSeparator", + "newUpdateStatementWithRow:", + "setHighlighted:", + "_errorExpectedTypeDescriptor", + "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:", + "_subthreadComputePreviewThumbnailImages", + "_copyReplacingURLWithURL:", + "menu", + "_shouldDrawArrow", + "insertColor:key:atIndex:", + "imageScalingForSegment:", + "decodeValuesOfObjCTypes:", + "createThumbnailForIndex:subIndex:", + "insertObject:atArrangedObjectIndex:", + "updateInsertionPointStateAndRestartTimer:", + "ownsDestinationObjectsForRelationshipKey:", + "_minXTitlebarWidgetInset", + "_popUpMenuWithEvent:forView:", + "displaceROI:forRect:userInfo:", + "_updateMenuForClippedItems", + "setNamespaces:", + "maidenName", + "callbacks", + "_initInStatusBar:withLength:withPriority:", + "_ungrowFrameForDropGapStyle", + "tableColumnWithIdentifier:", + "quartzFilterManager:didAddFilter:", + "_endInsertionOptimization", + "_computeBounds", + "sharedCompositionRepository", + "_convertToText:", + "_promoteGlyphStoreToFormat:", + "invalidateCellsLayoutAtIndexes:", + "addSample:range:withDuration:sampleDescription:numberOfSamples:withFlags:", + "imageWithCGImageSource:", + "anyAttributeString", + "beginFindStrings:withOptions:", + NULL, + "lastColumn", + "centerScanRect:", + "redColor", + "setUpDataSourcesAndSelection", + "setFilterString:", + "_argumentsFromAttributesKey:originalArguments:", + "propertiesWithAddressBook:", + "_positionWindow", + "_coreUILinearBarCallbacksMap", + "_drawGapStyleDropHighlightBetweenUpperRow:andLowerRow:atOffset:inGapRect:", + "_saveIconViewTextSize:", + "displayNameAtPath:", + "initWithState:withParent:", + "entries", + NULL, + "_popUpContextMenu:withEvent:forView:withFont:", + "_requestAnyHiddenState", + "initWithError:", + "_printSettingsAttributeKeys", + "changeCurrentDirectoryPath:", + "sizeForMagnification:", + "initMakeCollectionWithSession:path:", + "_registerUndoForInsertedObjects:", + "stateImageWidth", + "_real_willChangeValueForKey:", + "removeAllPoints", + "_updateAppleMenu:", + "getNumberOfRows:columns:", + "loadPlugInAtPath:", + "postNotification:", + "createElementNS:qualifiedName:", + "_openDrawerOnEdge:", + "_handleSpeechDoneCallback", + "_updateVisibleCellIndexes", + "detachNewThreadSelector:toTarget:withObject:", + "_accessibilityButtonRect", + "setCurrencyDecimalSeparator:", + NULL, + "readFromURL:options:documentAttributes:error:", + "setEnableLiveAntialiasing:", + "convertCString:toUnsignedInt64:withBase:", + "_compositedBackground", + "backgrounQueriesRunning", + "useExifChanged:", + "goToNextPage:", + "setTailIndent:", + NULL, + "setWindowBackingLocation:", + "relationshipMappings", + "switchToSinglePage", + "localizedNameForFamily:face:", + "releaseCaches", + "_menuItemDictionaries", + "_usesLightBottomGradient", + "allThumbnails", + "_adjustButtons", + "initWithGroup:newName:addressBook:", + "setImageName:action:target:", + NULL, + NULL, + "accessibilityBoundsForRangeAttributeForParameter:", + "_generateSQLForExpressionCollection:allowToMany:inContext:", + "_isChecked", + "arrayWithRanges:count:", + "selectDraggedFileNode:", + "_ownedByPopUp", + "_createDefaultCollectionRep", + "removeAttribute:values:", + "_setDocumentDictionaryName:", + "__oldnf_addThousandSeparatorsToFormat:withBuffer:", + "setArray:", + "tooltipEntered:", + "validateImage", + "_setContentHasShadow:", + "initWithComposition:controller:", + "openGLStateDidChange", + "attributesForKey:", + "resultCode", + "_informParentStore:noLongerInterestedInObjects:", + "matchForPredicate:", + "_computeFolderContentsThumbnailsContinuously:requestIndex:", + "setMaximumCacheSize:", + "_visibleRowIndexesForObject:", + NULL, + "attributesAtIndex:longestEffectiveRange:inRange:", + "_setPrintNameWithName:item:", + "_setHeaderLocalizer:", + "sizeWhenSizedToFit", + "setDefaultCredential:forProtectionSpace:", + NULL, + "fillOval:color:context:", + "fontPanel:", + "sourceDidChangeNotification:", + "recalcInsideShadow:forResolutionData:", + "_postFrameChangeNotification", + "_enqueueEndOfEventNotification", + "smartDeleteRangeForProposedRange:", + "isGreaterThan:", + "setOptionsDictionary:", + "removeSubNodesAtIndexes:", + "conditionallySetsEnabled", + "_loadWordData", + "drawDividerInRect:", + "_initWithCFCachedURLResponse:", + "sizeValueForAccessibleChildAtIndex:", + "limitRect", + "imageForSegment:", + "selectResult:", + "flushAllCachedChildren", + "evaluateUTF8String:sourceURL:line:", + "_scrollToFinalPosition", + "CA_distanceToValue:", + "receivePort", + NULL, + "doPerformSCTViewGRL:", + "commands", + NULL, + "buttonResultForResolutionData:", + "_synchronizerThread:", + "enumeratorWithArray:", + NULL, + "getAllObjects:", + "mappingForEntity:forConfigurationWithName:", + "firstSubscribedGroup", + "splitView:resizeSubviewsWithOldSize:", + "_attributedStringValue:invalid:", + "setPrimitiveValue:forKey:", + "addMember:forKey:", + "initFromGrayValue:toGrayValue:colorSpace:", + "child:withModifier:referenceType:value:", + "stringWithString:", + "_isWhitespace:", + "pointInTitleRect:inNode:bounds:", + "annotationFollowing:wrapAround:", + "_changeDrawerMainState", + "_postNicestDraw", + "foldPolys:aboutCenterX:Y:atAngle:up:", + NULL, + NULL, + "_delegateRespondsTo_nextTypeSelectMatchFromIndex", + "_appendKeyFrame:", + "_lookUpDefiniteRangeInDictionaryFromMenu:", + "transformEnclosedArea:by:", + "_prefersTrackingWhenDisabled", + "writeEPSInsideRect:toPasteboard:", + "_insertObjects:atArrangedObjectIndexes:objectHandler:", + "mutableCopy", + "newSegmentOfSize:", + NULL, + "appendClause:forProperty:keypath:", + NULL, + "_resizedWidth", + "setRef:toObj:", + "liveAntialiasingEnabled", + "serializePListValueIn:key:value:", + "spinningArrows", + "_doInvokeServiceIn:msg:pb:userData:error:unhide:", + "inputDevicesWithMediaType:", + "runDotMacToolWithArguments:wait:", + "setDefaultLineJoinStyle:", + "_exitedFullscreen", + "_updateFormattedQueryString", + "startListeningForCameraEvents", + "viewAnimations", + "_setNeedsDisplayInRectWithFocus:", + NULL, + "pixelBlockWidth", + "_initWithRetainedCFSocket:protocolFamily:socketType:protocol:", + "_dragCanBeginFromHorizontalMouseMotion", + "_recomputeBucketIndex:bucketFirstRowIndex:", + "pixelFormatXRGB8", + "_binderForBinding:withBinders:createAutoreleasedInstanceIfNotFound:", + "ISS__ay_postNotificationName:object:userInfo:inThread:beforeDate:", + "cycleToNextInputScript:", + "tabView:shouldSelectTabViewItem:", + "_tabViewWillRemoveFromSuperview", + "_arrangeToHaveMetadata:", + "initWithResource:", + "removeMember:", + "sendAction:to:from:", + NULL, + NULL, + "_scrollRowToCenter:", + "rowAtY:", + "setPanelFont:isMultiple:", + "_computeDragImage", + "drawerDidClose:", + "accessibilityWindowAttributeValueHelper", + "objectIsForcedForKey:", + "_flushCachedChildrenForNode:", + "analyzeRevealedGRLs:withWindow:withWindowGRL:", + NULL, + "_loadColors", + "_didRender:", + NULL, + "inputNeutralTint", + "_frameDescriptor", + "copyGlobalRootContext", + "cancelDelayedPicture", + "initWithRow:column:outlineView:", + "_verifyDefaultButtonCell:", + NULL, + "sharedFileInfoCache", + "parseNICKNAME", + "decodeSizeForKey:", + "_QCView", + "pathControl:validateDrop:", + "isEncrypted", + NULL, + "_isExplicitlyNonEditable", + "_createElementContent:", + "isInfinite", + "_topLevelObjectClassDescription", + NULL, + "_unpackMouseEventRef:", + NULL, + "positiveFormat", + NULL, + "_createMenuMapLock", + "rootElement", + "visualContextRef", + "ql_commonInit", + "messageFontOfSize:", + "accessibilityIsSelectedTextAttributeSettable", + "stringForType:", + "_setMouseEnteredGroup:entered:", + "invokeSelector:withArguments:forBinding:atIndex:error:", + "setHasShadow:", + "visibleCellIndexesDidChange", + "_typesetterBehavior", + "canAllocateSize:", + "_readFilenamesIntoRange:fromPasteboard:", + "rectForItem:inBounds:", + NULL, + "perspectiveROI:forRect:userInfo:", + NULL, + "setLocation:forStartOfGlyphRange:", + "removeFilterNotification:", + "canIgnoreSettingMinAndMaxForObject:", + "_drawStandardPopUpBorderWithFrame:inView:", + "_setContextInfo:", + "initWithDataSource:", + "objectInInputTopLineAtIndex:", + "_registerForSessionNotifications", + NULL, + NULL, + "_web_guessedMIMETypeForExtension:", + "incrDBRetainCount", + "removeColumns:", + "showWindow", + "customMipmapIsValidAndMatchSize:andQuality:", + "_web_stringByExpandingTildeInPath", + "_getFSRefForPath:withOptions:", + "fxButton", + "recalculateKeyViewLoop", + "scanForPopupsUserOpened:", + "_setNeedsDisplayForDropCandidateItem:childIndex:mask:", + "fillSubrowList:forDisplayedRecords:withDelegate:", + "defaultLineWidth", + "setLeadingOffset:", + "_animatePanel", + "selectWord:", + "_copyNeedsDisplayRegionInRect:validateSubtractedRegion:", + NULL, + "topAutoreleasePoolCount", + "_presentModalAlertWithError:responder:relatedToBinding:", + "tableView:dataCellForTableColumn:row:", + "localizedCatalogNameComponent", + NULL, + NULL, + "classDescriptionForKey:", + "sortsChildrenEfficiently", + "_protocolClassForRequest:allowCF:", + NULL, + NULL, + "gradientWithParameters:inRect:", + "_descriptorByTranslatingColor:ofType:inSuite:", + "_setStdTextAttrs:select:font:color:", + "invokeWithTarget:", + "drawInsertIcon:inContext:", + "indexPathByRemovingLastIndex", + "valueForProperty:shouldTranslateToStrings:", + "isCurrListEditable", + NULL, + "recordsMatchingSearchElement:", + "_isClosable", + "setThumbnailQuality:", + NULL, + "wantsToInterpretAllKeystrokes", + "_shouldAttemptDroppingAsChildOfLeafItems", + "shortValue", + NULL, + "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:", + "_trackMouse:forSegment:inRects:count:inCellFrame:ofView:untilMouseUp:", + "_removeMouseMovedListener:", + "outlineViewItemDidExpand:", + "willFireFault", + "screenRectForItem:", + "chapterTrack", + "resolveURL:withResponseTarget:", + "drawPlaceHolder:inRect:reflection:", + "setRunning:", + "directoryResultsPane", + "setReferenceOf:", + "isBusyForTaskManager", + "_willDisplayOpenPanel:", + "initWithOpenGLContext:options:", + "_knobRectFromPercentage:radius:", + "_convertValueToObjcValue:originRootObject:rootObject:", + "_createImageFromPasteboard:", + "_totalAdvancementForNativeGlyphs:count:", + "recordToMany:forSourceObjectID:relationshipName:", + "_automateLiveScroll", + "_batchExpandItemsWithItemEntries:expandChildren:", + "_contentToFrameMaxYHeight:", + "_launchOrWaitForDaemon", + "dividerThickness", + "genieFXLoop:", + "spaceItemIdentifier", + "_saveSheetDidEnd:returnCode:contextInfo:", + "_highlightColumn:clipRect:", + "sessionUsername", + "itemWithTitle:", + "_createSurface", + "setCommentColor:", + "abbreviationForDate:", + "unscheduleOnRunloop:mode:", + "_requestEnabledState:", + "analyzeAndIndexAppDidComplete:", + "setFormatAutosaveName:", + "shouldChangeTextInRange:replacementString:", + "_contextMenuTargetForEvent:", + "_undoRedoChangeProperties", + "_captureReorderResizeColumnImageCaches", + NULL, + "setHref:", + "setTrust:", + "getGlyphs:range:", + "savedQueryData", + "insertSublayer:below:", + "dismissTimeMachine", + "_preparePredicateOperator:", + "canFocusCell:atTableColumn:row:", + NULL, + "initWithUID:dataFile:", + "indexForUID:", + "from:subtract:", + "_destroyRealWindowIfNeeded", + "_simpleDeleteGlyphsInRange:", + NULL, + "_setNextKeyBindingManager:", + "_postFromSubthread:", + "_computeMinHeightForSimpleSavePanel:", + "setDirectory:", + "setPreviewFeatures:", + "_hasHorizontalOrientation", + "_computeAllRevealovers", + "scheduledTimerWithTimeInterval:invocation:repeats:", + "orPredicateWithSubpredicates:", + "_createWindowsMenuEntryWithTitle:enabled:", + "allowsSubpatchesWithIdentifier:", + "_isAXConnector", + "sendWillCacheResponse:", + "setWithObjects:count:", + "flushBuffer", + "_parseText2", + "_setDidWarnAboutSelfSignedCert:", + "trackStandardTextSelection:", + "idleAllMovies:", + "removeAppleUseCoreUI:", + "countOfInputBottomLineParams", + NULL, + NULL, + "orderedDocuments", + "updateWithinDateWidgetsWithInterval:", + "_accessibilityNumberOfChildren", + "typeForProperty:withComparison:", + "inspectorClassWithIdentifier:", + "nodeClassDescription", + "_cancelInPerforms:target:selector:", + NULL, + "switchedInputMode:", + "_updateCAConfigFileSerialNumberToInt:", + "setGhostCellCountOnTheRight:", + "_hasSelectedRow", + "initWithContentsOfMappedFile:error:", + "previewView:dragOperationForDrop:forURL:", + "_specifiedIndicesOfObjectOrObjectsInContainer:count:", + "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:", + "mouseDownStyle", + "showsToolbarButton", + "shortcutIsVisible", + "_editOnSingleClick", + "updateMovieBoxIsOpaque", + "mnemonicLocation", + "_buttonFrameSizeForSizeMode:", + "abGlobalMailRecentAPILockInFile:line:", + "_applicationStatusChange:", + "initQCContextWithSize:", + "_handleMouseEvent:", + "unhideAllApplications:", + "_carbonNotification", + "state", + "setAutoAddExtensionToNextInput:", + "tabStopType", + "_installPending", + "coerceArray:toColor:", + "initWithBitmap:rowBytes:bounds:format:options:", + "_unpinViews:resizeMasks:", + "overlayForType:", + "sortsSublayers", + "mouseLocationOutsideOfEventStream", + NULL, + "_minimizeToDock", + "enumeratorWithDictionary:", + NULL, + "initWithContentsOfURL:usedEncoding:error:", + "_setMinColumnLayoutMinRequiredVisibleWidth:", + "simpleQueryString", + "imageCropViewEditedImageDidChange:", + "drawRotationGizmo", + "_tryToSetCurrentPageNumber:", + "addMovieToIdleList", + "_checkExecutionMode", + NULL, + "insertObject:inAppleUseCoreUIAtIndex:", + "setCurrent:", + "_ruleAreaRect", + "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:", + "_allowAnimated_removeFromSuperviewWithoutNeedingDisplay", + NULL, + "reload", + "accessibilityContentsAttribute", + "setReplyTimeout:", + "rectWithoutShadow", + "scrollWheelMultiplier", + "beginSecureMode", + "_readRTFIntoRange:fromPasteboard:", + "verbForImportPanel", + NULL, + "_setColumnSpan:", + "exporterForImageManager:", + "allAssociatedMembersAndSubgroups:", + "pointerFunctions", + "hostname", + "writePlist:toURL:withMode:owner:group:format:", + "_minXWindowBorderWidth", + "startAddress", + "lastRangeOnPage:", + "serviceWithName:inManagedObjectContext:", + "indexOfRecord:", + "setCompareSelector:", + "encodeInteger:forKey:", + "tableView:updateVisibleRowInformation:", + "resizePathFrom:to:", + NULL, + NULL, + "setFidelity:", + "utiAsString", + "_canRunCustomizationPanel", + "importPeople:intoGroup:", + "fillRect", + "transformPoint:", + NULL, + "_putKeyFormAndDataInRecord:", + "_validateGroupsSelection", + "printJobTitle", + "externalType", + "_cachedCompositions:", + "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:", + "readRTFDFromFile:", + "setMouseOnIcon:", + "handleEventDelegate:", + "accessibilityIsVisibleCharacterRangeAttributeSettable", + "createCGImageForManager:withOptions:", + "textContainerInset", + NULL, + NULL, + "day", + "setupItem", + "_removePopUpWithTag:", + "resizedColumn", + "_defaultLineHeight:", + "setAutosaveTableColumns:", + "scriptingIsLessThan:", + "_loadMediaBrowserNodeIfRequired", + "sizeOfTitlebarToolbarButton", + "_setAsSystemColor", + "pixelFormatIf", + "_isPixelAlignedInWindow", + "automaticallyHandleGutter", + "setNotificationCenterSerializeRemoves:", + "_characterIndexForMoveForwardFromSelectedRanges:", + "putLength", + "newIncrementedSearchString", + "accessibilityIsRoleDescriptionAttributeSettable", + "initialConditionsFromResolutionData:", + "isEditingGroupName", + "childWindows", + "_handleFileListModeChanged", + "setSelected:forKeyFrame:inTimeLine:extendSelection:", + "_imageRectWithRect:", + "cellNotification:cell:", + "_contentChanged:regenerate:", + "indexOfDirectoriesGroup", + NULL, + "enumeratorAtPath:", + "setDisplayedCard:", + "loadSidebar", + "visibleCellIndexes", + "_adjustTimerForAutosync", + "_distanceFromToolbarBaseToTitlebar", + "_canDrawOutsideLineHeight", + NULL, + "_setErrorNumber:", + "_userKeyEquivalentModifierMaskForTitle:", + "beginSheetForSavePanel:withFilepath:didEndSelector:contextInfo:", + "availableStateGRLs", + "_readStringIntoRanges:fromPasteboard:", + "_notifyObserversForKeyPath:change:", + "audioStreamBasicDescription", + "minSize", + NULL, + "indexValue", + "initWithAutoUpdate:", + "setCharacterIndex:layoutManager:", + "_dateForString:", + "modeButton", + "startUpDelay", + "commonKaleidoscopeROI:forRect:userInfo:", + "removeComponent:", + NULL, + "_referenceData", + "labelAtIndex:", + "fontNamed:hasTraits:", + "vertBlur1ROI:destRect:", + "_addConversionsFromTypes:", + NULL, + "loadCache", + "performActionFlashForItemAtIndex:", + "restoreDefaults", + "_lastSnapshot", + "allowableCharacters", + "_URLStringForString:", + "initialized", + "accessibilityTextLinkAtIndex:", + "releaseIndex:", + "insertKnownAbsentItem:", + "URLResourceDidFinishLoading:", + "languageModel", + "savesAppearanceStream", + "propertyIsComposite:", + "allowsColumnResizing", + "insertItemWithTitle:action:keyEquivalent:atIndex:", + "setCachedSeparately:", + "appearanceStyle", + "shouldCloseWindowController:", + "_validateShadowEffect:", + "imageWithCVImageBuffer:", + "preloadHint", + "setKeyEquivalentFont:", + "operationShouldBeLaunchedNow:", + "centerPointForZoomAndRotation", + "setMigrationDebugLevel:", + NULL, + "_drawKeyboardUIIndicationForView:debuggingIndex:", + "addNextButton", + "cancelUserAttentionRequest:", + "_animateSheet", + "_flattenProperties", + "fileSystemChanged", + "_setContextMenuEvent:", + "setTextMargins:", + "rasterize:", + NULL, + "setLabel:", + "fk", + "XMLStringWithOptions:", + "draw", + "directParameter", + NULL, + "_shouldHavePeriodicEventsForPoint:", + "timeLineActive:", + "unvalidatedPath", + NULL, + "_setChangedObjectIDs:", + "_releaseRowHeightStorageIfNecessary", + "putRequestWithSession:data:URI:includeRangeHeader:rangeStart:rangeEnd:token:", + "endUpdatePixels", + "_standardFrame", + "scaleMeasurements:byFactor:", + "dataTypeDoesNotExist:forKey:inCurrentStruct:inCustomStruct:", + NULL, + NULL, + "pixelFormatIh", + "allDirectoriesServer", + "_isInConfigurationMode", + NULL, + "locationInView:hitCellAtIndex:", + "__oldnf_addInternalRedToTextAttributesOfNegativeValues", + NULL, + "getColor:location:atIndex:", + "_autoLockValue", + "movieController", + "arrayByExcludingObjectsInArray:", + "registerNodeWithClass:identifier:isPrivate:", + "progressIndicator", + "card", + "URLProtocol:wasRedirectedToRequest:redirectResponse:", + "keyPathIfAffectedByValueForKey:exactMatch:", + "_applyValues:context:", + "useCredential:forAuthenticationChallenge:", + "isBycopy", + "addServiceProvider:", + "firstTextView", + "setMaxConcurrentOperationCount:", + "_presentableFileNameFromURL:", + "positionDidChange", + NULL, + "currentEntityMapping", + "_cachedValuesAreValid", + "setOriginalImageIsInvalid:", + "initWithData:", + "stopListeningForCameraEvents", + "controlMenu:", + "defaultPrinter", + "burn:into:opacity:", + "coversAllCharactersInString:", + "printInfo", + "pathControl:shouldDragPathComponentCell:withPasteboard:", + "attributes", + "decodeBytesForKey:returnedLength:", + "_barberImage:", + "_showsAllDrawing", + "compareWithRecordValue:", + NULL, + "_nextInputManagerInScript:", + "detachDrawingThread:toTarget:withObject:", + "isDeletableFileAtPath:", + "valueForUndefinedKey:", + "matchableResultsForString:inSingleProperty:", + "_deleteDigit", + "abManagedObjectContextDidSave:", + "isSetOnMouseEntered", + "drawImageWithFrame:inView:", + NULL, + "initOrTestWithTests:", + "initWithFrame:textContainer:", + "applicationShouldTerminateAfterLastWindowClosed:", + "topLevelNode", + "blend:over:blendKind:", + "_applyTargetConfiguration:", + "dynamicToolTipRectAtPoint:", + "setLastCheckDate:", + "_configureImage:", + "localizedRecoveryOptions", + "eventType", + "displayIfNeededIgnoringOpacity", + "mipmapCache:didImportMipmapItem:withUID:", + "_parentWindowForSheet", + "_performSanityCheckForMapping:fromSourceModel:toDestinationModel:", + "pictureDirPath", + "setPath:", + "appendJoinClauseToSQL", + "genericColorSpace", + "replaceObjectsAtIndexes:withObjects:", + "writeToURL:withOptions:", + "irisClosed", + "_noteNote4:", + "_failsafeAllocAuxiliaryStorage", + "_preparedPrintPanel", + "inputStreamWithFileAtPath:", + "_numberOfItems", + "prepareComparisonPredicate:", + "_cancelAnyScheduledAutoCollapse", + "_invalidateTitleCellWidth", + "removeObjectForDatabaseKey:", + "nodeListWithNodes:count:", + "allowsEditingTextAttributes", + "changeFontTrait:", + "setLayoutValid:", + NULL, + NULL, + "_shouldHaveResizeCursorAtPoint:", + "_minimumVerticalPopupPadding", + "initMultiStatusRequestWithSession:method:path:", + "nameProperties", + "_ensureLayoutCompleteToEndOfCharacterRange:", + "initAddressWithString:", + "_setRangeContainerClassDescription:", + "_changeShadowOpacity:", + "_inTSMPreProcess", + "canPopulateWithPlaceholders", + "screenFont", + "didTurnIntoFault", + NULL, + "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:", + "_overflowHeaderCellPrototype", + "_isSelected", + "firstWeekday", + "dataFromPropertyList:format:errorDescription:", + NULL, + "_generateCompositedBackground", + "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs", + "doPerform", + NULL, + "ISOLanguageCodes", + "column", + NULL, + "_windowDidBecomeVisible:", + "modificationTime", + "inverseForRelationshipKey:", + "_isaForAutonotifying", + "imageTitle", + NULL, + "_resolveNamespaceForPrefix:", + "_classDescriptionsFromPropertyListDeclarations:suiteName:", + "operationWillAbort", + NULL, + "_applicableLabelIsEnabledAtIndex:forDisplayMode:isInPalette:", + NULL, + "unlockObjectStore", + "stroke", + "encodeReturnValue:", + "recordsMatchingSearchElement:takeLock:", + "_initWithBitmapImageRep:", + "_newParagraphForElement:tag:allowEmpty:suppressTrailingSpace:", + "getCString:", + "CGLContextObj", + "messagingAddresses", + "zoomOutX", + NULL, + "_modalSession:sendEvent:", + "createNewDatabaseImplForInstance:withUniqueId:addressBook:", + "_setBool:ifNoAttributeForKey:", + "_dismissMenuBecauseWindowBecameMain:", + "_scrollViewForColumnsDidTrackHorizontalScroller:", + "creationDateYearless", + "translateOriginToPoint:", + "isReady", + "_analogClockTrackMouse:inRect:ofView:untilMouseUp:", + "previewView:didShowPreviewForURL:", + "_loadXSLT", + "memberOfAppleUseCoreUI:", + "openInSeparateWindow:model:mainWindow:", + "printOperationWithView:printInfo:", + "_addEntityMapping:", + "imageWithBaseName:state:backgroundStyle:effects:", + "synchronizeBackBuffer", + "dayOfMonth", + "readLength", + "decimalNumberBySubtracting:withBehavior:", + "trustPopupSelected:", + NULL, + "doRemoveRecordsAndCreateLogsWithAddressBook:", + "loadMetadata:", + "resetOrderingWithCount:", + "setProxyAuthFromKeychainForRequest:proxyConfig:", + "_loadDataIfNotYetLoaded", + "addPlayButton", + "hyphenationFactorForGlyphAtIndex:", + "draggedImage", + "_servicesMenuIsVisible", + "launchABDForSyncing", + "objectsForKeys:notFoundMarker:", + "loadKnobImage", + "joinWithSourceAttributeName:destinationAttributeName:", + "_buttonBezelColors", + "initWithLocaleIdentifier:", + "updateNextPreviousState", + "setFilter:", + "_setEDotMacEmailSigningUsage:", + "loadPlugInsInLibrary:withExtensions:", + "hasCompatibility:", + "setCanBeVisibleOnAllSpaces:", + "textShadowForButtonState:", + "termPointersForResolutionData:", + "objectClass", + NULL, + "glyphGeneratorForEncoding:language:font:makeSharable:", + "_endEditingIfFirstResponderIsASubview", + "initWithRange:", + "decodeReleasedProxies:", + "_parentWindow", + "noteDirectoryResultsChanged", + "_dockItem", + "_deallocData", + "printOperationDidRun:success:contextInfo:", + "modelLayer", + "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:", + "viewTitle", + "_setScrollerNeedsDisplay:", + NULL, + "nestingLevel", + "setNeedsDisplayInRect:", + NULL, + "areAllContextsOutputTraced", + "_handleSelectionConfirmed", + "_filterNodeList:ofParentNode:", + "writeFilterXML:toURL:", + "byteSize", + "iconForSize:", + "removeExpandedNode:", + ".cxx_construct", + "_surfaceWillGoAway", + "tableView:objectValueForTableColumn:row:", + "willPushRenderState:", + "_display", + "type", + "_drawHeaderCell:withFrame:withStateFromColumn:", + "isPortableUser", + "setFontMenu:", + "outlineview", + "setSearchButtonCell:", + "prepareForDragOperation:", + "_basicAttributesRequestPostHandler:", + "_createAndShowProgressPanelIfAppropriate:", + "_columnWidthAutoSaveNameWithPrefix", + "_configureFormatEditor", + "_nextUnusedItems:andValues:forRow:forRowType:", + "_updateMatrix", + "setOutline:", + "_editableStateWithMode:", + "_sharedDocumentControllerNoCreate", + "saveAllDocuments:", + "setAlternateTitle:", + NULL, + "receiveStringWithTimeOut:", + "cleanAperture", + "addListenerIfAbsent:", + "convertPoint:toLayer:", + NULL, + NULL, + NULL, + "angledROI:forRect:userInfo:", + "_canChangeVisibilityTo:", + "_value", + "returnResult:exception:sequence:imports:", + "initAndTestWithTests:", + "indexOfLastImportGroup", + "imageRepClassForPasteboardType:", + NULL, + "_localizedPropertyNameForProperty:entity:", + "getAXUIElementRef", + "mouseTracker:didStopTrackingWithEvent:", + "initWithCFNetService:", + "managedObjectIDForURIRepresentation:", + "abViewDoubleClicked:", + "refrROI:forRect:", + "_prepareFindIndicatorForRange:", + "indexOfTabViewItemWithIdentifier:", + "_loadSuitesForAlreadyLoadedBundles", + "new", + "shouldShowPreviewColumn:", + "_isDeviceColorSpace", + "_disablePosting", + "keyEnumerator", + "_setupSearchParts", + "enableFlushWindow", + "similar:originalPassword:", + "_setRFC822Name:", + "setCurrentAppleEventAndReplyEventWithSuspensionID:", + "_predicateIsNoneAreTrue:", + "mapROI:forRect:userInfo:", + "_nextResponderForEvent:", + "recipeDiffers:from:", + "setContentAspectRatio:", + "accessibilityIsSplittersAttributeSettable", + "_coreProperties", + "EPSRepresentation", + "_pauseLayerTreeRenderingForUserSwitchOut:", + "_finishWritingWithOverwriteRetryingInfo:afterSuccess:", + "setColumnResizingType:", + "initWithBitmapData:bytesPerRow:size:format:colorSpace:", + "inputBias", + "decodePropertyList", + "_updateFocusRing", + NULL, + "updateFreeFormLayout", + "actionForControlCharacterAtIndex:", + NULL, + "updateDateRelatedSmartGroups", + "lightweightHandleChildChanged:parent:property:", + "_parseFile", + "_hiliteWindow:fromWindow:", + "_focusFromView:withContext:", + NULL, + "uri", + "toggleAutomaticQuoteSubstitution:", + "lastComponentOfFileName", + "builtInLabelsForProperty:", + "_chooseIssuer", + "apply:to:options:", + "_setPassword:", + "defaultParagraphStyle", + "_setSuppressingChangeNotifications:", + "setAllowSubrowSelection:", + "_toolbarIsInTransition", + "trust", + "setContentMaxSize:", + "highlightColorWithFrame:inView:", + "needLoading", + "sendPort", + "updateChomaticityXAndY", + "representativeIcon", + "initWithFileProperty:dataSource:ascending:", + "_drawRepresentation:inRect:withScaling:", + "selectedMenuItemTextColor", + "setLeaf:", + "_originPointInRuler", + "attributesFromComposition:", + "newGroup", + NULL, + "showFeaturesPanel:", + "sharedImageEditPanel", + "resetProfilingData", + "_buildAndAssignNewContentDictionary", + "setActivated:sender:", + "_recursiveLostHiddenAncestor", + "ignorableStatusCode:", + "suiteDescriptions", + "createCopy:filterArray:", + "trackMouse:", + "originalDontResolveDataRefsFlag", + "bestMipmapIndexToValidateForSize:", + "didChange", + "_commonInitWithColorArray:colorSpace:padStart:padEnd:", + "hasCredentials", + "_showOpenHandCursor:", + "accessibilityEnabledAttribute", + "_knobFrame", + "createMDQueryNodeRefIfNecessary", + "writeFont:", + "pixelFormatCMYKf", + "_bodyStreamRead:bufferLength:error:atEOF:", + "saveDocumentToPath:", + "_selectIssuerBasedOnPublicKeyHash", + "setObjectValuePreservingEntitiesForNode:string:", + "setVerticallyResizable:", + "updateProgressBar:", + "_shouldShowDocumentIcon", + "_web_errorWithDomain:code:URL:", + "propertiesWithStatusCode:", + "minusSet:", + "CGRect", + "reloadGroupsMaintainingSelection:", + "bindThumbnail:toLocation:", + "setAttributeValue:", + "deleteMeansRemoveSubscription:", + "_concealBinding:", + "PMPrintSession", + "_toolbarContentsChanged:", + "layerDidBecomeVisible:", + "sourceNode", + "copySerializationInto:", + "cancelTracking", + "dataWithBytesNoCopy:length:freeWhenDone:", + "expectSeparatorEqualTo:", + "accessibilityIsChildFocusable:", + "truncatesLastVisibleLine", + "currentThread", + "enclosingClipView", + "lineBreakBeforeIndex:withinRange:", + "initWithDelegate:", + "triggerSearchAndSelectBestMatch:", + "_setURL:forPersistentStore:withCoordinator:", + "editedColumn", + NULL, + "_deletePBUffer", + "isGrabbing", + "clearAnnotation", + "_dataCellForTableColumn:row:", + "tokenField:tooltipStringForRepresentedObject:", + "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:", + "mergeROI:destRect:", + "timeMachineDelegate", + "setUsesWeakReadAndWriteBarriers:", + "inSafeMode", + "itemAdded:", + "setVerticalAlignment:", + "application:willPresentError:", + "_setWindowWantsSquareToolbarSelectionHighlight:", + "migrationDebugLevel", + "_web_stringForKey:", + "_highlightColor", + "setCacheFragHandler:", + "completionWindow", + "setLocalURL:", + "initWithPrintInfo:", + "_rangeByEstimatingAttributeFixingForRange:", + "initWithPerson:propertyPath:oldValue:inputController:", + "_updateText:", + "_removeObjects:objectHandler:", + "setImageScaling:forSegment:", + "_locality", + NULL, + "_mergeLayoutHoles", + "typeOfProperty:forRecord:", + "setMemoryCapacity:", + "importVCards", + "initWithTarget:invocation:", + "_enumeratedEnabledBindings:", + "_activateTimeLineFromLegend:", + NULL, + "allocateNewCell", + "_observeIconOfChild:", + "initWithSuiteName:commandName:dictionary:", + "groupsController:outlineView:willDisplayCell:forTableColumn:item:", + "zoomOut:", + "nts_ImportAddressBookFromMetaKitIfNeeded", + "_setState:ofCell:", + "setCachedSQLiteStatement:", + "pickerView", + "removeAllResources", + "_AppleUseCoreUI", + "ISS_stringByXMLQuoting", + "_copyDetailsFromBinder:", + "_commonInitFrame:styleMask:backing:defer:", + "accessibilityPopUpMenuParent:", + "_setDirectoryPath:", + NULL, + "setSourcePosition:", + NULL, + NULL, + "flushClassKeyBindings", + "_createWindowOpaqueShape", + "findParentOfWindowGRL:", + "ownerCard", + "operationNotAllowedCursor", + "customOutputPorts", + "setEntities:", + "itemAtRow:", + "areEventsTraced", + "initialLoadItemAtIndex:", + "canApplyValueTransformer:toBinding:", + NULL, + "_eventWithEventRefInternal:", + "countOfVisibleCellsOnEachSide", + "forceClipViewUpdate", + "insertText:replacementRange:validFlags:", + "appendLimitClauseToSQL:", + "activeColumnIdentifier", + "measurements:fromResolutionData:", + "initGetPropsWithSession:URI:properties:", + "CIColorWithColorSpace:", + "_dragShouldBeginFromMouseDown:", + "_doSetParentWindow:", + "pictureTakerSessionDidEndWithCode:", + "doSpecialSelectionStuffForRow:extendingSelection:", + "insertObject:atArrangedObjectIndexPath:", + "backupDirectory", + "setCenterControls:", + NULL, + "_theMap", + "getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:", + "_doCallback", + "drawGizmo", + NULL, + "_highlightedLayer", + "allowsDuplicatesInToolbar", + "_nonAutomaticObservingKeys", + "gradientBorderWidth", + "initWithEvent:replyEvent:", + "initHeadWithSession:URI:", + "_allocImageForRepresentationInstance:forCell:", + "_requiredCarbonCatalogInfoMask", + "_web_carbonPathForPath_nowarn:", + "_canMoveItemAsSource:", + "openPersonInSeparateWindow:", + "initWithParent:child:", + "tokenFieldCell:styleForRepresentedObject:", + "maxAnimationFrameRate", + "_createUserKeyPair:privKey:keychain:algorithm:size:userName:accessRef:inputParms:", + "altModifySelection:", + "drawParts", + "enclosingMenuItem", + "_buttonImageSource", + "__createProxyPortWithNode:portKey:forKey:withUserInfo:", + "loadedCellAtRow:column:", + "initWithUID:", + "_addHeaders:toRequest:", + "directoryAtIndex:", + "hasSelectedColor", + "releaseAllResources", + "_setOriginalSnapshot:", + "finalizeOperation", + "transformation", + "capsuleRectForDirection", + "mainDocumentURL", + "addEntries:fromSession:", + "canBeVisibleOnAllSpaces", + "representedFilename", + "bottomMargin", + "_scriptingCanInsertBeforeOrReplaceObjectsAtIndexes:inValueForKey:", + "updateCellSize", + "initWithParent:index:", + "partWithCode:parent:", + "willPerformMigrationWithManager:", + "_bottomContentBox", + "nextObject", + "mutableChildNodes", + "loadPlugIn", + "conformsTo:", + "_unhideHODWindow", + "_indexInAppliedGridForPoint:", + "_setShowControls:", + "_connectGraphUnitsForVideoOutputConnection:error:", + "_cfPad:length:padIndex:", + "format", + "_setSheet:", + "setIsResizable:", + "_createCachedImage:", + "setAccessoryView:", + "_processLibXML2ElementNode:tag:", + "__clearPreLiveColumnWidths", + "setReadOnly", + "maximumLength", + "drawWithRect:options:attributes:", + "selectedPagesContainsPage:", + "accessoryViewContainerContentFrameDidChange:", + "_scriptStringWithPropertyAccess:", + "_isContainedInMenu", + "_setTextFieldStringValue:", + "_textListsForListNumber:level:", + "hideItem:", + "_setHighlighted:pieces:forItemAtIndex:displayNow:", + "revealWithFinder:", + "setShowControls:", + "_deltaForResizingTextField:", + NULL, + "_shouldShowParentNode:", + "loadCGImageNamed:fromBundle:into:", + "_coveredCharSet", + "portNumber", + "_heartBeatBufferWindow", + "glyphRangeForCharacterRange:actualCharacterRange:", + "_setEndSubelementFromDescriptor:", + "marker", + NULL, + "startEditingWithEvent:text:", + "findString:selectedRange:options:", + "toolTip", + "indexOfAllGroup", + "_listClass", + "specifiedRect", + "fetchTableNames", + "commitComposition", + "computeGroupIndexTransformations", + "nameForIndex:", + "replaceTextContainer:", + "cellSelectionStateWillChange", + "_drawInsertionPointInRect:color:", + "postNotificationName:object:", + "relativeString", + "_objectIndexForSubelementIdentifier:subelementIndex:fromIndexes:", + "_makePreviousCellKey", + NULL, + "_drawLiveResizeHighlightWithFrame:inView:", + NULL, + "_createImage:::", + "preloadMipmapsWithQuality:", + NULL, + "moveLeftAndModifySelection:", + "_adjustNeedsDisplayRegionForNewFrame:", + "hotspotCount", + "allFrameworks", + "outlineView:shouldTrackCell:forTableColumn:item:", + NULL, + "adjustDocumentSize", + "small:", + "chatWithPerson:", + "draggingEnded:", + "loadDictionaries:", + "numberOfVisibleRows", + "_undoRedoAttributedSubstringFromRange:", + NULL, + "_computeHeaders", + "focusedImageIndex", + "simpleACLBodyForReadPrincipals:writePrincipals:", + "nameFromPath:extra:", + "toolbar:newItemForItemIdentifier:", + "valueForProperty:atRow:tableName:recordUniqueId:", + "initWithX:", + "abStandardizedPhoneNumber", + "blur:pass:", + "_selectFirstSubfield", + NULL, + "_accessibilityShowMenu:withProxy:", + "_taskRedisplay", + "unbindTextureFromContext:textureUnit:savedState:", + "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:", + "nearestPageToPoint:", + "_searchInGoogle:", + "getNodeAsInfoNode:", + "_setCurrentBrowsingNodePath:makeHistory:notify:", + "_maxXTitlebarDecorationMinWidth", + "optionsAttributes", + "moveFirst:", + "_lockQuickDrawPort", + "stopAnimation:", + "initWithQuickTimeMovie:disposeWhenDone:error:", + "readPrintInfo", + NULL, + "tokenField:displayStringForRepresentedObject:", + "setAnimationBlockingMode:", + "iconView:typeSelectStringForIndex:", + "drawInsertionPointInRect:color:turnedOn:", + "_setAlternateImage:", + "_selectPreviousSubfield", + "enumeratorWithMapTable:", + NULL, + "fileExistsAtURL:", + "setRaisesForNotApplicableKeys:", + "cssValueType", + "_animatedScrollingPreferencesChanged:", + "accessibilityHelperForToolbarItemViewer:", + "initWithElement:withParent:", + "bottomBorderColor", + "moveIndex:toIndex:", + "_startingWindowForSendAction:", + "setLong:forKey:", + "initializeDataFileInfo:", + "replaceSublayer:with:", + "drawRoundedRect:radius:lineWidth:cacheIt:", + "_hiddenViewsTint", + "mapMember:originalKey:value:", + "attribute:atIndex:effectiveRange:", + "accessibilityZoomButtonAttribute", + "vendor2", + "_openURLs:withAppPath:options:additionalEventParamDescriptor:launchIdentifiers:", + "methodReturnType", + "_parsePantoneLikeList:fileName:", + "_spanClassForAttributes:inParagraphClass:spanClass:", + "render:toBitmap:rowBytes:bounds:format:colorSpace:", + "_accessibilityWindowPointForShowMenuWithProxy:", + "_htmlFromTidyNode:tidyDoc:appendingToString:", + "prepareInsertStatementWithCorrelation:", + "_compareMultiNoLabelArrayWithRecordValue:", + "imageWithPNGFile:", + "_writeSelectionToPasteboard:fromPoint:", + "_zoomToFitRect:", + "_extraWidthForCellHeight:", + "isGrammarCheckingEnabled", + "accessibilityIsSelectedColumnsAttributeSettable", + "valueForKeyPath:", + "_setNeedsDisplayInPrimarySortColumnsIfNecessary", + "doDrawInContext:", + "_noVerticalAutosizing", + "_markViewedForPeople:", + "willChangeValueForKey:withSetMutation:usingObjects:", + "_fileURLValue", + "goToLastPage:", + "setPredicateOperator:", + "setCopyright:", + "newChildWithKey:", + "viewWillBecomeInActive", + "selectedMediaObjects", + "registeredDraggedTypes", + "cacheForSize:", + "invert", + "initWithInt64:sqlType:", + "setupTooltipViewForPoint:tooltipBounds:", + "_scriptingNullDescriptor", + "_setRefreshesAllModelKeys:", + "nextKey", + "_setDeclaredKeys:", + "glImageInfoInContext:owner:createIfNeeded:", + "filterEvents:", + "resetDirectoryResultsSubrows", + "_doAttachDrawer", + "configureForTreatsDirectoryAliasesAsDirectories:", + "initWithTexture:size:options:", + "normalizedRect:", + "_changeIconViewIconSize:", + "_scriptingValueForKey:", + "_getFSRefForServiceName:", + NULL, + "setTarget:", + "inlinePreview:frameForURL:", + "isCompatibleWithSource:sourceMD5:", + "_setDrawerEdge:", + "moveToEndOfLine:", + "initializeWidgetStructureAtX:y:forResolutionData:", + "updateFilterInfo", + "minFrameSizeForMinContentSize:styleMask:", + "_graphiteAlternatingRowColor", + "colorForControlTint:", + "doEditOperation:", + "addPopupView:", + "calculateFigure:center:", + "showcaseMenuItem:itemIndex:", + "performMiniaturize:", + "_highlightLine:withColor:", + "_resizeSegmentsForCellFrame:", + "lineSpacing", + "_initWithGraphicsPort:flipped:", + "_pasteboardDictionaryForPeople:", + "shouldShopShowcaseForTransitionToGRL:", + "lastComponent:", + "_initSaveMode", + "_buildAndRunGraph", + "textView:completions:forPartialWordRange:indexOfSelectedItem:", + "XMLData", + "_normalizedMouseLocationWithOptionalEvent:", + "associatePopup:withProperty:", + "convolutionInitROI:destRect:userInfo:", + "_cancelCurrentToolTipWindowImmediately:", + "_web_scriptIfJavaScriptURL", + NULL, + "_rotationForGlyphAtIndex:effectiveRange:", + "drawBack:", + "setTearOffMenuRepresentation:", + "sharedFontPanel", + "_setAttributesNoCopy:pageFormat:orFlattenedData:printSettings:orFlattenedData:", + "imageFlow:itemAtIndex:", + "detailsDisplayed", + "_runBlocking", + "revert:", + "baselineOffsetInLayoutManager:glyphIndex:", + "visibleStringRange", + "titlebarRectForBounds:", + NULL, + NULL, + "editingWasAborted:", + "initWithURL:error:", + "valueInParagraphsAtIndex:", + "setPendingAttributes:", + "errorInSetImageFromPath", + "_updateContainerReferenceCounterForItems:direction:", + "_errorDuplicateColor:", + NULL, + "initWithData:options:", + "setRuleThickness:", + "LDAPConfigChanged:", + "storeText:", + "expandFilter:", + "setSubentityID:", + "_clearFocusForView", + "updateFromPath:", + "_insertObject:atArrangedObjectIndex:objectHandler:", + "holeWithStart:len:", + "beginPictureTakerWithDelegate:didEndSelector:contextInfo:", + "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:", + "widthForSegment:", + "tokenField:menuForRepresentedObject:", + "flatness", + "capitalizedLetterCharacterSet", + "removeItemViewerAtIndex:", + "rowSpan", + "leaveSlideshowFullScreenWithStartRect", + "addBinding:toController:withKeyPath:valueTransformer:options:", + "sqlTypeForExpressionConstantValue:", + "setFramesProvider:", + "_stopRearrangementObservingForSuppressedContentObjects", + NULL, + "instancesRespondTo:", + "elementWithName:stringValue:", + "selectionForWordAtPoint:", + "browser", + "_setDefaultTextAttributes", + "_determineDropIndexForDragInfo:", + "commandDescription", + "ctFontRef", + "pixelFormatRGBAh", + "_crosshairCursor", + "stopAutoscroll", + "setInertia:", + "_disposeObjects:count:notifyParent:", + "_isDocModal", + "isBezeled", + "_initWithCFURLRequest:", + "_findFirstValidKeyViewStartingFrom:inTabViewItem:", + "_typeString", + "_setFlags:", + "knownKeyValuesForObjectID:withContext:", + "readableTypes", + "initWithContentRect:styleMask:backing:defer:slideshowPanel:", + "authenticateName:withPassword:authOnly:", + "attributedStringValue", + "attributeName", + "newObjectIDForEntity:pk:", + "createImageDataForManager:withOptions:", + "_proxyNonGCFinalize", + "_drawTabViewItem:inRect:", + "subrows", + "initWithRegistryString:andObjectClass:", + "drawInView:", + "openRoot:", + "setAnnotationNeedsDisplay:padding:", + "isMPEG", + NULL, + "animationShouldStart:", + "_totalHeightOfTableView", + "_computeColorScaleIfNecessaryWithSize:", + "_processPendingUpdates:", + "applyToRequest:", + "_refreshOutputFileURL", + "replaceSubviewWith:", + "initWithFBENode:", + "dropOverCell", + "appendObjectClassDeclarationToAETEData:", + "_minWidth", + "_shouldHideSubtractButtonForSlice:", + NULL, + "saveCofigurationUsingName:", + "_buttonCellInitWithCoder:", + "_NSNibHelpStringForUIItem:binding:", + "executeRefreshRequest:withContext:", + "controlCharacterSet", + "_buildSlideShowIndexesArray", + "initWithResumeInformation:", + "_isLastMultiValue:", + "hidePalettes:", + "_wantsUserCancelledOperation", + "registerObject:withServicePath:", + "updateHelpResults:", + "_processNotifications:", + "_fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:", + "timeForKeyFrame:controlType:", + "setResourceLocator:", + "_unaffixedMarkerForItemNumber:", + "zoomActualSize:", + "_changeMediaBrowserTypeTo:", + "lengthOfBytesUsingEncoding:", + "_updateTrackingLocation:", + "_childrenForNode:", + "_validateCachedVirtualScreen", + "_moveToNextBlock", + "_registerUndoForDeletedObjects:withDeletedChanges:", + "_neighbourhoodIndexesWithCacheSize:cellSize:", + "nts_Connect", + "sharedKeychainSavePanel", + NULL, + "drawHoverTarget", + "_setRemovalNeeded:", + "_viewDetaching:", + "setDefaultLineWidth:", + NULL, + "readToEndOfFileInBackgroundAndNotifyForModes:", + "internalSetScaleFactor:", + "buttonHeight", + "_setupIPAddresses:numIPAddresses:inCEGeneralNames:", + "nts_ClearTemporaryCache", + "setTimeZoneName:", + "backgroundColor", + "_replyToOpen:", + "_scriptingValueForSpecifier:", + "findNextOccuranceOfAttributeNamed:startingRange:", + "_usesATSTypesetter", + "_setIsEnabled:", + "addIndexLabel", + "setStatusMenu:", + "deadKeyState", + "wantsToDrawIconInDisplayMode:", + "authenticationList", + "HTMLFileWrapper", + "convertFont:toFace:", + "initWithObject:", + "canonicalLanguageIdentifierFromString:", + "addMaxLenToDictionaryRef:", + "observationCount", + "replaceCharactersInRange:withRTFD:", + "quality", + "_drawSourceListHighlightInRect:", + "_forgetObject:propagateToObjectStore:removeFromRegistry:", + "setSpellingState:range:", + "_synchronizeWindowTitles", + "setupTooltipView", + "_tryFileLock", + "resourceData", + NULL, + "accessibilityCharacterRangeForPosition:", + NULL, + "_drawThemeBezelBorder:inRect:", + "rectForBorderWidth", + "instancesRespondToSelector:", + "_setDrawingBackground:", + "actionHasEnded:sender:", + "addressBookDataFile", + "registerSnapshots:", + "keyEquivalent", + "_clockAndCalendarTakeDisplayedMonthFromTodaysDate", + "classDescription", + "exportedText:forFile:", + "sharedDragManager", + "_shiftRight:", + NULL, + "didPopRenderState:", + "_configureHistoryControl", + "_inBackgroundLayout", + "propertyTypesForRecordOfClass:", + "lockBeforeDate:", + "configurationPaletteIsRunning", + "portForPoint:inNode:bounds:", + NULL, + "_doImageDragUsingRows:event:pasteboard:source:slideBack:", + "rangesForUserTextChange", + "accessibilityFilenameAttribute", + "_beforeDrawRow:clipRect:", + "_displayLDAPServerSheetOrPanel", + "_initWithGraphicsPort:flipped:carbonOffscreen:", + "_contentRectIncludingToolbarAtHome", + "handlePathname:", + NULL, + "addLineEndingStylesToDictionaryRef:", + "subrowGroup", + "_setPlaceHolder", + "_configureSynchronousMode", + "cellAtRow:column:loaded:", + "attributeDescription", + "makeThumbnailTopPriority:", + NULL, + "_setUsesFastJavaBundleSetup:", + "_allowAnimated_setHidden:", + "keyForParameter:", + "volume", + "_setRowTypeToAddFromPlusButton:", + "_errorWithErrno:atPath:", + "setNoImage:", + "selectItemAtIndex:", + "_parseFonts", + "getLocalizedFormattedDisplayLabels:andLocalizedFormattedDisplayValues:", + "nullNode", + "_depopulateOpenRecentMenu:", + "entityDescription", + "fontWithDescriptor:textTransform:", + "internalForDomains:Categories:Objects:Manager:", + "setMovieControllerView:", + "addSuiteNamed:", + "synchronizeTableViewSelectionWithStringValue:", + "_doPrintFiles:withSettings:showPrintPanels:", + "defaultColorSpace", + "_cachedDisplayValue", + "setNeedsDisplayForNode:", + "_vCard30RepresentationOfRecords:", + "terminateResolutionData", + "setBackgroundLayoutEnabled:", + "preservesContentDuringLiveResize", + "portsForMode:", + NULL, + "_itemCanBeDraggedInTemporaryEditingModeFromPoint:", + "setCountryName:", + "stateKeysForIdentifier:", + "sharedFilterPanel", + "mainScreen", + "addChildWindow:ordered:", + "cellAtIndex:", + "refreshObjects:", + "setForeignKeySlot:int64:", + "usesLocalContextForIdentifier:", + "initWithProperties:quartzFilter:", + "initWithAttributeName:", + "helpAnchor", + "_sortDescriptors", + "_drawSelectionRingWithColor:width:forNode:bounds:", + "setupDrawingState:page:", + NULL, + "fire", + "orderFront:", + "_removeWindowFromCache:", + "_hasTitle", + "addPort:forMode:", + "_shieldingWindowLevel", + "objectForServicePath:app:doLaunch:limitDate:", + "_pwaDidUpdateNewPasswordField:", + "_scriptingIntegerWithDescriptor:", + "isPreview", + "_dealloc", + "setParamDescriptor:forKeyword:", + "_viewFromCompoundTypes:", + "redComponent", + "abDecodedUTF7", + "_writeDataForkData:resourceForkData:", + "addPropertiesAndTypes:forClass:withAddressBook:acquireLock:save:", + "_setKeyCellNeedsDisplay", + "initAddressWithData:", + "parseAlternativeName:", + NULL, + "convertSize:fromView:", + "_selectionStateChanged:", + "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:", + NULL, + "_userCanEditTableColumn:row:", + "pushDelayedPerformWithTarget:selector:object:soon:", + NULL, + "_prepareToRunForSavePanel:withFilepath:", + "_enableChangeNotifications", + "_loadSearchKinds", + "CGBitsPerComponent", + "_createStatusItemControlInWindow:", + "setSearchState:", + "region", + "clickedOnLink:atIndex:", + "_setPasswordStrengthTitleString:", + "_web_backgroundRemoveLeftoverFiles:", + "stopGrabbing", + "accessibilitySubroleAttribute", + "makeSelectedPrimary:", + "moveToX:andY:", + "widgetInView:withButtonID:action:", + "_postRuleOptionChangedNotification", + "floatValue", + "_updateQueryString:", + "_removeTargetAnimation:start:", + "getAppleUseCoreUI", + "propertyTypesWithAddressBook:", + "deserializeNewString", + "_nodeResignsFirstResponder:", + "_scriptingCanSetValue:forSpecifier:", + "setAllowAliasing:", + "superviewFrameChanged:", + "_doLookupAnchor:inBooks:", + "_web_splitAtNonDateCommas_nowarn", + "selectedItemIdentifier", + NULL, + "speechRecognizer:didRecognizeCommand:", + "greySliderFrameChangedNotification:", + "addChildren:", + "conditionallySetsHidden", + "_parseKey:value:errorDescription:", + "setBeginTime:", + "removeImmediately:", + "isDeadKeyProcessingEnabled", + "_chooseSizeFromSlider:", + "setNextActions:forDocument:", + "fractionOfDistanceThroughGlyphForPoint:", + "_setCertificates:", + "whiteComponent", + "nts_AddRecordsOfClass:fromDictionaryRepresentations:recordsByUniqueId:", + "accessibilityTextLinks", + "_widthForStringRange:", + "sharedIndex", + "searchFrameInScreenCoordinates", + NULL, + "runModalForDirectory:file:types:relativeToWindow:", + "initWithProperty:label:key:value:searchPeople:searchSubscribed:comparison:", + "_editQueryButtonClick:", + "startGrabbingForReceiver:", + "_generateFindIndicator", + "_objectValue:forString:errorDescription:", + "attributeMappings", + "setMipmapSizes:", + "_setZoomValue:", + "setOnOpenGLContext:unit:fromBounds:withTarget:mipmappingLevels:matrix:", + "selectedIndexes", + "download:didReceiveDataOfLength:", + "accessibilityIsSharedCharacterRangeAttributeSettable", + "buttonImageNamePrefixForButtonState:", + "updateQueue:", + "_handleRecognitionDoneWithRecognitionResult:", + "glyphInfoWithCharacterIdentifier:collection:baseString:", + "performRenderTimeLayoutModifiers:", + "rollbackChanges", + NULL, + "readOnly", + "_setCanUseReorderResizeImageCache:", + "setShownAboveComboBox:", + "_preferAlternateContent", + "nts_hasUnsavedChanges", + "_doInsertMember:inMemberList:", + NULL, + "visualMovieBoxIsOpaque", + "dispose", + "statistics", + "positionsForCompositeSequence:numberOfGlyphs:pointArray:", + "fileHandleForWriting", + "_endTableRow", + "_innerTrackRect", + "smemapROI:forRect:", + "close", + "addTypesToArray:ofType:useExtension:useNewFileImporters:useAggressive:", + "_readSelectionFromState:toPoint:", + "_startInsertionOptimizationWithDragSource:", + "setOriginalDontInteractFlag:", + "forcePromise:", + "_setShadowStyle:", + "minusSign", + "libxml2Content", + "_realDoModalLoopForCarbonWindow:peek:", + "itemsCount", + "_controlInterspace", + "entryForProperty:withComparison:", + "dragImageForIndexes:withEvent:offset:", + "_setupIndexSheet", + "_setEnabledAttributesOnCell:", + "_dontSaveButtonTitle", + "recordClassFromUniqueId:", + "heightFieldFrom:radius:initial:constraint:", + "_layoutUpdated:", + "image:withOpacity:", + "_setKeyViewLoopNeedsRecalc:", + "_swapContextForCarbonDrawing:", + "mailRecentsCoreDataDatabaseFile", + "initForManagedObjectContext:", + "accessibilityBoundsForCharacterRange:", + "_unsetFlags:", + "_firstMatchingProperty:", + "_characterCannotBeRendered:", + "setNSImage:", + "addConnection:toRunLoop:forMode:", + "autoscrollWithLocalPoint:andSensitiveMargin:", + NULL, + "keepReorderingItems", + "_placeHelpWindowNear:", + "boundsDidDidChange:", + NULL, + "_embossedActiveForegroundTextColor", + "_ADKeySet", + "setAttributedStringForNotANumber:", + "_pullsDown", + "IKIPMakeDirectoriesInPath:mode:", + "_testPredicatesMatchRecordInStore", + "searchPeople", + "takePicture", + "subgroups", + NULL, + "_validateValue:forKeyPath:ofObjectAtIndex:error:", + NULL, + "setAutoresizesSubviews:", + "valueInCharactersAtIndex:", + "maximumCacheSize", + "_autoCreateBinderForObject:withController:", + "_objectMatchesFetchPredicate:", + "initLockWithSession:path:", + "_keyForLocalizedKey:", + "windowShouldClose:", + "initTextCell:", + "abortOperation", + "_switchTabViewItem:oldView:withTabViewItem:newView:initialFirstResponder:lastKeyView:", + "_adjustWindowToScreen", + "row", + NULL, + "isProxy", + "containsAmbiguousPaths:inCategory:replacingNode:subtreeWith:", + "_enteredFullscreen", + "_inputWhiteParams", + "splitCells", + "_animationIdler:", + "accessibilityOrientationAttribute", + "_sendFileSystemChangedNotificationForSavePanelInfo:", + "toggleIsExpanded:", + "setSmartInsertDeleteEnabled:", + "_dateByTranslatingLongDateTimeDescriptor:toType:inSuite:", + "fontDescriptorWithFamily:", + "setRowsPerScreen:", + "serverName", + "initWithAffectedRange:layoutManager:undoManager:", + "_avgForKeyPath:", + "_finalize_QCCache", + "dealloc", + "CI_arrayWithAffineTransform:", + "setUsesSignificantDigits:", + "CA_attributes", + "editingStringForObjectValue:", + "getAppearancesFromDictionary:ofType:", + "thousandSeparator", + "_decreaseContainerReferenceCounter", + "spoolPath", + "imageWithRenderer:userData:renderSize:renderContext:options:", + "_specialPurposeType", + "autoupdatingCurrentCalendar", + "setHasHorizontalScroller:", + "_createSliceDropSeparator", + "_showCertButton", + "collapseItem:collapseChildren:", + "_setupOpenGLContext", + "_setKeychainName:", + NULL, + "_setZoomFactor:", + "_setQCView:", + "closeWidgetInView:withButtonID:action:", + "defaultNeutralTemperature", + "previousText", + "_handleCoreEvent:withReplyEvent:", + "_boundsForCellFrame:", + "removeOldestIcon", + "_addTypeParentsAndType:toSet:", + "dmCreateWithSession:data:props:URI:", + "_setupKernelStandardMode:", + "setObjectForCurrentRecognition:", + "occurrence", + "treatNilValuesLikeEmptyCollections", + "_getDVVideoInfo:fromFigSampleBuffer:", + "_setNeedsDisplayForDropCandidateRow:operation:mask:", + "filesystemItemMoveOperationWithSourcePath:destinationPath:", + "_changeDrawerFirstResponder", + "parseSingleValue", + "reconcileToSuiteRegistry:suiteName:className:", + "_glyphHoleDescription", + "_noteToolbarSizeModeChanged", + "_referenceArray", + "setPrimitiveSortingFirstName:", + "_previousNextTab:loop:", + NULL, + "_turnOffVerticalScroller", + "reloadContext", + "setItemType:", + "_message:", + "removeItemWithIdentifier:", + "segmentedBufferLength", + "doButtonHit:", + "_setTextColorInObject:mode:compareDirectly:toTextColor:", + "_fixUpDatePickerElementFlags", + "_setUserRFC822Name:", + NULL, + "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:considerNulls:", + "setUsesGroupingSeparator:", + NULL, + "openCategoryFile:", + "_scriptingTextWithDescriptor:", + "compact", + "_setFrameAutosaveName:changeFrame:", + "loadDisplayBundle:", + "inputBottomLineParamsAtIndexes:", + "relationshipDescription", + "underline:", + "initWithTextureSize:textHeight:", + "_iChatSigningUsage", + NULL, + "convertRectFromDocumentToView:", + "set:containsEntity:", + "RTF", + "doConvolutionPass:weights:sums:", + "resumeRendering", + "previewHelperClass", + "_storeNewColorInColorWell:", + "_registerNotificationsForWindow:", + "_cellInitWithCoder:", + "CIFormat", + "_refreshesAllModelKeys", + "mutableCopyWithZone:", + "invertedSet", + NULL, + "mouseLocation", + "unbindActions", + "_isEventProcessingDisabled", + "_setColorToChange:", + "returnsObjectsAsFaults", + "setProperty:forKey:inRequest:", + "canonicalString", + NULL, + "setIsPrimary:", + "sharedServiceMaster", + NULL, + "hasApertureModeDimensions", + "_checkCardAndColumns", + "setCopiesOnScroll:", + NULL, + NULL, + NULL, + "lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:", + "initJava2", + "_autoscrollDelay", + "tokenField:setUpTokenAttachmentCell:forRepresentedObject:", + NULL, + "_removeToolTip", + "_mergeTableCellsHorizontally", + "setHorizontalPageScroll:", + "_setHelpKey:forObject:", + "_needsDisplayfromColumn:", + "setAutoScales:", + "methodForSelector:", + "applicationDidUpdate:", + NULL, + "setBrightnessOnAllDisplays:", + NULL, + "dateWithTimeIntervalSinceNow:", + "_setImageAndNotifyTarget:", + "coerceColor:toString:", + "_logicalTestFromDescriptor:", + NULL, + "_unregisterForDocViewFrameAndBoundsChangeNotifications", + "buttonImageSourceWithName:", + NULL, + NULL, + "titleForAccessibleChildAtIndex:", + "sharedKeyBindingManager", + "didEndSheet:returnCode:contextInfo:", + "_alignColumnForStretchedWindowWithInfo:", + NULL, + "_setInactiveStateShowsRollovers:", + "_chooseCollection:", + "TIFFRepresentationOfImageRepsInArray:", + "initWithColor:", + "_cleanupHelpForQuit", + "initWithRulerMarker:parent:", + "_scrollingDirectionAndDeltas:", + "forInfoKey:addKey:fromDictionary:toArray:", + "setTrackMouseCoordinates:", + NULL, + "referenceURL", + "startObservingModelObject:", + "_allocExtraData", + "_registerWithDock", + "_frameForButtonOnTheRight:", + "removeValueAtIndex:fromPropertyWithKey:", + "dictionaryRep", + "unregisterWindowNotifications", + "tokenFieldCell:shouldAddObjects:atIndex:", + "notationName", + "_resizeToolbarViewToFit:", + "animationForKey:", + "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:", + NULL, + "setMarkedText:selectionRange:replacementRange:validFlags:", + "_minXTitleOffset", + "_manuallyDrawSourceListHighlightInRect:", + "actionForApparentlyAbandonedLock:onAttempt:", + "_downloadFile:toPath:", + "nts_AffectsSmartGroupsIsNew:record:", + "_hitTest:dragTypes:", + "selectAll:", + NULL, + "sortedArrayUsingDescriptors:", + "_clipIndicator", + NULL, + "shownValueInObject:", + "writeToFile:atomically:encoding:error:", + "nts_initWithDatabaseImpl:addressBook:", + "smallestEncoding", + "extent", + "_glyphLocationDescription", + "_setMultiValueIfNeeded:withLabel:inMultiValue:", + "didRefresh:", + "addPauseButton", + "_handleChildrenChanged:", + NULL, + "promotedImage:", + "initWithBadAuthResponse:username:password:", + NULL, + "_setCurrentWidth:", + "fontDescriptorWithFontAttributes:", + "setImplementor:atIndex:", + "_generateSQLType2InContext:", + "imageByCroppingToRect:", + "_title:", + "tooltipText", + "characterEncoding", + "headerCell", + "scheduleCameraPictureNotificationAfterDelay:", + "addItemWithObjectValue:", + "setDataRef:", + "lowercaseWord:", + "_setFileName:", + "openGLPixelFormat", + "clearStartAnimation", + "imageFrame", + "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:", + "_setInputExtent:", + "autoResizeToRect:clipView:", + NULL, + "_createLayerAndInitialize", + "reenableDisplayPosting", + "initWithView:withParent:", + NULL, + "waitUntilDate:", + "symbolicTraits", + NULL, + "setHeaderToolTip:", + "selectionForRange:", + "_allocateExtraFields", + "defaultLanguageContext", + "_updateFrameWidgets", + "isSimpleKeypath:", + "_initTextRenderer", + "_checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:", + "stripesAt:width:angle:softness:phase:red1:green1:blue1:alpha1:red2:green2:blue2:alpha2:", + "locationY", + "contentBinder", + "userServer:", + "initWithEntity:foreignKey:", + "imageWithBitmapData:bytesPerRow:size:format:colorSpace:", + "initWithMenu:item:", + "setString:forType:", + "_executeWithMode:andReturnError:", + "startSelectionProcess:", + "_stopAnimationCompletingOperations:", + "implementorAtIndex:", + "insertObject:inNamespacesAtIndex:", + "_rowArrayForBlock:atIndex:text:layoutManager:containerWidth:withRepetitions:collapseBorders:rowCharRange:indexInRow:startingRow:startingColumn:previousRowBlockHelper:", + "localizedStringForProperty:", + "valueForIdentifier:", + "convertToRGBA:", + "elementAtIndex:effectiveRange:", + NULL, + "drawTextContainer:withRect:graphicsContext:baselineMode:scrollable:padding:", + "alternateTitle", + "setupInspectorViewsForNode:", + "setWhitespace:", + "_setVisible:", + "_removeSpellingAttributeForRange:", + "valueForAttribute:", + "_setKeyCellFromTop", + "subscriptions", + "_appendArcSegmentWithCenter:radius:angle1:angle2:", + NULL, + NULL, + "_displaySelectedCard", + NULL, + NULL, + "_clearImageForLockFocusUse", + "setVisibilityPriority:", + "deleteWordForward:", + "colorForTimeLine:", + "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:", + "_setFrameAfterMove:", + "buttonType", + "_parseContentsDictionary", + "serializedValueForKey:", + "drawAnnotationsWithBox:", + "accessibilityIsContentsAttributeSettable", + "_execute:arguments:", + "_removeObserver:notificationNamesAndSelectorNames:object:", + "_appkitViewBackingLayerUniqueMethod", + "_selectOrEdit:inView:target:editor:event:start:end:", + "redoIt", + "cropBounds", + "getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:", + "setDataRepresentation:", + "loadPlugInsInFolder:withExtensions:", + "stopPlayer:", + "_autosaveDefaultsKeyForName:", + "initWithCharacterSet:", + "_continueRunWithStartTime:duration:", + "makeUntitledDocumentOfType:error:", + "_calendarRangeOfAllDaysForDisplayedMonth", + "lowercaseString", + "takeValue:forKeyPath:", + "otherMouseDownDelegate:", + NULL, + "deserializeIntAtCursor:", + "__redrawBounds:", + "_cacheObjectValue:", + "handleAnimationProgress", + "setDomainName:", + "doRemoveAnnotaion:", + "shouldManageVisibilityForPreviewView:", + "adjustedRectForBox:", + "_old_encodeWithCoder_NSTableView:", + "getTransform", + "applyObjectValue:forBinding:operation:needToRunAlert:error:", + "doesContain:", + "succeeded", + "boundsForControlAtIndex:", + "beautifyMetaData", + "fromValue", + "_clearUnprocessedDeletions", + "getReturnValue:", + "_setHighlightedLayer:animate:update:", + "_unmarkEventFromString:", + "allMipmapItemsAreValid", + "coerceString:toTextStorage:", + "endIgnoreChanges", + "textColorAtIndex:", + "initWithContainer:key:mutableSet:", + "autoScales", + "setBrowserType:", + "pushGlyph:", + "CI_arrayWithRect:", + "_sortObjects:", + "_shouldShowInlinePreview", + "accessibilityIndexAttribute", + "_valueWithOperatorKeyPath:", + "setInternationalCurrencySymbol:", + NULL, + NULL, + "_shouldStealHitTestForCurrentEvent", + "collectionView", + "dictionaryWithObjects:forKeys:", + "helpRequested:", + "buttons", + "appendField:label:withText:", + "_parse", + "_currentFileModificationDate", + "removeRows:", + "_saveDocuments:", + "decodeNXColor", + "characterIsMember:", + "parseBasicConstraints:", + "launchedApplications", + "attributesByName", + "editableBinder", + "selectionType", + "dataToSave", + "sourceInfoForAddress:", + "fileNameFromRunningSavePanelForSaveOperation:", + "updateReferenceIndexesToReflectInsertionAtIndexes:", + "resultAtIndex:", + NULL, + "indexForKey:", + "_scrollViewForColumnsDocumentViewVisibilityChange:", + "_sendProgress:", + "_lineBorderColor", + "_allocateObserationStorage", + "initWithStore:", + "_containerAtIndex:traversingBackward:inContainerTree:ofDepth:", + NULL, + "thumbnailsFitOnScreen", + "_entryForPath:", + "lastDirectoriesSearchString", + "generateTexts:withAttributes:atIndex:renderMode:", + "_applicationDidActivate:", + NULL, + "_setChild:forUniqueName:", + "selectedItem", + "_setCursorForCurrentMouseLocation", + "hasNonContiguousLayout", + "punctuationCharacterSet", + "_setPendingInsertion:", + "pixelFormatRGBA8", + "_bytesAreVM", + "_menuRepresentationIsDefault", + "comboBox:completedString:", + NULL, + "nextWordInString:fromIndex:useBook:forward:", + "convertFont:toNotHaveTrait:", + "_noteAutosavedContentsOfDocument:", + "_createFileIfNecessary", + "setIMChineseName:", + NULL, + "optimizeCaches", + "frequency", + "nts_InitializeDatabase", + "adjustToUTType:", + NULL, + NULL, + "_temporaryAttribute:atCharacterIndex:effectiveRange:", + "URLWithAttributeString:", + "getOutputImage", + "_rankIndicatorSize", + "setAllowsUserCustomization:", + "_lockUnlockCachedImage:", + "scanFloat:", + "initMkcolWithSession:URI:token:", + NULL, + "_systemColorsChanged:", + NULL, + "saveCustomOutputPortStates:toState:", + "_invalidateLiveResizeCachedImage", + "buildWhereClauseWithSelectPredicate:", + "setMirrorMode:", + "_ciContext", + "adapterOperator", + NULL, + "ruleEditor:canSelectCriterion:andDisplayValue:inRow:", + "isStandalone", + "addNewPropertiesToRecipe:", + "willDie", + "outlineExpandCollapse:", + "_web_createFileAtPath:contents:attributes:", + "processMetaData:", + "_openRecentDocument:", + "retainBindingTargetAndUnbind", + "strokeLineFromPoint:toPoint:", + "userSelection", + "accessibilityIsCancelButtonAttributeSettable", + "comparisonPopUpFrame", + NULL, + "_ensureMetadataLoaded", + NULL, + "setRecentsPopUpHidden:", + "directoryContentsAtPath:", + "_addSource:", + "_doubleClickAtIndex:limitedRangeOK:", + "userFullName", + NULL, + "_uploadPath:toPath:", + "_cacheSelectedObjectsIfNecessary", + "setBinderSpecificFlag:atIndex:", + "setInputValuesWithPropertyList:", + "_enclosingBrowserForControlView:", + "setAutohidesScrollers:", + "_windowInitWithCoder:", + "migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:", + "localizeOptionDictionaries:", + "_renameChild:toName:", + "annotationAtPoint:", + "_cycleWindows:", + "syncingEnabled", + "notifyListenersForUpdate:", + "imageSizeForCellSize:withAspectRatio:", + "initWithXMLString:", + NULL, + "rangeOfTextTable:atIndex:", + "audioChannelLayout", + "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:", + NULL, + "_setFrameNeedsDisplay:", + "setCellBackgroundColor:", + "pauseAnimation", + "reloadAll:", + "_saveConfigurationUsingName:domain:", + "setPaddingPosition:", + "menuForGraph", + "spellServer:didLearnWord:inLanguage:", + "setBoundsOrigin:", + "setMessage:", + "registerForFilenameDragTypes", + "currentInputContext", + "toolPath", + "insertNewButtonImage:in:", + "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:", + "qtUtilities", + "_updateCell", + "_realControlTint", + "cameraStatusDidChange:", + "_stringForNode:property:", + "_updateCellImage:", + "bindTextureRepresentationToCGLContext:textureUnit:normalizeCoordinates:", + "setUpPrintOperationDefaultValues", + "iSightRanOffWithItsListener:", + "dateValueYear", + "insertCompletion:forPartialWordRange:movement:isFinal:", + "maxResults", + "setClientView:", + "setOrientation:anchorPoint:", + "powerOffIn:andSave:", + "_inPreview", + "_calendarDayNamesStringForFirstWeekday:", + NULL, + "_wantsToolbarContextMenu", + "contents", + "optionDescriptionsForBinding:", + "_initParticle:atTime:", + "_forceSuccess", + "keysSortedByValueUsingSelector:", + "setIsEmpty:", + "registerServiceProvider:withName:", + "_calcTrackRect:andAdjustRect:", + NULL, + "windowDidChangeScreenProfile:", + "jobTitle", + "pixelColorModel", + "initWithIconRef:size:", + "_inputTopLine", + "_nonRepudiationUsage", + "setImagingModeAllowsVisualContext:", + "tableView:shouldShowCellExpansionForTableColumn:row:", + "drawArrow:highlightPart:", + "publicRecordClassFromUniqueId:inAddressBook:", + "moveToEndOfDocument:", + NULL, + "cachedSQLiteStatement", + "_lastLeftHit", + NULL, + "instantiateView", + "authenticateName:withPassword:", + "requestUserAttention:", + "_shouldShowFirstResponderAtRow:column:ignoringWindowKeyState:", + "initForView:", + "key:", + "validateAdditionalHeightToRow:", + "_memoryCacheAppendNodeToLRUList:", + "nts_hasUnsavedMailRecentsChanges", + "_editingIsPossibleForColumn:row:", + "_colorForMouseEvent:", + "predicateForRow:", + "_addKeychainItem:", + "cameraPictureNotification:", + "_isRuleStaticTextField:", + "hitTestForEvent:inRect:ofView:", + "_containerDescription", + "applicationDidResignActive:", + NULL, + NULL, + "_embossedOffsetTextColor", + "writeBody", + "nestingMode", + "_defaultGroupViewIfUsed", + "initWithIndexes:length:", + "_baselineRenderingMode", + "_attributeRunForCharacterAtIndex:", + "alphaComponent", + "setMode:", + "recentRepository", + "removeColorWithKey:", + "CA_stringByAppendingPathComponent::", + "_editNoteAtIndex:", + NULL, + "indexOfItemAtPoint:", + NULL, + "IKIPContainsObjectIdenticalTo:", + "stupidKitWorkaround", + "_invalidateTimeMode", + "setStopError:", + NULL, + "_getResolvedNavNodeForFilename:", + "_setupOverlayLayer", + "sharedEmptyIconViewCell", + "controlsFixedForKeyFrame:", + "_rowHeaderFixedContentRect", + "_labelAttributes", + NULL, + "setDefaultButtonTitle:", + "brightColor", + "initWithGroup:records:addressBook:", + "accessibilityArrayAttributeValues:index:maxCount:", + "cellFrameAtIndex:", + "setFrameTopLeftPoint:", + "setGenericView:", + "_executeAddChild:didCommitSuccessfully:actionSender:", + "documentForURL:", + NULL, + "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:", + "getValueForKey:", + "currentAppleEvent", + "_locationForPopUpMenuWithFrame:", + "initWithCyan:magenta:yellow:black:alpha:", + "_rectWithSingleThickness:", + "setRectSetBeingDrawn:forView:", + "setLocation:withAdvancements:forStartOfGlyphRange:", + "_topMenuView", + "rightMouseDragged:", + NULL, + "syncStateForKeychain:", + "_removeTrackingRect:", + NULL, + NULL, + "_accessibilityIndicatorRect", + "accessibilityIsEditedAttributeSettable", + "_deallocAuxiliaryStorage", + "updateInvalidatedObjectValue:forObject:", + "initWithQCImageKernelPatch:", + "rotateImageLeft:", + "_coreUILinearState:", + NULL, + "issueCommand", + "_minWidthForPass:forView:withProposedMinWidth:", + NULL, + NULL, + "getBagdeBackgroundForObjectCount:", + "isPartialStringValid:newEditingString:errorDescription:", + "hasImageWithAlpha", + "pixelFormatM_I8", + "runLoop", + "setNumberStyle:", + "setRootObject:", + "decodeColumns:", + "isEqualToDictionary:", + "newZoomButton", + "kaleidoscopeROI:forRect:userInfo:", + "saveSyncList", + "setImage:", + "populateWithDictionary:skipUnknownProperties:generateMultiValueIDs:recordIsNew:", + "_atEndOfTextTable:atIndex:", + "setDisplayedCard:withHistory:", + "processEndElement:", + "resource", + "convertScreenToBase:", + "negativeFormat", + "setSourceView:", + "scheduleTrickleSyncAndAllowLocking:", + "_adjustSheetEffect", + "realm", + "_registerMenuForKeyEquivalentUniquing:", + "_destroyRealWindow", + "_needsDisplayfromRow:", + "hyphenGlyphForFont:language:", + "me", + "startRendering:", + "writeLinkInfo:", + "writeToURL:options:error:", + "_localizedNameForColorWithName:", + "_maxXmaxYResizeRect", + "stateImageOffset", + "runInNewThread", + NULL, + "matchesRecord:", + "initWithOperation:", + "upToDateImageForEmail:", + "_doCommandBySelector:forInputManager:", + "selectionShouldUsePrimaryColor", + "_addToolTipRects", + "findMatchingWindowInWindowList", + "previewView:doubleClickedForURL:", + "endFetch", + "setMCDraggable:", + "connection:willSendRequest:redirectResponse:", + "setDatePickerElements:", + "_setOrientation:inPageFormat:", + "linkToURL:", + "columnIndexesInRect:", + NULL, + "disposeAudio", + "_shouldSendObserverNotificationForModelOrProxyKey:keyPath:ofObject:", + "_setInstallPending:", + "_setAttributes:isMultiple:", + NULL, + "imageInterpolation", + NULL, + "_isGeneratedClass", + "commonResetForm:inclusive:", + "contentLayer", + "dynamicToolTipRevealoverInfoAtPoint:trackingRect:", + "_hasSurface", + "defaultMenu", + "coalesceAffectedRange:replacementRange:selectedRange:text:", + "_drawDropHighlightAboveRect:", + "_scrollRowToVisible:animate:", + "_useMetalPattern", + "setDefaultAttachmentScaling:", + NULL, + "_currentApplication", + "_addSubfieldForElement:withDateFormat:stringValue:alternateStringValue:", + "exportRecords:", + "computeHostname", + "propertyLineForGenericABProperty:vCardProperty:is21:groupCount:", + "countOccurrences:", + NULL, + "segmentedRawBufferForResolution:", + "dateWithString:", + "_drawCenteredVerticallyInRect:", + "setDefaultPlaceholder:forBinding:onObjectClass:", + "initWithName:elementNames:", + "importPumaAddressBook:", + "updateOptionsWithApplicationIcon:", + "createUniqueKey:", + NULL, + "setHour:", + "loadPlugIn:allowNonExecutable:", + "_validItemViewerBoundsAssumingClipIndicatorShown", + "reenableFlush", + "_copyDisplayNameForKey:value:", + "setSQLString:", + NULL, + "setShowsPrintPanel:", + NULL, + "autoResizeToRect:clipView:allowZoomIn:", + "_validateEntryString:uiHandled:", + "_leftmostInsertionIndexForNode:inOrderedNodes:", + "_doDetachDrawer", + "_forgetObject:propagateToObjectStore:", + "transformedScaledImageSize", + "accessibilityChildrenAttribute", + "startAnimation", + "processInputKeyBindings:", + "mouseEntered:", + "setEditingCanceled:", + "initWithPanel:", + "windowLevel", + "renderLevel", + NULL, + "scrollSelectionToVisible:", + "getMagnificationFilter", + "accessibilityTopLevelUIElementAttribute", + "_replaceAccessoryView:with:topView:bottomView:previousKeyView:", + "attributesForResultPortWithInfo:name:index:", + "_indexesToPrefetch", + "application:openFiles:", + "httpStatusCode", + "controlHeight", + "hasNameData", + "contentWidth", + "_cancelAutoExpandTimer", + "morphologyInitROI:destRect:userInfo:", + "_removeHiddenWindow:", + NULL, + NULL, + "_rendererPropertyValue:", + "noteFontFavoritesChanged", + "updateWithinDateTense", + "_countPartsInFormat:", + "removeSubItem:", + "pathControl:acceptDrop:", + "setMaxValue:", + "_outlineView", + "_classNameForType:", + "setInactiveColor:", + "releaseFxPicker:", + "_setBox:enabled:", + "_viewIsEnabledAtIndex:", + "drawsBackground", + "isEditableByThisApp", + "initWithModel:entityDescription:", + "showsHelp", + NULL, + "isPreviewColumn", + "_unregisterForNotifications", + "ok:", + "initWithWindowNibPath:owner:", + "initWithSession:", + "_progressBarRect", + "_trackButton:forEvent:inRect:ofView:", + "openInSeparateWindowWithoutAsking", + "firstRange", + NULL, + "_setConsistencyCheckingEnabled:superCheckEnabled:", + "tagForNSTag:", + "_mainWindow", + "managerForNodeNamespace:", + "_removeSortDescriptorForTableColumn:", + "_preferedColumnWidth", + "selectCompositionIfNeeded", + "sqlTypeForPropertyAtEndOfKeyPath:", + "bundleIdentifier", + "_defaultMetadata", + "hashFunction", + "bind:toLayer:", + "shapeZ", + "partialObjectKey", + "descriptorWithEnumCode:", + "_switchInitialFirstResponder:lastKeyView:forTabViewItem:", + "_changeIntAttribute:by:range:", + "initPropPatchWithSession:path:patchProperties:deleteProperties:", + "willHaveItemsToDisplayForItemViewers:", + "setServiceType:", + "_emptyContents", + "fixAttributesInRange:", + "externalDataForSourceObjectID:key:timestamp:", + "leaveCropMode", + "characterIndexForInsertionAtPoint:", + "_draggedColumnImageInset", + "_QTMovieViewClass", + "_isGUIDUnique:", + "drawForPage:withBox:active:", + "scrollMode", + "setCellSize:", + "_syncFrameMetrics", + "_controlSizeForScrollers", + "showPanel:andNotify:with:", + "_drawBezelWithFrame:highlighted:inView:", + "contentValueKey", + "_indexOfDocumentAtRow:column:", + "_performChangesWithAdapterOps:", + "cacheNodes", + "initWithContainerClassID:key:containerIsa:ivar:", + "textureMatrix", + "setHasViewControls:", + "hasSubentities", + NULL, + "_defaultObjectClassName", + "_finalize_QCImageBuffer", + "_inputImage", + "serializePropertyList:intoData:", + "URLWithQuery:inHelpBooks:", + "awakeFromFetch", + "createResourceWithDownloadedData:sourceURL:", + "_commandDescriptionsFromPropertyListDeclarations:suiteName:", + "limitDateForMode:", + "createRepresentationOfType:withProvider:transformation:bounds:colorSpace:options:", + "_resetMeasuredCell", + "deminiaturize:", + "adjustToPDFView:", + "deletedObjects", + NULL, + "externalScale", + "runOperation", + "setDay:", + "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", + "outputPorts", + "enlargedBounds:withYOffset:andCount:", + "extraLineFragmentTextContainer", + "netServiceBrowserWillSearch:", + "_MOClassName", + "initWithMigrationManager:", + "addRotationLayer:", + "_valueClass:", + "imageWithRenderer:userData:renderSize:renderContext:", + "constraintWithAttribute:relativeTo:attribute:offset:", + "_feedbackWindowIsVisible", + "setWithCapacity:", + "_updateLayerShadowFromView", + "loadNib", + "_dragEndedNotification:", + "getBoundingRects:forGlyphs:count:", + "dstDraggingEnteredAtPoint:draggingInfo:", + "initWithBytesNoCopy:length:freeWhenDone:", + "accessibilityIsHelpAttributeSettable", + "_subrowObjectsOfObject:", + "_webPreferences", + "processEditing", + "setInitialBoundsWithOptions:", + "_findFirstKeyViewInDirection:forKeyLoopGroupingView:", + NULL, + "contextDictionary", + "_lazyFetchResultProxyForObjects:", + "configureForActiveState", + "_setProperty:forKey:", + "observedNodeForExpandedNode:createIfNeeded:", + "variableRows", + "converterForImageManager:", + "setBalance:", + "_sessionData", + "localizedStringWithFormat:", + NULL, + NULL, + "analyzeKeyPath:registerOrUnregister:", + "isReleasedWhenClosed", + "didShow", + "allowGroupSelection", + "_doSomeBackgroundLayout", + "_recursiveGainedLayerTreeHostAncestor", + "selectRowAfterTargetingItem:withMenu:", + "serializedStateKeysWithIdentifier:", + "menuLocation", + "_writeDocumentProperties", + "filterNamesInCategories:", + "_setMenuClassName:", + "saveCustomInputPortStates:toState:", + "bundleWithIdentifier:", + "setGlyphID:forIndex:", + "connectionsForObject:", + "sourceKey", + "_transplantReplacementBackingLayer:", + "_accessibilitySupportedPartCodes", + "precision", + "_drawAnimationStep", + NULL, + "_sendDelegateToolTipForCell:tableColumn:rect:row:mouseLocation:", + "processSignificantWhitespace:", + "nodes", + "removeBinding:", + "_blueKeyboardFocusColor", + "setShouldReportNamespacePrefixes:", + "createCopy:", + "_updateOutputDeviceUniqueIDFromPropertyListener", + "stopSpeaking:", + "_rectOfRowAssumingRowExists:", + "raiseBaseline:", + "addSubrecord:", + "specialColorSpaceWithID:", + "node", + "setUseSSL:", + "automaticallyManageVisibility", + NULL, + "_lastItemIsNonSeparator", + NULL, + "_printSessionAttributeKeys", + "_setLocalizedKeyWithoutKey:", + "searchElementForProperty:label:key:value:comparison:", + "_sendAction:to:row:column:", + "_scrollRect:fromLayer:", + "initWithContentsOfFile:ofType:", + "imageFlowWillStabilize:", + "notificationCenter", + NULL, + "FilterApplyButton", + "setUserInterfaceItemIdentifier:", + "_uiClearField:", + "hitTestWithPoint:", + "dsDirRef", + "noteNumberOfTableRowsChanged:", + "drawTokenWithFrame:inView:", + "specialGroupForAddressBook:", + "pageUpAndModifySelection:", + "centerPanel", + NULL, + "_scriptingValueOfValueType:withDescriptor:", + "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:", + "_delegateRepondsToValidateDrop", + "_setPKINITClientAuthUsage:", + "setSelectedIndex:", + "_layoutThumbnailLayers", + "_bundle", + "setUnsignedInt:", + "_incrementInUseCounter", + "FilterRemoveButton", + "cachePath", + "filepathLabel", + "decimalNumberBySubstracting:", + "connectionWillDeleteFromGraph", + "setDefaultBehavior:", + "sharedRemoteImageLoader", + "setParent:", + NULL, + "_checkForClipViewScrolling", + "copy:", + "_scriptingCanHandleCommand:", + "_previousNibBindingConnector", + "setMenuFormRepresentation:", + "scanHexDouble:", + "_handleAEOpenContentsEvent:replyEvent:", + "threadedGenieFXFromWindow:toWindow:", + "textContainerChangedTextView:", + "_setPrimaryIdentifier:", + "exactlyMatchesFileNameExtensionOrHFSFileType:", + "setIgnoresAlpha:", + "_inputBottomLineParams", + "namespaces", + "printShowingPrintPanel:", + "deserializeNewList", + "initPropPatchWithSession:URI:updatingProps:inNameSpace:", + "primitiveModificationDateYearless", + "searchResultAtIndex:", + "revertToBackupFromPath:", + "fileNameExtensionForType:saveOperation:", + "unlockDelegate", + "_propertyDescriptionForPresentableName:checkSubclasses:superclasses:", + NULL, + "drawBarInside:flipped:", + "_updateMaxIndexFromLabels", + "_scriptingFileWithDescriptor:", + "_defaultTitlebarTitleRect", + "writeColor:type:", + "layoutParameters", + "_finishWritingFileAtPath:byMovingFileAtPath:addingAttributes:error:", + NULL, + "_gridGeometryChanged:", + "findOnPage", + "accessibilitySetSizeAttribute:", + NULL, + NULL, + "recentIsACustomRecent:", + "setPreferredFontNames:", + "_updateNodeList:forChangedProperty:ofNode:", + "complete:", + "_processOwnedObjects:set:boolean:", + NULL, + NULL, + "_computeStepsInSequence:withConverters:softwareOnly:accelerated:sourceTarget:sourceFormat:sourceColorSpace:destinationTarget:destinationFormat:destinationColorSpace:transformation:bestScore:baseCost:inLoop:", + "_setDefaultButtonCycleTime:", + "_setHIViewIsDrawing:", + "_scrollFirstVisibleColumnIntoView", + "_startTimeOutWithSelector:documentPreview:object:stopOnCondition:", + "flushTextForClient:", + NULL, + "_validatePaginationAttributes", + "urlForEmail:", + "getDirInfo:", + "infoDictionary", + "setSpeechFeedbackServicesTimer:", + NULL, + "bitsPerBlock", + "initWithRepresentedObject:", + "updateOnlineStatus", + "textView:shouldChangeTextInRange:replacementString:", + "_toolbarCommonFinishInit", + NULL, + "_accessibilityCompatibilityHitTest:", + "refreshWithGroupsController:", + "markPersonAsViewed:", + "_wordsInDictionary:", + "newInsertedObject", + "initWithContainerClassID:key:method:", + "draggedImage:endedAt:deposited:", + "infoForBinding:", + "sourceEntityVersionHash", + NULL, + "metadataQuery:replacementObjectForResultObject:", + "_needImportMipmap:forCellSize:exactSizeMode:", + "setScrollView:", + "orderFrontFontPanel:", + "streamEnumeratorWithTrack:", + "updateFont:", + "_stashedOrigin", + "valueTextAttributes", + "_currentWidth", + "saveToDocument:removeBackup:errorHandler:", + "flushDataForTriplet:littleEndian:", + "setRootNode:", + "initWithString:relativeToURL:", + "standardDeviation", + "_attributedSubstringForCopyingFromRange:", + "rulerStateDescription", + "hasChanged", + "_windowDeviceRound", + "setEditMode:", + "setZoomValue:", + "_automaticRearrangementKeyPaths", + "_changeIconViewTextSize:", + "_lastSelectedSliceIndex", + NULL, + "_shouldLiveResizeUseCachedImage", + "accessibilityValueAttribute", + "addRunLoop:", + "_boundsWithAllKeyFrames:", + "glID", + "numberOfPages", + "deleteProxyPortWithOriginalPort:", + "indexForIdentifier:", + "willBeRemovedFromSuperlayer", + "_sendingTableViewRowAction", + "runProcess:arguments:wait:", + "deleteObjectsInRange:", + "_elementIsBlockLevel:", + "interpretKeyEvents:forClient:", + "_modifiedGrammarRangeForRange:details:", + "transformForOrientationAndDPIWithTranslationForWidth:height:", + "_resetScreens", + "unionHashTable:", + "fillExactInterior", + "cellsHaveTitle", + "_removeAllTrackingRects", + "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "viewMovingToWindow", + "_removeBinding:", + "syncWithRemoteToolbars", + "getReadableNotWritable:names:", + "_hasKeyboardFocus", + "removePortAtIndex:", + "_centerLayerInParentLayer", + "setDocWindow:", + "accessibilityIsDefaultButtonAttributeSettable", + "closeStartContentWindow", + "isInherited", + "setScreenRectCG:", + "pushRoundedRectPath:inContext:withCornerRadius:alignOnPixelCenter:", + "slideshowClose:", + "setColorSpace:", + "portMaxValue", + "iconView", + "_stringRepresentation", + "_umask", + NULL, + NULL, + "setPrimitiveDisplayFlags:", + NULL, + "setIndexValue:", + "_composite:delta:fromRect:toPoint:", + "imageRepresentationType", + "initWithObjectID:", + "maxRows", + "_inActiveBackgroundColor", + "updateFromPMPrintSettings", + "_setDisplayNodes:", + "runModalForCarbonWindow:", + NULL, + "sleep", + "initWithRTFDFileWrapper:documentAttributes:", + "cancelIncrementalLoad", + "initWithMembers:keyPrefix:", + "addLayoutManager:", + "enqueueNotification:postingStyle:coalesceMask:forModes:", + "scanHexInt:", + "initToMemory", + "_updateInputManagerState", + "contextForSecondaryThread", + "resetSearchResults", + "defaultCompletionDelay", + "dictionaryByAddingObject:forKey:", + "addElementView:", + "_activateTrackingRectsForApplicationActivation", + "startRendering:options:", + "setGRL:", + "setInUserDomain:", + "supportedTextureBufferTargetsForManager:", + "_shouldShowCursorRects", + "_scriptingAnyWithDescriptor:", + "objectIDForEntity:referenceObject:", + "initWithKind:", + "_replaceRangeInArrayAtIndex:withRange:", + "nsImage", + "_selectAllNoRecurse:", + "_itemAdded:", + "setContentsTransform:", + "setAttributes:ofItemAtPath:error:", + "add:to:", + "downloadTextureWithBounds:toAddress:bytesPerRow:", + "orderedSetWithObjects:count:", + NULL, + "initWithSource::dest::", + "hasFrameImageAtTime:", + "_removeStatusItem:", + "primitiveCreationDateYearless", + "sourceOptions", + "setAcceptsMouseMovedEvents:", + "fontInvalidationCapableObjectForObject:", + "doubleAction:", + "_dropHighlightBackgroundColor", + "reallyReplaceObjectAtIndex:withObject:", + "_nodeAtPosition:outBounds:", + "setOutlinesCells:", + "EPSOperationWithView:insideRect:toPath:printInfo:", + "objectForResolution:", + "editWithFrame:inView:editor:delegate:event:", + "verticalRulerView", + "endOperationWithError:", + "rowForObjectID:", + "unbindItemWithResolution:withUID:", + "initWithIndex:", + "colorSwathesChangedInAnotherApplicationNotification:", + NULL, + NULL, + "accessibilityPostNotification:", + "_lockViewHierarchyForModification", + "popupClosing:", + "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:", + "valueForBinding:resolveMarkersToPlaceholders:", + "fireDidStartAnimating", + "_containsColorForTextAttributesOfNegativeValues", + "usesFeedbackWindow", + "connectionUnitOutputNumberForConnection:", + NULL, + NULL, + "isAttached", + NULL, + "inputRampParamsAtIndexes:", + "_isValid", + "_destroyRealWindowForAllDrawers", + "sender", + NULL, + NULL, + "_updateSyncState", + "_modifyInvitationWithObject:forKey:", + "stringForIndexing", + "setTargets:", + "_importedCard", + "setChildren:", + "selectionRectChanged:", + "checkAllocCellLayoutInfo", + "browser:shouldShowCellExpansionForRow:column:", + "_startDraggingUpdates", + "initWithItem:forToolbarView:", + "storedAttributes", + "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:", + "paragraphs", + "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:", + "vectorWithSize:", + "mediaBox", + "initWithNavView:", + "_cursorRectCursor", + "_effects", + "setDoubleClickOpensImageEditPanel:", + "initWithCFURLProtocol:", + NULL, + NULL, + "_validateLDAPServer", + "_deselectAllAndEndEditingIfNecessary:", + NULL, + "appDidActivate:", + "escapeInvalidXMLCharactersInString:", + "setLeafKeyPath:", + "handleGetAETEEvent:withReplyEvent:", + "initAll:owner:index:", + "_loadSuitesFromSDEFData:bundle:", + NULL, + "_labelFont", + NULL, + "defaultValues", + "initWithManagedObjectModel:", + "_enqueueAnimation:forObject:keyPath:", + NULL, + "drawShadow", + "settingsView:shouldRenameKey:", + "_entityDeallocated", + "registerForCommandDescription:", + "_showsPreviewByDefault", + NULL, + "__timebaseChanged:", + NULL, + "_reconfigureAnimationState:", + "sharedWithString:", + "priorityForFlavor:", + "wantsLayer", + "render:arguments:", + "drawDropHighlightOnRowFirst:", + "descriptorType", + "createInputPortWithArguments:forKey:", + "_setDragAndDropCharRange:", + "_recordPreviousKeyWindowProperties", + "setSelectionType:", + "setSortDescriptorPrototype:", + "setURL:blockingUntilLoading:", + "authenticateWithDelegate:", + "_addDeletesToDatabaseOp:forManyToMany:", + "removeObjectFromAppleUseCoreUIAtIndex:", + "resumeExecutionWithResult:", + "mappingModel", + "_country", + "typographicBounds", + "_segmentHighlightState:", + NULL, + "shouldRefreshDisplayAfterSelectionMechanismWasDismissed:", + "root", + "initWithRow:tableColumn:realElement:", + "stringByReplacingOccurrencesOfString:withString:", + "_showFindIndicator", + "parseStream", + "cellFrameForCell:", + "didSave", + "initWithTextRenderer:options:", + "enabled", + "processName", + "setFontManagerFactory:", + "setParagraphStyle:", + "_registerUndoObject:", + "isLayoutValid", + "_objectDidTriggerAction:bindingAdaptor:", + "unbindItem:withUID:", + "drawImage:inRect:forAA:reflection:alpha:fog:baseline:", + "initToFile:error:", + "_inactiveStateShowsRollovers", + "notActiveWindowFrameShadowColor", + "setMaxContentSize:", + "cleanupAfterPrintOperation:", + NULL, + "_dragRowIndexes:inColumn:withEvent:pasteboard:source:slideBack:", + "documentURLs", + "metadataJobType", + "controlViewWillBecomeFirstResponder:", + "flushCachedChildrenForNode:", + "setMailRecent:", + "segmentSize", + "_getCString:maxLength:encoding:", + "setOption:forKey:", + "contains:", + "isBaseFont", + "windowTitlebarTitleLinesSpacingWidth", + "replyMode", + "unarchiver:cannotDecodeObjectOfClassName:originalClasses:", + "moveInDirection:", + "_objectForAttributeKey:", + "typefaceInfoForFontDescriptor:", + "setPickerMode:", + NULL, + "_pageUpWithEvent:", + "stringForKey:inTable:", + NULL, + "setAsyncLaunch:", + NULL, + "migrationManager", + "acceptsRootNodeOrWarn:usingParent:", + "_textHighlightColor", + "_userClickOrKeyInColumnShouldMaintainColumnPosition", + "initWithName:appleEventCode:enumeratorDescriptions:", + "getInfoForFile:application:type:", + "_computeAndAlignFirstClosestVisibleColumn", + NULL, + "_stripAttachmentCharactersAndParagraphStylesFromAttributedString:", + "showState:", + "_reflectFont", + "highlightedSelections", + "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:", + "_setSelectedCell:", + "nonAutorotatedOriginalImageSize", + "_compositePointInRuler", + "_initWithContentsOfURL:ofType:error:", + "UID", + "keywordForDescriptorAtIndex:", + "_positionalSpecifierFromDescriptor:", + "pathForResource:ofType:inDirectory:forLanguage:", + "_appendObjectClassDeclarationsToAETEData:includingParts:", + "accessibilityIsSelectedAttributeSettable", + "verifyInvitationFile:invitationDictionary:trustRefOnErr:signerIdentity:", + "_menuCellInitWithCoder:", + "_toolbarFrameSizeChanged:oldSize:", + "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", + "accessibilityIsColumnsAttributeSettable", + "localizedName", + "setUserInfo:forKey:", + "_nonNilMutableArrayValueWithSelector:", + "authenticateWithBufferItems:authType:authOnly:", + "_defaultSelectionColor", + "iconView:performKeyEquivalent:", + "_setSelectionRange::", + "_performActionOnSelectedNodes:context:", + "fractionOfDistanceThroughGlyphForPoint:inTextContainer:", + "tangentialPressure", + "beginPageSetupRect:placement:", + NULL, + "boolParameterValue:", + "_inputPortAttributesWithKey:index:count:type:", + "scrollRect:by:", + "undoWithObject:", + "_setPathLocationEmptyTitle:", + "resolvesAliases", + "_bindVariablesWithDeletedRow:", + "parentItemRepresentedObjectForMenu:", + "applicationID", + "_decodeDownloadHeaderData:dataForkData:resourceForkData:", + "_handleFocusToolbarHotKey:", + "createFileFormatInfo", + "horizontalPageScroll", + "sharedController", + "_canDrawOutsideOfItsBounds", + "addRGBColor:forKey:toDictionaryRef:", + "_initWithGraph:mutable:", + "_installTrackingArea:", + NULL, + "initializeSlice:withOptions:", + "reshape", + "objectInInputBottomLineParamsAtIndex:", + "sizeWidthToFit", + "_orderOutAndCalcKeyWithCounter:stillVisible:docWindow:", + "shadowImageAroundPath:", + "animationDidStop:finished:", + "getComponents:", + "initWithDir:strings:", + "setHasVerticalRuler:", + "viewNibName", + "gridCapacity", + NULL, + "setInputTopLine:", + NULL, + "supportsDragAndDrop", + "_setupMessagePort", + "createCommandInstance", + "_setNeedsStateUpdate:", + "_notifyFamily_MovedFromIndex:toIndex:", + "analyzeCurrentWindow:", + "_setKeyViewRedirectionDisabled:", + "abBackupDate", + NULL, + "brightness", + "_updateContainerReferenceCounterForArraysOfItems:direction:", + "_setInputColor0:", + "setNumberOfVisibleItems:", + "getInfoButtonCell", + NULL, + "_pushState", + "_unlearnSpellingFromMenu:", + "objcCreationMethodSelector", + "setForegroundColor:", + "setHasLineNumbers:", + "normalize", + "writeDictionary:toURL:securely:andReturnResultCode:", + NULL, + "_allowAnimated_removeFromSuperview", + "_minXResizeRect", + NULL, + "cellPadding", + "_changeWasRedone:", + "setEnableSelectionHighlightDrawing:", + "doAutoResizeToRect:clipView:", + "_removeFromKeyViewLoop", + "begin", + "setSelection:", + "_findLastViewInKeyViewLoopStartingAtView:", + NULL, + "removeContext:", + "insertInAttachments:", + "updateState:", + "plusSign", + "deepSubnodeCopy:", + "imageCroppedRect", + NULL, + "windowControllerDidLoadNib:", + "minimum", + "frameSize", + "setSynchronousMode:", + "_userReplaceRange:withString:", + "compressMipmapItemIfNeeded:withUID:", + "indexOfMember:", + NULL, + "_boundsForSelection", + NULL, + "_itemChangedLabelOrPaletteLabel", + "addNewColor:andShowInWell:", + "foreignKeys", + "adapter", + NULL, + "parser:foundCharacters:", + "tileVertically", + "deviceDeltaX", + "_coreUIDrawSegmentBackground:withCellFrame:inView:", + "unescapedString", + "addQuadPointsToDictionaryRef:", + "_collectionWithName:index:", + "_templateType", + "_setSSLClientAuthUsage:", + "noteUserDefaultsChanged", + "lazyGetChildrenForNodeWithIdentifier:", + "_finalizeWithGC", + "mediaKeysForType:", + "sortAnnotations", + "localizedStringForKey:value:table:", + "_setCounterpart:", + "clearDataFileInfo", + "allowsUndo", + "getObject:atIndex:", + "ikVisibleRect", + "renderStateClass", + "addAnimation:forKey:", + "setIsOpen:", + "addFontTrait:", + "drawSelectionRingWithColor:width:forNode:bounds:view:", + "_chooseEvaluatorFunction", + NULL, + "setShowGroupMembership:", + "setZipCode:", + "mutableArrayValueForKeyPath:", + "_populateEntityDescription:fromNode:", + "_minNonExpandedFrameSize", + "_widthRequiredForLabelLayout", + "graphiteControlTintColor", + "parseKeyName:", + "valueWithQTTimeRange:", + "contentColor", + NULL, + "_moveParent:andExpandPanel:toFrame:", + "_allAttributeKeys", + "_setLockingFocus:", + "shouldDelayWindowOrderingForEvent:", + "_otherMenuItemForAttributeName:", + "_CGSinsertWindow:withPriority:", + "shouldAntialias", + "_descriptorWithNumber:", + "removeIndexesInRange:", + NULL, + "usesGroupingSeparator", + "setJavaScriptEnabled:", + "contentsTransform", + "metadataQuery:replacementValueForAttribute:value:", + "toolbarDefaultItemIdentifiers:", + "setSubIndex:", + "setPropertyList:forType:", + "_numberEnumerator", + "addIndex:", + "_labelColorIndex", + "_preparePredicate:", + NULL, + "view:customToolTip:frameForToolTipWithDisplayInfo:", + "_setCRLSigningUsage:", + "buildOrderByClauseWithSortDescriptors:", + "addObjectToArray:", + "_deallocatePPDStuff", + "_removeAllDrawersImmediately:", + "initFileURLWithPath:isDirectory:", + "accessibilityIsIgnored", + "setAnimationCurve:", + "adjustPosition", + "restoreCustomOutputPortStates:fromState:", + "setBackingType:", + "_parseCharacterAttributes2", + "_initContent:styleMask:backing:defer:contentView:", + "addAppleUseCoreUIObject:", + "label", + "initWithTextureTarget:textureInternalFormat:textureMaxMipMapLevel:pixelsWide:pixelsHigh:", + "_audioNodeFormatDescriptionDidChangeFromPropertyListener", + "offsetControlType:byTime:byValue:keyFrame:inTimeLine:", + "_markAsExplicitlyIncluded:", + "encodeDataObject:", + "contentRectForString", + "removeAllPopupViews", + "focusView", + "markOneShot", + "_fontPanelRemoveCollectionSheet:returnCode:contextInfo:", + "handleRollOverAtPoint:", + "newLegalColorSwatchHeightFromHeight:", + "_setKeyWithoutLocalizedKey:", + "advanceToUnicodeString", + "closeFullscreenWithEffect:", + "_encodeIntValuedMapTable:withCoder:", + "transactionDidBegin", + "initWithCountryCode:identifier:label:insertPopups:andInputController:", + "threadPriority", + "_windowWillOrderOut:", + "clearColor", + "separateWindowForPerson:", + "_scriptingAddObjectsFromSet:toValueForKey:", + "_incrementSelectedSubfield", + "_setObjectID:", + "_readSelectionFromUnarchiver:toPoint:", + "setVerticalScroller:", + "_popupHeightIsFlexible", + "decodeInt64ForKey:", + "_getHintString:", + "_requestHiddenState:", + "shouldLinkItemAtPath:toPath:", + NULL, + "fieldDescriptions", + "getICMDecompressionOptions:pixelBufferAttributes:forVideoConnection:", + "isInputBottomLineParams", + "removeTable", + "removeAllObjectsWithTarget:", + "registerClassDescription:", + "_printVerboseDebuggingInformation:", + "_getUnmodifiedCharacters:length:fromEvent:", + NULL, + "appendCharacter:", + "_postEvent:", + "ab_StringByMakingNameUnique", + "_setCertAuthorityIsCertAuthority:", + "updateSlideshowButtonWithPlaying:", + NULL, + "_addInternalRedToTextAttributesOfNegativeValues", + "tableView:shouldSelectTableColumn:", + "componentAddNotification:", + "_loadIconlessMenuContentsIfNecessary", + "loadCache:fromFile:", + "resumeAnimation", + "_initWithName:", + "selectFarthestRangeForward:", + "baseKeyFrameIndexAtTime:inTimeLine:", + "objectForCacheKey:", + "initWithSortDescriptors:inScope:", + "intercellSpacing", + "contextWithBitmap:rowBytes:bounds:format:", + "insertionReplaces", + "initFromPList:target:andIdentifier:", + NULL, + "_tooltipForColorPicker:", + NULL, + "defaultExpandOutlineItem:", + "_labelOnlyModeRectForItemAtIndex:inBounds:", + NULL, + "setContentMinSize:", + "_selectedNodesaIncludingDirectory:", + "action", + "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:", + NULL, + "crosshairCursor", + "drawLineFromPoint:toPoint:", + "_setProgress:", + "_stealSharedPreviewViewForURL:", + "drawPushButton:inContext:", + "safeURLFromURL:", + "_resizeAccordingToTextView:", + "closing", + "__oldnf_copyToUnicharBuffer:saveLength:", + "deleteToEndOfParagraph:", + "defaultTimeZone", + "_getCommonTypeFor:", + "nextPage:", + "_getConvertedDataFromPasteboard:", + "openUntitledDocumentOfType:display:", + "importUnlock", + "_discardEventsForTrackingArea:", + "layoutStateDidChange", + "resolveClassMethod:", + "discardEventsMatchingMask:beforeEvent:", + "setCurrentDirectoryNode:", + "shouldDisplay", + "_issuePropFindAtPath:withDepth:lookingForProps:includingParent:", + "_setupForWindow:", + "apply:arguments:options:", + "runModalForIdentities:message:", + "_currentTableCellIsPlaceholder", + "_reloadInspector", + "_setStartSubelementFromDescriptor:", + "accessoryView", + "setDirection:", + "dataReferenceWithReferenceToData:name:MIMEType:", + NULL, + "layoutToFitInIconWidth:", + "userKeyEquivalentModifierMask", + "arrangedObjects", + "_usingAlternateHighlightColorWithFrame:inView:", + NULL, + "_parseText1Full", + "stopSequenceGrabber", + NULL, + "setMaxRows:", + "setNextAction:forDocument:", + NULL, + "endContainer", + "_addPersistentStore:identifier:", + NULL, + "processEndEntity:", + "updateOutlineSelection", + "initWithInitialSearchRow:totalRows:forView:", + "resolveResourceAndInvoke:", + NULL, + "setAlignment:", + "objectController", + "transformContext:forBox:", + "_setTrue:", + "accessibilitySizeAttribute", + "canFindHoleForLen:", + "_singleMutableArrayValueForKeyPath:", + "_setCurrentChildOperation:", + "_glyphDrawsOutsideLineHeight:", + "name", + "accessibilityTabsAttribute", + "setRate:", + "snapshotDate", + "_drawFrame:", + "wouldUseVisualContext", + "_computeInv", + "_accessibilityShowMenu:", + "_adjustedFrameFromDefaults:", + "typefaceInfoForPostscriptName:", + "_registerForQueryStateChangeNotifications:", + "initWithRTFD:documentAttributes:", + NULL, + "nts_PredicateMatchesRecord:", + "connection:handleRequest:", + "_autoComplete:", + "executionModeWithIdentifier:", + "tabKeyTraversesCells", + "__removeFromSelection:context:", + "setShowsAttributeFilter:", + "_windowTitlebarTitleMinHeight", + "addClassNamed:version:", + "_expandButtonClicked:", + "aCellIsPlayingInView:", + "fillObjCType:count:at:", + "_setValue:forInputkey:forPort:", + "ab_timeIntervalSinceToday", + "_refreshLinkedDevicesAttribute", + "_addParent:", + "registerView:name:", + "replacementClassForClass:", + "registerLayer:", + "helpButtonClicked:", + "attributedStringWithAttachment:", + "setPersistentStoreCoordinator:", + "setContentView:", + "ramNodeForResolution:uid:", + "_setWindowOriginOffsetWhenHidingHint:", + "stopRendering", + "_importThreadFinished", + "setAllowsAnimatedImageLooping:", + "_resetModificationDate", + NULL, + "_getInputBottomLineParams", + "showXcodeHelp:", + "uniqueKey:", + "evaluateStatus", + "_setKeyboardLoopNeedsUpdating:", + NULL, + "encodeSize:", + "proxy", + "_setupDNSNames:inCEGeneralNames:", + "_finalize_QCPlugInPatch", + "setLineScroll:", + "applicationLaunched:handle:", + "willPresentError:", + "diskLabelValues", + NULL, + "values:forResolutions:withCount:fromArrayOrNumber:", + "_endDrawView:", + "swapIndex:withIndex:", + "_atStartOfTextTable:atIndex:", + "_document:shouldClose:forScriptCommand:", + "selectedTextAttributesForCharacterAtIndex:effectiveRange:", + "connections", + "endFetchAndRecycleStatement:", + "_scrollInProgress", + "_userDeselectRow:", + "_drawClockAndCalendarWithFrame:inView:", + NULL, + "itemArray", + "_setConnectedPort:", + "implClassForPublicRecordClass:", + "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:", + "stringByAbbreviatingWithTildeInPath", + "_crunchyRawUnbonedPanel", + "setTitleWithRepresentedObject:", + NULL, + "doCancelCrop:", + "gState", + "abortModal", + "trackingNumber", + "_finishPrintingDocumentsInContext:success:", + "initWithContainerSize:", + "accessibilityIsGrowAreaAttributeSettable", + "isMemberOfClassNamed:", + NULL, + "_runLoopModesForInvalidCursorRectsObserver", + "attributedTitle", + "_setDocumentWindow:", + "defaultClosestPixelFormat:withColorSpace:", + "registerExternalData:forObjectID:options:", + "statusImageForPerson:", + "coveredCharacterCacheData", + NULL, + "initToFileAtPath:append:", + "canGoToPreviousPage", + "removeConnection:fromRunLoop:forMode:", + NULL, + "initWithRole:parent:marker:", + "_keys", + "arrowKeyDown:withModifier:", + "imageRepClassForFileType:", + "setCacheUsedByProxyJpegData:", + "_itemChanged", + "_deleteFileAsnyc", + "newViewForToolbar:inWindow:attachedToEdge:", + "_setTrackingRect:inside:owner:userData:useTrackingNum:", + NULL, + "_saveQueryButtonClick:", + "SCTArrayByOrderedIntersectionWithArray:", + "applicationWillUnhide:", + NULL, + "generateLimitIntermediateInContext:", + NULL, + "ISS_encodingForIANACharSetName:", + "autoPlayDelay", + "_adjustSearchButtonCellImages::", + "_prepareSubstringWith:wildStart:wildEnd:", + "orderFrontListPanel:", + "_isTitleHidden", + "addPointer:", + NULL, + "imageRectInRuler", + "usesSignificantDigits", + "CA_stringByAbbreviatingWithTildeInPath:", + "writeBaselineOffset:", + "initWithSelectedGroup:addedToGroup:deletedPeople:updatedPeople:updatedPeopleProperties:addedPeople:mergedIntoGroups:addressBook:", + "_setLabelViewCount:", + NULL, + "_setLastSnapshot:", + "_maxWidth", + "abortImportVisibleCells", + "_wantsToActivate", + "hitTestForRect:inCellFrame:ofView:", + "previewView:willLoadPreviewForDocumentURL:", + "createImageFromURL:", + "vertBlur16ROI:destRect:", + "showsFirstResponder", + NULL, + NULL, + "setNumberOfMajorTickMarks:", + "typeForContentsOfURL:error:", + "startOffset", + "makeKeyAndOrderFront:", + "_doUserSetAttributes:", + NULL, + "_setOwner:", + "_obtainPermanentIDsForObjects:withContext:error:", + "currentMode", + NULL, + "_setPasswordStrengthTitleToolTip:", + "expressionIsBasicKeypath:", + "_getCounterpart", + "_plugin", + "setRepeatCount:", + "_updateLastEditingAndFocusRingFrame", + NULL, + "_focusRingClipAncestor", + "pageIsLeftOfAPair:", + "initWithPredicate:", + NULL, + "cropRectWithoutZoom", + "nts_RemoveSubgroup:", + "willRemoveFromTableView:", + "_setOrderDependency:", + "_disableMovedPosting", + "controllerBarHeight", + "mergedSimilarMultiValuesIn:forProperty:changes:", + NULL, + "nodeDidAddToGraph:", + "localizesFormat", + "_recursiveGainedDescendantThatOverridesNeedsDisplay", + "pageSizeForPaper:", + "activeTimeLineIndices", + "displaysTooltips", + "recursiveContainsGroup:", + "dictionaryRepresentationOfPersonAtRow:resultsView:", + "selectNavPopupMenuItemWithName:type:", + "colorPanelWillEndModal:", + "cancelAllQueries", + "distributionValueForProperty:person:", + "_calculateTotalScaleForPrintingWithOperation:", + "setBgColor:", + "selectionRectRemoved:", + "setLenient:", + NULL, + "animatedGifsCache", + "_createNonExecutableFilterWithKernelFile:filterDescription:", + "_unaffixedMarkerTitle", + "selectLayer:extendSelection:", + "getMoreInput", + "updateThumbnailUsingQueue:pool:", + "_relativeStartingDayForDateOptionType:", + "paddingCharacter", + "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", + "_unpackKeyboardEventRef:", + "sizeOfTitlebarButtons", + "displayLayer:", + "initWithObject:animationGroup:", + "_performDragFromMouseDown:", + "_accessibilityCorrectlyParentedCells:", + "_NSNibObjectIDForUIItemIdentifier:", + "_hasRecordsOfType:", + "_itemLayoutChanged", + "stringByStandardizingPath", + NULL, + "keyPathsForValuesAffectingAppleUseCoreUI", + "_operatorsForAttributeType:", + "pathContentOfSymbolicLinkAtPath:", + "editedImageDidChanged", + "_noise1d:", + "handleCommandEvent:withReplyEvent:", + "_beginListeningForDeviceStatusChanges", + "setStyleFromArray:", + "horizBlur4ROI:destRect:", + NULL, + "isWindowLoaded", + "setIsOnRightHandSide:", + "canCreateDirectories", + "_DAVRequestProxyAuthentication:ISS_DAVRequest:requestURL:usingHttps:", + "_uninstallPending", + "_setSelectedCell:atRow:column:", + "drawWellInside:", + "_setTruncatesLastLine:", + NULL, + "_notifyOfUpdatedDisplayWithImage:", + NULL, + "_setNewPreferedColumnWidth:", + "_transactionWithRequest:synchronousFlag:delegate:", + "didCommandBySelector:client:", + "_displayIfNeeded", + "_setParent:", + "setInputCGImage:", + "documentClassForType:", + "performActionForAccessibleChildAtIndex:", + "_sizeDownIfPossible", + NULL, + "_changeMinColorPanelSizeByDelta:compareWithOldMinSize:oldMinSize:setWindowFrame:", + NULL, + "validateMipmapImage", + "imageNamed:ofType:inBundle:", + NULL, + NULL, + "availableBackups", + NULL, + "_mapNode:toEntityInModel:", + "_syncToChangedToolbar:toolbarReplacedAllItems:", + "accessibilityCharacterRangeForLineNumber:", + "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:", + "noteNumberOfRowsChanged", + "initWithUnsignedChar:", + "initImageCell:", + "showsProgressPanel", + NULL, + "_refreshAttributes", + NULL, + "setControlsFixed:forKeyFrame:inTimeLine:", + "_accessibilityMinValue", + "setOffset:", + "accessibilitySetMainAttribute:", + "_labelAlignment", + "_isHoveredPart:", + "_recalculateUsageForTextContainerAtIndex:", + NULL, + "dynamicToolTipStringAtPoint:trackingRect:", + "setCanGoBack:", + "insertColumn:withCells:", + NULL, + NULL, + "_invalidateDisplayIfNeeded", + "unhook", + "invalidateObjectValueInObject:", + NULL, + "encodingScheme", + "_versionIdentifiersAsArray", + "initWithObject:key:value:", + "_initWithWindow:", + "widthOfString:", + "setAllowsGroupSelection:", + "selectNextTabViewItem:", + "initWithAdapter:", + "outputImageProviderFromTextureWithPixelFormat:pixelsWide:pixelsHigh:name:flipped:releaseCallback:releaseContext:colorSpace:shouldColorMatch:", + "setAlternateImage:forSegment:", + "_handleApplyValueError:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "SCTColumnDividerColor", + "setDTDKind:", + "accessibilityChildren", + "_initWithContentsOfFile:error:", + "_forceResetTexturedWindowDragMargins", + "_computeResizeableCustomItemViewersInRange:", + "_carbonWindowRefChangedVisibilityTo:", + "functionWithName:", + "_zapResultArray", + "_shouldResetCursorRects", + "appendElementClassDeclarationToAETEData:", + "setDepth:", + "togglePreview:", + "_initWithSharedKitWindow:rect:", + "initWithContainerClassID:key:mutableCollectionGetter:proxyClass:", + "_handleAEOpenDocuments:", + NULL, + "_adjustRectForFocusRing:atRow:", + "goToPageNoPush:", + "displaysWhenScreenProfileChanges", + NULL, + "_invalidateBlinkTimer:", + NULL, + "_defaultValueForAllowsTypeSelect", + "domain", + "_selectedSliceIndices", + "resumeRenderingPatch:", + "setConditionallySetsHidden:", + "initWithKeyFrame:", + "setLabel:forSegment:", + "URLToURI:", + "selectDistinct", + "defaultShadowColor", + "_createHoverChangeAnimation", + NULL, + "conjunction", + "isMultiThreaded", + "_recursiveRecomputeToolTips", + "itemsPerRow", + "_resetIncrementalSearchOnFailure", + "textAttributesForNil", + "setNotifyOnSelectionChanged:", + "containsIndexesInRange:", + "rectOfRow:", + "setDrawDragBoundries:", + "pixelsHigh", + "addDocument:", + "switchToActualSize:", + "accessibilityIsModalAttributeSettable", + "isPressed", + "hasDynamicDepthLimit", + "_openOldCollections", + "size", + "backgroundIKImage", + NULL, + "_currentActivation", + "menuDelegateChanged", + "registerImageBufferConverterClass:priority:", + "parentGroups", + "_propertyForKey:", + "createPixelBufferForManager:withFormat:bounds:colorSpace:options:", + "setLayer:", + "_propagateDownNeedsDisplayInRect:", + "setAttribute:values:", + "setFileListOrderedByFileProperty:ascending:caseSensitive:", + "_connections", + "setImageFrameStyle:", + "_doSelectIndexes:byExtendingSelection:indexType:funnelThroughSingleIndexVersion:", + "mkpathRequestWithSession:URI:token:", + "spellServer:findMisspelledWordInString:language:wordCount:countOnly:", + "usesDataSource", + "_initWithImage:options::", + "canAdd", + "enqueueWithTarget:", + "parameterPorts", + "dictionaryRepresentationOfGroupAtRow:resultsView:", + "stringWithContentsOfFile:encoding:error:", + "textAttributesForZero", + "PDFViewOpenPDF:forRemoteGoToAction:", + "scriptingIsGreaterThanOrEqualTo:", + "pendingAttributes", + "setMessageType:", + "rangeOfCharacterFromSet:options:range:", + "attributesOfItemAtPath:error:", + "_updateOkButtonEnabledStateAndErrorMessage", + "_transformDstRect:clipRect:", + "addComponentByID:", + NULL, + "_sendDelegateDidMouseDownInHeader:", + "convertPointFromBase:", + "concat", + "_scriptingCoerceValue:forKey:", + "didHide", + "showcaseRect:window:", + "_scriptingObjectWithName:inValueForKey:", + "parser:didEndMappingPrefix:", + "unregisterClient:", + "_evenlySpacedRectForItemAtIndex:inBounds:", + "_initHTTPRequest", + "children", + "resignKeyWindow", + "_keyForLocalizedKeyDictionary", + "beginPrologueBBox:creationDate:createdBy:fonts:forWhom:pages:title:", + "setThousandSeparator:", + "voiceIdentifierForVoiceCreator:voiceID:", + "willChangeExpandedNodes", + "stop", + "releaseCGLContext:", + "connectToBackgroundLayer", + "_willCloseWindow:", + "_displayProfileChanged:", + "currentContextDrawingToScreen", + "engine", + "_taskBeginNotification:", + "_registerForWindowOrderNotifications:", + NULL, + "initWithMetadataManager:andForceRebuild:", + "_PFPlaceHolderSingleton", + "propertyTypesWithAddressBook:acquireLock:", + "gotoPreviousPage", + NULL, + "compositeToPoint:fromRect:operation:", + "initFromImage:rect:", + "_convertersCond", + "isExpansionToolTipVisible", + "defaultFocusRingType", + "jpegRepresentationOfItem:withUID:", + "_imageRepWithData:hfsFileType:extension:", + "_setMinimizeOnDoubleClick", + "uniqueNewCollectionName", + "drawThumbnailIndex:inRect:thumbSize:forFont:attributes:", + "indexOfItemWithTag:", + "sharedColorPanel", + "_imagesWithData:zone:", + "_optionsForShowingAsSheet:", + "accessibilityMenuFormRepresentationHasSubmenuWithItems", + NULL, + "_characterRangeCurrentlyInAndAfterContainer:", + "_scriptingIndexOfObjectWithUniqueID:inValueForKey:", + "_setUnprocessedInsertion:", + "_itemRemovalCompleted:", + "developmentLocalization", + "tableView:didChangeToSortDescriptors:", + "_takeFocus", + "_generateMulticlauseStringInContext:", + "validateUserInterfaceItem:", + "_createdDate", + "setDrawsShadows:", + "isKindOfClassNamed:", + "dstDraggingMovedToPoint:draggingInfo:", + "_registerObject:withID:", + "isRuleGrouping", + "isSelected", + "idling", + "actionCell", + "deleteRule", + NULL, + "element:hasOverriddenAttribute:", + "setServer:", + "_setNotes:", + "CIImageRepresentation", + "handleRequest:sequence:", + NULL, + "wipeMetaDataDirectory", + "_retainTrackingTag:", + NULL, + "setRecordDelegate:", + "_trackMenuSelection", + "enlargedBounds:withPoints:", + "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:", + "getNodeAsResolvedNode:", + NULL, + "thumbnailAtPoint:", + "_alternateDown::::", + "createCommandInstanceWithZone:", + "prepareChildsToDie", + "isSupportedOnContext:", + "_persistentStoreForIdentifier:", + NULL, + "fetchIndex", + "_sizeToFitView:", + "_hasPublicUsername", + "favoriteAttributesNames", + "indexPathWithIndex:", + "parseSeparatorEqualTo:", + "setRowForUpdate:", + "_zoomButtonOrigin", + "_availableBindingsWithFontBindingsFiltered:", + "keyCount", + "setAutostarts:", + "_singleValueForKeyPath:operationType:", + "setHidesOnDeactivate:", + "sharedApplication", + "_crlSigningUsage", + "threadPoolWithMaximumThreadCount:", + "contentPlacementTag", + NULL, + "_setState:forPorts:", + "modelByMergingModels:forStoreMetadata:", + "_forSRSpeechObject:setObject:forProperty:usingDataSize:", + "canAddChild", + "tryLock", + "setParsesCocoaElements:", + "getFiltersInCategory:", + "setTag:forSegment:", + "recordToManyInsertsForObject:withOperation:", + "_performToggleToolbarShown:", + "deactivateForDocumentAtIndex:usingTransitionImage:atFrame:", + "isImpossibleCondition", + "homePageFieldPresent", + "insertRulers", + "reverseObjectEnumerator", + "_assignObjectIds", + "_listClassForListRange:", + "newBatchRowAllocation:count:forSQLEntity:withOwnedObjectIDs:andTimestamp:", + "imageDimsWhenDisabled", + "_vCardKeyForAddressLabel:vCard3:", + "isFilePropertyDisplayed:", + "arrangeObjects:", + "_setExtendedKUECodeSigningApple:", + "markShadowDirtyRect", + "currentAnalysisDidCreateNewWindow:", + "frameLength", + "_rangeOfSuffixFittingWidth:withAttributes:", + "_midnightPassed", + NULL, + "_initWithCGSRegion:", + NULL, + "auxiliaryTextField", + "selectAllItems", + "_addToLibxml2TreeRepresentationWithDoc:dtd:context:", + "_bindingInfos", + "dateByNormalizingToGMT:", + "_updateLayerAnchorPointForFlippedSuperview", + "initMultiStatusRequestWithURL:method:responseClass:", + "_saveImageDataToDisk:", + "accessibilitySetValue:forAttribute:", + "resetPDFTooltips", + NULL, + "useOptimizedDrawing:", + "wantsToDelayTextChangeNotifications", + "initWithInfos:", + "setBacking:releaseCallback:releaseInfo:", + "becomeKeyWindow", + "indexFoundMatches:done:", + "prependTransform:", + "drawMenuItemBackgroundWithHighlight:inRect:withClipRect:", + "_rectangularCharacterRangesForGlyphRange:from:to:granularity:", + "initWithXMLNode:objectID:", + "_loadConfigPanel:", + "_selectNameFieldContentsExcludingExtension", + "_scrollPoint:fromLayer:", + "stringForRange:", + "_setWords:inDictionary:", + "contactIndex", + "commandDisplay", + "createCGImage:fromRect:", + "initWithWindow:withParent:", + "_beginToolbarEditingMode", + NULL, + "setDatePickerMode:", + "valueTransformerForName:", + NULL, + "parseABUID", + "_descriptorByTranslatingDictionary:ofType:inSuite:", + "setTruncatesLastVisibleLine:", + "scriptingProperties", + "_filterList", + "_setValueWithSelector:", + "_doDelayedAutocomplete", + NULL, + "_hasSelectedColumn", + "toggleBaseWritingDirection:", + NULL, + "updatePatchWithDefaultValues", + "menuHasKeyEquivalent:forEvent:", + "willRead", + "_vCardKeyForEmailLabel:", + "deserializePListValueIn:key:length:", + "_nonNilArrayValueWithSelector:", + "timeStringFromTimeInterval:longForm:", + "_scheduleChangeNotification", + "_willPresentSavingError:forOperation:url:type:overwriteRetryingInfo:", + "_saveLayout", + "_forceInsertItem:atIndex:", + "_drawGlyphsForGlyphRange:atPoint:parameters:", + "initWithFilterInfo:owner:", + "color", + "setShowsProgressPanel:", + "initWithString:", + "_clearOriginalSnapshotAndInitializeRec:", + NULL, + "fixAddressRulersInRange:", + "_diskCacheCreateLRUList:", + "displayRectIgnoringOpacity:inContext:", + "_eventWithCGSEvent:", + "searchBase", + "setRawFormat:", + "copyPolicyForOid:", + "_setPurgeable:resourceAtIndex:", + "_currentInputFilepath", + "_openPageInDefaultBrowser:", + "iconName", + "extractYear:yearlessDate:fromDate:", + "_unlockFirstResponder", + "layoutDocumentView", + "_dateUnitMultiplierForSearchDateSpan:", + NULL, + "clearAttributesCache", + "tryLockForWriting", + NULL, + NULL, + "_shouldDrawBezel", + "sharedSupportPath", + "setupViewWithOptions:modal:", + NULL, + "startSpinning", + "isPaged", + "setTime:forKeyFrame:controlType:inTimeLine:", + NULL, + "clearGlyphCache", + "setFrame:animate:fromLayout:toLayout:paneWidths:numberOfPanes:", + NULL, + "terminateForClient:", + "_drawContinuousCapacityWithFrame:inView:", + "_saveInitialMenuPosition", + "importVisibleCellsPriority", + NULL, + "_defaultButtonTitle", + NULL, + "setMembersSubrowDelegate:", + "cacheManager", + "_updateParagraphStyleCache:", + "selectionContainsSwappedNameEntries", + "maximumRecents", + "setTitleWithRepresentedFilename:", + NULL, + "_rangesForMultipleTextSelectionPasteAtIndex:fromPasteboard:", + "drawImage:atPoint:fromRect:", + "_evaluateTrust", + "pathComponentCellAtPoint:withFrame:inView:", + "trackMouse:forAnnotation:", + "orderWindow:relativeTo:", + "_simpleDescription", + "floatForKey:", + "_accessibilityUIElementPath", + "didFinishColumnScrollWithHelper:", + "isWindow", + "fadeHUDOut", + "selectionZoomRect", + "insertsNullPlaceholder", + "_rangesForUserBaseWritingDirectionChange", + "_indicatorImage", + "setPhoneString:", + "setAction:", + NULL, + "_createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:", + "searchFieldCellOrControlDidClearRecents:", + "_keyViewPrecedingAccesoryView", + "itemWithTag:", + "imageByCompositingOverImage:", + NULL, + "hideButton:", + "outlineColumnGroupForRow:tableColumn:", + "_canDrawOnBackgroundThread", + "_doOrderWindow:relativeTo:findKey:forCounter:force:", + "numberOfSlideshowItems", + "logError:", + "setNegativeFormat:", + "_isWord:inDictionary:", + "masksToBounds", + "beginSetup", + "setThreadArgument:", + "setPrimitiveModificationDateYear:", + "_DAVRequestAddAuthentication:ISS_DAVRequest:requestURL:", + "labelFont", + NULL, + "_stepperCell", + "_setupButtons", + NULL, + "drawRoundedRect:radius:strokeColor:fillColor:lineWidth:", + "drawWithFrame:inView:characterIndex:", + "_markerTitle", + "isBeginMark", + "_modifySelectionIndexes:atIndex:addOrRemove:sendObserverNotifications:", + "sharedAVManager", + "_attributedStringForEditing", + "slideshowItemAtIndex:", + "synchronizeWindowTitleWithDocumentName", + NULL, + "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:", + "classNamed:", + "_layerTreeDescription", + "sharedCompositionRepository:", + "_resetEvaluationErrorNumber", + "CA_copyRenderValue", + "printerFont", + "_fetchOrderedByFileProperty:orderedAscending:", + "_launchOneThread", + "_endSessionUpdates", + "_titleCellHeight:", + "initWithLength:", + "setSubmenu:forItem:", + "updateGridSize", + "frameRectForContentRect:styleMask:", + "initUnlockWithSession:path:lockToken:", + "error", + "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:", + "objectSpecifierWithDescriptor:", + "freeSerialized:length:", + "setUsesFontLeading:", + "timer:", + "loadSamplePDF", + "_processLibXML2TextNode:content:", + "defaultTitleFont", + "setCriteriaSlices:anyAttributeString:", + "pixelFormatCMYK16", + "loadPanelNamed:", + "stringDrawingTextStorage", + NULL, + "_configureStreamDetails:", + "fileGroupOwnerAccountName", + "colorUsingColorSpaceName:", + "setCount:", + "_lastEventRecordTime", + "setExpanded:", + "_dosetTitle:andDefeatWrap:", + "_setInitialFirstResponder:autoGenerated:", + "_stringByTranslatingFSSpecDescriptor:toType:inSuite:", + NULL, + "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:", + "RTFD", + "computeButton", + "_drawFrameRects:", + "_nominalCharacterCoverage", + "ISS__ay_performSelector:withObject:inThread:", + "setErrorProc:", + "_stringForEditing", + "titleCell", + "session", + NULL, + "_disposeSurface", + "openDocumentWithContentsOfFile:display:", + "_loadQTKit", + "panelType", + "_shouldOpenInlinePreview", + "_incrementBy:startingAtIndex:", + "periodicFlushRoutine:", + "drawRubberBandWithClipRect:", + "selectItemWithTag:", + "localName", + NULL, + "setHardInvalidation:forGlyphRange:", + "_setupUI:", + "_oldValueForKey:", + "encodeVersionWithCoder:", + "isCancelled", + "big:", + "_makeModalWindowsPerform:", + NULL, + "windowBackgroundColor", + "sessionIsReadyToBuildAndRunGraph:", + "setPrimitiveFirstName:", + "stopTextTimer", + "setProfileView:", + "initWithInstanceInfo:renderingMode:", + "scannerWithString:", + NULL, + "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:", + NULL, + "_resetOpacity:andForceSetColor:", + "isConnected", + "objectAtIndex:effectiveRange:runIndex:", + "contentSeparatorColor", + "endPage", + "drawNoteIcon:inContext:", + "attributesWithIdentifier:", + "mouseDownOutsideSelection:", + "installQLViewFromDataSource:", + "createNSBitmapImageRepForManager:withOptions:", + "resortCachedChildren", + NULL, + NULL, + "_sideMargin", + "setInitialDirectory:", + "_scaleImageSize:toFitInSize:", + "pathForSoundResource:", + "setControlsView:", + "drawDebugSchedulePriorityRanges", + "namesOfPromisedFilesDroppedAtDestination:", + "_enumeratedPredicateBindings:", + "addUniqueIdsMissingFromSet:toArray:forClass:prefetch:inAddressBook:", + "keychainSyncList", + "isRectVisible:onPage:", + "insertGlyphs:", + "capabilityMask", + "initWithContainerClassID:key:ivar:", + "setRowTemplates:", + "addressBookMetaKitDatabaseFileName", + "_uniqueNameOfChild:", + "_commitEditingOtherCallback:", + "_needsRecalc", + "mouseDownOnCharacterIndex:atCoordinate:withModifier:client:", + NULL, + "_inputExtent", + "sendWillSendRequest:redirectResponse:", + "isTrustDisplayed", + "tileSize", + "targetOrigin", + "extraTextRectForBounds:", + "duplicatesForPeople:", + "_attributedStringForDrawing", + "setItem:", + "cachedHandleForURL:", + "certificateView", + "findPanel:", + "compressionOptionsWithDescription:", + "allKeysForObject:", + "view:willDisplayImage:", + "_doFirstPassForMapping:error:", + "_surfaceBounds", + "appendPropertyDeclarationsToAETEData:", + "updateOptionsWithVersion:", + "_hiddenExtension", + "configDataChangedSince:", + "_objectsPointer", + "getKeys:values:", + "setUserFont:", + "_enumeratedHiddenBindings:", + "predicateWithSubstitutionVariables:", + NULL, + "propertyListFromData:mutabilityOption:format:errorDescription:", + "setSpeechFinishedSuccessfully:", + NULL, + "foreignKeyForSlot:", + "addSelectionNoNormalize:", + "_shiftLeft:", + "accessibilityEncodeOverriddenAttributes:", + "setDisplayName:", + "_branchImageRectForBounds:", + "numberWithInt:", + "_computeDefaultMenuFormRepresentation", + "_valueForBindingWithoutResolve:mode:", + "illegalCharacterSet", + NULL, + "setTransactionDelegate:", + "freePageViewBounds", + NULL, + "_dimpleDoubleClicked:event:", + NULL, + "_isModal", + "gutterWidth", + "_labelForColorPicker:", + "ruleEditor:numberOfChildrenForCriterion:withRowType:", + "_specifierTestFromDescriptor:", + "stopPDFViewAnimation", + "undoRedo:", + "setShowsHiddenFiles:", + "_refreshSuspendedAttribute", + "attributeForKey:", + "_bezelTopPadding", + "_createStaticTextFieldWithStringValue:", + "_shouldStartTaskNamed:", + "saveCache", + "markViewedForRecordWithUniqueId:tryAgain:", + "removeRequestMode:", + "_moveLeftWithEvent:", + "_setFrameSavedUsingTitle:", + "isScalarProperty", + "numberOfItemsInMenu:", + "fileHandleWithStandardOutput", + "_criteriaDictionary", + "_writeAutosaveRecords", + "initWithRemoteLocation:addressBook:", + "willPopUpNotification:", + "imageFrameCount", + "textTimerFired:", + "setZoomRate:", + "_minYBorderRect", + "validModesForFontPanel:", + "mouseUp:inView:", + "_hasRetainedStoreResources", + "isNSArray__", + "_interpolationFunctionRefWithCallbacks:", + "recacheColor", + "editSmartGroup:", + "localizedCaseInsensitiveCompare:", + "persistence", + "_flipStateOfCellsInIndexSet:toState:", + "wrapCardRollOverAroundRects:count:", + NULL, + NULL, + "_hiddenOnLaunch", + "addContentObject:isPlaceholder:insertsNullPlaceholder:value:index:cellOrControl:", + "internalSaveTo:removeBackup:errorHandler:", + "selectedGroups", + "setSubCacheSizeIndex:", + "initWithURL:cachePolicy:timeoutInterval:", + "setDefaultBorderColor:", + "_getRow:column:nearPoint:", + "_dragCompletionTargets", + NULL, + "toManyRelationshipKeys", + "intAttribute:forGlyphAtIndex:", + "_handleKeyDown:inNode:", + NULL, + "_enabledStateWithMode:", + "initWithAdapterOperator:correlation:", + "_multipleValueForKey:atIndexPath:", + "_imagesFromIcon:inApp:zone:", + "selectTextAtRow:column:", + "_expandedNodesForObservedNode:", + "createDragProgressWindow:forRow:", + "cellIndexAtDocumentPosition:", + "selectionMechanismWasDismissed:", + "matrixInColumn:", + "formatString", + "maxBounds", + "_setupUI", + "setTexture:", + "setColumnAlias:", + "snapRotation:", + "_cancelPerformSelectors", + "accessibilitySetVisibleCharacterRangeAttribute:", + "_keyBindingManager", + "dictionaryWithObjects:forKeys:count:", + "encodeWithCoder:colorSpaceCode:", + "standardContentBorderThicknessForEdge:borderSize:styleMask:", + "minContentSizeForMinFrameSize:styleMask:", + "_setAllowsNonVisibleCellsToBecomeFirstResponder:", + "_performKeyEquivalent:", + "groupsController:outlineView:heightOfRowByItem:", + "initWithKey:ascending:selector:", + "tokenAttachment:doubleClickedInRect:ofView:atCharacterIndex:", + "pathNamesForRecords:singleCard:dataForAllRecords:", + "compositionPickerView:draggingEnteredComposition:sender:", + "_expand", + "_initUnlockForToken:", + "_finalScrollingOffsetFromEdge", + "newWithKey:object:", + "wasUpdated", + "createServerPortIfNeeded", + NULL, + "createImageFromCGImage:", + "typingAttributes", + "abStringByRemovingDotMac", + "IKIPSliderMouseUp:", + "_toggleInlineSlideshow", + "comboBoxCell:completedString:", + "_defaultIndicatorImage", + "_updateDrawsNothing", + "_markerPrefix", + "setSupportsDragAndDrop:", + "_document:didSave:contextInfo:", + "removeItemForTableView:pasteboard:operation:", + "fileManager:shouldProceedAfterError:", + "convertRect:fromPage:", + "data1", + "tellDelegateAboutJobResult:", + "previewView:willShowPreviewForURL:", + "_debug", + "popBundleForImageSearch", + "nextSibling", + "_errorWithCode:", + "variables", + "value", + "pixelFormatARGB8", + "stepForward:", + "toggleFontPanelShown:", + "inverseColumnName", + "isToMany", + "untrashedLeafFileLocationComponentWithLocator:", + "columnResizingType", + NULL, + "_hasFocusRing", + "setArguments:", + "formatterOfObject:", + "setImagingModeForcedToSharedSurface:", + "_copyImage", + "_swapToolbarItemViewerAfterView:", + "nts_Me", + "_initWithName:type:", + "rendererVersion", + NULL, + "_outputPorts", + "canSupportMinAndMaxForObject:", + NULL, + "magentaColor", + "startObservingPreviewNode:", + "_isOnePieceTitleAndToolbar", + "imageRepresentation", + "initWithColumnName:sqlType:", + "_web_removeFileOnlyAtPath:", + NULL, + "previewPanel:shouldOpenURL:", + "_latin1MappingTableWithPlatformFont:hasKernPair:", + "searchList", + "_willSelectComposition:", + "joinSemantic", + "_attributesToHighlightStyle:", + "setCurrentSession:", + "_isPoint:inDragZoneOfRow:", + "sendSuperEvent:", + "undoManagerForTextView:", + "copyLink:", + NULL, + "enterDisplayOperationForWindow:windowRegion:", + "_writeStringInRanges:toPasteboard:", + "_loadSuitesForJustLoadedBundle:", + "setControllerType:", + "_highlightColorForCell:", + "initWithName:stringValue:", + NULL, + "setFillColor:", + "displayIfNeeded", + "allElementsForDeviceID:", + "identity", + "_hasAnyObservers", + NULL, + "_tempHide:relWin:", + "setLastRenderedMipmapItem:", + "_bestSettingSimilarToSetting:exactMatch:", + "maxValue", + "_drawOverflowHeaderInRect:", + "timeModeWithIdentifier:", + NULL, + "setForeignEntityKeySlot:unsigned:", + "setKeyCell:", + "setMIMEType:", + "notANumberSymbol", + "_originalRowForUpdate:", + "setAllowsDirectoriesSearches:", + "nextEventForWindow:", + "_setDocumentViewAlignment:", + "_borderType", + "noteNumberOfItemsChanged", + "restoreParameter:from:", + "_updatePathLocationControl", + "propertyChanged:", + "_sizeToFitColumn:withSizeToFitType:", + "drawOverlays", + "_switchViewForToolbarItem:", + "nts_MemberUID", + "compositingOperation", + NULL, + "_parserableDateDescription:", + "itemIdentifier", + NULL, + "initWithGLContext:pixelFormat:vtable:options:", + "_executeAppleEvent:withMode:error:", + "browserDidScroll:", + "unregisterThread", + "tile", + "titleRectForBounds:", + "_createAttributeNameMapping", + "applyDecisions", + "selectedKnobColor", + "requiredMinSize", + "createAnnotationWithEvent:", + "pixelFormatRGBX8", + "sleepForTimeInterval:", + "updateIPhotoButtonWithAdded:", + NULL, + "_refreshInputSourceAttributesFromCallback", + "_removeConnectionFromOutput:", + "_setMenuOwner:", + "_sendDelegateWillDisplayCell:forColumn:row:", + "learnWord:", + "_registerProtocols", + NULL, + NULL, + "selectedCellInColumn:", + "initWithFormat:locale:", + "_drawDropHighlightOffScreenIndicatorPointingUp:atOffset:", + "setPathComponentCells:", + "startingRow", + "_provideNewViewFor:initialViewRequest:", + "arrayGrow:", + "_evilHackToClearlastLeftHitInWindow", + "encodePortObject:", + "_setUpLayerTreeSurface", + "imageWithNSImage:", + "_invalidateCursorRects", + "_willHideDisplayableView:", + NULL, + "rotation", + "deserializeBytes:length:atCursor:", + "_bezelTopOffset", + "_wantsPastedFiles:", + "URLProtocol:didCancelAuthenticationChallenge:", + "currentRunLoop", + "_conformsToProtocolNamed:", + "_surfaceWillGoAway:", + "atLeastOneMipmapItemIsValid", + "endSpecifier", + "setModifiedSmartGroup:", + "_setKeyboardFocusRingNeedsDisplayDuringLiveResize", + "removeExtraBackupsForInterval:endingOn:andUpdateList:", + "_maxYBorderRect", + "modifyFont:", + "startDraggingWithEvent:", + NULL, + "cookies", + "_glyphAdvancementCache:", + "setDateValue:", + NULL, + "dataFromRange:documentAttributes:error:", + "associatedViewFor:", + "_setCurrentListNumber:", + "drawSwatchInRect:", + NULL, + "sendBeforeTime:sendReplyPort:", + "objectsByEvaluatingSpecifier", + "_endEditingIfNecessaryWhenDeselectingRowRange:", + "_updateAutomaticRearrangementKeysPaths", + "notPredicateWithSubpredicate:", + "_setSurfaceBackedOpenGLContext:", + "CGSRegion", + "setTopColor:", + "mediaRetained", + "_unlockfeContext", + "_setUninstallPending:", + "removeThumbnail:", + "inputNeutralTemperature", + "writeKern:", + "PICTRepresentation", + "defaultAddressBookPreferencesFile", + "_setError:", + "abContainsCaseInsensitiveString:", + NULL, + "_findButtonImageForState:", + "_selectRow:", + "_format:withDigits:", + "allCustomPropertyValuesWithCustomProperty:", + "parentOperation", + "dataSourceRespondsToRequiredMethods:", + "setBuffer:", + "_setDoublePage:", + "decimalValue", + "_popUpMenu", + "setValidateSize:", + "setValue:forBinding:error:", + "direction", + "mounted:", + "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:", + "imageCropView:willReceiveDraggedImage:", + "imageIsImported", + "initWithPreviewView:", + "_processLibXML2TitleNode:", + "device", + "imageProxy", + NULL, + "_owningPopUp", + "initWithOperatorType:", + "replaceString:withString:range:options:inView:replacementRange:", + "setSelectionGranularity:", + "writeEscapedUTF8String:", + NULL, + "hasEditedDocuments", + "removeColumn:", + "_openExtrasPopup:", + "registerFilters", + "destinationModel", + "setOptimizableColumn:", + "_screenChanged:", + "indexSetWithIndex:", + "_hideControlsPanel", + "_registeredForChildNotifications", + "takeDoubleValueFrom:", + "_uninstallTrackingArea:", + NULL, + "imageWithImageProxy:", + "completionDelay", + "initWithRenderingContext:patch:", + "_newFirstResponderAfterResigning", + "_shouldUseTexturedAppearanceForSegmentedCellInView:", + NULL, + "wordList", + "setCurrentPage:", + "charactersIgnoringModifiers", + "abort", + "updateSearchHilightWithSearchString:", + "_endTableCellDefinition", + "_fastCStringContents:", + NULL, + "initMultiStatusRequestWithSession:method:path:responseClass:", + "_setAttributedString:", + "_previewPanel", + "stringWithFileSystemRepresentation:length:", + "canChooseNode:", + "setOpenGLLock:", + "_delegateRespondsTo_nextTypeSelectMatchFromRow", + "_drawTitlesForView:inRect:", + NULL, + NULL, + "_isTrackingAreaObject:", + "contentAtIndex:", + "restoreCachedImage", + "processImage:context:", + "buildPropertyDict:", + "fileWrappers", + NULL, + "componentsSeparatedByString:", + "_initLocks", + "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:", + "_latin1MappingTable:", + NULL, + "nts_IsSubscribed", + NULL, + "resetDocumentState", + "markerWithRulerMarker:parent:", + "notifyDataIsReady", + "lastRequestMessage", + "setControlSize:", + "characterSetWithCharactersInString:", + "_registerInstance", + "encodingVersion", + "setConfigurationFromDictionary:", + "initWithEntity:propertyDescription:virtualForToMany:", + NULL, + "fileAttributes", + "CA_stringByStandardizingPath:", + "_loadMetadataFromDocument:", + "setTimeZone:", + "_setupSurfaceAndStartSpinning:", + "_constrainDateValue:timeInterval:", + "_ql_enclosingPreviewView", + "_cocoaErrorStringWithKind:", + "setInitialized:", + "vectorWithX:Y:Z:", + "setOldPassphrase:", + "hasChanges", + "setConstrainedFrameSize:", + "setAttributeSlotNoRetain:withObject:", + "GFSetEnumerator", + "_registeredDeviceClassNames", + "showPasswordAssistantPanel:", + "writeData:", + "stopNote", + "_tryDAVLock", + NULL, + "containsMetaDataCacheCards:", + "orderFrontColorPanel:", + "clearCustomPropertyCaches", + NULL, + "dateFromISO8601String:", + "_orderFrontModalWindow:relativeToWindow:", + "nts_ClearCachedRecordsForUniqueIds:", + "proxyDied:", + "_toggleLogging", + "blueComponent", + "_sessionDidResignActive", + "_setCSRData:", + "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:", + NULL, + "createPixelBufferForManager:withFormat:transformation:bounds:colorSpace:options:", + "encodeObject:forKey:", + "setShowsLockButton:", + "_stashCollapsedOrigin:", + "_generateIDWithSuperEntity:nextID:", + "initWithEntryNames:contents:properties:options:", + "_adjustScroller:withDocumentLength:withViewLength:offset:", + "_chosenSpellServer:launchIfNecessary:", + "setUpdatedObjects:", + NULL, + "openDrawers", + "maximumFractionDigits", + "_didShowDisplayableView:", + "_isEditing", + "defaultTextColor", + "previewPanel:willLoadPreviewForURL:", + "recentDocumentURLs", + "registerImageBrowserTasks", + "_mouseDownListmode:", + "_web_localizedDescription", + "alpha", + "__saveSelection:context:", + "setActive:forTimeLine:extendSelection:", + "_positionLabels", + "attachToolbarToColorPanel:", + NULL, + "outlineColumn:willDisplayOutlineCell:row:", + NULL, + "defaultImageOrientation", + "opaqueAncestor", + "_freeCacheStepWithVisibleIndexes:blackList:", + "canAddConnectionForMediaType:", + "importVCardFiles:intoGroup:", + "getIDRefStringForValue:ofRelationship:objectForError:", + "_layerTreeRendererSurfaceGone", + "setDataRefType:", + "fullBounds", + "_searchFieldAction:", + "_calendarDateComponentsForPoint:inCalendarRect:", + "_forceAppendItem:", + "hashTableWithWeakObjects", + "openButton:", + "nodeAtIndexPath:", + "arrowsPosition", + "_drawingEndSeparator", + "_setKind:", + "shutAllDrawers:", + "initWithCurrentBrowsingNodePath:fileListMode:", + "_applyHTTPCredentials:", + "setShowsContentSeparator:forEdge:", + "stringsFromSelectionExpanding:", + "_sliceBottomBorderColor", + NULL, + "setWindowSharingType:", + "dragAnimationComplete:toRow:", + "setProperty:comparison:value:", + "thumbnailWithMaximumSize:", + "_contentHasShadow", + "string", + "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:", + "setDownCaption:", + "URLProtocol:didReceiveResponse:cacheStoragePolicy:", + "separatorItemIdentifier", + "windowFrameAutosaveName", + "initWithICCProfileData:", + "drawInRect:inContext:", + "IK_JPEGRepresentationWithCompressionFactor:", + NULL, + "initListDescriptor", + "indexForPage:", + "setNodeManager:", + "_revertDocument", + NULL, + "receiveDataWithTimeOut:", + "_doThirdPassForMapping:error:", + "memberOfTitle:", + "unionSet:", + "_breakConnectionOfTableBinderIfAutoCreated:", + "horizontalBoxInitROI:destRect:userInfo:", + "convertRect:fromView:", + "_undoDeletions:", + "skipParameter", + "_layoutOrdersForChoiceRootedAtItem:inRow:", + "isEqualToHashTable:", + "targetForSelector:", + "setDatabaseVersion:", + "moduleCanBeRemoved", + "gotoEnd:", + "_requestorInResponderChainForServiceDictionary:sendTypes:returnTypes:", + "_computeThumbnailImageInSubthreadFor:", + "_updateStatsForResourceAtIndex:", + NULL, + "toggleLoops:", + "setNumberOfItemsPerRow:", + "_shouldDrawTextWithDisabledAppearance", + "_shouldTypeSelectForEvent:", + "_sizeForNode:", + "isUpdated", + "nameOfGlyph:", + "_toolbarPillButtonClicked:", + "tableView:clickedOnSubrow:ofRow:", + "setWithObjects:", + "IKStoreTemporaryIntValue:", + "transparencyROI:forRect:", + "initWithDocument:", + "_setPM:", + "_registerCacheNode:", + "stringValue", + "_checkLoaded", + "initWithAttributes:", + "setAttributedStringValue:", + "imageProviderClasses", + "_antialiased", + "pathNamesForRecords:singleCard:", + "preloadThread", + "stringByConvertingURLToPath", + "_addRepsFrom:toRep:", + "__oldnf_componentsSeparatedBySet:", + "_viewDidEndLiveResize_handleRowHeaderSurfaces", + "_generateHTML", + "connectionWithSourceObject:sourceKey:targetObject:targetKey:userInfo:", + "_createIconViewDelegate", + "setReleasesAfterPoofing:", + "ignoreOpenAndClose", + "orientationTag", + "_computeThumbnail:", + "_doPositionDrawerAndSize:parentFrame:stashSize:", + NULL, + "setCurrentSearch:", + "_hasSeparateArrows", + "connection:didReceiveData:", + "columnWithIdentifier:", + "provideViewForUIConfiguration:excludedKeys:", + "postalAddresses", + "_closeBlocksForParagraphStyle:atIndex:inString:", + NULL, + "_writeRTFDInRange:toPasteboard:", + "_scriptingObjectWithUniqueID:inValueForKey:", + "removeTooltip", + "_versionNumber", + "enumeratorWithSet:", + NULL, + "hasBitmapRepresentation", + "echosBullets", + "_ensureTableCells", + "_setGenericValue:forKey:withIndex:flags:", + "_scriptingDescriptorOfComplexType:orReasonWhyNot:", + "updateSingleValue:forProperty:changes:", + "allowsCursorRectsWhenInactive", + "clearCachedStatements", + "nts_AddressBookWithDatabaseDirectory:", + "insertionRect", + "setExpandedView:", + "relayoutPicker", + "setRemoteRoot:", + "containsValueForKey:", + "pickerLayoutState", + "zoomOnSelectedLayerLayout:", + "cancelPreviousPerformRequestsWithTarget:", + "setAllowsOtherFileTypes:", + "setContextHelpModeActive:", + "suspended", + "thumbnailOfSize:", + "_allProperties", + "_sizeOfNSImage:", + "tryNewColorListNameSheetDidEnd:returnCode:context:", + "nextBase64Line:", + NULL, + "host", + NULL, + "_imageWithProgrammaticEffectsWithBaseName:state:backgroundStyle:", + "removeObjectAtIndex:forDatabaseKey:", + "selectedColumnIndexes", + "dictionaryWithContentsOfFile:", + "_addEntity:", + "setButtonType:", + "_portForPoint:inNode:bounds:outBounds:", + NULL, + "URLHandleResourceDidCancelLoading:", + "_secProtocolForProtectionSpace:", + "nts_SetValue:forProperty:recordCouldBeInDatabase:record:", + "initWithDataRefData:type:", + "alternateSelectedControlColor", + NULL, + "releaseCGPathArray", + "addRecord:toArray:", + "_clearDependenciesWithAllPeerBinders", + "defaultValueForKey:", + "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:", + "nts_RemoveMember:", + NULL, + "setColor:forAttribute:", + "addressAsString", + "_isSheetOnWindowWithWindowNumber:", + "_synchronizeTitlesAndColumnsViewWidth", + "_trimRecentSearchList", + "cursorUpdate:", + "_compositeFlipped:atPoint:fromRect:operation:fraction:", + "compositionParameterView:didChangeParameterWithKey:", + "_localPointForEvent:inView:", + "stringValuesOfProperty:", + "_setupIdle", + "removeElementAtIndex:", + "initWithFloat:", + "_findItemWithAttributeName:inMenu:", + "drawBackground", + "_fontSetWithName:", + "setDefaultFontSize:", + "_matchesKeyEquivalent:modifierMask:", + "insertionIndex", + "previewPanel:didChangeDisplayStateForDocumentURL:", + "setCacheUsedByBitmapRep:", + "_switchToAppropriateModeForColorIfNecessary:", + "encodeInt64:forKey:", + "_setPathLength:", + "lifeRange", + NULL, + "_registerForToolbarNotifications:", + "_cache", + "_markerSuffix", + "setValue:forHTTPHeaderField:", + "initWithRecord:customProperty:", + "_selectInTabView:itemWithIdentifier:", + "_setNote:atIndex:", + "_descriptorOfType:withValue:orReasonWhyNot:", + "initWithDomain:code:userInfo:", + "recalcMaskForResolutionData:", + "_nodes", + "isComment:delimiter:", + "_indicatorFrameForCellFrame:inView:", + "setByAddingObjectsFromArray:", + "imageRepClassForType:", + "prepareWithInvocationTarget:", + "newMiniaturizeButton", + "_topContainerView", + NULL, + "stopAllModeObjectObserving", + "goesNext", + "cgBackgroundColor", + "_ejectButtonClicked:", + "setCustomValuesDictionary:", + "_lockInterval", + "initializeFiles", + "_fileLocator", + "removeUnbindedNode:domain:", + "gridGroupFromDictionary:oldGroups:", + NULL, + "_maxXResizeRect", + "setKeyEquivalentModifierMask:", + "_setManagedObjectModel:", + "popupViewForAnnotation:", + "closeOpenedWindow:", + "waitTillConversionIsDone", + "pixelBufferAttributes", + "_graphiteControlTintColor", + "_initFromRecord:", + "rangeOfUnit:startDate:interval:forDate:", + "_cleanupRendering", + "_parseData:", + "registerUndoOperation", + NULL, + NULL, + "createThumbnailFromPDFPage:", + "_diskCacheSync", + "_bottomContainerView", + "_findSystemImageNamed:", + "objectIsForcedForKey:inDomain:", + NULL, + "resetRamNodeCacheUsedCount:", + "showcaseMenu:andShiftFocus:", + "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:", + NULL, + "panelShouldHaveExportToIPhotoButton", + "parentSpecifier", + "noteNewRecentDocumentURL:", + "imageManager", + NULL, + "initWithImage:", + "_fixGlyphInfo:inRange:", + "initInsertActionWithItem:withPriority:", + "openFile:withApplication:", + "_clearControlTintColor", + "_descStringForFont:", + "setGraphEditor:", + "setCacheUsedByJpegData:", + "addCellWithSettings:data:profile:", + "_setSuperentity:", + "_drawKeyboardFocusRingWithFrame:inView:", + "handleSetFrameCommonRedisplay", + "_popUpItemAction:", + "_setNeedsDisplayInRow:column:", + NULL, + "deleteOutputForKey:", + "updateClipView", + "setThreadResult:", + "_maxXWindowBorderWidth", + "fullMetadata", + "getMatrix:", + "setPreviousInDictionary:", + "timeForKeyFrame:controlType:inTimeLine:", + "initForPropFind", + "_selectTabWithDraggingInfo:", + "prepareSQLStatement:", + "_createFullscreenWindowWithFrame:", + "imageForRepresentationInstance:forCell:", + "shouldCacheFullSizeImage", + NULL, + "drawBezelGroup:", + "_sortingGroupCompare:", + "_asIconHasAlpha", + "_sortOrderAutoSaveNameWithPrefix", + "setHorizontalScroller:", + "getAttribute:allowBinary:", + "keyBindingManager", + NULL, + "_updateAutoscrollingStateWithTrackingViewPoint:event:", + "_setAutoreleaseDuringLiveResize:", + "_sizeHorizontallyToFitWidth:", + "_targetBindingBound", + "database", + "autoscroll:", + "frequencyArgument", + "_setMinSize:", + "continueWithoutCredentialForAuthenticationChallenge:", + "_statusItemIsDeallocing:", + "saveDocumentAs:", + "propertyValueWithKey:uniqueId:addressBook:preventFetching:", + "peoplePropertyTypes", + "registerUndoWithTarget:selector:object1:object2:", + NULL, + "createUniqueImageManagerForQCCGLContext:options:", + "_setInputBackgroundImage:", + "_scriptingObjectsAtIndexes:inValueForKey:", + "transactionSuccessful:", + "registerFilterName:", + "removeCharactersInString:", + "_superviewFrameChanged:", + "currentDocumentIndex", + "correlationTableName", + "showAttachmentCell:inRect:characterIndex:", + "columnTitleForProperty:", + "_drawForTransitionInWindow:usingPatternPhase:inRect:", + "willBeDisplayed", + "put::", + "_unzipRequestPostHandler:", + "_setupURIs:inCEGeneralNames:", + "decodeBytesWithReturnedLength:", + "continueSpeaking", + "_unionOfObjectsForKeyPath:", + "setStreet:", + "newCloseButton", + "canCrop", + "setFrame:display:animate:", + "iconURL", + "_typeDescription", + "_setErrorOffendingObjectDescriptor:", + "createPageFromImage:atIndex:", + "setManagedName:", + "_getData:encoding:", + "inputWhiteParams", + "maximizedMode", + NULL, + NULL, + "_createCachesAndOptimizeState", + "moveToBeginningOfLine:", + "imageUnfilteredPasteboardTypes", + "defaultQueue", + NULL, + "numberOfTabViewItems", + "_sendDidBeginMessage", + NULL, + NULL, + "iconView:nextTypeSelectMatchFromIndex:toIndex:forString:", + "initWithSourcePath:destinationPath:", + "_lastDraggedOrUpEventFollowing:", + "selectedInactiveColor", + "blurHorizontalPass7ROI:destRect:", + "_widthIsFlexible", + "_forgetData:", + "encodeValuesOfObjCTypes:", + "_colorAtIndex:", + "accessibilityOverflowButtonAttribute", + "removePages:", + "_deviceMoveToPoint:", + "goToDestinationNoPush:", + "ISS__ay_postNotificationName:object:inThread:beforeDate:", + "_addTrackingRects:owner:userDataList:assumeInsideList:trackingNums:count:", + "removeObjects:", + "orderSurface:relativeTo:", + "addAnnotationLayer:", + "initWithContentsOfFile:", + "initWithCString:encoding:", + "_setValue:forOutputPort:", + "SCTFixApplicationMenuString", + "enabledStateAtIndex:", + "_setAutoGeneratedInitialFirstResponder:", + "_itemRemoved:", + "_createTimer", + "__oldnf_removeInternalRedFromTextAttributesOfNegativeValues", + "_updateHighlightedItemWithTrackingViewPoint:event:", + "refreshLoadingProgressBar", + "proKitGrayBackgroundUsingTexture:", + "decodePoint", + NULL, + "_specifiedStyleForElement:", + NULL, + "_old_initWithCoder_NSColorWell:", + "setWantsNotificationForMarkedText:", + "_windowWillLoad", + "setUniqueId:", + "upperItem", + "recordAtIndex:", + "intParameterValue:", + "glyphIndexToBreakLineByClippingAtIndex:", + "drawBorder:", + "clickableContentRectForBounds:", + "_takedownTheater", + "minCount", + "scrollItemAtIndexToTop:", + "_setBaselineDelta:", + "shouldUseInvalidationForObject:", + "recentPicturesPopUpWithDefaultOptionsForRepository:withDelegate:", + "_resizeColumn:withEvent:", + "setAllowsMixedState:", + "newButtonAsPlus:atIndex:", + "writeStrikethroughStyle:", + "_userCanChangeSelection", + "_initWithDOMRange:", + "openDocumentWithContentsOfURL:display:", + "builtInProperties", + "providerRespondingToSelector:", + "handleTakeValue:forUnboundKey:", + "_markerSpecifier", + "removeObjectAtArrangedObjectIndex:", + "constrainFrameRect:toScreen:", + "setImageView:asDelegateFor:", + "_setUpTextField:", + "_dontShowMessageAgainTitle", + "createTableForEntity:", + "stopProxy", + "_finalizing", + "canWriteItem:", + "currentInputManager", + "tagForSegment:", + "backgroundLoadDidFailWithReason:", + "setClearsBackground:", + "pathNamesForRecords:singleCard:dataForAllRecords:inPath:", + "_updateCameraButton", + "_viewAboveAccessoryView", + "serializeData:", + "insertNewline:", + "sendDidReceiveResponse:", + "willAccessValueForKey:", + "verticalMotionCanBeginDrag", + NULL, + "_ignoreSpellingFromMenu:", + "saveDateValue:", + "populateIdentifiers:values:labels:primaryIdentifier:withDataFromRecord:customProperty:", + "numberOfColorComponents", + "createCIImageForManager:withOptions:", + "markerForItemNumber:", + "updateCellOrControl:forMaxValue:", + "_setIssuerHashOfPublicKey:", + "longLongValue", + "_invalidateFocusRingRect", + "setContentFilters:", + "openDocumentFormatData", + "deselectCell:", + "accessibilityVerticalScrollBarAttribute", + "declareContext:isSharedWith:", + "setFloatParameterValue:forResolution:to:", + "outlineView:shouldSelectTableColumn:", + "_updateLayer", + "_isCustomItemType", + "addVariationDescriptions:", + "selectionRectRemoved", + "setContainerSize:", + "analyzeCurrentGRL:", + "_appendNodes:forNodeInfo:addSeparator:", + NULL, + "allocateTextureForSize:glID:offset:", + "_setChosenIssuer:", + "drawSelectionOnTitle", + "initializeItem:", + "_itemsFromItemViewers:", + "_canonicalXMLStringPreservingComments:namespaceString:relationships:", + "outputKeys", + "setLegendHidden:", + "_writePersistentBrowserColumns", + "setTypes:onPasteboard:", + "serviceConnectionWithName:rootObject:", + "_cacheDocumentPreview:", + NULL, + "numCertFields", + "objectForKey:atIndex:", + "drawBezelWithFrame:inView:", + "put:", + "_frameForLayer:", + "exchangeObjectAtIndex:withObjectAtIndex:", + "wasRedirectedToRequest:redirectResponse:", + "currentVersion", + "_growContentReshapeContentAndToolbarView:animate:", + "runPageLayout:", + "redRange", + NULL, + "mergeGroupContentsTableIntoGroups:", + NULL, + "_relayoutWithAnimation:ifInfoVisibilityChanges:", + "decryptComponents:", + "replaceNodeWithIdentifier:withNode:", + "protocolCheckerWithTarget:protocol:", + "allocFromZone:", + "nts_AddSubgroup:", + "_enableOrDisableTrackingAreas", + "stringByReplacingCharactersInRange:withString:", + "fadeFromBlackToNormal:wait:", + "addTrackingAreasForView:inFrame:withUserInfo:mouseLocation:", + "_useFastValidationMethod", + "setTitleFont:", + "IKSlideshowStartIndex", + "_storeDefaultSearchScopeMode", + "setCTM:", + "_performBatchWindowOrdering:", + "decodeRect", + "_commandPopupRect", + "_stringByTranslatingAliasDescriptor:toType:inSuite:", + "_needsRedrawBeforeFirstLiveResizeCache", + "selectTabViewItemWithIdentifier:", + "setDidEndSelector:", + "setIsEqualFunction:", + "setAttributedTitle:", + "setDimmedLayerColor:", + "leftIndentMarkerWithRulerView:location:", + "clearsContext", + "setMenuZone:", + "collectionView:didChangeToSelectionIndexes:", + "displayIgnoringOpacity", + "_defaultButton", + "CGImage", + "_invalidateDisplayForChangeOfSelectionFromRange:toRange:", + "cellDocumentRectAtIndex:", + "control:textView:doCommandBySelector:", + "insertObjects:inSubNodesAtIndexes:", + NULL, + "gizmoIcon", + "locationOfControlType:keyFrame:", + "performKeyEquivalent:", + "_isUnprocessedDeletion", + "proxyDataFormat", + "portForKey:", + "_acceptableRowBelowKeyInVisibleRect:", + "soundUnfilteredTypes", + "_changeMinColorPanelSizeByDelta:setWindowFrame:", + "dictionaryRef", + "moveAsideDatabaseAtPath:reason:", + "supportsTableEditing", + "_stopModal:", + "appliesToRequest:", + "_dataForkReferenceNumber", + "_removeOverlay", + "sharedScriptingAppleEventHandler", + "_glyphTreeDescription", + "restoreSavedSettings", + "_renameCollectionWithName:to:", + "setDocumentURLs:currentIndex:preservingDisplayState:", + "getRepresentation:options:colorspace:intent:bitsPerComponent:image:", + "_optimizeHighlightForCharRange:charRange:fullSelectionCharRange:oldSelectionFullCharRange:", + "getValueFromObject:", + "updateXMLNode:fromObject:objectIDMapping:", + "sharedHelpManager", + "_setIndicatorImage:", + "_writeMetaDataForPeople:withLock:", + "moveWordRightAndModifySelection:", + "drawSchedulePriorityRanges", + "AMSymbol", + "dataWithContentsOfMappedFile:", + "_selectedSize", + "rect", + "_synchronousTransactionStatus:requiringResult:", + "_updateExpansionButtonEnabledState", + "_parseParagraphAttributes2", + NULL, + "autostarts", + "_patchStateChanged:", + "movieShouldLoadData:", + "updateUserSelection:", + NULL, + "selectedCellIndex", + "retainedFulfillAggregateFaultForObject:andRelationship:withContext:", + "_validateJobPageNumbers", + "prepareForCarbonMenuBar", + "paragraphSeparatorGlyphRange", + "textWithStringValue:", + "setHorizontalAlignment:", + "nextArraySeperatedByToken:stoppingAt:inEncoding:", + "setDoubleValue:", + "turnOffLigatures:", + "_menuScrollAmount", + "_initSingleAttributes", + "optionSetting:", + "localeIdentifierFromComponents:", + "clearAllSamples", + "_selectNextFocusedCellGoingForward:andEdit:", + "_ql_allowsJavascriptForPreview:", + "_deviceCurveToPoint:controlPoint1:controlPoint2:", + "setInputNeutralChromaticityY:", + "_keyViewFollowingAccessoryView", + "browserDidScroll", + NULL, + "hasEditor", + "_kaleidoscopeKernel:", + "_applyLinesToFunction:info:", + "push:", + "insertItem:path:dirInfo:zone:plist:", + "destinationOptions", + "_tileView", + "alternateSecondarySelectedControlColor", + "registerClassDescription:forClass:", + "_mouseDownShouldMakeFirstResponder", + "startObservingModelObjectAtReferenceIndex:", + "_observesModelObjects", + "serializedRepresentation", + "_sendDelegateWillDisplayCell:atRow:column:", + "makeProperties:verifyWith:", + "restartIndeterminateCycle", + "handleDelayedUpdate:", + "visibleCellIndexesAtSelection", + "sharedGlyphGeneratorForTypesetterBehavior:", + "createCopy:orientationTag:", + "trackMouse:inRect:ofView:untilMouseUp:", + "layoutSublayers2", + "changeBaseWritingDirectionToRTL:", + "beginPageInRect:atPlacement:", + NULL, + "_isRulePopup:", + "coerceColor:toData:", + NULL, + "parseExtKeyUsage:", + "textXWithTextInfo:renderedSize:destinationRect:", + "_acceptableRowAboveRow:tryBelowPoint:", + "accessibilityFocusRingBounds", + "textView:clickedOnLink:atIndex:", + "_popUpMenuFromView:", + "dragColor:withEvent:fromView:", + "optionsForCGImageSourceCreateImageAtIndex", + NULL, + NULL, + "keepBackupFile", + "closedHandCursor", + "accessibilityIsHeaderAttributeSettable", + "attributesAtIndex:effectiveRange:", + "_shouldAlwaysUpdateDisplayValue", + "bytesPerPlane", + "setPrototype:", + "_drawRectIfEmpty", + "_initWithDictionary:", + "andPredicateWithSubpredicates:", + "_recursiveFindDefaultButtonCell", + "timeZoneName", + NULL, + "_displayingAllDirty", + "_removeRecords", + "typesFilterableTo:", + "setNumberOfOperations:", + "selectionHighlightStyle", + "_resetTitleFont", + "setMaximumRecents:", + "includesSubentities", + "setTrustSettingsDomain:", + "createCVPixelBufferForManager:withOptions:", + "controlBackgroundColor", + "canInitWithFile:", + "absoluteZ", + NULL, + "_shouldAllowAutoExpandItemsDuringDragsDefault", + "columns", + "_subentitiesIncludes:", + NULL, + "applicationDidUnhide:", + "_filteredAndSortedChildrenOfNode:", + "relationshipsByName", + "pageUp:", + "previousCard:", + NULL, + NULL, + "_addStringToRecentSearches:", + "setDrawWithCGImage:", + NULL, + NULL, + "_deleteNodeFromMainCache:", + "_invalidateAllRevealoversForView:", + "dayOfYear", + "_canChangeRulerMarkers", + "zoomToFitAll", + NULL, + NULL, + "_sendActionFrom:", + "rulerView:didRemoveMarker:", + "cancelLoadInBackground", + "windowWillOrderOffScreen:", + "_parseFullURL", + "_disableRefreshOnWindow:", + "_drawBackgroundForGroupRow:clipRect:", + "usesScreenFonts", + "windowRegionBeingDrawn", + "cameraDY", + "dataWithPDFInsideRect:", + "_setDynamicToolTipsEnabled:", + "_drawerDefaultLeftLeadingOffset", + "setOrderIntermediate:", + "getFilenamesAndDropLocation", + "nts_SetSearchElement:", + "parseADR", + "_invalidateEjectButtonCellWithEvent:", + "setCharacterIndex:", + "_iDiskPathForURI:", + "applicationDidHide:", + "IKIPLargestRepSize", + "_changeJustMain", + "writeToConsumer:", + "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:", + "objectValue", + "isBeingEdited", + "setTransferMode:", + "_loadedCellAtRow:column:inMatrix:", + NULL, + "_closeTooltip", + "_calendarRangeOfSelectedDaysForDisplayedMonth", + "expandByOneROI:destRect:", + "drawVisibleCells:", + "setAlternateIconsForAnimationFilenames:", + "resourceNamed:", + "nts_migrateUniqueMailRecentsFromV2SQLiteStore:toBinaryV3Store:inContext:error:", + "_newRowsForFetchPlan:selectedBy:withArgument:", + "_datePickerCellDidChangeSubfieldSelection:", + "terminationStatus", + "currentAnimationStep", + "rectOfColumn:", + "lastChangeCount", + "trackMouseDragAllowed:", + NULL, + "currentFontAction", + "bufferSize", + "validateVisibleItems", + "_nextDisplayMode", + "_scriptingSetOfObjectsForSpecifier:", + "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:", + "_effect", + "isOpaque", + NULL, + "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", + "imageBrowserLoadingEnded:", + "_isEqualToSortDescriptor:", + "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:", + "_searchTermsWindowBecameKey:", + "setExpandedNodes:", + "_keyFramesCache", + "_setImageOnDragSession:withOffset:", + "replaceBytesInRange:withBytes:", + "handleAnimatePageTransition:", + "_scriptingCopyWithProperties:forValueForKey:ofContainer:", + "isEqualToFormatDescription:", + "toggleToolbarShown:", + "isOptional", + "_convertRootIndex:", + "mediaTypeInMedia", + "_handleDefaultVoiceChange", + "removeRecord:fromAddressBook:", + "valueSelectionBehavior", + "setDefaultParagraphStyle:", + "goBackwardInHistoryIfPossible", + "datePickerCell:validateProposedDateValue:timeInterval:", + NULL, + "colorUsingColorSpace:", + "_shouldStretchWindowIfNecessaryForUserColumnResize", + "initWithPort:", + "_setDisplayValue:object:triggerRedisplay:", + "_disabledTrackingInNeighborhoodOfMouse", + "_defaultTokenizingCharacter", + "descriptionDictionary", + "_runLoop:containsPort:forMode:", + "_isKeyPathBound:", + "hitPart", + "subscript:", + "_typeDescriptions", + "_open:fromImage:withName:", + "_unfragmentBrowserItems", + "_saveState:filterTarget:filterAction:flatten:", + "selectTabViewItemAtIndex:", + "_drawDiscreteCapacityWithFrame:inView:", + "bezierPath", + "promise:keysAndValues:", + "initWithCoercer:selector:", + "composite:outOf:", + "setContextInfo:", + "_performMenuFormRepresentationClick", + "getBufferSize", + "resultList", + NULL, + "_timeLayoutTree", + "outlineView:didClickTableColumn:", + "registeredClients", + "_lookUpRangeInDictionary:", + "_readCacheFile", + "_scriptingIndicesOfObjectsForSpecifier:count:", + "setAutofill:", + "isAuthenticated", + "_segmentedControlRectForItemAtIndex:inBounds:", + "setMsgid:", + "recalcFigure:path:button:", + "maxDataLength", + "_sendDelegateDidDragColumn:", + NULL, + "textForValue:", + NULL, + "initializeNewItem:", + "_pageFormatWasEdited", + "_rowsForConflictDetection:withChannel:", + "_growBoxOwner", + "_keepCacheWindow", + "_executeInsertChild:didCommitSuccessfully:actionSender:", + "_sendFinderAppleEvent:class:file:", + "initWithClassPath:", + NULL, + "_insertionOrder", + "_setLastDragDestinationOperation:", + NULL, + "addAttributesWeakly:range:", + "_drawWithImageCache", + NULL, + "resetSQLStatement", + "cancelDelayedUpdate", + "colorSyncProfile", + "hardwareCapsDidChange:", + NULL, + "_recentLockTokens", + "_postAtStart:", + "preferenceForKey:", + "setApplicationName:", + "_userDeselectToRow:", + "clearVerifyField", + "simpleNodesFromXMLDocument:atPath:", + "deselectAllCells", + NULL, + "_determineDropCandidateForDragInfo:", + "_searchFieldCancelAction:", + "computeOccuranceIndexForChild:forParent:", + "application:printFile:", + "renderWithCGLContext:forBounds:", + "_primitiveCharacterRangeForGlyphRange:", + "valueForOutputKey:ofType:", + "removeAllActionsWithTarget:", + "setupIndexHandler", + "createGenieWindowForBoundingBox:", + "pictureTaker:willOpenOnImage:contextInfo:", + "_CFURLRequest", + "_counterpart", + "textTypes", + "_willDeallocIndexPath:", + "highlightColor:", + "setCompletionDelay:", + "initWithReferenceToObject:", + "documentVisibleRect", + "animationDuration", + "externalReferenceCount", + "setImageManager:", + "getCyan:magenta:yellow:black:alpha:", + "rangeOfVisibleIndexesAtSelection", + "setOptional:", + "movieRect", + "isVisual", + "addInsertedObject:", + "_sizeWithSize:", + "outlineView:shouldEditTableColumn:item:", + "movieWithDataReference:error:", + "setDefaultCropIsZoomToFit:", + "initWithName:attributes:", + "initWithOptions:contextAttributes:", + "newWithColorSpace:components:count:", + "_effectiveTitlePosition", + "setImageRep:", + "transformWith:", + "cachedChildrenForExpandedNode:", + "_alwaysShowBezelForCurrentBezelStyleAndState", + "_hash", + "indexSheetWillDeactivate:", + "initWithRootElement:", + "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:", + "bundleWithPath:", + "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:", + "setParagraphSpacingBefore:", + "_postCarbonWindowActivateEvent:makeKeyWindow:", + "integrateReferenceInstance:replaceImage:", + "usesRuler", + "showsContentSeparatorForEdge:", + NULL, + "canBrowseNode:allowInteraction:", + "_moveSheetByItself:delta:", + "setRecentPictureAsImageInput:", + "needsResyncWithDefaultVoice", + "titlebarBoundsForNote:inBounds:", + "smartInsertForString:replacingRange:beforeString:afterString:", + "resetDateFormats", + "initWithCompositionFile:", + NULL, + "windowWillMove:", + "canHide", + "_PFPlaceHolderSingleton_core", + "_mouseDownInSurroundingRegionShouldMoveWindow", + "_initForURL:withContentsOfURL:ofType:", + "_ql_allowsPlugInsForPreview:", + "_performFetchWithRequest:merge:error:", + NULL, + "_textDimsWhenDisabled", + "setSelector:", + "_resizeViewsForOffset:coordinate:", + NULL, + "_completeNoRecursion:", + "_removeResourceAtIndex:", + "_setNeedsDisplayInRegion:", + NULL, + "verifyDataType:forKey:", + "transpose:", + "_initWithWindowNumber:", + "_initWithType:", + "classFallbacksForKeyedArchiver", + "leftView", + "__performUndo2:", + "_enclosingBrowserView", + NULL, + "_newIconlessMenuItemForNavNode:", + "invertedDictionary", + "__oldnf_replaceAllAppearancesOfString:withString:", + NULL, + "_clockAndCalendarCellSize", + "_updateRolloverAtPoint:", + "setResetMatrices:", + "deselectRecord:", + "takeAPicture", + "_allocAndInitPrivateIvars", + "_menuFormRepresentation", + "_primitiveSetPreviousKeyView:", + NULL, + "_stringSearchParametersForListingViews", + NULL, + "accessibilityIsMinimizeButtonAttributeSettable", + "importsGraphics", + "_redisplayAndResizeFromRow:", + "_sizeRowHeaderToFitIfNecessary", + "initWithFormat:pixelsWide:pixelsHigh:options:", + "setScopeLocations:", + "_displayValueForConstantValue:", + "_plusImage", + "heightOfInfoSpace", + "browserWillScroll:", + NULL, + "_batchZoom", + "cacheUsed", + "_setCloseEnabled:", + "gotoPreviousItem", + "initForCArray:withContext:andRange:mergeWithRange:withType:", + "URLResourceDidCancelLoading:", + NULL, + "setPrimitiveText:", + "QTPixelFormat", + "insetByX:Y:", + "selectedMenuItemColor", + "getSubNodes:range:", + "drawTitleBackground", + "_observeSpecifierOfEntry:", + "_setInlinePreviewURL:", + "isSetOnMouseExited", + NULL, + "colorWithRed:green:blue:", + "setDoubleClickTarget:andAction:", + "_bulletStringForString:", + NULL, + "ISS_mimeAnalysis", + "_readSelectionFromPasteboard:toPoint:", + NULL, + "recentPicturesPopUpForRepository:withDelegate:", + "_shouldDrawRightSeparatorInView:", + "flushWindow", + "_setContentKindAndEncoding", + "analyzeReconfiguredWindowFinished:", + "perMillSymbol", + "wantsToDrawLabelInDisplayMode:", + "managedObjectClassName", + "replaceSetLengthActionForItem:withLength:", + "fontAttributes", + "_cellFurthestFrom:andCol:", + "green", + "openCategoryFile:withData:", + NULL, + "horizontalAlignment", + "setSubmenu:", + "_updateActivity:", + "_focusAcquired", + "updateInDock", + "_initWithCGSEvent:eventRef:", + "_rowHeaderScrollableContentVisibleRect", + "menuForEvent:", + "actionMenu", + "wantsDefaultClipping", + "setCustomButtonVisible:", + "updateCellLayoutAtIndex:", + "openTempFile:ok:", + NULL, + "_nameIsEqualToNameOfNode:", + "cellsAlignOnBaseline", + "setGroup:", + "keyWindowFrameHighlightColor", + "_allocString:", + "enabledFileTypes", + "_setBorderType:", + "setIndexLabel:atIndex:", + "setScriptErrorString:", + "dispatchGroupSelection:", + "pathToColumn:", + "_explicitlyCannotAdd", + "newItemForRepresentedObject:", + "strokeExactInterior", + "_setResult:", + "setupSlider", + "filterForName:value:key:", + "preferences", + "focusStack", + "_displayName", + "makeFirstResponderFromCarbonFocus:", + "_openDrawer", + "_initWithProperties:commandName:resultTypeAppleEventCode:", + "accessibilityIsToolbarButtonAttributeSettable", + "addAttribute:values:mergeValues:", + "_interlabelPadding", + "inputClientDisabled:", + "colorSpaceForColorSpaceName:", + "setMaxSize:", + "_centerTitle:inRect:", + NULL, + NULL, + "cacheSchema", + NULL, + "initWithParentSpecifier:name:", + "scheme", + "_asScriptTerminologyNameString", + "_startObservingRowObjectsRecursively:", + "replaceBytesInRange:withBytes:length:", + "setBorder:", + "postNotificationName:object:userInfo:deliverImmediately:", + "setConfigurationUsingName:", + "_filtersDALDevices", + "_registerForFontSetNotification", + "_mapKeyCodeToInputSource:modifiers:", + NULL, + "_matadorThread:", + "_setGroupIdentifier:", + "initWithCertData:", + "setVerticalLineScroll:", + "intWithController:", + "canConvertToBMPRepresentation", + "performSelector:withObject:withObject:", + "isInserted", + NULL, + "updateFrameColors:", + "_stateMarkerForValue:", + "drawBorderImage:middleImage:borderImage:inRect:withOrientation:flipped:operation:fraction:", + "_setCAType:", + "openDocument:", + "_popupImageSize", + "operationType", + "verifyWithDelegate:", + "applicationTerminating:", + NULL, + "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:", + "copyRegexFindSafePattern:toBuffer:", + "accessibilityHelpStringForChild:", + "weakCount", + "multiValueForProperty:", + "_placeholderString", + "evaluatedArguments", + "writeUnderlineStyle:allowStrikethrough:", + "_region:", + "endMouseOperation", + "selectColumnIdentifier:", + "_bindingAdaptorMethodsNeededMask", + "setHighlightsBy:", + "_setDrawsBaseline:", + "copyFromZone:", + "nts_ValueForProperty:", + "setScriptingProperties:", + "sharedTimers", + "accessibilitySetHiddenAttribute:", + "setDestinationKeychain:", + "correspondingDisclosureGroup", + "setWidth:", + "drawFocusRingInView:", + "rebroadcastUserPictureDidChange", + "attributedString", + "imageRepClassForData:", + "_setHasCustomSettings:", + "showcaseRect:position:", + "sendProfilingData", + "select", + "_scheduleDelayedAutocomplete", + "initWithProtocol:httpRequest:proxyURL:challenge:callback:context:", + "fbeNode", + "writeCharacterShape:", + "_doModalLoopForSecondaryThread:", + "contentDocument", + "handleThreadedFindGRLs", + "_autoreleaseTrackingTag:", + "_setup:", + "_willChangeValuesForArrangedKeys:objectKeys:indexPathKeys:", + NULL, + "setQueryType:", + "_panelInitWithCoder:", + "initWithHost:port:protocol:realm:authenticationMethod:", + "_searchInSpotlight:", + "_readImageInfoWithImageSource:imageNumber:properties:", + "_transactionFinished", + "texturePixelsWide", + "_applicationWillTerminate:", + "isAtEnd", + "enterFullscreen", + "rehashAround:", + "_stripAttachmentCharactersFromString:", + "initWithNode:arguments:", + "imageForState:", + "netServiceWillPublish:", + "_textHitTest:withFrame:inView:", + "initWithKey:type:access:appleEventCode:isHidden:presentableDescription:name:", + "cacheUsedByBitmapRep", + "inputTopLineAtIndexes:", + "addedMembers:", + "_relayoutSubviewsWidthChanged:", + "_moveFullscreenViewToView:showControls:fitToScreen:coalesceFlushes:", + "predicateWithValue:", + "lockTextureRepresentationWithColorSpace:forBounds:", + "boundsForProvider:withTransformation:", + "nts_SetDistributionIdentifier:forProperty:person:allowFetching:", + "_theaterStateDidChange:", + "spellServer:checkGrammarInString:language:details:", + "extraLineFragmentUsedRect", + "tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:", + "isFileListOrderedCaseSensitive", + "recoveryOptionIndex", + "_searchFieldClearRecents:", + "tabViewAdded", + "setSpacing:inWindow:delegate:", + "writeBinaryObjectSequence:length:", + "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:", + "insertRow:withCells:", + "hasCloseBox", + "_web_numberForKey:", + "setApplicationIconImage:", + "setNegativeSuffix:", + "_isThreadedAnimationLooping", + "subrowObjectsForPerson:", + "aspectRatio", + NULL, + "setCacheUsedByProxyBitmapRep:", + "_blobForCurrentObject", + "_validateStyleMask:", + "_cachedAttributedTitleSize", + "text", + "_topRightResizeCursor", + "allowedClasses", + "_scanForPlugIns:", + "symbol", + "setFieldOfView:", + NULL, + "isToOne", + "_complexTypeDescriptions", + "setPreviewMode:", + "moveToEndOfParagraph:", + "coreUIState", + "_altContents", + NULL, + "relatedMatchesForIdentifier:", + "principalID", + "_predicateForImplClass:addressBook:", + "scrollsDynamically", + "enableKeyEquivalentForDefaultButtonCell", + "setTrailingOffset:", + "abPeopleFromUniqueIds", + "handlePollingForMyWindow:", + "selectedPages", + "_alignmentRectInNormalizedCoordinates", + "accessibilityIsCloseButtonAttributeSettable", + "initWithMenu:", + "_collectItemViewerFrames:intoRectArray:", + NULL, + "isInInterfaceBuilderSimulator", + "fileNamesFromRunningOpenPanel", + "menuView", + "_abCompareWithinIntervalAroundToday:", + "_tabRectAdjustedForOverlap:", + NULL, + "finishUsingMenuRepresentation", + "_indexOfRangeBeforeOrContainingIndex:", + NULL, + "mouseDownSetup:", + "_repeatMultiplier:", + "parseCrlDistributionPoints:", + "setPortNumber:", + "enumerateDescendents:ofResource:", + "textAttributesForPositiveValues", + "_setContentsDirty:", + "removeSource:", + "encodeQTTime:forKey:", + "countdownNotePlayer", + "tooltipDelay", + "selectFilterByURL:", + "_itemAdditionCompleted:", + "_setupBoundsForLineFragment:", + "valueTransformerNames", + "invalidateContents", + "addTypes:owner:", + "setMouseDownMovesWindow:", + "errorCount", + "_addResource:withSize:cost:md5List:count:", + "formatType", + "_registerOrUnregister:observerNotificationsForModelObject:", + NULL, + "_isAtEnd", + NULL, + "_unlockViewHierarchyForDrawing", + "applyMultiValue:withProperty:toRecord:", + "clearReorderingItemsArray", + "beginLoadingImageDataForClient:", + "_blockRowRangeForCharRange:completeRows:", + "pageRanges", + "_swap", + "highlightRecovery:pattern:clipLevels:phase:redBlueSwap:image:", + "_createStringDict", + "_sharesParentKeyState", + "supportsProperty:", + "enqueueResumeOperationScheduledForTime:", + "buttonRectForBounds:inView:", + "_versionHash:", + "mutableAttributes", + "setPolicies:", + "updateOptionsWithApplicationName:", + "membersOfGroup:", + "_showingFocusRingAroundEnclosingScrollView:", + "selectAllInView:selectionOnly:", + "objectInAppleUseCoreUIAtIndex:", + "_addKey:", + "pathForResource:ofType:inDirectory:", + "setColumnAutoresizingStyle:", + "optimizesParameters", + "setExternalScale:", + "createCGImage:fromRect:format:colorSpace:", + "animate", + "_sendCarbonNotificationForTag:withValuePtr:andSize:", + "initWithColorSpace:", + "willClose", + NULL, + "selectedPagesAreContiguous", + "automaticRedisplay", + "initWithCopyOfRects:count:bounds:", + "mutableCollectionGetter", + "selectedControlTextColor", + "orderFrontFindPanel:", + "apply:to:params:", + "null", + "defaultCollector", + "verticalPagination", + NULL, + "handleAnimationProgress:", + "mipmapDB", + "levelForItem:", + NULL, + "_notifyDelegate_DidRemoveItem:", + "_minContentSizeForDrawers", + "formatDescriptions", + NULL, + "_updateLayer:", + "imageOffset", + "_isDeadkey", + "addFileNamed:fileAttributes:", + "_discardEventsFromSubthread:", + "_updateHeightToReflectNewWindowStyleIfNecessary", + "_shouldShowHiddenFiles", + "_documentController:didPrint:appleEventSuspensionID:", + "contextWithCGContext:options:", + "existingItemForSetItem:forAbsentKey:", + "_generateCountClauseForToManyKeyPathExpression:inContext:", + "_rulerAccViewListsAction:", + "_zoomWithSpeedFactor:", + "_canCreateImageFromPasteboard:", + "addChildWindow:ordered:shareKey:", + "deletedGroups:", + "_imageForPart:keyWindow:", + "_autoscalesBoundsToPixelUnits", + "minimumDaysInFirstWeek", + "boxType", + "restoreWindowOnDockReincarnation", + "runModalForSavePanel:withFilepath:", + "_clickedCharIndex", + "initDir:file:docInfo:", + "_setFileURL:", + "executeRequest:withContext:", + "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:", + "moveForward:", + "indexSheetWillActivate:", + "enumerations", + "_addDefaultTable", + "contentsEqualAtPath:andPath:", + "initWithGroup:records:assimilatedMap:addressBook:", + "allowsUserCustomization", + "_initLockDictionary", + "drawInRect:", + "multiply:with:", + "suppressAllNotificationsFromObject:", + "_resolveName", + "backgroundFilters", + "statusUpdate:", + "_postCheckpointNotification", + "selectedSegment", + "orderString:range:string:range:flags:", + "translateRectsNeedingDisplayInRect:by:", + "mutableData", + "setCurrencyCode:", + "countForFetchRequest:error:", + "dataForResolutionData:", + "_delayedUpdateSwatch:", + NULL, + "writeLigature:", + "initForKeyBackPointer:", + "currentVRamBindedRange", + "fileName", + "_taskNowMultiThreaded:", + "_contextInfo", + "canInsertChild", + "orientation", + "isEnabledWithSelection:", + "initWithTextControl:colorPanel:delegate:", + "_findFirstItemInArray:withItemIdentifier:", + "openInclude:", + "_initializePrimitiveAccessorStubs", + "immutableCopy", + "locationX", + "_certSigningUsage", + "loadNSImageNamed:into:", + "int64", + "deselectDirectoryResultRow:subrow:", + "isIdentifiedByName:", + "_validateUnderline:", + "accessibilityHiddenAttribute", + NULL, + "newFlipped:", + "_resizeWeighting", + "cropElementDidLiveUpdate:", + "setTitle:andDefeatWrap:", + "toggleSmartInsertDelete:", + "startDeviceAVCControlsPoller", + "_imageChosen:returnCode:contextInfo:", + "_updateTitle", + "splitView:canCollapseSubview:", + "abGlobalAPILockInFile:line:", + "_launchSpellCheckerAsynchronously:", + "appendPasswordView", + "_buttonOfClass:action:", + "updateObject:objectIDMap:", + "stringByConvertingPathToURL", + "validateMipmapAtIndex:withQuality:", + "heightForNumberOfVisibleRows:", + "sharedWorkspace", + "_managedObjectsChangedInContext:", + "modelByMergingModels:", + "columnFilters", + "startTimerForSpeaking", + "_shouldHighlightRows", + NULL, + "enabledStateForMenuItem:", + "loadState", + "_setValue:forKeyPath:ofObjectAtIndexPath:", + "copyright", + "clearSearch", + NULL, + "reclaimResources", + "isLocked", + "parseABMaiden", + "bufferPixelsWide", + "data2", + "_menuSelect:", + "viewDidLiveResizeFromRect:", + "fontInstanceForRenderingMode:", + "attributesAtEndOfGroup", + "_loadOrSetMetadata", + "cancelOperation:", + "_addOptionFromSlice:ofRowType:", + "visiblePages", + "createDestinationInstancesForSourceInstance:entityMapping:manager:error:", + "nodeNamespace", + "_sendManufacturedCursorUpdateEventForTrackingRectEvent:", + "transactionHadError:", + "_applicationDidTerminate:", + "IKOpenGLDefaultPixelFormat", + "_setCountry:", + "destinationsForRelationship:", + "adjustControls:", + "indexOfIdentifier:", + "_clearDirtyRectsForTree", + "_markedWidthDiffersFromCurrentWidth", + NULL, + "calendarIdentifier", + "minificationFilter", + "setAllowsUserConfiguration:", + "propertyPopUpFrame", + "minimumFractionDigits", + "_modelForVersionHashes:", + "initWithCharactersInString:", + "isLocationRequiredToCreate", + "topColor", + "_defaultFromWritableTypeNames:", + "accessibilityIsMaxValueAttributeSettable", + "ensureGlyphsForCharacterRange:", + "_typeDescriptionForKey:", + "directories", + NULL, + "_tmpPasteboardWithCFPasteboard:", + NULL, + NULL, + "_fixSelectionAfterChangeInCharacterRange:changeInLength:", + "imageBrowser:backgroundWasRightClickedWithEvent:", + "playsSelectionOnly", + "_topLeftResizeCursor", + "alignment", + "setAutosaves:", + "superview", + "establishConnection", + "returnType", + "backingLocation", + "_removeTrackingRectTag:", + "initWithCompareSelector:", + NULL, + NULL, + "selectFirstNavPopupMenuItem", + "setupInspectorViews", + "_doCheckPreAuth", + "setTransitionImage:", + "coerceValueForScriptingProperties:", + "setHeader:withValue:", + "_rowButtonsRightHorizontalPadding", + "compareSelector", + "_trackMouse:", + NULL, + NULL, + NULL, + "clearTemporaryIDs", + "deallocAllExpandedNodes", + "cleanup:", + "setFetchLimit:", + "_finalize_QCImageTextureBuffer", + "adjustPageHeightNew:top:bottom:limit:", + "initWithCodecType:sizeMode:width:height:compressionSessionOptions:", + "AppleUseCoreUI", + "_selectIndex:scrollToVisible:", + "groupsByEvent", + "columnOfMatrix:", + "setPlaceholderString:", + "_typographyPanel", + "weekdayOrdinal", + "updateBackgroundColor", + "_setNeedsDisplayBeginingAtColumn:", + "dataWithContentsOfFile:", + NULL, + "addNormalAndDownAppearanceToDictionaryRef:", + "_setModelKeys:triggerChangeNotificationsForDependentKey:", + "_sortNodes:", + "_availableChannel", + "showRemainingTime", + "_createMediaBrowserDelegate", + "createPDFDocumentFromPDFPage:", + "_changeSpellingFromMenu:", + "_readMovieIntoRange:fromPasteboard:", + "textDidBeginEditing:", + "fillRect:color:context:", + "writeCellTerminator:atIndex:nestingLevel:", + "_knownPrimaryKeyForObjectID:", + "leafKeyPathForNode:", + "CA_stringByResolvingSymlinksInPath:", + "_noteToolbarDisplayModeChanged", + "createCopyWithBlur:context:", + "animationTimerFired:", + "setZoomFactor:", + "makeKeyAndOrderFrontWithEffect:canClose:", + "backgroundIsBlack", + "iconView:writeIndexes:toPasteboard:", + "nextDaylightSavingTimeTransition", + NULL, + "_obtainPermanentIDsForObjects:withContext:", + "addProperty:withLocalization:toMenu:", + "_removeTexturesInContext:", + "unregisterModelKeyPath:", + NULL, + "setCellsOutlineColor:", + "_updateCAConfigFileSerialNumber", + "_setEnabled:", + "_glyph", + "canStealContentsFromPreviewView:", + "_customImageData", + NULL, + "_setResizedWidth:", + "isPlanar", + "longValue", + "formattedAddressFromDictionary:", + "_minXTitlebarDecorationMinWidth", + NULL, + "setSupportedPreviewTypes:", + "doFilesystemCleanupOnRemove:", + "createCGPathArray", + "_retainedURIString", + "_doNameCheck:", + "_readSelectionFromPasteboard:types:", + "initWithSerializedRepresentation:", + "setupParameterView", + "setImageDimsWhenDisabled:", + "postEvent:atStart:", + "selectionForEntireDocument", + "filtersInDomains:", + "outlineView", + "_recount", + "mappedIntoRAM", + "newStatementWithSQLString:", + "closeboxRectForBounds:", + "_isCritical", + "_argumentValueFromParameterDescriptor:usingTypeDescription:", + "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:", + "tryToPerform:with:", + "rowIndex", + "_delegateRespondsTo_typeSelectStringForTableColumn", + "_setItemOwnerView:", + "_updateMouseMovedState", + "_resumeLoading", + "fields", + "_nodeForBrowserType:", + "increaseSizesToFit:", + "setExpandedGridFrame:", + "oneOrMoreDescriptionsForSubelementName:", + "creationTime", + "_accessibilityTitle", + NULL, + "variable", + "_cancelDelayedAutocomplete", + "nts_CachedRecordForUniqueId:", + "doubleValue", + NULL, + "_liveResizeHighlightSelectionInClipRect:", + NULL, + "offStateImage", + "imagePathChanged:", + "initPutWithSession:data:URI:includeRangeHeader:rangeStart:rangeEnd:token:", + NULL, + "_contentRectForCharRange:textContainer:", + "zoomAll:", + "foreignKey", + "_launchService:andWait:", + "installToolTips", + "_invalidateTimers", + NULL, + "hasCustomImage", + NULL, + "sourceExpression", + "openGLTextureIsPremultiplied", + "_importConfirmSheetDidEnd:returnCode:contextInfo:", + "publicRecord", + "parseKeyUsage:", + "_setWindowDepth", + "decimalNumberByAdding:", + "_calcHeightsWithMargin:operation:", + "textStorage:edited:range:changeInLength:invalidatedRange:", + "nts_IsPublished", + NULL, + "abdStoppedSyncing:", + "isRulerVisible", + "_takeApplicationMenuIfNeeded:", + "argumentsRetained", + "requestTimeout", + "setCropPRS:", + "encodeInvocation:", + NULL, + "_contentRectForTextBlock:glyphRange:", + "setAutoreverses:", + "movieBoxIsOpaqueChanged:", + "windowTitle", + "_recursiveTickleNeedsDisplay", + "_areAllPanelsNonactivating", + NULL, + "invalidateFilters", + "_beginDrawForDragging", + "_recentPlacesNode", + "allowsToggleToOff", + "canChooseFiles", + "focusRingEnabled", + "containsGroupName:", + "moveBackwardAndModifySelection:", + "setMetadata:forPersistentStore:", + "declareTypes:owner:", + "_changeIconViewTextPosition:", + "_updateLayerAnchorPointForUnflippedSuperview", + NULL, + "_restorePreviousKeyWindowFromSavedProperties", + NULL, + "constrainMeasurementsToInteger:", + "alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:", + "unarchiveObjectWithData:", + "_web_uniqueWebDataURL", + NULL, + "_getClientContext", + "recordForUniqueId:", + "_setCompoundPredicate:", + NULL, + "_searchForSoundNamed:", + "interpretKeyEvents:", + "minTimeForControlType:keyFrame:inTimeLine:", + "favoritesNode", + "_replaceAllItemsAndSetNewWithItemIdentifiers:", + "_checkLinksForRange:excludingRange:", + "unarchiver:willReplaceObject:withObject:", + "anchorPoint", + "setShowsControlView:", + "addTextLabelToDictionaryRef:", + "setTransitionFrame:", + NULL, + "validateBackupFileAtPath:", + "removeRepresentation:", + "nextTokenPeakSingle:length:", + "indicesOfObjectsByEvaluatingWithContainer:count:", + "splitView:constrainSplitPosition:ofSubviewAt:", + NULL, + NULL, + "superlayer", + "isSelectorExcludedFromWebScript:", + "_invalidateConnectionsAsNecessary:", + "_buttonAtIndex:", + "addGroupButton", + "spotlight:", + NULL, + "contextMenuRepresentation", + NULL, + "_setPreview:", + "_localizedColorListName", + "localizedColorNameComponent", + NULL, + NULL, + NULL, + "testScrollPerformancesWithDelta:withCount:", + "accumulatorFormat", + "blueReconstruction:green:phase:image:", + "removeFromRunLoop:forMode:", + "turnOffKerning:", + "scrollWheel:", + "setSave:", + "constantValue", + "_windowDidChangeScreens:", + "referenceObjectForObjectID:", + "_setVisibleInCache:forWindow:", + "_drawKeyboardUILoopStartingAtResponder:validOnly:", + "_writeInfoStringForKey:number:headerData:contentsData:", + "insertObjects:atArrangedObjectIndexes:", + "publicRecordsForClass:withDatabaseImpls:inAddressBook:", + "didStabilize", + "propertyForKey:inRequest:", + "noiseImage", + NULL, + "_setTransactionStarted:", + "_computeImageBufferParametersForProvider:withFormat:target:colorSpace:outSrcFormat:outSrcTarget:outSrcColorSpace:outDstFormat:outDstTarget:outDstColorSpace:relaxedFormat:softwareOnly:", + NULL, + "passwordView", + "_allowsAnyValidResponder", + "table", + "protocolFamily", + NULL, + "_closeFileSync", + "_updatedMetadataWithSeed:includeVersioning:", + NULL, + NULL, + "_okForOpenMode", + "initWithCards:duplicates:group:selectGroup:uiController:", + NULL, + "currentSelection", + NULL, + "movePath:toPath:handler:", + "_argInfo:", + "updateWindowsItem:", + "_forceMoveItemFromIndex:toIndex:", + "_rectsForBounds:", + "_reloadFontInfoIfNecessary:", + "oldIndexOfNewIndex:", + "doubleClick:", + "setMenuBarVisible:", + "windowDidBecomeVisibleNotification:", + "uniqueId", + "_willPresentOpeningError:forURL:", + "cardWillCommitChanges:", + "compare:options:", + "BMPRepresentation", + "_gutterFrame", + "createLocalPortWithTarget:", + "outlineView:performKeyEquivalent:", + "checkIdentifier:", + "_adjustScroller", + "cocoaSubVersion", + "_unregisterTableColumnBinder:fromTableColumn:", + "_beginListeningForApplicationStatusChanges", + "_setToDefaults", + "_startFadeOut:", + "isMovable", + "imagingModeForcedToGWorld", + "initWithFileName:", + "isARepeat", + "setLayerTreeHost:", + "_branchImageEnabled:", + "getFiltersInCollection:", + "adjustRect:", + "accessibilityStyleRangeForIndexAttributeForParameter:", + "_runAlertPanelForFileOverwritten:moved:renamed:inTrash:orUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:", + "createTexturePackerAtIndex:", + "_setGlyphsPerLineEstimate:integerOffsetPerLineEstimate:", + "_newCompositionsDidLoad:", + "initWithSource:forRelationship:asFault:", + "selectedName", + "setAllowsToolTipsWhenApplicationIsInactive:", + "imageBrowser:writeItemsAtIndexes:toPasteboard:", + "textFileTypes", + "accessibilityIsEnhancedUserInterfaceAttributeSettable", + "_insertPopUpButtonItemInCellOrControl:title:representedObject:menuItemIndex:index:", + "checkBoundaries", + "_validateSingleValue:forKey:error:", + "_updateFrameOfDisplayedView:", + "accessibilityActionNames", + "_openListsForParagraphStyle:atIndex:inString:", + "isVRMovie", + "_readPersistentExpandItems", + "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", + NULL, + "_presentDividerDragResult:withParams:", + "scanUpToCharactersFromSet:intoString:", + "newRowsForFetchPlan:", + "_openDrawers", + "_valueForParameter:", + "layoutManager:shouldUseSelectedTextAttributes:atCharacterIndex:effectiveRange:", + "appendSQL:", + "loadedBundles", + "wrapsAround", + "mainBundle", + "advanceToToken:throughTypes:", + "enableFreedObjectCheck:", + "_setNeedsReset", + NULL, + NULL, + "isKindOf:", + "_isFullWidthCellAtRow:", + "layoutManager:didCompleteLayoutForTextContainer:atEnd:", + "createViewController", + "drawRadioButton:inContext:", + "pathComponents", + "_askDelegateWithURL:proxy:forRequest:proxyURL:failureCount:failureResponse:protocol:withCallback:context:", + "_isPublicRecord", + "pageChanged:", + "requiredMinSizeFor:", + "_compositeToPoint:operation:fraction:", + "subcacheUsingRectFilteringFunction:rect:", + "wasFlattened", + NULL, + "_showToolTip", + "_commonInitNSColorPickerColorSpacePopUp", + "setCell:enabled:", + "outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:", + "createTextureBufferFromProvider:withFormat:target:transformation:bounds:colorSpace:options:", + "setDistributionIdentifier:forProperty:person:", + "_initInStatusBar:withLength:withPriority:hidden:", + "largeImagePath", + "indexPairForIndex:", + "_XMLStringWithCharactersOnly", + "updateSelection:", + "_updateMenuMatrix", + "print", + NULL, + "originalAspectRatio", + NULL, + "_shouldContinueExpandAtLevel:beganAtLevel:", + "initPropPatchWithSession:URI:updatingProps:token:inNameSpace:", + "_toggleUserVisibilityPriority:", + "isBinded", + NULL, + "_preflightSpellChecker:", + "_runInitBook:", + "_updateMetadata", + NULL, + "_updateIdentityPreference:domain:", + "searchIndexForRecordsMatching:", + "_copyDescription", + "metadataForPersistentStore:", + "_web_changeFinderAttributes:forFileAtPath:", + "accessibilityRTFForCharacterRange:", + "consumerSubpatches", + "_invokeSelector:withArguments:onKeyPath:ofObject:mode:raisesForNotApplicableKeys:", + "versionInfoDictionary", + "showsResizeIndicator", + NULL, + "autoScaleFactor", + "_mutableParagraphStyle", + "setLocalizesFormat:", + "addAppearanceForKey:toDictionaryRef:", + "newDeleteStatementWithCorrelation:", + "hasHorizontalScroller", + "_generateDocument", + "lineToPoint:", + "setEnableCustomAttributeFixing:", + "fileSize", + "movie:postNetworkDiagnosticUI:", + "recentsAutosaveName", + "bgColor", + "_nicestRederingCellIndexAtIndex:", + "showHelp:", + "tokenFieldCell:completionsForSubstring:indexOfToken:", + "addTool:frame:action:", + "fadeControlsPanel:", + "signal", + "_mutableArrayValueForKeyPath:ofObjectAtIndex:", + "pauseRenderingPatch:", + "_fillerRectHeight", + "_adjustFocusRingSize:", + "_operationFailed:", + "_mutateTabStops", + "captureOutput:didOutputAudioSampleBuffer:fromConnection:", + "setDashFromArray:", + "_setupMasterSynchronizers", + "launchFXPicker", + "_doUserPathWithOp:inContext:", + "postNicestRendering", + "newStreamWithRequestMessage:", + "initWithOriginalObject:modes:wait:", + "didEndShouldCloseSheet:returnCode:contextInfo:", + "_initWithAttributesNoCopy:flattenedPageFormatData:printSettingsData:", + "_coreCreationForKeys:count:", + "previewType", + "decodeSMPTETimeForKey:", + "_setResizeWeighting:", + "initWithProvider:options:", + "patchSetsTransform", + "drawResizeIndicator:", + "isSpecialGroupSelected", + "releaseNode:", + NULL, + "valueTransformerName", + "predicateWithFormat:argumentArray:", + "_setRotation:forGlyphAtIndex:", + "remoteSubscription", + "_GetInternalCFHTTPCookie", + "paletteLabel", + "_forgetWord:inDictionary:", + NULL, + "_fetchPreviewTypeForDocumentPreview:", + "entryNames", + NULL, + "_shouldTransformMatrix", + "_findLastViewInKeyViewLoop", + "_cancelFileControlCallbackTimeoutTimer", + "_getFullyFormedCellAtColumn:row:", + "_jobSavePathInPrintSession:printSettings:", + "allowsTypeSelect", + "_cancelMovementTrackingTimer", + NULL, + "_CGSadjustWindows", + "setAgeProfileView:", + "setNilSymbol:", + "cameraButton:", + "inputRampParams", + "minTimeForControlType:keyFrame:", + "initWithPerson:imageData:addressBook:", + "textColorForButtonState:", + "tag", + "wasPaused", + NULL, + "apertureMode", + "objectAt:", + "_termedDescriptionWithTabCount:propertyKindName:", + "_scriptingIndexesOfObjectsForSpecifier:", + "initializeFromDefaults", + "theaterDataSource", + "tableView:setObjectValue:forTableColumn:row:", + "niceMipmapItemForSize:forGLRendering:cacheIt:", + "_clockAndCalendarRetreatMonthButtonCell", + "_defaultTableHeaderSortImage", + "bundle", + "didPresentErrorWithRecovery:contextInfo:", + "initWithURL:method:", + "_updateVolumeFromPropertyListener", + "abArguments", + "setAuthorizationRights:", + "_decrementLocalProxyCount", + "orderedWindows", + "_updateEnabled", + "applicationDidBecomeActive:", + "_setRelativeOrdering:", + "shouldBreakLineByWordBeforeCharacterAtIndex:", + "startRendering", + "_createEditButtonIfRequired", + "setSliderType:", + "openGLInternalFormat", + "_changeFileListMode:", + "_trackingSegment", + "numberWithInteger:", + "animation", + NULL, + "_lockTokenForURI:", + "saveDocumentWithDelegate:didSaveSelector:contextInfo:", + NULL, + "selectedMember", + "setImagingModeForcedToSharedBuffer:", + "doClose:", + "positiveSuffix", + "menuTitlePath", + "currentSearchRow", + NULL, + NULL, + "zoomMinCallback:", + "accessibilityTitleAttribute", + "createToManyJoinIntermediateForProperty:lastStep:inScope:context:", + "backgroundWindowLevel", + NULL, + "browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn:", + NULL, + "_resizeTable:level:range:row:heightDelta:", + "_setNeedsDisplayForSelectedCells", + "upgradeForCropSize:", + "birthdayYearless", + "outlineView:nextTypeSelectMatchFromItem:toItem:forString:", + "updateEditButton", + "_retain_1", + "attributesWithStat:", + "_scriptingAnyDescriptor", + "CGBitsPerPixel", + "_memoryCacheTruncate:", + "_setDoNotShowBaselineSeparator:", + "_doAction:", + NULL, + "_userSelectRowIndexes:withNewSelectedRow:", + "setSelectionRect:", + NULL, + "deleteObject:", + "replaceTextStorage:", + "_setNeedsViewerLayout:", + "drawPieInteriorWithFrame:inView:", + "nts_SubscriptionListChanged", + NULL, + "addAnnotationFormField:", + "_ensureDatabaseOpen", + "buildRequest", + "copyPublicRecordForClass:withDatabaseImpl:inAddressBook:", + "updateScale:", + "displayedCard", + "setFileModificationDate:", + "createICUSubstringContext", + "getComputedStyle:pseudoElement:", + "currentEvent", + NULL, + "reloadSettings", + "shouldDrawColor", + "resumeAnimation:", + "_controlMenuKnownAbsent:", + "_minVisibleHeight", + "nicestRenderingLoop", + "containerNode", + "_computeMenuForClippedItems", + "outputAudioSampleBuffer:fromConnection:", + "isDeadKey", + "_customizationOfError:withDescription:", + "initWithData:usedEncoding:", + "imageWidth", + "subNodesAtIndexes:", + "labelFontSize", + "IK_TIFFRepresentationWithCompressionFactor:", + "refreshDetailContent", + "_recursiveSetDefaultKeyViewLoop", + "retainedRelationshipDataWithSourceID:forRelationship:withContext:", + "_delegateTypeSelectStringForTableColumn:row:", + "readMetadataFromFile:error:", + "connectionDidFinishLoading:", + NULL, + "_invitation", + "nextFrameDelayAtIndex:", + "setObjectStoreIdentifier:", + "usesFontPanel", + "transformForOrientationAndDPIWithTranslation", + "sendRenderState:didChangeMessage:withAttributes:", + "_loadNibDataFromPath:", + NULL, + "identifierAtIndex:", + "addRow", + "createCTTypesetter", + "formatDescription", + "reopenDocumentForURL:withContentsOfURL:error:", + "parseGeneralNames:indent:", + "currentHandler", + "spinRange", + "fidelityMask", + "restoreDefaultSearchOptions", + "_removeEntityNamed:", + "crop:", + "toolbarLabelFontOfSize:", + "zoomSliderAction:", + "_refreshInputSourceAttributes", + "_resignKeyFocus", + "SCTPerformDelayedSelector:withObject:", + "drawShadowedRect:blur:", + "setMaxIndexValue:", + "hasThumbnail", + "_allocDefaultView", + "setSubentities:", + "previewView:openExternalURL:", + "_observeFileAttributesOfChild:", + "pixelAlpha", + NULL, + "releaseConnectionWithSynchronizePeerBinders:", + "lightMetalBackgroundUsingTexture:", + "setDBSnapshot:", + "keyEquivalentRectForBounds:", + "gregorianStartDate", + "performSelectorDelayed:withObject:", + "_allowsOrdering", + "gridVisibleRect", + "index", + "initWithTitle:inputController:", + "_startLiveResizeForAllDrawers", + "setSelectedMember:", + "setActsLikeButton:", + "parseExtensionCommon:expect:", + "_setRotatedOrScaledFromBase:", + NULL, + "drawBezelGroupOverlay:", + "doesNotRecognizeSelector:", + "setInputBottomLineParams:", + NULL, + "stringFromDate:", + "_setNeedsDisplayForDropIndex:", + NULL, + "_attachedSupermenuView", + "connectionWithReceivePort:sendPort:", + "setStalenessInterval:", + "fontName", + "releaseLock:", + "createCGImage:", + "_propertyNamed:", + "endSecureMode", + "_checkPreAuth", + "accessibilitySetEnhancedUserInterfaceAttribute:", + NULL, + NULL, + "__move:context:", + "collection", + "_newRepresentation:", + "positionValueForAccessibleChildAtIndex:", + NULL, + NULL, + NULL, + "_hasSeenRightToLeft", + "getScale", + NULL, + "_validateCarbonNameAndCatalogInfo", + "minimizeSize:", + "currentGRLResolvedReconfiguredWindow:", + "includePhotosInVCards", + "addFontDescriptors:toCollection:", + "performSelector:onThread:withObject:waitUntilDone:", + NULL, + "setInputColor1:", + "texture", + "selectItem:atIndex:", + "URLProtocolDidFinishLoading:", + NULL, + "unionWith:", + "systemFontOfSize:", + "_justOrderOut", + "visibleLineCount", + "stringByAddingPercentEscapes", + "_createOutputConnectionsForInputConnection:", + "object:didRemoveObservance:", + "viewWillStartLiveResize", + "isAbstract", + "_windowMovedToPoint:", + "parseKey:", + "setValue:", + "_animateAtEndOfEvent", + "initWithElement:fauxParent:", + "maxPossiblePositionOfDividerAtIndex:", + "setProperty:withValue:", + "flattenIntoPath:", + "boundsForConnection:fromPoint:toPoint:", + "IKIPDrawNicelyScaledInRect:inView:operation:fraction:", + "containsObject:", + "_convertToNSRect:", + "_writeCacheFile:", + "browser:acceptDrop:atRow:column:dropOperation:", + "accessibilityAttachmentAtIndex:", + "stringWithContentsOfFile:", + "_isMoving", + "_setAnyUsage:", + "languageLevel", + "_setArrayContentInBackground:", + "_attributes:atPath:", + "changeWindowsItem:title:filename:", + "rewireDistributionListConfig:withPropertyValue:identifier:", + "rangeOfCharacterFromSet:options:", + "_installCarbonWindowEventHandlers", + NULL, + "addEntry:forKey:", + "shouldIgnorePanelFrameChanges", + "predicateOperatorType", + "reloadAllCellsData", + "defaultButtonTitle", + "writePostScriptWithLanguageEncodingConversion:", + "refreshUI", + "initWithPrincipal:", + "initWithCGColor:", + "initWithRow:tableColumn:", + "newestToggleFileWritingOperation", + "endPrimaryKeyGeneration", + "positiveInfinitySymbol", + "setWarningValue:", + "_scrollDown:", + "_isItemViewerMoveable:", + "_orderOutAllToolTipsImmediately:", + "_noteItemUserVisibilityPriorityChanged:", + "_queueForDealloc:", + "searchGroups", + "selectsAllWhenSettingContent", + "trackMouseForPopupMenuFormRepresentation:", + "updateSelectionFrame:", + "fixInvalidatedFocusForFocusView", + "_configureAndDrawImageWithRect:cellFrame:", + NULL, + "addKeyFrameAtTime:value:toTimeLine:preserveCurve:", + "_cancelDelayedKeyboardNavigationTabSwitch", + "convolveROI:forRect:", + "_stopAndTearDownGraph", + NULL, + "_previousNonHiddenColumnStartingAtColumn:", + "_recursiveDisplayViewsIntoLayersIfNeeded", + "createDirectoryAtAURL:andReturnResultCode:", + "_initWithNSImageSource:options:", + "rotateByAngle:", + "_newStringForIndexing", + "setPasswordFields:verify:original:", + "setPredicate:", + "dividerColor", + "conjoinedElementForProperty:keys:value:withComparison:", + "setNegativePrefix:", + "initWithContainerClassID:key:baseGetter:mutatingMethods:proxyClass:", + "sharedFontManager", + "suffixFieldPresent", + "windowRef", + "defaultKeyMarker", + NULL, + "setMovieVisualContext:", + "importCellsProgress", + "createTextureBufferFromPixelBuffer:target:bounds:options:", + "gotoNextPage", + "goBack:", + "setDoubleClickOpensEditPanel:", + "_updateFromPath:checkOnly:exists:", + "invalidateShape:", + "_mouseInGroup:", + "_newButtonOfClass:withNormalIconNamed:alternateIconNamed:action:", + "setHorizontalPagination:", + "alternateArrangeInFront:", + "isBordered", + "_lockfeContext", + "newWithCoder:zone:", + "_newItemFromItemIdentifier:requireImmediateLoad:willBeInsertedIntoToolbar:", + "_workerThread", + "_setUp", + NULL, + "showPreviewIcon", + "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", + "physicalMemory", + "_infoForOSAError:", + "maxIndex", + "_timebarRect", + "getPropertyValue:", + NULL, + "initWithContentsOfMappedFile:", + "_scriptingIndicesOfObjectsAfterValidatingSpecifier:", + "uploadTextureWithBaseAddress:releaseCallback:releaseInfo:bytesPerRow:", + "initWithFocusedViewRect:", + "gotoSheetDidEnd:returnCode:contextInfo:", + "setSelectedRange:", + "specifierTraverseLink:", + "_newWildSubStringForGlob:wildStart:wildEnd:", + "_setupGridWithCompositions:", + "initForBasicPropertiesWithFile:", + "isCompiled", + "allowsFloats", + "_loadFromUDIfNecessary", + "_displayedPreviewType", + "colorWithDeviceWhite:alpha:", + "initWithInternalFilter:", + "setIsEnabled:", + "resetState", + "setInputRampParams:", + "startingIconSize", + NULL, + "kuwaharaNagaoROI:destRect:userInfo:", + "displayModeChanged:", + "drawArrow:highlight:", + NULL, + "updateSubmenu:", + NULL, + "firstLineHeadIndent", + "temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:", + "multiplier", + "icon", + "hotspotAtIndex:", + "sendDidStopBuffering:originalLength:", + "_setUpFoundationTranslations", + "_performPreHandler", + NULL, + "_fetchExpandedFrameSize", + "setDisplayedProperty:", + NULL, + "unfocusView:", + "setCertificates:", + "zeroOrMoreDescriptionsForSubelementName:", + "decodePointForKey:", + "_beginLoadingImageForPerson:forClient:orCallback:withRefcon:", + "_calendarContentAttributedStringWithSelectedDays:", + NULL, + "_generateSQLForFunctionExpression:allowToMany:inContext:", + "_setZoomValueWithDisplay:", + "_setBaseClass:", + "_addColumnToFetch:", + "numberOfPlanes", + "displayFlags", + "_createTruncationToken", + "_GFLogMessage:", + "cleanUp", + "_unlockFocusNoRecursion", + "isNSValue__", + "_startAnimationWithThread:", + "setPreprocessorColor:", + "cardTypeNameString", + "setTitle:ofColumn:", + "_didChangeValue:forRelationship:named:withInverse:", + "_validateItem:value:inRow:", + "selectedTextAttributes", + "setInputExtent:", + "_setModeInformation", + "windowDidBecomeMain:", + "_isButtonBordered", + "setMinimumLineHeight:", + "isTestingInterface", + "addImagesWithPath:recursive:toArray:", + "wrappedOrigin", + "removeRecent:", + "_focusDidChange:", + "_startRunWithDuration:firingInterval:", + "accessibilityIsEnabledAttributeSettable", + "_accessibilityToolbarItemViewerConfiguration", + "accessibilityArrayAttributeCount:", + "formattedValueInObject:errorEncountered:error:", + "sharedPreferences", + "setCropSize:", + "valueWithPoint:", + "compatibilityVersion", + "_fixedFailureReasonFromError:", + "_compareMultiNoLabelDictionaryKeyWithRecordValue:", + "sweepThumbnailQueue", + "setSpacing:", + "_clientPort", + "flushCache", + "addSource:", + "setTransformedRange:", + "valueWithBytes:objCType:", + "locationOfPrintRect:", + "classForEntity:", + "extractSearchAttributeAndValueFromChild:", + "_isLastNameFirst", + "flushKeyBindings", + "countForIndexPath:", + "_isStringDrawingTextStorage", + "_setValue:forBinding:errorFallbackMessage:", + "_adaptSlideshowTimerFireDate", + "destination", + "threadDied:", + "textView:doubleClickedOnCell:inRect:", + "_resize:", + "_prepareString:expressionPath:sensitiveOptions:wildStart:wildEnd:allowToMany:", + "_autoscrollScreenEdgeFactorFromPoint:", + "deletePropertyValues:withKey:andSaveDistributionListConfigs:inRecord:withContext:", + "accessibilityIsOverflowButtonAttributeSettable", + "_setBindingCreationDelegate:", + "pressedImageForControlTint:", + "wantsToTrackMouseForEvent:inRect:ofView:atCharacterIndex:", + NULL, + "validMipmapItems", + "initWithDir:cString:", + "imageWithContentsOfURL:", + "removeCursorRect:cursor:", + "editableStateAtIndexPath:", + "_handleAEOpen:", + "_indexForMoveDown", + "iconView:acceptDrop:atIndex:", + "_stepInUpDirection:", + "_dispatch", + NULL, + "wrapMode", + "_updateLabel", + "convertTime:fromLayer:", + "_shouldParticipateInBatchOrdering:", + "_genericDragCursor", + "XMLDataWithOptions:", + "__setValue:forPortKey:", + "_lineFragmentRectForProposedRectArgs", + "_fireWithSelection:", + "_incrementUndoTransactionID", + "_usableFrameForScreen:", + "leftTabMarkerWithRulerView:location:", + "_setWantsMouseMoveEventsInBackground:", + "recursivelyPerformNextActions:index:count:", + "setCurrentBrowserType:", + "initWithTableView:clipRect:", + "thisIsMe:", + "accessibilitySplittersAttribute", + "hasShadow", + "_imageSizeWithSize:", + "selectInputMode:", + "_addCornerDirtyRectForRect:list:count:", + "findAttributeNamed:value:", + "selectedDirectoryResults", + "standardWindowButton:forStyleMask:", + "_changeLanguage:", + "tabletProximity:", + "__setNodeSelection:adjacentToNode:inputNodes:selectedList:", + "blendedColorWithFraction:ofColor:", + "_scrollPageInDirection:", + "imageRepWithContentsOfURL:", + "clickedCert:", + "_menuWillSendAction:", + "removePasswordUI:", + "mapTableWithStrongToWeakObjects", + "_deltaForResizingImageRepView:", + "hasOpenTransaction", + "initWithGRLs:withTrigger:withIndex:withWindow:withWindowGRL:", + "replacementObjectForKeyedArchiver:", + "initWithFrame:editorView:", + "_sqlTypeForAttributeDescription:", + NULL, + "abortSchedule", + "_scaleEffectForItemFrame:transitionWindow:", + "setAutosavesConfiguration:", + "_drawLineForGlyphRange:type:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:", + "maxThumbnailViewFrameSize", + "_DOMHTMLTableCellElementClass", + "_sendFinishLaunchingNotification", + "_createButtonWithTitle:", + "_compileShader:withSource:onContext:", + "stuckPixelEliminationROI:destRect:", + "retainWireCount", + "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:", + "freeTemporaryCacheProgress", + "_adjustTextColorOfObject:mode:", + "_coreUIDrawOptionsWithFrame:inView:", + "setAvoidableSpecifier:path:", + NULL, + "_scrollColumnToVisible:requireCompletelyVisible:", + NULL, + "isNSSet__", + "acceptValuesOfClass:", + "nonretainedObjectValue", + "_sortLabelsUsing:", + "accessibilityEnhancedUserInterfaceAttribute", + "initWithWindow:windowRegion:", + "perform", + "subentitiesByName", + "_filterStringsForNode:", + "initForIncrementalLoad", + NULL, + "key", + "_setTableNestingLevel:", + "_writeVersionsAndEncodings", + "isSuccessful", + "nextEscapedCharacter", + "_userInfo", + NULL, + NULL, + "setAttribute:value:", + "capsulePathInRect:", + "acceptsStyleChanges", + "willSetLineFragmentRect:forGlyphRange:usedRect:", + "imageState:image:options:", + "clearCachedPropertyValuesWithKey:", + "checkForRemovableMedia", + "initWithLocalFile:", + "collapsed", + "paddingPosition", + "compatibilityIssueCheck", + "getCaretPositions:forGlyph:maximumLength:", + "setUsesThreadedAnimation:", + "screenFontWithRenderingMode:", + "_addTracking", + NULL, + "_totalNominalTabsLengthWithOverlap:", + "_calendarHeaderFont", + "_forceFixAttributes", + "_finishModalOperation", + "cameraIsBusy", + NULL, + "_otherItemClick:", + NULL, + NULL, + "visitPredicateExpression:", + "unixToTypeName:", + "willChangeValuesForArrangedKeys:objectKeys:indexKeys:", + "getCountBadgeForCount:", + "_valueForKeyPath:ofObjectAtIndexPath:", + "_performActionWithCommitEditing:didCommit:contextInfo:", + "gridStyleMask", + "uniqueNodeForIndexes:count:indexPath:", + "transactionAborted:", + "stopSlideshow", + "_alignRect:force:", + "supportedRenderedTexturePixelFormats", + "_selectPart:", + "isLessThanOrEqualTo:", + "boundingRectForGlyphRange:inTextContainer:", + NULL, + "archive:contentsForEntryName:", + "setUserColumnResizingAutoresizesWindow:", + "_endTransitionWithLayer:", + "_dragCanBeginFromVerticalMouseMotion", + "_fullWidth", + "_createPDFImageRep", + "markers", + "gain", + NULL, + "_rowIndexForRowObject:", + "stopSlideshow:", + "_saveToURL:ofType:forSaveOperation:didSaveSelector:scriptCommand:", + "borderColorForEdge:", + "_setEventRef:", + NULL, + "_setFocusRingNeedsDisplay", + "addProperty:", + "subviews", + "arrayWithArray:copyItems:", + "getNumActiveProcessors", + "setBoundsAsQDRect:", + "initWithStore:fromArchivedData:", + "_initForPropFindWithDepth:lookingForProps:", + "receiveMessage:name:attributes:", + "activate", + "initWithURL:byReference:", + "titleBarFontOfSize:", + "characterBoundsAtIndex:", + "_ensureQueue", + "setHorizontalRulerView:", + NULL, + "sessionID", + NULL, + "fontPanelDidChooseFamily:", + "_trackingAreaInfoForTrackingRectTag:", + NULL, + "_initializeDTD:fromTidyNode:", + "setValueListAttributes:", + "addBinding:fromObject:", + "regionOf:destRect:userInfo:", + "operand", + "_createConnectionForOutput:fromInputConnection:error:", + "initWithUnavoidableSpecifier:path:url:isSymbolicLink:", + "IKGetComponentsRed:green:blue:alpha:", + "viewWillMoveToWindow:", + "setRelationshipCaches:", + "playButtonFrame", + "openRootForEditing", + "get:count:algorithm:", + "initWithAttributes:range:", + "attributesForPropertyPortWithKey:", + "currentModeView", + "_validateNewWidthOfColumn:width:", + "drawer:didChangeToState:", + "_trimWithCharacterSet:", + "_predicateOptionPairForBinding:", + "dataReferenceEnumerator", + "_writeRTFDInRanges:toPasteboard:", + "_convertPos:AndLen:", + "urlForModelVersionWithName:", + NULL, + "minFrameWidthWithTitle:styleMask:", + "setRootElement:", + "_isDingbats", + NULL, + "initWithFrame:optionFlags:", + "addTooltips", + "removeValueForProperty:", + "orderFrontTablePanel:", + "setStartAlpha:endAlpha:duration:", + "initWithInputController:", + NULL, + "allUniqueIds", + "internationalCurrencySymbol", + "foreignEntityKey", + "_createOtherValueGetterWithContainerClassID:key:", + NULL, + "_setWithOffset:", + "_fullPanelSetupIfNecessary", + "bestRepresentationForDevice:", + "enterCropMode", + "scheduleTaskPriority", + "configureForSortedByFileProperty:ascending:caseSensitive:", + "_setCenterPoint:", + "_slideShowItemAtIndex:", + "_ensureNoFetchInProgress", + "startTracking:", + "addAttribute:", + "_old_encodeWithCoder_NSTabView:", + NULL, + "bezierPathWithRect:", + "_titlebarHeight:", + NULL, + "_allocatePPDStuffAndParse", + "shouldFetchImageForEmail:withCacheDate:", + "isConfiguration:compatibleWithStoreMetadata:", + NULL, + "_computeToolbarItemKeyboardLoopIfNecessary", + NULL, + "setValueToDefault", + "setProps:forIndex:", + "showPanel", + "typeStringForColumn:", + NULL, + NULL, + "orderFrontLinkPanel:", + "setGlyphRange:characterRange:", + "filterChanged:", + "setBounds:forBox:", + "setActionState:", + "widgetCenterForResolutionData:", + "setCurrentSearchRow:", + "applicationDockMenu:", + "initForMetal:style:topHeight:bottomHeight:", + "accessibilityMinimizeButtonAttribute", + "objectForServicePath:app:doLaunch:limitDate:basePortName:", + NULL, + "addCellWithSettings:data:type:profile:index0:index1:index2:", + "_handleAEPrintDocuments:withSettings:showPrintPanels:", + "zoomToActualSize", + "saveMetadata:", + "guessesForWord:", + "openGLContext", + "_setDisabledTextColor:", + "usesFontLeading", + NULL, + "internalWritePath:errorHandler:remapContents:hardLinkPath:", + "catalogNameComponent", + "_stopTooltips", + "removeHeartBeatView:", + "removeTrackingRect:", + "indexOfAttributeBySelector:equalToObject:", + "setFullscreenController:", + "_nts_CalculatePropertyTypeForRecord:", + NULL, + NULL, + "connectionWithRegisteredName:host:", + "unmounted:", + "_dataSourceValueForColumn:row:", + "_setOverflowHeaderCellPrototype:", + "_preflightCrossCheck", + "getAttributeFirstValue:allowBinary:", + NULL, + "daylightSavingTimeOffsetForDate:", + "availableUserServers", + "_disposeMovieController", + NULL, + "sortDescriptors", + "createSymbolicLinkAtPath:pathContent:", + "_sheetEffectInset", + "_initWithName:URI:prefixIndex:", + "accessibilityIsAttributeSettable:", + "operationGroup", + "fullName", + "sourceTypes", + "cancelDelayedPerformWithTarget:selector:", + "stopPlay", + "correlationAlias", + NULL, + "decodeRetainedObject", + "outlineView:dataCellForTableColumn:byItem:", + "_ensureLayoutCompleteForVisibleRectWithExtension:", + "truncateFromPosition:", + "setAcceptsGlyphInfo:", + "timeOffset", + "applyWithManager:buffer:transformation:bounds:options:", + "setAllowsGroupEditing:", + "_localStoreContainingObjectID:", + "_resizeAllCaches", + "_keyViewFollowingOpacityViews", + "selectionDidChange", + "regionWithRect:", + "setBoolParameterValue:to:", + "pointerFunctionsWithOptions:", + NULL, + "_setKeychainFullPathName:", + "destinationOfSymbolicLinkAtPath:error:", + NULL, + "textureROI:forRect:", + "accessibilityIsSharedTextUIElementsAttributeSettable", + "_releaseAllCapturedScreens:", + "noteFileSystemChanged:", + "setRefusesFirstResponder:", + "leftExpressions", + "_daylightSavingTimeOffsetForAbsoluteTime:", + "_findRecord:ofType:", + "_updateDimensions", + NULL, + "insertTextContainer:atIndex:", + "_storeIdentifier", + "initWithProvider:imageManager:pixelFormat:transformation:bounds:colorSpace:options:", + "setWindow:", + "deletedPeople", + "_handleErrorCallbackWithParams:", + "canGoIntoSelectedDirectory", + "_needToFlushGlyph", + "processText:", + NULL, + "_controllerKeys", + "itemDelta", + "_referenceBindingValueAtIndexPath:", + "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:", + NULL, + "managerForSourceModel:destinationModel:error:", + "_disabledTextColor", + "nts_AddMembersAndSubgroupsFromDictionaryRepresentation:withRecordMapping:recordsByUniqueId:", + "_setToolTip:forView:cell:rect:owner:ownerIsDisplayDelegate:userData:", + "edit:", + "publish", + "removeObject:inRange:", + "_mouseDownOnSlice:withEvent:", + "_insertionPointHelperForGlyphAtIndex:", + "useCoreUI", + "setRect:", + "intype", + "_mouseUp:", + "initWithTextStorage:range:", + "addCommon:docInfo:value:zone:", + "searchRecordClasses", + "_writeCharacterAttributes:", + "_dropHighlightEdgeColor", + "isTakingPicture", + "_drawMenuFrame:", + "_hasMultipleLinesOfText", + "validateObjectValue:", + "createPageArray", + "_reserved_SFChooseIdentityPanel", + "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", + "findString", + "_updateTearOffPositionWithScreenPoint:", + "numberOfItems", + "rowCache", + "_isKVOA", + "willRemoveSubview:", + "menuChanged:", + "_addItem:toTable:", + "_closeForkAsync:", + "_nestingModeShouldHideSubtractButton", + NULL, + "insertAttribute:intoView:anchorPosition:forFilter:settings:configuration:objectController:", + "resignFirstResponder", + "writeToFile:atomically:error:", + "arrayWithResultsOf:", + "totalRequestedMemoryOfType:rendererID:", + "_setAEDesc:", + "handleSwitchToColumnsOnlyFrom:animate:", + NULL, + "setDomain:", + "_conflictsWithRowCacheForObject:andStore:", + "_isSmartGroupParentOfRecord:", + "frontWindow", + "fill", + "foundMatch", + "setURL:", + "finishProvideNewSubviewSetup", + "addFileButton:", + "__oldnf_stringWithSeparator:atFrequency:", + "_detectTrackingMenuChangeWithScreenPoint:", + "isRoomWellLit", + "_handleOptimisticLockingError:withError:", + "supportsCommand:", + "setMenu:", + "createDirectoryAtAURL:", + "setBorderWidth:", + "insertIdentityGroupsInDisplayedGroups", + "_old_encodeWithCoder_NSBrowser:", + "_postEventNotification:fromCell:", + NULL, + "_containsValue:", + NULL, + "viewDidMoveToSuperview", + "inputNeutralChromaticityY", + "attributesForCharacterIndex:lineHeightRectangle:", + "_windowWillClose:", + "_slideShowItemValidAtIndex:", + "characterCollection", + "setCharacters:", + "windowFrameTextColor", + "documentDidBeginPageFind:", + "_setRowSpan:", + "shouldUseOriginalLayerToDraw", + "_cfNormalize:", + "findRecordNames:ofType:matchType:", + NULL, + NULL, + "setStyle:", + "moveRight:", + "_isSymbol", + "_menuLocationHorizontalOffset", + "_queryOrderLocalizedDictionaries:withParent:", + "_clearMarkedRange", + "segmentCount", + "_windowBorderThickness", + "previewPanel:syncDisplayState:forURL:", + "_effectiveFocusRingType", + "setOriginOffset:", + "flattenMipmapItemIfNeededAndFreeUselessAdditionalCaches:withUID:", + "shadowComponent", + "_runCustomizationPanel", + "_invalidateGlyphsForExtendedCharacterRange:changeInLength:", + "_setClipIndicatorItemsFromItemViewers:", + "cacheData", + "SCTImageNamed:", + "_setupNormalFileListModeControl", + "_setInputRampParams:", + "_parseMain:", + "_setBackgroundColor:", + "_allowedItemIdentifiers", + "interpretKeyEvents:sender:", + "runOperationWithTimeOut:", + "_decodeDownloadData:", + "_parseCharacterAttributes1", + "symbolicLinkDestination", + NULL, + "connection:willStopBufferingData:", + NULL, + "msgid", + "destroyVisualContext", + "percentSymbol", + "_rawAddColor:key:", + "insertPageBreak:", + "help:", + "editorWithObject:", + "capacity", + "drawDebugGrid", + "dispatchNameSelection:", + "updateCell:", + "_mutableSetValueForKeyPath:ofObjectAtIndex:", + "setImages:", + "goForwardInHistoryIfPossible", + "clearClipping", + NULL, + "initWithCGLContext:pixelFormat:colorSpace:patch:", + "_insertText:forInputManager:", + "_sceneChangeType", + "_freeCache:", + "orderString:string:flags:", + "noteDirectoriesListChanged", + "_clockAndCalendarRetreatMonth:", + "insertPointer:atIndex:", + "_isNonactivatingPanel", + "_unitsForRulerLocation:", + "_loadData", + "dontExportCurrentItemToiPhoto", + "appendData:", + "selectRow:inColumn:", + "linkItemAtPath:toPath:error:", + "containsDayGranularityDate:forDatePickerCell:", + "searchSliceType", + NULL, + "drawTab:title:enabled:", + "_colorWithHue:", + "stopUsingDevice", + "runInitialization", + "objectByTranslatingDescriptor:toType:inSuite:", + "_pageFormatForSetting", + "downloadProgress", + "_rowHeightStorageBeginLayoutChange", + "_updateAttributesFromAudioChannelVolumesFromPropertyListener", + "setCertificationPathDisclosed:", + "backgroundWindow", + "moveWordLeft:", + "insertionPointColor", + "absoluteURL", + "_zoomWithSpeedFactorForX:speedFactorForY:", + "_invalidateImageTypeCaches", + "trackMagnifierForPanel:", + "persistentStores", + "setAppearance:", + "encodeLong:forKey:", + "accessibilityHeaderAttribute", + "dataCellForRow:", + "_setOriginalString:range:", + "_internalInit", + NULL, + "currentFilterURL", + "mainRunLoop", + "typeForParameter:", + "_createCells", + "_startInsertionOptimization", + "setRetainedObject:", + "textUnfilteredTypes", + "removeServer:", + "setWrapped:", + "searchField", + "_setUndoRedoInProgress:", + "check:", + "IK_GIFRepresentation", + "transformedImage:", + NULL, + "viewsNeedDisplay", + "accessibilityWindowPointForShowMenu", + "initWithPerson:", + "_entityMapping", + "absolutePathForAppBundleWithIdentifier:", + "_cachedDocumentPreviewForURL:", + "serializeAlignedBytes:length:", + "setDragWindowImage:", + "setStringValue:", + "_showEffects", + "dateWithNaturalLanguageString:date:locale:", + "_computeDisplayedSizeOfString:", + "setMinimalSizeForText:", + "menuZone", + "_updateLengthAndSelectedRange:", + "_thumbnailDone:", + NULL, + "startFadeout:", + "elementAtIndex:associatedPoints:", + "_isPresent", + "vmUsagePolicy", + "mipmapItem", + "_sizeModeIsValidForCurrentDisplayMode:", + "inputKeyBindingManager", + "_desiredKeyEquivalent", + "updateCountLabel", + "defaultFontSize", + "visitPredicate:", + "addJoinForToOneRelationship:sourcePath:destinationPath:", + "_attributesFromRangeViaGetSelectedText:", + "imageRepWithCGImage:", + "_allowAnimated_replaceSubview:with:", + NULL, + NULL, + "setPrimitiveAppleUseCoreUI:", + "_canImportGraphics", + "subdataWithRange:", + "_preventsActivation", + "addPreferenceNamed:owner:", + "_addTimer:", + "openTooltipOnWindow:withText:atLocation:alignment:", + "mapTableWithStrongToStrongObjects", + "removeConnection:", + "accessibilityIsChildOfApp", + "setAsynchronous:", + "_pmKeyForKey:", + "fontDescriptorWithName:size:", + "_drawTitleStringIn:withColor:", + "_setProxyPort:", + "displayNameForType:", + "_validateDeclarationString:forKey:", + "active", + "buttonResult:buttonImage:inlayImage:highlightImage:figure:stripeGradient:phase:", + "_setTrackingRects", + "filenameToDrag:", + "display", + "initWithFigFormatDescription:", + "_dragImageForIndices:", + "setIsMe:", + "_updateDataCellControlView", + "registerPort:name:", + "iconType", + "distributionIdentifierForProperty:person:", + "drawRect:withLineWidth:", + NULL, + "_maxYWindowBorderHeight", + "guessDockTitle:", + "netServiceBrowser:didFindDomain:moreComing:", + "_modelPathsFromBundles:", + NULL, + "diacriticInsensitiveOption", + "performActivity:modes:", + "copyPreviewIcon", + "__undoableMove:context:", + "hideShowLastImport:", + "setCurrentVoiceIdentifier:", + "_colorWithGradientImage:", + "concat:", + "inputDevices", + "_setKeyboardFocusRingNeedsDisplayForCellInRect:", + NULL, + NULL, + "_predicateForYearlessSearchOnDatePropertyKeyPath:toManyRelationshipName:futureOnly:allNotMatch:customPropertyPath:customProperty:searchValue:label:", + "_getSymbolForType:", + "propertyTableCount", + "_bottomRightResizeCursor", + "finishEncoding", + "appendLabel:toVCardRep:inGroup:", + "usingActiveDirectory", + "thumbnailInfoFromMipmapItem:fromMipmap:", + "encodeQTTimeRange:forKey:", + "_handleMouseEvent:numberOfObjects:startingPoint:commandKey:shiftKey:rubberband:", + "_setDrawDelegate:", + "setSingleFieldVideo:", + "getCompression:factor:", + "renameCollection:newName:", + "allowsSubrowSelection", + "setVisualMovieBoxBackgroundColor:", + "_datePreferencesChanged:", + "_makeWindowsPerform:forEvent:inWindow:standardWindowButton:", + "bounds", + "attributedSubstringForProposedRange:actualRange:", + "accessibilityClearButtonAttribute", + "_shouldFilterEntry:", + "_noteAttributes", + NULL, + "set_splitView:", + "_userSelectionIndexesForProposedSelection:", + "_lastDraggedOrUpEventFollowing:canceled:", + "_orderFrontRelativeToWindow:", + "handleAnimateScrollFromPt:toPt:", + "commitAllAdditionsToIPhoto", + "drawTitle:", + "hasVerticalRuler", + "revealText", + "isLenient", + "_disposeBackingStore", + NULL, + "_prepareNicestDraw:", + "renderAtTime:arguments:", + NULL, + "doubleClickOpensEditPanel", + "_inHideFaceMode", + "cancelScheduleSyncPageIndex", + "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:", + "protocols", + "prepareBeginsWith:", + "_web_initWithDomain:code:failingURL:", + "location", + "_initializeReader", + "dataSourcePath", + NULL, + NULL, + "normalURLString", + "mutableSetValueForBinding:resolveMarkersToPlaceholders:", + "selectionStart", + "loadColumnZero", + "updateSelectionListWithNewSelectionIndexes:withModifier:", + "freeUselessAdditionalCaches:", + "_menuForNode:", + "_clearCGImageRefIfNotPrimary", + "_canOptimizeDrawing", + "cellForRow:column:tableView:", + "analysisDidFinish:", + "stringArrayForKey:", + "setEntities:forConfiguration:", + "stringValueForFieldNamed:", + "outputConnectionFormatDescriptionDidChange:", + "_blocksActionWhenModal:", + "initWithFilterInfo:upperItem:", + "nts_initWithUniqueId:addressBook:", + "cellSize", + "_newImageName:", + "autoforwardsScrollWheelEvents", + "EPSOperationWithView:insideRect:toData:", + "negativeInfinitySymbol", + "measurementUnits", + "_newObjectForContainer:inValueForKey:withClassDescription:", + "_setDescriptorNoCopy:", + "setColumnTitle:forProperty:", + "whatIsKeyType:", + "initWithCGLContext:pixelFormat:options:", + "setIntParameterValue:to:inResolutionData:", + "trackCount", + "expandItem:", + "_compareMultiLabelArrayWithRecordValue:", + "moviePort", + "signInvitationFile:outPath:", + "setCurrentWindow:", + "_setValidatedPosixName:", + "SCTPerformSelector:withObjectsFromArray:", + NULL, + "_handleSyncCallbackWithMessage:", + "_truncatesLastLine", + "actualRowIndexWithGroupIndex:", + "_registerCoreDataStoreClass:forStoreType:", + NULL, + "_initSessionDataWithHost:port:scheme:", + "didCreateSchema", + "initWithName:password:owner:applicationID:", + "proxyForRulebookServer", + "_createShaders:", + "_debugLoggingLevel", + "_didUnmountDeviceAtPath:", + "disposeData", + "_appIcon", + "initIOKitNotifications", + "loadPopup:names:skip:current:", + "_randomIndexForCount:", + "initWithFrame:useToolbar:", + "splitView:didMoveDivider:distance:", + "controlLightHighlightColor", + "setFirstNameNormalized:", + "_locationsForApplications", + "setAutoupdate:", + "hideToolTipWindow", + "rightMouseUpDelegate:", + "_windowsForMenu:", + "_inResize:", + NULL, + "primaryKey", + "shouldCascadeWindows", + "insertObject:atIndex:", + "initMakePathWithSession:path:", + "setComposer:", + "sourceSize", + "initWithDescriptorType:bytes:length:", + NULL, + NULL, + "_finishPendingEdit", + "labelOnlyMenuDidSendActionNotification:", + "typeForKey:", + "restoreResolutionData:from:", + "_setKeySize:", + "initWithX:Y:Z:", + NULL, + "_setOwnedByPopUp:", + "_itemAtIndex:", + "subexpression", + NULL, + "_initWithOptionFlags:maxSize:maxAge:resources:maxResources:parent:root:function:userInfo:userInfoReleaseCallback:md5List:md5Indices:md5Count:", + "_setWantsToolbarContextMenu:", + "setUndoAttributes:", + "_cancelWithError:", + "shouldPreserveDisplayStateWhenNavigating", + "_renameFontDescriptorWithName:to:in:", + "_handleValidationError:description:inEditor:errorUserInterfaceHandled:bindingAdaptor:", + "clearMarkedRange", + "isShowAllItem", + "_setSearchResultsCountTo:", + "initWithBytes:length:copy:freeWhenDone:bytesAreVM:", + "alloc", + "mappingType", + "getValue:", + "_clear", + "isSuspended", + "setLoadItemIndex:", + "_sound", + "_handleArrowMovementForChar:", + NULL, + "preferredMuted", + "findVoiceByIdentifier:returningCreator:returningID:", + "documentDidFindMatch:", + NULL, + "previewDocumentFrame", + "serializedValueForStateKey:", + "recordDatabaseOperation:", + "threadedFindGRLsContainingString:limitResultsTo:", + "_initWithType:error:", + "print:", + "addTrack:copyMedia:error:", + "_setStandardLocalizer:", + "enqueueNotification:postingStyle:", + "dragRectForFrameRect:", + "_initUI", + "reverseTransformedValue:", + NULL, + "year", + "_applicableArrowLocation", + "sliderCallback:", + "nts_ClearCachedRecordsByUniqueId", + "setDefaultTextColor:", + "setRequestBodyWithData:", + "isPrimary", + "newWithOutputIntents:quartzFilter:", + "_restoreOrBecomeFirstResponder", + "runModalForSettings:keychain:", + "hostingWindow", + "_fontFromBindingsWithMode:referenceFont:fallbackFont:", + "isProtected", + NULL, + "datePickerElements", + "sendCBEvent:withData:", + "_initWithThemeType:", + "setContainerIsObjectBeingTested:", + "branchImage", + "parseABShowAs", + "_handleAEReopen", + "_000101:", + "setAvoidCrossing:", + "setLinkInWindow:string:delegate:", + "_prepPanel:message:showGroup:", + "enumeratorOfAppleUseCoreUI", + "mipmapImage", + "_getVRefNumForPath:", + "selectionRectAdded:", + "_prefix", + "ourViewWasDisclosed:", + "openCategoryFileForEditing:", + "setScriptCommand:", + "initWithInstrument:pitch:velocity:", + "_initSidebarAndPopups", + "lockDelegate", + "allowsDirectoriesSearches", + "_scriptFlagsForKey:containFlag:", + NULL, + NULL, + "URIRepresentation", + NULL, + NULL, + "printPanel", + "unarchiverDidFinish:", + "windowDidChangeKeyState:", + "setSource:ofType:", + NULL, + "directTakePicture", + NULL, + NULL, + "_redisplayColorProfileButtonIfNeeded", + "setStateToSelected", + "initWithCGRect:", + "releaseView:", + "editingColorAdjustableObject:", + "convertPoint:toView:", + "setFont:range:", + "_checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:", + "setImageRep:forItemIdentifiers:", + "invalidateResourceCache", + NULL, + "scriptErrorString", + "displayNameForIndex:", + "suiteName", + "initWithAppleEventCode:presentableDescription:name:", + "objectZone", + "_setZoomFactor:centerPoint:", + NULL, + "showAll:", + "setBoundsRect:forTextBlock:glyphRange:", + "directoriesSelectionChanged:", + "cglContext", + "_getFocusRingFrame", + "delegateBased", + "findSubscriptionWithRemoteLocation:addressBook:", + "_createValuePrimitiveGetterWithContainerClassID:key:", + "FilterHelpButton", + "deselectSelectedCell", + "_canFocusCellAtRow:column:", + "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:", + "searchSubscribed", + "setSearchField:", + "_handleMessage:from:socket:", + "_keyFromName:", + "_ikThumbnailImage", + "removeControl:", + "attributesForKeyPath:", + "setValue:forKey:forCell:", + "_setSidebarWidth:maintainSnap:constrain:", + "_crayonRowAboveRow:", + "_getRenderedBufferWithContext:", + "initWithCIImage:", + "pathForNode:", + "originalItem", + "changeCount", + "_subentityNamed:", + "_createOutlineDelegate", + "clearCachedPropertyValue:withKey:", + "_convertPointToSuperview:", + "pixelFormatM_I16", + "_isGeneratedClass_1", + NULL, + "middleName", + "_readRTFDIntoRanges:fromPasteboard:", + "tagList", + "transform:", + NULL, + "_createGroup:", + "printRect:", + NULL, + "imageRepresentationForPage:scaleFactor:", + "_newObjectGraphStyleForSQLRow:withObject:", + "selectedValues", + "rendererVendor", + "accessibilityIsFocusedUIElementAttributeSettable", + "_setVerticallyCentered:", + NULL, + "defaultTokenizingCharacterSet", + "isInMotion", + "keyWithAppleEventCode:", + "parser:didStartElement:namespaceURI:qualifiedName:attributes:", + "setLevel:", + "hasFocus", + "reset", + "_superviewClipViewFrameChanged:", + "initWithActionDictionary:forDocument:", + "removeObject:", + "nodeWithFBENode:", + "_scriptingDateWithDescriptor:", + "_removePreviousPointersToMe", + "filterWithGenerator:", + "setupResources", + "setIndentation:", + "tabViewItemAtIndex:", + "_stepperCellTopAndBottomTrim", + "setImageProperties:imageUTType:", + "_discardEventsWithMask:eventTime:", + "qt_localizedErrorWithDomain:code:userInfo:", + "supportsMode:", + "compatibilityIssueChanged", + NULL, + "_changeWasDone:", + "initWithRTFD:", + "setConditionallySetsEnabled:", + "_newItemFromInitPListWithItemIdentifier:", + "setNotANumberSymbol:", + "parseDistributionPoint:", + "boundingRectWithExtraEffects:", + "setPrimitiveModificationDateYearless:", + "removeFromCache:resolution:", + "_cleanUpAfterTransaction", + "isNativeType:", + "_prepareContentWithNewObject:", + "_setCachedMembers:", + "filesystemItemRemoveOperationWithPath:", + "scrollHorizontalBy:", + "removeKeyFrame:", + "nextItemDelta", + "indexOfTabViewItem:", + "_selectCell:inColumn:", + "correlation", + "_removeObject:objectIDMap:", + "toggleAutomaticLinkDetection:", + "addObserver:selector:name:object:", + "sourceDictionary", + "statusBar", + "setToolTip:", + "grls", + "_configureForShowingInPanel", + "_poppedTopHandling", + "_currentAttachmentRect", + "updateThumbnailForLayer:fromThumbnail:", + "doTextEntered:", + "_allowAnimated_setContentFilters:", + NULL, + "_drawScrollViewFocusRing:clipRect:needsFullDisplay:", + "setDrawsTrackAsColorScaleType:", + "currentClipRect", + "forgetRowForObjectID:", + "_nameWithStrictRequiredExtensionCheck:", + "halfSizePicture:pattern:image:", + "_setActsAsPalette:forToolbar:", + "unlockRequestWithSession:URI:lockToken:", + "nts_CreateSharedAddressBook", + "setValues:", + "countdownTabView", + "dsDataBuffer", + "documentAttributes", + "numLines", + "carbonPickerWindow", + "stream:handleEvent:", + "subscription", + "isBindingKeyOptional:", + "shadowOpacity", + "QTTimeValue", + "_stopPeriodicEventsForSource:", + "whiteDeviceColor", + "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:", + "_groupsOnly", + "findRecordTypes", + "columnAtIndex:", + "_updatedPorts:", + "_registerForNotificationsWithCoordinator:", + "_coreUILinearDirection:", + NULL, + "didChangeValue", + "_transformationForString:dictionary:", + "extendSelectionAtEnd:", + "_windowWillGoAway:", + "numberOfMajorTickMarks", + "_table", + "_setMouseMovedEventsEnabled:", + "setMaxCount:", + "selectionBounds", + NULL, + NULL, + "_setBackgroundStyle:", + "_popupImage", + "validateFindPanelAction:forClient:", + NULL, + "getState:", + "authorizationViewReleasedAuthorization:", + "_stopAnimation:", + "initForLayer:imageLayer:flags:", + "deactivate", + "_maxXTitlebarWidgetInset", + "scriptingContains:", + "_partAtLocation:", + "parentNode", + "initWithPredicateOperator:leftExpression:rightExpression:", + "isRemovedOnCompletion", + NULL, + "handleDelegateMovedDiplayedProperty:toIndex:", + "setThreadPriority:", + "removeSuiteNamed:", + "_setInputWhiteParams:", + "nts_UpdateDateRelatedSmartGroups", + "_tableView:willRemoveTableColumn:", + "fileManager:shouldCopyItemAtPath:toPath:", + "_isCtrlAltForHelpDesired", + "setCache:", + "currentButtonClicked:", + NULL, + "_setIsEditable:", + "isDirectory", + "_sendDelegateSelectionIndexesForProposedSelection:", + "_numericIndicatorCell", + "assign:key:", + "_updateSize", + "_suiteDescriptionsByName", + "_prepareConst:inToMany:", + "rawFormat", + "setEmpty", + "importedObjects", + "waitImage:", + "_invokeDidChange:", + "initWithColorProfile:", + NULL, + "accessibilityIsSizeAttributeSettable", + "initWithClass:", + "_deleteMetaDataForPeople:withLock:", + "frameEndTime:", + "vectorWithX:Y:", + "realAddDirNamed:", + "_lookUpIndefiniteRangeInDictionaryFromMenu:", + "colorForIndex:", + "isHorizontallyCentered", + "itemObjectValueAtIndex:", + "jobDisposition", + "pasteRuler:", + "rulerView:shouldAddMarker:", + "backupFileExtension", + "_clearRollOver", + NULL, + "_rowEntryForRow:requiredRowEntryLoadMask:", + "endSetup", + "_collapseAutoExpandedItems:", + "tokenBackgroundColor", + "_workspaceSessionIsActive", + "exactSizeToCellsSize", + "ruleEditor", + "setSidebarIsOpen:", + "_canUserSetVisibilityPriority", + "setAlternateTitleWithMnemonic:", + "_startObservingSelectionIfNecessary", + "_keyValueBindingAccessPoints", + "menuItemCellForItemAtIndex:", + "_sizeWithSize:attributes:", + "setAllowsEditingMultipleValuesSelection:", + "_sizeListChanged:", + "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:", + "copyDictionary", + "lineBreakMode", + "isIndexed", + "_popupSelectionAction:", + "changeAffineTransform:", + "_adjustTrailingNewline", + "_internalNetServiceBrowser", + "updateInvalidatedTextColor:forObject:", + "scheduleInRunLoop:forMode:", + "rollbackTransaction", + "trim:", + "_typesFilterableFromType:", + "exceptionDuringOperation:error:leftOperand:rightOperand:", + "heightAdjustLimit", + "DTD", + "objectIDAtIndex:", + "addAddressMultiValues", + "takeFloatValueFrom:", + "movieUnfilteredFileTypes", + "setInputOrder:forKey:", + "_lastScopeButtonX", + "accessibilityHitTest", + "newCreateIndexStatementForColumn:", + "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:", + "defaultCStringEncoding", + "keyWindowChanged:", + NULL, + "_rowButtonsInterviewHorizontalPadding", + "dictionaryInfo:", + "_prepareEffectsUndo:", + "setDefaultInformation:", + "makeUntitledDocumentOfType:", + "_shouldUseTrackingAreasForToolTips", + "_multipleValueForKeyPath:atIndexPath:", + "setFBENode:", + "populateIdentifiers:values:labels:primaryIdentifier:withDataFromRecord:managedObject:property:", + "_sheetEffect", + "updatePreviewFrame", + "cellsStyleMask", + "_draggableFrame", + "writeDateDocumentAttribute:withRTFKeyword:", + "setObject:forDatabaseKey:", + NULL, + "_lightYellowColor", + "tagName", + "fillsPicker", + "setSidebarOnRight:", + "windowsMenu", + "parser:resolveExternalEntityName:systemID:", + "setToolbar:", + "_setFrameForAnimating:", + "supportsCorrelatedSubqueries", + "askSaveChangesWithFile:message:action:", + "writableTextFileTypesForDocumentTypes", + "tokenizeAppearanceString:", + "selection", + "viewWillDraw", + "mostCenteredImageIndex", + "_removeBinding:byReplacingWithRemainingBindingsInArray:", + "isEqualToNumber:", + NULL, + "_blueHighlightColor", + "quickTimeTrack", + "RTFDFileWrapper", + "beginUpdatePixels:colorSpace:", + "beginUploadTexture:colorSpace:virtualScreen:", + "_openBlocksForParagraphStyle:atIndex:inString:", + "changeCompanyStatus:", + NULL, + "_checkColumnsOnly", + "attributedStringForNotANumber", + "_sendCommitEditingSelectorToTarget:sender:selector:flag:contextInfo:delayed:", + "createMetadata", + "initWithFormat:arguments:", + "initWithRequest:cachedResponse:client:", + "_rowsInRectAssumingRowsCoverVisible:", + "currentMainStructure:", + "transformedValueClass", + "_isAncestorOfViewIdenticalTo:", + "movieEnumerator", + "_toggleOrderedFrontMostWillOrderOut", + "_setDragRef:", + NULL, + "keyForNode:", + "setPropagatesDeletesAtEndOfEvent:", + "addKeyFrameAtTime:value:preserveCurve:", + "iDiskUser", + "setPortKey:", + "_setHidesOnDeactivateInCache:forWindow:", + "_drawSelectionArea:", + "hasCropBox", + "_attachListener", + "_restoreDefaultSettingsCommon", + "allowLoadingOfUnsupportedPreviewTypes", + "reloadItem:", + "initWithSearchResult:", + "ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:", + "propertyDescription", + "controlView", + "boundingRectForGlyph:", + "isWrapped", + "predicateOperator", + "initializeComponents", + "setExtendedAttribute:forKey:atPath:error:", + "_tidyWithData:error:isXML:detectedEncoding:", + "_setLocalizationPolicy:", + "blueRange", + "removeObjectIdenticalTo:", + "cellsOutlineRed:green:blue:", + "_getComputedFloat:forNode:property:", + "_addOneRepFrom:toRep:", + "isGroup:parentOfRecord:", + "_setDisplayName:", + "_endToolbarEditingMode", + "startSequenceGrabber", + "integerForKey:", + "hiddenState", + "ISS__ay_postNotification:inThread:beforeDate:", + "expandedNodes", + "tabStops", + "addEntries:forKey:", + "_updateThumbnails", + "_createBrowserDelegate", + "doURLStuff:createdStubFile:error:options:", + "shouldCreateEmptyDatabase", + "_invalidateDateFormatter", + "handlePortCoder:", + "dispatchDoubleAction:", + "previousSibling", + "columnResizeButtonRect", + "_lineBreakMode", + "decimalNumberByAdding:withBehavior:", + "_adjustCharacterIndicesForRawGlyphRange:byDelta:", + "_promiseTypeNameForIdentifier:", + "_drawerBottomOffset", + "_prepareControllerTree", + "_isReferenceBinding:", + "_setCurrentActivation:", + "_scrollRectToVisible:fromView:", + "setAlternateImage:", + "IMService", + "_addListDefinition:forKey:", + "unableToSetNilForKey:", + NULL, + "changeDisplayedColorName:", + "setURI:", + "initWithData:error:", + "trackMarker:withMouseEvent:", + "rangesForUserParagraphAttributeChange", + "selectionRect", + "identifierForTimeLine:", + "displaysPageBreaks", + "ab_timeIntervalFromTodayYearLess", + "_autoscrollResponseMultiplier", + "_computeOrderedItemViewersOfType:inRange:resizeableOnly:", + "_createAddressFromSockaddrBuffer:", + "_allowsMultipleTextSelectionByMouse", + NULL, + "drawInContext:atPoint:withFontName:size:alignement:", + "_queryChild:ofItem:withRowType:", + "_stashOrigin:", + "_decrementSelectedSubfield", + "lastObject", + "lozengeROI:forRect:userInfo:", + "_drawUnifiedToolbar:", + "commitComposition:", + "sharedKeychainSettingsPanel", + "initWithCoreUIDrawOptions:size:", + "setKeyboardFocusRingNeedsDisplayIfNeededInRect:", + "drawTitle:withFrame:inView:", + "newStatementWithoutEntity", + "_initWithImage:optionsList:", + "cgImageFromSelection:", + "resetLDAPManager", + "_newUnknownItemWithItemIdentifier:", + "_setOptions:forBinding:", + "_indexForIncrementMove:", + "_scriptingEnumeratorOfType:withDescriptor:", + "_mergeChangesStoreUpdatesTrumpForObject:withRecord:", + "ignoresSSLCertificateErrors", + "isViewableByThisApp", + "SCTTitleColumnColor", + "releasePluginView:", + "_updateSubfieldStringsForDateChange", + "initWithAttributeDictionary:", + "getAllFiltersNotInCategories:", + "refreshColorProfile", + "_addTypeSelectAttributesForString:", + "interfaceStyle", + "caseInsensitiveCompare:", + NULL, + "entitiesByName", + "_webResourceClass", + "unselectItemsInRange:", + "rulerLineColor", + "setSearchString:", + "_sendingSocketForPort:", + "cancelButtonRectForBounds:", + "lineFragmentWidth", + "setOrder:forConsumerSubpatch:", + "_setDefaultButtonIndicatorNeedsDisplay", + "_setTabRect:", + NULL, + "draggingSource", + "fieldOfView", + "_sharedCertificatePanel", + "_startObservingUndoManagerNotifications", + "accessibilityCurrentEditor", + "resetTooltipView", + "decodeObjectForKey:", + "_updateAndWriteDictionaryAsNonSigned:newDictionary:", + "_createValueListQueryForAttribute:", + "_setToSMIME", + "isInteractive", + "saveFileName", + "selectItemWithTitle:", + "updateNote:changes:", + "_getVisibleRowRange:columnRange:", + "_changeSpellingToWord:", + "ikView", + "redo", + "createElementContentFromString:", + "_keyboardModifyRow:column:withEvent:", + "PDFOperationWithView:insideRect:toPath:printInfo:", + "parentContext", + "availableTypeFromArray:", + "adjustPageWidthNew:left:right:limit:", + "setShowsToolbarButton:", + "_peoplePickerSearch:", + "_setInlinePreviewVisible:animate:", + "classAttributes", + "_finalize_QCGraphicsContext", + "addSubpatch:", + "isBindingReadOnly:", + "__restorePosition:context:", + "setObservingBinder:", + "metadataColumns", + "accessibilityIsSelectedChildrenAttributeSettable", + "willChange:valuesAtIndexes:forKey:", + NULL, + "captionTextField", + "applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + "_prepPanel:keychain:", + "_positionAllDrawers", + "getRects:count:", + "activeColorSpace", + "installPerspetiveViewportForPicking:location:", + NULL, + "setMovieClipRegion:", + "_copySource:toDestination:", + "_resizeTable:level:range:column:widthDelta:", + "_setDefaults:", + NULL, + "extensionsForMIMEType:", + NULL, + "parseForBasicProperties", + "setAutorecalculatesKeyViewLoop:", + "_addNumberOfIndexes:toSelectionIndexesAtIndex:sendObserverNotifications:", + "_hideHODWindow", + "_computePriorFirstResponder", + "_removeLayerIfOwnedByAppKit", + "imageBrowser:titleOfCellAtIndex:didEndEditing:", + "setAttributedString:", + "shouldDisableSync", + "fileDescriptor", + "setSidebarMode:", + "_currentDeadKeyChar", + "isFrontWindow", + "methodReturnLength", + "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:maxCharacterIndex:nextGlyphIndex:nextCharacterIndex:", + "updateWidth", + "setLocation:forStartOfGlyphRange:coalesceRuns:", + "shouldFlip", + "setDrawFocusRing:", + "browser:selectRow:inColumn:", + NULL, + "nts__isCompany", + "_posixPathComponentsWithPath:", + "roundedCornerRadius", + "createClassDescription", + "_forceKnowsPageRangeMessage", + "registerUndoWithTarget:selector:arguments:argumentCount:", + "bestRecordMatching:inPeople:", + "stepForward", + "_excludedFromVisibleWindowList", + "pushTextWidgetUndo", + "_setInactiveStateShowsRollovers:forSegment:", + "application:printFiles:withSettings:showPrintPanels:", + "_finalize_Noise", + "_postNotificationForEvent:notificationName:parent:child:fbeProperty:", + "_setMouseTrackingInRect:ofView:", + "updateRunLoop", + "recordPrimaryKey:forInsertedObject:withSQLEntity:", + "_makeSelfMutable", + "_createCacheNodeFromXMLElement:", + "countOfInputExtent", + "nodeEnumeratorWithMovie:", + "_characterIndexForMoveLeftFromSelectedRanges:", + "initWithMantissa:exponent:isNegative:", + "_nodeFromGraph:atIndex:", + "_getTiffImage:ownedBy:asImageRep:", + "_registerDragTypesLater", + "PDFRepresentation", + "setWithArray:", + "_systemTimeChanged", + "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:", + NULL, + "insertEntity:intoOrderingArray:withDependencies:processingSet:", + "quartzFilterWithProperties:", + "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:", + "setGoodEntropyRange:", + "_isAbsolute", + "initWithItem:dataSource:", + "reconcileSubdescriptionsToSuiteRegistry:", + "_infoForPage:", + "mouseHit:", + "dismissPopUp:", + "setMaxDoubleValue:", + "initWithFrame:menuView:", + "_fixedSelectionRangeForRange:affinity:", + "fullNumber", + "imageBrowser:titleOfCellAtIndex:didChangeTo:", + "contentRectForFrameRect:", + "animationManager:processCell:channel:", + "_iconForCarbonIcon:size:", + "stringRepresentation", + "setIconType:", + "hudWidthForControlArray:", + "portCoderWithComponents:", + "_layoutViewsVerticallyAndResize", + "_dataSourceSetValue:forColumn:row:", + "initWithObjects:forKeys:", + "baseThread", + "toolbar:willAddItem:", + "objectValueOfSelectedItem", + "_web_URLComponents", + "initWithDate:timeInterval:", + "_bindingCreationDelegate", + NULL, + "filenames", + "maidenNameFieldPresent", + "nicestRenderingIsDone", + "displaysLinkToolTips", + "renameListSheetDidEnd:returnCode:context:", + "setDefaultLineCapStyle:", + "uppercaseWord:", + "mutableArray", + "_resortCachedChildrenForNode:", + "values", + "_setWindowDepth:", + "mutableSetValueForKeyPath:", + "removeFilterFile:", + "imageEffectsView", + "gotoNextPage:", + "findAttachement:", + NULL, + "nts_SetTracksModification:", + "objectInInputWhiteParamsAtIndex:", + "handleWindowDidBecomeKey:", + "setFill", + "_startSearch", + "_sendDelegateValidateDropForDragInfo:", + "_prefetchRelationshipKey:sourceEntityDescription:sourceObjectIDs:prefetchRelationshipKeys:inContext:", + "tableView:frameOfCellAtColumn:row:originalFrame:", + "switchToListNamed:", + "yearOfCommonEra", + "_invalidateDictionary:newTime:", + "deviceGlobalID", + "sharedScriptExecutionContext", + "_openGLContextForCurrentLayerBackingState", + "numberWithFloat:", + "_setupControls", + "initWithUndoManager:", + "_drawAttributedString:withBoundingRect:", + "drawWithFrame:inView:", + "tableViewAction:", + "certificatesFromInvite:sharedSecret:certs:", + "_setStopError:", + "setupViewForPatch:", + "_setNoteColor:", + "transitionFlags", + "drawDisclosureBox:inContext:", + "coversCharacter:", + "operators", + "setTitleAlignment:", + "updateNameMap", + "_unlockViewHierarchyForModification", + "_updateSavedFrames", + "centerOfPriorityRange", + NULL, + NULL, + "_disableScreenUpdatesUntilRunLoop", + "operationHasAborted", + "showDeminiaturizedWindow", + "scaleValue", + "initialValue", + NULL, + "isEndMark", + NULL, + "_writeURLNameInRange:toPasteboard:", + "indexOfItemWithSubmenu:", + "scrollToBeginningOfDocument:", + "initWithCVImageBuffer:", + "queryLDAPServer", + "_targetViewFrameRect", + "setAllowedFileTypes:", + "textColorInvalidationCapableObjectForObject:", + "_delegate_shouldTypeSelectForEvent:withCurrentSearchString:", + "selectAll", + "isAutomaticQuoteSubstitutionEnabled", + "_computeOrderedItemViewersOfType:", + "_viewFromExpressions:", + "_web_setInt:forKey:", + "scrollClipView:toPoint:", + "_managedObjectContextDidSave:", + "_coreUILinearKnobIndicatorOnly:", + "_descriptorByTranslatingTextStorage:ofType:inSuite:", + "errorAction", + "_proxyParentedChild:", + "setParentPDFView:", + "initWithImageProvider:userInfo:size:format:flipped:colorSpace:", + "_coreUIImageWithName:", + "gotoNextSelectionPoint", + "_presentableResultDescription", + "importQuality", + NULL, + "_setMetrics:", + "secureURLString", + "_setKeyboardFocusRingNeedsDisplayInRect:force:", + "setBody:", + "_setVectorX:Y:Z:W:", + "valueAtIndex:", + "editorCenter", + "outputs", + "toManyForSourceObjectID:relationshipName:after:", + "_printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:", + NULL, + "cacheInsertStatement:", + "submenuRepresentedObjectsAreStale", + "_processElement:tag:display:depth:", + "_setAccessibilityStringsForNormalFileListModeControl", + "_createAssociationsBySource:withDestination:forEntityMapping:", + "inputImageIsModified", + "setInputCount:", + "_checkGrammarStartingAt:detailRange:detail:", + "localizedShortName", + "flushCaches", + NULL, + "showControls", + NULL, + "hasMediaType:", + "dateFromComponents:", + "_addExpandedNodeToObservedNodeMappingForExpandedNode:", + "classDescriptionsByName", + "setVersion:", + "_reCalcQualityBarWidth", + "enumeratorOfInputExtent", + "_handleFauxDisabledNodeClicked:", + "_firstHighlightedCell", + "moveToBeginningOfParagraph:", + "replyWithException:", + NULL, + "annotations", + "selectIndex:", + "groupsPane", + "_hitTestTextFieldWithStepper:inRect:ofView:", + "scrollIndexToVisible:", + "_adjustPanelForMinWidth", + "_timer:", + NULL, + "_clockAndCalendarStartTrackingAt:inView:", + "managedName", + NULL, + "_createMutationMethodsForClass:forKey:", + "setAllowGroupSelection:", + NULL, + "writeTableHeader:atIndex:nestingLevel:", + "cleanUpCardState", + "currentBrowserType", + "_setSharedDocumentController:", + "_loadingViewForPreview:documentPreviewView:", + "_specifiesSingleIndexedObjectPerContainer", + "setSelectionFromPasteboard:selectionHelper:", + "outline", + "drawSelection", + "thumbnailRefreshTimer:", + "runModalSession:", + "initWithTitle:action:keyEquivalent:", + "setUndoableValue:forKeyPath:updatesState:", + "setCompressionOptions:forConnection:", + "movie", + "lightImageResult:", + "positionOfGlyph:forCharacter:struckOverRect:", + "_addObject:forKey:", + "setAnimates:", + "eraseColor", + "addressValueWithEntity:", + "nts__fullName", + "_initializeFromKeychain", + "_sendViewWillDrawInRect:", + "dividerRowItem", + "setPanAngle:", + "_startMove", + "replyAppleEventForSuspensionID:", + "_setDTDString:", + "addPathComponentCell:", + NULL, + "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:", + "_overwriteExistingFileCheck:", + "setPrivateAnimationMask:", + "saveCache:intoFile:", + "accessibilityParameterizedAttributeNames", + "_centerOnScreen", + "junctionForComparison:value:", + "cellIndexAtLocation:", + "_computeMaxItemViewHeight", + "_clearInsertions", + "orderOutToolTipImmediately:", + "documentEdited", + "emptyIconDatabase", + NULL, + "_rulerAccViewPullDownAction:", + "initWithInt:", + "zoom:", + "_setNeedsToUseHeartBeatWindow:", + "_alternatingRowBackgroundColors", + "setRemovable:", + "maximizeWindow:", + "_postCleanUltraFastRendering", + "_parserableStringDescription:", + "defaultNamespaceForPrefix:", + NULL, + "advancePastEOLUnicode", + NULL, + "noteWindowClosed:", + "handleReleasedProxies:length:", + "sizeRequisition", + "isRevocationStatusCode:", + "initWithTextureName:releaseCallback:releaseInfo:context:format:target:width:height:mipmapLevels:flipped:colorSpace:options:", + "_debugHeightBucketArrayDescription", + NULL, + "accessibilitySelectedChildrenAttribute", + "CATransform3DValue", + "createAttributeChildOnNode:forAttribute:type:andValue:", + "audioSampleRate", + "selectCellWithTag:", + "drawSelection:selected:inView:withRoundedLeftEdges:", + "neverPurgeHint", + "_attributesRequestPostHandler:", + "abortToolTip", + "setValue:forKey:inObject:", + "addFormField:", + NULL, + "installInputManagerMenu:", + "_userLibraryPath", + "_tabOrientation", + "_bumpTimeout", + "_minXmaxYResizeRect", + "userSpaceScaleFactor", + "_makeSureItemViewersInArray:areSubviews:from:to:", + "rate", + "isDescendentOfPath:", + "nativeTextureTarget", + "sendSelectionChangedNotification", + "setVariable:atIndex:", + "setFilestreamBlockLength:", + "getFloatValue:", + "_selectUpstream:", + "setCurrentSize:", + "readSelectionFromPasteboard:type:", + "_getKeyEquivalentListTable", + "setMaximumSize:", + "setPositiveSuffix:", + "scrollColumnsLeftBy:", + "weekdaySymbols", + "userColumnResizingAutoresizesWindow", + "setColumnsAutosaveName:", + "_userCanSelectIndex:withNewSelectedIndexes:", + "__setValue:forIvar:", + "thumbnailImageAtIndex:", + "sliderType", + "startQueryForString:withServers:userInfo:exactString:", + "_titleRectForCellFrame:", + NULL, + "setCloseAction:", + NULL, + "setFindString:writeToPasteboard:updateUI:", + "accessibilityRTFForRangeAttributeForParameter:", + "_displayChangedDepth", + "responses", + "_listDefinitions", + "localSnapshotForGlobalID:", + "addTooltipsForVisiblePages", + "imageWithCVImageBuffer:options:", + "_sendAVCDeviceOpcode:playbackMode:", + "setBounds:", + "_supposedNumberOfItems", + "_setIgnoreForKeyViewLoop:", + "drawFrame:", + "_executionMode", + "markedRange", + "setValue:forKey:", + "edited", + "_sizeAllDrawersWithRect:", + "tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:", + "__restoreSelection:context:", + "setArgument:atIndex:", + "definitionForComparison:withPropertyDefinition:", + "dictionarypath", + "initWithObjectsAndKeys:", + "removeCommandDescriptions:", + "_resizeButton:imageNamed:", + "_scriptingRemoveValueForSpecifier:", + "disableScreenUpdatesUntilFlush", + "ISS__ay_performSelector:withObject:inThread:beforeDate:", + "_handleBoundsChangeForSubview:", + "browser:willDisplayCell:atRow:column:", + "sortMembers:", + "relinquishFocus", + "setController:", + "minimalFormInContext:", + "getSpinnerFrame", + "previewView:willLoadPreviewForURL:", + "_newPersistentPropertiesWithRelationshipFaultsIntact", + "_accessibilitySearchFieldCellBounds", + "issueSetImageCommandWithSmallImage:largeImage:clippingRect:", + "initAddressWithPeerFromSocket:", + "pauseNotifications", + "_accessibilityParentForSubview:", + "disconnect", + NULL, + "rubberBand:rectangleFrom:to:withEvent:", + "replaceString:withString:ranges:options:inView:replacementRange:", + "_setInstalled:", + "layerBeingDrawn", + "_isSelectedPart:", + "sendDidReceiveData:originalLength:", + "existsInKeychain:", + NULL, + "_doUserParagraphStyleLineHeight:fixed:", + "handleInitialContentRenderSkip", + "_effectiveFrameForDrawnFrame:ofDividerAtIndex:", + "addLanguageToChoices:", + "initWithExtent:format:options:", + "stringWithCString:", + "fidelity", + "captureOutput:didFinishRecordingToOutputFileAtURL:forConnections:dueToError:", + "constrainScrollPoint:", + "contentResizingMask", + "setSound:", + "initWithNode:delegate:", + "wait", + "initWithCachedResponse:request:key:", + NULL, + "switchedToToFullScreen", + "setAttributeRuns:", + "willChangeValueForKey:forIndexes:", + "initWithTreeNode:", + "movieFileTypes:", + "_clearFormatDescription", + "_chooseSizeFromField:", + "setPrimaryKeys:", + "_shutDrawer", + "focusImageAtIndexAndRedisplay:", + NULL, + "setTokenizingCharacterSet:", + "addObjectsFromArray:", + "groupPropertyTypes", + "_resetFirstResponder", + "setWidgets:", + "isPeoplePicker", + "_windowRef", + "toolbar:didRemoveItem:", + "_addOverride:forKey:", + "_slicePlusButtonClick:", + "animationCurve", + "valueForStateKey:", + "cacheUsedByProxyBitmapRep", + "defaultRecentPictureWithOriginalData:cropSize:", + "selectionIndexes", + "_forceClosed", + "isSubviewCollapsed:", + "setNumberOfLights:", + "_goThroughWhitespace:forPosition:", + "tokenField:shouldUseDrawingAttributes:forRepresentedObject:", + "_timeout", + "revertToContentsOfURL:ofType:error:", + "_notifyObservers", + "synchronizeBackBufferIfNeeded", + "autoPositionMask", + "policyValuesForTrust:", + "contextWithPixelFormatAttributes:options:", + "_generateSQLBeginsWithStringInContext:", + "removeParamDescriptorWithKeyword:", + "rowForDisplayValue:", + "_openOldFavorites", + "setDisplaysPageBreaks:", + "setRecentsAutosaveName:", + "prepareIn:swap:", + "_loadPickerBundlesIn:", + NULL, + "_showHideToolbar:resizeWindow:animate:", + "_dimmedImage:", + "_isMenuMnemonicString:", + "isUndoRegistrationEnabled", + "_saveUserPanelValues", + "validateResourceURL:withOptions:", + "_launchSpellChecker:", + "removeKeysForObject:", + "accessoryControllers", + "_coreUILinearBarNoIndicator:", + "setDisabledImage:forControlTint:", + "__patchUpdated:", + NULL, + "mouseEntered:withFrame:inView:", + "_removeOldestSubthumbnail", + "_pathForFSRef:", + "_allSubviewsAreOpaque", + "_updateLayerOpacityFromView", + "_askDelegateWithURL:realm:forRequest:failureCount:failureResponse:protocol:withCallback:context:", + "setLocalizationDictionary:", + "singlestep:", + "initWithEffectName:", + NULL, + "internalNameForEntityName:version:", + "_initForPropPatchWithPatchDict:deleteProperties:", + "minimumGroupWidth", + "draggedImage:movedTo:", + "switchToImageWithTransition:orientation:autoPlay:", + "setFrame:display:", + "observedNode", + "hideOtherApplications:", + "createLayerForTool:event:", + "significantText", + "foldComparisonPredicate:", + "generatePageViewBounds", + "defaultBackupManager", + "initTitleCell:", + "_enableTrackingArea:", + "addBorderToDictionaryRef:", + "systemTimeZone", + "secondaryInvocation", + "writeToPasteboard:", + NULL, + "draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", + "runLoopModes", + "setupLayers", + "greenPreBlurROI:destRect:", + "enlargedBounds:withOffset:andCount:", + "removeAllExpandedNodes", + "clearSearchField", + "_stringByResolvingSymlinksInPathUsingCache:", + "initWithScheme:host:path:", + "formData", + "insertLineBreak:", + "highlight:", + "decimalNumberByDividingBy:", + "didUpdateValueForKey:forCell:", + "isCompatibleWithSubscription:", + "_specialServicesMenuUpdate", + "displayStringsForAttributes:includeBoldItalic:", + "_setTitleNeedsDisplay", + "frameAtIndex:animationValue:", + "_showsNode:", + "_indentationForRow:withLevel:isSourceListGroupRow:", + "initWithKey:value:", + "elementCount", + "_drawContextMenuHighlightForIndexes:clipRect:", + "_textAttributes", + "altersStateOfSelectedItem", + "nibInterface", + "valueForTag:client:", + "didChangeAttributeForKey:", + "disableUndoRegistration", + "_invalidateForSubviewFrameChange:oldSize:oldTopLeft:", + "changeDirectoryForGoIntoNode:", + "addValue:withLabel:", + "matrixReloaded", + "_editor:didCommit:withOriginalDelegateInvocation:", + "endModalSession:", + "_useTigerMetricsForLeftUnborderedOffset", + "_types", + "_drawerCloseThreshold", + "titleComponent", + "_postColumnDidMoveNotificationFromColumn:toColumn:", + "openCodeFile:withEncoding:", + "appendBezierPathWithRoundedRect:xRadius:yRadius:", + "_visibleRectOfLayer:", + "drawInContext:withBounds:", + "startQueryForString:withServers:", + "_convertStringToNumber:", + "gestalt:forDisplayID:", + "imageWithPath:", + "_setValue:type:forParameter:", + "primitiveSortingFirstName", + "languageName", + "_pageDownWithEvent:", + "hasRunLoop:", + "registerPlugin:forType:", + "writeWithBackupToFile:ofType:saveOperation:", + "_markSelfAsDirtyForBackgroundLayout:", + "_endEditingIfNecessaryWhenDeselectingColumnRange:", + "showAtPoint:", + "photoCacheDirectoryPath", + "movieWithAttributes:error:", + "spaceItemSize", + "_userCanSelectCell:", + "removeBookmark:", + "indexOfCrayon:", + "setTopLevelObject:", + "contextExpression", + "escapeKey:", + "maximumRange", + "_portInvalidated:", + "imageRepsWithContentsOfFile:", + "ejectButtonCell", + "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:", + "enterSlideshowFullScreen", + NULL, + "getComputedStyle::", + "setPrintJobTitle:", + "instanceMethodDescriptionForSelector:", + "_attributesFromComposition:", + "runMode:untilDate:", + "initWithBytesNoCopy:length:encoding:freeWhenDone:", + NULL, + "nts_DescriptionDictionary", + "_setShowOpaqueGrowBox:", + "_createFontPanelSizeRep", + "encodeSMPTETime:forKey:", + "tableView:heightForRow:", + "filterInfo", + "serializeDataAt:ofObjCType:context:", + "_setActualSize:", + "addDrawerWithView:", + "hasOpenPopupAnnotations", + "grouping", + "_setPlaceholderForValue:inObject:", + "attemptRecoveryFromError:optionIndex:", + "rootContext", + NULL, + "_compareSingleDictionaryKeyWithRecordValue:", + "mouseDownMovesWindow", + "initWithKey:type:access:isHidden:", + "beginLoadingImageForEmails:forClient:", + "didFailWithError:", + "setImageWithURL:", + "miniwindowImage", + "setTransformStruct:", + "isFinished", + "_setRTFDFileWrapper:", + "previewPanelSelectPreviousItem:", + NULL, + "openHandCursor", + "addAdditionalField:", + "valuePointerFunctions", + "setJobStyleHint:", + "isEnabled", + "_isEditable", + "textView:clickedOnCell:inRect:", + "graphicsContextWithWindow:", + "_windowAnimationVelocity", + "aeDesc", + "_rangeForMoveDownFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:", + "sortedPropertyValuesWithKey:addressBook:", + "processGRLs:currentGRL:withTitle:withCurrentPriority:pruneList:", + "objectForKey:inDomain:", + "updateButtons", + "imageWithPDF:atSize:angle:center:intoRect:fillWith:redB:greenB:blueB:redW:greenW:blueW:", + "initWithStart:len:", + "cgImageRepresentation", + "prepareEditorWithString:attributes:", + "clockPreferencesChanged:", + NULL, + "_dataAtIndex:", + "shadowComponentSize", + "_subviewsOrDividersHaveChangedSinceAdjustment", + "deselectIdentifier:forPerson:", + "longCharacterIsMember:", + "_keyboardDelayForPartialSearchString:", + "copyAnyResource", + "setAllowsCursorRectsWhenInactive:", + "baseSetter", + "setViewFrame:inCellFrame:inView:", + NULL, + NULL, + "setNotificationDelegate:", + "_setBundleForHelpSearch:", + "validateForUpdate:", + "_hashMarkDictionaryForDocumentView:measurementUnitName:", + "minDate", + "unlockOperations", + "_computeToolbarItemKeyboardLoop", + "getRed:green:blue:alpha:", + "_nodeFromArchive:", + "cyanColor", + NULL, + "initListMembersWithURL:showHidden:", + "actualIndexForIndex:filtered:", + "_convertPointFromSuperview:test:", + "removeCIFilter:", + "exportedKeys", + "fieldDataForOid:inCert:auxData:", + "preloadURL:", + "setMovableByWindowBackground:", + "removeViewFromSuperview", + "_testPartUsingDestinationFloatValue:", + "_lastPageNumber", + "_sharedOidParser", + "initWithGroup:members:showAs:addressBook:", + "_displayValueForPredicateOperator:", + "imageTransform", + "peoplePane", + "imageNamed:", + "_setTransactionAborted:", + "setValueTransformer:forName:", + "_drawsNothing", + "synchronizeTableViewSelectionWithText:", + "enterFullscreenForView:withEffect:frame:fromPanel:", + "addView:", + "initWithSelector:argumentArray:", + "setDataSourceIndex:", + "addObject:", + "initWithRole:parent:", + "setAllProperties:", + "directoryContentsAtPath:matchingExtension:options:keepExtension:", + "doIconify:", + "modes:", + "setStore:", + "rotateByRadians:", + "_initializeAccessorStubs", + "address", + "heightFieldFrom:radius:", + "writePaperSize", + "transactionDidRollback", + "encryptComponents:", + "_delegateWillDisplayOutlineCell:forColumn:row:", + "mutableArrayValueForKey:", + "tracksModification", + "_compressorDidRenderConnection:busNumber:processHints:sampleBuffer:", + "initWithFrame:text:", + "_initWithCGColorSpaceNoCache:", + "baseAddress", + "saveList:", + "restOfKeyPathIfContainedByValueForKeyPath:", + "_isMetadataDirty", + "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:", + "indexOfDirectory:", + "_children", + "_handleText:", + NULL, + "selectedNodes", + "setSelected:", + "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:", + "dequeueAllOperations", + "_keyValuePairArrayForDictionary:reuseKeyValuePairsFromArray:", + "_certView", + "setMaximumFractionDigits:", + "setControllerVisible:", + "infoWindowController", + "displayNameAtIndex:", + NULL, + "_defaultValueForAttribute:range:", + "didChange:valuesAtIndexes:forKey:", + "ISS__ay_postNotificationName:object:inThread:", + NULL, + "_loadXMLData", + "setParentCrayonView:", + "deleteToBeginningOfParagraph:", + "processXMLDeclaration:", + "apply:context:", + "initWithContainerClassDescription:containerSpecifier:key:test:", + "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:", + "_toolTipManagerWillRecomputeToolTipsByRemoving:adding:", + "_handleAEQuitWithActivating:documentSaving:", + "_initInfoSession", + "_endListeningForApplicationStatusChanges", + "accessibilitySelectedTextRangeAttribute", + NULL, + "readPixelsFromBounds:toBaseAddress:withBytesPerRow:pixelType:", + "accessibilitySetSelectedTextRangesAttribute:", + NULL, + "selectedCells", + "undoMenuTitleForUndoActionName:", + "accessibilitySetPositionAttribute:", + "_createAttributedSubstringWithRange:", + "_inScaledWindow", + "_bitBlitSourceRect:toDestinationRect:", + "readDataOfLength:buffer:", + "_dynamicToolTipManagerInstances", + "inputElement", + "languageCode", + "initSpecialRecordWithUniqueId:addressBook:", + "linkedToLayerType", + "_endedLoadingURL:documentPreviewView:result:", + "_removeSubentity:", + "_performSwitchToIconMode", + "matchesPattern:", + "decodeBoolForKey:", + "_resizeWindowWithMaxHeight:", + "_shiftBucketDataFromIndex:by:insertionData:", + NULL, + NULL, + NULL, + "initWithExternalName:", + "createSymbolicLinkAtPath:withDestinationPath:error:", + NULL, + "newListName:", + "clearCacheForGroup:", + NULL, + "useCGForNicestRendering", + "dataRefType", + "finalizeForWebScript", + "registerDefaults:", + "resetQueryForChangedAttributes:", + "displayForLayerTime:displayTime:", + "setObjectID:", + "setRoundingIncrement:", + "cornerView", + NULL, + "drawListBox:inContext:", + "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:", + "copyStandardSidebarNodeTitles", + "setup", + "initWithFrame:scale:", + "_setOutlineImagesForRow:", + "forgetWord:language:", + "remoteLocation", + "_runLoop:removePort:forMode:", + "setGutterWidth:", + "beginEntityMapping:manager:error:", + "setURL:blockingUntilLoading:timeoutDate:", + NULL, + "_dataSourceRespondsToWriteDragData", + "_propagatePendingDeletesAtEndOfEvent:", + "instantiateNibWithOwner:topLevelObjects:", + "_lockForWriting", + "_convertRect:toAncestor:", + "_postWillScrollNotification", + "newInsertStatementWithRow:", + "_menuPanelInitWithCoder:", + "_validateWithSchemaAndReturnError:", + "cost", + NULL, + "_isTerminating", + "customPropertyDefinitionWithName:addressBook:", + "setPixelBufferAttributes:", + "directionForPort:", + "setFullPath:", + "moveDown:", + "_initWithEntity:withID:withHandler:withContext:", + "_releaseResources", + NULL, + "_setFilterPredicateNoCopy:", + "viewHasToolTips:", + "_menuLocationForEvent:inCellFrame:ofView:", + "setOpenGLPixelFormat:", + "noteMembersSelectionChanged:", + "numberOfSelectedRows", + "username", + "isMainInputController", + "mapForClass:", + "_loadPreview:withDocumentPreviewView:", + "animateTransition:", + "setMigrationManager:", + "_changed", + "kernelsWithString:messageLog:", + "maximumAge", + "advanceMonthButtonCellForDatePickerCell:", + "managedObjectContextForAddressBook:", + "revertPaste:", + "addSingleButton", + "classNameForClass:", + "initForContext:", + NULL, + "_checkGrammarInString:language:details:", + "_alignFirstVisibleColumnToDocumentViewEdge:", + "maximumRangeOfUnit:", + NULL, + "_reverseCompare:", + "contentsRect", + "preservesSelection", + "mappingForAttribute:forConfigurationWithName:", + "removeLayoutManager:", + "_themeTabAndBarArea", + "_addInput:forKey:", + "setPerson:", + "_loadFromDocument:", + NULL, + "progressPanel", + "_noteNote2:", + "pointerValue", + "mask", + "_retainedObjectsFromRemovedStore:", + NULL, + "tableOptionsPanel:", + "_parameterValues", + "updateTimebase:", + "trackedCell", + "initWithSet:copyItems:", + "_appendBezierPathWithRoundRect:cornerRadius:", + "decimalNumberBySubstracting:withBehavior:", + "setUsingDefaultVoice:", + "commitEditing", + NULL, + "_renameCollection:to:", + "setTrustValues:", + "restoreKeyboardFocus:", + "navNodeClass", + "_setUtilityWindow:", + "_scrollByDelta:", + "tickMarkPosition", + "_activate", + "mutableDictionary", + "_fillGlyphHoleForCharacterRange:startGlyphIndex:desiredNumberOfCharacters:", + "presentationWindowForError:originatedInWindow:", + "addItemWithTitle:action:keyEquivalent:", + "nts_MoveIntoAddressBook:", + "_addBindVarForConstVal1:inContext:", + "setContainerClassDescription:", + "adjustOffsetToNextWordBoundaryInString:startingAt:", + "_supportsVariableHeightRows", + "enableUpdates", + "_hasCursorRects", + "initWithCGColorSpace:", + "copyCustomAttributes:", + NULL, + NULL, + "_bindItemImageInVRam:domain:vramNode:", + "startRectForSheet:", + "removeObject:range:identical:", + "_direction", + NULL, + "scaledImageSize", + "arrayWithArray:", + "_addToolbarItemToToolbarFromMenuItem:", + "setMovieAttributesFromUserData", + "textField", + NULL, + "setWeek:", + "_brightColorFromPoint:fullBrightness:", + "perform:", + "updateControls", + "fileSystemAttributesAtPath:", + "CA_pathWithComponents:", + NULL, + "performFindPanelAction:", + "_setSurface:", + "seekToFileOffset:", + "requiresValue", + "dispatchInstruction:", + "addAlreadyAddedToiPhotoButton", + "setParagraphGlyphRange:separatorGlyphRange:", + "_unnestListAtIndex:markerRange:", + "writeDate:", + "_web_rangeOfURLResourceSpecifier_nowarn", + "_allowAnimated_setBoundsOrigin:", + "hasRAMCache", + "sharedNetworkController", + "_insertNewItemWithItemIdentifier:atIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "invalidateLastSelectedIndex", + "nextActions", + "setCustomizedName:", + "initWithOptions:refcon:callbacks:", + NULL, + "_fileWrapperOfType:", + "_senderIsInvalid:", + "setFrameFromContentFrame:", + "__selectionFilter:", + "widthTracksTextView", + "freeAttributes", + "webPlugInCallJava:method:returnType:arguments:", + "setOnStateValue:", + "parseField:atIndex:", + "objectByApplyingXSLTAtURL:arguments:error:", + "saveTrustValuesInDomain:", + "_parseText1", + "appendTransform:", + NULL, + "_appendColorPicker:", + "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:", + "setDescriptionFunction:", + "_enablePrivateEditing", + "_draggingTypes", + "capitalizedString", + "hasNodeLabel", + NULL, + "currentTime", + "_isAnyFontBindingBoundToController:", + "_applyAudioChannelVolumesFromAttributes", + NULL, + "setUsesIndexLabels:", + "_initWithRequest:delegate:directory:", + "_descriptorByTranslatingArray:ofObjectsOfType:inSuite:", + "initWithImageSource:options:", + "storeMin:andMax:ofObject:", + NULL, + "_searchCriteriaWithSlices:anyAttribute:", + "isVerticallyResizable", + "createRenderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:hasStrongRight:maximumWidth:", + "peopleOrCompaniesSelection", + "nodeType", + "shouldStartTaskNamed:", + "resultCount", + "rangeOfNominallySpacedGlyphsContainingIndex:", + "setCompositionParameterView:", + "_newMappingForPropertiesOfRange:", + "startWithView:itemIndex:", + "_sendMenuClosedNotification", + "_servicesMenuHasBeenBuilt", + "setUpSourceForData:", + NULL, + "setBool:forKey:", + "expressionType", + "setDestinationOrigin:travelTimeInSeconds:", + "_insertGlyphs:elasticAttributes:count:atGlyphIndex:characterIndex:", + "toolbarType", + "addObservedKey:", + "inputConnectionFormatDescriptionDidChange:", + NULL, + "endSelectionProcess:", + "_searchForImageNamed:", + "shapeDepth", + NULL, + "mainWindowFrameColor", + "attachColorList:systemList:makeSelected:", + "_pushHandling:", + "_pageLayout:wasPresentedWithResult:inContext:", + "accessibilityIsDocumentAttributeSettable", + "setCanRead:", + "showsCertButton", + "addPathToLibrarySearchPaths:", + "traceWithFlavor:priority:format:arguments:", + "isExpansionToolTipInView:withDisplayInfo:", + "tokenFieldCell:menuForRepresentedObject:", + "setRenderingFlags:", + "setOrderedState:", + "_enableObserving", + "_rectsForMultiClippedContentDrawing", + "_setGraphView:", + "alternateMnemonic", + NULL, + NULL, + "sound:didFinishPlaying:", + "_setKeyViewGroupBoundaryNeedsRecalc:", + "autoresizesOutlineColumn", + "appleEventCode", + "printInfoDidChange:", + "setTitle:ofItemWithIdentifier:", + "saveParameter:to:", + "_validatePropertiesWithError:", + "setComposition:", + "endRenderTexture", + "_setRecents:", + "_acceptsFirstResponderWhenSelectableWithFullKeyboardAccess", + "_shouldDrawTwoBitGray", + "_ensureNoStatementPrepared", + "binderSpecificFlagAtIndex:", + "drawKeyEquivalentWithFrame:inView:", + "setEntryType:", + "initWithBulletCharacter:length:", + "_insertObjectWithGlobalID:globalID:", + "_listResources:", + "trackingTokenTextView:", + "nilSymbol", + "pixelFormatRGB8", + "orderedByStart", + "retainResource", + "needsPanelToBecomeKey", + "_postRedoLayout", + "_calculatePreviewThumbnailImageWithMaxSize:isThumbnail:", + "setLineWidth:", + "emulateUpdateCard:withImportedCard:changes:", + "setupLoadedNib", + "parseAuthorityKeyId:", + "_willPresentDisablingAutosavingError:forURL:", + "calcSize", + "usesAlternatingRowBackgroundColors", + "canGoBack", + NULL, + "finalValueForKey:forCell:", + "newForeignKeyID:entity:", + "clearGLContext", + "storeObject:forUID:forResolution:forKey:", + "computeContentSize", + "_includeSubslicesForSlicesAtIndexes:", + "_findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:allowBinary:", + "_learnSpellingFromMenu:", + NULL, + "encodeArrayOfObjCType:count:at:", + NULL, + "precomposedStringWithCompatibilityMapping", + "forceSetMode:", + "serializePropertyList:", + "drawNode:bounds:view:", + "_shouldLinkItemAtPath:toPath:", + "syncToViewUnconditionally", + "setValueSelectionBehavior:", + "checkSpellingOfString:startingAt:", + "convertFromAncestor:toView:clipTo:", + "memberForKey:", + "constraints", + "bestLocationRepFromURL:", + "_entryForSpecifier:", + "runModal", + "rangeToParent", + "setDisplayLinkLock:", + NULL, + "_sendPartialString", + "_defaultSelectedKnobColor", + "opaque", + "eject", + "_endDragging", + "linesOfFile", + "initWithPath:logonOK:", + "valueWraps", + "setTitleColor:", + "scheduleDelayedUpdate", + "_queryViewOptions", + "windowDidMiniaturize:", + "_panelMessage", + "_caseSensitiveCompare:", + "_changedObjectIDs", + "_addEditableSubfieldForElement:dateFormat:", + "outputImageKey", + "setOriginalTemplate:", + "eventParameterWithData:type:size:", + "_showNewestSubthumbnail", + "boundsAsQDRect", + "setUpdatePreviewSize:", + "_performServiceFromDictionary:withPasteboard:", + "PDFViewWillChangeScaleFactor:toScale:", + "resignMainWindow", + "attachmentFrame", + "negativeSuffix", + "setInlinePreviewURL:", + "removeFontTrait:", + "_finishAutosavingWithSuccess:context:", + "checkIfCanStartSlideShow", + "_eventRefInternal", + "stringParameterValue:", + "_initWithFontAttributes:options:", + "scriptingIsLessThanOrEqualTo:", + "removePageAtIndex:", + "findVisiblePages", + "prefetchThumbnailsProgress", + "vector", + "_compareNode:withDisplayName:toNode:withDisplayName:", + "deleteToBeginningOfLine:", + "insertAppleUseCoreUI:atIndexes:", + NULL, + "_ignoresViewTransformations", + "_discardCursorEventsForWindowNumber:criteria:", + NULL, + "timeIntervalSinceNow", + "dictionaryAtURL:errorCode:securely:", + "_validatePagination", + "createRepresentationFromProvider:ofType:withOptions:", + NULL, + "windowDidMove:", + "_parseHeader", + NULL, + "_inFavMode", + "PDFViewPerformGoToPage:", + "mouse:", + "_appendEventDeclarationsToAETEData:includingParts:", + "setRightChild:", + "_resizeLeftCursor", + "_sendClientMessage:arg1:arg2:", + NULL, + "setCell:selected:", + "speechFeedbackServicesTimer", + "initWithName:password:applicationID:", + "relatedMatchesForName:label:givenLastName:", + "deviceDeltaZ", + NULL, + "cachedImageForItemClass:", + "restoreGraphicsState", + "_computeTargetItemsByRegenerating:", + "_noteToolbarSizeModeChangedAndPostSyncSEL", + "enabledStateAtIndexPath:", + "deinterlaceVideo", + "sendDidFinishLoading", + "_registerForDocViewFrameAndBoundsChangeNotifications", + "_iChatEncryptionUsage", + "_valueClassIsSortableWithBinding:", + "_customTitleFrame", + "writePrintInfo", + NULL, + "copy", + "openUntitledDocumentAndDisplay:error:", + "method", + "isAdditive", + NULL, + "updateMovieControllerBounds", + "_copyCoreUILinearBarDrawOptionsWithView:", + "isConcurrent", + "_badgeForString:", + "SCTPerformDelayedSelector:withObject:afterDelay:", + "customCall:inputData:outputData:", + "refreshControlBarIfNecessary:", + "_eventDataDictionary", + "_windowMoved:", + NULL, + "_prepPanel:identities:", + "removeElementsInRange:", + "availableFontNamesWithTraits:", + "colorPanelColorChanged:", + "unregisterSearchDataSource:", + "_removeSubrowsForRow:fromSet:", + NULL, + "setKeysAndEncoding:", + "_documentPreviewFailedToLoad:", + "senderDidResignActive:", + "scriptCommand", + "databaseVersion", + "showPeopleButton", + NULL, + "_proxyShare", + "_setNeedsDisplayFromMainThread", + "underlyingDataAreVolatile", + "allPropertyKeys", + NULL, + "_stringByStandardizingPathUsingCache:", + "invalidateShadow", + "resourcesInit", + "modificationDateYear", + "configureForDisplayedFileProperties:", + "loadThumbnailForURL:", + "_installHeartBeat:", + "_setColumnName:", + NULL, + "_web_guessedMIMEType", + "_buildGraphUnitsForInputConnection:error:", + "setType:", + "_shiftDown::::", + "setNumberOfRows:", + "backgroundQueue:invocationExceededQueueLimit:", + "_imagesWithData:hfsFileType:extension:zone:expandImageContentNow:includeAllReps:", + "CA_stringByDeletingPathExtension:", + "_setRef:toObj:", + "cgImage", + "_kitNewObjectSetVersion:", + "initWithPointerFunctions:", + "updateGRLResults:", + NULL, + "_addTrackingTag:", + "contentAspectRatio", + "_setLocality:", + "segmentedBuffer", + NULL, + "allowsGroupEditing", + "cachedSize", + "_setIsFlattened:", + "stringWithKey:", + "imageRepWithData:", + "clearGroupsSelection", + "addOutput:error:", + "columnTitleForIdentifier:", + "_resourceLoadLoop:", + "isDragging", + NULL, + "_appendSubThumbnail:", + "getResolutionData:carbonMetricsTop:left:bottom:right:", + NULL, + "_attachedSheet", + NULL, + "initWithKey:isStored:", + "_registerDragTypes:", + "passesFilterAtIndex:", + "decodedValueForKey:ofClass:fromDictionary:", + "setControlView:", + "_retrySavingAndReturnError:", + NULL, + "__isPatchInUse:", + "_viewKnowsPages", + "accessibilityWindowAttribute", + "removePersistentDomainForName:", + "setNotationName:", + "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:", + NULL, + "loadUI", + "copyObject:", + "_writeURLStringsWithNamesInRange:toPasteboard:", + NULL, + "_primitiveSetDefaultNextKeyView:", + "displayStateForNode:", + "_getReadableNotWritable:types:forDocumentClass:", + "adjustScroll:", + NULL, + "datasourceDidChange", + "eventNumber", + "rulersVisible", + "_metrics", + "setTemplate:", + "GFDictionaryEnumerator", + "_doClickAndQueueSendingOfAction:", + "advanceToString", + "setKey:atIndex:", + "_isValidRelationshipDestination", + NULL, + "_cacheUserKeyEquivalentInfo", + "_useSimpleTrackingMode", + "queueLimit", + "setEndSubelementIndex:", + "errorMessages", + "countFiltered:", + "_acceptableRowAboveRow:minRow:", + "newSmartGroup:", + "childNodesMatchingString:", + "_draggedFilenameFromPasteboard:", + "directorySubpathsOperationAtPath:", + "reassignFilterChain:", + "_rotateCoordsForDrawLabelInRect:", + "_web_initWithDomain_nowarn:code:URL:", + "_oldSizeDuringLiveResize", + NULL, + "_sendDataSourceSortDescriptorsDidChange:", + "setMarkerLocation:", + "uid", + "_notePendingRecentDocumentURLsForKey:", + "timeSlider:setCurrentTime:", + "setLoadingProgressValue:", + "initWithUniqueId:addressBook:", + "_000102", + "rectIncludingShadow", + "_complete:", + "_writeDocument:toPath:", + "wasGeneratedWithIconServices", + "_colorSyncProfileClass", + NULL, + "CA_addValue:multipliedBy:", + "isEditingCanceled", + "_displayToolTipIfNecessaryIgnoringTime:", + NULL, + "processPendingChanges", + "_AEDesc", + "wantsToTrackMouseForEvent:inRect:ofView:", + NULL, + "_saveRecents", + "setMipmapImage:", + "setTabKeyTraversesCells:", + "growBoxWithParent:", + "classForArchiver", + "initWithCompatibilityVersion:", + NULL, + "_orderOutRelativeToWindow:", + "_preferredScript", + "policyString", + "_setupRendering", + "setDefaultDuration:", + "setWidth:type:forLayer:edge:", + "setRequestTimeout:", + NULL, + "rendererType", + "_initWithEntities:", + "setMuted:", + "drawKnob:", + "allowFlushing", + "accessibilitySharedCharacterRangeAttribute", + "initWithCGSource:options:", + "_setMetadata:", + "dataReferenceEnumeratorWithQTMovie:", + "_isUsedByCell", + "_decrementImagePointerToCGImageRefCache", + "queryString", + "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:", + "pointerArrayWithPointerFunctions:", + "_keysForValuesAffectingValueForKey:", + NULL, + "setAttribute:atIndex:", + "_scrollViewForColumnsWillTrackHorizontalScroller:", + "_pauseUIHeartBeatingInView:", + "_drawsWithinMenuBar", + "createScaledImageByX:Y:fromX:Y:", + "stopInlineSlideshow", + "legendHidden", + "implementationClassName", + "getBytes:length:", + "objectRegisteredForID:", + NULL, + NULL, + "_characterIndexForMoveRightFromCharacterIndex:", + "computeLinearA:andB:fromX0:y0:x1:y1:", + "_setCustomizesAlwaysOnClickAndDrag:", + NULL, + NULL, + "blurHalfSizeImage:radius:image:", + "initWithString:calendarFormat:", + "attributedStringToEndOfGroup", + "_endUpdate", + "updateSearchFieldWithPredicate:", + "_setDeselectsWhenMouseLeavesDuringDrag:", + "reconnectBindings:", + NULL, + "primaryIdentifier", + "unpackROI:forRect:", + "windowWillOrderOnScreen:", + "_windowChangedNumber:", + "primaryKeyGeneration", + "insertSegmentOfMovie:timeRange:atTime:", + "drawInRect:fromRect:operation:fraction:", + NULL, + "outlineView:objectValueForTableColumn:byItem:", + "initInNode:recordRef:type:", + "setTypesetterBehavior:", + "failureResponse", + "isCanonical", + "searchTypeLabelAtIndex:", + "_transaction", + "initWithKey:typeDescription:appleEventCode:presentableDescription:name:", + "initWithContentRect:styleMask:backing:defer:screen:", + "addSubgroup:", + "drawerWillResizeContents:toSize:", + NULL, + "panelShouldHaveFullScreenActualSizeButton", + "nts__fullPhoneticName", + "plugInKeys", + "initWithRowCharRange:containerWidth:rowArray:collapseBorders:", + "imageByApplyingState:backgroundStyle:", + "indexOfItemWithRepresentedNavNode:", + "start:curve:", + "panel", + "versionHashModifier", + "_sizeOfTitlebarFileButton", + NULL, + "_isEnabledAndHasEnabledSubitem", + "progressIndicatorColor", + "_initWithParentObjectStore:", + "_clearUpdates", + "handleQuitScriptCommand:", + "_monitors", + "updateWindowForProgress:", + "runModalWithPrintInfo:", + "textContainers", + "reSetAcceptsMouseMovedEvents", + "containerIsObjectBeingTested", + "setValue:forBinding:atIndex:error:", + "setScrollZEnabled:", + "sourceHref", + "_coreUIDialCallbacksMap", + "setOperation:", + "sendAction:to:", + "_coreUICircularState:", + "initPropFindWithSession:withDepth:URI:lookingForProps:includingParent:", + "decrSize:", + "_endEditingIfNecessaryWhenSelectingRowRange:", + "_createRelationshipDescriptionForNode:", + "initWithFile:", + "setShowsCompositionNames:", + "_currentTableCell", + "_hasPublicAccess", + "resizeLeftRightCursor", + "currentVoiceIdentifier", + "dateValueYearless", + "_setImage:fromWindow:", + "previewView:didLoadPreviewForDocumentURL:", + "_isCached", + "bundleForCurrentNib", + "_setupOpenPanel", + "addCollection:", + "_backing", + NULL, + "_actualIndexForMouseEvent:", + "__layoutUpdated:", + "logMessage:", + NULL, + "decimalSeparator", + "objectValueInvalidationCapableObjectForObject:", + "_dispatchKind:", + "_requestTypeForOperationKey:", + "previewPanel:didShowPreviewForURL:", + "_searchFieldSearch:", + NULL, + "mountNewRemovableMedia", + "endRenderTextureAndFinish:", + "_dragParamsOfDividerAtIndex:", + "_scriptingInsertObjects:atIndexes:inValueForKey:", + "createProxyPortWithOriginalPort:forKey:", + "setEventsTraced:", + "_markMovementTrackingInfo", + "_isPendingDeletion", + "_updateSearchResultsCount:", + "drawImage:", + "wraps", + "setShouldCreateUI:", + "toggleKeepVisibleToolbarItem:", + "raiseWithStatus:", + NULL, + "reconcileToSuiteRegistry:suiteName:recordTypeName:", + "initWithCredentials:andOwner:", + NULL, + "panel:compareFilename:with:caseSensitive:", + "writePath:docInfo:errorHandler:remapContents:hardLinkPath:", + "variableExpression", + NULL, + "initializeButtonStructureAtX:y:forResolution:", + "initWithKey:mask:binding:", + "_populate:", + NULL, + "setMinColumnWidth:", + "_changeShadowBlur:", + "recordsMatchingSearchElementNoHinting:takeLock:", + "publicRecordClassForImplClass:", + "isPlaceholderForMarkerExplicitlySet:", + "scaleXBy:yBy:", + "localizedNameForKey:", + "_namespaces", + "_drawBorder:inRect:", + "_popState", + "_recentMenuItemTitlesFromLocationComponentChains:includingIcons:", + "_setWidth:", + "iconForFileType:", + "getNearestOutline:forDestination:", + "setRootNode:makeHistory:notify:", + "components:fromDate:", + "levelsOfUndo", + NULL, + "_postEventNotification:", + NULL, + "_parseText1Fast", + "_setLastSelected:", + "_removeNextPointersToMe", + "currentTaskIndex", + NULL, + "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:", + "uniqueID", + "pathExtension", + NULL, + "textView:shouldSetColor:", + "canDRMInteractWithUser", + "vendor3", + "initialSearchRow", + "valueForKey:withInputs:exists:", + "attributesForOutputPort:nodeIdentifier:", + "baseWritingDirection", + "_surfaceMoved:", + "allCompositions", + "dataWithData:", + "holeROI:forRect:userInfo:", + "pasteboardChangedOwner:", + "movieContentView", + "__patchActivated:", + "addCharactersInRange:", + NULL, + "_old_encodeWithCoder_NSTableColumn:", + "setObjectValue:", + "_syncToChangedToolbar:itemInserted:", + "_createCFAuthChallenge", + "invalidateRect:", + "lockAfterClicked:", + "_setDraggingMarker:", + "decodedObject", + "readFromData:options:documentAttributes:", + "setCurrentProgress:", + "nts_SendAddressBookDidSaveNotificationsWithPublicUserInfo:privateUserInfo:privateTablesChanged:", + "setInputImage:", + NULL, + "usesStrongWriteBarrier", + NULL, + "resetProfiling", + "isDying", + NULL, + "_setName:", + "supportedTextureBufferFormatsForManager:", + "attachColorList:", + "endSheet:", + "symbolCharacterSet", + NULL, + NULL, + "_glyphAtIndex:characterIndex:glyphInscription:isValidIndex:", + "_setAutoSize:", + NULL, + "removeObject:fromBothSidesOfRelationshipWithKey:", + "_dockDied", + NULL, + NULL, + "_newReplicatePath:ref:atPath:ref:operation:fileMap:handler:", + "_ql_validateURLSecureAccess:forPreview:", + "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:", + "compatibilities", + "_isUsingManagedProxy", + "URLToAddressWithScheme:andPort:URI:", + "abPeopleFromUniqueIdsWithAddressBook:", + "_helpBundleForObject:", + "_handleError:withError:", + "_lastDraggedEventFollowing:", + "_thumbnailLayerHitTest:", + "_autoResizeState", + "makeSearchFieldKey", + "quartzFilterManager:didSelectFilter:", + "allocBatch:withEntity:count:", + "stringWithoutAmpersand", + NULL, + "invalidateFocusedIndex", + "initWithBitmapData:bytesPerRow:size:format:options:", + "frameStartTime:", + "updateDisplayName", + "_elementFromTidyDoc:element:encoding:elementClass:nodeClass:", + "accessibilitySetSelectedRowsAttribute:", + "_close", + "_pulseFindIndicator:", + "outputVideoFrame:withSampleBuffer:fromConnection:", + "scanInteger:", + "newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:", + "_presetToCreateCA", + "createAllImagesFromData:options:", + "propertyNamed:", + "canConnect", + "resolveInstanceMethod:", + "browser:shouldTypeSelectForEvent:withCurrentSearchString:", + "_declaredKeys", + "_updateTrackingRects", + "setSelectedRange:affinity:stillSelecting:", + "initWithEntity:sqlString:", + "addSelectionCore:normalize:", + "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:", + "localURL", + NULL, + "initWithJPEGFile:", + "imageWithPDF:atSize:angle:center:intoRect:redB:greenB:blueB:redW:greenW:blueW:outlineLocation:outlineWidth:outlineOpacity:", + "realElementRect", + "ikMouseDown:", + "drawStrikethroughForGlyphRange:strikethroughType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:", + "_initWithSharedBitmap:rect:", + "_feSampler", + "_forceSetColor:", + "_nameFieldContentsAsPosixName", + "_applicableShowsFocus", + "prepareKeychainToSync:", + NULL, + "_rowEntryForChild:ofParent:requiredRowEntryLoadMask:", + "childAtIndex:", + NULL, + "_iconForOSType:creator:", + "_comparison", + "setFirstImageScheduled:", + "cascadeTopLeftFromPoint:", + "setupFilterChain", + "setOriginalImageSize:", + "groupingSeparator", + "_setTargetViewFrameRect:", + "initWithManager:resolution:", + "_drawDragImageCellAtColumn:row:withCellFrameUnion:", + "_addButtonWithTag:inFrame:", + "resizeFlags", + "resetCancelButtonCell", + NULL, + "configureForTreatsFilePackagesAsDirectories:", + "_setJobDisposition:savePath:inPrintSession:printSettings:", + NULL, + "autosaveTableColumns", + "comment", + "_windowWillShowToolbar", + NULL, + "_setAllowedClasses:", + "drawForLayerTime:displayTime:", + "graphWillStopForSession:dueToError:", + "_temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:", + "transactionDelegate", + "_setCursorForMouseLocation:", + "_resizeLeftRightCursor", + "setEraseColor:", + "setError:info:fatal:", + NULL, + "setOutlookWebAccessPath:", + "invalidateCachedCTM", + "menuForEvent:inRect:ofView:", + "orderedIndexAtIndex:", + "editedToolbar", + "toolTipTextColor", + "setPortMinValue:", + "primitiveCreationDateYear", + "allHeaderFields", + "setNumRowsToToggleVisible:", + "URLHandleResourceDidBeginLoading:", + "_rectOfColumnRange:", + "_defaultKnobColor", + "_minXTitlebarDecorationMinWidth:", + "_setLayerTreeRendererSurfaceGone:", + "focusRingType", + "_sizeButtonToFit:", + "instancesImplementSelector:", + "rootGraph", + NULL, + "setHiddenUntilMouseMoves:", + "_autoUpdateCellContents", + "_propertyDescriptionForKey:checkSubclasses:", + "allocWithZone:", + "initWithProperties:", + "_createMutableSetValueGetterWithContainerClassID:key:", + "initWithCondition:", + "_realNodeForNode:", + "endSubelementIndex", + "animationBlockingMode", + NULL, + "initWithDelegate:name:", + "allowsPrinting", + "accessibilityIsFocusedAttributeSettable", + "setBitsPerSample:", + "_setFrameCommon:display:stashSize:", + "_ql_waitForKey:toBeEqualTo:timeout:", + "isFilePackageAtPath:", + "setAlwaysVisibleWhenStopped:", + "markAsViewed:", + "systemInputPorts", + "_drawRatingWithFrame:inView:", + "addInkListToDictionaryRef:", + "removeCacheWithUID:", + NULL, + "_binderClassForBinding:withBinders:", + "defaultLineCapStyle", + "removeOutputUnitsForConnection:fromGraph:ofCaptureSession:", + "outlineView:itemForPersistentObject:", + "generalPasteboard", + "setVerticalPageScroll:", + "_setupPopUpButtonCell", + NULL, + "setImage:rect:", + "drawButton:inView:", + "titleForPerson:identifier:", + "setTypeDescription:forReconcilingToSuiteRegistry:", + "gotoNextItem:", + "attribute:atIndex:longestEffectiveRange:inRange:", + "_animationTargetRect", + "setPixelBuffer:cubeMapFace:mipMapLevel:currentVirtualScreen:", + "keyUpDelegate:", + "prepareForDifferentCard:", + "createDictHashTable:", + "_startRearrangementObservingForSuppressedContentObjects:", + "ISOCurrencyCodes", + "undoActionName", + "_setContentsDirtyForNodeWithIdentifier:", + "handleDelegateConfirmedSelection", + NULL, + NULL, + "moveToPoint:", + "correctBufferSizeWithSize:", + "convertPointFromWindowToView:", + "_scriptingArrayOfObjectsForSpecifier:", + "_updateNumberOfTitleCellsIfNecessary:", + "_dateStringToDraw", + "numSlices", + "filterBrowserViewWithOptions:modal:", + "deviceIDList:", + "_evaluateRelativeToObjectInContainer:", + NULL, + "_patchUpdated:", + "objectAtRunIndex:length:", + "__stateUpdated:", + "_updatevideoPreviewConnectionFromVideoPreviewOutput", + "startRenderingPatch:options:", + "setOriginalImageSizeCache:", + "setIndentationMarkerFollowsCell:", + "_newSortingFirstName", + "_rulerAccViewRightTabWell", + NULL, + "showItem:", + "_sharedSecureFieldEditor", + "setLocalizedName:", + "initWithBaseString:", + NULL, + "maxScaleFactor", + "mandatoryClient", + "convertViewPointToImagePoint:", + "_endListeningForSessionStatusChanges", + "registerPort:forName:", + "setPatchSetsTransform:", + "applicationDidFinishLaunching:", + "initWithStringsBundle:", + "sendsSearchStringImmediately", + "isRelationship", + "markedTextAttributes", + "provideNewView:", + "_displayNodes", + NULL, + "setValue:forStateKey:", + "_cleanUpForCarbonAppTermination", + "_getCharacters:length:fromKeyTranslation:", + "tableColumn:didChangeToWidth:", + "_findFirstUserSelectableRowStartingFrom:to:selectedRowsOkay:byExtendingSelection:", + "_old_readColorsFromGlobalPreferences", + "setPageOrder:", + "_hasCredentials", + "_sendMenuOpeningNotification", + NULL, + "_unlinkCIEffect:", + "_setDocModal:", + NULL, + "appendChild:", + "_shouldManageVisibilityOnlyIfVisible:", + "setNumberOfDataSourceItems:", + "createToOneJoinIntermediateForProperty:lastStep:inScope:context:", + "getInputBottomLineParams", + "playing", + "previouslyIndexedWindows", + "hasLearnedWord:", + "computeRowAtPoint:cacheHint:", + "selectDefaultRange", + "initWithType:error:", + "keyPathsForValuesAffectingPreview", + "_preflightChosenSpellServer", + "_initWithAccount:host:port:scheme:", + "initWithContainerClassDescription:containerSpecifier:key:uniqueID:", + "_protectionSpaceForURL:realm:", + "goToNode:", + "patternPhase", + NULL, + "dragImageForRowsWithIndexes:tableColumns:event:offset:", + "initWithDomain:eventCode:userInfo:", + "abRankOfPhoneNumberMatchingString:", + "checkCurrentVersionCompatibleWithCoder:", + NULL, + "_titleForSimpleQueryString:", + "initWithArray:", + NULL, + "_keyEquivalentForNode:", + "_labelPatternColorForLabelIndex:", + "orangeColor", + "ISS_initWithDirtyString:", + "shouldRefresh", + "_finalize", + "clearsFilterPredicateOnInsertion", + "_referenceBindingValue", + "deleteConnectionForKey:", + "_openCollections", + "addCustomGroupBox", + "rangeOfVisibleIndexes", + "_shouldMiniaturizeOnDoubleClick", + "setAllowsFileLoading:", + "IKStringFromSize:", + "_setMainWindow:", + "setPrimitivePhoneticFirstName:", + "_clearTemporaryAttributes", + "setExcellentEntropy:", + "initWithFrame:controller:", + "_updateSizeIfNeeded", + "setCurrentAnimationStep:", + "_initWithClassDescription:synonymDescription:", + "currentContext", + "commitPendingChanges", + "_setFileSpecifier:", + "continueTracking:at:inView:", + NULL, + "_animationDuration", + "updateRow:", + "setMarkupType:", + "_willInitWithCoder", + "reconcileToCarbonWindowBounds", + NULL, + "setForUseWithModel:", + "userDataRef", + "_distForGlyphLocation:", + "markedTextSelectionChanged:client:", + "setDestination:", + "validateForDelete:", + "_locationTemporary", + NULL, + "_observeKeyPathForRelatedBinder:registerOrUnregister:", + "_applyTargetConfigurationWithAnimationMoveAndResize:show:hide:", + "ramManager", + "doPageChangeAnimation", + "_scriptingDictionaryOfType:withDescriptor:", + "_childrenChanged:", + "initWithUTF8String:", + "setFormattingStringsFilename:", + "imageWithData:options:", + "setAcquireFunction:", + "automaticallyRearrangesObjects", + "previewView:didChangeDisplayStateForURL:", + "currentMigrationStep", + NULL, + "lockDocument", + "_isCurrentlyGapStyleDropTarget", + "renewRows:columns:", + NULL, + "keyFrameSelected:", + "showPicker", + "emailHasAssociatedCert:", + "setDisableHighlight:", + "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:", + "destinationOptionsForMigration:sourceMetadata:error:", + "bundlePath", + "phoneticLastName", + "_refreshList:", + "memberAtIndex:", + "currentFilter", + "_closeButtonOrigin", + NULL, + "stopPeriodicEvents", + "genericRGBColorSpace", + "navNode", + "updateTrackingAreaWithFrame:inView:", + "abBackupPath", + "initWithObject:animation:", + "setTXTRecordData:", + "keys", + "_vCardRepresentationAsString", + "_getTitleSize", + "findPreferredLanguage", + "_forwardEvent:location:", + "_writeStringInRange:toPasteboard:", + "directoryCanBeCreatedAtPath:", + "replacementObjectForPortCoder:", + "quickTimeVersion", + "__performUndo3:", + "_menuFormRepresentationForOverflowMenu", + NULL, + "getAttrValuePtrForTypeNode:value:", + "_hasActiveAppearance", + "drawBackgroundInRect:inView:highlight:", + "keyEquivalentFont", + "_copyCacheWithFunction:userInfo:userInfoReleaseCallback:md5List:md5Indices:md5Count:", + "fastDrawString:attributes:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:", + "_enabled", + "setOptimizesParameters:", + "_makeMiniView", + "removeObjectAt:", + "_setContentRect:", + "_delayedWriteColors", + "initWithName:appleEventCode:fieldDescriptions:isHidden:presentableDescription:", + "initWithDictionary:copyItems:", + "_recalcSubviews", + "accessibilityCloseButtonAttribute", + "indexOfLastSpecialGroup", + "setBulletCharacter:", + "tabletEvent", + "baselineThreshold", + "baselineDeltaForCharacterAtIndex:", + NULL, + "deserializeString:", + "_setEditOnSingleClick:", + "attributedStringForNil", + "_detachListener", + NULL, + "_darkBlueColor", + "_startObservingModelObject:", + "_toolTipRectForCell:withFrame:", + "numberOfRangesOnPage:", + "stringFromNumber:", + NULL, + "_getPositionFromServer", + "creator", + "nts_ParentGroups", + "isZoomed", + "_primitiveTypeDescription", + "dateWithYear:month:day:hour:minute:second:timeZone:", + "marshalEvent:obj:obj2:", + "toManyRelationships", + "_isReservedWordInParser:", + "_restoreExpandedState", + "_doEditOperation:", + "_handleMouseMovedForEvent:withFrame:inView:", + "purpleColor", + "proxyPropertiesForURL:", + "_savedDelegate", + "shouldLoadAttributes", + "_indexOfColonInString:", + "rectOfPathComponentCell:withFrame:inView:", + "customizationPaletteIsRunning", + "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:", + "setHasUndoManager:", + "startupImages", + NULL, + "selectMemberRow:subrow:byExtendingSelection:", + "drawHighlightWithFrame:inView:", + "IKIPDrawNicelyScaledInRect:operation:fraction:", + "resolveWithTimeout:", + "modalWindow", + "grabberImage", + NULL, + "dragColor:withEvent:inView:", + "_setOwnsRealWindow:", + "_pointWithinBounds:", + "_finalize_QCImageKernel", + "findPreviousOccuranceOfAttributeNamed:startingRange:", + "setRelevance:", + NULL, + "greenROI:destRect:", + "__graphDidChange:", + "_shouldPowerOff", + "doubleAction", + "_recursiveGainedHiddenAncestor", + NULL, + "initWithTypefaceInfo:key:", + "_doUserSetListMarkerFormat:options:inRange:level:", + "addEffectWithName:type:position:", + "IKViewWillResignFirstResponder:", + "tableView:willDisplayCell:forTableColumn:row:", + "_finishMessagingClients:", + NULL, + "nicestRenderingDelay", + "setColorRenderingIntent:", + "isRegularToolTipVisible", + "positionAtIndex:", + "removeTableColumn:", + "didPerformMigrationWithManager:", + "initWithWindowRef:", + "initWithFireDate:interval:target:selector:userInfo:repeats:", + "shortStandaloneMonthSymbols", + "_setTabView:", + "animation:valueForProgress:", + "infoForFilesInContainer:andReturnResultCode:", + "setHasThousandSeparators:", + "enterSlideshowFullScreenWithStartRect:", + "cachedResponse", + "_ignoreGrammarFromMenu:", + "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", + "superentity", + "valueTypeForDimension:", + "trackEnumerator", + "_setEffects:", + "nts_ImportMacBuddyMeCard", + NULL, + "_setCallbackHandler:", + "_hideAllDrawers", + "_addImageToCache:", + "_setKeySegment:", + "dateControlFrame", + "_trimRegionInvalidatedDuringDisplayToRectsJustDrawn", + "_thread:", + "doClick:", + "prefersEnabledOverEditable:", + "createTextLayer", + "chooseFormat:", + "browser:nextTypeSelectMatchFromRow:toRow:inColumn:forString:", + "_accessibilityMinValueWithoutCollapsing", + "provideImageTexture:bounds:userInfo:", + "_knownEntityKeyForObjectID:", + "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:", + "closeDataFile", + "registerWithCFURLProtocol", + NULL, + "_fireFirstAndSecondLevelFaultsForObject:withContext:", + "checkAndMarkMipmapAsInvalid", + "addColumn", + "getMatrixFrom:toPatch:matrix:ignoreWithin:includeFromTransform:", + "readFromFileWrapper:ofType:error:", + "_showField:identifier:", + "_shouldUseAliasToLocate:", + "currentPoint", + "layoutAlgorithm", + "originalImageName", + "setUsesPreferredLanguage:", + "_desiredLayerBounds", + "authenticationMethod", + "propertyName", + "setOscPortsConfiguration:", + "_addSpellingAttributeForRange:", + "_stopAnimation", + "expressionForSubquery:usingIteratorVariable:predicate:", + "_getDirtyRects:clippedToRect:count:boundingBox:", + "updatePoofAnimation", + "valueTransformerForBinding:", + "tiltAngle", + "appSmartFoldersNode", + NULL, + NULL, + "isCachedSeparately", + "slideshowDontExportToiPhoto:", + "initWithPixelFormatAttributes:options:", + "_copyOfCustomView", + "currentInputSourceBundleID", + NULL, + "coachMarkExpired:", + "setupCarbonMenuBar", + "manyToManyRelationships", + "_updateReadyStatus", + "descriptionForOptionalSubelementName:", + "iDiskNode", + "getHyphenLocations:inString:wordAtIndex:", + "init", + "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:updateItems:", + "_updateDockWindowIDAndDisplayIfNeeded:", + "setMinNumberOfRows:", + "session:addAuthHeaderToMessage:", + "filterChainChanged:", + "setRecentSearches:", + "_updateForVersion:", + "_registerForClipBoundsDidChangeNotificationIfNecessaryForSuperview:", + "objectInInputImageAtIndex:", + "orderFrontStandardAboutPanel:", + "_printerForPrinter:", + "_handleRootNodeChanged", + "_web_HTTPStyleLanguageCode", + "_shouldTerminateWithDelegate:shouldTerminateSelector:", + "unbindNonManagedItems", + "_sendBindingAdapterWillDisplayCell:forColumn:row:", + "setNotShownAttribute:forGlyphAtIndex:", + "_dragLocalSource", + "_parseArchivedList:", + "addScaled:", + "moveUpAndModifySelection:", + "_alreadySpecifiedCertAuthorityValues", + "initWithAnimation:progress:start:", + "_keyViewPrecedingPickerViews", + "setWantsToBeColor:", + "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:", + "_dataSourceRespondsToSortDescriptorsDidChange", + NULL, + "registerNSTags:withNamespace:", + "initWithImageProxy:", + "_initWithPath:bundle:", + "_transferCache:", + "_loadImageWithName:", + "setDouble:forKey:", + "isKeyWindow", + "settingsView:setSetting:forKey:", + "startProfiling", + "initWithObserver:name:object:", + "_okToStartTextEndEditing", + "criteriaForRow:", + "isFauxDisabled", + NULL, + "setMouseTracker:", + "deleteProxyPortForKey:", + "replaceIndexReferenceModelObjectArrayWithEqualCopy:", + "addressBookLockFile", + "beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:certificates:showGroup:", + "_arrowsConfig", + "_finalizeWithReferenceCounting", + "_adjustFocusRingLocation:", + "_unicodeTextEventFromString:", + "_writeCharacters:range:", + "setValues:forParameter:", + NULL, + "ISS_uri", + "hasCacheForUID:withSize:", + NULL, + "typeDescription", + NULL, + "initWithRole:parent:tableView:row:", + "_setNextSizeAndDisplayMode", + NULL, + "_web_URLByRemovingLastPathComponent_nowarn", + "setSelectedTextAttributes:", + "addAddress:stringAttribute:endOfRange:", + "parseForBasicPropertiesWithByteOrder:", + "_collectApplicableUserInfoFormatters:max:", + "removeTrackingRects", + "setPlaceholder:forMarker:isDefault:", + "textRectForControlView:cellFrame:", + "performOperationUsingObject:andObject:", + "_drawnByAncestor", + NULL, + "_showsControlCharacters", + "initWithContentRect:comboBoxCell:", + "_scriptingTypeDescriptor", + "addBookmark:", + "isEdited", + "_distanceInNonDragDirectionBeforeAbortingDragAttempt", + NULL, + "scrollerWidthForControlSize:", + "isSeparatorItem", + "persistentStoreTypeForFileType:", + "referenceBinder", + "scriptingIsEqualTo:", + "insertNewlineIgnoringFieldEditor:", + "localizedDescriptionForFilterName:", + "primaryKeyForEntity:", + "launchWithDictionary:", + "_isManagedController", + "IK_PNGRepresentationWithCompressionFactor:", + "animationStep:", + "renderImageWithCIPipeline:inRect:", + "onStateValue", + "addressBookSaveFile", + "setMinValue:", + "menu:updateItem:atIndex:shouldCancel:", + "_reconfigure", + "popupViewClose:", + "waitForThreadsToFinish", + "columnWidthForColumnContentWidth:", + "initWithString:nodeType:", + "subtitleFrame", + "glyphIndexForPoint:inTextContainer:fractionOfDistanceThroughGlyph:", + "deleteKey:", + NULL, + NULL, + "_markColumnWidthsNotYetCompared", + "_usesToolTipsWhenTruncated", + "setOpenGLEnabled:", + "allowsCopying", + "_disableSelectionPosting", + "_allowsEmptyCompoundRows", + "nodeResignsFirstResponder:view:", + "_chooseBestMatchingFace", + "inputContext", + "_setBlockCapacity:", + "determineCharacterSetSizes", + "_doOpenInSeparateWindow:model:", + "_postRuntimeError:", + "setBidiProcessingEnabled:", + "peopleAtRemoteLocation:", + "isMaster", + "_coreUILinearBarFocusStyleWithView:", + "colSpan", + "rangeValue", + "subpathsAtPath:", + "_addSubfieldsForICUDateFormatString:", + "layoutControls", + "_internalNextTypeSelectMatchFromRow:toRow:inColumn:forString:", + "_bundleForClassPresentInAppKit:", + "_isUtilityWindow", + "_postDidFinishNotification", + "gutterBoundsForPage:", + "_containerViewOfTitles", + "_rebuildGraph", + "refreshAfterUndo:", + "currentBrowsingNodePath", + "arrayWithContentsOfFile:", + "_addAnimatedColumn", + "_scriptingObjectCountInValueForKey:", + "selectionFromPoint:toPoint:", + "_acceptExpressions:flags:", + "isProgrammable", + "adjust:brightness:andContrast:", + "_coreUIIsFocused:", + "innerRect", + "_sortByIdentifiers:", + "dragOperationForDraggingInfo:type:", + "makeSmall", + "_scheduleAnimationTimer", + "createVisualContext", + "cellIndexesAtLocation:", + "makeWindowControllers", + "noteFontCollectionsChanged", + "registerCallbackObserver:", + "doAwakeFromNib", + "goToPreviousPage:", + NULL, + "startWaitCursorTimer", + "_adjustLineScrollWithSnap:", + "_updateProxySettings", + "setRulerViewClass:", + "_isInUILayoutMode", + NULL, + "adapterOperations", + "drawTextureWithContext:inRect:", + "_displayName:", + "_invalidateKeyToIndexTable", + "setPercentSymbol:", + "isValidOnContext:", + "setPaperName:", + "initWithFontDescriptor:", + "_unregisterForToolbarNotifications:", + "_metadataXML", + "encodeValue:forKey:intoDictionary:", + "sharedCertificateTrustPanel", + "drawDisclosureGroupHeader:inRect:", + "registerNodeWithName:constructor:instantiateSelector:attributesSelector:info:", + "_showAllInsertionPointsForGlyphRange:atPoint:", + "accessibilitySetSelectedText:", + NULL, + "tightenKerning:", + "setMinimumDaysInFirstWeek:", + "_importThreadBegan:", + "frameForElementAtIndex:", + NULL, + "_fixSharedData", + "_modelAndProxyKeysObserved", + "setMarkers:", + "outputFormat", + "setTitles:", + "canWrite", + "fade", + "rowForUpdate", + "_showQueryProgress", + "setAllowsExpandingMultipleDirectories:", + "_documentInfoDictionary", + "_getLocalizedLabels:andLocalizedValues:", + "_updateFocusRingsForOldLastSelectedRow:", + "bezierPathWithRoundedRect:xRadius:yRadius:", + "_setAppleUseCoreUI:", + "setFreeFormLayoutMode:", + "isUniform", + "addTypePopupWithTypes:popupExtension:saveType:saveCreator:optionFlags:", + "_bindAncestorNamespaces", + "setCustomizationSheetWidth:", + "initWithThumbnailSize:", + NULL, + "initWithRemoteName:", + "updateFilter:withParameters:", + "_setValue:forKeyPath:ofObjectAtIndex:", + "_forceUpdateDimpleLocation", + "reflectionWithInitialAlpha:height:", + "slideDraggedImageTo:", + "_canAcceptRichText", + "isList", + "initTextCell:pullsDown:", + "setTextAttributesForNegativeValues:", + "setAttributedStringForNil:", + "changeBaseWritingDirection:", + "webScriptNameForSelector:", + "sharedIconCache", + "ikKeyDown:", + "getObjectValue:forString:range:error:", + "rightMouseUp:", + NULL, + "createCurrentImageFromView:", + "alphaControlAddedOrRemoved:", + "userAction", + "_refreshSuspendedAttributeFromCallback", + "_reconcilePrintSessionAttributes", + "_menuItemClick:", + "screens", + "_untitledDocumentNumber", + "setCornerView:", + "initWithRole:parent:goesNext:", + "_unmapRunLoop:", + "nts_SaveAndTriggerSync:updateModificationDate:", + "initWithDomain:type:name:port:", + "IKPBVRamManagerDomainForResolution:createIfNotExisting:", + "thumbnailQuality", + "setFromValue:", + "searchAttributes:allowBinary:", + "destroyArrays", + "_pathLength", + "window:willPositionSheet:usingRect:", + "previewView:gotDocumentPreview:forURL:", + "nts_AddMember:toGroup:", + "nts_syncGroupSmartGroupPropertiesWithLock:", + "setDestinationEntityExternalName:", + "setDocumentAttributes:", + "handleCocoaWindowEvent:callRef:", + "setTextStorage:", + "QTTimeRangeValue", + "_descriptionValues", + "backgroundIsDark", + "_userCanSelectAndEditTableColumn:row:", + "minItemSize", + "__deselect:context:", + "coerceTextStorage:toString:", + "_isGroup:parentOfAllMembers:", + "_setCurrentInputFilepath:", + "_displayDelayedMenu", + "_selectedCrayon", + "dsNodeReference", + "containsKey:", + "indices", + "pathControl:willPopUpMenu:", + NULL, + "_firstPresentableName", + "titlePosition", + NULL, + "registerPluginClass:forObjectClass:andBinderClass:", + "appearance", + "_wsmOwnsWindow", + "isInert", + "sharedPreviewView:willStopSharingWithPreviewPanel:forURL:", + "accessibilitySetSelectedAttribute:", + "undoAttributes", + "_getSourceListColorFor:startColor:endColor:bottomColor:", + "cellIndexesInRect:", + "addItemsWithTitles:", + "cacheDepthMatchesImageDepth", + "validateAccess", + "addOperation:", + "writeToConsumer:withOptions:", + NULL, + "_keyFrames", + "setIntegrate:", + "switchedToIndexMode", + "initWithCapacity:origin:image:yOffset:", + "mapRepresentationIntoRAM:", + "ageStatisticsForIndex:", + "drawWithRect:options:", + "importToValueSetter:", + "drawThemeContentFill:inView:", + "draggedImage:endedAt:operation:", + "accessibilityAttributeValue:", + "proxyData", + "_bindingInfoForBinding:", + "_rename:", + "dataSource", + "_endTableCell", + "setDelegate:", + "joinsForRelationship:", + "_scriptingDescriptorOfValueType:orReasonWhyNot:", + NULL, + "isSharedInstance", + "_setNoDataConnections:", + "_applicableLabelsArrayForDisplayMode:isInPalette:", + "_attributedStringFromDescriptor:", + NULL, + NULL, + "updateLanguagesFromDefaults", + "startSpeaking:", + NULL, + "_documentViewAlignment", + "closeSidebar:", + "_selectFromIndex:toIndex:scrollIndexToVisible:", + "_unregisterForCompletion:", + "accessibilityIsFrontmostAttributeSettable", + "setDefaultImage:", + "_diskCacheDefaultPath", + "imagingModeForced", + "_makeHODWindowsPerform:", + "_outlineTableColumnIndex", + "removePointer:", + "newCount:", + "_markCursorRectsForRemovedView:", + "_createCA", + "systemColorsDidChange:", + "_clearMouseTracking", + "insertDoubleQuoteIgnoringSubstitution:", + "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:", + "_flushAnimations", + NULL, + "handleOpenScriptCommand:", + "outlineViewShouldSlideBackAfterDragFailed:", + "fileHandleWithNullDevice", + "intersectSet:", + "_startHeartBeating", + "initWithManyToMany:fk:invfk:", + "initWithResponseClass:", + "elementName", + NULL, + "setOutputPortOrder:forKey:", + "GFArrayEnumerator", + "_deferredWindowChanged", + "_clearDirtyRectsForTreeInRect:", + NULL, + "yAtRow:", + "executeAndReturnError:", + "calculateFigureCenter:", + "invalidateCoreGraphicsImage", + "_jumpToHereMode:", + NULL, + "_sanityCheckPListDatabase:", + NULL, + "_setDecipherOnlyUsage:", + "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:", + NULL, + "_unsetInputs", + "keyPathForBinding:", + "descriptionForClassMethod:", + "objectInInputRampParamsAtIndex:", + "__ikVisibleRect", + "getExternalMovie:", + "insertSublayer:atIndex:", + "operations", + "initWithOperatorType:modifier:", + "isAnIcon", + NULL, + "deserializeInts:count:atCursor:", + NULL, + "_handlesSelectAll", + "setIgnoresAntialiasThreshold:", + "_keyFrameAtIndex:", + "getResolutionData:labelMetricsTop:left:bottom:right:baselineY:", + "resetToolMode", + "paramDescriptorForKeyword:", + "_scrollPoint:fromView:", + "_endColumnAnimationOptimization", + "initWithACENode:", + "setAcceptsDrop:", + "dragImageForRows:event:dragImageOffset:", + "stalenessInterval", + NULL, + "_valueBuffer", + "max", + NULL, + "drawSelectionAroundTextRect:", + "handleMouseDownEvent:at:inPart:withMods:", + "_windowSideTitlebarTitleMinWidth:", + "setMaxAnimationFrameRate:", + "_setCertAuthorityBasicConstraintsPresent:", + NULL, + "setAnimationDelay:", + "_configureAndDrawTitleWithRect:cellFrame:", + "willOpen", + "_stripAttachmentCharactersFromAttributedString:", + "addToDirectoryResults:", + "editPerson:", + "performRubberBandingWithEvent:", + "accessibilityIsValueAttributeSettable", + "navNodeWithQueryString:searchScopes:title:", + "imageFlow:didLoadItemAtIndex:", + NULL, + "documentContentKind", + "componentsSeparatedByCharactersInSet:", + "_drawThemeComboBoxButtonWithFrame:inView:", + NULL, + "_URL", + NULL, + "browser:canDragRowsWithIndexes:inColumn:withEvent:", + "initWithMetadataManager:recordUniqueIds:", + "_isStrictByParsingExcludedElements", + "_updateGrammar", + "peoplePickerView", + "_opaqueRect", + NULL, + "_didImportCellsAtIndexes:", + "objectInstanceDescription", + "_chooseFace:", + "_includeObject:intoPropertyWithKey:andIndex:", + "_enableEnablingKeyEquivalentForDefaultButtonCell", + "fileHandleWithStandardInput", + "_clearDeletions", + "isOnLocalHost", + "onSliderMouseDown:event:", + "addObject:toBothSidesOfRelationshipWithKey:", + "_sweepDirectionForGlyphAtIndex:", + "_insertionOrderForPicker:", + "_widthOfPackedGlyphs:count:", + "_validatedPosixName", + "creationDate", + "_inTexturedWindow", + "shouldReportNamespacePrefixes", + NULL, + "dataWithEPSInsideRect:", + "_backstopView", + "SFElement", + NULL, + "materialWarp:pull:choke:edge:flat:", + "copyStream:to:length:", + "logs", + "_setNeedsDisplay:", + "updateSpellingPanel", + "_characterIndexForMoveLeftFromCharacterIndex:", + "serialize", + NULL, + "_invalidateForLiveResize", + "rectForPage:", + "startSync", + "_setCustomAreaSize:", + "_setUpAppKitTranslations", + "trackScrollButtons:", + "_web_looksLikeIPAddress", + "_unbind:", + "sendEOF", + "volatileRepresentation", + "_doneLoadingImage:", + "_genericValueForKey:withIndex:flags:", + "members", + NULL, + "addSubItem:", + "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:", + "saveToPath:", + "_inLiveResize", + "addPropertiesAndTypes:withAddressBook:acquireLock:save:", + "setShowsBaselineSeparator:", + "defaultBackupFileNameConvertingFromHFSToPosix:", + "showsBorderOnlyWhileMouseInside", + "normalSpeakingRate", + "_savedMode", + "initWithContentsOfFile:encoding:error:", + "shadowFrom:red:green:blue:opacity:", + NULL, + "_writableTypeForType:saveOperation:", + "statusStringForCode:domain:", + "defaultRenderingOptions", + "indexAtLocationOfDroppedItem", + "loadOurNib", + "setTextColor:", + "_imageFromNewResourceLocation:", + "makeObjectsPerformSelector:", + "addModificationDateToDictionaryRef:", + "descendsFrom:", + "_hideLanguagePopUp", + NULL, + "resetCommunication", + "convertRectFromFrameToBounds:", + "_drawerLeftOffset", + "_collectionsChanged:", + "colorWithString:", + NULL, + "_drawFrameInterior:clip:", + "boundsForTextCell:", + NULL, + "setNegativeInfinitySymbol:", + "undoMenuItemTitle", + "setLevelsOfDetail:", + "initWithName:host:", + "_offset", + "valueHandler", + "_sendEventToThreadLocked:", + NULL, + "_potentialMaxSize", + "_drawFrameShadowAndFlushContext:", + "_setSessionData:", + "initWithFrame:", + "nameColumnTag", + "_visibleItemViewers", + "_initValueTransformers", + "animationResizeTime:", + "writePluginInformationIntoDictionary", + "_autosaveRecordPath", + NULL, + "imageFlow:startResizingWithEvent:", + "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:", + "_cfindexOfObject:range:", + "initWithPredicate:inScope:", + "_web_RFC1123DateString", + "keyPathExpressionForString:", + "_undoManager", + "pageOrder", + "_shouldHighlightCellWhenSelected", + "_addToTypingAttributes:value:", + "setTargetValue:forObject:keyPath:duration:", + "_scriptingTypeWithDescriptor:", + "decompressionSessionOptionsForConnection:", + "decimalNumberByMultiplyingByPowerOf10:withBehavior:", + "infoWithAddressBook:", + "shownValueInObject:errorEncountered:error:", + "_shouldEnforcePixelAlignment", + "_inputPorts", + "_registerExtraFunctions", + "_setUpAutomaticRearrangingOfObjects", + NULL, + "setContinuousSpellCheckingEnabled:", + "poolCountHighWaterResolution", + NULL, + "isEqualToData:", + "removeObject:fromPropertyWithKey:", + "titleFrameOfColumn:", + "isSteppable", + "_indexForMoveLeft", + "_growFrameForDropGapStyleIfNecessary", + "setLaunchPath:", + "_createPixelBufferFromImageBuffer:bounds:needsClipping:flippedState:options:", + "_allowsScreenFontKerning", + "loadNSImageNamed:fromBundle:into:", + "_audioCompleted1", + "_undoDeletionsMovedToUpdates:", + "initWithShort:", + "setMessageText:", + NULL, + "_predicateRestrictingSuperentitiesForEntity:", + "_preferredFocusLocationMask", + "registeredObjects", + NULL, + "_defaultTimeout", + "_setObject:forAttributeKey:", + "setAllowedInputSourceLocales:", + "appendBezierPath:", + "hasGizmo", + "setJavaEnabled:", + NULL, + "_abCompareNotWithinIntervalAroundToday:", + "_setMultipleValue:forKeyPath:atIndexPath:", + "_initFromRangeRecord:", + "filter:valueForKey:", + NULL, + "mouseMovedDelegate:", + NULL, + "initUnlockWithURL:lockToken:", + "setDatabaseOperator:", + "fogShader", + NULL, + NULL, + "fontNameWithFamily:traits:weight:", + "IKSlideshowWrapAround", + "_bidiLevels", + "export:", + "respondsToProperty:", + "indexOfSegmentContainingPoint:inCellFrame:", + "objectValues", + "_alwaysDrawsActive", + "setImageAlignment:", + NULL, + "eventSize", + "deserializeList:", + "initWithContainerClassDescription:containerSpecifier:key:", + "isUsableWithObject:", + "resizeEdgeForEvent:", + NULL, + "archiver:willEncodeObject:", + "shadeColorWithDistance:towardsColor:", + "openWithFinder:", + "_windowResizeBorderThickness", + NULL, + NULL, + NULL, + "_setCurrentThread:", + "_gray221Color", + "windowWillChangeFrame:toFrame:", + "indexOfObject:range:identical:", + "initWithRect:", + NULL, + "initWithGroups:addressBook:", + "_setDefaultItems:", + "setShouldAntialias:", + "writeInt:", + "initWithPasteboardDataRepresentation:", + "setMipmapItem:", + "dragFile:fromRect:slideBack:event:", + "_setObject:forProperty:usingDataSize:", + "commandDescriptionsByName", + "removeChapters", + "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:", + "selectedTextBackgroundColor", + NULL, + "newCreateTableStatementForManyToMany:", + "setPanelType:", + NULL, + "contentResizeIncrements", + "scrollStepInDirection:", + "reloadCriteria", + "setProperties:", + "pasteAsPlainText:", + NULL, + "_updateDependenciesWithPeerBinders:", + "noteNewRecentDocument:", + "currentTask", + "removeFromWindow:", + "_populateReplyAppleEventWithResult:", + "initWithIncrements:parent:", + "initRemoteWithProtocolFamily:socketType:protocol:address:", + "_currentLocalMousePoint", + NULL, + "_removeAllToolTips", + "extensions", + "setAllowsOpenGLAcceleration:", + "openTempFile:", + "_createMatrixRowsAndColumns", + "setTightenThresholdForTruncation:", + "_createMenuItemWithTitle:", + "_getRestOfFile", + "setAllowEditing:", + "_countWithNoChangesForRequest:error:", + "_printerInPrintSession:", + "didChangeValueForKey:forIndexes:", + "_filenameForCollection:", + "_bezelBottomOffset", + "_expandedCFCharacterSet", + "_validateLinkTargetSpecifier", + "cropPRS", + "_setExcludedFromVisibleWindowList:", + "waitUntilAllOperationsAreFinished", + "setClassDescription:", + "cancelPerformSelector:target:argument:", + NULL, + "invalidateCredentials:", + "_sendDataSourceSetObjectValue:", + "accessibilityIsParentAttributeSettable", + "nextSingleByteBase64Line:", + "removeDescriptorWithKeyword:", + "accessibilityIsSelectedRowsAttributeSettable", + "_mouseActivationInProgress", + "setIntAttribute:value:forGlyphAtIndex:", + "_newLazyRepresentation:::", + NULL, + "autosaveCache", + "_addRangeToArray:", + "_moveDownAndModifySelection:", + "hour", + "temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:", + "timeDateFormatter", + "decodeNXObject", + "_resizeRightCursor", + "_drawRoundedBorder:radius:mapRadius:groupType:texOut:texIn:lineWidth:", + NULL, + "nts_ValueInTemporaryCacheForProperty:", + "initWithQCImageBuffer:options:", + "_setForceTailTruncation:", + "_setSuppressNotification:", + "accessibilityWindowsAttribute", + NULL, + "_delayedFreeRowEntryFreeList", + "_newLegalSizeFromSize:force:roundDirection:", + "_contentToFrameMinXWidth:", + "decimalNumberByMultiplyingBy:", + "unionWithRect:", + "localeIdentifier", + "scalingFactor", + "ensureGlyphsForGlyphRange:", + "_countDisplayedDescendantsOfItem:", + "_getRidOfCacheAndMarkYourselfAsDirty", + "_alignCoords", + NULL, + "minWidth", + "insertionContainer", + "_forceUpdateCompositions", + NULL, + "initWithCharacterRange:isSoft:", + "_setDocumentPreview:", + "createPillBezier:inContext:", + "pictureTaker:willPopupRecentItems:", + "maxRenderingSize", + "_stringForRepresentedObjects:", + "_doResizeDrawerWithDelta:fromFrame:", + "timeMachineController", + "setCancellationDelegate:wasCancelledSelector:contextInfo:", + NULL, + "_isHelpMenu", + "setIsInPriorityList:", + "_effectiveCalendar", + "MIMETypeForExtension:", + "coreFindString:", + "abortTakePicture", + "directoryDataHasArrived:", + "netServiceDidPublish:", + "beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:", + "setSource:", + "_grayHighlightColor", + "description", + "_layoutTabs", + "_generateSQLForConst:inToMany:inContext:", + NULL, + "setModalDelegate:", + "connection:didReceiveResponse:", + "output", + "_setLetOverrideDefaults:", + NULL, + "inputSourcesFromInputSourceLocales:", + "columnAtX:", + NULL, + "getFileSystemRepresentation:maxLength:withPath:", + "setTitleWithMnemonic:", + "knownKeyValuesPointer", + "invalidateCacheAndStorage", + "sharedMemory", + "accessibilityColumnsAttribute", + "quartzfilter", + "scriptingColorWithDescriptor:", + "_updateAntialiasingThreshold", + "setSelectedComposition:", + "_initWithOutput:", + "elementWithName:", + "CA_encodeObject:forKey:conditional:", + NULL, + NULL, + "makeImmutable", + "_characterIndexForMoveWordRightFromCharacterIndex:", + NULL, + "setMasksToBounds:", + "validateForInsert:", + "typeOfCustomProperty:addressBook:", + "draggedImageForFreeFormLayoutWitClickedPoint:hotPoint:", + "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:", + NULL, + "enumeratorOfInputTopLine", + "_propertyDescriptionForKey:checkSubclasses:superclasses:", + "editCard:", + "_accessibilityValue", + "checkForGLError", + "_setLocalName:", + "_splitView", + "_attachmentAtGlyphIndex:containsWindowPoint:", + "accessibilityIsDescriptionAttributeSettable", + "quickTimeMedia", + "searchForString:inBooks:withResponseTarget:options:", + "setCanChooseDirectories:", + "initWithMachPort:options:", + "nextToken", + NULL, + "setIrisClosed:", + "insertSegmentOfTrack:fromRange:scaledToRange:", + "clipToQDRegion:", + "viewGRLWithView:withParent:", + "_titleIsRepresentedFilename", + NULL, + "_setCARenderAnimation:", + "_finishHideAnimation", + "download:didCancelAuthenticationChallenge:", + "setGraph:", + "_createMutableArrayValueGetterWithContainerClassID:key:", + "isSharedWithContext:", + "_reallyChooseGuess:", + "screenRectCG", + "typeOfProperty:forTable:", + "registerServicesMenuSendTypes:returnTypes:", + "backingReleaseCallback", + "_contentView", + "sourceInstancesForEntityMappingNamed:destinationInstances:", + NULL, + "initWithOptions:capacity:", + "initRootWithKey:withGRLIndex:", + "numberWithUnsignedLong:", + "initWithArray:forTarget:withReferenceValues:andRange:andCopyItems:", + "setPassphrase:", + "minimalSharedContextForCurrentThread", + "__isRoomWellLit:size:bpr:skipFirstComponent:spp:", + "__addToSelection:context:", + "boundsForPage:", + "_findLastFieldLabelforAttribute:startingAt:", + "archivedDataWithRootObject:", + "removeClassDescriptions:", + "_loadFromQueryData", + "decrDBRetainCount", + "recipeDifference:with:", + "mergeFontFeaturesInto:", + "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:", + "_usesFastJavaBundleSetup", + "_insertStatusItem:withPriority:", + "_drawDebugRange:withOffset:", + "setNextUndoManager:", + "closePanel", + "maxDate", + "pushDestination:", + "_userLoggedOut", + "setThumbnailsFitOnScreen:", + "_helpWindow", + "registerUndoWithTarget:selector:object1:object2:object3:object4:", + "_undoRedoInProgress", + "_initWithNib:", + "_setLastHitView:", + "_noise2d:y:min:max:", + "selectedObjects", + "_calcOutlineColumnWidth", + "valueForTag:", + "_preEventHandling", + "smartInsertDeleteEnabled", + "setCharactersToBeSkipped:", + "splitterWithIndex:parent:", + "_updatePreview", + "adjustScroller", + "_deactivateOverlayControls", + "_indexSheetTransitionFrame", + "minimumSignificantDigits", + "selectIntermediate", + "_removeExtension:", + "_invokeMultipleSelector:withArguments:onKeyPath:atIndex:", + "_recursivelyPropagateCocoaDirtyRectsToCarbonForHIView:", + "evaluatePredicates:withObject:substitutionVariables:", + "setMovieAttributes:", + "contextHelpForObject:", + "_drawRect:liveResizeCacheCoveredArea:", + "removeTemporaryAttribute:forCharacterRange:", + "_drawDelegate", + "makeDocumentWithContentsOfURL:ofType:error:", + "_historyControlCell", + "rowCountRange", + "_fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:", + "sortingFirstName", + "setCurrentTab:", + "trackID", + NULL, + "_loadPreviewSucceededForDocumentPreviewView:", + "canStoreColor", + NULL, + "_sumForKeyPath:", + "selectKeyViewPrecedingView:", + "setAlternateParentClass:", + "noteRollOverPath:", + "windowChangedMain:", + "numberWithUnsignedLongLong:", + "colorWithColor:", + "netService:didNotPublish:", + "doubleValueOfProperty:", + "_oldFontSetNames", + "_expandItemEntry:expandChildren:startLevel:", + "setShowsBorderOnlyWhileMouseInside:", + "_updateSelectionIndexPaths:", + "deliverResult", + "_validateObjects:forOperation:error:exhaustive:forSave:", + "wantsToDrawIconIntoLabelAreaInDisplayMode:", + "hasHiddenParts", + "getProperties", + "addressBook", + "numberWithLongLong:", + "setAlignmentRect:", + NULL, + "_growFrameForDropGapStyle", + "_timerFired:", + "setDestinations:forRelationship:", + "_cfAppendCString:length:", + "dataLength", + "setMovable:", + "_preloadWithQuality:", + "dictionaryWithCapacity:", + "setQCComposition:", + "purgeExtras", + "processCDATA:", + "loadData:MIMEType:textEncodingName:baseURL:", + "_addTargetAnimation:start:atProgress:", + "drawerDidOpen:", + "mouseDraggedOnCharacterIndex:atCoordinate:withModifier:client:", + "addGroupsFromPasteboard:toGroup:", + "receiversSpecifier", + NULL, + "registerModel:", + "grl", + "_distanceFromBaseToTopOfWindow", + "saveFontCollection:withName:", + NULL, + "_hide:", + "_userCanSelectSingleRow:", + "reason", + "zoomRange", + "sourceObject", + "blackSubtractAndPremultiply:pattern:factors:blackLevels:image:", + "_removeLockTokenForURI:", + "_validateDropForDragInfo:", + "darkPaperBackgroundUsingTexture:", + "cancel:", + "hasPosterImage", + "_createNewNodePreviewHelper", + NULL, + "_removeToolTipAndTimer", + "personValue", + "noHolesZoomRange", + "movieTypesWithOptions:", + "setMaxWidth:", + "setCurrentNode:", + NULL, + NULL, + "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:", + "setSegmentCount:", + "pemEncodedTextData", + "keyNavigationView", + "windowWillGoAway:", + "finishWindowModal", + "_setPartialKeysWithTableBinder:forTableColumnBinder:", + "isVertical", + "groupsController:outlineView:shouldEditTableColumn:item:", + "addJoinIntermediate:", + NULL, + "clearViewport:", + "setJoinType:", + "nts_GroupsWithAddressBook:", + "didClose", + "_fontNameForFamily:face:", + "center:didAddObserver:name:object:", + "resetFormForFields:", + "groupsAtRemoteLocation:", + "_cleanUpAfterSave", + "_canAutoGenerateKeyboardLoops", + "addToPageSetup", + "cycleToNextInputServerInLanguage:", + "capitalizeWord:", + "_validateCredentialsWithPath:andDAVSession:", + "setFlipped:", + "layoutType", + "_decrementInUseCounter", + "nts_SetNeedsToRestoreAddressBookFromMetaData:", + "_unhide", + "_commonName", + "_printStructure:toString:linePrefix:", + "_initWithWindowNumber:scaleFactor:", + "_indexPath", + "imageAndTitleOffset", + "_setPostHandler:andTargetObject:", + "operationQueue", + "PMPageFormat", + "activateIndexSheetWithAnimation:", + "tracksWithCharacteristic:", + "setOutlineTableColumn:", + "nts_InsertInArray:", + "_installOpenRecentMenuOpeningEventHandler:", + "IKIPSetFrame:constrainedToScreen:display:animate:", + "rotateRight:", + "miniDocumentPreviewFrame:forItemAtURL:withItemFrame:", + "_needsDisplay", + "nts_ClearInstanceCaches", + "setCacheMode:", + NULL, + "_baseKey", + "initSymbolicLinkWithDestination:", + NULL, + "_insertionIndexPathAppendChildIndex:", + "setIntParameterValue:to:", + NULL, + "nts_GroupsAtRemoteLocation:", + "_alignPoint:force:", + "allowsNaturalLanguage", + "_getItemsAndValuesToAddForRow:ofType:", + NULL, + "_getInputWhiteParams", + "setShowsiChatTheaterButton:", + "_setNullForKey:", + "presentError:", + "initWithRect:options:owner:userInfo:", + "setSelectionIndexes:", + "defaultTypesetterBehavior", + "minScaleFactor", + "_editedDocumentCount", + "minPossiblePositionOfDividerAtIndex:", + "initWithCVImageBuffer:options:", + NULL, + "_hasOverrideForSelector:", + "_versionReference", + "_freeTextures:", + NULL, + "path", + "_attributes2ForPageOffset:entryOffset:blockType:baseAttributes:", + "convertFont:toHaveTrait:", + "viewForObject:", + "initForBasicProperties", + "_coreUILinearOrientation:", + "_queryNumberOfChildrenOfItem:withRowType:", + "validateMetaData", + "setLanguage:", + "_rulerAccViewStylesAction:", + "browser:isColumnValid:", + "_filenamesWithAlwaysIncludingDirectories:", + "exportFileAtPath:info:", + "comparisonsForProperty:", + "_dragIndexes:withEvent:pasteboard:source:slideBack:", + "localizedDefaults", + "slider", + "_endEditingIfEditedCellIsChildOfItemEntry:", + "initWithGRL:invocation:", + "setDefaultMiterLimit:", + "groupsController:outlineView:willDisplayOutlineCell:forTableColumn:item:", + "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:", + "selectionBoundingBox", + "pictureTakerShouldClearRecents:contextInfo:", + "yellowComponent", + "insertDescriptor:atIndex:", + "converterProperties:allObjects:images:imageBPC:imageRenderingIntent:", + "accessibilityIsRoleAttributeSettable", + "stringByFoldingWithOptions:locale:", + "initAppearingAnimationWithItems:diff:", + "setPrimitiveCreationDateYearless:", + "_internalTypeSelectStringForColumn:row:", + "setAttributes:", + "moveToBeginningOfDocument:", + "adjustMatrix:numberOfRows:", + "setUndoActionName:", + "shouldEnableRollOverIdentifier:withSelection:", + "stopControl", + "_scanImages", + "documentAttribute:", + "_attributeDescription", + "setScrollerValueFromSelection", + "updateMatrices", + "_indexOfKey:", + "_initWithSuiteName:className:implDeclaration:presoDeclaration:", + "inertia", + NULL, + "clearAllModelObjectObserving", + "_releaseUndoManager", + "executionMode", + "_highlightsWithHighlightRect", + "segmentedCell", + "alertWithError:", + "darkMetalBackgroundUsingTexture:", + "objectDidBeginEditing:", + "parseKeyHeader:", + "autorecalculatesContentBorderThicknessForEdge:", + "_ql_waitForKey:toBeEqualTo:", + "setPage:", + "transactionDidCommit", + "invfk", + "addGuidesLayer:", + "curveToPoint:controlPoint1:controlPoint2:", + NULL, + "valueWithNonretainedObject:", + "imagePosition", + "incrementRefCount", + "_minimumFrameHeight", + "_isDoingOpenFile", + "sliceIsEditable", + "defaultValue", + "movieNamed:error:", + "runToolbarConfigurationPalette:", + "_refreshLayoutAndContent", + "instanceMethodForSelector:", + "popupHit:", + "fireTime", + NULL, + "cacheRelease:", + "_resetMoveAndRenameSensing", + "tokenFieldCell:shouldUseReadablePasteboardTypes:", + "setSizeFunction:", + "drawBackgroundInClipRect:", + "_changedFlags", + "currentCursor", + "initWithCertificate:", + "_generateSQLContainmentStringInContext:", + "menuFormRepresentation", + NULL, + "_specifiedIndexOfObjectInContainer:", + "registerDragTypes:forWindow:", + "pdfViewResized:", + "createPixelBufferFromImageBuffer:withFormat:transformation:bounds:colorSpace:options:", + "applicationShouldTerminate:", + "decodeObject", + "sessionUID", + "_uri", + "setMe:", + "setInformationalString:", + "labelViewClass", + "_encodePropertyList:forKey:", + "_graphIsRunning", + NULL, + "_localizedKeyFromBundleStringFileForKey:", + "insertTable:", + "setStandardInput:", + "PDFView", + "predicateWithSubpredicates:", + "updateProgress:", + "_updateLayerFiltersFromView", + "_data:len:", + "setRepeatDuration:", + "_trackedConnection", + "indentation", + NULL, + "serviceType", + "_loadAnimation", + "keySpecifier", + "_closeWithEffect:canReopen:", + "searchNode", + "exitFullscreen", + "_changeHistory:", + "accessibilityIsZoomButtonAttributeSettable", + "properties", + "providerMD5", + "_runAsSheet", + "controllerForBinding:", + "_updatedCardWithChanges:", + "setTextAttributesForNegativeInfinity:", + "_startEditingColumn:row:event:", + "reinitialize", + "predicate", + NULL, + "initWithSourceObject:sourceKey:targetObject:targetKey:userInfo:", + "isVariableBasedKeypathScopedBySubquery:", + "drawingRectForBounds:", + "_drawRect:liveResizeFill::::cacheCoveredArea:", + "updateSyncIndicators", + "_drawGradientInRect:", + NULL, + "_thumbnailView", + "initRecordDescriptor", + "isEventCoalescingEnabled", + "setupSearchView", + "changeAddressFormat:", + "getThreadArgument", + "_borderView", + "installCarbonEventHandler", + "_selectTextOfCell:", + "_attemptToEditFocusedColumn", + "_scaleFactorForStyleMask:", + "initWithURL:options:documentAttributes:error:", + "_parseFonts1", + "pauseWritingOperationWithScheduledTime:", + "_disableResizedPosting", + "isSingleAttribute:", + "_willShowDisplayableView:", + "optionsFromPanel", + "_setSubmenu:", + NULL, + "shouldCreateUI", + "__computePreLiveColumnResizeWidthsByColumn", + "changeToolbarDisplayMode:", + "CA_attributesForKeyPath:", + "shouldShowMediaBrowser", + "_liveResizeCachedBounds", + "_setVisibleRectOfColumns:", + "initWithButtonID:", + "isBindingKeyless:", + "property:matchesPieces:forPerson:", + "loadFindStringToPasteboard", + "addAccessoryController:", + "accessibleChildren", + "initWithObject:entity:", + "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:", + NULL, + "loadPluginForRight:engineRef:pluginView:", + "deleteBackwardByDecomposingPreviousCharacter:", + "_stringByTranslatingTextDescriptor:toType:inSuite:", + "initWithPrintInfo:purpose:", + "compositingFilter", + "reloadSlideshowItemAtIndex:", + "setThumbnail:withSize:", + "addNode:forKey:", + "_maxXWindowBorderWidth:", + "abUniqueIds", + "menuClassName", + "statusMenu", + "setMouseCell:", + "classForActionDictionary:", + NULL, + NULL, + "numberOfCharactersSelectedOnPage:", + "registerURLHandleClass:", + NULL, + "locationInWindow", + "_isUserRemovable", + "newlineCharacterSet", + "setDividerStyle:", + "_wantsLiveResizeToUseCachedImage", + "newPasswordField", + "thumbnailImage", + "unscriptRange:", + "_arrowScrolling", + "startClearSearchTimer", + "_accessibilityIsInCustomizationSheet", + NULL, + "autorelease", + "_web_parseAsKeyValuePairHandleQuotes_nowarn:", + "objectInSubNodesAtIndex:", + "_locationFromUnitsValue:", + NULL, + "setOnOpenGLContext:", + "entityForID:", + "_rootRowsArray", + "_itemEnabledStateChanged", + "initWithReferenceToData:", + "initWithDate:", + "_wantsRevealoverAtColumn:row:", + "caseSensitive", + "_allocRowHeightCache", + "_positionSheetConstrained:andDisplay:", + "headerRectOfColumn:", + "decimalNumberWithDecimal:", + "_itemChangedToolTip", + "_typeAhead:", + "setSpoolPath:", + "nts__RealCompositeName", + "initWithElement:frame:dateFormat:stringValue:", + "_errorWasPresentedWithRecovery:inContext:", + "_uninstallRemovedTrackingAreas", + "_uniqueMessageNumber", + "abbreviationDictionary", + "_clipViewAncestorWillScroll:", + "_rootNode", + "_surfaceDidComeBack:", + "preferredVolume", + "appendClause:forKeyPathExpression:allowToMany:", + "setMouseRow:", + "_menuDidSendAction:", + "displayChanged:", + "predicateString", + "_pointInPicker:", + "_removeHelpKeyForObject:", + "supportUnitsForConnections", + "_auxStorage", + "_mappingNamed:", + "_rulerAccViewUpdateStyles:", + "_scriptingDescriptorOfRecordType:orReasonWhyNot:", + "_shouldAddObservationForwardersForKey:", + NULL, + "advanceToEOL", + "_sqlTokenForPredicateOperator:inContext:", + "isMiniaturizable", + "_keyFramesSelected", + "_drawPart:withFrame:", + "setFoundMatch:", + "objectForKey:", + "_texturePattern", + "accessibilitySelectedText", + "setBorderColor:", + "saveFilter:notification:", + "_deleteNote:", + "setCreationOptionFlags:", + "animateCompositions", + "_beginTransaction:", + "loadThumbnail", + "checkSpelling:", + "sendSynchronousRequest:returningResponse:error:", + "abCaseInsensitiveIsEqual:", + "exitSlideshow:", + "setArrowsPosition:", + "_adjustLayoutForTextAreaFrame:", + "toolbarBackgroundColor", + "_descriptionOfView:", + NULL, + "_performKeyEquivalent:conditionally:", + "accessibilitySelectedChildren", + NULL, + "_startLoadWithRequest:delegate:", + "browser:numberOfRowsInColumn:", + "_isInheritedPropertyNamed:", + "_moveToPreviousBlock", + "setVisualContextRef:", + "_doUserComplete", + "initWithLongLong:", + "imageWithCallback:param:", + "_frameDidDrawTitle", + NULL, + "_unicodeInputEventReceived", + "setConstraints:", + "fastImageForSize:forGLRendering:", + "_browserDoubleAction:", + "initWithControlPoints::::", + "outlineView:selectionIndexesForProposedSelection:", + NULL, + "initWithFrame:inStatusBar:", + "endOffset", + "handleFailureInFunction:file:lineNumber:description:", + "_noop:", + "_forciblyStopFileWritingForRunningOperation", + "class", + "insertObject:inAttributesAtIndex:", + "deleteCharactersInRange:", + NULL, + "insertObject:range:", + "_drawMouseCoordinates", + "becomeSingleThreaded:", + "_enableScreenUpdates", + "_stopTimerIfRunningForToolTip:", + "_ensureCellIsLoaded", + "glRendererEnabled", + "setActiveKnob:", + "glyphIsEncoded:", + "decodeRectForKey:", + "initWithReferenceToFile:", + "propertyList", + "baseGetter", + "streamWithObjectToken:track:", + "_willUnmountDeviceAtPath:ok:", + "setAutoAlternates:", + NULL, + "_minCellSize", + "setCanClickDisabledFiles:", + "whereClause", + "_performDragOfCell:fromMouseDown:", + "wantsToTrackMouse", + "_rulerAccViewDecimalTabWell", + "isEqualToCompressionOptions:", + NULL, + "updateDateAttributes", + "_blockDescription", + "setVerticallyCentered:", + "copyWithZone:", + "pasteboard:provideDataForType:itemIdentifier:", + "fetchCustomPropertyDefinitionsWithRecordType:addressBook:", + "imageRectForBounds:", + "_sessionDidBecomeActive", + "_resizeColumnByDelta:resizeInfo:", + NULL, + "runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:", + NULL, + "deviceDeltaY", + "createButton:rightSideDivider:", + "_loadCell:atRow:col:inMatrix:", + "_freeClients", + "drawSubtitle", + "_drawDropHighlightBackgroundForRow:", + "localizedFailureReason", + "mouseCol", + "setMaxCode:", + "saveCompositionToFile:flatten:", + "_fullNameIncludingAuxiliaryElements:", + "initWithSet:", + "secondsFromGMTForTimeInterval:", + "reenableHeartBeating:", + "_lockFocusNoRecursion", + "drawHeaderWithAlpha:", + "getTypographicLineHeight:baselineOffset:leading:", + "auxData", + "handleMenuClosed:", + "rootProxyForConnectionWithRegisteredName:host:usingNameServer:", + "cgsRegionObj", + "trackingAreas", + "clearDictionaryRef", + "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:", + NULL, + "effectID", + "pixelBufferRepresentation", + "titleStringFrame", + "shouldEnableActionForPerson:identifier:", + "_setBundle:forClassPresentInAppKit:", + "selectParagraph:", + "onStateImage", + "selectionForAccessibilityRange:", + "_setFont:forCell:", + "disable:", + NULL, + "setOutputOrder:forKey:", + "immutablePlaceholder", + "setAllowDynamicResize:", + "setSelectedDirectories:", + "initWithStore:fromPath:", + "popAndInvoke", + "prevShownGRL", + "isFixedPitch", + "hasFaultForRelationshipNamed:", + "_isDefaultFixedPitch", + "URI", + "setDrawSynchronously:", + "firstTextViewForTextStorage:", + "_resultTypeDescription", + "setURLs:preservingDisplayState:", + "submenuAction:", + "coveredCharacterCache", + "setRoot:", + "scrollViewFrameDidChange:", + "columnCountRange", + "isNativeFileType", + "hasDrawable", + "parentIndexPathForIndexPaths:", + NULL, + "_hideToolbarWithAnimation:", + "convolutionAddROI:destRect:userInfo:", + "_setURL:", + "_propertyDescriptionsByKey", + "appendPasswordUI:", + "cgImageSourceRef:", + "cellsCopyForTasks", + "decomposedStringWithCompatibilityMapping", + "resetTransforms", + "addKeysToBeUpdated:", + "setTrackingMode:", + "addTemporaryAttributes:forCharacterRange:", + "policiesDisclosed", + "accessibilitySetOverrideValue:forAttribute:", + "initWithUser:password:persistence:", + "_numberOfGlyphs", + "writeFontTable", + "_reconcilePageFormatAttributes", + "_displayChanged", + "_wantsMinimalArchival", + "numberOfGroupsInImageBrowser:", + "_addExtension:", + NULL, + "indexHandler", + "_changingSelectionWithKeyboard", + "_isLastSelected", + "_executeScript:", + NULL, + "pathForResource:ofType:", + "deleteToMark:", + "unhide:", + "alternateIconsForAnimationFilenames", + "decimalNumberByMultiplyingByPowerOf10:", + "_drawerWindow", + "_changeQNameURI:toURI:forPrefix:", + "_setEnabledFileTypes:", + "nicestMipmapItemForSize:forGLRendering:cacheIt:", + "hourOfDay", + "_adjustControls:andSetColor:", + "initTitleCell:styleMask:", + NULL, + "selectedRange", + "abdSyncProgress:", + "analyzeReconfiguredWindow:", + NULL, + "isAsynchronous", + "save", + "_presentablePluralName", + "annotationControl", + "_blockLevelElementForNode:", + NULL, + "setIMEnglishName:", + "resolveDecompressionSessionOptionsAndUseDefaultPixelBufferAttributes:", + NULL, + "zoomStateCached", + "_addTrustedAttribute:atIndex:", + "horizontalEdgePadding", + "_findParentWithLevel:beginingAtItem:childEncountered:", + "setAutoresizesOutlineColumn:", + "initWithCell:atIndex:inFlowView:parent:", + "textPasteboardTypes", + "dictionaryWithObjectsAndKeys:", + "speedRange", + NULL, + NULL, + "updateTabs", + "_autovalidateVisibleToolbarItems", + "rightTabMarkerWithRulerView:location:", + "_rectOfDiscreteBrickAtIndex:withDrawingRect:", + "wantsToDrawLabelInPalette", + "isEqualToString:", + "_initialViewToSelectFromDirection:", + "setPrintInfo:", + "miniwindowTitle", + NULL, + "tableView:didClickTableColumn:", + NULL, + NULL, + "setColumnTitle:forIdentifier:", + "_retainedAllMigratedObjectsInStore:toStore:", + "characterSetWithRange:", + "addPortsToRunLoop:", + "_updateXMLNode:fromObject:", + "cameraCallbackCreateNotifier:", + "doRemoveSubscription:", + "addressBookDirectory", + "_shouldPropagateWindowLevelToInputMethods", + "getClassesFromResourceLocator:", + "saveValueInUndo:forProperty:", + "getWhite:alpha:", + "importObject:", + "typesetterBehavior", + "_showDrawRect:", + "_copyAttributesTo:", + NULL, + "notANumber", + "_initWithDeclaration:cachedNamesByAlias:", + "setFullMetadata:", + "initWithTypesetter:", + "_setIPAddress:", + "clearField:", + "_calcNumVisibleColumnsAndColumnSize", + "initWithStructure:", + "_acceptOperator:flags:", + "_setFloat:ifNoAttributeForKey:", + "_concludeReloadChildrenForNode:", + "statusForPerson:", + NULL, + "prompt", + "predicateByAlsoMatchingNilValueForLeftExpression:modifier:", + "kbProductString", + "_makeRememberedOrNewEditingSubviewBecomeFirstResponder", + "abStringByRemovingPunctuation", + "openHelpAnchor:inBook:", + "_horizontalScroller", + "animatable", + "setContextMenuRepresentation:", + "setCacheManager:", + "initWithUnsignedInt:", + "executeCountRequest:withContext:", + "_initWithBitmapData:bytesPerRow:size:format:params:", + "_showsInvisibleCharacters", + "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:", + "setKeys:triggerChangeNotificationsForDependentKey:", + "init:", + "setUsername:", + NULL, + "_uploadData:toPath:withProps:andHeaders:", + "setResourceData:", + "serializeListItemIn:at:", + NULL, + "setPrimaryKeyGeneration:", + "textShouldEndEditing:", + "isInFullScreenMode", + "setDataSource:", + "initWithOperatorType:modifier:options:", + "list", + "_showTooltip", + "uiController", + "setFontPanelFactory:", + "isSearchableAttribute:", + "URLByDeletingLastComponent", + "fileManager:shouldProceedAfterError:removingItemAtPath:", + "cellFrameAtRow:column:", + "getAttributesAndValuesInNode:fromBuffer:listReference:count:allowBinary:", + "_canUnlearnSpellingForRange:", + "mouseUpAction", + "_removeEventHandlers", + "_setShouldRelease:", + "_canBecomeDefaultButtonCell", + "_threadDying:", + "allGroup", + "_drawEmptyColumnsForView:inRect:", + "createScaledImageByX:Y:", + NULL, + "paragraphRangeForRange:", + "knowsPageRange:", + "nextWordFromIndex:forward:", + "xmlAttributesWithIdentifier:", + "createNewTexturePacker", + "_attributesUpdated:", + "viewSizeForPage:", + "cellAtPoint:", + "_clearChangedThisTransaction:", + "_restoreSharedPreviewViewForURL:", + "_selectionIndexPathsInBrowser:", + "beginDrawingInView:inRect:", + "_computeTravelTimeForInsertionOfItemViewer:", + "_nicestDraw", + "initWithQueryString:searchScopes:title:", + "copyResolutionData:into:withRatio:", + "resizeWithOldSuperlayerSize:", + "_processLibXML2HeadElementNode:", + "setEntity:", + "generatesCalendarDates", + "setImage:startRect:andEndRect:", + "setCGRendererEnabled:", + NULL, + "_focusRingBleedRegion", + "beginTransaction", + "_windowDidComeBack:", + "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:", + "blurHalfSizeROI:destRect:", + "graphUnitDescriptionWithGraphNode:ofGraph:", + "setFullScreen:options:", + "irisOpened", + "_setModal:", + NULL, + NULL, + "formChanged:", + "_removeToolTip:stopTimerIfNecessary:", + "decrementSampleUseCount", + NULL, + "initWithParameters:", + "_delegate_dataCellForTableColumn:row:", + "setPlaysAllFrames:", + "repeatDuration", + "_itemIdentifierForModule:", + "_markAutoCreated:", + "_readPersistentTableColumns", + "performSelectorOnMainThread:withObject:waitUntilDone:modes:", + "selectedTabViewItem", + "_propertyRangesByType", + "searchTextRectForBounds:", + "_setVerticalScrollerHidden:", + "sendPort:withAllRights:", + "setWindowFrame:", + "initWithSpecifier:", + "sortedPropertyPortKeys", + "updateGroupSelection:", + "hasChangesPending", + "preparePageLayout:", + "removeAllItems", + NULL, + "_specifiedIndexesOfObjectsInContainer:", + "createTimeLineWithTime:value:", + "version", + "_createPersonRecord:", + "updateMovieBackgroundColor", + NULL, + "tokenSetForLength:", + "definitionForProperty:", + "_setUnprocessedDeletion:", + "setTreatsFilePackagesAsDirectories:", + "pasteAsRichText:", + "_web_URLWithComponents:", + "fontDescriptorWithSymbolicTraits:", + "_presentableNames", + "event", + "didChangeText", + "releaseRenderingContext", + "documentChanged:", + "setAutomaticQuoteSubstitutionEnabled:", + NULL, + "_addAttachedObject:", + "setKeywordColors:", + "beginModalSessionForWindow:", + "normalizedFontDescriptor", + "initWithDataRepresentation:", + "abEllipsizeWithFont:withWidth:reverseForRightToLeft:", + "execute:atTime:withArguments:", + "_memoryCacheTouchNode:", + "writeObliqueness:", + "drawComboBox:inContext:", + "syncTableViewToChoiceAnnotation", + "showHelpFile:context:", + "modDateQuery", + NULL, + "_referenceData64", + "_missingColumnsForRowRange:blockIndex:text:", + "_checkForTerminateAfterLastWindowClosed:", + "addBackgroundImage:rect:", + "_detachFromParentWindow", + "_isUtility", + "isVectorial", + "_fillsClipViewWidth", + "isManyToMany", + "initWithAction:", + "getObjects:", + "handleMouseEvent:", + "loadItemIndex", + "_wantsMenuIndicatorForSegment:", + "_setSuperview:", + "documentDidBeginDocumentFind:", + NULL, + "stepTowardsDestinationAtleastAsFarAs:", + "_setEditingTextView:", + "expectEndOfInput", + "initWithTextBlock:charRange:glyphRange:layoutRect:boundsRect:containerWidth:allowMargins:collapseBorders:allowPadding:", + "headerTextColor", + "accessibilityIndexOfChild:", + "_enterLibXML2ElementNode:tag:", + "previewThumbnailImage", + "updateControlsPanelWithWidth:animate:keepCentered:", + "_pendingActCount", + "_CGSgetWindowFrame:", + "_endRunMethod", + NULL, + NULL, + "command", + "numberWithShort:", + "showPlayerControls", + "_skipValidation", + "fadeWindow:fromAlpha:toAlpha:duration:delegate:", + "_endTableRow:", + "_refreshIsInUseByAnotherApplicationFromCallback", + NULL, + "_NSNavShortVersionCompare:", + "becomeFirstResponderDelegate", + NULL, + "isLeafCertificate", + "_uniqueizeIndexSet:", + NULL, + "rectOfCell:", + "_rowFromTemplate:withRowType:", + "previewPanelNavigationResponder:", + "memberOfInputTopLine:", + NULL, + "_maxXTitlebarWidgetInset:", + "_noteInstantiationFromWindowTemplate", + "initWithInitialSearchIndex:totalIndexes:forView:", + "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:", + "draggingToSelf", + "setObject:forCacheKey:", + "imageWithPasteboard:", + "heightForWidth:", + "useHUDStyle", + "extract2ROI:destRect:", + "controller:didChangeToFilterPredicate:", + "cancelInput:conversation:", + "setImageScalingX:", + "_getPathFromGraph:toNode:withBuffer:", + "mutableSetValueForKey:", + "_disableTrackingRect:", + "valueLists", + "initWithRenderer:userData:renderSize:renderContext:options:", + "_newTabForElement:", + "separatorItem", + "_scrollTo:", + NULL, + "updateLayoutInRange:", + NULL, + "_appHasVisibleWindowOrPanel", + "splitView:constrainMaxCoordinate:ofSubviewAt:", + "initWithDir:bufferSize:", + "parseURL", + "reopen", + "_suggestCompletionsForPartialWordRange:inString:language:", + "initWithDir:string:", + "PDFViewSavePDFToDownloadFolder:", + "selectionMode", + "_notifyView_DidRemoveItemAtIndex:", + "descriptorWithString:", + "setIgnoresMultiClick:", + "_setControlTextDelegateFromOld:toNew:", + "_isPreviewRunning", + "setAnimationsMask:", + "_resizeTextFieldToFit:", + "textView:doubleClickedOnCell:inRect:atIndex:", + "originalCropSize", + "replaceObjectsInRange:withObjectsFromArray:range:", + "cancelDelayedPerformWithTarget:", + "getArgument:atIndex:", + "firstPage", + NULL, + "setShowsCertButton:", + "isFloating", + "reloadThumbnails", + NULL, + NULL, + "_validFrameForFrame:resizedFromEdge:", + NULL, + "setAlertStyle:", + "launch", + "performDoubleClick:", + "_knownEntityKeyForObject:", + "_drawRoundedRect:radius:lineWidth:drawingMode:", + "_verticalResizeCursor", + "_acceptsFirstResponderInItem:", + "copyCGLContextForPixelFormat:", + "makeCharacterSetCompact", + "removeAllDrawersImmediately", + "seekToEndOfFile", + "_setParentWindow:", + "outlineView:draggingExited:", + "_setShouldInvalidateShadow:", + "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_isWhite", + "removeFrameUsingName:", + "_sortedEdges", + "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", + "_flattenMipmap:throughCopy:forCell:", + "removeProperties:", + "_initWithColorSpace:callbacks:data:", + "_shouldRegisterForEditingNotifications", + "isDaylightSavingTime", + "strokeRect:", + "_showToolTip:", + "stringByAppendingPathComponent:", + "cellBaselineOffset", + "_textFieldCellSize", + "setShowsAddToiPhotoButton:", + "scopeLocations", + "setUsername:andPassword:", + "ISS__ay_prepareForInterThreadMessages", + "levelsOfDetailBias", + "runModalForWindow:relativeToWindow:", + "runModalForDirectory:file:", + "_appDidBecomeActive:", + "_shouldHideAddButtonForSlice:", + "setMatrixClass:", + "outlineColumnGroupForRow:column:tableView:", + "_getRetainedLastFocusRingView:bleedRegion:", + "arrowPosition", + "setImageProxy:", + "endRelationshipCreationForEntityMapping:manager:error:", + "entityMappingsByName", + "getUid", + "coerceColor:toArray:", + "setWeakEntropyRange:", + "goToFirstPage:", + "_showControlsPanel", + "interiorBackgroundStyle", + "sizeForNode:", + "_openStrikeMenu:", + "graphicsContextWithGraphicsPort:flipped:", + "nameForInputPort:", + "_applicationDidResignActive", + "_fullDescription:", + "_syncAllExpandedNodes", + "_defaultValidation:error:", + "updateTrackingRectsForCell:", + "_preferInactiveBezelArtInView:", + "__performUndo4:", + "columnsInRect:", + "accessibilityEditedAttribute", + "updateMarkers", + NULL, + "nodeActorForView:", + NULL, + NULL, + "_toolTipForColorPicker:", + NULL, + "cacheFaultingStatement:forRelationship:", + "_shouldComputeRevealovers", + "_createTrackingArea", + "_abCompareContainsSubString:options:", + "scrollTo:", + "_cocoaErrorString:", + "comparison", + "deauthorize", + "visualBackgroundColor", + "fileSystemFileNumber", + "_toolbarIsHidden", + "detailsDisclosed", + "nicestRenderingExpendStep", + "canonicalRequestForRequest:", + "mediaBrowserNode", + "shouldHideMeCard", + "beginUpdateInsertionAnimationAtIndex:throwAwayCacheWhenDone:", + "_noteToolbarModeChangedAndUpdateItemViewers:", + "_caConfigFileFullPathName", + "_timestamp", + "governingEntityForKeypathExpression:", + "setRelinquishFunction:", + "clearSelection", + "startSpecifier", + "imageScalingY", + "_copyImageToPasteboard", + "setAutodisplay:", + "_insertNode:byEntityName:", + "isEditorKey", + "selectedColumn", + "_zoomToFitAll", + "setHidden:", + "fieldEditorTextDidChange:", + "_startChanging", + "newSeparatorItem", + "_accessibilitySplitterRects", + NULL, + "timerFired:", + "_matrix", + "removeElementView:", + "_needsOutline", + "_locationOfColumn:", + "removeReorderedItemsFromDatasource:", + "loadContent", + "setDividerMode:", + "encodeDouble:forKey:", + "_batchRetainedObjects:forCount:withIDs:optionalHandler:withInlineStorage:", + "minContentSize", + "_assignIdentifier", + "servicesProvider", + NULL, + "evaluateString:sourceURL:line:", + NULL, + "_pinViews:resizeFlagsToLeaveAlone:", + "_toolbarSmallLabelFontSize", + "pointingHandCursor", + "resolveNamespaceForName:", + "_setTestedObjectTypeDescription:", + "_aspectRatio", + "setFieldEditor:", + "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:", + "transformBezierPath:", + "cancelClicked:", + "isTransparent", + "initWithWindow:", + NULL, + "textContainerForAttributedString:containerSize:lineFragmentPadding:", + "speechSynthesizer:willSpeakPhoneme:", + "needsDelegate", + "_optionDescriptionsForBinding:", + NULL, + "contentKind", + "maximumRecordedDuration", + "registerForPropertyChanges", + "_sendOrEnqueueNotification:selector:", + "showsCompositionNames", + "setCharacterEncoding:", + "trackConnection:fromPort:atPoint:", + "classDescriptions", + "openUserDictionary:", + "newTempNotificationWithName:object:userInfo:", + "_isKeyWindowIgnoringFocus", + "directoryServicesServer:", + "defaultInputDeviceWithMediaType:", + "insertColumn:", + "setConnectionID:", + "firstIndex", + "_frameOfCell:", + "showsAttributeFilter", + "makeDocumentForURL:withContentsOfURL:ofType:error:", + NULL, + "insertedObjects", + "_currentTable", + "_win32TitleString", + NULL, + "_autoAdvanceCalendar:", + "cameraOffImage", + "average:", + NULL, + "setWaitCursorEnabled:", + "_getFSRefForApplicationName:", + NULL, + NULL, + "drawPlaceHolderWithRect:withAlpha:", + "imageWillChange", + "__doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:", + "_rangeForMoveUpFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:", + "__selectionUpdated:", + "_fastMipmapItemForSize:forOpenGL:useMinimumQualityThreshold:", + "registerForPropertyChangedNotifications", + "_realThumbnailSize", + "speechSynthesizer:didEncounterErrorAtIndex:ofString:message:", + "displayIfNeededInRect:", + "insertTab:", + NULL, + "addToolTipRect:owner:userData:", + "invalidateSelection", + "performPrimitiveOperationUsingObject:andObject:", + "_plugInPath", + "renderer", + "_validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:bindingAdaptor:", + NULL, + "_addBindVarForConstVal1:", + "initWithContentsOfURL:byReference:", + "previousFailureCount", + "lockOwner", + "portWithMachPort:", + "handlePortMessage:", + "setAlternateColor:", + "_setLoadedMetrics:", + "forwardPropogateTemplate:withViews:forOriginalTemplate:", + "viewWithTag:", + "_attributesForElement:", + "_ignoreObserving", + "_getDocInfoForKey:", + NULL, + "use", + "maximumIntegerDigits", + "filterForName:parameters:", + "extraArgumentCount", + "verticalScroller", + "setAutoPlayDelay:", + "setTitle:andMessage:", + "cachedChildrenForNode:", + "_outputVideoFrame:withSampleBuffer:fromConnection:", + "zone", + "unlock", + "netServiceBrowser:didRemoveDomain:moreComing:", + "closeSpellDocumentWithTag:", + "removeSubrecord:", + "exitDisplayOperationForWindow:", + "planToComplete:forType:", + "_prefixDown", + "blurHorizontalPass5ROI:destRect:", + NULL, + "functionalDisplayMode", + "_backgroundDataCancelled", + NULL, + "_beginTempEditingMode", + "fillRect:", + "stringVersion", + "_document:didPrint:forScriptCommand:", + "sharedPreviewViewIsVisible:", + "flowLayout:", + "_makeCGPathForNode:bounds:inContext:", + "userHomeDirectory", + "otherMouseUp:", + "initWithDataNoCopy:", + "_allIdentifiers", + "insertItem:", + "callCracklib:", + "_loadUsingWebKit", + "_scriptingCountOfValueForKey:", + "newNodeWithIndex:belowIndexPath:firstChild:sibling:", + "_syncToChangedToolbar:toolbarItemUserVisibilityPriorityChanged:", + "_copyPrivateKeyFromPublicKeyHash:", + "createConversationForConnection:", + "diffItemsArray:withDataSource:", + "_updateEventFromAttributedString:pinRange:replacementRange:", + "initToDataReference:error:", + "_bindingInfoIndexForBinding:", + "insertElement:range:coalesceRuns:", + "initInNode:type:name:create:", + "browserSingleClick:", + "dotMacBaseLocationForDotMacUser:", + "setOperationGroup:", + NULL, + "_webArchiveClass", + "windowDidBecomeVisible:", + "findGroup:", + "toolTipNoLabel", + "sourceType", + "_runLoop:addPort:forMode:", + "addImageFromPasteboard:", + "_checkCardOnly", + NULL, + "childrenCount", + "handleChannel:", + "increments", + "_drawingRectForPart:", + "writeToURL:atomically:encoding:error:", + "periodicFlushThreadState", + "IKCreateCGImageFromPlanarData", + "_primitiveInvalidateDisplayForGlyphRange:", + "setShouldCloseDocument:", + "rangeOfTextBlock:atIndex:", + "_setOrganizationUnit:", + "foreignKeyColumnDefinitions", + "allowsOtherFileTypes", + "addStringValueToDictionaryRef:", + "_createSmartFolderTitleIfRequired", + "clipForDrawingRow:column:", + "groupsController:outlineView:setObjectValue:forTableColumn:byItem:", + "_setObjects:", + "imageBufferConverterClasses", + "setDatabaseImpl:andAddressBook:", + "canDrawInCGLContext:pixelFormat:forLayerTime:displayTime:", + "_performLayoutIfNeeded", + "setSet:", + NULL, + "replaceElementAtIndex:withElement:", + "filestreamPosition", + "crayonAtIndex:", + "_potentialMinSize", + "resourceExistsAtPath:", + "_accessibilityTextViewCompletionWindow", + "windowDidExpose:", + "credits", + "_delayedShowNode:", + "zoomValueDidChange", + "initWithMainResource:subresources:subframeArchives:", + "_configureBottomControls", + "outlineView:labelShouldDisplayEnabledAtRow:", + "nts_IsModified", + NULL, + "_wantsToDestroyRealWindow", + "_web_setBool:forKey:", + "accessibilityGrowAreaAttribute", + "initWithSession:sourceURI:destinationURI:sourceToken:destinationToken:", + "rangeOfCharacterFromSet:", + NULL, + "ab_stringByAddingPercentEscapesIfNecessary", + "_menuItemView", + "makeNewConnection:sender:", + "setFocusRingColor:", + "_refreshDevicesWithIOType:", + "_methodNameForCommand:", + NULL, + "_moveUpWithEvent:", + "selectCountWithFetchRequest:", + "recacheAllColors:", + "runToolbarCustomizationPalette:", + "_loadInitialRows", + "inShowcaseMode", + NULL, + "movieControllerObjectToken", + "__windowKey:", + "modifier", + "newInsertStatementWithCorrelation:", + "isLeaf", + NULL, + "canGoToNextPage", + NULL, + "endLineStyle", + "setAllowEdit:", + "_finalize_QCThreadPatch", + "_useErrorPresenter:", + "createTextureBufferForManager:withFormat:target:transformation:bounds:colorSpace:options:", + "createJoinIntermediatesForKeypath:startEntity:startAlias:forScope:inFetchIntermediate:inContext:", + "autoScale:", + "_setCurrentBorderEdge:isTable:", + "fontPanelDidChooseFace:", + "displayNameSort:", + "_makeRootNode", + "defaultValueFontAttribute", + "_initWithDataOfUnknownEncoding:", + "accessibilitySelectedTextRangesAttribute", + "era", + "setValidInputKeys:", + "updateAttachmentsFromPath:", + "_standardMarkerAttributesForAttributes:", + "setCountdownDelegate:", + "setIcon:forFile:options:", + "_configureAccessoryView", + "abEncodeBase64DataBreakLines:allowSlash:padChar:", + "kbURLString", + "isObjectTableColumnDataCell:", + "displayPriority", + NULL, + "valueForDimension:", + "_scrollingMenusAreEnabled", + NULL, + "hasVolatileCache", + "_isRunningAppModal", + "setMasterObjectRelationship:", + "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:isHUD:isDarkWindow:", + "appearanceChanged:", + "exportToiPhoto", + NULL, + NULL, + "_clearMouseTrackingForCell:", + "setDirty:", + "isPackage", + "numberOfVisibleColumns", + "top", + "imageWithImageProvider:size::format:colorSpace:options:", + "_faultHandler", + "showInspectorWindow", + "willAccessChildNodes", + "deepestScreen", + "menuForSegment:", + NULL, + "dmCreateRequestWithSession:file:props:URI:", + "_hasPBuffer", + "setScaleFactor:", + "_collectSubentities", + "setFetchRequestTemplate:forName:", + "initWithOwner:", + "_subtractFromNeedsDisplayRegion:", + "_customMetrics", + "setObjectClass:", + "setResourceLoadDelegate:", + NULL, + "setMaximumAge:", + "_setupCertExtensions:numExtens:", + "_certDataArray", + "initWithContainer:key:mutableSet:mutationMethods:", + "setPrevious:", + "shadowsCells", + NULL, + "_documentFromRange:document:documentAttributes:subresources:", + NULL, + NULL, + "nts_SmartGroups", + "setMenuIndicatorShown:forSegment:", + "handleShadowHilite", + "selectedRecords", + "timeZoneWithAbbreviation:", + "_setParentWindowForSheet:", + "initWithSession:method:URI:", + "fastestEncoding", + "_savePanelWasPresented:withResult:inContext:", + "setCloseTarget:", + "isSelectedForSegment:", + NULL, + "_threadContext", + "greenComponent", + "_lockFocusOnRep:", + "_setFallBackInitialFirstResponder:", + NULL, + "accessibilityIsSelectedTextRangesAttributeSettable", + "_connectionWasBroken", + "removeList:", + "hardwareCapsChangeNotifier", + "roundedBezierPathWithRect:radius:", + "drawImageOutline", + "_verticalSlice", + "arguments", + "scrollToRect:", + "setAnchorLeft", + "acceptsFirstMouse:", + "setRanges:", + NULL, + "nodeForKey:", + "initWithOpertaionType:outputFileURL:bufferDestination:scheduledTime:", + "releaseFadeReservation", + NULL, + "__deleteKeyFrame:timeLine:context:", + NULL, + "isFlushDisabled", + "draggable", + "makeBTAvailable:", + NULL, + "_clientDelegate", + "copyNSImageRepresentation", + "_drawTimeLineAtIndex:rect:", + "removeOwner:", + "_windowDidMove:", + "rulerView:willMoveMarker:toLocation:", + "_registerAllDrawersForDraggedTypesIfNeeded", + "flushCachedChildren", + "_argumentDescriptions", + "setUsesScreenFonts:", + "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:", + "_baselineMode", + "validateEditing", + NULL, + "nonBaseCharacterSet", + "addBoundsToDictionaryRef:", + "CI_rect", + "sharedGlyphGenerator", + "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:", + "heightTracksTextView", + "entityNameForPropertyKey:", + "_validityPeriod", + "authorizationViewShouldDeauthorize:", + "_incrementLine:", + "_updateTypes:ports:list:direction:", + NULL, + "stringByTrimmingCharactersInSet:", + "_doFinalAnimationStep", + "abEntityDescriptionInAddressBook:", + "_persistentProperties", + "rectForIndex:", + "maxDoubleValue", + "increment", + "isFirstAndKey", + "_didInitWithCoder", + "fontWithName:size:", + "samplerWithImage:keysAndValues:", + "setSelectable:", + "_writeDocumentPropertiesToString:", + "_entity", + "_setManagedObjectContext:", + NULL, + "_liveResizeImageCacheingEnabled", + NULL, + "_showLineNumbers:", + "_runningDocModal", + "_canHandleDelete", + NULL, + "_invokeMultipleSelector:withArguments:onKeyPath:atIndexPath:", + "_scrollSelectionToVisible", + "_commonInitIvarBlock", + "_printSettingsForSetting", + "serializeObject:", + "spellServer:suggestGuessesForWord:inLanguage:", + "_representationTypeCanBePlayed:", + "_setRect:", + "nextEventMatchingMask:", + "setImage:forSegment:", + "_titleCellOfColumn:", + NULL, + "writeToURL:forManager:withOptions:", + "setStringValue:forFieldNamed:", + "installRatio:intoResolutionData:", + "notActiveWindowTitlebarTextColor", + "_disableAutosavingAndColumnResizingNotificationsAndMark:", + "frameAutosaveName", + "_useSharedKitWindow:rect:", + NULL, + "setHostingWindow:", + "_tableBinderForTableViewSupportsSorting:", + "_receiverThread:", + "allowsLayoutAnimations", + "groupingSize", + NULL, + "statementClass", + "defaultBaselineOffsetForFont:", + "_decodeArrayOfObjectsForKey:", + "setTabStops:", + "notifyWithName:infos:", + "menuStateColumnChanged", + NULL, + "makeCharacterSetFast", + "verifyInvitation:invitationDictionary:trustRefOnErr:signerIdentity:", + "setPoolCountHighWaterMark:", + "_textFieldWithStepperCellSize", + "appendSuiteDeclarationsToAETEData:", + "connection", + "pluginClassForObject:andBinderClass:requiredPluginProtocol:", + "timeMode", + "_startPulse", + "imageWithCGLayer:", + NULL, + "distantPast", + "object:shouldUnbind:", + "performMnemonic:", + "maxImageSize", + "shouldAnalyzeGRL:", + "setSelectedItemIdentifier:", + "_doLayoutTabs:", + "copyPath:toPath:handler:", + NULL, + "shouldBeTreatedAsInkEvent:", + NULL, + "sendEmailToGroup:", + "markEnd", + "_titleTextAttributesForNode:", + "textViewDidChangeTypingAttributes:", + "initRelockWithSession:path:lockToken:", + "isWaitCursorEnabled", + "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:", + "canBecomeMainWindow", + "removeObserver:", + NULL, + NULL, + "_isToManyCountKeyPathExpression:", + "windowController", + "_popUpContextMenu:withEvent:forView:", + "createRandomKey:", + "_deleteRequestPostHandler:", + "descriptorWithDescriptorType:data:", + "pixelFormatBGRA8", + "mouseUpDelegate:", + "_isCompany", + NULL, + NULL, + "wrappedDirection", + "initWithRole:subrole:parent:", + "processNotation:", + "setIndexIntoTemplate:", + "rawOptions", + "setCertData:", + "calendarDate", + "RTFFromRange:", + "addExpandedNode:", + "drawNewParagraphIcon:inContext:", + "nts_Info", + "globalFrameDidChange:", + "timeZoneWithName:", + "initWithDescription:kernelFile:filterBundle:", + "_postDidScrollNotification", + "_tempUnhideHODWindow", + "setDockMenu:", + "_canShowEffects", + "_isDrawingToHeartBeatWindow", + "__isSystemFont", + "debugDescription", + "samplerWithImage:", + "emPath", + "initWithTarget:protocol:", + "resumeNotifications", + "imageByApplyingTransform:", + "_commitTransaction:", + "_closeListsForParagraphStyle:atIndex:inString:", + "imageConverter:bpc:renderingIntent:", + "allConnections", + "setAttributeDescriptor:forKeyword:", + NULL, + "importPumaLDAPServers", + "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:", + NULL, + "_reflectSelection:", + "initWithHTTPResponse:", + "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:", + "_searchCacheForRowObject:", + "initWithTrack:", + "editedRange", + NULL, + "setContentPlacementTag:", + "shouldShowSeparatorBetweenControlWithID:andControlWithID:", + "_matrixWillResignFirstResponder:", + "setNeedsDisplayForItemAtIndex:", + "groupsController", + "_maxYTitlebarDragHeight", + "clearACLsBody", + "detachSubmenu", + "_finishInitializationWithFrame:andController:", + "_nearestCrayonUnderViewPoint:inRow:", + "availableFontNamesMatchingFontDescriptor:", + NULL, + "previewContentFrame", + "_validateAttributes:", + "applyForTime:presentationObject:modelObject:", + "infoForKey:", + "_setViewHandlesEvents:", + "setupDefaultLayers", + "_createMovieController", + "zoomPrefetchTaskDelay", + "initWithPickerOptions:", + "_newCustomizeToolbarItem", + "setMarkedTextAttributes:", + "_initWithURLFunnel:options:documentAttributes:", + "discard", + "defaultDecoderVersion", + "unbindTextureFromCGLContext:textureUnit:savedState:", + "setContinuouslyUpdatesValue:", + "_sendRuleAction", + "_updateCrayonsFromColorList", + "nicestRenderingFinalizeExpendStep:", + "_directoriesToSearch", + "wavePattern", + "_saveTornOffMenus", + "openLocalHost", + "originalImagePath", + "filterUsingPredicate:", + NULL, + "isRealPreview", + "_setInputColor1:", + "movieClipRegion", + "initWithTarget:", + "_updateSublayerPositionsForFlippedSuperview", + "gotoPreviousSelectionPoint", + "addPort:ofType:", + NULL, + "partCode", + "changeWindowFrameSizeByDelta:display:animate:", + "menuChangedMessagesEnabled", + "lastResortFont", + "visibleInputs", + NULL, + "copyStateFromMovie:", + "setProxySource:", + "getAudioMixerNode:andUnitElement:forConnection:", + "isVirtual", + "resetTotalAutoreleasedObjects", + "addComponentAction:componentID:", + "_setNameFieldContentsFromPosixName:", + NULL, + NULL, + "_takeColorFrom:andSendAction:", + "showsCheckerboard", + "_resizeKeepingPanelOnScreen:expand:", + "canStoreTextWithSize:", + "_generateContent", + "_loadImage", + "undoEdit", + "transition", + "_cfurlprtotectionspace", + "handleConnDeath:", + "proxyType", + NULL, + "_clearUnneccessaryItems:", + "updateSpellingPanelWithMisspelledWord:", + "generateOrderIntermediateInContext:", + "scriptingTextDescriptor", + "setDestinationType:", + "usageInPoster", + "contextHelpForKey:", + "valueForKeyFrame:controlType:", + "_minXTitlebarBorderThickness", + "_updateUI", + "findNode:matchType:", + "unsuppressSpecificNotificationFromObject:keyPath:", + "_setRotatedFromBase:", + NULL, + NULL, + "setIsContinuous:", + "_incrementImagePointerToCGImageRefCache", + "loadingProgressValue", + "setNilValueForKey:", + "mapROI:forRect:", + "initWithBufferSize:", + "outline:", + "_autoreleaseDuringLiveResize", + "setAllowedTypes:", + "_bringUpTrustSheetForNextCertificate", + "unarchiver:didDecodeObject:", + NULL, + "_propagateDeletesUsingTable:", + "_createSubstringWithRange:", + "doneTrackingMenu:", + "sqlString", + "_isCaptured", + "_getBackgroundRed:green:blue:alpha:", + NULL, + "computeRedGreenBlueROI:destRect:", + "isVolume", + NULL, + "replaceObject:withObject:", + "stringMarkingUpcaseTransitionsWithDelimiter2:", + "_requiresCacheWithAlpha:", + "_getClientDelegate", + "setCollectionBehavior:", + "scheduleEndOfSearch", + "_drawerVelocity", + "_processReferenceQueue:", + "sharedWindowID", + "moveParagraphForwardAndModifySelection:", + "_effectiveMessageForMessage:", + "setLevelsOfUndo:", + "exceptionWithName:code:reason:userInfo:", + "setIndependentConversationQueueing:", + "managedObjectModel", + "selectedRowInColumn:", + "setFileSize:", + "executeAppleEvent:error:", + "setURL:forPersistentStore:", + "timestamp", + "immutableCopyWithZone:", + "_replaceObject:", + "_trackMenuSelectionInMatrix:", + "reclaimPreviewView:forURL:itemIndex:", + "zAccel", + "subscriptRange:", + "singleLineTypesetter", + "_transactionStarted", + "_postItemWillCollapseNotification:", + "_removeAndDecrementBy:startingAtIndex:", + "editableState", + "imageWithName:", + "_deallocCursorRects", + "_startLoadingURL:timeoutDate:", + "nextCounter", + "duration", + "parser:didEndElement:namespaceURI:qualifiedName:", + "_setModifier:", + "surfaceID", + "setSubentityColumn:", + "setHasVerticalScroller:", + "_canDragNode:", + "integerValue", + "_conformingTypes", + "setMark:", + "_validDestinationForDragsWeInitiate", + "availableProfiles", + "certificate:isEqualTo:", + "_userSelectableRowIndexesForProposedSelection:", + NULL, + "expressionForKeyPath:", + "calendar", + "destinationPatch", + "setTextProc:", + NULL, + "forward::", + "_windowRefCreatedForCarbonControl", + "isSynchronized", + "_evaluateToBeginningOrEndOfContainer:", + "bilateralAddROI:destRect:userInfo:", + "_autoscrollForDraggingInfo:timeDelta:", + "initWithFigSampleBuffer:", + "_setShowOpaqueGrowBoxForOwner:", + "accessibilityIsTopLevelUIElementAttributeSettable", + "setSupportsSetAttributeValues:", + "_documentPreviewDidLoad:", + "setAccumulatorFormat:", + "_didSetFocusForCell:withKeyboardFocusClipView:", + "keyBindingManagerForClient:", + "_updateSelectionIndexes:", + "setFileListMode:", + "writeBOSString:length:", + "startProgress", + "setCellsHaveTitle:", + "orderManager", + "setMovieContentView:", + "_setIconRef:", + "highlightColor", + "_recentDocumentRecordsKeyForUserInterfaceItem:", + "addPatch:", + "_setPostsFocusChangedNotifications:", + "_stopControlsFade", + "initWithLeftExpression:rightExpression:customSelector:", + "_abCompareNotWithinIntervalFromToday:", + "addSelectionLayer:", + "redrawTimerNotification:", + "setSaveMode:", + "clampedFrame", + "addOpenToDictionaryRef:", + "openingEffect", + "cacheNodeWithUID:withResolution:", + "_dragCanBeginFromSomeMouseMotion", + "fileOwnerAccountNumber", + "startTimer:userInfo:", + "setFontName:", + "_keyViewFollowingPickerViews", + "addTimer:forMode:", + "gotString", + "_window", + "defaultCollator", + "_doScroller:hitPart:multiplier:", + "initWithEntity:", + "_configureObservingWithOption:", + "coerceValue:toClass:", + "deactivateIndexSheetWithAnimation:", + "updateNotifications", + "zoomImageToActualSize:", + "initAtPoint:withSize:callbackInfo:", + "_allowAnimated_addSubview:", + "iconView:validateDrop:proposedIndex:", + "addNamespace:", + "scriptErrorExpectedTypeDescriptor", + "_showOpaqueGrowBox", + "rotationForEvent:", + "_releaseOpenGLContext", + NULL, + "intersectWithRect:", + "setKVOContent:", + "startLiveSession", + "setInterfaceStyle:", + "_didNSOpenOrPrint", + NULL, + "autoBackupEnabled", + "commonAncestorContainer", + "generalSizeOfAChar", + "_setDataEnciphermentUsage:", + "_setColorList:", + "captureGraph", + "cellBackgroundColorDidChange", + "initWithCenterPoint:delegate:", + "setImageInterpolation:", + "initWithFontRef:size:", + "otherMouseDown:", + "_freeRepresentation:", + "parser:didStartMappingPrefix:toURI:", + "_indexOfRangeContainingIndex:", + "setName:", + "colorFromPasteboard:", + "halfSizeReconstructionROI:destRect:", + "_destroyShaders:", + "_windowOriginOffsetWhenHidingHint", + "valueWithRect:", + "_paperSizeInPageFormat:", + "faultingStatement", + "trackMouseForPopupMenuFormRepresentation:forItem:forLabelView:", + "sleepUntilDate:", + "_typeSelectAttributes", + "imageCropView:updateComponentStateWithZoomValue:withZoomControlsEnabled:", + "_tooltipStringForCell:column:row:point:trackingRect:", + "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:", + "middleNameFieldPresent", + "setUseCoreUI:", + "iPhotoBundleIdentifier", + "setControlsController:", + "updateWidth:", + "canConnectToPort:", + "setInputNeutralChromaticityX:", + "_rowHeightStorageEndLayoutChange", + "mouseEnteredToolTip:inWindow:withEvent:", + "_removeAllCellMouseTracking", + "maxColumns", + "_initWithCGLContext:options:", + "standardizedURL", + "sharpenReconstructedGreenEdges:radius:intensity:edgeIntensity:edgeThreshold:perceptual:blurred:image:", + "highQualityVideo", + "outputImage", + "refreshSuggestions", + "notifyOnSelectionChanged", + "relinquishFunction", + NULL, + "matchesAppleEventCode:", + NULL, + "_initWithCGLContextObj:", + "nts_DeletedUID", + "wantsToHandleMouseEvents", + "setForceBreaks:", + "readSelectionFromPasteboard:", + "selectionRed:green:blue:", + "removeChildAtIndex:", + "suspendExecution", + "initOffScreenWithSize:colorSpace:composition:", + "_rawData", + "initWithNSBitmapImageRep:", + "_sideTitlebarWidth", + "setAsMipmapOfImage:withSize:antialiased:quality:", + "_checkRotatedOrScaledFromBase", + NULL, + "decimalNumberByDividingBy:withBehavior:", + "_removeObjectAtArrangedObjectIndex:objectHandler:", + "maximumDecimalNumber", + "shouldResolveExternalEntities", + "_unhideChildren", + "setTextAttributesForNotANumber:", + "prepareForImport", + "_inputRampParams", + NULL, + "_addActiveConnection:", + "_reshapeContentAndToolbarView:resizeWindow:animate:", + "cancelButtonCell", + "_readStringIntoRange:fromPasteboard:", + "_aeteDataForAllSuites", + "cropElement", + "_buttonType", + "alternatePath", + "serializeServers:", + "writeBOSArray:count:ofType:", + "imageForPreferenceNamed:", + "_discloseContentBox", + "_setMarkedText:selectedRange:forInputManager:", + "editorDidEnd:returnCode:contextInfo:", + "allowsReordering", + "isNSDictionary__", + "unbindAll", + "_cellForRow:browser:browserColumn:", + "tableName", + "URLProtocol:didLoadData:", + NULL, + "content", + "control:didFailToValidatePartialString:errorDescription:", + NULL, + "isDoubleSided", + "setTotalRequestedMemory:ofType:rendererID:", + "setNodeNamespace:", + "scrollerDidChange:", + "setIdlingEnabledForNonQTKitMovies:", + NULL, + "dictionaryWithDictionary:", + "_termWindowIfOwner", + "isSingleSearchElement:property:value:comparison:level:", + "setFloatingPointFormat:left:right:", + "duplicates", + NULL, + "setNode:", + "_setBranchImageEnabled:", + "_freeAuthorizationRights:", + "object:shouldBind:toObject:withKeyPath:options:", + "setScheduledDate:", + "doDrawPageContent", + "PMSymbol", + "archiver:willReplaceObject:withObject:", + "unregisterModel:", + "_hasMenu", + "shapeY", + "initWithPointer:", + NULL, + "setVisibility:forTimeLine:", + "getObjects:range:", + "AppleUseCoreUIAtIndexes:", + "handleKeyEventWhileInOtherUI:", + "knobRectFlipped:", + NULL, + "_setDoublePageScrolling:", + "_windowNumber:changedTo:", + "setAlternate:", + "copyToObject:", + "computeOutsideShadow", + "searchResultCount", + "inlineSlideshowStatus", + "convertPoint:fromLayer:", + "headerHeight", + "_changedPossibleKeys", + "updateSelectedItem:forKeyDown:", + "centerControls", + "_setupTheater", + "_setInitialColumnContentSizeOfColumn:", + "serializeInt:", + "hotspotWithObjectToken:node:", + "registerModalWindow:", + "_setupToolTipsForView:", + NULL, + NULL, + "_blockRangeForGlyphRange:", + NULL, + "_toolbarViewClass", + "justifyWithFactor:", + NULL, + "_patternForBinding:", + "setRecentPictureAsCurrent:", + "_drawBackgroundWithFrame:inView:", + "_mainthreadComputePreviewThumbnailFinished:", + "_rowHeaderTableColumn", + "inputMethodInformation", + "valueWithRange:", + "_updateButtonsForModeChanged", + "movieWithFile:error:", + "_saveIconViewImagePosition:", + "invalidateFocus:", + "setSerializedValue:forStateKey:", + "eventRef", + "_removeEntity:", + "initWithFunc:forImp:selector:", + "_enableLogging:", + NULL, + "fbeQueryNode", + "readFromData:ofType:error:", + "open", + "markRemoteLocationWithServer:", + "incrementalLoadFromData:complete:", + "_cancelAddMarker:", + "getRectsBeingDrawn:count:", + NULL, + "shouldAbortExecution", + "_drawsVerticalGrid", + "fontSetChanged", + "_constrainSheetAndDisplay:", + "sharedPreviewView:willStartSharingWithPreviewPanel:", + "_oldPlaceWindow:", + "positionInternalViews:", + "_setDisplayContents:usingSimpleCommandDefaults:", + "_doAnimation", + "_segmentIndexForElementIndex:", + "tokenFieldCell:shouldUseWritablePasteboardTypes:", + "insertGlyph:atGlyphIndex:characterIndex:", + "scrollPrefetchTaskDelay", + "_paperShadow", + "_doOptimizedLayoutStartingAtGlyphIndex:forCharacterRange:inTextContainer:lineLimit:nextGlyphIndex:", + "newCellIndex", + "cellForRow:tableColumn:", + "setHighlightedItemIndex:", + "_checkCellCount", + "dsDataNode", + "performSelectorInBackground:withObject:", + "undo", + "_createSelectClauseInFetchWithContext:", + NULL, + "_sendsContentChangeNotifications", + "_updateCellsSize", + "isAccelerated", + "_setIsWhite:", + "schedulePriorityRange", + "cubeImage", + "childCount", + "_setCertAuthorityName:", + "availableLocaleIdentifiers", + "sharedAddressBook", + "_retainedBitmapRepresentation", + "_scrollToMatchContentView", + "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:", + "getRectsExposedDuringLiveResize:count:", + "_replaceFontDescriptor:withDescriptor:inCollection:", + "_newConflictDetectionRecord", + NULL, + "textView:shouldChangeTypingAttributes:toAttributes:", + "_populateRowForOp:withObject:", + NULL, + "_web_stringByReplacingValidPercentEscapes_nowarn", + "_analyzeContentBindingInSyncWithBinding:", + NULL, + "setEmail:", + "_handleDocumentFileChanges:", + "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:", + "noImportableItemsSheetEnded", + "scheduleUpdate", + "setCIContext:", + "__oldnf_addThousandSeparators:withBuffer:", + "_userExtendSelectionWithRow:", + NULL, + "_clearAnyValidResponderOverride", + "_web_HTTPStyleLanguageCodeWithoutRegion", + "_allowAnimated_setFrameRotation:", + "nts_InitAddressBookWithDatabaseDirectory:", + "serializeToData", + "drawLabel:inRect:", + "createTextureBufferFromImageBuffer:target:sourceBounds:options:", + "scrollPrefetchTaskProgress", + "setIndicatorImage:inTableColumn:", + "tooltipExtensionView", + NULL, + "_issuePropPatchAtPath:updatingProps:inNameSpace:", + "setEntityMappings:", + "_person", + NULL, + "cellForComposition:", + NULL, + "_setNeedsRedrawBeforeFirstLiveResizeCache:", + "traitsOfFont:", + "retainedObjectIDsForRelationship:forObjectID:", + "setScalingFactorX:factorY:", + "cameraButton", + "replaceCharactersInRange:withRTF:", + "drawTextContainer:inRect:onView:pinToTop:", + "gridIndexesToClientIndexes:", + "objectMechanismsRequired", + NULL, + "currentButtonState", + "shouldCopyItemAtPath:toPath:", + "_setCurrentNode:", + "_userKeyEquivalentForTitle:", + "imageWillChange:", + "getStringValue", + "_replicatePath:atPath:operation:fileMap:handler:", + "isValidGlyphIndex:", + "initWithReceivePort:sendPort:", + "getPicture", + "advanceToTime:", + "setIdentity", + "_resetExecution", + "setContentBorderThickness:forEdge:", + "initRemoteWithOptions:", + "outlineView:willDisplayOutlineCell:forTableColumn:row:", + "_transferWindowOwnership", + "openDocumentWithContentsOfURL:display:error:", + "CA_decodeObjectForKey:", + "_stringForDatePickerElement:usingDateFormat:", + NULL, + "setFlipsIfNeeded:", + "_setHoveredCell:", + "generateTableName:", + "_web_suggestedFilenameWithMIMEType:", + "operationColor", + NULL, + "_validateCollections:", + "setPreferences:", + "bestMipmapForSize:", + "_constrainPoint:withEvent:", + NULL, + "sharedFontOptions", + "_subtreeDescriptionWithDepth:", + "attemptForHTTPCode:", + "addClip", + "freeGrabberIfNeeded", + "runUntilDate:", + "removeServiceProvider:", + "_resizeWindow:toFrame:display:", + "initWithPasteboard:", + "initRelockWithSession:URI:lockToken:duration:", + "initWithBytesNoCopy:length:", + "visitPredicateOperator:", + "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:", + NULL, + "_clockAndCalendarReturnToHomeMonth:", + "accessibilityTextView", + "incObservationCount", + "abURLWithScheme:", + NULL, + "removeOldBackups:", + "setROISelector:", + "greenColor", + "_itemType", + "_encipherOnlyUsage", + "__oldnf_surroundValueInString:withLength:andBuffer:", + "_startWatchingWindowKeyness", + "setAsReferenceOf:", + "_drawCellAt:col:insideOnly:", + NULL, + "_toolbarAttributesChanged:", + "isDocumentEdited", + "setNumberOfColumns:", + "_finishSavingToURL:ofType:forSaveOperation:", + "setTabView:", + "_dispatchNextOperationInQueue", + "insertAttributedString:atIndex:", + "alternateMagnifying", + "imageFromContext:withComposition:fxCenter:qcRenderer:", + "freeAllCaches", + "tableView", + "tokenField:shouldAddObjects:atIndex:", + "localEditInAddressBook:", + NULL, + "imageAtFrameIndex:", + NULL, + "initWithValues:objectID:", + "toggleWritingOperationWithOutputFileURL:bufferDestination:scheduledTime:", + "_autorecalculateSizesIfNotSetExplicitly", + "setForeignKeys:", + "_bezelAndIndicatorAreaWidthForCellFrame:", + "_createCertExportFileForCAWithFormat:pathToExportFile:exportedData:", + "setDynamicVerticalScroller:", + "_setIndex:forPort:", + "iconForSpecifier:size:", + "recentPictures", + "addRangeOfInterest:", + "advanceToPeakPoint", + "getPropsRequestWithSession:URI:properties:", + "replaceElementsInRange:withElement:coalesceRuns:", + NULL, + NULL, + "recordUpdateForObject:", + "nameOfSlideshowItemAtIndex:", + "_insertionGapForItemViewer:forDraggingSource:", + "_crayonMaskImage", + "closingDown", + "initWithContainerClassID:key:nonmutatingMethods:mutatingMethods:proxyClass:", + "startLoading", + "_subviews", + "commitEditingWithDelegate:didCommitSelector:contextInfo:", + "_advanceTime", + "criticalValue", + NULL, + "application:openFile:", + "ramManagerDidUnbindMipmapWithUID:withSize:", + "accessibilityModalAttribute", + "phoneticFirstName", + "_deallocExtraData", + "_isNullExpression:", + "_shouldDrawContentsAtRow:column:withCellFrame:clipRect:", + "acceptInputForMode:beforeDate:", + "addRegion:", + "_primitiveSetNextKeyView:", + "rotated", + NULL, + NULL, + NULL, + "defaultVoice", + "initWithKey:ascending:", + "_setPKINITServerAuthUsage:", + "isFauxDisabledNode:", + "_mouseHit:row:col:", + "imageRepWithContentsOfFile:", + "loadPlugin", + "_hostString", + "isCumulative", + "_URLWithData:relativeToURL:", + "_removeReferencesToCarbonWindowRef", + NULL, + "_delayedSelectRow", + "isMultiline", + "selectedIndex", + "classForStore:", + "allPeople", + "validateToolbarItem:", + "_performRemoveFileAtPath:", + NULL, + "_appkitManagesLayer", + "databaseOperationForGlobalID:", + "_drawTickMarksWithFrame:inView:", + "ramCacheUsed", + "shouldChangePrintInfo:", + "blurHorizontalPass9ROI:destRect:", + "canBecomeKeyWindow", + "searchCustomSearchDataSources:", + "setContentsNoCopy:length:freeWhenDone:isUnicode:", + "localizedReferenceDocumentationForFilterName:", + "commentColor", + "targetKey", + NULL, + "_dockRestarted", + NULL, + "beginLoadInBackground", + "_updatePopUpWindowFrameFirstTimeInSession:", + "drawPopupAnnotationsWithBox:", + "splitViewDidResizeSubviews:", + "_reloadCellDataAtIndex:", + "executeAtTime:", + "_creteCachedImageLockIfNeeded", + "setScrollXEnabled:", + "fileAttributesAtPath:traverseLink:", + "mouseDraggedDelegate:", + "dump", + "_initWithObjectNoExceptions:", + "setupEditFieldKeyBindings", + NULL, + "_setSortDescriptors:", + NULL, + "_registerDefaultStoreClassesAndTypes", + NULL, + "_indexForDecrementMove:", + "entryType", + "addSubview:positioned:relativeTo:", + "initWithFlags:rights:environment:", + "access", + "startOrStopProfiling:", + "handlePreviewImageChanged", + "stopCapture", + "lockButtonClicked:", + "_heartBeatThread:", + "mutableString", + "isTranslated", + "initWithFormDictionary:", + "_postItemWillExpandNotification:", + "_coreAttributesFromRange:whichAttributes:", + NULL, + "makeCellAtRow:column:", + "clickedColumn", + "_updateItemsByCompoundTemplates", + "_markUsedByCell", + "sharedSoftwareImageManager", + "_titleRectForTabViewItem:", + "_searchForSystemImageNamed:", + "_filterObjects:", + "computeOutline", + "inlinePreview:didUpdateDisplayWithImage:", + "bindMipmapItemFromDisk:withNode:withUID:", + "ISS_stringByURLQuoting", + "prepareAndExecuteSQLStatement:", + "cell", + "_readHTMLIntoRange:fromPasteboard:", + "setIgnoresSSLCertificateErrors:", + "setAllContextsOutputTraced:", + "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:", + "_executeSQLString:", + "_needRedrawOnWindowChangedKeyState", + "getDataAtPath:", + "dataOfType:error:", + "appendBezierPathWithOvalInRect:", + "ISS_URLWithScheme:host:port:uri:", + "panelConvertFont:", + "setTransition:", + "_setRunAsSheet:", + "rasterizationChanged:", + "erase", + "setDrawsOutsideLineFragment:forGlyphAtIndex:", + "targetAndArgumentsAcceptableForPerformAction", + "setValue:forKeyFrame:controlType:inTimeLine:", + "centerSelectionInVisibleArea:", + "_fondID", + "setMaximumIntegerDigits:", + "flattenedImage:context:", + "_updateOptions", + "setDiskLabelValues:", + "lineBreakByHyphenatingBeforeIndex:withinRange:", + "minimizeButton", + "_downloadFinished", + "timeoutDateFromNow", + "rightExpression", + "createAccelContext", + "isRTL", + "allCards", + "forcedContentTypeUTI", + NULL, + "_textColorWithMode:", + "setCalendar:", + "_gsave", + "_shouldAlwaysShowControls", + "deviceRGBColorFromArray:", + NULL, + "localizedInfoDictionary", + NULL, + "resizeColumnAtIndex:toWidth:", + "advanceToProgress:", + "setOrientationTag:", + "translateTo::", + "_keyAgreementUsage", + "runPoofAtPoint:withSize:callbackInfo:", + "startSubelementIndex", + "mutableSubstringFromRange:", + "_setupRFC822Names:inCEGeneralNames:", + "_performNonAEAwareWorkaroundForSpec:", + "decryptWithDelegate:", + "_processChangedStoreConfigurationNotification:", + NULL, + "drawRect:fromDisplayLink:", + "_accessibilitySegmentAtIndex:", + "textContainerOrigin", + "_initWithContentSize:preferredEdge:", + "nickNameFieldPresent", + "stopAnimation", + "drawIndeterminateInteriorWithFrame:inView:", + "_isUnmarking", + "setFrequency:", + "temporaryAttribute:atCharacterIndex:effectiveRange:", + "_addingOrAnimatingNewColumn", + "_typeIdentifierForName:", + "stateUpdated", + "_setPropertiesForDelegate:", + "_graphUpdated:", + "setSidebarState:", + "setPrimitiveAddress:", + NULL, + NULL, + "setCanWrite:", + "sessionWithScheme:host:port:", + "createCGContext", + "_operationInfo", + "resetMatrices", + "accessibilityWindowNumber", + "_createNewSliceWithFrame:ruleEditorView:", + "maximumRecordedFileSize", + "notificationKey", + "numberOfDataSourceItems", + NULL, + "magnificationFilter", + "setRegistryClass:", + "_clearFindIndicator", + "hitTestWithImage:x:y:", + "filteredArrayUsingPredicate:", + "imageBrowser:willMoveItemAtIndex:to:scaleFactor:", + "fillMode", + "cancel", + "setEncoding:", + "accessibilitySelectedColumnsAttribute", + "frameImageAtTime:withRepresentations:error:", + "certExpirationDateIndex", + "systemLocale", + "setColorList:", + NULL, + "_scalesBackgroundVertically", + "certificatesDisclosed", + "initWithHue:saturation:brightness:alpha:", + "_lastNonHiddenColumn", + "addMipmapItemToCache:withUID:", + "updatePublicUserInfo:privateUserInfo:withRecords:userInfoKey:couldAffectSyncing:couldAffectSharing:privateTablesChanged:modificationDate:ignoreRecordsForKey:", + "imageState", + "_loadPreviewTimedOutForDocumentPreviewView:", + "drawSelectionAroundIconRect:", + "updateReorderingPosition", + "_certType", + "_sizeToFitColumnMenuAction:", + "mouseExited:withFrame:inView:", + "_unregisterForMovieIdle", + "_web_addErrorsWithCodesAndDescriptions:inDomain:", + "setBundle:", + "boundsRectForContentRect:inRect:textContainer:characterRange:", + NULL, + "suggestedFilename", + "previewPanelUserDidChangeFrame:", + "sharedSlideshow", + "fixGlyphInfoAttributeInRange:", + "numberOfColumns", + "addBackButton", + "email", + "toolbar", + "defaultWindingRule", + "autoUpdates", + "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:", + "replaceItem:forExistingKey:", + "addRepresentation:", + "_relationshipNamesByType:", + "_userEmailAddress", + "setFrameRotation:", + "exportSlideshowItem:toApplication:", + "sizeCopyrightView", + "_pageScaling", + "setupContentView", + "infoWithType:size:", + "textView:willDisplayToolTip:forCharacterAtIndex:", + "colorizeByMappingGray:toColor:blackMapping:whiteMapping:", + "_selectRow:subrow:byExtendingSelection:members:", + "_dictionaryForKeyValuePairArray:pullExcludedKeysFromDictionary:", + "toolTipString", + NULL, + "tokenAtCursor", + "setFloatValue:knobProportion:", + "gotoEnd", + "searchState", + NULL, + "scrollRangeToVisible:", + "_setTrackingRect:inside:owner:userData:useTrackingNum:install:", + "_createItemFromItemIdentifier:", + "sendInvocation:internal:", + "localDrag", + "QTMovie", + NULL, + "setRawDataFileName:", + "notificationWithName:object:userInfo:", + "previewView:didChangeDisplayStateForDocumentURL:", + "autoresizesSubviews", + "parseORG", + "_bindNamespaceName:URI:", + "drawGroupsBackground", + "createAttributesListForApple:", + NULL, + "generatesDecimalNumbers", + "cancelLoadingImageDataForTag:", + "_fixNSMachPortLeak", + "_lineColor", + "_moveObjectInContainer:withKey:atIndex:toContainer:withKey:atIndex:replace:", + "PDFViewScrollOpenGutterToWidth:", + "initWithGraph:sourcePort:destinationPort:arguments:", + "openGLTextureOffset", + "setDisabledTextColor:", + "imageBrowser:groupAtIndex:", + "setCanStartSlideShow:", + "cacheDeletionStatement:", + "nodeNames", + "viewSize", + "outlineView:didDragTableColumn:", + "_findFirstNonSelectedIndexFrom:to:selectedIndexes:", + NULL, + "zoomPrefetchTaskProgress", + "setImageBrowser:", + "_nodesCountInGraph:", + "nts_ValueForProperty:row:record:", + "_setTrustValues", + NULL, + "setAllowsIdentitySelection:relayout:", + "isSimpleRectangularTextContainer", + "_setCorrelationTableName:", + NULL, + "_isParentGroupOfRecord:", + "needFinalDataForKey:", + "_allowToolbarToStealEvent:", + "_readRulerIntoRanges:fromPasteboard:", + "initWithOperand:andKeyPath:", + "_writeSelectionToArchiver:fromPoint:", + "raise:format:arguments:", + NULL, + NULL, + "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:", + "maximumLengthOfBytesUsingEncoding:", + "updateIndexPtr", + "_fastHighlightGlyphRange:withinSelectedGlyphRange:", + "_scriptingDescriptorOfEnumeratorType:orReasonWhyNot:", + NULL, + "_backgroundFileLoadCompleted:", + "deviceGrayColorSpace", + NULL, + "setMetadata:forPersistentStoreWithURL:error:", + "contentView", + "_delayStartEditing:", + "_isRelationship", + "halfSizePictureEdges:scale:image:", + "setContentSize:", + "_createImageBufferFromProvider:withFormat:target:transformation:bounds:colorSpace:options:", + "personChanged:", + "initWithTextAlignment:location:options:", + "didChangeValueForKey:withSetMutation:usingObjects:", + "draggingUpdated:", + "setROIInfoForKernel:jsROIInfo:", + "newComponentByID:", + "configureForDisplayMode:andSizeMode:", + "_switchToSetting:error:", + "rectForLayoutAtPoint:inRect:textContainer:characterRange:", + "inspectorNibNameWithIdentifier:", + "validateTakeValue:forKeyPath:", + "initWithOutput:connection:backgroundQueue:", + "_didStart:", + "beginUndoGrouping", + "initializeParameterDataStructures", + "initWithCGImageSource:", + "editableStateAtIndex:", + "cellBackgroundColor", + "_addColumnWithoutChangingVisibleColumn", + NULL, + "removeFreedView:", + "willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:", + "attributeColumnDefinitions", + "invalidate:", + "_doPositionDrawerAndSize:parentFrame:", + NULL, + "isNotEqualTo:", + NULL, + "shouldPrint", + "_nodeRefFromNode:", + "imageDidChange", + "halfSizePicture:pattern:", + "beginMouseOperation", + "setLength:", + "isDisplayPostingDisabled", + "deserializePListKeyIn:", + "_newToolTipWindow", + "toolTipsFontOfSize:", + "_refreshDetailContentInBackground:", + NULL, + "nts_SubscribedPeople", + "setImageScalingY:", + "initWithHelpIndex:", + "keyValueBindingForKey:typeMask:", + "localizedKeys", + "delayedShowcaseSelectedResult:", + NULL, + "secondOfMinute", + NULL, + "_keySize", + "archiverDidFinish:", + "style", + "_modelObservingTrackerClass", + "imageWithJPEGFile:", + "saveOptionsChanged:", + NULL, + "_hasWindowRefCreatedForCarbonControl", + "keyForProperty:entityName:entityKey:", + "hideShowLastImportGroup:", + "transactionID", + "filterArray", + "_arrayContent", + "sortedArrayHint", + "plugIn", + "__oldnf_containsCharFromSet:", + "expressionForEvaluatedObject", + "viewBoundsChanged:", + "scrollPageUp:", + "initWithProtocolFamily:socketType:protocol:address:", + "containerIsRangeContainerObject", + "permitWithRights:flags:environment:authorizedRights:", + "_setAntialiased:", + "canUndo", + "numberOfComponents", + "initWithDelegate:keyToSelectorMap:context:", + "_fillBackground:withAlternateColor:", + "showGraphEditorInspector:", + "_updateOutputDeviceUniqueID", + "imageUnfilteredFileTypes", + "initWithClient:document:", + NULL, + "setViewsNeedDisplay:", + "_scriptingIntegerDescriptor", + "_cellForRow:", + "_createTransformedCIImage:transformation:bounds:", + NULL, + "subentityID", + "_reflectDocumentViewBoundsChange", + "setAnimations:", + "_oldIBCompatDrawTitleWithFrame:inView:", + "_loadAllCompositions", + "_embossedDisabledForegroundTextColor", + "_shouldPostEventNotifications", + "_fontDescriptorsForFamily:inCollection:", + "textureName", + "archiver:didEncodeObject:", + "handleAnalyzeNextGRL:", + "setStructureValue:", + "_characterIndexForMoveRightFromSelectedRanges:", + "titleColor", + "nts_ClearInstanceCachesForGroup:", + "beginModalSessionForWindow:relativeToWindow:", + "clearTemporaryCaches", + "_setRepresentationListCache:", + "createConnectionFromPort:toPort:", + "metaDataCacheDirectory", + "hasThousandSeparators", + "_authLock", + "_setEntitysReferenceID:", + "preferredFileNameExtensionForType:", + "_cocoaErrorString:fromBundle:tableName:", + "_createColumn:empty:", + "_valueClass", + "refusesFirstResponder", + "_layoutOrderInsertionIndexForPoint:previousIndex:", + "addCropSelectionLayer:", + "_isPendingInsertion", + "outlineView:dataCellForTableColumn:item:", + NULL, + "checkPoint:", + "accessibilityPerformAction:", + "drawBackgroundForGlyphRange:atPoint:", + "abCompareBackupInfo:", + "_validateEditing:", + "editColumn:row:withEvent:select:", + "currencyDecimalSeparator", + "trackMouse:inNode:bounds:view:", + "setTextAttributesForPositiveValues:", + "autosavesConfigurationUsingIdentifier", + "booleanForKey:inTable:", + "previewPanelSelectNextItem:", + NULL, + "pointerType", + "displayStringsForParagraphStyle:", + "abandonPreviewView", + "getAllCollections", + "_setHasLayerBackedOpenGLContext:", + "_syncList", + NULL, + "numberWithBool:", + "setIdlingEnabled:", + "_observeKeyPathForBindingInfo:registerOrUnregister:", + "_tileAndRedisplayAll", + "periodicFlushInterval", + "setVisualDrawsMovieBoxBackgroundColor:", + "_addSubentity:", + "webArchiveData", + "coerceString:toColor:", + "objectWithID:", + "performSearch", + "ikRootLayer", + "_glyphDescription", + "_web_mimeTypeFromContentTypeHeader_nowarn", + "newCacheNodeForManagedObject:", + "_originalImageBoundingBoxSizeIncludingRotation", + "addEntriesFromList:", + "titleWidth", + "selectItemWithIdentifier:", + "encodeRect:", + "setAttachmentSize:forGlyphRange:", + "ruleEditor:layoutOrderForItem:inRow:", + NULL, + "setTextAttributesForZero:", + "_addConnectionsFromObject:toArray:", + "currencySymbol", + "setRequiredFileType:", + "_getSizeFromDock", + "allKeys", + "_thumbnailLayerAtIndex:", + "findRecordsInServer:withNode:withServer:withCounter:", + "_updateLayerTreeRenderer", + "compositeName", + "_connectionWasEstablished", + "_setSuppressingKVO:", + "isFlushWindowDisabled", + "setAfterEntityLookup:", + "remoteStoreNameForKeychainRef:", + "_checkForSimpleTrackingMode", + "imageFlow:cellWasDoubleClickedAtIndex:", + NULL, + "_placeholderAttributedString", + "titleWithSelection:", + NULL, + "bidiProcessingEnabled", + "setPrimitiveCreationDate:", + "pageViewHeight:", + "_prepareEventGrouping", + "_dragDataItemViewer", + "removePopupView:", + "_loadServicesMenu", + "initWithDatabaseAtPath:", + "clearCaches", + "setInputWhiteParams:", + "_processNotificationQueue", + "setDisplayedTitle:", + "nodeAcceptsFirstResponder:view:", + "videoMemorySize", + "updateConfigDataIfNeeded", + "unarchiveObjectWithFile:", + "sharedCallbackRegistry", + "certificationPathDisclosed", + "setShowsStateBy:", + "releaseVolatileImageRep", + "convertSizeToBase:", + "takeColorFrom:", + "evaluate", + "rectOfItemAtIndex:", + "directoryResultsSubrows", + "startClockwork", + "_initWithContainerClass:key:propertiesBeingInitialized:", + "_enableAutosavingAndColumnResizingNotifications", + "_ensureLocalizationDictionaryIsLoaded", + NULL, + "dictionaryRepresentationOfSmartGroupAtRow:resultsView:", + "nodeAttributesWithName:", + "canExportToApp:version:newInfo:", + "primitiveValueForKey:", + "_setIsExpanded:", + "_isForeignObjectExpression:givenContext:", + "removeFromSuperview", + "initWithLevelIndicatorStyle:", + "stringByAppendingString:", + "removeText:", + "setShadowColor:", + NULL, + "_layerBackedOpenGLContext", + "setValueInTemporaryCache:forProperty:", + "sum:", + "addAuthHeaderToMessage:", + "cancelPreviousPerformRequestsWithTarget:selector:object:", + "_textDimColor", + "_shouldDrawDragged", + NULL, + NULL, + "_setNeedsDisplayInColumn:includeHeader:", + "quickTimeMovieController", + "setAspectRatio:", + "settingsView:renameKey:toKey:", + NULL, + "isContextHelpModeActive", + "_convertPoint:toAncestor:", + "pointerToElement:directlyAccessibleElements:", + "_willAllowSpace:", + "setPatch:", + "pushChangeCommand:", + "daylightSavingTimeOffset", + NULL, + "visibleThumbnails", + "_setToolbarItem:", + "extraLineFragmentRect", + "_addEntities:toConfiguration:", + "setInteger:forKey:", + NULL, + "_openLinkFromMenu:", + "searchControllerDidScheduleSearch:", + "defaultTextColorWhenObjectValueIsUsed:", + "componentsJoinedByString:", + "request:readResponseBody:", + "validateFocusedIndex", + NULL, + "supportedUploadFormatsForContext:", + "parseAccessDescription:index:", + "parseTokenEqualTo:mask:", + "multiStatusRequestWithSession:method:path:responseClass:", + "_initWithImpl:", + "ikImageBackgroundLayer", + "dockTitleIsGuess", + "storeThumbnailDataInfo:withUID:withSize:", + "usingDefaultVoice", + "_tileIfNeeded", + "_appendLog:", + "compositionParameterView:shouldDisplayParameterWithKey:attributes:", + "windowDidResize:", + "configureAsServer", + "cacheHint", + "_dataWithoutConversionForType:", + "orderFront", + "popupFrameForAnnotation:gutterBounds:", + "responderView", + "object:withObservance:didChangeValueForKeyOrKeys:forwardingValues:", + "maxWidthOfLocalizedDefaultGroupStrings", + "rowAtPoint:", + "initWithGroup:members:addressBook:direction:", + "_allowsTearOffs", + "_compareMultiLabelScalarWithRecordValue:", + NULL, + "setVertical:", + "_delegateRespondsTo_shouldTypeSelectForEvent", + "_updateFileNamesForChildren", + ".cxx_destruct", + "defaultFormatterBehavior", + "localizedDescriptionForType:", + "tableView:isGroupRow:", + "_maybeScrollMenu", + "writeShadow:", + "addPeopleFromPasteboard:toGroup:", + "annotationsDidChange:", + "_processHeaders:", + "initWithCATransform3D:", + "setKeyPath:", + "detachColorList:", + "_charIndexToBreakLineByWordWrappingAtIndex:lineFragmentWidth:hyphenate:", + "cropSize", + "setHighlightMode:", + NULL, + "setSelectionByRect:", + NULL, + "_overlayRequestPostHandler:", + "createPixelBufferFromTextureBuffer:bounds:options:", + "stringForKey:", + "outlineView:shouldSelectItem:", + "initForToolbar:withWidth:", + "_handCursor", + NULL, + "addTypes:", + "exposeBinding:", + "moveUserSelectionWithEvent:", + "enterProximity", + "viewDidEndLiveResize", + "_windowFileButtonSpacingWidth:", + "hotspotsVisible", + NULL, + "contentAlpha", + "setAutoresizes:", + NULL, + NULL, + NULL, + "self", + "_startRendering:", + "dataReferenceWithDataRef:type:", + "initWithPageIndex:atPoint:fileURL:", + "cellsCount", + "disposeGlyphStack", + "defaultSubcontainerAttributeKey", + "postQueryHasBeenCanceledNotification", + "_isMiniaturizable", + "labelColor", + "maximumSize", + "_setFrame:", + "objectBeingTested", + "initWithOptions:", + "beginEditing", + "maximumNumberOfColumns", + "backgroundLayer", + "_setFirstColumnTitle:", + "outlineView:willDisplayCell:forTableColumn:item:", + "_changeAddressFormat:", + "setPatternPhase:", + "createCGImageWithRenderingIntent:shouldInterpolate:", + "layoutToFitInViewerFrameHeight:", + "setRefusesToBeShown:", + "setIsRealPreview:", + "setImageWithoutInvalidate:", + "validateAction:", + "_drawTableExteriorFocusRingIfNecessaryInClipRect:", + "sendBeforeDate:components:from:reserved:", + "_downloadPath:toPath:", + "unbind", + "turnOffEditMode", + "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:", + "setProcessName:", + "_keyRowOrSelectedRowOfMatrix:inColumn:", + "_removeTrackingRectForToolTip:stopTimerIfNecessary:", + NULL, + "sublayerTransform", + "_21vCardRepresentationAsData", + "TIFFRepresentationUsingCompression:factor:", + "_setToolTipRectsDirty:", + "setAutoInstallBlendMode:", + NULL, + "disabledControlTextColor", + "initWithValue:sqlType:attributeDescription:", + "regionWithCGSRegion:", + "removeObserver:fromObjectsAtIndexes:forKeyPath:", + "setCIImage:", + "_finishHitTracking:", + "contentValueWithEditedMode:contentIndex:", + "_mipmapCommonInit", + "updateSelectionProcess:", + "accessibilityFocusRingBoundsForBounds:", + "setData:", + "makeQueries:", + "advancePastEOLSingle", + NULL, + "initWithSession:method:path:", + "nts_InitDefaultContactManager", + "filterPasteboardWithData:ofType:", + "createOutputPortWithArguments:forKey:", + "editedRow", + "closePath", + NULL, + "setNumberOfTickMarks:", + "clippedItems", + "_setScriptErrorFromKVCException:", + "popupViewExited:", + NULL, + "_shouldSelectTabViewItem:", + "_setSegmentedCellStyle:", + "_colorPickerWithIdentifier:", + "_accessibilityUnhiddenTableColumns", + "setGradientBorderWidth:", + NULL, + "adjustZoomSliderValue", + NULL, + "initWithContentsOfURL:ofType:", + "_imageNameForPerson", + "handleHICocoaViewEvent:callRef:", + "_getCharactersAsStringInRange:", + "_isActivated", + "_resources", + "_recursiveGatherAllKeyViewCandidatesInArray:", + "setEditButton:", + "hasCharacteristic:", + "localizedString:", + "setActiveColor:", + "_errorNumber", + "_newConflictRecordForObject:andOriginalRow:", + "propertyListFromStringsFileFormat", + "_setExtendedKUECodeSigningDevelopment:", + "_markWidth", + "_setEnableFlippedImageFix:", + NULL, + "setImageHasChanged:", + "placeholderForMarker:", + "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", + "_accessibilityTitleElement", + "_openUntitled", + "_entitiesForConfiguration", + "displayToolTip:", + "_setFrameUsingName:domain:", + "setColor:forTimeLine:", + "removeToolbarItem:", + NULL, + "setAutoDistinct:", + "setScaledImageSize:", + "_setViewNeedsDisplayInRect:", + "countOfChildNodes", + NULL, + "_menuChanged", + "hidesOnDeactivate", + "imageDidChange:", + "cacheSize", + "menuDidClose:", + "_updateCache", + "_compileKernels:", + "_pkinitClientAuthUsage", + "_quotaAttributesRequestPostHandler:", + "_observePathOfEntry:", + "loaded", + "decodeInvocation", + "_old_initWithCoder_NSTableView:", + "setGraph:node:element:scope:", + "_willPresentRevertingError:", + NULL, + "lastImportGroup", + "documentForWindow:", + "unlockWithCondition:", + "runSyncToolWithArguments:wait:", + NULL, + "_web_characterSetFromContentTypeHeader_nowarn", + "prefetchRelationshipKeyPaths", + "doSelectAll:", + NULL, + "_scaleImage:forSize:", + NULL, + "setColor:forIndex:", + NULL, + "writePDFInsideRect:toPasteboard:", + "validatesImmediately", + NULL, + "deletedMembers:", + "encodeByrefObject:", + "setCommandDescription:", + "_stateForPorts:", + "_drawContentsAtRow:column:clipRect:", + "_fastestEncodingInCFStringEncoding", + "grow:", + "initWithFormat:", + "initWithCoder:", + "_containerTextViewFrameChanged:", + "annotation", + "_initialize:::", + "adjustScrollView", + "_setHidden:", + "menuBarFontOfSize:", + "bitmapInsideRect:", + "_uniquer", + "_maxXTitlebarButtonsWidth", + "runModalForSavePanel:", + "isAutomaticLinkDetectionEnabled", + "_parsePredefinedAttributes1", + "goUpDirectory", + "lockDate", + "identityComposition", + "ascending", + "setAllowsEmptySelection:", + NULL, + "sqlTypeForPropertyAtEndOfKeyPathExpression:", + "flushInterval", + "notShownAttributeForGlyphAtIndex:", + "_resultOfDividerDragToPosition:withParams:", + "initWithPNGFile:options:", + "abBackupGroupsCount", + "displayedColumns", + "_writeURLInRange:toPasteboard:", + "_removeTrackingRects", + "getNodeAsContainerNodeForBrowsing:", + "URLHandleUsingCache:", + "graphWillStartForSession:", + NULL, + "removeItemAtIndex:", + "importFilesToIPhoto:", + "_checkDirectories", + "absoluteY", + "_wantsKeyboardLoop", + "needsSizing", + "bitmapFormat", + "setIconURL:", + "_setupRunLoopTimer", + "fragment", + "quickLookThumbnailOptions", + "qcPickerDidValidate:", + "cancelPendingCertLookups", + "setContent:", + NULL, + "childContext:didForgetObjectsWithObjectIDs:", + "_DIBRepresentation", + "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:", + "_nodeAcceptsFirstResponder:", + NULL, + "_saveDocumentWithDelegate:didSaveSelector:contextInfo:", + "initShortCut", + "setEvaluationErrorNumber:", + "_currentBorderEdge", + "checkMipmapVersion", + "quickLookSlideshowMode", + "_propertySearchMapping", + "_doAnimationStep", + "fillableRectForBounds:", + "checkZoomBoundaries", + "abVCardDataRepresenation", + "setOrigin:", + "representationOfCoveredCharacters", + "_calendarFirstDayOfDisplayedMonthDateComponents", + "keyPathIfAffectedByValueForMemberOfKeys:", + "_defaultDocIcon", + NULL, + "_selectAllContent:inDetailController:", + "_printPanel:didEndAndReturn:contextInfo:", + "selectedRowIndexes", + NULL, + "_swapToolbarItemViewerInDirection:relativeToView:", + "accessibilityToolbarButtonAttribute", + "menuNeedsUpdate:", + "nts_Reconnect", + "isMenuIndicatorShownForSegment:", + "_markerAreaRect", + "initWithObjects:count:", + "_enterElement:tag:display:embedded:", + "apply:to:", + "_setMouseActivationInProgress:", + "_delegateRespondsToWillDisplayCell", + "setToValue:", + "slideImage:from:to:", + "dateWithString:calendarFormat:locale:", + "_proxyForUIElement:", + "imageBrowserShouldValidateEditingOnFocusChange:", + "targetAndArgumentsAcceptableAtIndexPath:", + "_isBinaryAttribute:length:", + "collapseItem:", + "_delegateRespondsToWriteRows", + "_deferredBuildAndRunGraph", + "constraintWithAttribute:relativeTo:attribute:", + "accessibilitySearchButtonAttribute", + "_fixupSortDescriptorPlaceholdersIfNecessary", + NULL, + "_external:", + "setUserImage:", + "secondarySelectedControlColor", + "_windowDepth", + "internalNameForPropertyName:version:", + "compressionChanged:", + "centerTabMarkerWithRulerView:location:", + "_validateAndCommitTokens", + "slideshowSwitchToSinglePage:", + "hostMatchingFilter:imageBPC:imageRenderingIntent:", + "read", + "_noteNote3:", + "enableAll:", + "lockResourceAtPath:withDuration:andETag:", + "resolverClass", + "_new_implicitlyObservedKeys", + "removeSelectionLayers", + "showContextHelpForObject:locationHint:", + "_isHUDWindow", + "processSubInfo:forKey:", + "dataWithContentsOfFile:options:error:", + "setMinDate:", + "initWithBestLocationRep:", + "increaseLengthBy:", + "hitTestWithRect:", + "_atsFontID", + NULL, + "docxFormatData", + "_localizedColorListCopyrightString", + "trackWithEvent:", + "sortedArrayUsingSelector:hint:", + "activateContextHelpMode:", + "selectItem:", + "setMinWidth:", + "_initWithContainerClass:keyPath:firstDotIndex:propertiesBeingInitialized:", + "updateGrammar:", + "fileManager:willProcessPath:", + "setNoFeedback:", + "_mouseDownNonListmode:", + "getBezelGroup:points:", + NULL, + "_hideToolbar:animate:", + "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:", + "_setUpAppKitCoercions", + "makeShown:", + "unsignedIntValue", + "_setTargetProcess:", + "limitAmountOfMemoryUsed", + "browserDoubleClick:", + "_updateAttributesFromAudioChannelMapFromPropertyListener", + "sendBeforeDate:", + "setSelectedCompositionIndex:direction:", + "_makePatch", + "_wakeup", + "replaceImage:imageState:", + "menusDictionary:", + "floatValueOfProperty:", + NULL, + "_reorderColumn:withEvent:", + "records", + "setParameterList:", + "_enableFlushWindowWithoutPerformingFlush", + "scrollCellToVisible:", + "_updateIndexAndDropOperationWithDrop:", + "_extendedCharRangeForInvalidation:editedCharRange:", + NULL, + "imageBrowser:didMoveItemAtIndex:to:scaleFactor:", + "setAdvance:forIndex:", + "defaultFetchRequest", + "resetInspectorViews", + "_attributeValueClass", + "initWithContext:format:target:pixelsWide:pixelsHigh:options:", + "pageCount", + "_setSlotIfDefault:", + "unassociatePopup:", + "findInView:forward:", + "minimumWidth", + "formUnionWithCharacterSet:", + "writeStyleSheetTable", + "_linkShaderOnContext:", + "setAlpha:", + NULL, + "newWithName:url:filterData:actions:domains:comments:readOnly:owner:", + "isEmptyHTMLElement:", + "_startTransitionWithDocumentAtIndex:usingImage:atFrame:", + "_zoomFactor", + "_logColumnWidths:", + "defaultCropIsZoomToFit", + "isUsingMailRecents", + "_processPendingInsertions:withDeletions:withUpdates:", + "_flushCachedCarbonPrintersByName", + "rawDictionary", + NULL, + "_rulerAccViewFixedLineHeightAction:", + "nts_ContactsMatchingNormalizedEmailAddress:inSubscribedContent:context:", + "releaseAllPools", + "topMargin", + "_retainedMipmapImage", + "urlToWriteIndexToStorage", + "_setNeedsDisplayInPrimarySortColumns", + "startScrollPrefetchTask", + NULL, + "processRecords:", + "supportsCropping", + "_getCacheWindow:andRect:forRep:", + "imageWithOptions:", + "_rawSetSelectedIndex:", + "drawImage:inRect:fromRect:alpha:fog:premultiplied:gradient:interpolate:shader:", + "_configureMessageView", + "initWithHostName:serverName:textProc:errorProc:timeout:secure:encapsulated:", + "scheduledFindOnPage:", + "rangeForUserTextChange", + "quadrilateralPoints", + NULL, + "initWithTypeCode:", + NULL, + NULL, + "_eventRecordDelta:", + NULL, + "_setComparisonPredicate:", + "editButton", + "_logState", + "_setBundleIdentifier:", + "textContent", + "setStartRect:endRect:startWhite:endWhite:startAlpha:endAlpha:duration:", + "previewPanel:transitionImageForURL:frame:", + "useDisabledEffectForState:", + "boolForType:defaultValue:", + "initListMembersWithSession:URI:showHidden:", + "_progress", + "sharedToolTipManager", + "setDisplayMode:", + "preferredBackingLocation", + "nodeFromManagedObject:objectIDMap:", + "week", + "startAlphaEffect:", + "height", + "processIdentifier", + "_setRequest:", + "query", + "initWithOpenGLContext:pixelFormat:options:", + "_writeDocumentData", + "_QTDataReferenceClass", + "_shouldRepresentFilename", + "registerTranslator:selector:toTranslateFromClass:", + "URLByAppendingComponent:", + "setLayoutAlgorithm:", + "_standardCommonMenuFormRepresentationClicked:", + "_audioNodeFormatDescriptionDidChange", + "initWithSearchElement:andName:hilight:addressBook:", + "filterWithName:keysAndValues:", + "_propagateDirtyRectsToOpaqueAncestors", + "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:", + "requestModes", + "setUsesFeedbackWindow:", + "setAttributesInTextStorage:", + "removeAttributeForName:", + "_sendDelegateCanSelectColumn:", + NULL, + "_compareMultiNoLabelScalarWithRecordValue:", + "displayState", + NULL, + "invalidateLayoutOfLayer:", + "_privateChildNodes", + "_pkCount", + "_finalize_QCCompositionPickerGridCellLayer", + "_horizontalResizeCursor", + "_entityClass", + "restoreCardWindowStateWithModel:", + "numberOfItemsChanged", + "setMaximum:", + "lastEmailDates", + "setSharedSurfaceMode:", + "__containsRecord:", + NULL, + "initWithContentsOfURL:ofType:error:", + "startTrackingAt:inView:", + "allowsGroupSelection", + NULL, + "sharedSearchManager", + "didReceiveAuthenticationChallenge:", + "_drawerVerticalOpenOffset", + "expandItem:expandChildren:", + NULL, + "render:", + "_spellingSelectionRangeForProposedRange:", + "layerOfType:", + "updateSwatch", + "wakeup", + "_appActivationChanged:", + "setResizeIncrements:", + "overlayBounds", + NULL, + "_scrollingAnimationCallback", + "_mediaBrowserIcon", + "character:hasNumericProperty:", + "textAttributesForNotANumber", + "doCommandBySelector:commandDictionary:", + "newSelectionForMouseMoved:", + "initWithObjectToken:movie:", + "_portTextAttributesForNode:", + NULL, + "isInputPortVisible:", + NULL, + "initWithPK64:", + "_initFromGlobalWindow:inRect:", + "setColorSpaceName:", + "_doOrderWindow:relativeTo:findKey:", + "maxContentSize", + NULL, + NULL, + "undoIt", + "conflictingRecords", + "decrementRefCountForObjectID:", + "__oldnf_setLocalizationFromDefaults", + "hudFadeTimerElapsed:", + "UUID", + "_setLevel", + "samplesPerPass", + "_prepareFunctionExpression:", + "setPreference:forKey:", + "_subtractColor:", + "sendInstruction:", + "showsHiddenFiles", + "dictionary", + "windowDidUpdate:", + "_currentSetting", + "glyphName", + "initWithName:appleEventCode:enumeratorDescriptions:isHidden:", + "prefetchingRelationshipKeyPathsForImplClass:inAddressBook:", + "isAppleUseCoreUI", + "defaultAnimationForKeyPath:", + "_releaseBindingAdaptor", + "updatePreviewSize", + "_typeSelectEndCurrentSearch", + "invalidateGlyphsOnLayoutInvalidationForGlyphRange:", + "progressMarks", + NULL, + "tokenForegroundColor", + "_switchImage:andUpdateColor:", + "_setGlyphsPerLineEstimate:offsetPerLineEstimate:", + "__instantiateNode:", + "_getDisplayDelay:inQuickMode:forView:", + "_load", + "_fileWrapperForURL:", + "setAttributeValueClassName:", + "_launch:fromBundle:throughPort:", + "setStart:len:", + "optionClicked:", + "nativePixelFormat", + "_setMessageAndInformativeText", + NULL, + "volumesNode", + "_processSwitchesEnabled", + "_setLazyDestinationEntityName:", + "highlightMode", + NULL, + "rangeAtIndex:", + "computeFigureRectangle:", + "flagsChanged:", + NULL, + "_drawThemeBezelWithFrame:inView:", + "setImageSize:", + "_updateProfile", + "willCreateSchema", + "_viewWillStartLiveResize_handleRowHeaderSurfaces", + "setDefaultMenu:", + "initWithUnsignedInt:sqlType:", + "setTitleBaseWritingDirection:", + "userDefaultsChanged", + "rotateByDegrees:", + "doesNotRecognize:", + "_dividerFrames", + "initWithDevice:", + NULL, + "_validateSingleValue:forKeyPath:error:", + "initWithOriginalClass:", + "_collapsedOrigin", + "releaseDelegate", + NULL, + "_isGroupRow:", + "generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:", + "_orderFrontHelpWindow", + "removeClient:selector:", + "appendString:withFont:andAttribute:", + "nameFieldLabel", + "initWithTarget:selectorName:arguments:", + "_dictionaryByTranslatingAERecord:toType:inSuite:", + "isInvalidationCapableObject:withSelector:", + "_reformListAtIndex:", + "_base64StringFromData:", + "_invalidateTitleCellSize", + "searchLimit", + "_minXBorderRect", + "removeVolatileDomainForName:", + "_setInverseRelationship:", + "_toolbarIsShown", + "image:didLoadRepresentation:withStatus:", + "isPausedRendering", + "togglePlay:", + "mediaType", + "layoutStatusbar", + "_noticeTextColorPeerBinder:", + "initWithFileManager:", + "realElement", + "_noteToolbarLayoutChanged", + "addFilter:toCollection:", + "setBaseWritingDirection:range:", + "outlineView:heightOfRowByItem:", + "destinationPort", + "removeObjectsAtArrangedObjectIndexPaths:", + "_displayFromCarbonIgnoringOpacity", + "_scriptStringWithTabCount:", + "_setCurrentEvent:", + "isRenameGroupUndoable", + "_configurePort", + "getImageForDrag", + "_getInputExtent", + "translateBy:", + "_rightMouseUpOrDown:", + "setFitToScreen:", + "_unregisterRuleDelegateForNotifications", + "dictionaryWithContentsOfURL:", + "windowChangedScreen:", + "_processDBInfoNode:", + "_isPaletteView", + "_evaluateSourceExpressionForMapping:entityPolicy:", + "requiredFileType", + NULL, + "_specifiesUnorderedAddition", + "flipImageHorizontal:", + NULL, + NULL, + "_nodeFromLibXML2Node:", + "buildLocalizedStringToKeysTable", + "rightView", + "shapeX", + "updateCellsLayoutAtIndexes:", + "_titleCellSizeForTitle:styleMask:", + "_init", + "_updateSubthumbnails", + "attributedStringByWeaklyAddingAttributes:", + "writeHeader", + "fileLocker:actionForApparentlyAbandonedLock:onAttempt:", + "modelAndProxyKeysObserved", + "slot", + "apply:", + "zoomFactor", + "setSelectedMembers:", + "navTransform", + "endGrouping", + "valueInTemporaryCacheForProperty:", + "numberFromString:", + "saveFontCollection:", + "setSFElement:", + "drawParagraphIcon:inContext:", + "filterClassDescription", + "_iconImage", + NULL, + "showsPreviews", + "addHeaderValue:forKey:", + "saveMorphedGlyphs:", + "windowTitleForDocumentDisplayName:", + NULL, + "outlineView:child:ofItem:", + "actionProperty", + NULL, + "pasteboardWithUniqueName", + NULL, + "_selectToolbarItemViewerAfterView:", + "free", + "inputContextForFirstTextView:", + NULL, + "callStackReturnAddresses", + "_completePathWithPrefix:intoString:matchesIntoArray:", + "_calculateAllTitles:", + "_addWhitespace", + "shadedImage:heightField:shading:scale:opacity:hasAlpha:transparency:", + "_labels", + "localizedName:locale:", + NULL, + "_traverseToSupermenu", + "setTitleNoCopy:", + "displayedTitle", + "_constructDefaultMessage:", + "nts_AllRecordsForClass:", + "_editor:didChangeEditingState:bindingAdaptor:", + "drawPlayerControl", + "_writeParagraphData", + "imageAdjustView", + NULL, + "setKey:", + "_drawProgressArea", + "writeRoomForInt:", + "mediaKeys", + "removeTrackingArea:", + "tailIndent", + "_colorizedImage:color:", + "_initContent:styleMask:backing:defer:counterpart:", + "clearBuffer", + "setMaxDate:", + "_setTransactionFinished:", + "_setNonRepudiationUsage:", + "initWithSavedQueryNode:", + "checkForTrailingDigits:", + "_executeFetch:didCommitSuccessfully:actionSender:", + "registerUndoWithTarget:selector:object:", + "getGid", + "_hasHorizontalScrollBar", + "isDrawingToScreen", + NULL, + "takeValuesFromDictionary:", + "_cancelAnimationTimer", + "_setEmailAddressOfCA:", + "sharedAppleEventManager", + "service", + NULL, + "_deselectDownstream:", + "_maxYResizeRect", + "_setEventMask:", + "addInput:error:", + "initWithCarbonWindowRef:takingOwnership:", + NULL, + "propertyTableAtIndex:", + "_shouldHeaderShowSeparatorForColumn:", + "docFormatData", + "activateForDocumentAtIndex:usingTransitionImage:atFrame:", + "nts_Members", + "initWithBounds:", + NULL, + "_sheetDidEnd:returnCode:contextInfo:", + "findClass:", + "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:", + "addDefaultAppearanceDictionaryRef:", + NULL, + "_syncToChangedToolbar:toolbarModeChanged:", + "allowsOpenGLAcceleration", + "becomeMultiThreaded:", + "_scrollUp:", + NULL, + "setExternalPrecision:", + "verticalCornerRadius", + "mappingModelForSourceModel:destinationModel:error:", + "poseAsClass:", + "_characterIndexForMoveForwardFromCharacterIndex:", + "nts_PropertyTypesForRecordOfClass:", + NULL, + "iDiskAddress", + "setAllowMultipleSubrowSelection:", + "alternateName", + "setAnnotationType:", + "initWithTitle:URL:andPath:", + "_switchToPlatformInput:", + "removeQFilterCellViews:", + "_alignedTitleRectWithRect:", + "nameAtIndex:filtered:", + "zPosition", + "_initialBackgroundStyleCompatibilityGuess", + "_initWithBacking:", + "_startLiveResizeAsTopLevel", + "keyEquivalentWidth", + "_cacheFileName", + "pictureTakerViewBox", + NULL, + "controlsFixedForKeyFrame:inTimeLine:", + "_registerFormatter:forErrorKey:parameters:", + "tokenField:representedObjectForEditingString:", + "renewGState", + "_synchronizeTitlesAndColumnsViewVisibleRect", + "openFile:", + "_convertDataToString:", + NULL, + "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:", + "applicationWillHide:", + "_drawNavigationBarBackgroundWithFrame:inView:", + "_enablePosting", + "_setResponse:", + "enterFullScreenMode:withOptions:", + "getFirstUnlaidCharacterIndex:glyphIndex:", + "setAddressNormalized:", + NULL, + NULL, + "allModifierPredicates", + "accessibilitySetValueAttribute:", + "requiredThickness", + "_closeForkSync:", + "titleForDocumentURL:canUseCustomDisplayName:", + "dmCreateRequestWithSession:data:props:URI:", + "scanLocation", + "endLineWithGlyphRange:", + "availableVoices", + "windowDidOrderOnScreen:", + "copyScriptingValue:forKey:withProperties:", + "partHit:", + NULL, + "mergeStyleInto:", + "_createOptimizedDefaultValue:forInputKey:cellSize:", + "contextWithOptions:", + "setViewScale:", + "_findDragTargetFrom:", + "replaceObjectsInRange:withObjectsFromArray:", + "_fromRecord:getContainerInfo:", + "linkPath:toPath:handler:", + "triggerSearch", + "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:", + "getRow", + "setSRRecognizer:", + "_IMViewWillDisplayImage:", + "_updateSelectedItem:forKeyDown:", + "_characterIndexForMoveBackwardFromCharacterIndex:", + "_typesIncludingConversionsFromTypes:", + "renderString:forRect:font:color:alignment:rotation:breaks:context:", + "_rulerAccessoryViewAreaRect", + "_removeRunningOperationEqualTo:", + NULL, + "subitems", + "getCustomAdvance:forIndex:", + "alignmentMode", + "_setDrawBackground:", + "_generateSQLForKeyPathExpression:allowToMany:inContext:", + "_typeNameFromElement:isOptional:", + "nts_RemoveFromAddressBook:", + "parsesLSItemContentTypes", + "clearInsertedObjects", + "canCloseDocument", + "stringByRemovingPercentEscapes", + "setPolicyDelegate:", + "setNameNormalized:", + "didAddCredentials:toRequest:context:", + "portWillDeleteFromNode", + "_proxyProtectionSpaceForProxyURL:", + "_setSignatureUsage:", + "replaceCharactersInRange:withAttributedString:", + "compositionInputs", + "timeIntervalSinceReferenceDate", + NULL, + "setMaxColumns:", + "_validFrameForResizeFrame:fromResizeEdge:", + "_moveContentsAt:toIndex:", + "carbonHICommandIDFromActionSelector:", + "isPrivate", + "_findCurrentEditor", + "_updateVolumeByStoredVolume", + "lock:", + "_validatePath", + "_appendTypeNamesSuiteDeclarationToAETEData:", + NULL, + "_updateSettings", + "_setHasToolTip:", + "_closeDocumentsStartingWith:shouldClose:closeAllContext:", + "tokenTextView:readSelectionFromPasteboard:type:", + "updateHeartBeatState", + "_unionOfArraysForKeyPath:", + "_minForKeyPath:", + "_canUseCompressionOptionsWithDescription:", + "_detachSheetWindow", + "stateValue", + "_runningOperation", + "setVarietyCharSet:", + NULL, + "defaultWritingDirectionForLanguage:", + "filterNotification:type:info:", + "keyForConnection:", + "setVideoPreviewConnection:", + "consumeImageData:forTag:", + "_multiClipDrawingHelper", + "loadDidFinish", + "_transactionAborted", + "initWithCharacterRange:parent:", + "_subtextStorageFromRange:", + "_postStoresChangedNotificationsForStores:changeKey:options:", + "attachedSheet", + "dateByAddingComponents:toDate:options:", + "webScriptNameForKey:", + "_supportsGetValueWithNameForKey:perhapsByOverridingClass:", + "colorFromPoint:", + "accessibilityIsFocusedWindowAttributeSettable", + NULL, + NULL, + "pointer", + NULL, + "loadImageKitFrameworkIfNeeded", + "nts_AddressBook", + "_convertInstanceIfNeeded:", + "_invalidateInsertionPoint", + "insertValue:withLabel:atIndex:", + "controlTextDidCh:", + "_changeNamespace:fromPrefix:toPrefix:", + "setMinimized:", + "prepareForSave", + "_performActionOnAllNodes:context:", + "setIndex:count:", + "unregisterImageRepClass:", + "_updateSheetEffectParent:", + "_findItemViewerAtPoint:", + "setHotspotsVisible:", + "_animatingScrollTargetOrigin", + "getCString:maxLength:", + "_updateSubmenuKnownStale:", + "roundingMode", + "nts_SetDistributionIdentifier:forProperty:person:inGroup:allowFetching:", + "initWithMovieView:selector:operation:", + "bitsPerPixel", + "setAutoresizesAllColumnsToFit:", + "_hasActiveControls", + "isTrue", + "_canOpenInlinePreview", + NULL, + NULL, + "_imageForSelection", + "textColorWhenObjectValueIsUsed:", + "unregisterObjectWithServicePath:", + "drawSelectedItemsInGenieWindow:withBoundingBox:", + "_indexOfWindow:", + NULL, + "displayValuesForRow:", + "grayDeviceColor", + "initWithPickerMask:colorPanel:", + "_offsetControlPointOfType:withOffset:forKeyFrame:inTimeLine:", + "setTickMarkPosition:", + "textureID", + "_labelOnlyShowsAsPopupMenu", + "controlType", + "deviceID", + NULL, + "_toolbar", + "setSama:", + "layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:", + "setSublayers:", + "applyMultiValue:withProperty:toRecord:managedObject:", + "hotspotCountForNode:", + NULL, + "numStacks", + "accessibilityIsIndexAttributeSettable", + "lookUpConnectionWithReceivePort:sendPort:", + "coercedValue:", + "isSingleDTDNode", + "_refreshStreams", + "birthdayYear", + "readColors", + NULL, + "_syncScopeLayout", + "_createCollectionJoinsForFetchInContext:", + "performSelector:withObject:", + NULL, + "orderFrontCharacterPalette:", + "setCurrentTime:", + "learnWord:language:", + NULL, + "selectableItemIdentifiers", + "_clearVisitedColumnContentWidths", + "coerceValue:forKey:", + "textView:writeCell:atIndex:toPasteboard:type:", + "_popUpButton", + "_markerTypeButton", + "performWithActionName:", + "processorCount", + "SCTCategoryColumnColor", + "databaseChanged:", + NULL, + "iconView:selectionIndexesForProposedSelection:", + "addTrackingRect:owner:userData:assumeInside:", + "variant", + "wantsDoubleBuffering", + "fontAttributesInRange:", + "handleAppTermination:", + "cropRect", + "setMirroring:", + "_duplicateTimeLines", + "_startFileWritingForConnection:fileControlToken:runningOperation:", + "_autosaveColumnsIfNecessary", + "initWithSmartGroup:name:searchElement:hilights:addressBook:", + "_finalize_QCImageManager", + "drawPlaceHolder", + "filesystemItemLinkOperation:shouldProceedAfterError:linkingItemAtPath:toPath:", + "installShortcutView", + "accessibilityIsWindowAttributeSettable", + "recordValuesForInsertedObject:", + "replaceAllInView:selectionOnly:", + "setShowIdentityGroups:", + "replyToOpenOrPrint:", + "currentFrameImage", + "shouldAllowUserColumnResizing", + "decomposableCharacterSet", + "setRequestBodyWithString:encoding:", + "_appendTextBytes:length:encoding:attributes:", + "isObscured", + "clearDirectoryResults", + "finishLaunching", + "accessibleLabelsAndValues", + "freeSpace", + "compileSourceOfType:", + "insertSingleQuoteIgnoringSubstitution:", + "cachedImageRefForNSImage:", + "initWithMachMessage:", + NULL, + "drawContextMenuHighlightForRow:", + "_discardEditing", + "freeOriginalImageCache", + "setNeedToExchangeItems:", + "_singleMutableArrayValueForKey:", + "deviceInputWithDevice:", + "_setFirstMoveableItemIndex:", + "formatDidChange:", + "_handleSpecialAlternateKeyEquivalent:", + "cellAtPoint:row:column:loaded:", + "_adjustTimer:", + "_fixTargetsForMenu:", + "setShadowsCells:", + "_setDragCompletionTargets:", + "swapWithMark:", + "_setSSLServerAuthUsage:", + "_addPathSegment:point:", + "_startTooltips", + "stringByResolvingSymlinksInPath", + NULL, + "pathForKeychain:", + "inputClientBecomeActive:", + "_subthumbnailLayers", + "_web_extractFourCharCode", + "isLastImportGroupVisible", + "overlayLight:onto:center:size:adjustHue:saturation:luminance:", + NULL, + "frameOfColumn:", + "cellMaximumSizeForCurrentBounds", + "initWithDomain:type:name:", + "_leftGroupRect", + "isMIAM", + "initWithContentSize:preferredEdge:", + "selectionFrame", + "_setKeychainRef:", + "configureForCalculatesAllSizes:", + "setShowsFirstResponder:", + "accessibilityIncrementButtonAttribute", + "_broadcastHardwareCaps", + "_syncToolbarPosition", + "startRollOverTracking:", + "moveWordForward:", + "_pathForResource:ofType:inDirectory:forRegion:", + "enumCodeValue", + "proxyPortForOriginalPort:", + "initializeContextForFetchRequest:ignoreInheritance:", + "_commonInitNavMatrix", + "_handleTestEvent:withReplyEvent:", + NULL, + "verifiedDirRef", + "discloseClicked:", + "drawImage:withFrame:inView:", + "__copyGLToCurrentFocusedView", + "loadFaces:", + "_drawsWithTintWhenHidden", + "initWithInternalManager:", + "textShouldBeginEditing:", + "getCurrentSelectionFrame", + "loadBundle", + "_allowAnimated_setAlphaValue:", + NULL, + "deviceConnectionWillChange", + "removePort:forMode:", + "_resizeHeight:", + "textContainerChangedGeometry:", + "absoluteX", + "_minYmaxXResizeRect", + "volumeDidChange:", + "exportVCard:", + "doActionForStatusBar:", + "writeToURL:ofType:error:", + "tableContentChanged:", + "department", + "_netInfoImageData", + "subentities", + "restoreWindowOnDockDeath", + "lineCapStyle", + "setTextColor:whenObjectValueIsUsed:", + "initWithDomainName:", + NULL, + "_optimizedRectFill:gray:", + "initByReferencingURL:", + "_fullLayout", + "declareChannels:", + "nts_DistributionIdentifierForProperty:person:inGroup:", + "setMonth:", + "setKeyboardFocusRingNeedsDisplayInRect:", + "slideshowSwitchToActualSize:", + "trackMouseCoordinates", + "_parseArguments", + "_redisplayTableContentWithRowIndexes:columnIndexes:", + "bindingRunsAlerts:", + "_prepareAlertError:responder:responderCandidate:window:recoveryAttempter:", + "_collection:setHidden:save:", + "setSelectedMembersFromModel:", + "advanceToActiveLocalTime:", + "fileWrapperFromRange:documentAttributes:error:", + "doLoadItemAtIndex:", + "scrollRectToVisible:", + "displayNameForKeychainAtPath:keychainRef:", + "_distanceInDragDirectionBeforeDragAttempt", + "_titleSizeWithSize:", + "setSpeechChannelWithVoiceIdentifier:", + "scanDecimal:", + "_coreUIDrawOptionsWithView:", + "slideshowPlay:", + NULL, + "animationDelay", + "deleteOutputPortForKey:", + "filePosixPermissions", + "initWithNSImage:options:", + "createCVOpenGLBufferForManager:withOptions:", + "_isSheetOnModalWindow", + "_goDown:", + "prepareGState", + "_setAllPanelsNonactivating:", + "_accessibilityToolbarButtonElement", + "_logFailure", + "_setSpecialPurposeType:", + "_setIdentifier:", + "_runGarbageCollectionForAge", + "setCriticalValue:", + "sharedDBCache", + NULL, + "invalidateAccessibilityTable", + "_moreCompleteVariantOfTypeDescription:", + "setReadOnly:", + "rendererName", + "setCacheUsed:", + "setAutoforwardsScrollWheelEvents:", + "plusButton", + "lightGrayColor", + NULL, + "_scrollToVisibleItemAtIndex:", + "_newOperatorWithType:modifier:options:", + "nts__isLastNameFirst", + "_endLiveResizeAsTopLevel", + "_performDiskCacheSync", + NULL, + "appendBezierPathWithRect:", + "_forceSendAction:notification:firstResponder:", + "_initVariables", + "imageBrowser:itemAtIndex:", + "inlinePreview:didShowPreview:", + "initWithToolbarItemViewer:", + "removeDirectoryAndContentsAtURL:andReturnResultCode:", + "writeStrokeWidth:", + "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:", + "_helperDeallocatedForView:layoutManager:", + "_selectInTabView:itemAtIndex:", + "_toggleAMPM", + "addAttribute:value:range:", + "setSharingType:", + NULL, + "isFileURL", + "allowEmptySel:", + "updateMembersSelection:", + "_initializeResumeInformation:", + "_primitiveGlyphRangeForCharacterRange:", + "setSecondaryGroupingSize:", + "setBadgeLabel:", + "_digitsForAxis:gridStep:", + "_retrieveNodeForObject:", + "_selectRowIndexes:inColumn:", + "setIsInInterfaceBuilderApp:", + "createInputWithPortClass:forKey:attributes:", + "setResultsReturnedInDictionary:", + NULL, + NULL, + NULL, + "_updateSpline", + NULL, + "_doICUSubstringMatchForString:andPattern:patternLength:ofType:", + "handleReconfiguredWindow", + "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:", + "drawArrowFrom:to:open:inContext:", + "setScaling:", + "createPrimaryKeyTableForModel:knownEmpty:", + "_applicableTrackingModeForSegment:", + "initWithItems:", + "_adjustDynamicDepthLimit", + "_valueForKeyPath:ofObjectAtIndex:", + "_endTabWidth", + "objectDidEndEditing:", + "coalesceInTextView:affectedRange:replacementRange:", + "lineWidthThreshold", + "fileIsAppendOnly", + "accessibilityStringForRangeAttributeForParameter:", + "setInfo:forKey:", + "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:forCursorPosition:", + "_computeTargetGridGeometry", + "mainThread_FOUNDATION", + "trackingAreasDidUpdate:", + "_orderOutInProgress", + NULL, + "accessibilityRulerMarkerTypeDescription", + "setHasTimebase:", + "convertFont:", + "hasVideo", + "__savePosition:context:", + "initWithTextBlock:charIndex:text:layoutManager:containerWidth:collapseBorders:", + "coloredLoggingDefault", + "performAndRenderAnimations", + "_markerLevelForRange:", + "_ensureHoveredImaged", + "_setExplicitlyCannotAdd:remove:", + "hasSound", + "_rulerAccViewUpdatePullDown:", + "_processDocument:", + "searchController:queryShouldSaveWithName:forAllApps:", + "nextTokenPeakUnicode:length:", + "entryState:", + "manageMetadataForRecords:action:", + "valueOfProperty:", + "reloadColumn:", + "layoutManagers", + "_document:pageLayoutDidReturn:contextInfo:", + NULL, + "domainDidUnbindAll:", + "_obtainOpenChannel", + "_clockAndCalendarReturnToHomeMonthButtonCell", + "abEscapeStringForUnichar:and:advance:", + "_drawEndCapInRect:", + "glyphAtIndex:", + "_nominalSizeNeedForTabItemLabel:", + "rightArrowPathInRect:", + "initWithContainerClassDescription:containerSpecifier:key:startSpecifier:endSpecifier:", + "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:", + "bindFromDiskMipmapItem:withUID:", + "estimatedItemCount", + "setGroupingSize:", + NULL, + "xmlAttributes", + "_usesCorrectContentSize", + "_delegateTypeSelectStringForIndex:", + "_compressionOptionsPropertyList", + "_doubleClickAction:", + "initWithPixelBuffer:bounds:replacingFormat:", + "_setSortable:showSortIndicator:ascending:priority:highlightForSort:", + "setBackgroundLayer:", + "_blockAndWaitIfNecessaryWithRequestIndex:", + "removeInputUnitsForConnection:fromGraph:ofCaptureSession:", + "_useFSRefsEvenOnPathBasedFileSystems", + "isCA:", + "_addToolTipRect:displayDelegate:displayInfo:", + NULL, + "setAnchorPoint:", + "_shouldInvalidateShadow", + "removeAnimationForKey:", + "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:", + "ISS_URLWithUsername:", + "_trustButton", + "_endChanging", + "debugDefault", + "initWithRow:column:tableView:", + NULL, + "_updateObservingInOutlineView:byDroppingRows:andAddingRows:", + "classForPortCoder", + "frameHighlightColor", + "setupWithOptions:createFilter:", + "_initWithCFURLProtectionSpace:", + "tableViewSelectionIsChanging:", + "valueInWordsAtIndex:", + "setMiterLimit:", + "_compareNode:withNode:usingColumnIdentifier:ascending:", + "_validateDisplayValue", + "nts_OpenContactManagerWithMode:cacheSchema:", + "includeNotesInVCards", + "formattingDictionary", + "setWasPaused:", + "_pixelRectInPoints:", + "scrollUp", + NULL, + "shouldProcessNamespaces", + "setPrimitiveOrganization:", + "numberStyle", + "freeBitsAndReleaseDataIfNecessary", + "layoutIfNeeded", + "controlTint", + "indexesToAdd", + "setStandardOutput:", + "nts_AddSubgroup:toGroup:", + "_performKeyEquivalentConditionally:", + "irisClosed:", + "imageNameForStatus:", + "visualRootNode", + "setGridColor:", + "_testGlyphTree", + "setDropRow:dropOperation:", + "trackMouse:adding:", + "fileNameExtension:isValidForType:", + "setAsMipmapOfImage:aspectRatio:antialiased:quality:", + "_setKeyEquivalentVirtualKeyCode:", + "toggleExpanded:", + "filterAdded:filterChain:", + "initWithUser:password:url:", + "_defaultGlyphForChar:", + "selectedSubrowObjectsAtIndex:", + "emissionRange", + "openAppleMenuItem:", + "abEntityKnowsKey:inAddressBook:", + "windowNumber", + "certTitleIndex", + "setDefaults", + NULL, + "setFxButtonsAreaInPanel:collapsed:", + "setEmptyView:", + NULL, + "_appendWhereClauseForConstantCollection:", + NULL, + "setup:", + "removeConfirmSheetDidEnd:returnCode:contextInfo:", + "_CFURLResponse", + "documentRect", + "maxTimeLinesCount", + "imageBrowser:cellWasRightClickedAtIndex:withEvent:", + "createNamedNodeFromNode:reader:", + "_setShouldEnforcePixelAlignment:", + NULL, + "pictureTaker", + "setHUD:", + "whitePointArray", + "pickerInfos", + "_createAddRowButton", + "position", + "_topBarHeight", + "makeNextSegmentKey", + "__shiftRight:", + "scrollToNormalizedValue:", + NULL, + "containsObject:inRange:", + NULL, + "_navView", + "_freeBitmaps", + NULL, + "currentSession", + "changeDestinationToRect:", + "hasItemsToDisplayInPopUp", + "_freeNodes", + "_calculateTitleForURL:requestIndex:", + "_newPlaceholderItemWithItemIdentifier:", + "_initWithParagraphStyle:", + "nearestCellOfPosition:", + "syncToView:", + NULL, + "_closeSheet:andMoveParent:", + "glyphIndexToBreakLineByHyphenatingWordAtIndex:", + "invokeDefaultMethodWithArguments:", + "removeObjectsAtIndexes:", + "highlightCell:atRow:column:", + "indexPathByAddingIndex:", + "parseEntrustVersInfo:", + "setMultiValue:forProperty:", + "automaticallyNotifiesObserversForKey:", + "fontDescriptorsInCollection:", + "getRulebookData:makeSharable:littleEndian:", + "mergeChangesFromContextDidSaveNotification:", + "_flushAEDesc", + "blueReconstruction:green:phase:", + "toolbarWillAddItem:", + "initWithUnsignedLongLong:", + "setDefaultFormatterBehavior:", + "setAllowsTickMarkValuesOnly:", + "_setMe", + "setPaletteLabel:", + "registerNodeWithClass:identifier:", + "_descriptorByTranslatingNumber:ofType:inSuite:", + "setDefaultWindingRule:", + "initWithCollection:", + "setFocusValue:forAccessibleChildAtIndex:", + "setSegmentStyle:", + "setRotation:", + "titleHeight", + "_invalidateScaledBackground", + "drawPortView:", + NULL, + "parseOidWithDictionary:", + "abortFreeTemporaryCache", + "_setWritesCancelled:", + "cStringLength", + "_continueModalOperationToTheEnd:", + "_handleWillPopUpNotification", + "imageWithOrientation:", + "nts_PathForUIDTaggedImage", + "nts_RemoveRecord:", + NULL, + NULL, + "setEventClass:", + "_setNextToolbarSizeAndDisplayMode:", + "setDisplayLinkRef:", + "initWithFrame:filter:", + "paletteFontOfSize:", + "isDistributionList", + NULL, + "_setFrameUsingName:domain:force:", + "_virtualNodeOfType:", + "stashSize", + "actionWithActionDictionary:forDocument:", + "_setFrameFromString:force:", + "canInitWithURL:", + "timeSliderCurrentTime:", + "visiblePagesChanged:", + "authorizationViewDidDeauthorize:", + "_nonKeyEditingFrameColor", + "setDocumentContentKind:", + "_list", + "setRawDataFormat:", + "noteHeightOfRowsWithIndexesChanged:", + "viewFrameChanged:", + "initWithUIElementValue:", + "dataRefData", + "_realWindowNumber", + "initWithDocumentButton:", + "entityID", + "filtersInDomains:Categories:Objects:", + "getObjects:andKeys:", + "keylessStructures", + "templateView", + "_certAuthoritykeyAlgorithm", + "addressBookSource", + "isFieldVisible:", + "vrInstance", + "autoValidationDisabled", + "_setChangedFlags:", + NULL, + "_startRunningNonBlocking", + "_keyEquivalentsAreActive", + "setPostsFrameChangedNotifications:", + "directoriesGroup", + "tokenFieldCell:editingStringForRepresentedObject:", + "_chooseFamily:", + NULL, + "unmountAndEjectDeviceAtPath:", + "fieldEditableControl", + "_setHasSurfaceBackedOpenGLContext:", + NULL, + "binaryOperatorForSelector", + "deleteToEndOfLine:", + "treatsFilePackagesAsDirectories", + "localAddressBookSourceWithAddressBook:", + "zero", + "initWithEntity:inverseToMany:", + "disableCursorRects", + "portForName:onHost:", + "pathsForResourcesOfType:inDirectory:", + "transformStruct", + "areaOfInterestForMouse:", + "_insertChildOrSibling:", + "_colorByTranslatingRGBColorDescriptor:toType:inSuite:", + "_generateSQLForWildSubStringForGlob:wildStart:wildEnd:", + "floatParameterValue:forResolution:", + "addQuaddingToDictionaryRef:", + "GIFRepresentation", + "selectedComposition", + "numberOfChildren", + "initWithTCPPort:", + NULL, + "_setDistanceForVerticalArrowKeyMovement:", + "_insertObject:inSubNodesAtIndex:", + NULL, + "startAngle", + "removeFileAtPath:handler:", + "_initWithoutAEDesc", + "setAllowsColumnResizing:", + "setOutputImageKey:", + "_popIfTopHandling:", + "_unobstructedVisibleHeaderRectOfColumn:", + "_unitsForClientLocation:", + "_layerDidBecomeVisible:", + "arrayWithRange:", + "_hasToolbar", + "setTextAttributesForPositiveInfinity:", + "_shouldAnimateColumnScrolling", + "_rememberAndResignFirstResponder", + "_newScroll:", + "canGoToLastPage", + NULL, + "performClickWithFrame:inView:", + "_createRowForCriteriaSlice:", + "setRightMargin:", + "_delegateValidation:object:uiHandled:", + "setUndoManager:", + "replaceSubview:with:", + "_computeImageFrame", + "nextDaylightSavingTimeTransitionAfterDate:", + NULL, + "isLike:", + NULL, + NULL, + "tableView:shouldSelectRow:", + "absoluteString", + "ctx", + "databaseOperator", + "insertLineSeparator:", + "exclusives", + "deactivateServer:", + "beginIgnoreChanges", + "_setMenuItemBelongsToContextualMenu:", + "dstDraggingExitedAtPoint:draggingInfo:", + "postpone", + "attachedMenuView", + "_installed", + "orderForProperty:comparison:", + "doSetImageWithURL:", + "runCustomizationPalette:", + "isNSNumber__", + "_startingWithDocument:continueSavingAndClosingAll:contextInfo:", + "alternateSelectedControlTextColor", + "drawRow:clipRect:", + "isRotatedFromBase", + "getAllCategories", + "_batchClose", + NULL, + "setMarkedText:selectedRange:replacementRange:", + "openURL:", + "indexSet", + "greenVotedReconstructionROI:destRect:", + "_setFileNameExtensionWasHiddenInLastRunSavePanel:", + "checkSpaceForParts", + "_contentRectExcludingToolbar", + NULL, + "quartzFilterWithOutputIntents:", + "predicateWithLeftExpression:rightExpression:modifier:type:options:", + "QT_URLByRemovingFragment", + "_showToolbarWithAnimation:", + NULL, + "shouldSuppressNotificationFromObject:keyPath:", + "addResponseBodyReader:", + "nextTokenPeak:", + "showPreferencesPanel", + "_addObject:objectIDMap:", + "initWithPath:flags:createMode:", + "_didLoadMetadata", + "fetchIntermediateForKeypathExpression:", + "_dotMacAccountNameFromSystem", + "_drawRollOver:", + "_accessibilityIsSpaceOrSeparatorItem", + "_defaultItems", + "objectsForXQuery:constants:error:", + "reportFrameRate", + "_indicatorOffset", + "shouldRenderOnBackgroundThread", + "keyForObject:", + "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:", + "_menuScrollingOffset", + "_zScreen", + "registerTranslator:selector:toTranslateFromDescriptorType:", + "validateValue:forKey:", + "initWithName:boundObject:", + "playerFrame", + "_pointRectInPixels:", + "cleanUpAfterDragOperation", + "drawMarkersInRect:", + "_rightmostAutoresizingColumn", + "startAnimateZoomToScaleFactor:", + "calculateOutlineLayer:forResolutionData:", + "setColumns:", + "getIDRefStringForValue:ofRelationship:stringKeys:objectIDMapping:objectForError:", + "setPositiveInfinitySymbol:", + "_paragraphClassforParagraphStyle:range:isEmpty:isCompletelyEmpty:headerString:alignmentString:directionString:", + NULL, + "initWithCoach:contentRect:contentImage:", + "setHeaderView:", + "loadView", + NULL, + "_setGenerateCombinedVCards:", + "decimalTabMarkerWithRulerView:location:", + "imageROI:forRect:userInfo:", + "flushTextRenderer", + "_nextDaylightSavingTimeTransitionAfterAbsoluteTime:", + "mipmapCacheDidSave:", + "layoutChanged:", + "decimalNumberWithString:locale:", + "_addCredential:forProtectionSpace:", + "clearCachedImageData", + "createString", + "_isCancelledAfterHandlingUserEvents", + "textView:shouldChangeTextInRanges:replacementStrings:", + "_accessibilityBoundsOfChild:", + "_highlightRow:clipRect:", + NULL, + "isFeatureEnabled:", + "playsAllFrames", + "mnemonic", + "chapterList", + "documentUnlocked:", + "isSingleTableEntity", + "_win32ChangeKeyAndMain", + "_ownsWindowGrowBox", + "_isRunningDocModal", + "scaleRegionOf:destRect:userInfo:", + "autohidesScrollers", + "_spanClassForAttributes:inParagraphClass:spanClass:flags:", + "valueType", + "windowDidBecomeKey:", + "willBeRemovedFromView", + "currentLocale", + "colorWithDeviceRed:green:blue:alpha:", + "setZPosition:", + "nameCount", + "_textOffset", + "prepareDeleteStatementWithCorrelation:", + "initWithContainerClassDescription:containerSpecifier:key:index:", + "_initWithObserver:property:options:context:", + "_activeFileListViewForResizing", + "updateTheaterButtonWithActive:", + "scrollLineDown:", + "setupImageLayer", + "_userSetCurrentItemsToItemIdentifiers:", + "_commitEditingWithSuccessInvocation:failureInvocation:", + "_updateAccumulator:", + "_accessRef", + "hasSuffix:", + "setViewSize:", + "_openFile:withApplication:asService:andWait:andDeactivate:workaroundNonAEAwareApp:", + "_shouldAttemptIdleTimeDisposeOfLiveResizeCacheWithFrame:", + "_textColorForSegment:", + "_syncSwatchSizeToSavedNumVisibleRows", + NULL, + "gizmoHitTest:", + "adjustFrameOriginX:", + "transformBy:", + "resultData", + "shouldUseOriginalImageToCacheNiceImageWithSize:", + "_scriptClassTerminologyForName:", + "sharingPreviewPanel", + "_minYResizeRect", + "_partAtPoint:inFrame:", + "_genericMutableSetValueForKey:withIndex:flags:", + "_writeSummaryData:", + "responseHeaders", + "replaceLabelAtIndex:withLabel:", + "createGrids", + "setAuthenticationType:", + "scrollScheduleStep", + "lineToX:andY:", + "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:", + "selectDirectoryResultRow:subrow:byExtendingSelection:", + "CVOpenGLTextureCache", + "initWithCertificate:trust:parse:", + NULL, + "writeMetadataToFile:error:", + "prepareEndsWith:", + "setPrimitiveEmail:", + NULL, + "currentSearchIndex", + "removeFontDescriptors:fromCollection:", + "_trackMouse:inNode:bounds:", + "filterWithFilter:connectionID:", + "captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:", + "changeColor:", + "nts_SetValueInTemporaryCache:forProperty:", + "resumeExecution", + "defaultPixelFormat", + "clearInput", + "initWithType:", + "_createCert:privKey:keychain:", + "_allValues", + "textEncodingName", + "stopSpeaking", + "_recursivelyAddItemsInMenu:toTable:", + NULL, + "pickGroupAtPoint:", + "setCocoaVersion:", + "initWithRequest:allowRedirections:", + "sharedSpellChecker", + "_storeConfigurationChanged:", + NULL, + "nts_RemoveSubgroup:fromGroup:", + NULL, + "_saveVisibleFrame", + "imageHasChanged", + "handleKeyboardEvent:callRef:", + "displayViewForPluginView:", + "setLocations:startingGlyphIndexes:count:forGlyphRange:", + "numberWithUnsignedChar:", + "databaseChangedExternally:", + "_setNeedsDisplayForItemIdentifierSelection:", + "_colorSpaceForColorArray:", + "initWithMachPort:", + "_web_isCaseInsensitiveEqualToString:", + "hideContainerForItem:", + "pixelFormatM_Ih", + "options", + "_setHasShadow:", + "_aquaColorVariantChanged", + "alternativeTypeDescriptions", + NULL, + "knobLayerFlags", + "invalidateAttributesInRange:", + NULL, + "_dispatchRequestInfo", + "_generateSQLForConstantValue:inContext:", + NULL, + "_referenceBindingValueAtIndex:", + NULL, + "_writeColorsToLibrary", + NULL, + "setDefaultValue:forInputKey:", + "_headerWithName:", + "unschedule:mode:", + "isDescendantOf:", + "control:textShouldBeginEditing:", + "setAutoscroll:", + "__ivar_setTrackingCell:", + NULL, + "deserializeServers:", + "connectedPort", + "_removeWindow:", + "ibSetSampleURL", + NULL, + "formatDescriptionWithFigFormatDescription:", + "_portForPoint:inNode:bounds:", + "targetTrackForInsertFromTrack:", + "activeDirectoryPassword", + "nodeManager", + "_setInputIKImage:", + "viewForUIConfiguration:excludedKeys:", + "enumeratorOfInputImage", + "_applySelectionIndexes:toItems:", + "setPixelAspectRatio:", + "birthDate", + NULL, + "setInitialValue:", + "propertyDefinitions", + "editedMask", + NULL, + "pushNibPath:", + "setOriginalImagePath:", + NULL, + "tabViewItemAtPoint:", + "_discardDocumentPreview:", + "removePatch:", + "_deallocHardCore:", + "insertionKey", + "rectForIconInCellFrame:", + "initWithPropertyNameArray:", + "isItemExpanded:", + "convertFont:toApproximateTraits:", + "parent", + "addColumns:", + "initWithObserver:keyPath:context:", + "preferredRate", + "_defaultButtonPaused", + "addChildObject:", + "_generateToManySQLStringInContext:", + "_subsetDescription", + "_setContentToContentFromIndexSet:", + "_performActionWithCommitEditing", + "returnToHomeMonthButtonCellForDatePickerCell:", + "nts_InfoWithAddressBook:", + "generationCount", + "resume", + "performanceCounters", + "setDecimalSeparator:", + "miterLimit", + "decodeClassName:asClassName:", + "_changeIDsForManagedObjects:", + "internalClearSelection", + "registerFilterName:constructor:classAttributes:", + "webPlugInCallJava:isStatic:returnType:method:arguments:callingURL:exceptionDescription:", + "dragMovie", + "infoWithType:size:location:", + "unsetOnOpenGLContext:unit:", + "decObservationCount", + "endSubelementIdentifier", + "_hasSelectedPatches", + "_tileContinuousScrollingBrowser", + "_markHasLoadedData:", + "usePrimarySourceListStyle", + "windowChangedKeyState", + "_selectKeyCellAtRow:column:", + "_setDidEndSelector:", + "directoryServicesServer", + "inputConnectionForOutputConnection:", + "cellAtPoint:row:column:", + "initWithURL:quartzFilter:", + "accessibilitySetFrontmostAttribute:", + "_selectLastSubfield", + "_registerObservingForAllModelObjects", + "_growRegistrationCollectionTo:", + "windowWillClose:", + "makeUID", + "alwaysVisibleWhenStopped", + "checkCount:", + "relationshipKeyPathsForPrefetching", + "_sizeFromSubitemsMinSize:maxSize:", + "renameList:", + "isExpanded", + "_allowsActiveInputContext", + "redoMenuTitleForUndoActionName:", + "_unbind:notifyDelegate:", + "_isGapStyleDropTargetForRow:operation:mask:", + "setEventHandler:andSelector:forEventClass:andEventID:", + "_applyAllValuesFromValueBuffer", + "takeStoredValue:forKey:", + "recompileSourceOfType:", + "_appendWhereClauseForExpressionCollection:", + "calcThumbnailSize", + "setDescriptor:forKeyword:", + "attachmentCell", + "_forceRemoveItemFromIndex:", + "typeFromFileExtension:", + "setDisplaysLinkToolTips:", + "performActionForItemAtIndex:", + "_cellIsEditableAtColumn:row:", + "yAccel", + "setBezeled:", + "_userSelectTextOfNextCellInSameColumn", + "_freeNode:", + "_setThumbnailView:", + "currentVersionURL", + "addDocumentWithURLToIPhoto:commit:", + "pixelFormatBGRX8", + "getAttributesAndValuesForPlugin:", + "_addWindow:", + "notifierMap", + "imageNamed:fromBundle:", + "texturePixelsHigh", + "_destroyRealWindow:", + "clearDrawable", + "groupingLevel", + "draggingExited:", + "stringWithContentsOfURL:", + "_defaultItemIdentifiers", + "IKIPArrayByApplyingSelector:", + "exportItem:toApplication:", + "indexIntoTemplate", + "_scheduleHideControlsPanel", + "unvalidatedSpecifier", + "setOpenGLTextureOffset:", + NULL, + "queryStringForItems:values:", + "shouldShowControlWithID:", + "initWithName:appleEventCode:objcClassName:", + "_setHasHorizontalScroller:", + "isAutodisplay", + NULL, + "performIntegrityCheck", + "nextPrimaryKey64", + "_menuRepresentationHasBeenSet", + "setScrollMode:", + "getDownloadedResource", + "mouseDownAction", + "leading", + "exchange::", + "start", + "invokeUndefinedMethodFromWebScript:withArguments:", + "_isPendingUpdate", + "_addUniqueNameOrNames:toNames:", + "fieldName", + "characterSetWithName:", + "updateGroupsSelection:", + "_chunkAndCheckGrammarInString:language:usingSpellServer:details:", + "initWithTarget:selector:object:", + "_accessibilityToolbarItemViewerHelperClass", + "membersChanged:", + "containsObjectIdenticalTo:", + "viewDidUpdateTrackingAreas:", + "contact", + "mergePolicy", + NULL, + "allowsNullArgumentWithBinding:", + "_setNeedsDisplayInColumn:row:", + "localizedNameOfStringEncoding:", + "_processRequest:", + "_old_encodeWithCoder_NSComboBoxCell:", + "setDuration:", + "kbVersionString", + "setDestinationURL:", + "openFile:operation:", + "propertyListForType:", + "_enclosingClipViewDidChange:", + "moveWordLeftAndModifySelection:", + "_storeClassForStoreType:", + "scheduleProgress", + "hasRamLeftToContinueSchedule", + "currentTextView", + "pixelFormatsWithCompatibilities:pixelColorModel:pixelAlpha:pixelType:", + "_getIsExpansionToolTip:", + "acceptLastEnteredText", + "_equalyResizeColumnsByDelta:resizeInfo:", + "newGeneratorWithStatement:", + "textViewForBeginningOfSelection", + "applicationDelegateHandlesKey::", + "reloadGroups", + "_removeSubNodesAtIndexes:", + "_predicateForSpecificEntity:", + NULL, + "tooltipStringForPoint:inNode:bounds:tooltipBounds:", + "beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:", + "IKSizeOfTextForWidth:textView:", + "initWithCGLayer:", + "groupList:includeSpecial:all:subscriptions:readOnly:smart:", + "delayedShowcase:", + "_shouldTryCoreUIDrawing", + "_minYminXResizeRect", + NULL, + "nts_ShareCount", + NULL, + "_statusCodeSuccessful", + NULL, + "imageCropView:didReceiveDraggedImage:", + "CA_isDirectoryAtPath:", + "_unregisterDynamicToolTipManagerInstance:", + "fileListMode", + "_eventDelegate", + "drawDisclosureGroupTail:inRect:", + "_resizeTextViewForTextContainer:", + "showStatus", + "currentEditor", + "changeVector:", + "_imageFrame:", + "accessibilityAXAttributedStringForCharacterRange:parent:", + "selectionShouldChangeInOutlineView:", + NULL, + "isNetworkUp", + "exitFullScreenModeWithOptions:", + "_position", + "setTimeValue:", + "_removeOutputConnectionsForInputConnection:", + "cacheFragHandler", + "_isLayerBacked", + "pathCellClicked:", + "setTransform:", + "launchedTaskWithLaunchPath:arguments:", + NULL, + "isToManyKey:", + "bundleForClass", + "getRotationAngle", + "rectForKey:inTable:", + "thumbnail", + "panelController", + "dictionaryRepresentationOfRecordOfClass:tableName:atRow:resultsView:", + "removeValueAndLabelAtIndex:", + "setHeartBeatCycle:", + "QTKitErrorNotification:", + NULL, + "setExternalReferenceCount:", + "standardEffectsForImageState:backgroundStyle:startingFromBaseArt:", + "_unregisterDragTypes", + "setFileListOrderedByFileProperty:", + "validRequestorForSendType:returnType:", + NULL, + "setDropItem:dropChildIndex:", + "propertyType", + "scrollBarVisible", + "sharingProgressForGroup:showUpdateSharingIndicator:", + "_updateNodeList:byAddingNode:", + "_autoSelectCallback", + "_reloadDataForNode:", + "_showBorder", + "_validateValuesAreOfDestinationEntity:source:", + NULL, + "windowWillReturnFieldEditor:toObject:", + "setUsePixels:", + NULL, + "_openRegularCollections", + "unselectAllItems", + "visitor", + "markUniqueIdsAsPlanned:", + "removeObject:objectIDMap:", + "listDescriptor", + "decodeDoubleForKey:", + "holesFlavor", + "setMagnificationFilter:", + "accessibilitySetMinimizedAttribute:", + "compositeToPoint:operation:fraction:", + "addMultiValues:toProperty:", + "_bestRepresentation:device:bestWidth:checkFlag:", + "_allocateAuxData", + "newObject", + "changeBaseWritingDirectionToLTR:", + "_realPlaceHolderAttributedString", + "keyEquivalentAttributedString", + "setChangedValues:", + "openHost:user:password:", + "unbindLayer:", + "isKey:inTable:", + "initWithKind:name:stringValue:URI:", + "_dataWithConversionForType:", + "objectsAtIndexes:", + "abortCurrentTask", + "valueWithName:inPropertyWithKey:", + "strokeOval:color:context:", + "closestPixelFormat:outDifference:", + "abStringAtRange:inEncoding:", + "resizeRightCursor", + "rectForPart:", + "drawSeparatorItemWithFrame:inView:", + "_findWindowUsingRealWindowNumber:", + "setDocumentCursor:", + "_canAnimateScrolls", + "_dismissModeless:", + "splitViewWillResizeSubviews:", + "registerNodesWithManager:", + "dsDataList", + "setSelectedDirectoryResults:", + "initWithGRL:invocation:withDelay:", + "fileExistsAtPath:", + "glyphIndexForPoint:inTextContainer:", + "inputExtentAtIndexes:", + "setBinding:", + "_setDrawsWithTintWhenHidden:", + "switchLayoutTo:withAnimation:", + "countdownView", + "registerTasks", + "abVCardKoshify", + "setMarker:", + "outlineView:isGroupItem:", + "initWithJPEGFile:options:", + "setNameFieldLabel:", + "handleSaveScriptCommand:", + "textProc", + "acceptDroppedFile:", + "keyCell", + "dataWithBytes:length:", + "initWithTranslator:selector:", + "setLocalDrag:", + NULL, + "nts_Disconnect", + "_stringWithSavedFrame", + "_fromScreenCommonCode:", + "setNumSlices:", + "createOutputWithPortClass:forKey:attributes:arguments:order:", + "iconView:keyDownEvent:", + "tableView:writeRowsWithIndexes:toPasteboard:", + "_readColorIntoRange:fromPasteboard:", + "captureOutput:didStartRecordingToOutputFileAtURL:forConnections:", + "setROISelectorForKernel:jsROIFunction:", + "_initializeWithContentsOfDictionary:", + NULL, + "shouldProceedAfterError:", + "comboBoxCell:objectValueForItemAtIndex:", + "_titleCellSize", + "_desiredLayerSizeMeritsTiledBackingLayer:", + "setRemoteURL:", + "isRectangular", + "transform", + "collatorElementWithName:", + "_menusWithName:", + "usesLazyFetching", + "addFlagsToDictionaryRef:", + "connectObject:withKey:toObject:withKey:userInfo:", + "_initWithName:fromCMProfileRef:", + "newStatementWithEntity:", + "engineRef", + "_handleSelectionInZoomMode:", + NULL, + "initWithTitle:", + "_handleCursorUpdate:", + "decodeArrayOfObjCType:count:at:", + "setTextColor:range:", + NULL, + "fontSize", + "CA_pathComponents:", + "_mainStatusChanged", + "representationOfImageRepsInArray:usingType:properties:", + "_setValueWithoutNotification:", + "_setupMidnightTimer", + "instantiateWithObjectInstantiator:", + "mapTableWithKeyOptions:valueOptions:", + "mapTableWithWeakToWeakObjects", + "URLHandle:resourceDidFailLoadingWithReason:", + "selectionRangeForProposedRange:granularity:", + "rootNode", + NULL, + "initWithDir:dsDataNode:", + "versionHash", + "runPoof", + NULL, + "provider", + "setProgress:", + "_registeredClasses", + "setViewAnimations:", + "_setZoomFactorX:factorY:centerPoint:", + "prefixForName:", + "setEmpty:", + "affectedStores", + NULL, + "insertObject:", + "_setupObserving", + NULL, + "_propagateCocoaDirtyRectsForView:toCarbonView:", + "configValueForKey:defaultValue:", + NULL, + NULL, + "initInternalViews", + NULL, + "ISS_initWithScheme:host:port:uri:", + "_indexForProperty:", + "substituteGlyphsInRange:withGlyphs:", + "createPixelBufferWithFormat:pixelsWide:pixelsHigh:options:", + "accessibilityIsSelectedRangeSettable", + "_willPresentSavingError:forOperation:url:", + "setCompositingFilter:", + "_doScroller:", + NULL, + NULL, + "_useAutoreleasePoolInTrackMouse", + "_createStoreFetchRequestForFetchRequest:", + "_javaLastError", + "handleKeyUp:inNode:view:", + "setIsReference:", + "canonicalHTTPURLForURL:", + "initWithItem:", + "documentFragmentForDocument:", + "_copyRenderingContextWithGlyphOrigin:", + "crayonToRightOfCrayon:", + "_drawRectAsLayerTree:", + "varianceInitROI:destRect:userInfo:", + "toolbarLabelFontSizeForToolbarSize:", + "_fullName", + "initWithOperatorType:modifier:variant:", + "allowedValueBindingMask", + "advancePastEOL", + "scheduleSyncPageIndex:", + "descriptorForKeyword:", + "_shouldUseSecondaryHighlightColor", + "descriptionWithCalendarFormat:timeZone:locale:", + "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:", + "insertValue:inPropertyWithKey:", + "_postBoundsChangeNotification", + "_addCells:", + "_moveTexturesFromContext:toContext:", + "checkBufferSize", + "hitTest:fromLayer:", + "isUndoing", + "_nibName", + NULL, + "writeBOSNumString:length:ofType:scale:", + "CAML_supportedClass", + "isSheet", + NULL, + NULL, + "displayNameForKey:value:", + "contentsGravity", + NULL, + "removeRecord:", + NULL, + NULL, + "standardEffectsForImageWithCocoaName:state:backgroundStyle:", + "_notifyEdited:range:changeInLength:invalidatedRange:", + "_queryServerForLockToken:", + "removeItemAtPath:error:", + "_operatorForType:", + "_web_rangeOfURLHost", + "_keyEquivalentMapIsDirty", + "_doCleanupOnFailure:", + "_initWithView:printInfo:", + "_initWithStream:data:topDict:", + "writeToFileWithAutomaticFormat:", + "setOptionsAttributes:string:", + "_sendDoubleActionToCellAt:", + NULL, + "_createAssociationsByDestination:fromSource:forEntityMapping:", + "addNode:", + "deleteInputForKey:", + "deleteRow:", + "_internalNextTypeSelectMatchFromIndex:toIndex:forString:", + "handlePictureTakenNotification:", + "_sendDelegateDidClickColumn:", + "_predicateForCustomProperty:comparison:value:label:", + "objectDidTriggerAction:", + "thicknessRequiredInRuler", + "aeteResource:", + "_removeObjectForAttributeKey:", + "entityForObject:", + "folderPath", + "disableDelegateMessages", + "_setMinPickerContentSize:", + "canPaste", + NULL, + "_browserAction:", + "_updateMetalBackgroundStyle", + "_detatchNextAndPreviousForAllSubviews", + "zoomMaxCallback:", + "customViewForPanel:withSize:withTypes:popupExtension:saveType:saveCreator:optionFlags:", + "destinationEntityVersionHash", + "_setBindingAdaptor:", + "customDraggedImage:", + NULL, + "_cacheRepresentation:toSizeInPixels:stayFocused:", + "_currentFamilyName", + "shadowFrom:red1:green1:blue1:alpha1:red2:green2:blue2:alpha2:opacity:", + NULL, + "_cycleDrawersBackwards:", + "setUpFieldEditorAttributes:", + "_userSelectSingleColumn:", + "fitToScreen", + "destinationAlias", + "docFormatFromRange:documentAttributes:", + "orderOut:", + "_updatePredicateFromRows", + "session:storeAuthChallenge:forURL:", + "_createNaughtDelegate", + "initWithDir:value:", + "transferMode", + "_importThreadContinued:", + "popTopView", + "addStringToRecentReplaceStrings:", + "doAddAnnotaion:", + "URL:resourceDidFailLoadingWithError:", + "nicestRenderingProgress", + "interiorBackgroundStyleForSegment:", + "_deviceLineToPoint:", + "_hasTiledBackingLayer", + "_init::::", + "insertionIndexForMember:inSortedMembers:", + "removeExpandedNodesStartingWithIndex:", + "accessibilityMenuBarAttribute", + "pdfPageCharIndexToCGPageRefIndex:", + "_convertRect:toPos:andLen:", + "_expressionWithSubstitutionVariables:", + "_setTarget:", + "propertyValuesWithKey:addressBook:", + "keyToIndex:", + NULL, + NULL, + NULL, + "_drawTitleBar:", + "_old_writeColorsToGlobalPreferences", + "viewWithFrame:forView:characterIndex:layoutManager:", + "applyFunctionOnSubpatches:context:recursive:", + "_resizeViewToFit:", + "setOutputFormat:", + NULL, + NULL, + "generateSelectIntermediateInContext:", + "setDestinationOptions:", + "vertPass9ROI:destRect:", + "_cellOrControlForObject:", + "updateButtonState", + "_setCurrentListLevel:", + "scrollRectToVisible:inScrollView:animate:", + "deleteSelection", + "decodeLongForKey:", + "removeRowsAtIndexes:includeSubrows:", + "edge", + "_volumeIsLocalForRefNum:", + "createTransformedImage:", + "migrateStoreAtURL:toURL:storeType:options:withManager:error:", + "browser:selectCellWithString:inColumn:", + "_segmentedControlDidChangeHighlightDuringTracking:", + "setReservedThicknessForMarkers:", + "entityMigrationPolicyClassName", + "_setPreviousNibBindingConnector:", + "addressBookCoreDataDatabaseFile", + "_clipIndicatorIsShowing", + "_rowsChangedByLastExecute", + "_handleDisabledNodeClicked:", + "_dismissModalForTerminate", + "_needsHighlightedTextHint", + "cachedImagePathForEmail:", + "_containerViewOfColumns", + NULL, + "setCocoaSubVersion:", + "layoutManager:shouldUseTemporaryAttributes:forDrawingToScreen:atCharacterIndex:effectiveRange:", + "setEnabled:", + "sortingLastName", + "preferredFilename", + "_lastDragDestinationOperation", + "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:", + "qualityHint", + "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", + "itemRolledOut", + "didLoadNib", + "matchIndexForPerson:withPieces:", + "sizeHeightToFit", + "RTFFromRange:documentAttributes:", + "_userInsertItemWithItemIdentifier:atIndex:", + "_createDefaultOrUnflattenPrintSettingsIfNecessary", + "_collapseButtonOrigin", + "containerSpecifier", + "writeSelectionToPasteboard:type:", + "accessibilityIsHiddenAttributeSettable", + "setTextContainer:forGlyphRange:", + "first", + "setUsesAlternatingRowBackgroundColors:", + "addTimeInterval:", + "supportsTransformation", + "_adjustedFrameForSaving:", + "countKeyPath", + "decimalNumberWithString:", + "orderedIndex", + "setControlTint:", + "croppedImageFromOriginalImage:cropInfo:cropSize:outputSize:bgColor:", + "setFinished:", + "_accessibilityGrowBoxRect", + "setACEs:", + "closeShowcasedMenu:", + "vramBindedRange", + "current", + "_availableContentRectForCellFrame:isFlipped:", + "unlearnWord:", + "_sizeMatrixOfColumnToFit:", + "retainedDataForObjectID:withContext:", + "cachedResponseIsValid:", + "updateRecentPicture:setCropInfo:smallIcon:", + "vectorWithX:Y:Z:W:", + "mipmapCache:didLoadMipmap:withUID:", + "facingPageForPage:", + NULL, + NULL, + "_drawRepresentation:", + NULL, + "enumerationDescriptionFromName:implDeclaration:presoDeclaration:", + NULL, + "objectForDatabaseKey:", + "_initWithScriptIDNoCopy:", + "_moveFullscreenViewToView:", + "_primitiveDeleteGlyphsInRange:", + "didChangeExpandedNodes", + "characterIndexForPoint:", + "createDictionaryRef", + NULL, + "textView:draggedCell:inRect:event:", + "_windowDidOrderOnScreen:", + "restartTasks", + NULL, + "contentCountWithEditedMode:", + "setAutoPositionMask:", + "initForKeys:", + "_rangeForUserBaseWritingDirectionChange", + "scalable", + "lockForWriting", + "abDidRevertFromBackupCompleteResetContextAndUnlock:", + "showsLockButton", + "_movieIdle", + "alwaysShowNode:inDirectory:selectIfEnabled:", + "sharedInspector", + "_createBitmapImageRepFromCGRepresentation", + "_endLiveResize", + "resizeUpCursor", + "registerRow:forObjectID:", + NULL, + "emptyAttributeDictionary", + "hasTitleBar", + "setProperty:forKey:", + "_endInsertionOptimizationWithDragSource:force:", + "cameraNotConnectedText", + "enableDelegateMessages", + NULL, + "_createOutputPortForTimeLineIndex:", + "_titleWidth", + "_informationForFont:glyphTable:positionTable:", + "fixupDirInfo:", + "startPeriodicEventsAfterDelay:withPeriod:", + "initWithContentsOfURL:options:", + "selectionWillChange", + NULL, + "cancelQuery", + "controlsDidLayoutWithWidth:oldWidth:", + "retainArguments", + "_getAuxData", + "setSourceDimensions:", + "_browser:keyEvent:inColumn:", + "elementWithName:URI:", + "lockIsNotValid:", + "createCharacterSets", + "customDraggedImageLocation:", + "_processMetadataForDocument:", + "htmlStringForAttachment:atIndex:", + "DSQueryComponents", + "_copyCertificateFromPublicKeyHash", + "_setDrawsAsNavigationBar:", + "_frameForLayer:inBounds:", + "_typeDescriptionForAppleEventCode:", + "_fsRefValue", + NULL, + "directory", + "performDragOperation:", + "setPreferredBackingLocation:", + NULL, + "_addWindowsMenu:enabled:", + "ruleEditor:parentCriterion:compareCriterion:withLocalizedDisplayValue:toCriterion:withLocalizedDisplayValue:", + "red", + "enable:", + "otherMouseDraggedDelegate:", + "drawInContext:drawSelection:", + NULL, + "_growWindowReshapeContentAndToolbarView:animate:", + NULL, + "_isResizable", + "_inlinePreviewDidChangePlaying:", + NULL, + "colorWithRed:green:blue:alpha:", + "accessibilitySelectedRange", + "getCString:maxLength:range:remainingRange:", + "CA_JSClassName", + "autosavingFileType", + "setCellsHaveSubtitle:", + "_dynamicColorsChanged:", + "_setTitle:", + "controller", + "newFetchedPKsForSourceID:andRelationship:", + "_addMarkersToList:range:", + "setContentsGravity:", + "currentPreviewView", + NULL, + "_edge", + "_adjustedSizeFromSize:withMinSize:maxSize:ratio:deltaPosition:", + "_resetRefCount:", + "shouldArchiveValueForKey:", + "_audioChannelRange", + "addRecord:", + "convertRect:fromLayer:", + "dataReferenceAtIndex:", + "rangeOfGraphicalSegmentAtIndex:", + NULL, + "initWithManagedObjectModel:configurationName:", + "minimizeWindow:", + "adjustToPDFView:subIndex:", + NULL, + "ISS__ay_performSelector:inThread:", + "createCommonNotificationUserInfoDictionary", + NULL, + "connectionMediaTypes", + "retainCaches", + "cellWithTag:", + "synthesizerIsRetained", + "minimumDecimalNumber", + "initWithRepresentedObject:treeController:", + "_clearSelectedCell", + NULL, + "formatterBehavior", + "_displayedDocumentPreview", + "_isGenericProfile", + "_moveSource:toDestination:", + "loadDidSucceed", + "_prepareForReloadChildrenForNode:", + "isInputTopLine", + "wrapROI:forRect:", + "willBecomeVisibleNotification:", + "_web_compareDay:", + "setCanCycle:", + "_specifiesMultipleIndexedObjectsPerContainer", + "_cfPasteboard", + NULL, + "findProxyAuthenticationForRequest:", + "_autosaveRecentSearchList", + "matchesHostNameFromLockDictionary:", + "setPathStyle:", + "minimalFormInContext:ofPredicates:", + "_applyValueTransformerToValue:forBindingInfo:reverse:", + "_prepareHelpWindow:locationHint:", + "_autoExpandFlashOnce", + "setLoopMode:", + "parseABDATE", + "removeSharedTexturesWithOwner:", + "dispatchPropertyChanged:", + "initWithNS:andTag:", + NULL, + "_userMoveItemFromIndex:toIndex:", + NULL, + "accessibilityElementWithParent:", + "initWithMemoryCapacity:diskCapacity:diskPath:", + NULL, + "sharedWindow", + "loadServersFromDefaultsFile", + "_configureAutoVacuum", + "targetForAction:to:from:", + "_isRunningModal", + "filterView", + NULL, + "lockForReadingWithExceptionHandler:", + "setCompositingOperation:", + "removeMetadataForKey:", + "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:", + "_helpButton", + "nonNullValueForKey:inDictionary:", + "_setOriginalFileInfoFromFileAttributes:", + "removeItemWithTitle:", + "drawViewInRect:", + "_setFocusing:", + "_setButtonType:adjustingImage:", + "_cancelAllOperations", + "_importPeople:", + "isTypeNotExclusive:", + "_tryToCreateCGImageRepFromNonCGFile:", + "shouldEnableControl:withID:", + "userName", + "getPrintOperationForPrintInfo:autoRotate:", + "isAlias", + "_sizeToFitTextFields", + "initWithType:size:", + "clearSelectionPath", + "_managedProxy", + "_matchesCharacter:", + NULL, + "cache", + "descriptionForInstanceMethod:", + "_itemAtLabelIndex:", + "referenceInstance", + "selectSearchResult:", + "_closeFlags:openFlags:inString:", + "_menuOwnerCanUseMenuWhenModal", + "ikImageLayer", + "removeCharactersInRange:", + "clearDirectoriesSelection", + "_setBulletCharacter:", + "defaultConnection", + "pageFromPageDictionary:", + "menuHasKeyEquivalent:forEvent:target:action:", + "switchImage:", + "_minXTitlebarButtonsWidth", + "setPrimaryIdentifier:", + "setWidth:ofColumn:", + "initWithTimeInterval:sinceDate:", + "imageForControlTint:", + "_blockSafeRangesForRange:", + "_entityForName:", + "needsToRemainInViewHierarchy", + "addTextTrack:atTimeRanges:withAttributes:error:", + "_realmForURL:", + "_setFinalSlideLocation:", + "_importFile:", + "_clipViewAncestorDidScroll:", + "_mergeTree:", + "_setHighlightedItem:", + "initWithTexture:size:isDest:", + "leftArrowPathInRect:", + "prepareForSave:", + NULL, + "_multipleMutableArrayValueForKeyPath:atIndexPath:", + "accessibilityIsProxyAttributeSettable", + NULL, + "addRepresentations:", + "setCurrentEntity:", + "_beginListeningForPowerStatusChanges", + "setSizesPreviewToFit:", + "__oldnf_getObjectValue:forString:errorDescription:", + "_setView:enabled:", + "_perThreadHandlingStack:", + "_readRecentDocumentDefaultsIfNecessaryForKey:", + "getAttribute:range:allowBinary:", + NULL, + "originalImageSize", + "registeredStoreTypes", + "incrementButtonWithParent:", + "_deleteConfirmSheetDidEnd:returnCode:contextInfo:", + "_availableSettings", + "addTimerToModes", + "undoer", + "_requestAnyEditableState", + "_didHideDisplayableView:", + NULL, + "_propertyDescriptionForAppleEventCode:checkSubclasses:", + NULL, + NULL, + "setObject:", + "_computeExecutablePath", + "_removeSystemUIModeHandler", + "resetAllPorts", + "contentFill", + "shapeFillMode", + "isWindowInFocusStack:", + "interval", + "selectionInProgress", + "setIndex:ofKey:", + "loadSuitesFromBundle:", + NULL, + "resetCounter", + "_readFontIntoRanges:fromPasteboard:", + "_categories", + "_old_configureAndDrawImageWithRect:cellFrame:", + "removeProperty:", + "sizesPreviewToFit", + "handleWindowEvent:callRef:", + "trackWithQuickTimeTrack:error:", + "initWithUpper:attribute:", + "_drawDropHighlightOffScreenIndicatorPointingLeftAtOffset:", + "_drawRemainderArea", + "_defaultLineHightForUILayout", + NULL, + "_baselineDelta", + "setWindowController:", + NULL, + "certStatus", + "send", + "freeFormLayoutMode", + NULL, + "captureOutput:willStartRecordingToOutputFileAtURL:forConnections:", + "_loadUsingLibXML2", + "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:", + "flags", + "_setStructure:", + "_urlStringWithScheme:", + "addNameValueToDictionaryRef:", + "columnCount", + "_updateTasksCellsCopy", + "nts_HasChangedProperties", + "_edges", + "initWithFrame:ruleEditorView:", + "_isFixedPitch", + NULL, + "_registerBuiltInFormatters", + "_engravedOffsetTextColor", + "_invalidatePagination", + "_assignObject:toPersistentStore:forConfiguration:", + "adjustTableColumns", + "respondsToSelector:", + "nts_InitWithDictionaryRepresentation:addressBook:", + "findEncodingFromCharsetTag", + NULL, + "_suggestedControllerKeyForController:binding:", + "roundSubRect:", + "_createAndSendOffsetToPointEvent:", + "_webKitBundle", + "_setHorizontallyCentered:", + "_clearDirtyRectsForLockedTree", + "_cycleWindowsReversed:", + "_abCompareWithinIntervalFromTodayYearless:", + "loadAndRestoreCurrentBrowsingNodePath:selectedNodes:", + "segmentProxyFor:parent:", + "_unregisterMenuItemForKeyEquivalentUniquing:", + "resourceSpecifier", + "setRulersVisible:", + "_initPanelCommon", + "initWithAuthenticationChallenge:sender:", + "allowsMultipleSelection", + "setWithObject:", + "lineJoinStyle", + "_integerValueFromObject:", + "_bindingAdaptor", + "_parseLibXML2Node:", + "_shouldShowFocus", + "encodePoint:forKey:", + "displaysAsBook", + "setHighlightedTableColumn:", + "findNodeNames", + "createCGImage:fromRect:format:", + "fetchPropertyValuesWithKey:uniqueId:addressBook:", + "newIndexOfOldIndex:", + "indexSheet:didClickOnDocumentAtIndex:", + NULL, + "fetchNoteOutOfRecordWithEmptyTemplate:", + "imageFromCGImage:imageProperties:imageState:options:", + "mouseTracker:shouldContinueTrackingWithEvent:", + "_revertToOldRowSelection:fromRow:toRow:", + "addDistributionListEntryToGroup:forMember:distributionListProperty:multiValue:", + "__portUpdated:", + "resolveMarkerToPlaceholder:binding:", + "_updateDocument:withMetadata:", + "appleEvent", + NULL, + "setFileMode:", + NULL, + "_rangeOfSuffixFittingWidth:withFont:", + NULL, + "previewView:shouldDisplayView:", + "_childrenCount", + "_allContexts", + "savePreviewHeightInDefaults:", + "compositionWithIdentifier:", + "setVariableRows:", + "_nextTypeSelectMatchFromRow:toRow:forString:", + "stopSpinning", + "getCharacters:range:", + "allowsMixedState", + NULL, + "speakString:", + "shouldIgnoreAction:", + "_indexClosestToIndex:equalAllowed:following:", + "setDeletesObjectsOnRemove:", + "initWithCGSRegionObj:", + "_old_initWithCoder_NSTableHeaderView:", + "decodeIntoBuffer:size:useZeroBytesForCRC:", + "street", + "changeDocumentBackgroundColor:", + "subIndex", + "registerForServices", + "enableCursorRects", + "initWithCapacity:optionFlags:", + "imageBoundingRect", + "isEqualToIndexSet:", + "setPrintScalingMode:forPrintOperation:", + "_waitCursor", + "_removeFrameUsingName:domain:", + "accessibilitySharedTextUIElementsAttribute", + "ancestorSharedWithView:", + "allUniqueIdsWithModificationDates", + "buttonImagesForButtonState:", + "_setupFullscreen", + "sharedActor", + "preparePublicChangeNotification:privateChangeNotification:couldAffectSyncing:couldAffectSharing:privateTablesChanged:modificationDate:", + "pointerArrayWithWeakObjects", + "launchABDIfNeeded", + "loosenKerning:", + "setObservationInfo:", + "_isDocWindow", + "_createPopUpButtonWithItems:selectedItemIndex:", + "_setFocusRingNeedsDisplayIfNecessary", + "accessibilityVisibleCharacterRangeAttribute", + "canBeConvertedToEncoding:", + "_addBinding:toController:withKeyPath:valueTransformerName:options:", + "_knowsPagesFirst:last:", + "_formatCocoaErrorString:parameters:applicableFormatters:count:", + "_uniqueInputPortKey", + NULL, + "_contentType", + "initWithClient:", + "isWord:inDictionaries:caseSensitive:", + "operatorWithType:modifier:options:", + "negativePrefix", + "setShouldHideMeCard:", + NULL, + "removeItem:", + "nodeClassDescriptionClass", + "noDifference", + NULL, + "inputImageWrapper", + "_protectionSpaceWithKeychainItem:isDefault:", + "sortDescriptorPrototype", + "inputImage", + "serverType", + "cleanupNotifications", + "_stopError", + "_setScaleFactor:", + "layoutFlags", + "_diskCacheClear", + "preload", + "_postValueSelectionChangedNotification:", + "_setHighlighted:", + "pixelAspectRatio", + NULL, + "bundleForClass:", + "_insertionIndexForPerson:", + "_registerForDraggedTypes:later:", + "setInputElement:", + "policies", + "_performClick:ignoreMenus:", + "_highlightCell:atRow:column:andDraw:", + "_computeFirstCompletelyVisibleColumn", + "updateFromPrintInfo", + "_deleteNode:byEntityName:", + "_selectPreviousItem", + "openSidebar:", + "addHighlightingModeToDictionaryRef:", + "textView:shouldSetSpellingState:range:", + "addCellWithSettings:data:intent:", + "setRolloverCaption:", + "_familyNamesForCollection:", + "_web_fileExistsAtPath_nowarn:isDirectory:traverseLink:", + "windowSharingType", + "validateMipmap:withQuality:", + NULL, + "nibInstantiateWithOwner:topLevelObjects:", + "_setActivationState:", + "indexOfItemWithRepresentedObject:", + "expect:", + NULL, + "_carbonWindowClass", + "_asScriptTerminologyNameArray", + "directoryResultsSelectionChanged:", + "setPeriodicFlushThreadState:", + "acceptConnectionInBackgroundAndNotifyForModes:", + "initWithFetchRequest:", + "ISS_URLWithDirtyString:", + "initWithControlArray:", + "_restoreZoomState", + "_setLocationTemporary:", + "buttonToolTip", + "_glyphGenerator", + "fixNotesRulersInRange:", + "layoutToFitInMinimumIconSize", + "registerExternalData:forSourceObjectID:key:options:andTimestamp:", + "_blockAndGetChildrenOfNavNode:", + "moveRightAndModifySelection:", + "_updateUI:", + NULL, + "spin", + "_rangeOfDaysForMonth:year:", + "setupRootLayer", + "saveButton", + "_restoreMovieEditState:", + "_autosaveForRegularQuit", + "setDisplayBox:", + "connectionsForMediaType:", + "removeIndexLabelAtIndex:", + "headerColor", + "_targetBinding", + "decimalNumberByRoundingAccordingToBehavior:", + "addIndexInRenderList:", + "orderOutPopUpWindow:", + "initDeleteWithSession:path:", + "_datasourceImageRepresentation", + "directImportMode", + "_removeInternalRedFromTextAttributesOfNegativeValues", + "_enableOrDisableTrackingArea:", + "_rollbackTransaction:", + "suspendCurrentAppleEvent", + "setVideoDataSource:", + "localizedStringForComparison:withProperty:", + "toolmodeWillChangeFrom:to:", + "performClose:", + "tableViewSelectionDidChange:", + NULL, + "initWithRunStorage:", + "memberOfInputWhiteParams:", + "setColumnsToFetch:", + "oldSystemColorWithCoder:", + "blendWindow:withNewContentView:duration:delegate:", + "selectedRanges", + "glyphIndexToBreakLineByWordWrappingAtIndex:", + "initWithCommandDescription:", + "_initWithLoadingConnection:request:response:delegate:proxy:", + "startTextTimer", + "_diskCacheExecuteWrite:", + "_isEnabledTableView", + "_createBackgroundFullscreenWindowWithFrame:", + "_tileTitlebarAndRedisplay:", + "_reallyProcessNotifications:", + "_shapeWithCGSRegion:", + "outlineView:willCollapseItem:", + "setRenderer:", + NULL, + "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:", + "rulerViewClass", + "_removePropertyListeners", + "_postingDisabled", + "removeTabViewItem:", + NULL, + "setUsesFontPanel:", + "_loadSuiteDescription:", + "targetIconSize", + "portForName:host:nameServerPortNumber:", + NULL, + "_handleFTSEntry:", + "indexHelpResults:resultGRLs:", + "_volumeSupportsLongFilenamesAtPath:", + "_simpleOverflowMenuItemClicked:", + "keyTimes", + "skipDescendents", + "itemRemoved:", + "imageBuffer", + "_preparedSavePanelForOperation:", + "_shouldStealSharedPreviewViewForURL:", + "nts_TypeOfProperty:forTable:", + NULL, + "setDiacriticInsensitiveOption:", + "setImagingModeForcedToGWorld:", + "setMargin:", + "activeConversationWillChange:fromOldConversation:", + "canSelectHiddenExtension", + "sharedChooseIdentityPanel", + "_resizeWeight", + "backgroundGray", + "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:", + "wantsToBeColor", + "textMatchingFieldFrame", + "_writeLinkStringInRange:toPasteboard:", + "_configureAsSeparatorItem", + "setShouldCascadeWindows:", + "_getPosition:", + "optLock", + "highlightWithLevel:", + "_layoutHoleDescription", + "_doOpenDrawer", + "rotateWindow:withNewContentView:direction:duration:delegate:", + "redo:", + "attributeValueClassName", + "hasTrimBox", + "shadowOffset", + "_configurePageSize", + "countOfTitle", + "application:receivedEvent:dequeuedEvent:", + "listensInForegroundOnly", + "_stopWorkThread", + "_isLoadingSDEFFiles", + "_ctTypesetter", + "_setLiveResizeImageCacheingEnabled:", + "_printDatasourceWarning", + "setInverted:", + "_needsModeConfiguration", + NULL, + "_numberByTranslatingNumericDescriptor:toType:inSuite:", + NULL, + "fileButton", + "_setTempHidden:", + "abUIDWithTableName:", + "visibleItems", + "setTransient:", + "accessibilityRoleDescriptionAttribute", + "fieldEditor:forObject:", + "execute:time:arguments:", + "_localizedKeyForKey:", + "applicationShouldHandleReopen:hasVisibleWindows:", + "copyKeyList", + "_ensureContentArrayIsMutable", + "setImportedCards:", + "allowsUserConfiguration", + "setBaseURL:", + "_bitmapFormat", + "analyzeCurrentGRLReconfiguredWindow", + "_autovalidatesItems", + "countOfSubNodes", + "_makeLeftCellKey", + "sizeOfTitlebarButtons:", + "segmentStyle", + "ignoresMouseEvents", + "_setWindowRef:", + "_newUnchangedLockedObjects", + "_groupRect", + "isModal", + "initWithReferenceToData:name:MIMEType:", + "_generateSQLLikeStringInContext:", + "_drawRect:", + "_windowWillOrderOnScreen:", + "_drawRealTitleWithFrame:inView:", + "setVisualBackgroundColor:", + "keyWindowFrameShadowColor", + "_destroyTimer", + "backgroundRed:green:blue:alpha:", + "_state", + "packageEventRef:", + "tokenTextView:shouldUseDraggingPasteboardTypes:", + "_controllerEditor:didCommit:contextInfo:", + "_setTrackingAreasDirty:", + "isBooleanValueBindingForObject:", + NULL, + "setFirstLineHeadIndent:", + "_addMouseMovedListener:", + "pointingDeviceSerialNumber", + "__unionRect:context:", + "searchController", + "stringWithContentsOfURL:usedEncoding:error:", + "nts_DisplayName", + NULL, + "_setCurrentDirectoryNode:", + "_isGraph:", + "roundedRect:withRadius:", + "_interviewHorizontalPadding", + "showIdentityBadges", + "setDimensions:", + "saveChanges:", + NULL, + "showWindows", + "fullJustifyLineAtGlyphIndex:", + NULL, + "resetFirstLastName:", + "sourcePatch", + "halt", + "_updateDrawer:withVisibilityState:", + NULL, + "_throwIfNotEditable", + NULL, + "_isUpdated", + "setErrorAction:", + "drawBackgroundInRect:", + "_cellForPoint:", + NULL, + "_drawDone:success:", + "_continueModalOperationPastPrintPanel", + NULL, + "convertPixelUnitTo3DUnit:", + "setMediaBrowserNode:", + "updateOptions:", + "resourcePath", + "setDrawsBackground:", + "setFormatterBehavior:", + "_startLoadingImage:", + "endDate", + "removeDecriptorAtIndex:", + "textAttributesForPositiveInfinity", + "_pasteboardDictionaryForRecords:", + "numberOfParameters", + "xmlInfoForAttribute:", + "generateIntermediatesForFetchInContext:countOnly:", + "setMinute:", + "editingHasBegun:", + "initWithAnnotationDictionary:forPage:", + "setFilestreamPosition:", + "_messageField", + "_noteToolbarDisplayModeChangedAndPostSyncSEL", + "setAutomaticallyMakePreviewFirstResponder:", + "nts__fullNameIncludingAuxiliaryElements:", + "representationUsingType:properties:", + NULL, + "booleanValue", + "markPersonAsViewed:secondTry:", + "_dictionaryForSerialNumber:remove:clear:", + "_saveUserKeyUsageExtPanelValues", + "_dynamicToolTipsEnabled", + "copyRuler:", + "inputs", + "appendOrderByClauseToSQL", + "apply:to:options1:options2:", + "defaultHandler", + "_familyName", + "resizeUpDownCursor", + "addOrNestTable", + "groupsSelectionChanged:", + "accessibilityIsChildrenAttributeSettable", + NULL, + NULL, + "charRefToUnicode:", + "doubleClickInString:atIndex:useBook:", + "_hasKeyboardFocusInTabItem:", + "isPartialStringValidationEnabled", + NULL, + "_retainedPrimaryKeyNumberForObjectID:", + "character:hasProperty:", + "imageFrameForCellFrame:", + "_editCustomLabels:", + "_keyPathExpressionForString:", + "_mutableStringClass", + NULL, + "automaticallyPreparesContent", + NULL, + "memberSelectionChangedInPeabody:", + "descriptionWithLocale:", + "portClass", + "setSelectionInfo:", + "addObserver:selector:name:object:suspensionBehavior:", + "isEqualToAttributedString:", + NULL, + "_setWindow:", + "IKTemporaryStoredIntValue", + "sharedRegistry", + NULL, + "unhideWithoutActivation", + "_nonIgnoredDetailsForGrammarString:details:inSpellDocumentWithTag:", + "commandDescriptionWithAppleEventClass:andAppleEventCode:", + "_dropsIndentWhenImmediatelyBelow", + "scriptingIsGreaterThan:", + "selectItemsInRange:", + "cookieWithCFHTTPCookie:", + NULL, + "validationWarnings", + "continueTrackingWithEvent:", + "_aquaScrollerBehaviorChanged:", + "elementWithRole:parent:", + "setOutputCount:", + "_addMapping:forConfigurationWithName:", + "removePortsFromRunLoop:", + "_removeWindowRef", + "numberOfGlyphs", + "setSerializedValue:forKey:", + "_drawHeaderOfColumn:", + "nextValidKeyView", + "_typeSelectUndoLastSearch", + "_focusRelinquished", + "_predicateFromRowItem:", + "localizedSummaryItems", + "calculate:::", + "initWithList:", + "findString:inBook:", + "deleteCorrelation:", + NULL, + "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:withFlags:withOptions:", + NULL, + "_canShowGoto", + "_hasNonNominalDescriptor", + "_cursorRectForColumn:", + "_destroyVisualContexts", + "_isAnimatingDefaultCell", + "removeAllAppearanceStreams", + "initWithNewPerson:selectedGroup:addressBook:", + "setAllowsMultipleSelection:", + "baseClass", + "setClippedItems:", + "_releaseCIContext", + "initWithData:range:", + "disableUpdates", + "_setErrorWithEvaluatedObjectSpecifier:", + NULL, + "_setResultRequired:", + "objectSpecifier", + "_currentBranchImage", + "hasViewControls", + "_impl", + "_createTransformedImage:definition:", + "_activeConnections", + "displayedMemberMatching:inPeople:", + "_copyRenderLayer:flags:", + "selectRowIndexes:byExtendingSelection:", + "_maxXTitlebarResizeRect", + "_userCanSelectRow:withNewSelectedIndexes:", + "pixelFormatRGBf", + "_isFirstResponder", + "_web_backgroundRemoveFileAtPath:", + "_messageColor", + NULL, + "nodesForXPath:error:", + "_addBindVarForConstVal2:inContext:", + "expandedNodesForObservedNode:", + "methodArgSize:", + "_drawImageInRect:", + "selectionColor", + "_releaseDNSNamesArray", + NULL, + NULL, + "_replyToLaunch", + "_loadUIIfNecessary", + "initWithPersistentStore:", + "imageInfoView", + "_canDragRowForClickOnCell:column:row:atPoint:", + "_parserContext", + "convertBaseToScreen:", + "_searchProperty", + "removeListener:", + "setWindowFrameAutosaveName:", + NULL, + "isLockedForThreadedOperation", + "_startTearingOffWithScreenPoint:", + "setAllowsReordering:", + "_attributes", + "initFromDocument:", + "_computeDataFromData:", + NULL, + "setAutosavesConfigurationUsingIdentifier:", + "tabState", + "supportsSortingByFileProperties", + "removeObjectsInRange:", + "hashTableWithOptions:", + "_argumentDescriptionsByName", + "printFile:ok:", + "endProgress", + NULL, + "setTimeInterval:", + "setFrame:", + "mappingModelFromBundles:forSourceModel:destinationModel:", + "setMultiplier:", + "setStateValue:", + "handleNotificationOfChildOperation:notification:", + "currentMark", + "release", + "_updateButtonVisibilities", + "setEnabledFileTypes:", + "isTracking", + "_setServerModificationDateString:", + "_actionHasBegun:atIndex:", + "_hostTime", + "imageWithoutAlpha", + "_createDefaultOrUnflattenPageFormatIfNecessary", + "_showDragError:forFilename:", + "resizeRectForBounds:", + "_findFirstOne::", + "isInputImage", + NULL, + NULL, + "_scaledVideoSizeUsingCleanAperture:", + "imageByApplyingState:backgroundStyle:effects:", + "startWindowModal", + "_setStyleForMetal:", + "_keyPathIfAffectedByValueForMemberOfKeys:", + "deleteInputPortForKey:", + "_maxYminXResizeRect", + "_writeForkData:isDataFork:", + "setMaxLineHeight:", + "sharedView", + "filterWithName:", + "_setMainMenu:", + "initWithImage:keysAndValues:", + "isModified", + "compositionPickerViewDidStartAnimating:", + "_readMultipleTextSelectionRangesForString:fromPasteboard:", + "setNumberOfPoints:", + NULL, + "fixesAttributesLazily", + "isFinding", + "addOutputUnitsForConnection:toGraph:ofCaptureSession:error:", + "childContext", + NULL, + "prepareForNewPassphrase", + "textAttributesForNegativeValues", + "updateCacheNode:fromManagedObject:", + "_invokeSelector:withArguments:forBinding:", + "_isFauxFilePackageNode:", + "drawAppearance:withBox:inContext:", + "ubertrustPopupSelected:", + "_setWindowContextForCurrentThread:", + NULL, + "makeBTUnavailable:", + "initGetInfosWithSession:path:", + "shouldEditOnSingleClick:inRow:tableColumn:", + "_dispatchCallBack:flags:error:", + "preferredFilenameExtensionForType:", + "consumeJobEntry:", + "documentCursor", + "reallyRemoveObject:", + "cameraIcon", + "isEmptyPerson", + "acceptsGlyphInfo", + "_beginLoadingImageDataForClient:", + "_updateSizesForFrame:", + "_setCodeSigningUsage:", + "_classDescriptionForName:", + "didReorderOrResizeNotification:", + "updateOKButton", + "createCacheInfoIfNeededForMipmapItem:withUID:", + "_createRecentRecord:forPerson:favorite:", + "setVerticalMotionCanBeginDrag:", + "activeDirectoryUser", + NULL, + "sizeMode", + "isMiniaturized", + "setIncludesSubentities:", + "menuItemIndex", + "_updateObject:observedController:observedKeyPath:context:", + "stringRemovingWrappingQuotes", + "_newValueForColumn:atIndex:inStatement:", + "_returnFirstResponderToWindowFromKeyboardHotKeyEvent", + NULL, + "getAnnotations", + "signatureWithObjCTypes:", + "initWithSize:depth:separate:alpha:", + "_delegateRespondsTo_typeSelectStringForIndex", + "unhide", + "failureReason", + "initWithSize:", + "_bindMipmapItemInRam:ramNode:forCaching:fromDiskOnly:", + "portForName:host:", + "cellsToRenderIndexes", + "setDefaultFixedFontSize:", + NULL, + "_defaultSortDescriptorPrototypeKey", + NULL, + "mouseDragged:inView:", + "zoomRate", + "purgeKeyFrameCaches", + "sharedLDAPManagerInstance", + "dereferencedEntity:", + "setSelected:ifInRect:", + "_writePersistentTableColumns", + "_coreUILinearValue:", + NULL, + "waitUntilThreadDone", + "SCTUserInterfaceItemIdentifier", + "readLocalizedSearchData", + NULL, + "addToScrap", + "_openUnderlineMenu:", + "tableView:mouseDownInHeaderOfTableColumn:", + "initWithName:code:reason:userInfo:", + "abortScrollPrefetchTask", + NULL, + NULL, + "_applyMarkerSettingsFromParagraphStyle:", + NULL, + "_setNavView:", + "calculateBestDateType:andBestValue:forTimeInterval:", + "willChangeValueForKey:", + "performSelector:onThread:withObject:waitUntilDone:modes:", + "_rectOfDraggedColumn", + NULL, + NULL, + "moveItemAtPath:toPath:error:", + "arrayWithObjects:", + "horizontalBoxAddROI:destRect:userInfo:", + "maximum", + "updateColorProfile:", + "addIMValue:toPerson:", + NULL, + NULL, + NULL, + "_hasMainAppearance", + "setSelectedAttributes:isMultiple:", + "_compatibleWithRulebookVersion:", + "setClassAttributes:", + "resumeWithSuspensionID:", + "initWithArray:copyItems:", + "focusedPropertyPath", + "setAllowsAnimatedImages:", + "clear", + NULL, + "trailingOffset", + NULL, + "writeToFile:withAttributes:error:", + "_getConfigDictionaryAtURL:", + "transformUsingAffineTransform:", + "newColorName:", + NULL, + "_autoPositionMask", + "animationManager:processStep:", + NULL, + "_setBaselineMode:", + "_numberOfRowsDidChangeInComboBoxTableView:", + "disabledTextColor", + "allowsAnyHTTPSCertificateForHost:", + "createElement:", + "setTabs:", + NULL, + NULL, + "orderFrontStandardAboutPanelWithOptions:", + "_predefinedAttributes2ForIndex:depth:", + "imageFrameStyle", + "alphaChanged:", + NULL, + "initWithName:directory:", + "_handleNameFieldContentsChanged:", + "_setAuthenticator:", + "baseKeyFrameIndexAtTime:searchBackward:", + "miniaturizedSize", + "accessibilityRulerMarkerType", + "_doSecondPassForMapping:error:", + "insertPage:atIndex:", + "insertText:replacementRange:", + "sharedSurfaceID", + NULL, + "_retrieveNodeForObjectID:", + "insertSegmentOfTrack:timeRange:atTime:", + "_callOnMainThread:withArgs:", + "isSavedQuery", + "indexLessThanIndex:", + "_activeCount", + NULL, + "drawConnection:fromPoint:toPoint:", + "delayedPictureTaking:", + "calculateKnobRects", + "videoFrameProviderForPictureTaker:", + "_clearMarkedWidth", + "insertParagraphSeparator:", + NULL, + "joins", + "drawWindowBackgroundRect:", + "_subviewsExcludingHiddenViews", + "openLocalOnlyWithLocalPath:", + "_willPresentOpenForPrintingError:forURL:", + "initWithSource:", + "createArrays", + "arrayOfKeys", + "requestWithURL:method:", + "_ensureNoTransactionOpen", + "allPixelFormats", + "enableRelease:", + "cameraLabel", + "setScale:", + "_stopDraggingUpdates", + NULL, + "_validateChangesForSave:", + "movieBackgroundColorChanged:", + "renderIntoContext:withUserData:", + "setEmailNormalized:", + "onAnimatedImageTimer", + "setPositiveFormat:", + "_dateValue", + "_scaledDividerThickness", + "_referenceBinderForTableColumn:", + "_endDrawForDragging", + "_setCurrImageName:", + "endSheet:returnCode:", + "tableColumn:willDisplayCell:row:", + "processWhitespace:", + "writeToFile:", + "relativeCurveToPoint:controlPoint1:controlPoint2:", + "mappedIntoVRAM", + "_newSubstringWithRange:zone:", + NULL, + "fileManager:shouldProceedAfterError:linkingItemAtPath:toPath:", + "isRedoing", + "Y", + "sound", + "frameForPopUpWithOldFrame:cellFrame:controlView:", + "_ql_layoutSublayers", + "blurVerticalPass5ROI:destRect:", + "deselectColumn:", + "setObject:forKey:atIndex:", + "_shouldAllowAutoCollapseItemsDuringDragsDefault", + "exportItem:fileArray:cleanUpArray:info:", + "greenRange", + "_collapseAllAutoExpandedItems", + "setBackgroundStyle:", + "initWithFontAttributes:", + NULL, + "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:sendObserverNotifications:forceUpdate:", + "setPreferredFilename:", + "systemID", + "genericGrayColorSpace", + "_registerRequiredAEHandlers", + "_setHasKeyFocus:", + "_drawDropHighlightOnRow:", + "toolbar:itemForItemIdentifier:willInsertIntoToolbar:", + "fileURL", + "dictionaryForKey:", + "startImportCells", + "_crackRect:", + "slideshowNext:", + "configureForAllowsMultipleSelection:", + "_makeCollectionRequestPostHandler:", + "imageUTType", + "nts_People", + "setAutoenablesItems:", + "maxCellTextAreaSize", + "drawTitleOfColumn:inRect:", + "remoteObjects", + "displayName", + "colorWithColorSpace:components:count:", + "resetSystemTimeZone", + "setCacheData:", + "_setEditableTrust:", + "_adjustGridRowMargin", + "sendDidFail:", + "_isRenderingBorder", + "URLProtocol:cachedResponseIsValid:", + "addJoinForDirectToManyToMany:", + "initWithContext:", + "visualDrawsMovieBoxBackgroundColor", + "setWrapsAround:", + "chooseCustomImage:", + "main", + "_abCompare:ascending:options:", + "editor", + "exportKey:fromObject:withName:", + "_getLocalPoint:", + "_serialNumber", + "setLayoutManager:", + "fileMode", + "_colorForNode:", + "oldBoundsForBox:", + "_cacheRepresentation:stayFocused:", + NULL, + "failedToGetPassword", + "setIsVisible:", + NULL, + "_setModelsReferenceID:", + "_libxml2TreeRepresentation", + "highlightSelectionInClipRect:", + "registerInternalLayers", + "adjustToImageProperties:", + "setParentCrayonRow:", + NULL, + NULL, + "initWithExpression:allowToMany:inScope:", + "loadFiltersFromDirectory:filterArray:", + "extendedAttributesAtPath:error:", + "updatePersonPicture", + "_apply:context:", + "canGrow", + "accessibilityIsSubroleAttributeSettable", + "_filterAllResourcesIfNeeded", + "_getNextResizeEvent", + "stopTrackingWithEvent:", + "tiltX", + "XPath", + "controlShadowColor", + "__contentUpdated:", + "_fileOperation:source:destination:files:", + "gotoPosterTime", + "initiateDrag:", + "provideImageData:bytesPerRow:origin::size::userInfo:", + "nullDescriptor", + "faultHandlerClass", + "_backgroundColor", + "_validateSizes:", + "attributeForName:", + "_endListeningForDeviceStatusChanges", + "fontPanelDidChooseSize:", + "gridStep", + "sharedDocumentPreviewLoader", + "_isEnabled", + "takeFindStringFromView:", + "writeSelectionToPasteboard:types:", + "fontPanelDidChooseCollection:", + NULL, + "stopCurrentTask", + "defaultLanguage", + "_redisplayAfterExpansionChangeFromRow:withOriginalRowCount:", + "physicalSize", + "setContentViewMargins:", + "_rectOfItemAtIndex:", + "editMode", + "shouldShowPreview", + "loadResourceDataNotifyingClient:usingCache:", + "_updateUsageForTextContainer:addingUsedRect:", + "initWithDataFile:lockMode:cardClass:snoop:", + "insertEntry:atIndex:", + "binding", + "setTextureID:", + "_reconfigureSubviews", + NULL, + "_setFetchIndex:", + "registerForDrags", + "multiStatusRequestWithSession:method:path:", + "template", + "_shouldRestartMovementTracking", + NULL, + "ownerDocument", + "stringWithCString:length:", + "emptyRecentPictureWithIcon:", + "accessibilityCurrentEditorForCell:", + "showPreferencesPanelForOwner:", + "_requestTextColor:", + "portForName:", + "whitespaceCharacterSet", + "synchSelectedRows", + "_jobDispositionInPrintSession:printSettings:", + "endUpdate", + "imageWithURL:", + "_forceReplaceItemAtIndex:withItem:", + "frameRectForContentRect:", + "setNextResponder:", + NULL, + "renderResolutionData:toBitmap:width:height:bytesPerRow:", + "_coreUIIsFlippedWithView:", + NULL, + "inputContextWithClient:", + "forceSet", + "applySkinClip", + "browser:createRowsForColumn:inMatrix:", + "mainMenu", + NULL, + "executeFetchRequest:withContext:", + "_akWindowDidResignKey:", + "outlineView:validateDrop:proposedItem:proposedChildIndex:", + "_setObject:forBothSidesOfRelationshipWithKey:", + "startObservingModelObjectTree:", + "_computeFirstMostlyVisibleColumn", + "_callbackHandler", + "pixelFormatCMYK8", + "_visibleTableColumnIndexes", + "hasUnappliedChanges", + "numberOfItemsInImageBrowser:", + "removeExtraBackupsForMinimumTimeInterval:maximumTimeInterval:andUpdateList:", + "setCorrelationToken:", + "viewCIContext", + NULL, + "_selectNextItem", + "_makingFirstResponderForMouseDown", + "setSeparator:", + "_collections", + "_addContentsToDictionary:depth:", + "insertText:", + "compileAndReturnError:", + "_usernameForRealm:URL:", + "isEqual:compareIdentifiers:", + "_invokeActionByKeyForCurrentlySelectedItem", + "_pushTableState", + "errors", + "setSelectionFrom:to:anchor:highlight:", + "setPersistentStoreCoordinator:sourceURL:configuration:metadata:options:", + "addRegularFileWithContents:preferredFilename:", + "_donePoofing", + "mdlog:action:", + "scanUpToString:intoString:", + "_showHideInputWindow:", + "_provideTotalScaleFactorForPrintOperation:", + "calendarDisplayedMonthDateComponents", + "selectInAddressBook:", + "initWithSendPort:receivePort:components:", + "excludesPendingChanges", + "imageFromURL:imageState:options:", + "buildFilterCache", + "setQuickTimeMovie:error:", + "_clockAndCalendarAdvanceMonth:", + "firstChild", + NULL, + "setFieldsIncludedAreCleared:", + "customGroupBox", + "_delegate:handlesKey:", + "_eventIsOn:eventKind:", + "_realCompositeName", + "isReflexive", + "_scrollColumnsRightBy:", + "imageSubtitle", + "ikMouseUp:", + "migrateSpotlightMetadataFiles:", + "morphologyAddROI:destRect:userInfo:", + "createThumbnailFromCGImageRef:", + "setPrimitiveName:", + "_reflectPredicate:", + "isEnabledForSegment:", + "_reflectDocumentViewFrameChange", + "_createQLThumbnailOptions", + "nts_RecursiveContainsGroup:", + "renderInContext:", + "copyImageRepresentationWithFrame:", + "testZoomPerformances", + "getPassword", + "setFilterArray:", + "drawBackgroundWithFrame:inView:characterRange:layoutManager:", + "_shouldSetHighlightToFlag:", + "borderColor", + "_keywordsFromString:", + "zoomButton", + "hidePanel", + "convertRectToBase:", + "_setCursorRect:index:", + "createElementNS::", + "_copyCoreUIDialDrawOptionsWithView:", + "_exitLibXML2ElementNode:tag:startIndex:", + "boundsRectForTextBlock:atIndex:effectiveRange:", + "selectedNodesIncludingDirectories", + "_verticalDistanceForLineScroll", + "_setMaxPK:", + NULL, + "normalizeWhitespace:", + NULL, + "sendAction", + "setFontSize:", + "defaultPlaceholderForBinding:onObjectClass:", + "_commonHandleRootOrCurrentDirectoryChanged", + "_autosaveSubviewLayoutIfNecessary", + NULL, + "_zoomToFitSelection", + "setSelectedCompositionIndexInsideGrid:", + "_selectNextCellKeyStartingAtRow:column:", + "formatSummary", + "_clientsCreatingIfNecessary:", + "_windowExposed:", + "imageBrowser:cellWasDoubleClickedAtIndex:", + "setRepresentedFilename:", + "primaryIdentifierForEntities:", + "_initWithContainerClass:keyPath:propertiesBeingInitialized:", + "createSnapshotImageOfType:", + "_createRef", + "dbCache", + "putData:toPath:withByteRange:andHeaders:", + "URLs", + "_endMyEditingAndRemainFirstResponder", + "yank:", + "preferencesWindowShouldClose", + "_diskCacheTruncate:", + "revertDocumentToSaved:", + "_initRuleEditorShared", + "printFormat:arguments:", + "_setRegisteredForChildNotifications:", + "_encodingCantBeStoredInEightBitCFString", + "_discardPreload", + "setAcceptsColorDrops:", + "stopLoading", + "_ensureSelectedImage", + "_validateDocumentColor:", + "sizeCreditsView", + "addResource:withSize:cost:md5List:count:", + "_updateInlinePreview", + "_lazyLoadQueryDictionariesFromSavedQuery", + "_rangeContainerClassDescription", + "_generateSQLSubstringWildStart:wildEnd:inContext:", + "_parseServicesAvailable:", + "effectForWindow:", + "getDataAtPath:ifModifiedSince:", + "addCertificate:toKeychain:domain:settings:", + "_moveAndResizeEditedCellWithOldFrame:", + "defaultMiterLimit", + "localizedNameForTIFFCompressionType:", + NULL, + "sourceListImageForState:", + "XMLStringSequenceStarted:choiceStarted:appendingToString:", + "bottomCornerRounded", + "stopShowcase:", + "recognizedEvents:", + "ignoresAntialiasThreshold", + "dataBaseChanged:", + "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:", + "_containerRelativeTitleFrameOfColumn:", + "_selectedCellsInColumn:", + NULL, + "writableTypes", + NULL, + "_newRegisteredSuiteDescriptionForName:", + "_initWithCGLPixelFormatObj:", + "_canDeselect", + "segmentWithIndex:parent:", + "_attachmentSizesRun", + "_handleCurrentBrowsingNodePathChanged", + "_recursivelyPropagateCocoaDirtyRectsForView:toCarbonView:", + "_invalidateCachedRect", + "removeAllAnimations", + "setUid:withDatabase:", + "generateThumbnail:", + "keyDown:", + "IOType", + "tableView:heightOfRow:", + "_lastJobPageNumber", + "__Keynote_NOOP", + "_initWithName:fromPath:forDeviceType:lazy:", + "glyphWithName:", + "_panel", + "selectedMembers", + "_reactToMatchingInsertions:deletions:refreshed:", + "addColorAllowed", + "setToolTipForView:rect:displayDelegate:displayInfo:", + "setIsZoomed:", + "_document:didSave:forScriptCommand:", + "_firstEnabledPart", + "setCurrentBrowsingNodePath:", + "_tpHand", + "rectPreservedDuringLiveResize", + NULL, + "addTextContainer:", + "indexOfObjectIdenticalTo:", + "margin", + "_oldBoundsDuringLiveResize", + "_readRulerIntoRange:fromPasteboard:", + "hasWritablePropertyForKey:", + "importFilter:", + "_close:", + "defaultFlatness", + NULL, + "needToExchangeItems", + "_compareItemViewOrderFor:and:", + NULL, + "commandName", + "_updateHeaderCellControlView", + "initWithIndexes:", + "isCIFilterCompatible:", + "replaceOccurrencesOfString:withString:options:range:", + NULL, + "textLists", + "widthForLayer:edge:", + "baseAffineTransform", + "initWithRequest:delegate:", + "initWithObjCType:count:at:", + "subpathsOfDirectoryAtPath:error:", + NULL, + "handleMigrationError:inManager:", + "autoresizes", + "_unhideSheet", + "_detachFieldEditorFromWindow:", + "_keyboardNavigateToTabByDelta:", + NULL, + "frameShadowColor", + "_displayTemporaryToolTipForView:withString:", + "_entityForExternalName:inConfigurationNamed:", + NULL, + "_indexOfPopupItemForLanguage:", + NULL, + "setPostsBoundsChangedNotifications:", + "colorNameComponent", + NULL, + "setImageLayer:", + "_getArguments:withParameters:", + "carbonDelegate", + "freeCache", + "copyMultiValueWithRecord:withProperty:", + "_getTextColor:backgroundColor:", + "buttonImageForHeightReference", + "doubleForKey:", + "initFragmentShaderIfNeeded", + NULL, + "_stopTearingOff", + "_startUsingDevice:", + "_presentSheetForError:responder:responderCandidate:delegate:callback:callbackContextInfo:", + "descriptionForMethod:", + "hasArtBox", + "glyphGeneratorForTriplet:makeSharable:", + "loadData", + "_objectIDClass", + "initWithData:bytesPerRow:size:format:options:", + "initWithPDFDocument:pageNumber:options:", + "isFetchInProgress", + "_encodeWithoutNameWithCoder:newStyle:", + NULL, + NULL, + "setMainMenu:", + "validateAllMetaDataForceRebuild:", + "closeFile", + "imageProperties", + "uti:conformsToQTType:", + "set", + "allowedFields", + "setupPanel", + "tabView:willSelectTabViewItem:", + "resetCachesForPeople:groups:maintainSelection:", + "_accessibilityPreviousSplitterMaxCoordinate", + "showController:adjustingSize:", + "_selectorName", + "selectedIndexPaths", + NULL, + "movieFormatRepresentation", + "restoreZoomState", + "conditionallySetsEditable", + "setDetailsDisclosed:", + "markupType", + "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:", + NULL, + "initialKey", + "ruler", + "windowWillBeginSheet:", + "registerForDraggedTypes:", + "_setItemViewer:", + "defaultDecimalNumberHandler", + "_clearSpellingForRange:", + "_allPossibleLabelsToFit", + "_drawsHorizontalGrid", + "_toggleTheater", + "setOpenGLTextureRef:", + "shapeMode", + "_diskCacheExecuteRemoval:", + "registerForEdgeChanges:", + "_setNeedsDisplayInColumnIndexes:includeHeader:", + "titleForIdentifier:", + "boundingRectWithExtraEffectsForState:backgroundStyle:", + "focusImageAtIndexAndRedisplayIfNeeded:", + "setHorizontallyCentered:", + "sourceMetadata", + "statusString", + "crayonToLeftOfCrayon:", + "_web_domainFromHost", + "shouldCloseDocument", + NULL, + "shadowWithLevel:", + "inputImageAtIndexes:", + "owner", + "switchCell", + "setTimeOffset:", + "_setFormats:", + "setFormatter:", + "policyNames", + NULL, + "webArchive", + "_useUserKeyEquivalent", + NULL, + "volatileDomainForName:", + "gatherROI:destRect:", + "_cellIndexesInRect:", + "scaleValue:", + "subresourceForURL:", + NULL, + "convertImagePointToViewPoint:", + "handleSwitchToDirectoriesFrom:animate:", + "objectToken", + "setMenuChangedMessagesEnabled:", + "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:", + NULL, + "_shouldExecuteDelayedAutocomplete", + "_updateObject:objectIDMap:", + "_serviceList", + "_web_stringByTrimmingWhitespace", + "_currentlyEditing", + "previewSize", + "_isFromSDEF", + "initWithContentRect:styleMask:backing:defer:", + "_nameForCollection:", + "minimumLineHeight", + "_sslClientAuthUsage", + "_proxyUsernameForProxyURL:", + "selectedPageIndex", + "isComputerNode", + "_searchChanged:", + "thumbnailOfSize:forBox:", + "_setHIView:", + "_saveSplitPositionToDefaults", + "rawSQLTextForToManyFaultStatement:stripBindVariables:swapEKPK:", + "keyForProperty:entityName:entityKey:entityWithValueSel:valueWithEntitySel:", + NULL, + "updateCellInside:", + "activateServer:", + "smartInsertAfterStringForString:replacingRange:", + "varianceAddROI:destRect:userInfo:", + "isButtonBordered", + NULL, + "_finalize_QCProvider_CoreGraphics", + "_toolbarAuxiliary:", + NULL, + "_sendDelegateSelectRow:inColumn:", + "_resetTitleBarButtons", + "_updateObservingRegistration:", + NULL, + "_screenRectContainingPoint:", + NULL, + "zoomToFitSelection", + "_rowArrayCache", + "_rawKeyEquivalentModifierMask", + "breakLineAtIndex:", + NULL, + "_evaluateJSString:sourceURL:line:", + "_subEffectsForWindow:itemFrame:transitionWindow:", + "setAutoUpdates:", + "_shouldEditColumn:row:withEvent:", + "deserialize", + "_openableTypes", + "zoomIn:", + "userServer", + "_autovalidateToolbarItem:", + "currentResolvedDirectoryNode", + "_validatedStoredUsageForTextContainerAtIndex:", + NULL, + "writeToFile:withOptions:", + "interfaceVersion", + "removeAllToolTipsForView:withDisplayDelegate:", + "setMember:forKey:", + "initWithElementTypeDescription:", + "_resetRowEntriesToNewFilter", + "gutterOffsetForPageDisplay:", + "valueInAttributeRunsAtIndex:", + "_createOtherValueSetterWithContainerClassID:key:", + NULL, + "_minimumSizeForSearchFieldToolbarItem", + "crayonToRight", + "removeToolTip:", + "nonAllowableCharacters", + "keyFramesCountForTimeLine:", + "zoomInY", + "_isScriptingEnabled", + "autosavingDelay", + "expanded", + "setInputModeID:", + "_clearTypeAhead", + "_init:", + "buttonMask", + "genericCMYKColorSpace", + "indexOfTickMarkAtPoint:", + "addNameToDictionaryRef:", + "speechFinishedSuccessfully", + NULL, + "parser:foundCDATA:", + "newCreateIndexStatementForColumnWithName:inTableWithName:", + "selectedImageBackgroundPiece", + "classForKeyedArchiver", + "finishDecoding", + "scheduledTime", + "uniqueMembersInGroups:", + "setItemSpacing:", + "scriptingMissingValueWithDescriptor:", + "addActualSizeButton", + "saveToURL:ofType:forSaveOperation:error:", + "requestThumbnailOfSize:", + "_willPresentPrintingError:", + "namespaceForPrefix:", + "accessibilityIsVisibleRowsAttributeSettable", + "entityDeclarationForName:", + "nts_SetCachedRecord:forUniqueId:", + "scanHexLongLong:", + "_initWithProperties:", + "CA_copyJSValue:", + "_keyboardNavigateToTabAtIndex:", + "drawFromPoint:toPoint:options:", + "extractElementPath:", + "cycleToNextInputKeyboardLayout:", + "reflectScrolledClipView:", + "personImageView", + NULL, + NULL, + "setPixel:atX:y:", + "removeTimeLine:", + "setDeinterlaceVideo:", + "pathNameForImage", + NULL, + "initWithPersistenceStore:", + "_managedObjectContext", + "objectByApplyingXSLT:arguments:error:", + NULL, + "fileHFSTypeCode", + "visibilityForTimeLine:", + "submenuRepresentedObjects", + "RTFDFileWrapperFromRange:documentAttributes:", + "hasCredentialsForSession:", + "needPostNicestDraw", + "initWithImageManager:", + "noteContentChanged", + "_beginMark", + NULL, + "abdStartedSyncing:", + "shouldBecomeAETEPropertyDeclaration", + "_postNotificationForEvent:notificationName:parent:", + "initWithURL:traverseLink:", + "_isForeignObjectExpression:", + "contextualMenu", + "_isProfileBased", + "__validatePosition:context:", + "getMarkedText:selectedRange:", + "_validatePageNumberView", + "guid", + "_printSessionForGetting", + "ensureLayoutForCharacterRange:", + "_progressForAnimation:start:", + "setNode:isDirectory:displayState:", + "_graphIsInitialized", + "usesMenuFormRepresentationInDisplayMode:", + "initWithKey:type:appleEventCode:isHidden:presentableDescription:name:", + "initWithQueryNode:", + "didFireFault", + "_sideTitlebarWidth:", + "newGroupFromSelection:", + "_archiveToFile:", + "initWithEntity:toOneRelationship:", + "initFromSerializerStream:length:", + "_pageHeaderAndFooterTextAttributes", + "beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:trust:message:", + "initWithFrame:compositions:controller:", + "drawHashMarksAndLabelsInRect:", + "insertText:client:", + NULL, + "propertyTypesForClass:withAddressBook:acquireLock:", + "windowShouldZoom:toFrame:", + "initWithUnsignedShort:", + "handlePreviewTextUpdate", + "initWithCurrentQDPort", + "_nsImage", + "previous", + "predicateWithLeftExpression:rightExpression:customSelector:", + "setOnMouseEntered:", + "itemIndex", + "countryCode", + "initWithDataReference:error:", + "quickTimeSampleDescription", + "_capture:", + "drawLayer:inContext:", + NULL, + "currentSuiteTerminology", + "createThumbnailFromNSFileWrapper:", + "setMiniwindowImage:", + NULL, + "willChangeAttributeForKey:", + NULL, + "addDirNamed:lazy:", + "setFilterPredicate:", + "glyphInfoWithGlyph:forFont:baseString:", + "_atStartOfTextTableRow:atIndex:", + NULL, + "namespace", + "_verifyQuotesAndParenthesesForRange:", + NULL, + "dataForPPI:", + "tabViewItems", + "showNextDocument:", + NULL, + "deactivateMenuItemsInMenu:", + "valueForInputKey:", + "remoteContextWithOptions:", + "_setAnimateColumnScrollingForAnyEvent:", + "documentWasUnlocked:", + "_integerValue", + "_doUnhideWithoutActivation", + "_customizesAlwaysOnClickAndDrag", + "_cfCapitalize:", + "removeNode:", + "argumentsForIvarPortWithKey:", + "setCGImageSource:", + "_indexOfChosenIdentity", + "substringToIndex:", + "_verticalScrollerClass", + "listResources", + "setIgnoreReloadData:", + "_checkRequestForStore:originalRequest:andOptimisticLocking:", + "connectionUnit", + "setUsesEPSOnResolutionMismatch:", + "_initWithName:printer:", + "certificatesFromPemData:certs:", + "numberOfColorStops", + "replaceCharactersInRange:withCharacters:length:", + NULL, + "getPeriodicDelay:interval:", + "keyFramesCount", + "backgroundLayoutEnabled", + NULL, + "_cacheTitleForURL:", + "_uniqueConnectionKey", + "typeInMedia", + "containsIndexes:", + "thumbnailsDidChange", + "_addInputPortWithClass:forKey:attributes:", + "setNeverPurgeHint:", + "preferredFrameSize", + "enoiseROI:forRect:userInfo:", + "isAuthorityCertificate", + "_dismissWithCode:", + "setLayoutType:animate:", + NULL, + "_maxXminYResizeRect", + "autoreverses", + "copyDeep", + NULL, + "_newConflictRecordForObject:originalRow:newRow:", + "_minimizeAll", + "selectRow:byExtendingSelection:", + NULL, + NULL, + NULL, + NULL, + "growGlyphCaches:fillGlyphInfo:", + "rangeForUserParagraphAttributeChange", + "replaceFile:path:", + "_drawLabelHighlightIfNecessaryWithFrame:inView:fullHighlight:", + "setDisplaysAnnotations:", + "doDrawInContext:rect:", + "_scrollFieldEditorToVisible:", + "tiltY", + "abortImportCells", + NULL, + "setBottomBorderColor:", + "_predicateForMessagingAddressService:comparison:value:label:", + "setCurrListName:", + "_encodeArrayOfObjects:forKey:", + "_renderState", + NULL, + "encodeConditionalObject:", + "goForward:", + "IDX", + "indexesOfString:", + "_unionOfSetsForKeyPath:", + "calendarFormat", + "_setDefaultButtonPaused:", + "imageWithSize:", + "_audioCompleted2", + "_cfTypeID", + "_updateTrustValidity", + "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:", + "initJava1", + "scriptingColorDescriptor", + NULL, + "_layoutUpdated", + NULL, + "_setContextMenuHighlightColorForRow:", + "postFocusChangeEventToQueue:", + NULL, + "_validItemViewerBounds", + NULL, + "relativePath", + NULL, + "_PFMOClassFactoryData", + "_setNeedsHighlightedTextHint:", + "_lastTableRow", + "_setFitToScreen:animate:", + "enclosedSubscriptionGroupsForAllGroup:", + "_clockAndCalendarKeyDown:inRect:ofView:", + NULL, + "initWithValues:count:", + NULL, + "fileOwnerAccountID", + "forgetSnapshotsForGlobalIDs:", + "convertSizeFromBase:", + "responseList", + "_scriptingDescriptorOfListType:orReasonWhyNot:", + "countOfIndexesInRange:", + "_resizeContentsOfMainBox", + "setImageFromPath:", + "buttonRectangleForResolutionData:", + "inspectorForPatch:", + "_minYTitlebarButtonsOffset", + "addDocumentIconButton", + "frameColor", + "hashGrow", + "relationshipNamed:", + "setIntegerValue:", + "setCurveHullsEnabled:", + "_URLForString:", + "worksWhenModal", + "_document:didPrint:inContext:", + NULL, + "_updateEnabledStateForSubviews", + "focusedView", + "_getEightBitRGBMeshedBitmap:rowBytes:extraSample:reverseScanLines:removeAlpha:", + "phoneNumbers", + NULL, + "_generateSQLForFetchExpression:allowToMany:inContext:", + "documentRef", + "_willDeleteNodeOutputPort:", + "font", + "_feContext", + "_colorRect", + "borderRect", + "model", + "smartGroupPropertyTypes", + "_initWithLibTidyDoc:child:encoding:", + "_setButtonImageSource:", + "setSuspended:", + "canDragRowsWithIndexes:atPoint:", + "_NSNibPathForUIItemIdentifier:", + "_closeAndDeleteFileAsync", + "newWithFilterInfo:upperItem:", + "observingBinder", + "beginLocalContext", + "indexMenuBarDynamically", + "subpredicates", + "_rightGroupRect", + "_scalesBackgroundHorizontally", + "isEqualFunction", + "_updateCellForDatePreferencesChange:", + "_isBooleanTransformer", + "lockForThreadedOperation", + "displaysEnabledAtRow:", + "tableView:nextTypeSelectMatchFromRow:toRow:forString:", + "processKeyword:option:keyTran:arg:argTran:", + "outlineView:draggedImage:movedTo:", + "_windowTitlebarButtonSpacingWidth:", + "_cheapItemAtRow:", + "flushAllCaches", + "undo:", + "_shouldCopyItemAtPath:toPath:", + NULL, + "_nameWithLooseRequiredExtensionCheck:", + "nts_RecordFromDictionaryRepresentation:withRecordMapping:addressBook:generateIds:", + "_backingCGSFont", + "_cancelAllUserAttentionRequests", + "_menuForNote:", + "getFilterFromFilterArray:", + "arrangeInFront:", + "setEra:", + "setTableView:", + "_isRowHeaderColumn:", + "highestMipmapItemIndex", + "deserializer", + "_maxYmaxXResizeRect", + "_coreUILinearBarIsFocused:", + "beginTrailer", + "_elementAttributeRelationship", + "_createPatternFromRect:", + "_defaultInformation", + "_alternateAutoExpandImageForOutlineCell:inRow:withFrame:", + "outlineView:didClickOnDisabledCell:forTableColumn:byItem:", + NULL, + NULL, + "_constructRequestForURL:isHead:", + NULL, + "removeChild:", + "birthRate", + "fullscreenStatus", + "isHidden", + "modifierFlags", + "questionMarkImage", + "showToolbar:", + "removeAppleUseCoreUIObject:", + "_setErrorExpectedType:", + "_blockHeartBeat:", + "setPriority:forFlavor:", + "setOutputTraced:", + "preferredLocalizationsFromArray:forPreferences:", + "_attachedCell", + "_dropHighlightColorForRow:", + "_updateAllLayerPropertiesFromView", + "previewViewClassForPreviewType:", + "_takeValuesFromTextBlock:", + "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:", + NULL, + "movieWithTimeRange:error:", + "baseURLForDocument:", + "_presentError:delegate:didRecoverSelector:context:", + "isEqualToTimeZone:", + "_offsetRelationshipIndex:fromSuperEntity:andIsToMany:", + "_drawTextFieldWithStepperWithFrame:inView:", + "findString:", + NULL, + "proxyPortClass", + "invalidateLayout", + "attributeExists:withValue:", + NULL, + "_computeHeightOfTop:bottom:", + "stringsFromGUIDs:", + "accessibilityIsPositionAttributeSettable", + "lockObjectStore", + "registerNode:withName:", + "setDefaultValue:", + "minFrameSize", + "_colorSelected:", + "_increaseContainerReferenceCounter", + "pointerID", + "killHUD", + "_writeParagraphStyle:", + "textView:didHandleEvent:", + "valueClass:", + "commitTransaction", + "setMax:", + "_showTextColorImmediatelyInObject:mode:", + "pageRange", + "_setWindowTag", + "_blueControlTintColor", + "initWithNode:", + "clearSearchField:", + "appendBytes:length:", + NULL, + "binders", + "_setDrawingToHeartBeatWindow:", + "restoreCustomInputPortStates:fromState:", + "handleDelegateChangedSelection", + "setSelected:forSegment:", + "isEmpty", + "importFinished", + "getName", + "_documentWindow", + "setIndentationLevel:", + "_addEffects:", + "initWithDomainName:key:title:image:", + "fillAttributesCache", + "_aetePropertyDescriptions", + "_wsmIconInitFor:", + "setUsesUserKeyEquivalents:", + "updateQueryNode:", + "_scriptTerminologyNameOrNames", + "requestWithSession:method:path:", + "renderRoundedRect:radius:strokeColor:fillColor:mode:lineWidth:", + "invalidateDisplayedMembersListAndNotify:", + "fixKeyViews", + "_selectCrayon:updateSelection:", + "performAction:", + "enclosedAreaBounds:", + "layoutRectForTextBlock:atIndex:effectiveRange:", + "availableMembersOfFontFamily:", + NULL, + "stringForObjectValue:", + "allowsIdentitySelection", + "labelRectOfRow:", + "status", + "accessibilityVisibleCharacterRange", + "subscribedPeopleCount", + "documentURL", + "_buttonCellAccessibilityRoleAttribute", + "_restoreSplitPositionFromDefaults", + "drawWithFrame:inView:characterIndex:layoutManager:", + "_selectItems:inIndexSet:", + NULL, + "addDefaultTable", + "_overlayColorForNode:view:", + "_DTDString", + "_postRowCountChangedNotificationOfType:indexes:", + "countOfInputRampParams", + "accessibilityParentAttribute", + "prepareUpdateStatementWithRow:originalRow:", + "len", + "_moveUpAndModifySelection:", + "_removeObject:", + "setInitialFirstResponder:", + "launchApplication:", + "slideshowExportToiPhoto:", + "_web_fixedCarbonPOSIXPath", + "setAudioChannelLayout:error:", + "unbind:", + "setObjectZone:", + NULL, + NULL, + "pullsDown", + "autoscrollWithLocalPoint:", + "_coreUIBackgroundDrawOptionsForSegment:withView:", + "keyPathsForValuesAffectingValues", + "objectInInputExtentAtIndex:", + "_allowsSizeMode:", + "needsPageControl", + "setFrameRate:", + "setScreenRect:", + "_saveCurrentPanelState:", + "_initCurrentThread", + "__saveIfReallyEditedWithDelegate:didSaveSelector:contextInfo:", + "cacheCurrentDBStatementOn:", + "prefersTrackingUntilMouseUp", + "application:openFileWithoutUI:", + "setSlideshowIndexHandler:", + "keyPath", + "setObject:forKey:inDomain:", + "makeDocumentWithContentsOfURL:ofType:", + "fetchWithRequest:merge:error:", + "_coreCursorType", + "addFieldsToDictionaryRef:", + "pixelType", + "setReleasedWhenClosed:", + "_currentListLevel", + "initWithFileName:markerName:", + "copyDebugDescription", + "modificationDateYearless", + "toolbarButton", + "ID", + "searchResult", + NULL, + "_drawRelevancyWithFrame:inView:", + "_expandRep:", + "_presentDiscardEditingAlertPanelWithError:relatedToBinding:", + "countForObject:", + NULL, + "_attributedLabelsFromStringLabels:", + "initWithContentsOfFile:usedEncoding:error:", + NULL, + "_dotMacAccountPasswordFromSystem", + "_glyphForFont:baseString:", + "setOutlookWebAccessServer:", + "_getRequestPostHandler:", + "_crackSize:", + "_sortedEntitiesForConfiguration:", + "nickname", + "setAlphaValue:", + "imageValue", + NULL, + "boundsForNode:", + "_range:containsPoint:", + "_calcWidthsWithMargin:operation:", + "setPurgeable:", + "addConnection:error:", + "_updateCommandDisplayWithRecognizer", + "undoManagerForWindow:", + NULL, + "setForcedContentTypeUTI:", + "_removeSubscriptionConfirmSheetDidEnd:returnCode:contextInfo:", + "_noteKeyValuePairChangedKey:", + "_needsDisplayInRect:", + "writeProfilingDataToPath:", + "_fullCount", + "_postQueryFinishedNotification", + "usedRectForTextContainer:", + "_setDrawsBackground:", + "insertObject:at:", + "menuBarHeight", + "initWithSuiteName:className:dictionary:", + "initWithSearchSliceType:attributeName:", + "implementsSelector:", + "_glyphAttributesFromEventRef:forString:", + "setObscured:", + "_presentableDescription", + "setScrollYEnabled:", + "initWithTextBlock:layoutRect:boundsRect:", + "_cachedGlobalWindowNum", + NULL, + "frameImageAtTime:", + "_cgsEventRecord", + "runModalOpenPanel:forTypes:", + "sortWithSortDescriptors:recursively:", + "_parseCharacterAttributesFromElement:attributes:", + "_collectResourcesForAge", + "requestWithURL:", + "titlebarRect", + "stopUpdateInsertionAnimation", + "_finishedMakingConnections", + "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:", + "_fontWithNumber:size:bold:italic:", + NULL, + "setToolTip:forCell:", + "setString:", + "lockButton", + NULL, + "setOverlay:forType:", + "_nextTrackingNum", + "canIgnorePopulatingObject:", + "shadowRadius", + "_findRowObject:startingAtObject:withIndex:", + "_mappedFile", + "popupFrameForAnnotation:", + "initForURL:withContentsOfURL:ofType:error:", + "_invalidateDisplayForMarkedOrSelectedRange", + "popUpContextMenu:withEvent:forView:", + "converterForDatabaseAtPath:", + "setUpGState", + "byValue", + NULL, + "_layoutTreeDescription", + NULL, + "_hiddenTableColumnsAutoSaveName", + "allowsKeyedCoding", + "carbonNotificationProc", + "_initializePredefinedEntities", + "restoreRecord:intoGroup:options:", + "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:", + "request", + NULL, + "_initWithDIB:", + "_labelColor", + "setResizable:", + "passwordForUser:", + "thumbnailOperationGotThumbnailImage:", + "adjustHalftonePhase", + "_setNeedsRecalc", + "_flashSelectedPopUpItem", + "notActiveWindowFrameHighlightColor", + "flushPDFWindow", + "lockInfo", + NULL, + "usableParts", + "_accessibilityArrowScreenRect:", + "connect", + "_sortNodesForSave:", + "governingAlias", + "addItemWithTitle:", + "setSampleSize:", + "_createAttributeDescriptionForNode:", + "removeTextLayer", + "sendInv", + "_performUserAction:forEvent:", + "_copyForCurrentOperation", + "ISS__ay_postNotification:inThread:", + "setInsertionClassDescription:", + "displayNameForVNodeAtPath:", + "_imageLevel_setBackgroundColor:", + "selectedTabTextColor", + "_getBrowser:browserColumn:", + "deltaZ", + NULL, + "unarchiverWillFinish:", + "arrayForKey:", + NULL, + "setMipmapSize:", + "sendsWholeSearchString", + "representation", + "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:", + "addedGroups:", + "indexAtPosition:", + "scheduledRedisplay:", + "_getGlyphIndex:characterIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:", + "drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:", + NULL, + "parseCharDef:", + NULL, + "displayBox", + "invTransformRect:", + "_openChannel", + "_old_initWithCoder_NSComboBoxCell:", + "_exposeBinding:valueClass:", + "_fileUnlock", + "stopLiveSession", + "startObservingModelObjectsAtReferenceIndexes:", + "_delegate", + "_determineGridParametersFromItemPrototype", + "_resumeExecutionWithResult:", + "addEffects:", + "_shouldShowCellExpansionForRow:column:", + "isWithinTimePeriodComparison:forProperty:", + "_activateOverlayControls", + "_finalize_QCConverter_YUV422", + "_shouldRequireAutoCollapseOutlineAfterDropsDefault", + "_pixelFormatAuxiliary", + "_setDragAndDropCharRanges:", + "propertyForRollOverIdentifier:", + "runThreadWithSelector:argument:", + "initWithPerson:imageData:largeImageData:clippingRect:addressBook:", + "applyPasteCallback:layer:", + "ISS_stringByURLUnquoting", + "_cleanUp:", + "setRootPath:", + "_transformerRegistry", + "setSelectionDictionary:", + NULL, + "__oldnf_deleteAllCharactersFromSet:", + "_fetchAllRanges", + "forwardingTargetForSelector:", + "runModalSavePanel:withAccessoryView:", + "addItem:", + "collectionBehavior", + "_folderThread:", + "initPropFindWithSession:withDepth:path:lookingForProps:", + "imageDidChange:imageState:image:", + "colorSpaceModel", + "_queryCanSelectItem:displayValue:inRow:", + "layoutManagerOwnsFirstResponderInWindow:", + "viewDidUnhide", + "valueClass", + "currentThreadDisplayOperationStack", + "_scriptingTextDescriptor", + "typeOfProperty:", + "_web_guessedMIMETypeForXML", + "stringByExpandingTildeInPath", + "_broadcasterThread:", + NULL, + "initWithRole:parent:rect:propertyPath:range:", + "_ql_allowsFileAccessForPreview:", + "scaleTransform", + "filterNamesInCategory:", + "_notifyView_DidSetAllCurrentItems:", + "_delegate_nextTypeSelectMatchFromIndex:toIndex:forString:", + "endFrame", + "sendMouseUpActionForDisabledCell:atRow:column:", + "sourceAttributeName", + "getProperty::", + "isViewOfPickerLoaded:", + "forgetSnapshotForGlobalID:", + "orderedState", + "lineNumber", + "isLayerTreeHost", + "newFetchedArray", + "blackDeviceColor", + "setSegmentedBufferAddress:", + "_nodeBecomesFirstResponder:", + "windowDidResignKey:", + "showsOutlineCell", + "decodeInt32ForKey:", + "clampedBounds", + "_batchOrdering", + "handleEvent:callRef:", + "_isAppSmartFolderNode:", + "bufferPixelsHigh", + "_determineResizingOptionsVertical:horizontal:", + "filesystemItemLinkOperation:shouldLinkItemAtPath:toPath:", + "openGLTextureID", + "deserializeData:", + NULL, + "setSavePanel:", + "fireWillSelectComposition:", + "vCardRepresentation", + "popupViewMoveToFront:", + "cancelPendingLookups", + "setRelativePosition:", + "_showTooltipWithText:", + "_setVariableColumn:", + NULL, + "pushSubnode:recalcPointers:", + "updateUI:", + "isRowSelected:", + "_setPreviewController:", + "indexSheetDidDeactivate:", + "_isMultiMode", + "predefinedNamespaceForPrefix:", + "adobeRGB1998ColorSpace", + "_resetDefaultButtonCycleValue", + "cacheResolutionInfoForResolution:", + "extraGroupsCount", + "_canModifyManagedContent", + "numberWithDouble:", + "initWithData:options:documentAttributes:error:", + "imageTypes", + "setNeedsUpdate:", + "viewedDateForPerson:", + NULL, + "userFixedPitchFontOfSize:", + "subscribedPeople", + "lockedObjects", + "selectionFromPointToBottom:", + "setRange:", + "initWithName:appleEventCode:objcClassName:isHidden:", + "getFontFromAppearanceString:", + "initWithLDAPManager:forServer:sessionUID:", + "_expandableAttributedString:", + "_preeffectBaseImage:state:backgroundStyle:", + "certificate", + "setTime:forKeyFrame:controlType:", + "setFieldName:", + "setMenu:forSegment:", + "initRelockWithURL:lockToken:", + "_chainNewError:toOriginalErrorDoublePointer:", + "_startLoadingPreview:timeoutDate:", + "imageData", + "patchAttributesWithName:", + "recalcOutline:forResolutionData:", + "portMinValue", + "usedSize", + "_checkForObsoleteDelegateMethodsInObject:", + "_autosavingBehavior", + "writeExpansion:", + "awaitReturnValues", + "hasMemberInPlane:", + "isValidInPreviewMode:", + "insertSublayer:above:", + "cacheUsedByJpegData", + "metadata", + "setIntercellSpacing:", + "goBack", + "_closeInputPalette", + "_setAutoscalesBoundsToPixelUnits:", + "_computeMinWidthForSimpleSavePanel:", + "_akWindowDidBecomeKey:", + "runningWithinInterfaceBuilder", + "_performDragFromMouseDown:inColumn:", + "_updateObservingForAutomaticallyRearrangingObjects", + "removePointerAtIndex:", + "_printOperation:wasRunWithSuccess:inContext:", + NULL, + NULL, + "relockRequestWithSession:URI:lockToken:duration:", + "setColorComponents:withColor:", + "ignoreTypos", + "_resetTrackingRect", + "compositionPickerView:didSelectComposition:", + "outlineView:numberOfChildrenOfItem:", + NULL, + "renderMode", + "initWithCFHTTPCookie:", + "_isDrawingMultiClippedContentColumn:", + "decodeDataObject", + "_iDiskSessionWithAccount:host:port:scheme:", + "sizeForDisplayingAttributedString:", + NULL, + "setMaximumThreadCount:", + "helpLinkDidFinishPopulating:", + "_windowChangedKeyState", + "convertSize:toView:", + "setLastUpdatedDefaultKey:", + "_restoreTornOffMenus", + "_blockRangeForCharRange:", + "setSelectionColor:", + "_keyEquivalentModifierMaskMatchesModifierFlags:", + "resetParameterView:", + "currentRamBindedRange", + "setSizeWithoutSavingContent:", + "selectedRowEnumerator", + "_initAnimationForGroup:expand:", + NULL, + "initWithSlideshowEngine:dataSourceIndex:subIndex:", + "browser:titleOfColumn:", + "firstLineParagraphStyle", + "setPrebindingMode:", + "defaultDateFormatter", + "firstRectForCharacterRange:", + "registeredChildrenPaths", + "_removeInputForKey:", + "setRemovedOnCompletion:", + "_wantsToolTipAtColumn:row:", + "ICCProfileData", + "URLAtIndex:effectiveRange:", + "lineScroll", + "appendGRLs:", + "marked", + "mediaWithQuickTimeMedia:error:", + "sensibility", + "_selectedSlices", + "objectEnumerator", + "incrementRefCountForObjectID:", + "setValue:atIndex:", + "initWithPageRef:", + NULL, + "srRecognizer", + "_cleanup", + "raise:format:", + "_addBindVarForConstVal2:", + "initWithWindowNibName:", + "setDirect:", + "cell:needFinalDataForKey:", + "uppercaseLetterCharacterSet", + "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:", + "isPaneSplitter", + "_CFCachedURLResponse", + "ourPanelWillClose:", + NULL, + "appendDisplayedNode:identifier:title:displaysChildren:", + "drawForPage:withBox:active:inContext:", + "_enumeratedArgumentBindings:", + "_coreUIFocusStyleWithView:", + "samplesPerPixel", + "_parseGlobals", + "updateInputContexts", + "subCacheSizeIndex", + "_focusing", + "_storeNextReferenceInMetadata", + "_web_stringByCollapsingNonPrintingCharacters", + "weekday", + "_newPropertiesForRetainedTypes:andCopiedTypes:preserveFaults:", + "setGridStep:", + "setSelectedSegment:", + "timeZoneWithName:data:", + NULL, + "parseTokenWithMask:", + NULL, + "_loadViewIfNecessary", + "_web_domainMatches:", + "selectThumbnailAtIndex:", + "streamAtIndex:", + "stringWithSavedFrame", + "slotForKey:", + "setWorksWhenModal:", + "getXMLAttributeValueFromObject:forAttribute:", + "_rowHeaderShadowSurfaceBounds", + "_volumeIsEjectableForRefNum:", + "showUI", + "_processRecentChanges:", + "isaForAutonotifying", + "_viewsArray", + "nts_Touch", + "focusedColumn", + "childGlyphStorageWithCharacterRange:", + "_obtainKeyFocus", + "initWithType:itemIdentifier:", + "__escapeString5991", + "rectValue", + NULL, + NULL, + "_pixelBufferAuxiliary", + "setTemporaryAttributes:forCharacterRange:", + "blackComponent", + "_prepareToMessageClients", + "indentationPerLevel", + "_rulerAccViewSpacingAction:", + "point:inNameRange:", + "_standardEffectsForImageWithCocoaName:state:backgroundStyle:startingWithBaseArt:", + "_ensureRangeCapacity:", + NULL, + "_registerDynamicToolTipManagerInstance:", + "setPanelController:", + "_needsToUseHeartBeatWindow", + "dragSelectionWithEvent:", + "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:", + "_clipViewAncestor", + "_sendDelegateShouldShowCellExpansionForColumn:row:", + NULL, + "swapOldImage:oldState:newImage:newState:", + "_doRemoveFromSuperviewWithOutNeedingDisplay:", + "_didCreateFile", + "initWithRect:color:ofView:", + "_rowContainsLeaf:", + "_registerSuiteDescriptions:", + "initWithDictionary:", + "_appWillTerminate:", + "_recursiveEnableTrackingRectsForNonHiddenViews", + "_setBatchingParams", + NULL, + "deviceDescription", + "processRequests:", + "registerChannel:", + "markerLocation", + "_restoreDefaultSettingsForOpenMode", + "setPositivePrefix:", + "textContainerForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", + "initWithInputController:andField:", + "defaultClientID", + "colorFromAppearanceTokens:", + "_drawBadgeLabel", + "invalidateConnectionsAsNecessary:", + "initWithContentsOfURL:options:error:", + "initWithData:type:size:", + "childrenKeyPath", + "movieShouldTask:", + "_needsToResetDragMargins", + "_extendNextScrollRelativeToCurrentPosition", + "_enclosingBrowser", + "_recursiveAllKeys", + "setParentNode:", + "_createSubgraphFromSelection:", + "setTimeStyle:", + NULL, + "_web_changeFileAttributes_nowarn:atPath:", + "pipe", + "attributedSubstringFromRange:", + "scaleFactorChanged", + "canInitWithPasteboard:", + "setPreloadingURL:", + "removeListSheetDidEnd:returnCode:context:", + "archiveRootObject:toFile:", + "_cancelKey:", + "enlargedBounds:withXOffset:andCount:", + "_setLevelForAllDrawers", + "pasteboardByFilteringData:ofType:", + "mouseInHUD", + "isExpandedNode:", + "_validate", + "drawsShadows", + "_showKeyboardUILoop", + "_tryLockViewHierarchyForModification", + "_processKeyboardUIKey:", + "isNodeRegisteredWithName:", + "shouldUnmount:", + "dependenciesList", + "_setForcesLeadingZeroes:", + "_skipsSynchronizationForEditingTextView:", + "_docController:shouldTerminate:", + "_updateInfo:", + "keywordColors", + "validateItem:", + "enumerator", + "_setNumVisibleSwatchRows:", + "itemChanged:", + "_drawImageFrameAtIndex:animationValue:alpha:", + "cellsRenderedIndexes", + NULL, + "_setPreHandler:andTargetObject:", + "superClass", + "setSelectedIndexes:", + NULL, + "columnResizeButtonImage", + "cachedImageForEmail:", + "itemRolledOver", + "setLocalizationFromDefaults", + "resizeIncrements", + NULL, + "_substituteEntityAndProperty:inString:", + "fileOperationCompleted:ok:", + "_setEncipherOnlyUsage:", + "imagingModeResetting", + "putData:toPath:withHeaders:rangeStart:rangeEnd:", + "windingRule", + "_clearLiveResizeColumnLayoutInfo", + "hasObjectValue", + "_setToolbarView:", + "initWithDir:nodeRef:nodeName:", + "drawerShouldOpen:", + "_web_preferredLanguageCode", + "collectResources", + "setDatabase:", + "compositions", + "numberOfLights", + "_fontDescriptor", + "descriptor", + "filenameWithOriginalFilename:", + "_baseWritingDirection", + "_endMyEditing", + "_chooseSizeFromList:", + "setDefaultMessage:", + "servicePortWithName:", + "showRGBView:", + "publishWithOptions:", + "itemHeight", + "setTempTintAtPoint:", + "layerForImage", + "_databaseContextState", + "colorList", + "copyCachedInstance", + "_shouldBeTreatedAsInkEventInInactiveWindow:", + "setUpdatedCompositionValue:forKey:", + "_providerTransformationForImage:inBounds:toTextureWithTarget:maxSize:outBounds:", + "addedToGroup", + "_updatePlaceholdersForBindingInfo:", + "_posterForMovie:", + "_beginSpeakingString:optionallyToURL:", + "_delegateRespondsToSelectCellsByRow", + "expandedGridFrame", + "_forceFlushWindowToScreen", + "encodeInt:forKey:", + "backupInfoForBackupAtPath:", + "slideshowWasStartedWithStartRect", + "deserializeNewObject", + "_setItemIdentifier:", + "accessibilityFrontmostAttribute", + "_markSelectionIsChanging", + "clientID", + "sendDoubleAction", + "_certAuthorityKeySize", + "setRotationAngle:centerPoint:", + "_visibleRectOfColumns", + "decodeDownloadHeader", + "_attachToSupermenuView:", + "removeColorAllowed", + "_insertMissingSubviewLayers", + "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:", + "initWithContentsOfFile:options:error:", + "_noteNewRecentDocumentURL:forKey:", + "elementWithEffectName:", + "emissionLongitude", + "_addedTab:atIndex:", + "runModalForTypes:", + "_isTextured", + "_willPopUpNotification:", + NULL, + "_simultaneousSegmentAndLabelTrackingWithEvent:forSegmentAtIndex:withLabelRect:", + "drawEffectGizmo", + "_popUpButtonCellInstances", + "resetDisplayDisableCount", + "_savedVisibleFrame", + "createMinimalSharedContextWithAdditionalAttributes:recycleWhenDone:", + "setVolatileRepresentation:", + "recordsForUIDs:", + "clickedRow", + "_rowEntryForItem:requiredRowEntryLoadMask:", + NULL, + "descriptionWithCalendarFormat:", + "doDoubleClick:", + "setShadowState:", + "fileGroupOwnerAccountID", + NULL, + "compare:", + "_cancelClicked:", + "groups", + "_emptyMatrix:", + "handleSwitchToCardOnlyFrom:animate:", + "precomposedStringWithCanonicalMapping", + "pixelFormatsWithCompatibility:", + "addEntity:index:", + "getLastHoleStart:len:", + "_addDeclaredKey:", + "_deselectColumn:", + "_setupSegmentSwitchForControl:firstImage:secondImage:thirdImage:action:showDropDown:", + "_cancelRequest:", + "topBorderColor", + "willRemoveFromPersistentStoreCoordinator:", + NULL, + "_processDocument", + NULL, + "ensureLayoutForTextContainer:", + "_blackRGBColor", + "_collectResourcesForSize", + "setMandatoryClient:", + "nextStringInEncoding:quotedPrintable:stopTokens:trim:", + "animateToEncloseElements", + "_getNewIDForObject:", + "_scriptingRealWithDescriptor:", + "property", + "colorWithCalibratedWhite:alpha:", + "imageBorderFrame", + "_parseParagraphAttributes1", + "reallyRemoveObjectAtIndex:", + "lastCrayon", + "_removeBlankLines", + "_updateButtons", + "execute:", + "_updateDocumentMetadata", + "_sizeWindowForPicker:", + "setTypesetter:", + "isDrawingFindIndicator", + "keyBindingState", + NULL, + "brownColor", + "drawWithCGImage", + "setLockedObjects:", + "_setNextToolbarDisplayMode:", + "addPolicy:", + "resetGroupAndPeopleFromDefaults", + "dataRef", + "isIndeterminate", + "initPostWithSession:path:data:", + "_setData:encoding:", + "doHorizontalBoxPass:xOffset:count:factor:sums:", + "tableView:shouldEditOnSingleClick:inRow:tableColumn:", + "_insertionGlyphIndexForDrag:", + "updateReferenceIndexesToReflectRemovalAtIndex:", + "_createImageForLockFocusUseIfNecessary", + "didLoadBytes:loadComplete:", + "isMarkupAnnotation", + "handleValidationError:description:inEditor:errorUserInterfaceHandled:", + "replaceValueAtIndex:withValue:", + "groupsController:outlineView:numberOfChildrenOfItem:", + "clearAsMainCarbonMenuBar", + "doPerformResource:", + "startContainer", + "objectAtIndex:", + "_reflectSize", + "_truncatedAlwaysTrustCertString:forHostOrEmail:", + "castObject:toType:", + "_lockForAllThreads", + "setPosition:", + "rowTypeForRow:", + "registerViewNotifications", + "initWithEntity:insertIntoManagedObjectContext:", + "initWithSelector:target:", + "_pathLengthPresent", + NULL, + "updateMagnifying:", + "beginDocumentWithTitle:", + NULL, + "panAngle", + "isOpen", + "_changeEditable:", + "varietyCharSet:", + "setValidatesImmediately:", + "autoconfigureWithProtocol:", + "_canDeselect:", + "_mapTime:repeatIndex:", + "initMkpathWithSession:URI:token:", + "_setTextAttributeParaStyleNeedsRecalc", + "scriptingEndsWith:", + "_toggleTypographyPanel", + "parseData:", + "referenceWillDie", + "initWithCGLSContext:pixelFormat:", + "_setNeedsDisplayForFirstResponderChange", + "_fetchedIndexes", + NULL, + "_cornerViewHidesWithVerticalScroller", + "validationPredicates", + "wantsNotificationForMarkedText", + "_issuePropFindAtPath:withDepth:lookingForProps:", + "shapeHeight", + "browser:shouldSizeColumn:forUserResize:toWidth:", + "updateSearchView", + "animations", + "_attemptToPerformClickOnFocusedColumn", + "handleMouseEvent:callRef:", + "textStorage", + "isVisible", + "_checkDataSource", + "_readCAConfigFileFullPath:trustRefOnErr:identityNameInfo:subjAltNameExtObj:keyUsageExtObj:keyPairAttrsObj:certInfoObj:basicConstrExtObj:extKeyUsageExtObj:additionalCertInfoObj:caWebSite:caPemData:caPubKeyHash:", + "_inputManagerInNextScript:", + "_tightenResizables:intoGivenWidth:", + "_updatedParameters:", + "highlightedMenuTextColor", + "fxPickerDidValidate:", + "willStartClosingTransition", + "_allowsDuplicateItems", + "animates", + "pictureTakerView", + "startCapture", + NULL, + "_menuItemViewer", + "createRepresentationOfType:forManager:withOptions:", + "sizeValue", + "setAvailableVideoPreviewConnections:", + "_drawContents:faceColor:textColor:inView:", + "credentialsForProtectionSpace:", + "initWithContainerClassID:key:implementation:selector:extraArguments:count:", + "_keyboardNavigateDoSelectOfFocusItem:", + "setIndex:ofObject:", + "signUpURL", + NULL, + "removeAllDependentTextures", + NULL, + "pane", + "needsPlayControl", + "addServer:", + "createOptimizedProviderWithTransformation:cropping:", + "attributeAtIndex:", + "transportType", + "greenReconstruction:edges:phase:scale1:scale2:decisions:votedDecisions:image:decisionImage:votingImage:", + "accessibilityTitleUIElementAttribute", + "preferencesContentSize", + "autosizesAndCenters", + "initWithType:arg:", + "types", + "dataReferenceEnumeratorWithQTMedia:", + "serializeList:", + "membersAndSubgroups", + "_setUseBasicAuth:", + "_appendAttachment:atIndex:toString:", + "setTargetIconSize:", + "_segmentedMenuDragSlopRect", + "_beforeDrawCell:atRow:col:clipRect:", + "_invokeSingleSelector:withArguments:onKeyPath:", + "connection:shouldMakeNewConnection:", + "setHidesSharedSection:", + "bitmapRepresentationOfItem:withUID:", + "indentAtIndex:", + "setCanBecomeVisibleWithoutLogin:", + "initWithNibNamed:bundle:", + "_clearCachedStatements", + "startSlideShow:", + "_updateThumbnailLayers", + "initWithURL:MIMEType:expectedContentLength:textEncodingName:", + "isNSOrderedSet__", + "swatchWidth", + "_feImage", + "_createdDescriptor", + "_initializeButtonCell", + "cancelAuthenticationChallenge:", + NULL, + NULL, + "setDataReference:", + "_willStartTrackingMouseInMatrix:withEvent:", + "_allocData:", + "_deferredAdjustMovie", + "initForSerializerStream:", + "_wantsRowAnimations", + "accessibilityElementForAttachment:", + "URL:resourceDidFailLoadingWithReason:", + "activeAttributeEditorControl", + "instantiateNodeWithClassName:identifier:", + "formatChanged:", + "setObject:forResolution:", + "_attributedStringForRepresentedObjects:", + "_checkLinksAfterChange", + "userInterfaceItemIdentifier", + "minX", + "accessibilityIsSortButton", + "canGoNext", + "proxySource", + "forgetExternalDataForObjectID:", + NULL, + "_setCurrentDocumentURL:withTransition:blocking:", + "_shouldDrawSelectionIndicatorForItem:", + "cellSizeForBounds:", + "_adjustFontSize", + NULL, + "savedSearchDictionaryWithCriteriaSlices:anyAttribute:viewOptions:", + "infoQuery", + NULL, + "selectedTextActive", + "_handleCurrentDirectoryChanged:", + "_statusItemWithLength:withPriority:", + "removeAnnotationControl", + "_personFromRecent:", + "_scriptingIndexOfObjectWithName:inValueForKey:", + NULL, + "_fillPropertyCache", + "currentAnimationManager", + "_updateLabelViewByLabelRect", + "addWindowIdentifier:", + "keyCode", + NULL, + "domainWillUnbindAll:", + "invoke", + "importBegan:", + "_beginDraggingColumn:", + "setImage:imageProperties:imageState:", + "advancementForGlyph:", + "_prepareForPushChanges:", + "organization", + "_thumnailDidUpdate:", + "_setFilterPredicate:", + NULL, + NULL, + "initWithAXUIElementRef:", + "_compareMultiLabelDictionaryKeyWithRecordValue:", + "connection:didCancelAuthenticationChallenge:", + NULL, + "_elementHasOwnBackgroundColor:", + "_impactsWindowMoving", + "selectPreviousKeyView:", + "_updateItemsBySimpleTemplates", + "_initWithProperties:primitiveType:", + "keyDown:inRect:ofView:", + "getAttributesAndValuesInNode:fromBuffer:listReference:count:", + "className", + "closeBackgroundWindow", + "_inactiveButtonsNeedMask", + NULL, + "registerUndoWithTarget:selector:object1:object2:object3:", + "nts_Description", + "_makeSureFirstResponderIsNotInInvisibleItemViewer", + "title", + "createAdapterOperationsForDatabaseOperation:", + "setImagingModeForcedToVisualContext:", + "defaultCountryCode", + "_itemIdentifiersForColorPickers:", + "_argument", + "nts_SetMe:", + "isNSData__", + "beginPageWithBounds:", + "_uniqueKeyFromNode:", + "manyToManyDeltas", + "okClicked:", + "isInUseByAnotherApplication", + "addSample:", + "orPredicateOperator", + "initForKeys:count:", + "canExportToIPhoto", + "_web_setObject:forUncopiedKey:", + "deviceConnectionDidChange", + "documentForFileName:", + "_getFloat:forNode:property:", + "abAssimilatedRecordFor:", + "setChildrenKeyPath:", + "_cell_isEditable", + "initWithLDAPManager:forServer:queryString:sessionUID:", + "setDefaultTabInterval:", + "_toggleFrameAutosaveEnabled:", + "_hideAttachedWindows:findKey:", + "_registeredObjects", + "textView:willChangeSelectionFromCharacterRange:toCharacterRange:", + "_needsRedrawForMovement", + "_maxXTitlebarDragWidth", + "_canInitiateRowDragInColumn:", + "editable", + "removeKeyFrame:fromTimeLine:", + "_readBBox", + "email:forToken:hasCert:", + "_backgroundStyle", + NULL, + "adjustToFileFormatInfo:imageInfo:utType:", + "_makeDownCellKey", + "_isDaylightSavingTimeForAbsoluteTime:", + "operationThread", + NULL, + "imageByCroppingToShape:", + "formats", + "_tryDrop:dropItem:dropChildIndex:", + "initWithExpression:trailingKeypath:inScope:", + "executablePath", + "setDrawsOutsideLineFragment:forGlyphRange:", + "supportsUnicode", + "accessibilityVisibleColumnsAttribute", + "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:", + "numberOfSelectedColumns", + "_stopFileWritingForConnection:fileControlToken:runningOperation:stopWritingFlags:stopError:", + "_getButtonImageParts:::", + "flushGraphics", + NULL, + "_clipViewBoundsChanged:", + NULL, + "effectNamed:", + "_duplicateItemReason", + "IKFixDPI", + "menuForTokenAttachment:", + "repeatPattern:atScale:withOffset:", + "setTotalSpace:", + "_systemColorChanged:", + "contentSize", + "setDTD:", + "attachSubmenuForItemAtIndex:", + "canRenderWithCGLContext:", + "_progressPanel:didEndAndReturn:contextInfo:", + "membersSelectionChanged:", + NULL, + "_responderInitWithCoder:", + "positionOfGlyph:precededByGlyph:isNominal:", + "_readPersistentBrowserColumns", + "viewDelegateChanged", + "orderFrontStylesPanel:", + "shouldByDefaultInsertAtBeginning", + "openFile:withApplication:andDeactivate:", + "fileManager:shouldLinkItemAtPath:toPath:", + "labelBoundsWithFrame:", + "_attributesAtPath:partialReturn:error:", + "descType", + "_createArrays", + NULL, + "crayonClosestToIndex:", + "_setDrawingInRevealover:", + "rangeForUserCompletion", + NULL, + "setBooleanValue:", + "standardContentBorderThicknessForEdge:borderSize:", + "localizedInputManagerName", + NULL, + "_addDefaultScopeButtons", + "transformedRange", + "originalDontInteractFlag", + "menuKeyEquivalentAction:forEvent:", + "sharedTypesetter", + "invalidateDisplayedMembersList", + "initWithData:documentClass:isSingleDTDNode:options:error:", + "copyItemAtPath:toPath:error:", + "drawPDFHighLevel:", + NULL, + "_sourceListGroupTitleTextColor", + "registerImageExporterClass:", + "highlightImageBackgroundPiece", + "newDocument:", + "useAllLigatures:", + "_keyboardLoopNeedsUpdating", + "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:", + "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:", + NULL, + "removeSubItemWithAttribute:", + "fetchContext", + "makeObjectsPerformSelector:withObject:", + "_setPartialKeysWithTableBinder:forAllTableColumnBindersOfTableView:", + "constraintDefinitions", + "setShouldFlip:", + "_subpredicateDescription:", + "_isDying", + "_doSetAccessoryView:topView:bottomView:oldView:", + "roundsToInteger", + "_saveFailed", + "setFilters:", + "isTemporaryID", + "_candidateDragRowIndexForClickInRow:", + "loadRecentsIfNeeded", + "setViewOfPickerIsLoaded:", + "writeHyphenation", + "initWithScheme:host:port:", + "_updateInlineSlideshow", + "isAttribute", + "lastIndex", + "_adjustPort", + "altIncrementValue", + "sharedCredentialStorage", + NULL, + "control:isValidObject:", + NULL, + "setSendsActionOnEndEditing:", + "IKCleanTimedOutCache", + "_obeysHiddenBit", + "setActiveColorSpace:", + NULL, + "boundsForBox:", + "_dropHighlightColor", + "textTransform", + "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:", + "accessibilityProxyAttribute", + "createImageWithOptions:", + "netServiceBrowserDidStopSearch:", + "unscript:", + "objectAtIndex:effectiveRange:", + "_changeColorToColor:", + "_scriptingDescriptorOfObjectType:orReasonWhyNot:", + "_URLByEscapingSpacesAndControlChars", + "_localizerForSlice:", + "horizBlur2ROI:destRect:", + "setFade:", + NULL, + "_nextTypeSelectMatchFromRow:toRow:inColumn:forString:", + "_setNeedsValidation:", + "outlineView:shouldCollapseItem:", + "initWithRow:ofTableView:", + "setFinalValue:", + "_periodicEvent:", + "tableView:shouldTypeSelectForEvent:withCurrentSearchString:", + "unlockFocusInRect:", + "_modeMenuKeys", + "_refreshesAllModelObjects", + "markABCoreDataImportCompleted", + "_setFilteringSearchString:", + "windowWillMinimize:", + "_commonNewScroll:", + "replyTimeout", + "localizedEntityNameForEntity:", + "_registerWithDockIfNeeded", + "_lockViewHierarchyForDrawingWithExceptionHandler:", + NULL, + "dictionaryAtURL:securely:andReturnResultCode:", + "accessibilityRoleAttribute", + "initWithSQLEntity:objectID:", + "replaceObjectsInRange:withObject:length:", + "restoreDrawingState:", + "invalidateMipMaps", + "_setEmbeddedData:", + "endInstanceCreationForEntityMapping:manager:error:", + "_makeNewListFrom:", + "removeAllObjects", + "defaultNeutralChromaticityY", + "_collectionWithName:", + "_generateSQLForConst:inAttribute:expression:sensitiveOptions:inContext:", + "_createMapForRadius:strokeColor:fillColor:mode:lineWidth:", + "_setContents:", + "resizingMask", + "setPlusButtonAction:target:", + "_moveGapAndMergeWithBlockRange:", + "pointValue", + "tableView:writeRows:toPasteboard:", + "placeholderString", + "detailsDisclosedClicked:", + "lockFocusForView:inRect:needsTranslation:", + "_convertToQDRect:", + "_wantsHideOnDeactivate", + "initWithAddressBook:", + "getImage:rect:", + "_cleanupBindingsWithExistingNibConnectors:exception:", + "fileLocker:lockWasStolen:", + "isPlaying", + "descender", + "setAllowsTypeSelect:", + "_makeNextCellKey", + "tableRows", + "indexSheet:titleForDocumentURL:", + "buildRepresentationFromSearchElement:builder:order:level:", + "isMutable", + "mouseDown:inView:", + "searchButtonCell", + "indexOfSubItem:", + "nodeBecomesFirstResponder:view:", + "_loadAllPlaceholderItems", + "subject", + "setEditableTrust:", + "_cachedChildrenForNode:createIfNeeded:", + "_todayString", + "isNSString__", + "_clockAndCalendarContinueTracking:at:inView:", + "modes", + NULL, + "searchMenuTemplate", + "_runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:", + "_receiveHandlerRef", + "_setInputTopLine:", + "setIgnoreMenuClosedEvents:", + "transactionState", + "areAllContextsSynchronized", + "_subtreeDescription", + "_storeInfo1", + NULL, + "_mergeDeletionWithStoreChangesForObject:withRecord:", + "outlineView:shouldHighlightWithoutSelectingCell:forTableColumn:byItem:", + "_validateAnyKey:error:", + "_minYWindowBorderHeight", + "deleteGlyphsInRange:", + "dimensions", + "media", + "trackMouseEvent:", + "accessibilityDecrementButtonAttribute", + "suppressSpecificNotificationFromObject:keyPath:", + "synchronousMode", + "_ensureAndLockPreferredLanguageLock", + "sendsActionOnEndEditing", + "TXTRecordData", + "onTimer", + "_autoExpandItem:", + "optimalBytesPerRowForWidth:", + "showDistribution:", + "_clockAndCalendarTakeDisplayedMonthFromDateValue", + "_convertStringToData:", + "_makePreviousCellOrViewKey", + "_canonicalURLForURL:", + "drawRulerLines", + "indexOfItem:", + "captureOutput:mustChangeOutputFileAtURL:forConnections:dueToError:", + "countOfInputImage", + "connectToLDAPServer:", + NULL, + "readFromFile:error:", + "_doCloseDrawer", + "setFlatness:", + "setShowPanels:", + "_preferredPopupHeight", + "_minYTitlebarTitleOffset", + "selectionSupportsEnabledState", + "initWithThreadPool:target:", + "_setUserEmailAddressOfRequestor:", + NULL, + "ISO8061StringFromDate:", + "_updateTrustPopupValues:", + "attributesOfFileSystemForPath:error:", + "setInputImageOrientation:", + "_calculateLockInfos", + NULL, + "sizeOfLabel:", + NULL, + NULL, + "_parsePredefinedAttributes2", + "accessibilitySharedCharacterRange", + "getMinificationFilter", + "initWithIdentifier:", + "_updatePlayButtonImage", + NULL, + "_wantsPastedURL:allowFileURLs:", + "targetAndArgumentsAcceptableAtIndex:", + "setAllowsBranchSelection:", + "clearMembersSelection", + "_clearDefaultMenuFormRepresentation", + "setClearsDepthBuffer:", + "pathForUIDTaggedImage", + "_errorAlert:wasPresentedWithResult:inContext:", + "_sliceTopBorderColor", + "setOptions:", + "setFetchColumns:", + "showsGetInfoButton", + "_timedAdjustTextControl:", + "imageCropView:mouseDown:", + "rowHeight", + NULL, + "addWindowsItem:title:filename:", + "_deepCollectEntitiesInArray:entity:", + "_dictionaryForArchiving", + NULL, + "_synchronizeWithPeerBindersInArray:", + "_hasKeyAppearance", + "_removePasswordForRealm:URL:", + "isScrolling", + "handleEvent:", + "autoreleasedObjectCount", + "parameterList", + "currentTab", + "_scriptingRemoveObjectsAtIndexes:fromValueForKey:", + "doubleClickOpensImageEditPanel", + NULL, + "verticalBoxInitROI:destRect:userInfo:", + "setDragAndDropCharRanges:", + "levels", + "drawPagePost:", + "_setPreviewFont:", + "_originalCard", + "_update", + "atEOF", + "expressionForConstantValue:", + "scale", + "initWithGroup:newMe:addressBook:", + "borderType", + "_updateTrackingAreas", + "rightMouseDownDelegate:", + "view:stringForToolTip:point:userData:", + "personSelected:", + "setServersInDefaultsFile:", + "_referenceQueue", + "_updateVisibleLayers", + "_drawViewBackgroundInRect:", + "certificateAuthorityWithName:", + "nibInterfaceDidAwakeFromNib:", + "arrayWithObject:", + NULL, + "startInputStream:", + "accessibilityMenuFormRepresentationHasOwnTargetAction", + "isIdentifiedByUTIs", + NULL, + "cardsWithCategory:", + "calcPostions", + "_removeObjectFromSubNodesAtIndex:", + "loadItemAtIndex:", + "accessibilityIsClearButtonAttributeSettable", + "_centerInnerBounds:", + "_isHelpMenuAppKitOnly", + "lockOperations", + "ramCacheLength", + "_needImportMipmap:forCellSize:", + NULL, + "arrayByAddingObjects:count:", + "windowForSheet", + "hasDataRepresentation", + "setAllDestinations:", + "nts_GroupsMatchingNormalizedName:inSubscribedContent:context:", + "resetCacheWithSize:", + "proxyForObject:", + "lockWhenCondition:beforeDate:", + "createThumbnails", + "nts_threaded_sortMembers:", + "pathsForResourcesOfType:inDirectory:forLanguage:", + "_fileAttributes", + "canExportSlideshowItemAtIndex:toApplication:", + "setUserData:ofType:atIndex:", + "reconcileToSuiteRegistry:suiteName:commandName:", + "_visibleColumnIndexesForKeyPath:", + NULL, + "_scriptingValueOfObjectType:withDescriptor:", + "isAccessError:", + "_postSessionNotificationIfNeeded", + "_old_drawArrow:highlightPart:", + "setMatchesOnMultipleResolution:", + "_loadPreviewFailedForDocumentPreviewView:", + "_setIsChecked:", + "removeItemWithObjectValue:", + "elementAtIndex:", + "backupDatabaseToPath:addBackupInfo:", + "_setNextToolbarSizeMode:", + "setKnobThickness:", + "_setPreventsActivation:", + "groupsThatUseGroup:", + "setTimeMachineDelegate:", + "_windowRefCreatedForCarbonApp", + "parseABOrder", + "setCardSourceDelegate:", + "viewDidMoveToWindow", + "HTMLData", + "setLineFragmentRect:forGlyphRange:usedRect:", + NULL, + "_enlargeToFitText:newSize:difference:", + "_defaultButtonCycleTime", + "_columnsForDragImage", + "fadeToolTip:", + "_accessibilityToolbarItemLabel", + "_markerHitTest:", + "addFeatureDescriptions:", + "windowDidLoad", + NULL, + "_argumentBindingCount", + "_drawBorderInRect:", + "store", + "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:", + "mediaTypeString", + "_webViewClass", + "_scriptingRemoveAllObjectsFromValueForKey:", + "ab_queryPiecesNoLowerCase", + "setDateStyle:", + "cancelButton", + "directoryResultsController", + "buttonNumber", + "_libxml2TreeRepresentationWithNamespaces:", + "_readURLIntoRange:fromPasteboard:", + "clearCurrentContext", + "parser:foundInternalEntityDeclarationWithName:value:", + "isFlipped", + "_renderGLContext", + "titleFrame", + "reloadItem:reloadChildren:", + "_setUseModalAppearance:", + "customCall:withAuthorization:", + "sendMessage:withData:withReply:", + "swapFirstLastName:", + "toggleGrammarChecking:", + "_selectedNodeAtColumn:", + "_doSingleStep:inView:", + "closeWithEffect:canReopen:", + "addImportedRecord:", + NULL, + "predefinedEntityDeclarationForName:", + "secondsSinceTop:", + "_toolbarViewCommonInit", + "setPrompt:", + "getTitle", + "drawText:inRect:withAttributes:withAlpha:", + "_userDeleteRange:", + "ghostCellCountOnTheLeft", + "initWithGenerator:", + "selectionForLineAtPoint:", + "_protocolWithRequest:cachedResponse:client:allowCF:", + "initWithOriginalString:", + "_certTable", + "titleForRollOverIdentifier:withSelection:", + "_setShowAlpha:andForce:", + "setNotShownAttribute:forGlyphRange:", + "updateBatchSizeForRange:", + "_findHitItemViewer:", + "IKIPMenuWindowBackgroundColor", + NULL, + "loadAllPlugIns", + "isAnimating", + "titlebarColor", + "stringForDPSError:", + "_registerForMovieIdle", + "startTasks", + "_updateMenuItem:", + "_setKeyViewSelectionDirection:", + "rotateLeft:", + "clearAll", + "knownTimeZoneNames", + "popUp:", + "_handleEventRecursively:", + "_setUnicodeInputEventReceived:", + "setTextureSize:", + "initWithCGSConnection:options:", + "preparedCellAtColumn:row:", + "nibInstantiate", + "configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:", + "_firstSelectableRowInMatrix:inColumn:", + "countOfAppleUseCoreUI", + "isExtensionSupported:", + "progress", + "setItem:forAbsentKey:", + NULL, + "connection:didReceiveData:lengthReceived:", + "_keywordsAndColorsFromXML:", + "_setPlaceholderString:", + "_generateSerialNumber", + "registerConnection:", + NULL, + "_pluginProtocol", + "nextCard:", + "calculationMode", + "clearNavNode", + "objectAtIndexPath:", + "_rulerAccViewIncrementLineHeightAction:", + "_isSuitableForFastStringDrawingWithAlignment:lineBreakMode:tighteningFactorForTruncation:", + "isRootCertificate", + "newStringFrom:usingUnicodeTransforms:", + "setUserFixedPitchFont:", + "updatedObjects", + "_initializeSharedApplicationForCarbonAppIfNecessary", + NULL, + "_setNeedsZoom:", + "drawText:withAttributes:inRect:context:", + "removePathFromLibrarySearchPaths:", + "_unbindAllInDomain:notifyDelegate:", + "scaleFactorAtIndex:", + "_setEnabledCriticalDigitalSignature", + "remapCracklibError:", + "_referenceBinding", + "knobUnderPoint:", + "endTrailer", + "invitation", + "imageWithTexture:size:flipped:colorSpace:", + "keyClassDescription", + "initWithURL:allowNonExecutable:", + "cellSelectionStateDidChangeTo:", + "setGradientType:", + "affineTransform", + "findAllUsers", + "setKBURLString:", + "_unregisterForSessionNotifications", + "splitView:constrainMinCoordinate:ofSubviewAt:", + NULL, + NULL, + "_isDeactPending", + "entryForNode:inCachedChildrenForNode:", + "_doRotationOnly", + "removeOutput:", + "setPrimaryOnOpenGLContext:", + "setFriction:", + "popupStatusBarMenu:inRect:ofView:withEvent:", + "simpleControllerWithUIController:", + "repeatCount", + "dataUsingEncoding:", + "parentWindow", + "setInContext:", + NULL, + "_handleChildRemoved:", + "filesystemItemCopyOperation:shouldProceedAfterError:copyingItemAtPath:toPath:", + "initWithOperatorType:modifier:variant:position:", + NULL, + "_setCommonName:", + "messageType", + "_inHideCollectionsMode", + "autoupdatingCurrentLocale", + "_reallyNeedsDisplayForBounds", + "_dragUntilMouseUp:accepted:", + "CGBitmapInfo", + "nextBase64Data", + "setImageName:bundle:", + "_queue", + "IKIPArrayByApplyingSelector:withObject:", + "accessibilitySelectedAttributeOfChild:", + "setZoomFactorX:", + "_isLucidaGrande", + "setCommandKeys:", + "_createCAConfigFile:pemData:identityNameInfo:subjAltNameExtObj:keyUsageExtObj:keyPairAttrsObj:certInfoObj:basicConstrExtObj:extKeyUsageExtObj:additionalCertInfoObj:CACert:webURL:returnedInvite:", + "handleCarbonBoundsChange", + "_logError:fallbackMessage:relatedToBinding:", + "initWithType:subpredicates:", + "_extractOrderedNonStaticItemsFromArray:", + "unload", + "cacheCustomProperties:withRecordType:", + "setScaleFactor:atIndex:", + NULL, + "_selectCellIfRequired", + "setTextView:", + "compositionAspectRatio", + "_paragraphClassforParagraphStyle:range:", + "_outlineDoubleAction:", + "addItemsWithObjectValues:", + "_localizedStringForKey:value:", + "overrideKeyboardWithKeyboardNamed:", + "_shouldTrack", + "splitView:willMoveDivider:distance:", + "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:", + "_setFalse:", + "IMAVManager", + NULL, + "updateFlare", + "isSpeaking", + NULL, + "_validateMenuFormRepresentation:", + "accessibleAttachments", + "_defaultIndicatorSize", + "mutatingMethods", + "_sendDelegateCreateRowsForColumn:inMatrix:", + "noteQueryAttributesChanged", + NULL, + "_canShowFileAtPath:", + "_sizeToFit:", + "_loadPreviousModeAndLayout", + NULL, + "_createDockMenu:", + "isSupersetOfSet:", + "directoryResultAtIndex:", + "isRichText", + "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:", + "hintCapacity", + "removeView:fromView:layoutManager:", + "nodeWillRemoveFromGraph", + "_setIsLastItem:", + "addObjectsToMasterArrayRelationship:selectionMode:", + "setSelectedIndexPaths:", + "drawHighlight:inRect:", + "animationDataForCell:", + "_runInNewThread", + "_discardTrackingRect:", + "_sizeTableColumnsToFitForColumnResizeWithStyle:", + "initWithX:Y:", + "setMiniwindowTitle:", + "signature", + "initWithScreen:", + NULL, + "setIgnoreOpenAndClose:", + "markedTextAbandoned:", + "setFont:", + "_drawLegend", + "setMediaBrowserView:", + "setOffStateImage:", + "_focusImageAtIndex:", + "_executeAdd:didCommitSuccessfully:actionSender:", + "initFromDictionary:", + "_needsRedrawOnMouseInsideChange", + "URLHandleClassForURL:", + "performAdapterOperations:", + "superviewBeingDeallocated", + "setSearchMenuTemplate:", + "_deselectAnySelectedDirectories", + "setIsClosable:", + "_accessibilityRowsInRange:", + "currentHost", + "isCountOnlyRequest", + "localNode", + "_currentListNumber", + "initWithXMLNode:", + "defaultSortDescriptorPrototypeForTableColumn:", + "_keysForPropertyDescriptionKind:", + "hidesEmptyCells", + "drawSegment:inFrame:withView:", + "popupsAreEditable", + "writemipmapData:intoFile:filePosition:", + "moveWordForwardAndModifySelection:", + "_initWithView:printInfo:epsNotPDF:bounds:data:orPath:", + "invalidateOutputCache", + "isSubsetOfHashTable:", + "_addStaticSubfieldWithString:", + "_sendToRemainingReceivers", + "_coreUIDrawBackgroundWithFrame:inView:", + "setInitialGState:", + "lastPathComponent", + NULL, + "setBoundsSize:", + "popUpContextMenu:withEvent:forView:withFont:", + "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:", + "_realCompositeNameIncludingAuxiliaryElements:", + "returnID", + "image:focus:", + "manyToMany", + "putCell:atRow:column:", + "_disableObserving", + NULL, + "_doStartDrawer", + "dispatchInvocation:", + "pathCell:willPopUpMenu:", + NULL, + "setLimitIntermediate:", + "displayedFileProperties", + "verticalPageScroll", + "loadPlugInsInLibrary:", + "_branchDescription", + "IMProperties", + "deepPropertiesCopy:", + "setStringIndex:forIndex:", + "drawCheckBox:inContext:", + "findNode:", + "_updateDetailLevel", + NULL, + "_explicitlyCannotInsertChild", + "_setMetadataDirty:", + "removeFile", + "_changeContentsToPath:", + NULL, + "PDFOperationWithView:insideRect:toData:printInfo:", + "typeOfProperty:withAddressBook:", + "_storeCurrentDirectory", + "depth", + "titleButtonOfClass:", + "postscriptName", + "_fileOperationCompleted:", + NULL, + NULL, + "_setKeyEquivalentListTable:", + "characterSetWithBitmapRepresentation:", + "decodeReturnValue:", + "compositeToPoint:fromRect:operation:fraction:", + "proxyClass", + "resizeWithDelta:fromFrame:beginOperation:endOperation:", + "_setForceSuccess:", + "_shouldHaveBlinkTimer", + "moduleWillBeRemoved", + "initWithAuthDelegate:url:", + "removeAllEffects", + "_preferOnArtForBezel", + NULL, + "moveCurrentPointInDirection:", + "maxWidth", + "isModalPanel", + "blurHalfSizeImage:sampler:radius:kind:", + "setResolvesAliases:", + "value:withObjCType:", + "_identifiedItems", + "ignoresMultiClick", + "resizeWithOldSuperviewSize:", + "lastRenderedMipmapItem", + "spellCheckerDocumentTag", + "accessibilityHorizontalScrollBarAttribute", + "_parseText", + "_clearUnprocessedInsertions", + "order", + "currentNibPath", + "propertyHasActions", + "setValue:withProperty:comparison:entryView:", + "locationZ", + "_heightIsFlexible", + "setUpTokenAttachmentCell:forRepresentedObject:", + "setIdentifier:forTimeLine:", + NULL, + NULL, + "_rowHeightStorageInvalidateCacheAndStorage", + "setOpenGLContext:", + "_real_didChangeValueForKey:", + "_setLayerNeedsDisplayInViewRect:", + "_updatePauseLock", + "IKCreateCGImageFromMeshedData", + "_createValueGetterWithContainerClassID:key:", + "setEditedFlag:", + "columnSpan", + "startDirectorySearch", + "intersectGroupMembers:withSearchResult:", + "_noticeEditablePeerBinder:", + "setIndexed:", + "ISOCountryCodes", + "initWithContext:object:", + "setModified:", + "_setNeedsDisplayInRow:", + "_recursive:displayRectIgnoringOpacity:inContext:topView:", + "setTruncationMode:", + "_setCurrentDirectoryNode:makeHistory:notify:", + "decompressionOptionsDidChangeForConnection:", + "_removeSelectionIndexPathsBelowNode:", + "preferredSizeOfLayer:", + "setTextLists:", + "_managedObjectContextEditor:didCommit:contextInfo:", + NULL, + "drawDragBoundries", + "setEventCoalescingEnabled:", + "observedKeys", + "setCellsStyleMask:", + "_setPendingUpdate:", + "deleteLastCharacter", + "_createBackingStore", + "_performKeyEquivalentWithDelegate:", + "_recursiveSetTrackingAreasDirty:", + "indexOfDirectoryResult:", + "_paperNameInPageFormat:", + "valueForRequiredAttributeKey:", + "passwordUIDisplayed", + "mipmapImageChanged", + "animateSetIconSize:", + "characterAtIndex:", + "_computeCameraDY", + "_setAutomaticRearrangementKeyPaths:", + "_fontSetChanged:", + "indentationLevel", + "tightBilateralInitROI:destRect:userInfo:", + "flipVertical:", + "_contextDidSave", + "bindVariables", + "unbindMipmapItem:withUID:", + "setFileWrapper:", + NULL, + "resizeSubviewsWithOldSize:", + "addRecent:", + NULL, + "_hitTestClockAndCalendar:inRect:ofView:", + "_setupRuleEditorForScopeView", + "pruneGRLs:toLimit:results:", + "initWithAttribute:relativeTo:attribute:scale:offset:", + "_done", + "boundsForPointArray:", + "archive:streamForEntryName:", + "_coreUIDefaultIndicatorImage", + "_assignObjects:toStore:", + "_performFastConflictDetectionForObjects:withChannel:", + "frameInterval", + "_activateServer", + "addUID:", + "setCompositionsFromRepositoryWithProtocol:andAttributes:sortedBy:", + "setPrevShownGRL:", + "controllerType", + "last", + "validateMipmap:withModel:withQuality:", + "deinterlacesVideo", + "rightExpressions", + "application:openTempFile:", + "moveToEndOfLineAndModifySelection:", + "_doAnimationStepWithProgress:", + "populatePicker:", + "_isJavaSubclass", + "bindItem:withUID:forCaching:fromDiskOnly:", + "setMinusSign:", + "_handleMouseUpWithEvent:", + "drawsGrid", + "_getDidEndSelector", + "localizations", + "subtractRect:", + "_disableLayout", + NULL, + "isKindOfClass:", + "_refreshIsInUseByAnotherApplication", + NULL, + "lastVisibleColumn", + "setAttribute:forKey:", + "hasImportErrors", + "externalData", + "_lastModifiedDate", + "setFloatValue:", + "_additionIndexPathAppendChildIndex:", + "_saveIfReallyEditedWithDelegate:didSaveSelector:contextInfo:", + "accessibilityIsOrientationAttributeSettable", + "setDefaultCountryCode:", + "imageAndTitleWidth", + "addObjectToMasterArrayRelationship:selectionMode:", + "widthForHeight:", + "createBackgroundWindow:", + "_isReadOnly", + "name:reason:status:", + "engineOfClass:forDisplayID:", + "outlineColumn:willDisplayCell:row:", + "isItemSelectedAtIndex:", + "_rowHeightStorageComputeRowAtPoint:cacheHint:", + NULL, + "loadSavedLayoutWithKey:", + "makeMainWindow", + "contentsForEntryName:", + "smallChromaMorphologyMinimumROI:destRect:", + "attachedMenu", + NULL, + "callbackDataWithOutput:connection:backgroundQueue:", + "nts_DoesPropertyExist:forClass:", + "_shouldPreventCustomViewFromDraggingWindow:", + "queuePriority", + "_realDoModalLoop:peek:", + "selectionDuration", + "countOfObjectsForClass:withPredicate:managedObjectContext:", + "_setSingleChild:", + "alignRight:", + "unsuppressAllNotificationsFromObject:", + "setFireDate:", + "_makeFirstResponderForKeyboardHotKeyEvent", + "attributeValueForSlot:", + "doPeriodicFlush", + "_addToolTipRect:", + "_updateCountLabelForLayout:", + "_cacheMipmapSize:fromModel:", + "initRenderingContext", + "_identityName", + "maxTextureSizeForTarget:", + "pageDown:", + "_initForPropPatchUpdatingProps:inNameSpace:", + "removeEntryAtIndex:", + "controlsView", + "_wantsDeviceDependentEventModifierFlags", + "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:", + "webFrame", + NULL, + "setOpacity:", + "_validIndexes:indexType:", + "draggingEntered:", + "_destinationFloatValueForScroller:", + NULL, + "_adjustForGrowBox", + "sendInvocation:", + "_dragOperationFromInfo:", + "_removeGrammarAttributeForRange:", + NULL, + "_unregisterForChildChangedNotifications", + "rangeForPropertyPath:", + "fileType", + NULL, + "setPrincipal:", + "initWithData:objectID:", + "_setCanAnimateScrolls:", + "parser:foundNotationDeclarationWithName:publicID:systemID:", + "_indexAtIndex:", + "_setRealm:forURL:", + "isInputExtent", + "_searchMenuForProxy", + "_onQCTimer", + NULL, + "disableExecution:", + "_insertionPointDisabled", + "createTexturePackerAtIndexIfNeeded:", + "_invalidNavNodePopUpLabelAction", + "nts_SetValue:forProperty:recordCouldBeInDatabase:", + "createSelectionWithEvent:", + "mouseTracker:handlePeriodicEvent:", + "documentDidUnlock:", + "exponentSymbol", + "unloadNib:", + "nts_SubscriptionsWithAddressBook:", + "getInputImage", + "drawPage:", + "_ensureCapacity:", + "_updateWindow:withWidth:height:", + "getBitmapDataPlanes:", + "performSelector:withObject:afterDelay:inModes:", + "findInSpotlight:", + "_mergeGlyphHoles", + "textContainerForGlyphAtIndex:effectiveRange:", + "pagesCount", + "windowTitlebarLinesSpacingWidth", + "namesByAlias", + NULL, + "_registerDefaultPlaceholders", + "setupViewsForNode:", + "_clearOriginalSnapshotForObject:", + "invalidateDisplayForCharacterRange:", + "decodeFloatForKey:", + "imageFileTypes", + "_borderInset", + "setCurrentDocumentIndex:withTransition:blocking:", + "_parent:", + "disconnectO3Console", + "pathExpression", + "sourceRepresentationType", + "accessibilityFocusedWindowAttribute", + "unblockAllOperationsForGroup:", + "_BMPRepresentation:", + "setRangeToParent:", + "addStringToRecentSearchStrings:", + "_dataIfDoneBufferingData:", + "_addObject:", + "_sendActionOrDoubleAction:", + "newLockButton", + "_combobox_windowWillBeginSheet:", + "_indexesOfPassingObjectsInContainer:", + NULL, + "prepareInsertStatementWithRow:", + "_layerTreeRenderer", + "_syncItemSet", + "_compareSingleDictionaryNoKeyWithRecordValue:", + "setClickableArea:target:selector:info:", + "_predicateForToManyRelationshipName:relativeKeyPath:comparison:value:label:", + "setContextualMenu:", + NULL, + "handlesContentAsCompoundValue", + "setHelpAnchor:", + NULL, + "timestampForKey:", + "_canHaveToolbar", + NULL, + "moveWordBackward:", + "_tableBinderForTableView:", + "handleQueryWithUnboundKey:", + "setShowEjectButton:", + "domainForResolution:createIfNeeded:", + "isDescendantOfNode:", + "textAttributesForNegativeInfinity", + "responseContentLength", + "localizedNameForCategory:", + "removeFile:", + "sortUsingFunction:context:range:", + "failedPasswordHandler", + "setPlusSign:", + "_acquireRetainedCGImageRef", + "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:", + "widgetRectangleForResolutionData:", + "disableKeyEquivalentForDefaultButtonCell", + "_noteKeyValuePairChangedValue:", + "prefetchThumbnailsDelay", + "searchString", + NULL, + "copyDropDirectory", + "dateByAddingTimeInterval:", + "selectFirstTabViewItem:", + NULL, + NULL, + "specifierWithPath:traverseLink:", + NULL, + "getHue:saturation:brightness:alpha:", + "_decodePropertyListForKey:", + NULL, + "_updateLayerBackgroundFiltersFromView", + "mouseUpOnCharacterIndex:atCoordinate:withModifier:client:", + "_replaceCString:withCString:", + NULL, + "innerTitleRect", + "_adjustEffectsAndCameraUI", + "_runFullDialogSheet", + "modifyFontViaPanel:", + "setPhase:", + "textColorAtIndexPath:", + "_executeSelectNext:didCommitSuccessfully:actionSender:", + "lastName", + "titleFieldPresent", + "setMedia:", + "setOnStateImage:", + "_currentDisplayColor", + "eventID", + "setScalesWhenResized:", + "openMenuFromDepth:shiftFocus:", + "showsBaselineSeparator", + "previewView:didUpdateDisplayForURL:withImage:", + "_hasMetalSheetEffect", + "restoreNameColumnWidth", + "_allowedItems", + "_trueCount", + "keyDownDelegate:", + NULL, + "setMetadata:forKey:shouldForward:", + "_canUseReorderResizeImageCache", + "hash", + "selectedIdentifiersForPerson:", + NULL, + "initWithFile:error:", + "setImageWithCGImageSource:imageProperties:options:", + "setCachedChildren:", + "movieWithURL:error:", + "appendBezierPathWithArcFromPoint:toPoint:radius:", + "makeFirstResponder:", + "unregisterObservingForAnalyzableKeyPath:", + "_platformFont", + "decodeSize", + "_configureForFileListMode:", + NULL, + "initWithAdapterOperator:row:", + "_setToolbar:", + "containsRect:", + "emissionLatitude", + "initWithRequest:delegate:startImmediately:", + "_mapURLForAddressWithId:", + NULL, + "reloadRootNode", + "keychain", + "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:", + "stopRenderingPatch:", + "_initializeAttributes", + "newObjectIDSetsForToManyPrefetchingRequest:andSourceObjectIDs:", + NULL, + "horizontalPagination", + "compareWithPixelFormat:", + NULL, + "replaceSelectedPagesWithPage:drawNow:", + "_pathOfImageWithName:inBundle:", + "releaseResource", + "initGlyphStack:", + "headIndent", + "boldSystemFontOfSize:", + "retainedLocaleString", + "parsePolicyConstraints:", + "backgroundQueue", + NULL, + NULL, + "_scriptingArrayOfType:withDescriptor:", + "checkIfCoreVideoWorksOnCurrentDisplay", + NULL, + "controlDrawsSelectionHighlights", + "_nq:", + "stringWithCharacters:length:", + "readDocumentFragment:", + "classDescriptionForEntityName:", + "setImageView:", + NULL, + "setObjectBeingTested:", + "resetCache", + "_updateFormatDescriptionFromPropertyListener", + "mapping", + "updateOutlineColumnDataCell:forDisplayAtIndexPath:", + "_applicationDidBecomeActive", + "_bestSettingWithBitsPerPixel:width:height:refreshRate:exactMatch:", + "_viewFromOperatorTypes:", + "_setNeedsDisplayForTabViewItem:", + "setLoopsBackAndForth:", + "_horizontalScrollerClass", + "finalValue", + NULL, + "setWeekday:", + NULL, + "window", + "makeCurrentSearchOptionsDefault", + "copyAndReparentGRLs:forWindow:forNewParent:", + "setExternalName:", + "_isHiraginoFont", + NULL, + "indexOfPointer:", + "lastItem", + NULL, + "isDisconnectedMountPoint", + "_usesCustomDrawing", + "forceBreaks", + "parse:", + "_executeMain:result:", + "attributeDescriptorForKeyword:", + "showsTrustButton", + "updateSchedulePriorityRange", + "selectLayer:", + "_freeImage", + "determineCurrentPage", + "_appHasOpenNSWindow", + "getResolutionData:figureMetricsTop:left:bottom:right:", + "setWidthTracksTextView:", + "patchManager", + "_animationThread", + "_createDeleteRowButton", + "connectionID", + "_remove:andAddMultipleToTypingAttributes:", + "accessibilityAttachments", + "addViewToViewsAdded:", + "marqueeBoundsForPage:", + NULL, + "singlePage:", + "_doRemoveDrawer", + NULL, + "_button", + NULL, + "utType", + "drawDragOverlays", + "_web_visibleItemsInDirectoryAtPath:", + NULL, + "_attachToParentWindow", + "setObject:atIndex:", + "setSelectsAllWhenSettingContent:", + "scrollCellToVisibleAtRow:column:", + "_terminate:", + "_dumpSetRepresentation:", + "fontDescriptorWithMatrix:", + NULL, + "setCachedImageRef:forNSImage:", + "_stopListeningToMouseMovement", + "tooltipString", + "vcardFieldisPrivate:", + "protocol", + "compoundTypes", + "alertShowHelp:", + NULL, + "setPixelsHigh:", + "initResolutionData", + "_selectPopUpWithTag:", + "setCurrentMigrationStep:", + "rehash", + "viewForCharacterIndex:layoutManager:", + "_valuesForProperty:inNode:", + "rects", + "exceptionAddingEntriesToUserInfo:", + "setAutorecalculatesContentBorderThickness:forEdge:", + "flushAllKeyBindings", + "_realControlTintForView:", + "hasAudio", + "_beginScrolling", + "initWithKind:name:stringValue:", + "_setCurrentlyEditing:", + "canAddNode:", + "setYear:", + "recordChangesInContext:", + "_handleQueryStateChange:", + "_initWithFileSpecifierOrStandardizedPath:", + NULL, + "redBluePreBlurROI:destRect:", + "isEjectable", + "movieWithPasteboard:error:", + "spellingPanel", + "imageScalingX", + "_addCertAndEndSheet:certData:commonName:", + "setIndexAtTop:", + "rangeOfString:options:", + "viewSizeChanged:", + "_setVersionReference:", + "setPosterTime:", + "_setWithoutNotificationLocalizedKey:key:", + NULL, + "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:", + "getHomePath", + NULL, + "_getKernelFolderCPath", + "initToBuffer:capacity:", + "zoomFactorY", + "disableNotifications", + "createAttributedString", + "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:", + "configurationName", + "_adjustFrameOfOutlineCellIfNecessary:frame:", + "newWithIdentifier:", + "beginLineWithGlyphAtIndex:", + "_clearModalWindowLevel", + "beginCertLookupForEmail:", + "acceptsFirstResponderForView:", + "indexOfComposition:", + "isTitled", + "metaDataLockFile", + "_learnWord:inDictionary:", + NULL, + "performAdapterOperation:", + NULL, + "_setRevealoversDirty:", + "pathNamesForRecords:", + "nts_SetValue:forProperty:", + "sortUsingFunction:context:", + "_positionForValue:", + "insertCorrelation:", + "destKey", + "transformerWithItems:", + "_processInstanceNode:", + "_scriptTerminologyDescription", + "_unaffixedMarkerFormat", + "scaleWindow:fromFrame:toFrame:duration:delegate:", + "dataForType:fromPasteboard:", + "_setDefaultWindowKeyViewLoop", + "setLineCapStyle:", + NULL, + "updateStatus:", + "setupGuessesBrowser", + "didFinishOpeningTransition", + NULL, + "initWithRects:count:", + "_implicitObservationInfo", + "_predicateForKeyPath:comparison:value:", + "_rectToDisplayForItemAtIndex:", + "_needsRolloverTracking", + "_allLocation", + "pathsMatchingExtensions:", + "isDRMProtected", + "fontWithPDFFont:size:", + "_scaledFrameForWindowFrame:withFrame:matchingFrame:scalable:", + "_updateFormats:", + "_captureAllScreens:", + "readDataOfLength:", + "rolloverMenuForSelection:", + "setCurrentEntityMapping:", + "initWithBytes:length:", + "_destroyViews", + "isFault", + "launchIPFXPickerWithParent:withDelegate:fromView:centerPoint:onScreen:currentEffectName:", + "writeDefaultTabInterval", + "initFromMemoryNoCopy:length:freeWhenDone:", + NULL, + NULL, + "endLayoutChange", + "setShowsLogonButton:", + "numberOfVirtualScreens", + "initDirectoryWithFileWrappers:", + "annotationHit:", + "_fastGetCachedRect:forRow:", + "_argumentDescriptionForKey:", + "isAlternate", + "ancillaryData", + "shouldUseCrossfadingForURL:", + "movies", + NULL, + "SCTIndexOfObject:containingValue:withAccessor:", + "minValueForControlType:keyFrame:", + "initialSearchIndex", + "floatCocoaVersion", + NULL, + "_editingFirstResponderIfIsASubview", + "isInUpdate", + "selectColumn:byExtendingSelection:", + "_shouldHandleAsGotoForTypedString:", + "awakeFromInsert", + "switchToIndexMode:", + "_applyValue:forKey:registrationDomain:", + "endEntityMapping:manager:error:", + "setStateToUnselected", + "_inMiniMode", + "sendCarbonProcessHICommandEvent:", + "_startFileControlCallbackTimeoutTimer", + "keyWindow", + "_rulerAccViewAlignmentAction:", + "sharedMappings", + "autosaveName", + "_old_encodeWithCoder_NSTabViewItem:", + "valuesForKeys:", + "_web_hasCountryCodeTLD", + "caption", + "_view", + "setCIAffineClampFilter:", + "setIncrement:", + "addJoinForManyToManyRelationship:sourcePath:destinationPath:", + "doesPropertyExist:forClass:", + "_accessibilityIsCommonToolbarButtonItem", + "_longestStringSize", + "getAdvancements:forPackedGlyphs:length:", + "setRotationAngle:", + "ghostCellCountOnTheRight", + "scriptErrorOffendingObjectDescriptor", + "_startHitTracking:", + "startLiveCapture", + "paste:", + "autoplay", + "sizeFunction", + "_liveResizeCachedImageIsValid", + "_unhideAllDrawers", + "_toolbarUnregisterForNotifications", + "_collection:setHidden:", + "setOpaque:", + "arrayWithFrames:count:", + "evaluateXQuery:constants:contextItem:error:", + "texturePackerIndex", + "_ns2cfCookies:", + "initWithReferenceToURL:", + "setCGImage:", + "autorecalculatesKeyViewLoop", + "_scrollTo:animate:", + "boundingRectOfOrientedRect:rotation:pivot:", + "_syncToolbarItemUserVisibilityPriorityToValues:", + "stopSendingConversionUpdates", + "maximumSignificantDigits", + "setHighQualityVideo:", + "_registerDragTypesIfNeeded", + "compareGeometry:", + NULL, + "_hasCustomVisibilityPriority", + "resizeWindow:animate:fromLayout:toLayout:paneWidths:numberOfPanes:", + "_enumeratedEditableBindings:", + "calcViewHeight:", + "pixelBlockHeight", + "_displayValueForCompoundPredicateType:", + "iconView:loadCell:forIndex:", + "nts_Disconnect:", + "windowHidden:", + "modDateForURL:andReturnResultCode:", + "useStandardKerning:", + "_valueOfType:", + "_pasteboardWithName:", + "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:", + "placeholderAttributedString", + "_reorderResizeImageCache", + "_encodeMapTable:forTypes:withCoder:", + "setConstrainsToOriginalSize:", + NULL, + "createImageFromNSImage:", + "appendObjectClassDeclarationToAETEData:includingParts:", + "_restoreTypeSelectCellValue", + "setTimebase:", + "_isBeingTracked", + "validateMetaDataIfNeeded", + "_trust", + "unlockOperation", + "_updateLogLevel", + "decimalDigitCharacterSet", + "_minXTitlebarWidgetInset:", + "_setAutoResizeDocView:", + "offset", + NULL, + "changedItemsOnly", + "hyphenationFactor", + "update", + NULL, + "autoreleasePoolExists", + "archiverWillFinish:", + "nameForParameter:", + "__patchExecuted:", + "_setWantsRevealovers:", + "applicationDidChangeScreenParameters:", + "mainWindowFrameShadowColor", + "setDateFormat:", + "_pagesCountForCompositions:", + "clearTableParameters", + "changeOptionsPanelSettings:", + "setKBVersionString:", + "_containerRelativeFrameOfInsideOfColumn:", + "setClassName:forClass:", + "_drawCellAtRow:column:inFrame:", + "writeData:length:", + "_convertSetOfObjectsToSetOfObjectIDs:", + "setMarkedText:selectedRange:", + "shiftIndexesStartingAtIndex:by:", + "setSynthesizerIsRetained:", + "switchToImage:orientation:", + "generateSubqueryVariableAlias", + NULL, + "locateLongitude:latitude:", + "bookList", + "charIndex", + "_drawerTopOffset", + "frameRate", + "getDataSourceArray", + NULL, + "insertNewObjectForEntityForName:inManagedObjectContext:", + "parserDidStartDocument:", + "_managesWindowRef", + NULL, + "take", + "_defaultNewFolderName", + "_insertRange:inArrayAtIndex:", + "_typeSelectEndCurrentSearchWithRedisplay:", + "_iconSizeForControlSize:", + "defaultBehavior", + "willRecycleResource:", + "_addObserver:forProperty:options:context:", + "setNonRetainedCachedRecord:forKey:", + "_getUserInfo:", + "_dumpFullImageInfo", + "zoomToFitFullScreen", + "resetAuthList", + "_flags", + "_title", + "scope", + "toolMode", + "setIsFileListOrderedAscending:", + "updateTemperatureAndTint", + "addChild:", + "startOrStopTargetAnimation", + "_canOverrideUserAction:", + "_drawRectIfEmptyWhenSubviewsCoverDirtyRect:", + "run", + "_indentationHorizontalPadding", + "mipmapItemAtIndex:", + "getResolutionData:padMetricsTop:left:bottom:right:", + "activeListAnalyzer", + "titleTextColor", + "_menuOwner", + "storeColorPanel:", + NULL, + "comparisonPopUpForProperty:withSelection:", + "_refreshDevices", + "buffer", + "setGain:", + "nts_DoInitialImports", + "standardFontFamily", + NULL, + "_valueOfType:withDeferredSpecifierEvaluation:", + NULL, + "frameOrigin", + "_setupTrackingArea", + "initWithTimeIntervalSince1970:", + "_timeRect", + "selectCellAtRow:column:", + "dateValue", + "initWithContainerClassDescription:containerSpecifier:key:relativePosition:baseSpecifier:", + "locationForGlyphAtIndex:", + "_appendWhereClauseForConstVal:", + "_initFromAbsolutePositionRecord:", + NULL, + "componentsFromLocaleIdentifier:", + "viewToAddForAnnotation:", + "_prefixUp", + NULL, + "zipCode", + "_drawsBackground", + "_doSlideDrawerWithDelta:", + "setAttributedStringForZero:", + "selectedNavNode", + "_loadInitialItemIdentifiers:requireImmediateLoad:", + "numberOfRowsInTableView:", + "_cacheDisplayValue:", + "convertToQDRect:", + "dayOfCommonEra", + "_doneColor:", + "createNewTimeLine:", + "initWithFrameColor:fillColor:", + NULL, + "breakLock", + "heartBeat:", + "_recomputeLabelHeight", + "fieldContentsForProperty:", + "setTemplateView:", + "_setParameter:forOption:withBindingInfo:", + "cornerRadius", + "updateFrameWithCellFrame:", + "poolStack", + "run:", + NULL, + "sendThisCard:", + "_initRelockRequestWithToken:", + "_setTimelineVisibility:", + "isMember:", + "_findFirstNonSelectedRowFrom:to:", + "cleanup", + "_markRememberedEditingFirstResponderIfIsASubview", + "reformatValueAtLocation:", + "_plainFontNameForFont:", + "_setKeyboardFocusRingNeedsDisplayAroundPerimeter", + "prebindInRamMipmapItem:withUID:", + "initWithCString:length:", + "_storeUserSetHideExtensionButtonState", + "_machineLibraryPath", + "setRenderLevel:", + "windowTitlebarTitleLinesSpacingWidth:", + "_setNeedsDisplay", + "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:", + "stepBackward:", + "initAsPeoplePicker:mainSplit:searchLabel:searchField:", + "executeCommand", + "noteSecondLineParagraphStyle", + "activeColumnFilter", + "_sliceLastBottomBorderColor", + "initWithColorSyncProfile:", + "dateRangeAnchoredSelectionWithDate:", + "writeCharacterAttributes:previousAttributes:", + "setLastQueryDate:", + "setOwner:", + "deselectRow:subrow:", + "_highlightOutlineCell:highlight:withFrame:inView:", + "configurationDictionary", + NULL, + "_cycleDrawersReversed:", + "availableMemoryForRequestedMemory:ofType:virtualScreen:", + "depthLimitPaths", + "_enumerationBinding", + "_needsRedrawOnKeyChange", + "_preflightDatabaseAtURL:", + "itemTitles", + "_imageForEjectType:", + "initWithContext:patch:", + "ruleEditorRowsDidChange:", + "modDate", + "backingReleaseInfo", + "cancelFindIndicator", + "errorType", + "_persistentStoreCoordinator", + "_removeSaveFile", + "enabledState", + "_prepareConst:inManyToMany:", + "_createKeyValueBindingForKey:name:bindingType:", + "_takeColorFromAndSendActionIfContinuous:", + "addressBookImagesDirectory", + "setImpossibleCondition:", + "windowControllers", + "acceptsMouseMovedEvents", + "_didImportMipmap:throughCopy:forDisplayedCell:index:flatten:importedItem:", + "descriptionWithLocale:indent:", + "postResultsAreInNotificationNotification:", + "createShadowMaskParts", + "rememberForPreviousSelectedItem", + "hotSpot", + "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:", + "beginSheetWithSmartGroup:modalForWindow:modalDelegate:didEndSelector:contextInfo:", + NULL, + "setImageData:", + "setSRRecognitionSystem:", + "_isDefaultFace", + "setMonoCharacterSeparatorCharacters:usualPunctuation:", + "moveColumn:toColumn:", + NULL, + "drawCenteredIcon:", + "createButtons", + "provideNewButtonImage", + "_updateUserKEsAfterActivationAndDelay:", + "firstUnlaidGlyphIndex", + "_scheduleDelegateCallback", + NULL, + "_syncItemSetAndUpdateItemViewersWithSEL:setNeedsModeConfiguration:sizeToFit:setNeedsDisplay:updateKeyLoop:", + "subRowIndexAtPoint:", + "trackMouseDragDisallowed:", + "_enumeratedDisplayPatternTitleBindings:", + "printerWithName:", + "_doDelete:", + "_removeBottom", + "_segmentedCellStyle", + "PMPrintSettings", + "timingFunction", + "one", + "outputNow:forTime:flagsIn:flagsOut:", + "_editableBinderForTableColumn:", + "autorepeat", + NULL, + "setIconView:", + "_removeClipIndicatorFromSuperview", + "_drawAnalogClockWithFrame:inView:", + NULL, + "__select:context:", + "_compositeHiddenViewHighlight", + "initLockWithSession:URI:duration:", + "resetSearchButtonCell", + "_checkToolTipDelay", + "descriptorAtIndex:", + "_minXLocOfOutlineColumn", + "clearController", + "filenameExtension:isValidForType:", + "_useBasicAuth", + "setOrderedIndex:", + "CA_JSClass", + "setDictionary:", + "compositionWithFile:", + "_paragraphInTable", + "attemptOverwrite:", + "serializeAlignedBytesLength:", + "shouldOpenURL:", + "_doOpenFile:ok:tryTemp:", + "initWithCarbonMenu:itemIndex:", + "isEqualToValue:", + NULL, + "_notifyView_MovedFromIndex:toIndex:", + "directoryTraversalOperation:foundPath:", + "tooltipExtensionViewSize:", + "_handleApplyValueResult:cachedValue:displayValue:objectValue:", + "SCTConvertToScreenRect:", + "knobThickness", + "contentFilters", + "setBackgroundFilters:", + "_imageRepClassForFileNameExtension:andHFSFileType:", + "_invalidateTextColor", + "canDraw", + "_toggleToolbarConfigPanel:", + "delegate", + "_verifyDataIsPICT:", + "preloadingURL", + "parseMachMessage:localPort:remotePort:msgid:components:", + "setExternalType:", + NULL, + "book", + "nts_dbCache", + "lockForReading", + "_isUnprocessedInsertion", + "_errorWithErrno:sourcePath:destinationPath:", + "entityForName:inManagedObjectContext:", + "_attachWindowForOrdering:relativeOp:", + "_setItemIndex:", + "_updateCompositions:", + "requiredOpenGLExtensions", + "_multipleMutableArrayValueForKeyPath:atIndex:", + "convertAttributes:", + "primitiveType", + "_sizeNeedsUpdate", + "zoomImageToRect:", + "adjustRulersForMaxSize", + "_imageToBezelOrIndicatorPadding", + "_CGSremoveWindow:", + "_tableViewDoubleClick", + "isMultiple", + "showModalPreferencesPanelForOwner:", + "versionFromState:", + "isDrawingContentAtIndex:", + "_updateCaretToIndex:mouseLocation:", + "_parent", + "_setupProfileUI", + "reviewUnsavedDocumentsWithAlertTitle:cancellable:", + "hasPropertyForKey:", + "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:", + NULL, + "endUpdateBuffer:", + "suppressionButton", + "notifyDelegateWithResultCode:", + "_beginColumnAnimationOptimization", + NULL, + "fetchRequestTemplatesByName", + "archive:propertiesForEntryName:", + "initWithAssignmentExpression:expression:", + "supportsColorMatching", + "hoverRectForDirection", + "_appHasNonMiniaturizedWindow", + "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", + "resetDefaultInputValues", + "validateMenuPath", + "draggingKeyBindingManager", + "_abbreviationForAbsoluteTime:", + "SCTSubViewWithSCTID:", + "constrainsToOriginalSize", + "frameChanged:", + "_generateSQLForConst:inManyToMany:expression:inContext:", + "doneButton:", + "initWithProvider:transformation:croppingRect:", + "createManyToManyJoinIntermediateForProperty:direct:lastStep:inScope:context:", + "_createEllipsisRunWithStringRange:attributes:", + "_reconcilePrintSettingsAttributes", + "_setAllItemsTransparentBackground:", + "totalAutoreleasedObjects", + "_runGarbageCollectionForSize", + "writeMetadata:forRecordWithUniqueId:", + "mainSplit", + "scheduleOnRunloop:mode:", + NULL, + "setImage:badge:", + "attributeWithName:URI:stringValue:", + "_sendDelegateHeightOfRow:", + "sortedClassDescriptions:", + "lineRangeForRange:", + "ageStatistics", + "_isTableColumn:boundWithKeyPath:", + "_hasAnyChanges", + "scanHexFloat:", + "initWithURL:", + "retain", + "setColorRed:Green:Blue:Alpha:", + "compositionPickerView:didLoadComposition:", + "cameraCallbackFindParent:parentClass:", + "_nearestCrayonUnderViewPoint:", + "subentityKey", + "availableColorLists", + "nts_ImportFromMetaKitDatabaseAtPath:includeMailRecents:includeAddressBook:andSave:", + "collect:", + "_scriptingObjectForSpecifier:", + "invalidateCursorRectsForView:", + NULL, + "updateGridContentAtIndexes:", + "setPropertyCache:", + "updateThumbnail", + "stopImmediately", + "didLoadData:lengthReceived:", + "_getGlobalWindowNumber:andRect:forRepresentation:", + "reloadChildrenForNode:", + "dragImage", + "_browser:performKeyEquivalent:inColumn:", + "parseItem", + "_completeTypeDescription", + "getAdvancements:forGlyphs:count:", + "nodeClass", + "decimalNumberByRaisingToPower:", + "fetchResultSet:usingFetchPlan:", + "_adjustStatesOfObject:mode:state:triggerRedisplay:", + "expansionFrameWithFrame:inView:", + "_cellThatHasContentAtPoint:withEvent:", + "sendTaggedMsg:", + "_lastRightHit", + "HTTPBodyStream", + "classNameDecodedForArchiveClassName:", + NULL, + "reloadData", + "parameterAtIndex:", + "_mipmapCopyForThreadedOperation:", + "classForKeyedUnarchiver", + "initWithQuickTimeTrack:error:", + "nts_migrateMailRecentsToCurrentStoreWithPath:model:error:", + "textTabForGlyphLocation:writingDirection:maxLocation:", + NULL, + "contentViewFrameDidChange:", + "_setConvertedData:pboard:generation:inItem:", + NULL, + "normalizedPageBounds:", + "genFold:aboutAngle:", + "cachedTextForText:", + "setCaptureSession:", + "removeElementsInRange:coalesceRuns:", + "_setDrawingHIView:", + "_protectEvilCharacter:", + "_lightWeightRecursiveDisplayInRect:", + "_abCompareSuffixMatch:options:", + "_isNodeKeyInUse:", + "uppercaseString", + "deltaY", + "initWithContentsOfURL:encoding:error:", + "trace", + "choices", + "_setNeedsDisplayForIndex:", + "_setNeedsDisplayIfTopLeftChanged", + "_appendSuffixIfNeeded:", + "_fileNameExtensionsForType:forUseInSavePanel:", + "nts_PeopleAtRemoteLocation:", + "refresh:", + "originalImageSizeCache", + "_initWithImageSource:imageNumber:properties:", + "selectColumnIndexes:byExtendingSelection:", + "bytes", + "showsControlCharacters", + "resetFlushDisableCount", + "persistentStoreType", + "_stopSkippingSnapshotUpdates", + "_selectFirstEnabledCell", + "setNeedsDisplay", + "isNegation", + "backgroundColors", + "currentControlTint", + "setHasHorizontalRuler:", + "stringForStatus:", + "vCardControllerWithUIController:", + "clientIndexToGridIndex:", + "prepareSavePanel:", + "_web_URLFragment", + "_unload:", + "_processMetadataNode:", + "_multipleValuesObjectAtIndexPath:", + "_hashMarkDictionary", + "outlinesCells", + "setDuplicates:", + "loadSuiteWithDictionary:fromBundle:", + "elasticWidth", + "rowForItem:", + "setPreviewView:", + "_createAlert", + "_setFirstResponderNode:", + NULL, + "fontColor", + NULL, + "printOperationWithView:", + "initWithPath:delegate:timeout:", + "_gridStepForAxis:", + "_performDragOperationForFilenameDrop:asChildOfNode:atIndex:", + "previousKeyView", + "initWithContentRect:", + "_colorForConnection:", + "parentForItem:", + "_bonafiedDeallocHelper", + "dataStampForTriplet:littleEndian:", + "_resetPostingCounts", + "allocateSpaceForLen:added:", + "viewWithFrame:filter:", + "load", + NULL, + "setAffineTransform:", + "queryHitResultsFilterUTIs", + "setTimestamp:", + "openReadStream:", + "saturationComponent", + "becomeFirstResponder", + "setUID:", + "_fieldEditor", + "numberOfItemsInIconView:", + NULL, + "darkerOf:and:opacity:", + "setResource:", + "_engravedBoldDisabledForegroundTextColor", + "_storeExpandedState", + "descriptorWithTypeCode:", + "resetLayer", + "putRequestWithSession:file:URI:token:", + "_doSetAccessoryView:topView:bottomView:previousKeyView:oldView:", + "_threadedSave:", + "_stringToWrite", + "addPersistentStoreWithType:configuration:URL:options:error:", + "initWithTimeIntervalSinceNow:", + "sendDidReceiveChallenge:", + "dataReferenceWithReferenceToFile:", + "_shouldInstallToolTip:", + "createInputWithPortClass:forKey:attributes:arguments:order:", + NULL, + "_draggingUpdatedForReorder:proposedItem:proposedChildIndex:", + "_notifyDelegateIndexOfSelectedSubfieldDidChange", + "_fetchBatchForIndexes:", + "shiftModifySelection:", + "fetchPublicRecordForClass:withUniqueId:addressBook:", + "ikLayerWasAddedToSuperlayer", + "setKeyTimes:", + "moveToBeginningOfParagraphAndModifySelection:", + NULL, + "_viewVisibleBoundsChanged", + NULL, + NULL, + "setFocusedColorChipIndex:", + "_info", + "canBecomeKeyView", + "orderFrontTableOptionsPanel:", + "addReordedItemsToBrowserItems", + NULL, + "attributeIsReadOnly:", + "typeSelectString", + "allCategories:", + "updateFavoritesFromDefaults", + "verticalLineScroll", + "modalMode", + "startAnimation:forObject:keyPath:", + NULL, + "updateOptionsInfo:", + "_beginTableRow", + "setShadowRadius:", + "abDifferencesBetweenArray:", + NULL, + "setIdling:", + "runSharedEditorWithString:inView:atPoint:width:numLines:", + "setupShowcaseWindow", + "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:", + "inverseRelationship", + "_setSelectedNodes:", + "isCompositionIdentity:", + "_actionHasBegun:atIndexPath:", + "_reallocData:", + "_rangeOfTextTableRow:atIndex:completeRow:", + "_dispatchRequest:withPostHandler:requiringResult:", + "encodeConditionalObject:forKey:", + "topLevelObject", + "_setLastFocusRingView:bleedRegion:", + NULL, + "parametersViewForPatch:", + "drawsOutsideLineFragmentForGlyphAtIndex:", + "pop", + "_setWrapsDateComponentArithmetic:", + "RTFDFromRange:documentAttributes:", + NULL, + "isEPSOperation", + "sharedMagnifier", + "navNodeWithSimpleQueryString:searchScopes:", + "_loadKeyboardBindings", + "_autoSaveConfiguration", + "currencyCode", + "cellsHaveSubtitle", + "_displayPathForPath:", + "_startListeningToMouseMovement", + "_columnClosestToColumn:whenMoved:", + NULL, + NULL, + NULL, + "_isPortKeyInUse:", + "setBindVariables:", + "parseMetaSyntaxLeafResultShouldBeSkipped:", + "stringByDeletingPathExtension", + "allowsNonContiguousLayout", + "setHandlesContentAsCompoundValue:", + "imageWithContentsOfURL:options:", + "scrollBy:", + "lockBufferRepresentationWithPixelFormat:colorSpace:forBounds:", + "addObserverTextField:", + "transformedOriginalImageSize", + "setMatchedColor:", + "initWithKey:type:access:isHidden:shouldByDefaultInsertAtBeginning:", + "_handleDeviceIsAliveNotification:", + "_computedColorForNode:property:", + "proxySize", + "_copyWindows", + "runAutoPlay:", + "_sortedAETEElementClassDescriptions:", + "localizedDescription", + "sendMouseUpActionForDisabledCell:", + "pasteboard:provideDataForType:", + "typeOfFile:error:", + "bindTextureToCGLContext:textureUnit:applyInternalMatrix:externalMatrix:savedState:", + "grantRequestWithLockToken:", + NULL, + "nts_SaveWithFileLock:triggerSync:updateModificationDate:", + "_setSelectedWithoutNotification:", + "bottomColor", + "_generateSQLBetweenStringInContext:", + "imageForImageState", + NULL, + "_changeKeyState", + "halfSizePictureEdges:scale:", + "imageWithData:bytesPerRow:size:format:colorSpace:", + "removeToolTipForView:tag:", + "_moveTrackingArea:toRect:", + "loadWindow", + NULL, + "removeClient:", + "sourceModelForStoreAtURL:metadata:error:", + "enumerateSubIndices:", + "parseExtension:", + "insertStatement", + NULL, + "smartGroups", + "dispatchGroupDoubleClick:", + "nts_MembersOfGroup:", + "_targetViewDidMoveOrChangeSize:", + "_encodeDepth:", + "netService:didUpdateTXTRecordData:", + "setPaperSize:", + "updateLayoutAtIndexes:", + "_startRunMethod", + "appendBezierPathWithGlyphs:count:inFont:", + NULL, + "sharedTypographyPanel", + "acceptsFirstResponder", + "_filenameHasNonEmptyAcceptableFileType:", + NULL, + "nts_MatchesRecord:", + "_areWritesCancelled", + "_decodeByte", + "_canAcceptDocumentPreviewView:", + "_maxSizeFromUsableFrame:", + "_web_parseAsKeyValuePair_nowarn", + "createFirstLastSorting:part1:forPerson:", + "_offsetFromStartRect", + "_maxXTitlebarBorderThickness", + "quartzFilterManager:didModifyFilter:", + "_coreUIDrawBezelInRect:withClip:", + "netService:didNotResolve:", + NULL, + "shouldDrawOnMainThread", + "_imagesFromURL:forImage:fileType:extension:", + "fileWrapper", + "_copyCoreUILinearKnobDrawOptionsWithView:", + NULL, + "installViewport", + "_accessibilityButtonUIElement", + "setTextAttributesForNil:", + "_windowDying", + "filterWithFilterSpec:intype:outtype:", + "_defaultMessageAttributes", + "_mouseInside:", + "_getColorFromImageAtPoint:", + "setResizeWindow:", + "createDirectoryAtPath:withIntermediateDirectories:attributes:error:", + "_controlTintChanged:", + "clear:", + "controlViewWillResignFirstResponder:", + NULL, + "browser:typeSelectStringForRow:inColumn:", + NULL, + "insertPopItemWithTitle:andObject:", + "isExpandableAtArrangedObjectIndexPath:", + "_offsetSelectedKeyFramesByOffset:primaryKeyFrameIndex:primaryTimeLineIndex:", + "recursivelyRemoveQFilterCellViews:", + "_setAllowedItems:", + "window:shouldPopUpDocumentPathMenu:", + "createTexture", + "textViewDidChangeSelection:", + "startWatchingLDAPCards", + "fileListOrderedByFileProperty", + "relationship", + "nts_SubgroupsOfGroup:", + "_userSelectSingleRow:", + "updatePropertyWidth:andComparisonWidth:", + "intersectHashTable:", + NULL, + "selectionRectAdded", + "reloadThumbnailAtIndex:", + "isPredicateSearchingEnabled", + "_monitorKeyBinding:flags:", + "_initQLAccessiblity", + "replace:", + "_imageForColorPicker:", + "fileAttributesToWriteToFile:ofType:saveOperation:", + "normalizeFindOptions:", + "_keychainItem", + "_writeFontInRange:toPasteboard:", + NULL, + NULL, + "deleteRows:atIndex:", + "_supportsSimultaneousSegmentAndLabelTrackingWithEvent:segment:", + "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:", + "_messageString", + "_isEditingTextView:", + "resetOptionsInfo", + NULL, + "_syncToChangedToolbar:itemMoved:", + "indexOfFirstRangeContainingOrFollowing:", + "runModalForDirectory:file:types:", + "_hideWithoutResizingWindowHint", + "removeTexturesInContext:owner:", + "_initWithCredentials:owner:host:port:scheme:", + "_handleCommand:", + "sharedInstance", + "writeFilter:toLocation:", + "setIndeterminate:", + "textureIsPacked", + "_CGImageRef", + "_clearTableCells", + "_actualOrderingFilePropertyAscending:", + "clearRecentDocuments:", + "initInNode:recordRef:", + "_convertersListMutex", + "_handleSelectionInFocusRingMode:", + "dateWithTimeIntervalSinceReferenceDate:", + "createUsersDictionaryFromNames:inNode:", + "copyDeepStateFromMovie:", + "popGlyph:", + "chainChildContext:", + "initWithPath:traverseLink:", + NULL, + "originalSize", + "validate", + "initWithCapacity:compareSelector:", + "_accessibilityUIElementForPartCode:", + NULL, + NULL, + "viewWillBecomeActive", + "__setDictionaryRepresentation:", + "stopEditing", + "interpretEventAsText:forClient:", + "shouldProceedAfterError:copyingItemAtPath:toPath:", + "_shouldRestoreSharedPreviewViewForURL:", + "horizBlur16ROI:destRect:", + NULL, + "setBidiLevels:forGlyphRange:", + "_selectedRanges", + "setFeature:isEnabled:", + "setupSlider:input:", + "xHeight", + "_parseArgumentsWithSeparator:", + "_addOutput:forKey:", + "enumerateRects:outRect:", + "_scriptingDateDescriptor", + "attributedStringForZero", + "_unlockQuickDrawPort", + "setBaseAffineTransform:", + "characterIndexAtPoint:", + "backgroundHasAlpha", + NULL, + "openWithApplication", + "drawCrayonLayer", + "setImportsGraphics:", + "_dateIsAM:", + "isUsingDefaultAddressBookDirectory", + "sharedDocumentController", + "_buildCursor:cursorData:", + "setState:", + "setupAsPeoplePicker:", + NULL, + "imageExporterRegistryTimestamp", + "_allowAnimated_setBackgroundFilters:", + "setSubviews:", + "_canCreateCollapsedSpecifierFromRangeRecord:", + "_resizeForMetal:style:topHeight:bottomHeight:", + "setImageScaling:", + "_vCardKeysForPhoneLabel:", + "setRed:green:blue:alpha:", + "_coreUIBorderDrawOptions", + NULL, + "_generateErrorDetailForKey:withValue:", + "setValue:forProperty:recordCouldBeInDatabase:", + "_prepareResultsFromResultSet:usingFetchPlan:", + "_continuousCheckingAllowed", + "_distillFilterList:", + "_selectorDictionary", + "_scaledBackground", + "initializeBackingStore:sentinel:", + "_stopRun", + "_imageKitViewClass", + "setClientData:", + "isEqualTo:", + NULL, + "rootData", + "hasMarkedText", + "scopeButtonAction:", + "orderOut", + "printOidAsDecimal:", + "shapeWithCGSRegion:", + "outlineViewItemDidCollapse:", + "commandDescriptionsInSuite:", + "allXMLNSAttributes", + "setRootGraph:", + "postNotificationNamed:", + "unlockDocument", + "_userSelectColumnIndexes:withNewAnchorColumn:", + "_setCacheWindowNum:forWindow:", + "vCardRepresentationOfRecord:", + "_batchCollapseItemsWithItemEntries:collapseChildren:", + "_rowHeightStorage:", + "initWithNSBitmapImageRep:options:", + "removeAllContentObjectsInCellOrControl:", + "_restoreInitialMenuPosition", + "_isAncestorOf:", + "_allBinderClasses", + "_doModalLoop:peek:", + "_subImageFocus", + "animationDidStart:", + "setDataRetained:", + "comboBoxTextDidEndEditing:", + "takeIntegerValueFrom:", + "_abCompareNotWithinIntervalFromTodayYearless:", + "abortTransition", + "hide", + "leftExpression", + "_isInsertingText", + NULL, + "_referralSignUpURLWithLookupPath:andApplicationID:", + "_menuItem", + "_deselectRowRange:", + "minimumIntegerDigits", + "isAsync", + "_listRequestPostHandler:", + NULL, + "nts_mailRecentsManagedObjectContext", + "_initTransactionWithRequest:synchronousFlag:delegate:", + "valueTransformer", + NULL, + "updateMovieFile", + "initWithStatement:forAdapter:", + "_processText:", + "setMinSize:", + "like:", + "_isDraggable", + "_computedStringForNode:property:", + "showGotoWithInitialFilename:", + "replyEvent", + "isDirty", + "prepareForDifferentCard", + "setShortMonthSymbols:", + "mappingForRelationship:forConfigurationWithName:", + NULL, + "scrollItemAtIndexToVisible:", + "initWithIconRef:", + "_registerRuleDelegateForNotifications", + "bindItem:withUID:", + "_setSearchSlice:toHaveAttributeName:inButton:", + "selectIdentifier:forPerson:byExtendingSelection:", + "_handleWordCallbackWithParams:", + "matchesAnyFile", + "panel:isValidFilename:", + "createTranslatedImageByX:Y:", + "_alignmentGridWidth", + "accessibilityIsRowsAttributeSettable", + "hasText", + "_prepareConst:inAttribute:sensitiveOptions:", + "_conversionChainFrom:to:", + NULL, + "copyThumbnailImage", + "_detachFromParent", + "_relativeURLPath", + "_wrappingAttributes", + "startAutoscroll", + "handleKeyDown:inNode:view:", + "_thumbnailThread:", + "setNavDataSource:", + NULL, + "converterLockFileName", + "nicestRenderingPrepareExpendStep:", + "_accessibilityConfigureToolbarItem", + "numParts", + "setDisplayColorSpace:", + "scriptErrorNumber", + "_cancelDelayedShowOpenHandCursor", + "initWithFilterArray:", + "outlineView:willDisplayOutlineCell:forTableColumn:item:", + "setKeyEquivalentFont:size:", + "valuesForKey:", + NULL, + "changeInstantField:", + "ruleEditor:displayValueForCriterion:inRow:", + "_key", + "_coreUIWidget:", + "_listTypeDescriptions", + "makeStale", + "layoutParagraphAtPoint:", + "invalidateTransformedImage", + "clip:", + "ascender", + "putPropertyInOtherMenu:", + "revertToSavedFromFile:ofType:", + "_SFCertificatePanel_disclosureStateChanged:", + "_scaleFactor", + "didOpen", + "imageColorSpace", + "_firstJobPageNumber", + "_containsIMKeys:", + "_lockWaitingForOperation", + "_isBindingEstablished:", + "metadataForKey:", + "rulerAttributesInRange:", + "setAttachmentCell:", + "_attachmentCellForSelection", + NULL, + "setInputsVisibilityMask:", + "disableHeartBeating", + "loadLibrary:", + "_valueTypeForParameter:", + "executableArchitectures", + "_gaugeImage:", + "_proxyInitWithContainer:getter:", + "setPressedImage:forControlTint:", + "isHiddenOrHasHiddenAncestor", + "rangeOfTextList:atIndex:", + "setStores:", + NULL, + "_themeContentRect", + "_menuItemViewerChangedFrame:", + "CA_lastPathComponent:", + "unSelectedImageBackgroundPiece", + "frameOfCellAtColumn:row:", + "data", + "alternateMnemonicLocation", + NULL, + "_maximumItemViewerHeight", + "curveToX1:andY1:andX2:andY2:andX3:andY3:", + "_mouseDragged:", + "_setFrameFromHIViewFrame:", + "applyPaste", + NULL, + "_accessibilityIsSupportedPartCode:", + NULL, + "fontDescriptorWithSize:", + NULL, + "_notifyEditorStateChanged:", + NULL, + "_cffireTime", + "removeFilter:", + "setupSearchResults", + "resetHUDFadeTimer", + "_indexOfNode:inOrderedNodes:", + "vCardRepresentationOfRecords:", + "orderFrontSpacingPanel:", + "dateWithCalendarFormat:timeZone:", + NULL, + "_reconcileToExtensionDescription:suiteRegistry:", + "_rowHeaderShadowSurfaceIsShowing", + "vectorWithPoint:", + "nts_Subscriptions", + "empty", + "setPublicID:", + "_isAppSmartFolderNameUsed:", + "_doPostColumnConfigurationDidChangeNotification:", + "_isEmptyMovie", + "_disableTrackingArea:", + "_drawKeyboardFocusRingWithFrame:", + "isNativeName:", + "runMode:beforeDate:", + NULL, + NULL, + "_addMultipleToTypingAttributes:", + "dataCell", + "_installCocoaWindowEventHandlers", + "_setDisplayedView:transition:willShowPreview:", + NULL, + "alternateImage", + "gotoPosterFrame:", + "computeTableHeight", + "setValue:forKeyFrame:controlType:", + "allowsTickMarkValuesOnly", + "unchainContext", + "drawFocusRing", + NULL, + "_freeData", + "imageFlow:didSelectItemAtIndex:", + "willRemoveCacheNodes:", + "_pauseLayerTreeRenderingForWindowOrderOut:", + "setTopBorderColor:", + "drawsWithFinalCutStudioCompatibleColors", + "_drawerDefaultRightTrailingOffset", + "andPredicateOperator", + NULL, + "_multipleValueForKey:atIndex:", + "_patchFromComposition:", + "removeMovieFromIdleList", + "_scriptingRectangleWithDescriptor:", + "_setFrameSize:forceScroll:", + "setSidebarOutlineView:", + "createFirstLastSorting:part1:", + "bestLocationRep", + "URLProtocol:didFailWithError:", + "_attachSheetWindow:", + "stopTracking:at:inView:mouseIsUp:", + NULL, + "drawGridInClipRect:", + "rotateImageRight:", + "statusForABPerson:", + "_generateScaledBackground", + "adjustedDocumentPreviewFrame:withMinSize:maxSize:", + "speechSynthesizer:willSpeakWord:ofString:", + "_surface", + "_replaceObject:forKey:", + "entities", + "isLoaded", + "relativePosition", + "initWithUnsignedLong:", + NULL, + "purgeable", + "load:", + "setQueryTitle:", + "setCachedWindow:", + "uniqueSpellDocumentTag", + "setGraphicsState:", + "_invalidateResourceForGraphicsContext:", + "_scriptingInsertObject:inValueForKey:", + "setIsFileProperty:displayed:", + "_setSavedDelegate:", + "pageRef", + "_setModalWindowLevel", + "scrollColumnToVisible:", + "removeAllToolTipsForView:withOwner:", + "names", + "hyphenCharacterForGlyphAtIndex:", + "_sheetHeightAdjustment", + "_announce", + "mouseCell", + "sharedInit", + "proposedCredential", + "initWithFileAtPath:", + "templateViews", + "_setPrinter:inPrintSession:", + NULL, + "windowDidChangeScreen:", + "mouseInside:", + NULL, + NULL, + "importedCards", + NULL, + "HTTPMethod", + "_flushCaches", + "objectValueSupportsEnabledState:", + "_unshowOpenHandCursor:", + NULL, + "_incrementLocalProxyCount", + "isCardPaneVisible", + "setCreatesSortDescriptor:", + "apply", + "addSubview:", + "setGoverningAlias:", + "_expandItemEntry:expandChildren:", + "setAncillaryData:", + "mouseExited:", + "_processHeadElement:", + "composite:over:", + "_dispatchRequest:requiringResult:", + "isExtensionHidden", + "_proxyLocator", + "setSourceAlias:", + "qdPort", + "columnAverageImage:extent:", + "linkWithCharacterRange:parent:", + "insertElement:atIndex:", + "setMaximumLineHeight:", + "reallySaveFilter:notification:", + "_addLibxml2TreeRepresentationToDoc:context:", + "_editOtherSliceKind:", + "downloadResource:", + "registerTaskName:withTaskDescriptor:taskOrder:", + NULL, + "uniqueNameForPerson:atPath:", + "windowDidBecomeKeyNotification:", + "_createFSRefForPath:", + "trackWithEvent:inView:withDelegate:", + "saveWithGlyphOrigin:", + "writeToFile:ofType:originalFile:saveOperation:", + "convertNeutralTemperature:tint:toX:y:", + "messagingAddressesWithService:owner:withAddressBook:", + "_getRemainderFrame", + "extract1ROI:destRect:", + "setHorizontalEdgePadding:", + "visibleRect", + "unlockMipmapItem:", + "setMouseDownLayer:", + "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:", + "stringByAppendingFormat:", + "iconForFile:", + "initWithScrollView:orientation:", + "ordinalityOfUnit:inUnit:forDate:", + "headerLevel", + "stamp", + "acceptColor:atPoint:", + "verticalBoxAddROI:destRect:userInfo:", + "response", + NULL, + "compositionPickerViewWillStopAnimating:", + "removeCollection:", + "_affectedExpandedNodesForNode:", + "beginUpdateBuffer:colorSpace:", + NULL, + NULL, + "setDictionaryRef:", + NULL, + NULL, + NULL, + "_validateViewIsInViewHeirarchy:", + NULL, + "hideHUDNow:", + "_drawingHIView", + NULL, + "instanceMethodFor:", + "_uploadLocalFileAtPath:toPath:withProps:andHeaders:", + "initWithGraph:", + "_didPresentDiscardEditingSheetWithRecovery:contextInfo:", + "discardCursorRects", + "_iconForOSType:", + "nextIndexInFreeFormLayoutWithDirectionKey:currentIndex:", + "_useIconNamed:from:", + "releaseGlobally", + "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:", + "tokens:", + "allowAliasing", + "_filenameHasAcceptableFileType:", + "_chooseIdentitySheetDidEnd:returnCode:contextInfo:", + "registerName:withNameServer:", + "_applicationDidLaunch:", + "copyPixelsFromBounds:toSharedCGLContext:usingInternalFormat:", + "styleMask", + "emptyRectSet", + "_asciiDescription", + "_clearRememberedEditingFirstResponder", + "_cleanUp", + "toolTipForView:cell:", + "_setupImages", + NULL, + "setOpaqueShape:", + "registerObservingForAnalyzableKeyPath:", + "encodeNXObject:", + "hasSpaces:", + "initWithTitle:andURL:", + "instanceMethodDescFor:", + "disableFlushWindow", + "releaseSegment:ofSize:", + "newSelectStatementWithFetchRequest:", + NULL, + "setCaseSensitive:", + "_generateJoinSQLStringInContext:", + "speed", + "zeroPairedEntries", + "selectedGroup", + "_shouldProceedAfterErrno:linkingItemAtPath:toPath:", + "_formatObjectValue:invalid:", + "abortNicestRendering", + "initWithPath:documentAttributes:", + "_getConfigRequestPostHandler:", + NULL, + "_autoSizeView:::::", + "graphNode", + NULL, + "initWithObjectSpecifier:comparisonOperator:testObject:", + "finishSession", + "_updateContent", + "addedMembers:toGroup:", + "popActiveListAnalyzer", + "imageBrowser:moveItemsAtIndexes:toIndex:", + "_toolTipTimer", + "groupsController:outlineViewSelectionDidChange:", + "finishDownloadDecoding", + "tabView", + NULL, + "nts_hasSharedInstance", + "removeObjectAtIndex:", + "setAlternateMnemonicLocation:", + "_removeOutputForKey:", + "initPropPatchWithURL:patchProperties:deleteProperties:", + "currentImageIsAnimated", + "localDateOccurringOnSameCalendarDayAsDateInGMT:", + "_tokenizeCharactersAdjacentToSelectionForTextView:terminatorsNeeded:", + NULL, + "_drawUnifiedToolbarBackgroundInRect:withState:", + "lockOperation", + "_getInputTopLine", + "labelSizeForBounds:", + "_needsViewerLayout", + "onlineStatusButton", + "rearrangeObjects", + "_drawNode:bounds:", + NULL, + NULL, + NULL, + "_forceRedrawDragInsertionIndicator", + "_forceInsertionForObject:", + "initWithKind:options:", + NULL, + "backgroundStyleForHighlight:", + "_postscriptName", + "knobLayer", + "allResolutions", + "setParameter:forOption:", + "nextUnicodeStringStopTokens:quotedPrintable:trim:", + "addOriginalWidth:", + "magicCookie", + NULL, + "removeFavoriteInWindow:", + "setCalculatesAllSizes:", + "setIcons:forAnimationFilenames:", + "_drawRect:clip:", + "startPlayer:", + "letterCharacterSet", + "awakeAfterUsingCoder:", + "reverse", + "__invalidateInspector:", + "responseAsString", + "setNumberOfItems:", + "setShowIdentityBadges:", + NULL, + "localizedDisplayName", + "prepareRenderingOrderingWithIndexes:", + "generateDefaultThumbnail", + "addColumnFilter:forColumnTitle:andIdentifier:", + "copyBindingsFromObject:toObject:", + "selectedTextColor", + "patternRepeatROI:forRect:userInfo:", + "mergeSimilarMultiValuesForPerson:", + "dateStyle", + "blurVerticalPass7ROI:destRect:", + "replaceAndFindInView:", + NULL, + NULL, + "niceImageForSize:forGLRendering:cacheIt:", + "effectsDisabledIcon", + "_reserved_SFCertificateTrustPanel", + "_drawDropHighlightAroundRect:isSelected:", + "drawAlphaFrame:", + "encodePoint:", + "edited:range:changeInLength:", + "_selectItem:", + "_drawTitledFrame:", + "layoutManagerDidInvalidateLayout:", + "_minExpandedFrameSize", + "setupAuthType:", + "_propertyKeyFromElement:withName:", + "_bonafiedDealloc", + "generateSQLStringInContext:", + "characterBuffer", + "_attributedValuesFromStringValues:", + "isSubclassOfClass:", + "_refreshFormatDescriptionsAttribute", + "accessibilityHelpAttribute", + "_dateFormatter", + "loadCompositionFromFile:", + "_discardCursorRect:", + "_cellForObject", + "unlockBufferRepresentation", + "currentCommand", + "_setBackgroundTransparent:", + "sharedTableOptions", + "_propertyType", + "addFieldTypeToDictionaryRef:", + "_fixedSelectionRangesForRanges:affinity:", + NULL, + "_searchFieldDoRecent:", + "_shouldByDefaultInsertAtBeginningOfRelationshipForKey:", + "addObject:toPropertyWithKey:", + "_loadSavedLayout", + "stopObservingPreviewNode", + NULL, + "source", + "setDisplayedStringsArray:", + "tokenFieldCell:displayStringForRepresentedObject:", + NULL, + "_adapter", + "showsStateBy", + "_pinnedInDirectionOfScroll:", + "_initFromGlobalWindow:inRect:styleMask:", + "zipFileArchive", + "_imageLevel_backgroundColor", + "_rulerAccViewSetUpLists", + "_scriptingRectangleDescriptor", + "startPoint", + "writeToURL:atomically:", + "_stopTimeOut", + "_centerScanSeparatorRect:", + "_initNicestRenderingCellOrderedIndexes", + "viewForPreferenceNamed:", + "_suppressNotification", + "_errSheetDidDismiss:returnCode:contextInfo:", + "_newShowFontsItem", + "dataSize", + "_updateWidgets", + "_shouldTerminate", + "_copyConnectionsOfView:referenceObject:toView:referenceObject:", + "typesetterLaidOneGlyph:", + "setCountPerLines:", + "readFromURL:ofType:error:", + "clearSelectedPagesDrawNow:", + "setRepeatCountForNextCommand:", + "_renderTimer", + "_updateTheaterWindowState", + "runModalPrintOperation:delegate:didRunSelector:contextInfo:", + "isInInterfaceBuilderApp", + "_setPrintEventRetrofitInfo:", + "syncPageIndexToScrollView", + "initSetLengthActionWithItem:withLength:", + NULL, + "_manuallyDrawSourceListHighlight", + "_adjustCancelButtonCellImages::", + NULL, + "clearPrivateFields", + "_updateWindowAnchor", + "_toggleShown:", + "_trustHeaderValue", + "outlineView:acceptDrop:item:childIndex:", + "setHeader", + "initWithCGLSContext:pixelFormat:options:", + "initWithView:height:fill:isHorizontal:", + "_generateSQLForProperty:startEntity:startAlias:keypath:inContext:", + "channelMapping", + "addPersonButton", + "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:flipped:", + "dbSnapshot", + "_changeKeyAndMainLimitedOK:", + "_resetDiscardMask", + "_invalidateAllRevealovers", + "endPageSetup", + "authenticationType", + "windows", + "_enableItem:", + "registerModelKeyPaths:unregisterModelKeyPaths:", + "setPassword:", + NULL, + "representedURL", + "startArrowScrolling", + "initWithMetadataManager:", + NULL, + "scrollScreenBy:", + "releaseTexturePackerAtIndex:", + "_allowAnimated_setBoundsSize:", + NULL, + "_collectItemRectsForViews:count:inBounds:", + "itemViewer", + "addFieldIndex:forKey:", + "resetCursorRect:inView:", + "_optionsForBinding:specifyOnlyIfDifferentFromDefault:", + "_createMutableSetValueWithSelector:", + "methodDescriptionForSelector:", + NULL, + NULL, + "updateOptionsUI", + "createRelationshipChildOnNode:forRelationshipDescription:", + "notifyPerform:", + "accessibilityIsTitleUIElementAttributeSettable", + "dateRangeTrimmedFromNearestEndWithDate:", + "_web_addDefaultsChangeObserver", + NULL, + "freeFormLayoutMoveWithDrop:", + "_generateSQLForString:expressionPath:sensitiveOptions:wildStart:wildEnd:allowToMany:inContext:", + NULL, + "_dataSourceNumberOfChildrenOfItem:", + "_appendStringInKeyNode:key:value:", + "serializePListKeyIn:key:value:", + "_textTransform", + "advanceToSingleByteString", + "_blueAlternatingRowColor", + "_windowDidResignKeyNotification:", + "hideOtherApplications", + "primaryKeyColumnDefinitions", + "_labelRectForTabRect:forItem:", + "initWithSearchStrategy:", + "timeZone", + "_commonNavFilepathInputControllerInit", + "_isToManyRelationship", + "resetStandardUserDefaults", + "_deregisterForAutosaveNotification", + "sizeToFit", + "isTransient", + "saveAndTriggerSync:udpateModificationDate:", + "initWithSQLEntity:ownedObjectID:andTimestamp:", + "addTabStop:", + "willApply", + NULL, + "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:", + "containerComponent", + "_finish_initialization", + "_layerTreeRendererPaused", + "_notifyIM:withObject:", + "horizBlur1ROI:destRect:", + "_calcTextRect:", + "smartGroup", + NULL, + "setDocumentURLs:withVisibleIndex:", + "_isNativeType:forDocumentClass:", + "_isRowVisible:", + "mergeCells", + "firstObjectCommonWithArray:", + "_allowsContextMenus", + "numberOfItemsInComboBox:", + "_cellFrame", + "validAttributesForMarkedText", + "_sizeWithSize:attributedString:", + "_setHidden:setNeedsDisplay:", + "setLeftChild:", + "regionWithCGRect:", + "_isSaveFilenameLengthLegal", + "_indexOfSubfieldAtPoint:inFrame:", + "pageIndex", + "raisesForNotApplicableKeys", + "_setShowingModalFrame:", + "decrementNumberOfThreadsAlive:withSessionUID:", + "refreshObject:mergeChanges:", + "interpolate:", + "_exitElement:tag:display:startIndex:", + "initWithHTML:options:documentAttributes:", + "continuouslyUpdatesValue", + NULL, + NULL, + "destinationTypeForMigration:sourceMetadata:error:", + "setSelectIntermediate:", + "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:", + "captureOutput:shouldChangeOutputFileAtURL:forConnections:dueToError:", + "stringWithContentsOfURL:encoding:error:", + "_setShouldDrawArrow:", + "_viewFromAttributeType:", + "_needsUpdate", + "removeObjectsInArray:", + "_moveItemFromIndex:toIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "_setKeyboardFocusRingNeedsDisplayForTabViewItem:", + "createNewImageWithCallback:param:applyFilters:", + "resumeWithScriptCommandResult:", + NULL, + "fastMipmapItemWithExactSize:", + "_initLockRequest", + "canGoForward", + "_loadDeadKeyData", + "setShowsResizeIndicator:", + NULL, + "_setPathWithBuffer:", + "_scrollViewForColumnsDocumentViewFrameDidChange:", + "doSetValue:", + "buttonROI:forRect:userInfo:", + "highlightedItem", + NULL, + "mutableSet", + NULL, + "_setSingleValue:forKey:", + "rangesForUserCharacterAttributeChange", + "_forgetSpellingFromMenu:", + "adminGroup", + "_drawerDefaultTopLeadingOffset", + "outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:", + "_copyValueOfDescriptorType:toBuffer:ofLength:", + "compositionURL", + "initWithAccount:", + "_setPredicate:", + "_manualDrawBackgroundForGroupRow:inRect:", + "attribute", + "_diskCacheSetSyncTimer", + "decimalNumberByMultiplyingBy:withBehavior:", + "_boundToHIView", + "execute", + "initWithNib:", + "cachePropertyValue:withKey:uniqueId:addressBook:", + "browserScroll", + "allModes", + "_setWantsToBeOnMainScreen:", + NULL, + "cacheItem:withUID:", + "lineFragmentPadding", + "initWithQuickTimeMedia:error:", + "_noteNote1:", + "SMPTETimeValue", + "registerSearchDataSource:", + "annotationType", + "_initWithResumeInformation:delegate:path:", + "noiseReduceROI:destRect:", + "setRegion:", + NULL, + "resizeWindow", + "_observeValueForKeyPath:ofObject:context:", + "_computeCameraDZ", + "_allocAuxiliaryStorage", + "deselectRow:", + "tableView:didChangeToSelectedRowIndexes:", + "LDAPQueryString", + "indexToRenderForNonOrderedIndex:", + "accessibilityNumberOfCharactersAttribute", + "control:didFailToFormatString:errorDescription:", + "setPreferredVolume:", + "_openFileWithoutUI:", + "suggestDiscloseTextClicked:", + "createConnectionFromPort:toPort:forKey:", + "__copyPixels:withSize:toCurrentFocusedViewAtPoint:", + "_setAutosizedWindowHeight:", + "handleMetadataCallback", + "_minBoundsHeight", + "_implicitObservationInfoForEntity:forResultingClass:", + "stringByAddingPercentEscapesUsingEncoding:", + "rotate:by:about:", + "initWithTreeController:keyPath:", + "dateByAddingYears:months:days:hours:minutes:seconds:", + "setImageWithURL:imageState:", + NULL, + "destinationEntityName", + "indexOfObjectIdenticalTo:inRange:", + "putLocalFileAtPath:toPath:withHeaders:", + "setContainerSpecifier:", + "_finalize_QCCGLContext", + "_addNote:", + "_mappingForConfigurationNamed:", + "drawDragHighlight", + "activeFileListDelegate", + "_expandToFitTextFields", + NULL, + "setURL:blockingUntilLoading:timeoutDate:transition:", + "_generateSQLForExpression:allowToMany:inContext:", + "_markLiveResizeColumnLayoutInfo", + "invalidateTextContainerOrigin", + NULL, + "fileSystemRepresentation", + "defaultGutterWidth", + "_handleObservingRefresh", + "_processPendingDeletions:withInsertions:withUpdates:withNewlyForgottenList:withRemovedChangedObjects:", + "compositionPickerView:willSelectComposition:", + "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:", + "setStroke", + "mouseDownFlags", + "_rangeOfTextTableRow:atIndex:", + "_fetchCurrentDirectory", + "thumbnailMaxSize", + "nibName", + "createTextureBufferFromTextureBuffer:target:bounds:flip:options:", + "_getAppleUseCoreUI", + "processProcessingInstruction:", + "emailList", + "_handleFileListConfirmedSelection:", + "initWithContentsOfFile:error:", + "defaultMappingGenerator", + "jumpSlider:", + "updateTextView", + "takeValue:forKey:", + NULL, + "_createTimer:", + "download:decideDestinationWithSuggestedFilename:", + "initWithSetFunc:ivarOffset:", + NULL, + "searchField:shouldChangeCancelButtonVisibility:", + "internalState", + "_web_URLByRemovingUserAndPath_nowarn", + "_makeRightCellKey", + "_removeKey:", + "setCropZoneBehavior:", + "_contentsTypeDescription", + "setAbsorbedCount:forIndex:", + "comparisonChanged:", + "_windowResizeCornerThickness", + "writeToFile:atomically:updateFilenames:", + "_setCancel:", + "minimumFontSize", + "hueComponent", + "restoreAttributesOfTextStorage:", + "initWithHTML:documentAttributes:", + "boundingRectWithSize:options:", + "_tile:", + "orderAdapterOperations", + "setHeadIndent:", + "viewTranslationCallback:whichView:mousePt:", + NULL, + "_doUpdateServicesMenu:", + "controlTextDidBeginEditing:", + "windowWithWindowNumber:", + "initWithQuickTimeMovie:disposeWhenDone:delegate:error:", + "gridIndexToClientIndex:", + "_old_initWithCoder_NSTabViewItem:", + "accessibilityColumnIndex", + "insertPages:", + "setQuoteBinding:", + "initWithJSString:", + "deselectItemAtIndex:", + "runModalForCertificates:showGroup:", + "_subrowEqualing:inArray:", + "_popTableState", + "disappearingItemCursor", + NULL, + "next", + "firstCharBounds", + "editingTextRect", + "makeLocalPath:", + "abEndOfParagraphStartingAtIndex:", + NULL, + "addMoveOperationFrom:to:", + "setShowsStateColumn:", + "_noise3d:y:z:", + "retainCount", + NULL, + "setCurrentConstructionContext:", + "_size", + NULL, + "initWithMovie:timeRange:error:", + "stuckPixelElimination:threshold:phase:", + "userKeyEquivalent", + "initWithCarbonWindowRef:takingOwnership:disableOrdering:", + "askReviewDocumentsWithClient:documentCount:", + NULL, + "_drawDragBoundries", + "_setSelectionColorRed:green:blue:", + "setupImageBackgroundLayer", + "panTiltSpeed", + "_deleteSlice:", + "isSizeDisplayedForNode:", + "_shouldSmoothFonts", + "initWithBytes:length:encoding:", + "tickMarkValueAtIndex:", + "_postItemDidExpandNotification:", + "valueWithUniqueID:inPropertyWithKey:", + "knowsPagesFirst:last:", + "_configureLabelCellStringValue", + "_lockForWriting:", + "_getCollections", + "_setDataForkReferenceNumber:", + "beginTime", + "decodeForkWithData:count:CRCCheckFlag:", + "_registerClearStateWithUndoManager", + "_generateModel:", + "newSelectionIndexesWithIndexesInRect:withModifier:", + "coerceData:toTextStorage:", + "setIntValue:", + "outlineView:mouseDownInHeaderOfTableColumn:", + "secondaryInit", + "centerToPosition:", + "_web_isToday", + "endParagraph", + "flipImageVertical:", + "setDisableCountDown:", + "setStringParameterValue:to:", + "registerCoercer:selector:toConvertFromClass:toClass:", + "preloadWithQuality:", + "selectedControlColor", + "initWithWindow:delegate:", + "isSelecting", + "setObservingToModelObjectsRange:", + "maximizeSize:", + "_fireFindIndicatorTimer:", + NULL, + "finished", + "_configureGreyButton:index:", + "initWithInfo:withRepository:", + "canClickDisabledFiles", + "stringByDeletingLastPathComponent", + "encodeInt32:forKey:", + "opaqueShape", + "setCornerRadius:", + "_setUsesQuickdraw:", + "badgeLabel", + "accessibilityMaxValueAttribute", + "_titlebarHeight", + NULL, + "_childlessParentsIfSlicesWereDeletedAtIndexes:", + "writeParagraphStyle:", + "_rangeOfPrefixOfString:fittingWidth:withFont:", + "pauseSpeakingAtBoundary:", + "_createFontPanelRepFromCollection:removingHidden:", + "documentView", + NULL, + "_accessibilityIsModal", + "useSSL", + "destinationConfiguration", + NULL, + "setTextContainer:", + "classForAnnotationDictionary:", + "miniWindowFrameForItemFrame:canZoomFromCenter:", + NULL, + "isEnumeration", + "getObjectValue:forString:errorDescription:", + "encodeBycopyObject:", + "_runModalWithColor:", + "drawCapsule", + "trackKnob:", + "sync", + "entitiesForConfiguration:", + NULL, + NULL, + "_isCellSelected:", + NULL, + "channelLayout", + "setTextSizeMultiplier:", + NULL, + "dissolveToPoint:fromRect:fraction:", + NULL, + "_viewFromExpressionObject:", + "copyAllResources", + "hasValidObjectValue", + "_scriptingPointDescriptor", + "_adjustNibControlSizes", + "setDictionaryController:", + "setDisplayState:", + "_CAViewFlags", + "allowsDocumentBackgroundColorChange", + "setOriginalDontAskUnresolvedDataRefsFlag:", + "_descriptorOfType:withValue:", + "setSlideshowWasStartedWithStartRect:", + "drawRowIndexes:clipRect:", + "layoutSanityCheck", + "_menuItemViewFrameChanged:", + "initWithWhite:alpha:", + "serialize:length:", + "notifyObjectWhenFinishedExecuting:", + "_beginSrcDragItemViewerWithEvent:", + "addGroup:inGroupList:", + "drawBorderAndBackgroundWithFrame:inView:", + "usesItemFromMenu", + "imageBrowser:titleOfCellAtIndex:shouldEndEditing:", + "pressedImage", + "fileHFSCreatorCode", + "setLineHeightMultiple:", + "_sendDelegateWriteRowsWithIndexes:inColumn:toPasteboard:", + "_currentTitleAttributes", + "_drawBackground:", + "_setLineColor:", + NULL, + "setLineBreakMode:", + "initWithAttributedString:", + "pixelFormatM_If", + "displayValueForObjectValue:", + "_setGlyphGenerator:", + "cellForProxy", + "goForward", + "_positionsMenuAsPullDown", + "_updateAttributesFromAudioChannelVolumes", + "tmpNameFromPath:extension:", + "setPort:", + "setArgumentBinding:", + "popSubnode", + "_imageToDrawRefreshingCacheIfNecessaryForSize:", + "selectPrevious:", + "ignoreSpelling:", + "_addToOrphanList", + "advanceToEOLSingle", + "_sortUsingDescriptors:", + "_refactor:", + "accessibilityAttributeNames", + "createThumbnailFromURL:", + "isContainer", + "createUniqueContextWithOptions:", + "allBundles", + "frameExceedsMaximumOpenGLViewport", + "detachInstanceInfo:", + "_rowType", + "allowsFileCreation", + "setUsesFindPanel:", + "_validateSubviewFrames", + "closeMenuToIntersectionWithNewMenu:", + "_setFieldEditorUndoManager:", + "_setupAuxiliaryStorage", + "addAuthInfo:", + NULL, + "nts_TypeOfProperty:withAddressBook:", + "readFromData:options:documentAttributes:error:", + "initWithBytes:objCType:", + "_mainThreadCallback:", + "_hasAttributedStringValue", + "colorPanelColorDidChange:", + NULL, + "_updateWindow:withVisibilityState:", + "splitView:additionalEffectiveRectOfDividerAtIndex:", + "indexOfIdentityGroups", + "_kitBundle", + "mipmapWithSize:", + "supportedDecoderVersions", + "_accessibilitySplitterMinCoordinate", + "handleKeyboardShortcutWithEvent:", + "shouldSubstituteCustomClass", + "genericLabel", + "currentCalendar", + "rangeCount", + "displayMode", + "drawInteriorWithFrame:inView:", + NULL, + "_applicationStatusNotification:when:data:affectedASN:session:notificationID:", + "tighteningFactorForTruncation", + "otherMouseDragged:", + "qt_localizedUnknownErrorWithUnderlyingOSStatus:", + "_getCGCustomColorSpace", + "_refreshStreamsFromCallback", + "shadowState", + "configurePersistentStoreCoordinatorForURL:ofType:error:", + "lanczosTable", + "getInputWhiteParams", + NULL, + "alwaysPresentsApplicationModalAlerts", + "segmentedBufferAddress", + "_tryChallenge:", + "stopAutoUpdate", + "_initContent:styleMask:backing:defer:screen:contentView:", + "_selectModuleOwner:", + "_scriptingReplaceObjectAtIndex:withObjects:inValueForKey:", + "_setMouseTrackingForCell:", + "bufferDestination", + "_mostCompatibleCharset:", + "relativeLineToPoint:", + "findCombinationForLetter:accent:", + "signUpURLWithApplicationID:", + "_sendDelegateWriteIndexes:toPasteboard:", + "_sizeToFitColumn:withEvent:", + "convertViewRectToImageRect:", + "_setSinglePageScrolling:", + "compositionPickerView:performDragOperationOnComposition:sender:", + "setPreviewState:", + "setAttachment:", + "removeExisitingSyncSchedule", + "scrollWheelDelegate:", + "setVerticalPagination:", + NULL, + "setNumberOfSelectedItems:", + "_createScrollViewAndWindow", + "_web_isJavaScriptURL", + "_regenerateFormatter", + "encodeColumns", + "initWithPeople:parentGroup:addressBook:", + "initWithNotificationObject:", + "memberOfInputImage:", + "setPartialStringValidationEnabled:", + "mountedLocalVolumePaths", + "setFormattingDictionary:", + NULL, + "_validRememberedEditingFirstResponder", + "minimalSizeForText", + "beginDocument", + "_imageWithProgrammaticEffectsWithCompositeName:", + "bufferColorSpace", + NULL, + "initWithScope:", + "getRow:column:forPoint:", + "drawArrowedIndeterminateInteriorWithFrame:inView:", + "setInsertionPointColor:", + "firstRectForCharacterRange:actualRange:", + "tokenTextView:writeSelectionToPasteboard:type:", + "_centeredScrollRectToVisible:forceCenter:", + NULL, + "loadActions", + "mergeAttributesInto:", + "_configurationAutosaveName", + "_freeNonEssentialCaches", + "stopDelayedShowcase", + "_typographicLeading", + "canInitWithDataReference:", + "initWithAttributes:error:", + "textView:clickedOnCell:inRect:atIndex:", + "binderClassesForObject:", + "_clockAndCalendarTrackMouse:inRect:ofView:untilMouseUp:", + "markRecordWithGroupSubscription:", + "loadComposition:options:stateOK:", + "_collectItemRectsForLabels:count:inBounds:", + "rows", + "_old_initWithCoder_NSTableColumn:", + "fastMipmapItemForSize:forOpenGL:useMinimumQualityThreshold:", + "_dotMacEmailSigningUsage", + "textContainer", + "cacheMiniwindowTitle:guess:", + "invalidateLayoutForCharacterRange:actualCharacterRange:", + "removeUID:", + "_createPlusButtonIsRequired", + "setTextBlocks:", + "createTrustWithCertificates:policy:trust:", + "IMAVManagerStateChangedNotification", + "setSegmentSize:", + "getSavedNumVisibleRows:", + "fieldType", + "initWithDragInfo:tableView:completion:andRow:", + "_reducedSubpredicates:", + "printOperationWithSettings:error:", + "moveDownAndModifySelection:", + "topBorder", + "_iconRef", + "getCharacters:", + "_oldFirstResponderBeforeBecoming", + "initWithChar:", + "_setHasSeenRightToLeft:", + "_copyFlattenedPath", + "_insertionCharacterIndexForDrag:", + "initWithBitmap:rowBytes:bounds:format:", + "_shouldUpdateWindowFrame", + "_threadedImportTipCards", + "CTM", + "dateWithNaturalLanguageString:", + "delayedProcessGetInfoButtonClick:", + "_autoscrollDate", + "setZoomFactorY:", + "resourceBundles", + NULL, + NULL, + "initializeMaterialStructure:", + NULL, + "_fullCacheUpdateRecursive:intoRow:withIndentation:", + "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:reuseExistingTrackingNum:", + "_lineFragmentDescription", + "removeDescriptorAtIndex:", + "trackEnumeratorWithMovie:", + "isNewPerson:", + "stringsByAppendingPaths:", + "deleteWordBackward:", + "_contextByfeContext:", + "setDynamicDepthLimit:", + "inputController", + "_compositeImage", + "setShowIdentityBadge:", + NULL, + "invokeServiceIn:msg:pb:userData:menu:remoteServices:", + "discardEditing", + "currencyGroupingSeparator", + "attributeColumns", + "QCImageKernelJavaScriptROIHandler:destRect:userInfo:", + "editingIndex", + "dismissWindow:", + "setShadowBlurRadius:", + "doIt", + NULL, + "_defaultProgressIndicatorColor", + "internCString:pointer:", + "drawSelectionArea:", + "initWithUIController:", + "newWithPath:prepend:attributes:cross:", + "setWidth:height:", + "abortEditing", + "_preferFilter", + "resetFormExcludingFields:", + "_isAnimating", + "vendorPointingDeviceType", + "_queryAccountForKey:synchronousFlag:delegate:", + "setShowsTrustButton:", + "_syncToChangedToolbar:itemRemoved:", + "__oldnf_containsString:", + "_insertDigit:", + "_addItemsInMenu:toTable:recursively:", + "_blankEvent:kind:", + "_parserableCollectionDescription:", + "_codeSigningAppleUsage", + "setNames:", + NULL, + NULL, + "imageWithData:", + "setPullsDown:", + "_makeCursors", + "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:", + "PDFViewPerformPrint:", + "addClient:", + "_noLockForThread:", + "_dateRecorded", + "fetchedAddressBookSourceWithAddressBook:", + "previewView:didLoadPreviewForURL:", + "_prepPanel:showGroup:", + NULL, + "windowDidOrderOffScreen:", + NULL, + "_retainedObjectWithID:", + "showAsPerson:", + "_setScriptErrorExpectedType:", + "browser:validateDrop:proposedRow:column:dropOperation:", + "replacementObjectForArchiver:", + "setInitialToolTipDelay:", + "_undoManagerCheckpoint:", + "_setAnimationTargetRect:", + "_processPerformsInArray:", + "openFirstDrawer:", + "setSystemID:", + NULL, + "releaseCalendarSpecificResources", + NULL, + "setHeightTracksTextView:", + "rangeOfString:", + "_rowHeightStorageUpdateForInsertedRows:atIndex:", + "_windowFileButtonSpacingWidth", + "handleRollOverSelection:", + NULL, + "setShowsGetInfoButton:", + "_generateProperties", + NULL, + "snapsToDefault", + "selectedGRL", + "drawGlyphsForGlyphRange:atPoint:", + "removeIndex:", + "_previousKeyWindow", + "minColumnWidth", + "setMouseDownLocation:", + "issueCommandWithActionName:", + "_repeatTime", + "_finishInitialization", + "_contextImplByfeContext:", + "shouldStartEditingOnDoubleClick:key:", + "_valueForInputPort:", + "_invalidateFocus", + "hostName", + "keyForType:", + "_addQuoteForElement:opening:level:", + "_undoableSetCropPRSWithDisplay:", + "UIElementValue", + NULL, + "_oldValueForKeyPath:", + "_isTabEnabled", + "stripReconfiguringGRLs:", + "_drawThemeBackground", + "selectedFontChangedTo:", + "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:", + "setPerMillSymbol:", + NULL, + "deserializeNewData", + "selectedImageFrame", + "turnObject:intoFaultWithContext:", + "_discardCursorRectsForView:", + NULL, + "insertRows:atIndex:", + "handleFetchRequest:", + "clearCurrentValues", + "usageInPreview", + "_viewSurfaceWillGoAway:", + "setDeferSync:", + "accessibilityInsertionPointLineNumber", + "setPaddingCharacter:", + "iconView:shouldTypeSelectForEvent:withCurrentSearchString:", + NULL, + "setDepthLimit:", + "nextText", + "reflectNewPageOn:", + "objectIDFactoryForSQLEntity:", + "initWithContainerClassID:key:proxyClass:", + "showAsCompany:", + "_removeTrackingRectsForView:stopTimerIfNecessary:", + "imageBrowser:titleOfCellAtIndex:didBeginEditing:", + "boundingBoxYAtRow:", + "initWithKey:appleEventCode:type:isOptional:presentableDescription:nameOrNames:", + "_nodeFromObject:objectIDMap:", + "setItemSupportedByiPhoto:", + "orderOutToolTip", + "horizontalCornerRadius", + "_editor:didCommit:withContext:", + "setDefaultFlatness:", + "toolTipColor", + "_postNetworkChangeNotification:", + "_hasSheetFactor:", + "control:textView:completions:forPartialWordRange:", + "classWithStore:andEntity:", + "_installRootMetricsHandler", + "framesProvider", + "_setDataSource:", + "domainOfDefinition", + "numberOfOperations", + "setLimit:", + "quiesce", + "stateImageRectForBounds:", + "_nodePreviewHelper", + "initWithDocumentURLs:controller:", + "deserializeNewPList", + "certSerialNumberIndex", + "_setConfigurationUsingName:domain:", + "addObject:objectIDMap:", + "containsWindowIdentifier:", + "_pointForTopOfBeginningOfCharRange:", + "indexSheetDidActivate:", + "_setUIConstraints:", + "_drawerIsOpen", + "deleteSelectedAnnotations", + "drawColor", + "windowDidEnableToolTipCreationAndDisplay", + "_recursiveOrderFrontSurfacesForNonHiddenViews", + "_setUpFoundationCoercions", + "applicationIconImage", + "webView", + "abProperURLWithString:", + "drawNormalInteriorWithFrame:inView:", + "_stopRendering:", + "newInsertedObjectForEntity:", + "_setRunningOperation:", + "waitUntilExit", + "textView:writablePasteboardTypesForCell:atIndex:", + "_crayonRowBelowRow:", + "autosaveExpandedItems", + "loadTextChars", + "_registerForAutosaveNotification", + "setSelectedGroup:", + "rulerMarkersForTextView:paragraphStyle:ruler:", + "prepareSelectStatementWithFetchRequest:ignoreInheritance:", + "setHorizontalLineScroll:", + "updateContext", + "removeAttribute:range:", + "textDidEndEditing:", + "supportsMutableFBENode", + NULL, + NULL, + "expandGroup:", + "ikInMainLoopWait:", + "_resizePostingDisabled", + "tokenFieldCell:readFromPasteboard:", + "_drawsOutsideBBox", + "updateCellOrControl:forMinValue:", + "_parseParagraphAttributesFromElement:attributes:", + "selectUp", + "dictionaryRepresentation", + "setCells:", + "containsPort:forMode:", + "SCTArrayByApplyingFunction:context:", + "stopObservingModelObjectsAtReferenceIndexes:", + "_releaseNodePreviewHelper", + "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:forCharacterRange:", + "_compatibility_seemsToBeVertical", + "_connectGraphUnitsForAudioOutputConnection:error:", + "computeRectOfRow:cacheHint:", + "imageWithCGLayer:options:", + "setFinalFrame:", + "_executePerformAction", + "comboBox:objectValueForItemAtIndex:", + "versionNumber", + "_handleFileListDidReloadChildrenForNode:", + "removeKnobLayer", + "cell:needInitialDataForKey:", + "_setHasActiveAppearance:", + NULL, + "enumeratorDescriptions", + "abortZoomPrefetchTask", + "configureForCanClickDisabledFiles:", + "draggingSequenceNumber", + "filterPasteboardWithPasteboard:", + "_separatorHeight", + "_traverseNode:depth:embedded:", + "setCharacterIndex:forGlyphAtIndex:", + "_terminateSendShould:", + "contentsOfDirectoryAtPath:error:", + "addAnimationGroup:", + "lockFilePath", + "setBoolParameterValue:to:inResolutionData:", + "parseCert:", + "_postFocusChangedNotification", + "setGhostCellCountOnTheLeft:", + "_parseDocumentAttributes", + "setWriteDefaultValue:", + "clockProviderNodeForConnection:", + "initWithDomains:Categories:Objects:Manager:", + "runBeforeDate:", + "clearCustomImage:", + "setShouldUpdateMarkers:", + "_animate:", + "URLHandleResourceDidFinishLoading:", + "_stringByReplacingChar:withChar:inString:", + "newReferenceObjectForManagedObject:", + NULL, + "isSourceType:", + "_printDataSourceWarning", + "browserDatasourceChanged", + "_releaseRFC822NamesArray", + "_paletteLabel", + NULL, + "_storeExpandedFrameSize", + "_000104", + "doCommandBySelector:commandDictionary:client:", + "setTooltipDelay:", + "largeImageData", + "defaultValueForParameter:", + "horizontalRulerView", + "_canUseTiledBackingLayer", + "hotspotEnumeratorWithNode:", + NULL, + NULL, + "createAlternateNameForPerson:", + NULL, + "calculateSetSize:::", + "choiceMenu:", + "sourceEntityName", + "exceptionRememberingObject:key:", + "initWithContainerClassID:key:methods:proxyClass:", + "rightMargin", + "_decodeDownloadData:dataForkData:resourceForkData:", + "mouseDownCanMoveWindow", + NULL, + NULL, + "imageRepsWithData:", + "sqlType", + "iconView:didClickOnDisabledCell:", + "addCertificate:toKeychain:", + "_trackingHandlerRef", + "_initWithContentsOfURL:ofType:", + NULL, + "remove:", + "startMagnifying:", + "didAccessValueForKey:", + NULL, + "setZoomsOnSelection:", + "_addColumnSubviewAndAnimateIfNecessary:", + "rulerView:didAddMarker:", + "createTablesForEntities:", + "drawers", + "_deactivateDocumentPreview:", + "visualizePatchExecution", + "_okClicked:", + NULL, + "_hideTooltip", + "_itemsFromRowsWithIndexes:", + "_cancelEditOnMouseUp", + "drawMessageInVisibleRect:", + "_fileButtonOrigin", + "_updateMenuItemIcon:", + "isSelectable", + "animateScrolling", + "addFieldNameToDictionaryRef:", + "_generateManyToManySQLStringInContext:", + NULL, + "_updatePanelTitle", + "_enableLayout", + NULL, + "timeIntervalSince1970", + "_actualPreviewType", + "subtractRegion:", + "_invitationFromContentsOfFile:", + "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:", + "_filterPredicate", + "pixelFormatWithName:", + "_drawRulers:", + "_willChangeValuesForKeys:", + "insertItemViewer:atIndex:", + "binaryAttributes", + "setAutoPlay:", + "lastFilterElement", + "greenReconstruction:edges:phase:scale1:scale2:decisionImage:votingImage:", + "boundsRotation", + "privateVCardEnabled", + "startSlideshowWithDocumentURLs:fromView:controller:itemIndex:", + "_untitledNumberForDocument:", + "_findDictOrBitmapSetNamed:", + "setTransparent:", + "foreignEntityKeyForSlot:", + "purgeKeyFrameCache", + "process:", + "principalIDWithName:andOwner:", + "_canonicalRequestForRequest:allowCF:", + "_switchImage", + "runEditorForTimeLine:atKeyFrame:forTimeLine:controlType:inView:atPoint:", + "initWithOptionFlags:maxSize:maxAge:", + "user", + "_descriptor", + "addBinder:", + "paragraphGlyphRange", + "initPropFindWithSession:withDepth:URI:lookingForProps:", + "setTitleCell:", + "setCell:", + NULL, + "indexDataSourceArray:", + "componentsToDisplayForPath:", + NULL, + "_fetchExpandedState", + "connectO3Console:", + "setElementName:", + "scrollView", + "indexPathWithIndexes:length:", + "setActionName:", + "addWindowController:", + "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:", + "_findCoercerFromClass:toClass:", + "loadInForeground", + "initWithFrame:styleMask:owner:", + "descriptionForDebugger", + "selectNextKeyView:", + "_cycleWindowsBackwards:", + "baseSpecifier", + NULL, + NULL, + "_parseOpenGuide", + "_getValue:forKey:", + "_recursiveWindowDidEnableToolTipCreationAndDisplay", + "_validateExtrasButton:", + "setFrameUsingName:force:", + "openGLRenderingLockedForUnsynchronizedOperation", + "_setCertSigningUsage:", + "setPlugin:enabled:withAuthorization:", + "_runLoopThread:", + "enumeratorOfInputBottomLineParams", + "mipmapSize", + "_keysForPMKeys:", + NULL, + "initWithRootAttribute:", + "changedGroups:", + "getThreadResult", + "_toOneRange", + "notifySelectionDidChange", + "abDecodeBase64", + "_setAltContents:", + "prepareBetween:", + "setImageValue:", + "_drawBackgroundForGlyphRange:atPoint:parameters:", + "GDBDumpCursorRects", + "_newUniqueIdForTable:", + NULL, + "initWithCell:", + "setMinContentSize:", + "initWithString:attributes:", + "convertPoint:fromView:", + "refreshRow:", + "takeIntValueFrom:", + "_removeFileAtPath:handler:shouldDeleteFork:", + "isSynchronous", + "postsFrameChangedNotifications", + "phoneticMiddleName", + "indexOf:::", + NULL, + "allowsEditingMultipleValuesSelection", + "_prefersToBeShown", + "createMinimalSharedContext", + "_trackSelectedItemMenu", + "notifyCellsForChanges:", + "_allowAnimated_setFrameOrigin:", + "pixelFormatRGBAf", + "setThumbnailSize:", + "draggingSourceOperationMask", + "safeCloseReadStream:forceClose:", + "expiresDate", + "setAppearanceStyle:", + "setAllContextsSynchronized:", + "_boundingRectForGlyphRange:inTextContainer:fast:fullLineRectsOnly:", + "initWithEntity:andUUIDString:", + "_loadShaders:", + "_unformattedAttributedStringValue:", + "flatten:fromRect:format:colorSpace:", + "hideAddPeopleButton", + NULL, + "movieControllerBounds", + "_discardValidateAndCommitValue:", + "representations", + "_saveAppSmartFolderQueryNode:", + "sharedCoercionHandler", + "allowsColumnSelection", + "_shouldUseParensWithDescription", + "replaceLayoutManager:", + "parentRowForRow:", + "_computedStyleForElement:", + "recoveryAttempter", + "_multipleValuesObjectAtIndex:", + "setShowZoomMinMax:", + "invalidateSelectionBounds:", + "initCopyWithSession:sourceURI:destinationURI:token:", + "connection:willCacheResponse:", + "_web_URLByRemovingUserAndQueryAndFragment_nowarn", + "replacementObjectForCoder:", + "_performActivationClickWithShiftDown:", + NULL, + "dateWithNaturalLanguageString:locale:", + "matchingFontDescriptorsWithMandatoryKeys:", + "performSelector:object:afterDelay:", + "setValuesForKeysWithDictionary:", + "invokeSelector:withArguments:forBinding:object:", + "nextItemToUnbind", + "_scheduleWindow:forBatchOrdering:relativeTo:", + "_initWithSuiteName:commandName:implDeclaration:presoDeclaration:", + "window:didChangeToVisibleState:", + "setBorderColor:forEdge:", + "initWithSockaddrBuffer:", + "_drawerRightOffset", + "setVolatileDomain:forName:", + "registerThread", + NULL, + "_commitEditingDiscardEditingCallback:", + "setToolTipForView:rect:owner:userData:", + "_rfc822Name", + "setPortMaxValue:", + "rightMouseDraggedDelegate:", + "initWithConverters:softwareOnly:sourceTarget:sourceFormat:sourceColorSpace:destinationTarget:destinationFormat:destinationColorSpace:transformationType:", + "_secondsFromGMTForAbsoluteTime:", + NULL, + "certStatusFromDomainTrustSettings:isMixed:", + "drawCommentIcon:inContext:", + "_handleCurrentDirectoryNodeChanged", + "unselectedImage", + "moveToEndOfDocumentAndModifySelection:", + "inactiveColor", + "demosaic0:pattern:scale1:scale2:phase:redBlueSwap:hsp:hspe:green:gdec:gvdec:emask:sgreen:bhse:red:blue:", + "_addGrammarAttributesForDetailRange:detail:", + "savePDF:", + "showHSBView:", + "saveNameColumnWidth", + "isDeleted", + NULL, + "_dynamicToolTipManager", + "stopTheater", + "pauseAnimation:", + "imageFlow:writeItemsAtIndexes:toPasteboard:", + "croppedImageWithSize:", + "_getAllAttributesIncludeValues:", + NULL, + "tearOffTitlebarHighlightColor", + "registerToNotifications", + "initWithCGContext:options:", + "gel:over:opacity:", + "lowerBaseline:", + "pictureTakerCommonInit", + "_drawThemeContents:highlighted:inView:", + "_clearCachedTransientStateOfObject:", + "releaseGState", + "awakeFromNib", + "serviceConnectionWithName:rootObject:usingNameServer:", + "showValue:inObject:", + "level", + NULL, + "_abCompareWithinIntervalFromToday:", + "_isAnimatingScroll", + "extractStringFromLocalizedStringData:", + "_keyEquivalentSizeWithFont:", + "inlinePreviewURL", + "fogAtLocation:", + "_minYWindowBorderHeight:", + "setCanSelectHiddenExtension:", + "setSavedQueryData:", + NULL, + "indicesOfObjectsByEvaluatingObjectSpecifier:", + "addressBookCoreDataDatabaseFileName", + "_invokeJavaOverrideForSelector:withErrorAndOtherArguments:", + "canHighlightNode:", + "titleAtIndexes:", + "isHorizontallyResizable", + "JSContext", + "handleHelpQuery:", + "imageCropView:mouseUp:", + "closestTickMarkValueToValue:", + "initWithLeftExpression:rightExpression:modifier:type:options:", + "stopModalWithCode:", + "track", + "_requestIsCacheEquivalent:toRequest:allowCF:", + "hidesSharedSection", + "setReceiversSpecifier:", + "__image", + "flush", + "destinationURLForMigration:sourceURL:sourceMetadata:error:", + "rowForObjectID:after:", + "performSelector:onObject:withObject:waitUntilDone:", + "_beginCustomizationMode", + "__oldnf_stringForObjectValue:", + "changedMember:", + "_userSelectTextOfPreviousCell", + "smartInsertBeforeStringForString:replacingRange:", + "initWithName:reason:userInfo:", + "prototype", + "addComponent:", + "_nodesToDisplayForNodeInfo:", + NULL, + "parseRelativeDistinguishedName:indent:", + "abFileLock", + "_recentDocumentRecordsKeyForMenu:", + "_flattenMenuItem:", + "download:willSendRequest:redirectResponse:", + "_updateRenderFormat:", + NULL, + "_rangeToPrefetch", + "swapGlyph:withIndex:", + "initWithDictionary:forDocument:", + "tableRow", + "imageBrowser:titleOfCellAtIndex:shouldBeginEditing:", + NULL, + "setSimpleCommandsArray:", + "subarrayWithRange:", + "firstVisibleColumn", + "bottomBorder", + NULL, + NULL, + "SCTViewIdentifier", + "setInputSourceID:", + NULL, + "_restoreDefaultSettingsForSaveMode", + "startQuery", + "setSelectionKeys:", + "handleControlEvent:callRef:", + "initWithDynamicMenuItemDictionary:", + "_controlShadowColor", + NULL, + "scrollViewDidTile", + "_positionSheetAndDisplay:", + "draggedColumn", + "_availableChannelFromRegisteredChannels", + "_loadSystemScreenColorList", + "_initWithIdentifiers:values:labels:primaryIdentifier:", + "explicitURLOfSlideshowItemAtIndex:", + "acceptsDrop", + "destroyLayer", + "removeTrack:", + NULL, + "destinationType", + "_removeDeclaredKey:", + "isHighlighted", + NULL, + "_checkMiniMode:", + "sharedCertificatePanel", + "inputWhiteParamsAtIndexes:", + "parentCrayonRow", + "containsAttachments", + "initWithDocument:forStore:", + NULL, + "_imageRepsWithData:fileType:hfsType:expandImageContentNow:", + "_changedRowArray:withOldRowArray:forParent:", + "_setupDefaultTextViewContent", + "removeCachesForUID:", + NULL, + "descriptorWithInt32:", + "readablePasteboardTypes", + "applicationIcon", + "initWithInvocation:conversation:sequence:importedObjects:connection:", + "addSpecialGStateView:", + "_forceDisconnectOnError", + "_userActionForEvent:", + "pickerViewCommonInit", + "_commandFromEvent:", + "initialValueForKey:forCell:", + "setAppearance:forType:", + "_stateOK", + "shadowGroup", + "builtInPlugInsPath", + "_shadowFlags", + "didPushRenderState:", + "connectionUnitInputNumberForConnection:", + "valueInOrderedWindowsWithUniqueID:", + NULL, + "borderWidth", + NULL, + "scrollVerticalBy:animate:", + "updateSpellingPanelWithGrammarString:detail:", + "_continueMovementTracking", + "setTextContainerInset:", + "_applyAudioChannelMapFromAttributes", + NULL, + "isEditingWithObject:", + "getParagraphStart:end:contentsEnd:forRange:", + "spellServer:suggestCompletionsForPartialWordRange:inString:language:", + "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:", + "layer", + "initWithOptions:andTimestamp:", + "_colorForNode:property:", + "_acceptsMarkedText", + "saveable", + "netServiceWillResolve:", + "abbreviation", + "makeDocumentWithContentsOfFile:ofType:", + "_updateUndoTransactionForThisEvent:withDeletions:withUpdates:", + "allowsEmptySelection", + "dropFirstComponent:", + "cameraAttached", + "transformOutline:by:", + "updateEditButton:", + "setSelectionIndexPaths:", + "accessibilityMinValueAttribute", + "setCriteriaSlice:forRuleEditer:withRootMenuItem:atRowIndex:", + "_arrowScrollingCallback", + "accessibilityIsSelectedTextSettable", + NULL, + "initWithPointerFunctions:capacity:", + NULL, + "stringValueOfProperty:", + "_defaultHelpAnchor", + "invalidateDisplayForGlyphRange:", + "setShowFlare:", + "documentPreviewViewForPreview:forView:", + "setPrimitiveUniqueId:", + "setURLs:", + "_drawAsMultiClippedContentInRect:", + "_updateInstancesForDatePreferencesChange", + "_flushNotificationQueue", + "textColor", + "_newSlice", + "vertBlur8ROI:destRect:", + NULL, + "resetOperation", + "_filtersUnderbars", + "localizedCompressionOptionsSummary", + "fullFrame", + "searchForBrowsableDomains", + "setController:retainController:", + "serializeString:", + "phoneticFieldsPresent", + "resetCursorRects", + "flattenMipmapItemIfNeeded:domain:", + NULL, + "navNodeWithSavedQueryData:title:", + "_attributes1ForPageOffset:entryOffset:baseAttributes:", + "initWithCString:", + "setBoxType:", + "inPalette", + "abPublicRecordIsGone:", + NULL, + "_forceOriginalFontBaseline", + "activeApplication", + "initWithUniqueID:connectionID:IOType:", + "startZoomPrefetchTask", + "_allItems", + "colorWithCGColor:", + "configButton:action:title:", + "_updateLayerHiddenStateFromView", + "_addRevealoverIfNecessaryForCell:cellRect:", + "accessibilitySetFocus:forChild:", + NULL, + "selectLine:", + NULL, + "_parseReleaseTwoList:", + "imageVersion", + "tightenThresholdForTruncation", + "_postNotificationNamed:", + NULL, + "sizingConstraints", + "_restoreCursor", + "currentAnalysisDidNotCreateNewWindow:", + "becameVisible", + "updateSelectionListFromSelectionFrame", + "stringsFromSelection", + "addCropLayer:", + "_updateDragInsertion:", + "_deselectsWhenMouseLeavesDuringDrag", + "_setArguments:", + "prefersSizeToFit", + NULL, + "sharedScriptSuiteRegistry", + "_pauseLayerTreeRenderer", + "setRenderingMode:", + "_indexOfDividerForLocation:andReturnFrame:", + "setPreviewNode:", + "DTDKind", + "_setPrefix:", + "createSnapshotImageOfType:withColorSpace:", + "terminate", + "shouldProvideSortDescriptor:optionsAdvertisingOnly:", + "arrayWithIndexes:", + "_clearTexture", + "_continuousScroll", + "initWithPartCode:parent:", + "_fillInValuesInExtension:isCACertBeingCreated:extensionIsPresent:", + "_addPlaceholderOptionValue:isDefault:toArray:withKey:binder:binding:", + NULL, + "setEditable:", + NULL, + "lockToken", + "addClient:selector:frequency:", + NULL, + "completedSpoolToFile", + "redNoiseReduction:pattern:radius:slope:", + "performChanges", + "_dispatchCallBackWithError:", + "addGRLsInGRLIndex:", + "textDidChange:", + NULL, + "intValueOfProperty:", + "keypathExpressionIsSafeLHSForIn:", + "_inputAtIndex:", + "doCrop:", + "_updateOptimizedDefaultValues", + "excludedKeys", + "_windowBorderThickness:", + "_invalidateGStatesForTree", + "binaryCollator", + "initWithSize:forSpaceItem:", + "setCurrentSearchCol:", + "sqlCore", + "createRotatedImageByDegrees:", + "synchronizeTitleAndSelectedItem", + "decodeIntForKey:", + "formattingStringsFilename", + "pixelsWide", + "setEndWhitespace:", + NULL, + "_userCommonName", + NULL, + "openGLEnabled", + "hostNameResolved:", + "initWithComposition:", + "parseBERLength:lenlen:", + NULL, + "useHighlightEffectForState:", + "_hideSheet:", + "_representedOjectsForString:andAttributedString:range:", + NULL, + "setPreloadHint:", + NULL, + "isScreenFont", + "setPixelFormat:", + "_availableFontSetNames", + "backing", + "initWithMembers:forKeys:count:", + "credentials", + "_setInverseManyToMany:", + "_importGroups:", + "directoriesController", + "_charRangeIsHighlightOptimizable:fromOldCharRange:", + "markWithTag:", + "_propertyContainerClassDescriptionFromDictionaryType:inSuite:", + "frameNeedsDisplay", + "_drawResizeIndicators:", + "alphaRange", + "X", + "componentViewerROI:destRect:", + "nts_RestoreFromMetaData", + "_old_encodeWithCoder_NSTableHeaderView:", + "typesetter", + "predicateFormat", + "captureOutput:didOutputSampleBuffer:fromConnection:", + "_autoreopenDocuments", + "_setupAnimationInfo", + "outlineView:didExpandItem:", + "_inputMethodInfoDictionary", + "copyBestResource:", + "setProtocolForProxy:", + NULL, + "stopObservingNode", + NULL, + "orderingIndex", + "loadSoundWithName:", + "entityForEntityDescription:", + "onAnimationTimer", + "incrSize:", + "XMLFormatData", + "locale", + "labelForSegment:", + "isDirect", + "dataRepresentationWithOptions:", + "_classForPersistentStoreAtURL:", + "getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:", + "_okayToHitTest", + "clearAssociationTables", + "resetBytesInRange:", + "downloadDidBegin:", + "stopProfiling", + "_loadDataFromCGImage:useImageSource:imageNumber:", + "toolTipLabel", + "initWithFlowView:", + "acceptableDragTypes", + "isValidTitleString:forIndex:", + "_createInlinePreviewIfNeeded", + "initWithCell:atIndex:inBrowser:", + "_setAllowsMultipleRows:", + "recursive", + "_selectedNodesWithDirectories:", + "menuKeyEquivalentTarget:forEvent:", + "sharedFilterListProvider", + "drawInCGLContext:pixelFormat:forLayerTime:displayTime:", + "_incrementPage:", + NULL, + "descriptionsWithDeclarations:", + "isCoalescing", + "selectionChanged:", + "setToolMode:", + NULL, + "proceedWithImport:", + "setEmbedded:", + "addMarker:", + NULL, + "_encodeByte:", + "enableCustomAttributeFixing", + NULL, + "_NSNavFilePropertyCompareCaseInsenstive:", + "setGrammarCheckingEnabled:", + "printer", + "_notifyDelegate_WillAddItem:", + NULL, + "_drawMiniWindow:", + "commentURL", + "fieldDescriptionForKey:", + "setModificationDate:", + NULL, + "stringByReplacingPercentEscapesUsingEncoding:", + "application:printFiles:", + "wantsScrollWheelEvent:", + "_handleCancelledOperations:", + "_convertPersistentItem:", + "handleCloseScriptCommand:", + "startExecution:", + "setIsAButtonWhenNotProgressing:", + "_automateLiveResize", + "bezierMaskWithPath:", + "initFileURLWithPath:", + "currentChecksumForDirectory:", + "zoomValueRelativeToZoomRange:", + "clientView", + "setItem:forKnownAbsentKey:", + "_initWithfeKernel:", + "_activateWindows", + "_selectableItems", + "sharedPreviewView:didStartSharingWithPreviewPanel:", + "_iconView", + "_pageCount", + "isCaseInsensitiveLike:", + "_finalize_QCInterpolation", + "_enclosingMenuItem", + "_unlockRequestPostHandler:", + "editServerAction:", + NULL, + "managedObjectIDFromURIRepresentation:", + "resetSubrows", + NULL, + "_commonDealloc", + "_resetCurrentSearchRow", + "_save", + "setMetadata:forPersistentStoreOfType:URL:error:", + "commandClassName", + "_constructTreeForTemplate:", + "_setBaselineRenderingMode:", + "moveToBeginningOfLineAndModifySelection:", + NULL, + "networkNode", + "insertCustomLabel:", + "subresources", + "_pickUpMissingStuffFromNode:forEntity:", + "isTitle", + NULL, + "_addString:toEventRef:", + "_setInspectorController:", + "setParagraphSpacing:", + "_resizeFromEdge", + "whiteBackground", + "newDistantObjectWithCoder:", + "_isAutoPlay", + NULL, + "_queryString", + NULL, + "usePageLabelsChanged:", + "netServiceBrowser:didFindService:moreComing:", + "setVerticalRulerView:", + "initWithDescriptorType:data:", + "raiseCountUnderflowException", + "iconsForAnimationFilenames", + "isMembersPaneVisible", + "initWithRefCountedRunArray:", + "performZoom:", + "templateChanged", + "_imageNumber", + "frameOfOutlineCellAtRow:", + "_applicationWillLaunch:", + "populateCacheFromStream:data:", + "_abComparePrefixMatch:options:", + "setExecutionMode:", + "mutableBytes", + "accessibilityTopLevelUIElementAttributeValueHelper", + "setFontColor:", + "_explicitlyCannotInsert", + "timersForMode:", + "accessibilityChildForColumn:", + "preflightAndReturnError:", + "_delegateRespondsToWriteIndexes", + "setAutoresize:", + "pageScroll", + "insertObject:inSubNodesAtIndex:", + "_drawContentsAtRow:column:withCellFrame:", + "_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:", + "_hasJavaOverrideForInitializerSelector:", + "_resetGrid", + "setInternalState:", + "open:", + "parsePrivateKeyUsagePeriod:", + "_canGoIntoSelectedDirectoryAndTry:", + "outlineView:shouldTypeSelectForEvent:withCurrentSearchString:", + "_didImportMipmap:throughCopy:forDisplayedCell:index:mipmapItemIndex:firstTimeImported:flatten:", + "_layoutForData", + "decodeIntegerForKey:", + "outlineView:sortDescriptorsDidChange:", + "_outputAtIndex:", + NULL, + "type:conformsToType:", + "gizmoBoundingBoxForRadius:", + "saveImageNamed:andShowWarnings:", + "_orderOutHelpWindowAfterEventMask:", + "setFog:", + "setGraphNode:", + "setEventProc:", + "disableDeselect:", + "_accessibilityPressAction:", + "_syncTime", + "drawBackground:", + "cacheUsedByProxyJpegData", + "analyzeNextGRL:", + "_setTabState:", + "close:", + "_accessibilitySizeOfChild:", + "_setInsertionPointDisabled:", + NULL, + "newCountStatementWithFetchRequest:", + "initWithFunction:withArgument:andIsDetached:", + "colorWithPatternImage:", + "refreshDisplayedCardAndReloadImage:", + NULL, + "_usesSplitCursor", + "_knownPrimaryKeyForObject:", + NULL, + "initWithModelObserver:availableModelAndProxyKeys:", + "reconcileSelfToSuiteRegistry:", + "_ql_allowsNetworkAccessForPreview:", + "setAttributeMappings:", + "addToCurrentState:", + "flipHorizontal:", + "encryptWithDelegate:", + "_minimizeOnDoubleClickChanged", + "CA_pathExtension:", + "_setInScaledWindow:", + "fireWillStopAnimating", + "setToolTipWithOwner:forView:cell:", + "notPredicateOperator", + "_minSizeForDrawers", + "_setNeedsViewerLayout:itemViewers:", + "setStandalone:", + NULL, + "removeAllColumnFilters", + "inverted", + "_keyAlgorithm", + "releaseWireID:count:", + "setPlugInsEnabled:", + "_unregisterToolbarInstance:", + "setTransparentBackground:", + "_initWithAddressInfo:", + "makeCurrentContext", + "windowDidEndSheet:", + "performCustomValidationForEntityMapping:manager:error:", + NULL, + "isResizable", + "_handleGotoFinishedWithResult:", + "imageablePageBounds", + "_authenticationChallengeForCFAuthChallenge:sender:", + "minusHashTable:", + "_nextTypeSelectMatchFromIndex:toIndex:forString:", + "_updateObject:", + "lastFileListMode", + "imageByCroppingToRegion:", + "textView:completions:forPartialWordRange:", + "_generateSQLType1InContext:", + "removeObserver:forKeyPath:", + "sharedToolTipStringDrawingLayoutManager", + "updateFavoritesUI", + "enqueueToggleWritingOperationWithOutputFileURL:bufferDestination:scheduledForTime:cancelAllOperations:", + "_usesUserKeyEquivalent", + "overwriteAlertDidEnd:returnCode:contextInfo:", + "reinsertRecord:inSortedList:", + "_createImageBufferFromImageBuffer:withFormat:target:transformation:bounds:colorSpace:options:", + "performSelectorOnMainThread:withObject:waitUntilDone:", + "unmarkText", + "parseSource:callback:userInfo:", + "invalidateInputImage", + "_initWithRequest:delegate:usesCache:maxContentLength:startImmediately:", + "setStringForIndexing:", + "customPropertyDefinitionsWithAddressBook:", + NULL, + "analyzeGRLsAndNotify:selector:", + "decodeQTTimeForKey:", + "bezierPathWithOvalInRect:", + "_countOfRowsStartingAtObject:", + "openGLLock", + "_computeCustomItemViewers", + NULL, + "findSelection:", + "initWithAudioStreamBasicDescription:channelLayout:magicCookie:", + "_buildSupportUnitsForGenericInputConnection:error:", + "setUnits:", + "previewWindowDidResizeFrame:", + "_iconFrameForCellFrameSize:", + "darkGrayColor", + "_downloadTextureWithBounds:usingPixelFormat:toAddress:bytesPerRow:", + "keyUp:inRect:ofView:", + "convertRectFromViewToDocument:", + "_imageToTitleHorizontalOffset", + "setIconSize:", + "draggedImageLocation", + "_loadAdvSearchController", + NULL, + "imageWithCGImage:", + "applicationWillBecomeActive:", + "menuForNode:view:", + "imagingModeForcedToVisualContext", + "sortUsingSelector:", + "initWithCGImage:options:", + "substringWithRange:", + "parameters", + "mainArgument", + "_entitiesByVersionHash", + "_copyPBufferToCGSurface", + "_isOrdered", + "_delegateWillDisplayCell:forColumn:row:", + NULL, + "addCell", + "_scriptingCountNonrecursively", + "accessibilitySetSelectedTextRangeAttribute:", + "_createNonNilMutableArrayValueWithSelector:", + "setShowsControlCharacters:", + "previewPanel:frameForDocumentURL:", + "_identities", + "foreignKeyColumns", + "_lightPortList", + "resolveFromContainer:", + "addJoinForToManyRelationship:sourcePath:destinationPath:", + "widthValueTypeForLayer:edge:", + "_resumeLayerTreeRenderingForUserSwitchIn:", + "columnAtPoint:", + "initWithEntryNames:dataProvider:options:", + "ISS_xmlStringWithBag:", + "noteDirectoryResultsSelectionChanged", + "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:", + "autoscrollCallBack", + "initWithProperty:label:key:value:searchPeople:comparison:", + NULL, + "_writeCallback:", + NULL, + "itemIdentifierForColorPicker:", + "_convertColor:toRed:green:blue:alpha:", + "_clientContextInfo", + "_lockFirstResponder", + "_downloadStarted", + "setAllowsLayoutAnimations:", + "_local:", + "_closeLoading:", + "tightBilateralAddROI:destRect:userInfo:", + "insertChild:", + "detach", + "_renewDAVLock", + "initWithUniqueID:deviceName:", + "setData:length:", + "_findWindowUsingCache:", + "initWithCStringNoCopy:length:freeWhenDone:", + "_keyboardFocusNeedsDisplayForColumn:row:", + NULL, + "_contentToFrameMinYHeight", + "cachedDateForEmail:", + "appendTemporaryField:andLabel:font:", + "interpretEventAsCommand:forClient:", + "addMappedKeysToDictionary:mappedEntities:mappedEntitiesMainKeys:entityWithValueConverter:valueWithEntityConverter:", + "_toggleSelectAnyValidResponderOverride", + "loadFiltersFromLibrary:filterArray:", + "boundsRectForTextBlock:glyphRange:", + "_doRunLoop", + "_infoFilePath", + "initLockWithURL:", + "stopAllTimersForSpeaking", + "_doPopupSearchString", + "_visibleAndCanBecomeKey", + "initWithSQLCore:", + "_initWithIconRef:includeThumbnail:", + "accessibilityFocusedAttribute", + "_saveQuerySheetDidEnd:returnCode:contextInfo:", + "_createStatusItemWindow", + "_titleForThumbnailLayer:", + "_removeTrackingRects:count:", + "authorizationViewCreatedAuthorization:", + "writeToFile:withAttributes:", + "_opString", + "mouseEnteredDelegate:", + NULL, + "convertPoint:toPage:", + "initWithWindowNibName:owner:", + "_resizeImage", + "setProperty:", + "isFileListOrderedAscending", + "parseNetscapeCertType:", + "toggleContinuousSpellChecking:", + "secondLineParagraphStyle", + "openglSupportsRenderingInBounds:", + "setVoice:", + "PDFDocumentPrintJobTitle:", + "initWithMutableAttributedString:", + "cellOrControlForObject:", + NULL, + NULL, + "initWithGlyph:forFont:baseString:", + "inputClientResignActive:", + NULL, + "shapeWindow", + "_hoverAreaIsSameAsLast:", + "initWithDocFormat:documentAttributes:", + "setSelectedResult:", + "qt_errorByAddingUserInfoEntriesFromDictionary:", + "initWithContentsOfFile:byReference:", + "editingBinderForControl:", + "prepareRenderer", + "setLocale:", + "_getKeys:forPropertyDescriptionKind:", + "stateVersionWithIdentifier:", + "volatileDomainNames", + "nextFreeIndex", + "_getServer", + "initWithDelegate:thumbnail:", + "abEntityKnowsKey:inManagedObjectContext:", + "_configureAsMainMenu", + "fieldDescriptionForAppleEventCode:", + "removeCacheNodeWithUID:withResolution:", + "setAppleUseCoreUI:", + "_isHighlightedIgnoringState", + "_postWindowNeedsDisplay", + "setNewPasswordField:", + "paragraphAttributesAtIndex:effectiveRange:inRange:", + "selectedThumbnail", + "clHandle", + "_updateSliceIndentationAtIndex:toIndentation:withIndexSet:", + "decodePortObject", + "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:", + "addLineToDictionaryRef:", + "vCardForGUIDs:", + "_installTrackingRects:insideList:userDataList:trackingNumList:count:", + "performActionForItem:", + "setupForNoMenuBar", + "setSelectionHighlightStyle:", + "setDoSelectGroup:", + NULL, + "specifier", + "coerceTextStorage:toData:", + "_computeFirstVisibleColumnRequireCompletelyVisible:", + "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:", + "data:", + "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:", + "syncMetaData:", + "configureForCanChooseDirectories:", + "_insertRecord:inSortedList:", + "removeThumbnailsAtIndex:count:", + "handleObservingRefresh:", + "blue", + "_inlinePreviewDidChangePage:", + "frame:resizedFromEdge:withDelta:", + "stealContentsFromPreviewView:", + "_compositionThread:", + "_cocoaErrorStringWithKind:variant:", + "_setKey:forPort:", + "_downloadDir:toPath:", + "_postNotificationName:", + "loadDataRepresentation:ofType:", + "addAdditionalActionsToDictionaryRef:", + "indexOfObject:", + "_clearValues", + "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:", + "_flushCachedObjects", + "patternImage", + "setInformationalAttributedString:", + "handleKeyUp:", + "clearTemporaryCache", + "_topMargin", + "_delayedClearShadow", + NULL, + "permutedPath:matchesUnder:at:", + "maxRecents", + "scanCharactersFromSet:intoString:", + "_stopAnimationWithoutChangingFrames", + "doneSendingPopUpAction:", + "initWithFileDescriptor:", + "windowDidDeminiaturize:", + "filterPredicate", + NULL, + "initWithTextTable:charIndex:text:layoutManager:containerWidth:collapseBorders:", + "observationInfo", + "_surfaceDidComeBack", + "matchesPresentableName:", + "scaleByX:Y:", + "portList", + "_releaseTrackingTag:", + "setPlaying:", + "_prepareForDefaultKeyLoopComputation", + "_setCAAdminEmailAddress:", + "setRelationshipMappings:", + "resetMeasurements:forInterpolatedResolutionData:", + "nodeForUID:forResolution:createIfNeeded:", + "_changedItem:toItem:inRow:", + "setShadow:", + "drawScroller:", + "trackKnob:withEvent:", + "kind", + "__oldnf_numberStringForValueObject:withBuffer:andNegativeFlag:", + "selectionForAll", + NULL, + "nextResponder", + "movePath:", + NULL, + "cancelCurrentCoachMark", + "_getBucketForSeekingToRow:", + "_allowAnimated_addSubview:positioned:relativeTo:", + "canRead", + NULL, + "_changeQNamePrefix:toPrefix:forURI:", + "tracksOfMediaType:", + "createSharedGWorldContext", + "_centerPoint", + "dispatch", + "importToPerson:", + "_setDefaultRedColor:", + "selectionFromPage:atCharacterIndex:toPage:atCharacterIndex:", + "isDeferred", + "initialize", + "_isJobActive:", + "dataReferenceWithReferenceToData:", + "_canSave", + "textDidCancelEditing", + "parseX509Name:setTitle:indent:", + "_plugIns", + "setAsMainCarbonMenuBar", + "outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch:", + "drawRect:", + "needsTimeControls", + "genericView", + "initWithPage:range:", + "_isNilExpression:", + "setPreferredEdge:", + "_NSNavDisplayNameCompare:caseSensitive:", + "_setNeedsDisplayForSortingChangeInColumn:", + "definition", + NULL, + "exitFullscreenWithEffect:frame:toPanel:", + "fillRoundedRect:radius:cacheIt:", + "fileExtensionsFromType:", + "_lineFragmentDescriptionForGlyphRange:includeGlyphLocations:", + "_setMultipleValue:forKey:atIndex:", + "_focusOnCache:creatingWithSizeInPixels:", + "getLineFragmentInsertionPointsForCharacterAtIndex:alternatePositions:inDisplayOrder:positions:characterIndexes:", + "prepareContent", + "drawWithBox:", + "getAttributesInNode:fromBuffer:listReference:count:", + "noFeedback", + "download:didFailWithError:", + "searchLabel", + "setValueTransformer:", + "setOpenGLTextureIsPremultiplied:", + "doFinishShow", + "attributedSubstringFromRange:replacingCharactersInRanges:numberOfRanges:withString:", + "_setKeyEquivalentMapIsDirty:", + "textMatchingPopUpFrame", + "allocateBatch:forEntity:count:", + NULL, + "removeLayer:", + "modelUniqueID", + "enqueuePauseOperationScheduledForTime:", + NULL, + "relatedNames", + "serialNumber", + NULL, + "isLessThan:", + "needsDisplayOnBoundsChange", + "renderingPixelFormat", + "_adjustSplitView", + NULL, + "validateFxAtIndex:", + "addEnumeration:", + "cancelButton:", + "newWithContentsOf:immutable:", + "newWithDictionary:", + "_isDrawingForDragImage", + "_addResult:", + NULL, + "setInputBackgroundImage:", + "daysInMonth:year:forDatePickerCell:", + "filterWithType:", + "initWithQTMovie:", + "_computeParams", + "affineROI:forRect:userInfo:", + "_keyWindow", + "__selectKeyFrame:timeLine:context:", + "initToData:error:", + NULL, + "initSyncList:", + NULL, + "abIsCompatibleWithRecord:", + "_crayons", + "md5WithTime:arguments:", + "addUniqueObjectsFromArray:", + "windowNibPath", + "updateCIFilter:slider:key:value:label:", + "setPixelsWide:", + "dataSourceItemForSlideshowThumbnail:", + "editDisplayedCard:", + "moveRecord:toAddressBook:", + "initWithName:object:userInfo:", + "unregisterDragTypesForWindow:", + NULL, + "_deactivateTrackingRectsForApplicationDeactivation", + "shadowDirtyRect", + "contentObjectKey", + "setDocumentRef:", + "_specifiedObjectTreeDepth", + "changeFileAttributes:atPath:", + NULL, + "_drawIBPreviewInRect:", + "doVerticalBoxPass:yOffset:count:factor:sums:", + NULL, + "_createAndRegisterUniqueContextForCGLContext:contextOwner:pixelFormat:formatOwner:colorSpace:options:", + "accessibilityColumnForChild:", + NULL, + NULL, + "storeKeyForDatabaseDataType:", + "_reactToDisplayChanged:resetScreens:", + "part:boundsWithFrame:", + "offset:by:", + "supportedRepresentationTypes", + NULL, + "_dateFromComponents:", + "performFileOperation:source:destination:files:tag:", + "appearance:", + "findSubscriptionWithRemoteLocation:", + "drawPreviewInteriorWithFrame:inView:", + "setHorizontal:", + "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:", + "initWithCapacity:", + "_sizeHeightBucket:withSize:toFitSize:", + "_draggingMarkerView", + "_clearAllTargetAnimations", + "createTextureBufferWithFormat:target:pixelsWide:pixelsHigh:options:", + "_minXWindowBorderWidth:", + "nts_SaveWithFileLock:", + "extendPowerOffBy:", + "createThumbnailFromNSImage:", + "selectedResolvedNodes", + "setDisabledWhenInactive:", + "_setStartPath:", + "_mergeChangesObjectUpdatesTrumpForObject:withRecord:", + "autosavedContentsFileURL", + "flushCachedData", + "scaleTo::", + "searchScope", + "patch", + "_changeAllDrawersKeyState", + "shadowBlurRadius", + "_contentToFrameMinXWidth", + "imageRepWithCGLayer:", + NULL, + "setDoubleAction:", + "readFromURL:options:documentAttributes:", + "highlight:withFrame:inView:", + "_coreUIImageWithBaseName:state:backgroundStyle:", + "resourceLoaderRunLoop", + "resizeSublayersWithOldSize:", + "_addMembersFrom:toUniqueArray:", + "createElementContent:", + "rangeContainerObject", + "includedKeys", + "_newAdapterForModel:", + "_coreUIDrawBackgroundForGroupRow:inRect:", + "_preEvaluate", + "applyCredentialsToRequest:", + "setHeaderCell:", + "setExtraLineFragmentRect:usedRect:textContainer:", + "userData", + "_setErrorExpectedTypeDescriptor:", + "hitTest:", + "testSelector", + "_hideQueryProgress", + "graphEditor", + NULL, + NULL, + "server", + "decodeData:", + "_defaultWritingDirection", + "updateProfileInfo", + "_convertersList", + "fileWrapperRepresentationOfType:", + NULL, + "setJoinSemantic:", + "accessibilityMainWindowAttribute", + "derotateContext", + "numberOfTickMarks", + "_abAddress:isSimilarToAddress:", + "tokenStyle", + "_releaseDelayShowNodeInfo", + "_saveMode", + "effectsIcon", + "loadRecipeOverrides:recalcPointers:", + "loadAndRegisterAllPlugIns", + "intersectsRegion:", + "allSizes", + "dstDraggingDepositedAtPoint:draggingInfo:", + "_updateMouseInside:", + "accessibilityPositionOfChild:", + "_setModified:", + "_filterResources:reset:", + "_selectObjectsAtIndexes:avoidsEmptySelection:sendObserverNotifications:forceUpdate:", + "mouseOnIcon", + "propagateFrameDirtyRects:", + "allowsNonSquareZooming", + "greenSpeed", + "_setMap:", + "initWithName:data:", + "_windowUpdate:", + "_createValuePrimitiveSetterWithContainerClassID:key:", + "border", + "boundsForConnection:", + "hasNoResults", + NULL, + "drawFromCenter:radius:toCenter:radius:options:", + "mouse:inRect:", + "setShowsPreviews:", + "_initWithTexture:size:params:", + "titleOfSelectedItem", + "removeSelectedTimeLine:", + NULL, + "sheetDidEnd:returnCode:contextInfo:", + "_readFontIntoRange:fromPasteboard:", + "equalsContentsOf:", + "_newShowColorsItem", + "_sendShouldTrackCell:forTableColumn:row:", + "fadeDuration", + "sourceConfiguration", + "_setContainerObservesTextViewFrameChanges:", + "scrollLineUp:", + "_setInteriorNextKeyView:", + "convertFont:toSize:", + "_invalidateCursorRectsForView:force:", + "addIndexesInRange:", + "mappedAndDecompressedIntoRAM", + "sharedSurfaceMode", + "saveNumVisibleRows", + "colorWithCalibratedRed:green:blue:alpha:", + "_filterAddedNotificationHandler:", + "persistentDomainForName:", + "_addRootColumnToFetch:", + "_compositionsWithIdentity:", + "_resumeInformation", + "initWithGLContext:glID:radius:strokeColor:fillColor:mode:lineWidth:", + "_activateHelpModeBasedOnEvent:", + "goToRect:onPage:", + "postsBoundsChangedNotifications", + "pk64", + "localObjects", + "_isDoingUnhide", + "_classDescriptionForName:suiteName:isValid:", + "initWithWindow:rect:", + "renderToBuffer:withBytesPerRow:pixelFormat:forBounds:", + "setFilterByName:", + NULL, + "shouldClearSearchWhenSwitchingTo:", + "observeKeyPathForBindingInfo:registerOrUnregister:object:", + NULL, + "stringValueForObject:", + "updateAppleMenu:", + "_setSigningIdentity:", + "emptyImage", + "findPixelFormat:withColorSpace:closestToFormats:", + NULL, + "drawKeyIcon:inContext:", + "_setPendingDeletion:", + "glyphInfoWithGlyphName:forFont:baseString:", + "_pointForPort:inNode:bounds:", + "initialValues", + "runModalForWindow:", + "_discardTrackingRects:count:", + "selectNone:", + "filepath", + "go", + "_loadNibFile:nameTable:withZone:ownerBundle:", + "coreUIDrawWithFrame:inView:", + NULL, + "setBordered:", + "addPropertiesAndTypes:withAddressBook:acquireLock:", + "mouseDragged:", + "_clockAndCalendarStopTracking:at:inView:mouseIsUp:", + "setSearchList:", + "colorSpace", + "_chooseSize:", + "fireNextCameraSequence", + "DOMDocument", + "observer", + "bindingsForObject:", + "externalNameForEntityName:", + NULL, + "enableDragNDrop", + "removeContextHelpForObject:", + "_setAutoscrollResponseMultiplier:", + "initWithCharactersNoCopy:length:freeWhenDone:", + "_createAuxData", + "_recurWithContext:chars:glyphs:stringBuffer:font:", + "connectionWithOwner:mediaType:formatDescription:attributes:", + "initCount:", + "_colorListNamed:forDeviceType:", + NULL, + "_scriptingAddObjectsFromArray:toValueForKey:", + "_shouldDrawSelectionIndicator", + "_resourceCount", + "decimalNumberWithMantissa:exponent:isNegative:", + "_restartEditingWithTextView:", + "_hasShadow", + "accessibilityIsMinimizedAttributeSettable", + NULL, + "zoomValueRelativeToZoomRange", + "reformatValueAtLocationInNumber:", + "initWithObjects:count:andFlags:", + "insertThumbnailsAtIndex:count:", + "heightOfInfoSpaceAtRow:", + "_disableToolTipCreationAndDisplay", + "setFormat:", + "countOfPublicRecordsForClass:withPredicate:addressBook:", + "_migrationContext", + "initWithContainerClassID:key:containerIsa:ivar:proxyClass:", + "_selectObjectsAtIndexPathsNoCopy:avoidsEmptySelection:sendObserverNotifications:", + "_attachmentFileWrapperDescription:", + "_mutatingNodes", + "setNext:", + "_setWantsToDestroyRealWindow:", + "setServicesProvider:", + NULL, + "_crayonWithColor:", + "_deselectRow:subrow:members:", + "sharedDVGrabber", + "parsePrintableBERSequence:label:indent:", + "videoPreviewConnection", + "retainedXmlInfoForRelationship:", + "_writeCharacterData", + "_validateTextColor:", + "lockMipmapAtIndex:", + "windowBackingLocation", + "removeObjectIdenticalTo:inRange:", + "_spellServers", + "fileOwnerAccountName", + "optLockKey", + NULL, + "setMixedStateImage:", + "roundedImageRectWithoutRotations", + "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:", + "_clearAudioAttributePropertyListeners", + "_findPreviousNextTab:loop:startingAtTabItem:", + "fileHandleForReadingAtPath:", + "_hasGradientBackground", + "_URLHasScheme:", + "windowDidResignMain:", + "_sslServerAuthUsage", + "orderFrontFontOptionsPanel:", + "_web_isFileURL", + "_updateSliceIndentations", + "setUsePrimarySourceListStyle:", + "stopCoalescing", + "doCommandBySelector:client:", + "maxTimeForControlType:keyFrame:", + "_removeEntities:fromConfiguration:", + "objectAtIndex:forDatabaseKey:", + NULL, + "_hasEditableCell", + "elementsForLocalName:URI:", + "getResolutionData:chopMetricsHoriz:vert:horizRight:vertBottom:chopType:", + "nts_SyncCount", + "restoreExpandedLayout", + "setShowsRollover:", + "_maintainCell", + "IBeamCursor", + "initWithRTF:documentAttributes:", + "isHomeNode", + "colorProfile", + "initImportAnimationWithIndexes:", + "unsignedIntegerValue", + "accessibilityActionDescription:", + "preferredLocalizations", + "serverExists:inServerList:", + NULL, + "_setCellFrame:", + "_dragConstraintsOfDividerAtIndex:", + "_setStoreInfo1:", + "_setTitle:ofColumn:", + "stopScrollingAnimation", + "blueSpeed", + "destinationContext", + "setPrimitivePhoneticLastName:", + "_setSharedIdentifier:", + "deltaX", + "setItem:forKey:", + "applicationInfo:", + "setView:", + "removeObjectWithUID:withResolution:withKey:", + "session:proxyAuthenticateForRequest:withRealm:attemptNumber:proxyConfig:username:password:", + "inputKeys", + "isYearLessComparison:forProperty:", + "getInputTopLine", + "scaleRange", + "controlContentFontOfSize:", + "_isKindOfEntity:", + NULL, + "openGLContextForCurrentThread", + "textAttributes", + "_attributeDescriptionForKeyPath:inEntity:", + "_usingAlternateHighlightColorForCell:withFrame:", + "_updateFromSnapshot:", + "_userCanSelectAndEditColumn:row:", + "deleteImageTexture:name:userInfo:", + "applicationWillFinishLaunching:", + NULL, + "_deactivateWindows", + "_selectableColumnIndexes:", + "redisplayPopup", + "vramManagerDidUnbindMipmapWithUID:withSize:", + "filestreamBlockLength", + "windowOrderedOut", + "mapPDFRangeToPageRange:", + "positionKnobs", + "_mergeEntriesFromDictionary:maxDepth:", + NULL, + "_postObjectsDidChangeNotificationWithUserInfo:", + "_resetAllDrawersPostingCounts", + "_specialControlView", + "_cacheRepresentation:", + "_drawKeyboardFocusRingWithFrame:forCell:", + "setCleanAperture:", + "setValue:forInputKey:composition:", + "_imageRepsWithData:hfsFileType:extension:expandImageContentNow:", + "valueWithSMPTETime:", + "_setInitCallback:", + "cocoaVersion", + "initialize_MailRecents", + "_fileChangeAlertSheet:wasPresentedWithResult:inContext:", + "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:", + "performDroppedFile:atPosition:", + NULL, + "setNode:displayState:", + "_bodyStreamOpen:openComplete:", + "removeAllIndexes", + "authorizationState", + NULL, + "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:", + "pageForPoint:nearest:", + "pointerArrayWithOptions:", + "_parseHashTable", + "imagingModeForcedToSharedBuffer", + "setContents:", + "filterWithImageData:options:", + NULL, + "_uncachedSize", + "speechSynthesizer:didFinishSpeaking:", + "_items", + "prefersColorMatch", + "setBrightness:", + "_imageForDrawingInRectOfSize:fromImage:", + "labelForIdentifier:", + NULL, + NULL, + NULL, + "presentableNameForSpecifier:", + "initWithGrammar:", + "setLockOwner:", + "detachFromAudioMixerNode", + "_isAcceptableDragSource:types:dragInfo:", + "beginLayoutChange", + "_cachingView", + "_setAudioDeviceUID:channels:error:", + NULL, + "newFileButton", + "cancelEditing", + "setViewKind:", + "_setSerialNumber:", + "sharedFocusState", + "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:", + "entityMappings", + "bookListNeedsUpdate", + "_setSelectedMembers:withHistory:", + "pageHeader", + "_accessibilityParentAdjustedFocusedUIElement:", + "tokenFieldCell:representedObjectForEditingString:", + "unregisterForHardwareNotification", + "_documentPreviewDidUpdateDisplay:", + NULL, + "writeDefaultValue", + "_coreUISortIndicatorDrawOptionsWithView:ascending:", + "autofillColor", + NULL, + NULL, + "processAllPerforms", + "appleEventForSuspensionID:", + "keepAtLeastOnePixelZoomRange", + "allValues", + "_keyWindowForHeartBeat", + NULL, + "namespaceWithName:stringValue:", + "deleteConfirmSheetDidEnd:returnCode:contextInfo:", + "importVCardData:intoGroup:", + "zoomImageToFit:", + "setPoliciesDisclosed:", + "serviceListener", + "fileURLWithPath:", + "isSyncScheduled", + "errorStringForFTPStatusCode:fromURL:", + "_getPropertyForKey:", + "_minParentWindowContentSize", + "frame", + "setGoverningEntity:", + "delegateClassForMode:", + "_hideMenu:", + "_drawerTakeFocus", + "_scriptingSetValue:forSpecifier:", + "pages", + "_bezelBottomPadding", + "years:months:days:hours:minutes:seconds:sinceDate:", + "pause:", + "destinationURL", + NULL, + "_destroyTSMDocument:", + "_actionCellInitWithCoder:", + "adjustSubviews", + "initWithProxyHost:port:type:realm:authenticationMethod:", + "importContinued:", + "clearAuthChallengeForSession:", + "_ensureBitmapDataAvailable", + "_insertionIsAtEnd", + "mouseDownDelegate:", + "mainFrame", + "_prefixIndex", + "accessibilityDocumentAttribute", + NULL, + NULL, + "sourceEntity", + "isWritableFileAtPath:", + NULL, + NULL, + "_generateSQLForConstantCollection:inContext:", + "_compareToCell:", + "_freeServicesMenu:", + "addAdapterOperation:", + "addFavorite", + "postQueryHasFinishedNotification", + "markerFormat", + "timerWithTimeInterval:target:selector:userInfo:repeats:", + "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:", + "_removeAllRevealovers", + "noteGroupsSelectionChanged", + "initWithCacheSize:", + "initWithMarkerFormat:options:", + "attributeValue", + "_rulerAccView", + "rangeAtIndex:onPage:", + "_notifyFamily_DidRemoveItemAtIndex:", + "filterPanel", + "_setLang:", + NULL, + "validateMipmapDBIndex", + "initWithDocument:url:type:overwriteRetryingInfo:", + "_topEditor", + "layoutControlGlyphForLineFragment:", + "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:", + NULL, + "capHeight", + "tearOffMenuRepresentation", + "setPreviewRange:", + "setEnableDragNDrop:", + "primitiveSortingLastName", + "_reconcileDisplayNameAndTrackingInfoToFileURL", + "_recursivelyRemoveItemsInMenu:fromTable:", + NULL, + "writeColors", + "_restartMovementTracking", + NULL, + "crayonToLeft", + "_insertNodeIntoMainCache:", + "didReceiveResponse:", + "_invalidateCompositedBackground", + "setPreferredRate:", + "_iconViewAction:", + "observeValueForKeyPath:ofObject:change:context:", + "setMaximizedMode:", + "loadClass:", + "terminate:", + "_logMessage:", + "removeBinder:", + "newConversation", + "mergedModelFromBundles:forStoreMetadata:", + "childrenEnumerator", + "isCRLStatusCode:", + "_coreUIBezelDrawOptionsWithView:highlighted:", + "_loadWebKit", + "sessionWillUseOutputPixelBufferAttributes:forConnection:", + "_lockTokenForURI:orForParent:", + "_installTrackingAreas:", + "originalPageCount", + "scanInt:", + "highlightROI:forRect:", + "_modifierString", + "lastPage", + NULL, + "_escapeCharacters:amount:inString:appendingToString:", + "_graphicsFont", + "subentityMaxID", + "dayOfWeek", + "setFillsPicker:", + "_validateAsCustomItem:", + "endUndoGrouping", + "_QTMovieClass", + "_layoutDirtyItemViewersAndTileToolbar", + "browserType", + "_updateSliceRows", + "retainedDecompressionSessionOptions", + "setFrameCenterRotation:", + "_scheduleInDefaultRunLoopForMode:", + "recomputeToolTipsForView:remove:add:", + "_maxLabelSizeForAxis:gridStep:digits:inRect:", + "getTIFFCompressionTypes:count:", + "setScrollable:", + "_diskURL", + "setWidth:forSegment:", + "_updateOverlayControls", + "_moveGapToBlockIndex:", + "_setExportSpecialFonts:", + NULL, + NULL, + NULL, + "glyphRangeForTextContainer:", + "_appendKey:option:value:inKeyNode:", + "isLocking", + "_topLeftDuringLiveResize", + "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:considerNulls:", + "_cfBundle", + "depthChanged:", + "phoneLabel", + "_selectDocumentAtIndex:", + "setValue:forKeyPath:", + "_publicKey", + NULL, + "tilt", + NULL, + "_startDrawingThread:", + NULL, + "topUndoObject", + NULL, + "_cellFinishedImportAnimation:", + "messageBoundsInVisibleRect:", + "addView:frame:toView:characterIndex:layoutManager:", + NULL, + "_postColumnDidResizeNotificationWithOldWidth:", + "_web_pathWithUniqueFilenameForPath:", + "_destinationEntityVersionHashesByName", + "_isScrolling", + "isEntryAcceptable:", + "defaultManager", + "fetchObjectsForClass:withPredicate:prefetchingKeyPaths:managedObjectContext:", + "getBytes:range:", + "_populateOpenRecentMenu:includingIcons:", + "isTemplate", + "_retrieveNodesSatisfyingRequest:", + "_currentItemFrame", + NULL, + "countOfInputTopLine", + "_accessibilityChildrenWithIndexes:", + "setAnchorRight", + "removeLastObject", + "startSubelementIdentifier", + "_propertyDescriptionForAppleEventCode:checkSubclasses:superclasses:", + "sharedExchangeSetup", + "scheduleSearch:", + "resetCellInfo:", + "tracks", + "_doOpenFiles:", + "setAlignment:range:", + "registerImageProviderClass:", + "cellBoundingBoxPositionAtIndex:", + "controlPointBounds", + "initWithDictionaryRepresentation:addressBook:", + "_setHorizontalScrollerHidden:", + "validateRowsTranslationsToRowIndex:", + "components", + "resetPasswordCache", + "setActive:", + "attemptToBind", + "appendAttributedString:", + "_adjustMinAndMaxSizeForSheet:", + "prepareLike:", + "_liveResizeLOptimizationEnabled", + "resetView", + "changeSpelling:", + NULL, + "nts_ChangedProperties", + NULL, + "_memoryCacheRemoveNodeFromLRUList:", + "setMappingModel:", + "drawCellInside:", + "typefaceInfoForKnownFontDescriptor:", + "getInputExtent", + "intersectsIndexesInRange:", + "tokenFieldCell:setUpTokenAttachmentCell:forRepresentedObject:", + "_functionExpressionIsSubqueryFollowedByKeypath:", + "newWithUpperItem:attribute:", + "setRichText:", + "_performPostHandler", + "_computeLayoutInfoForIconViewSize:frameSize:iconFrame:labelFrame:", + "_closeFileAsync", + "initWithTableView:", + "_validateValue:forProperty:andKey:withIndex:error:", + "_cacheZoomState", + "_ensureObjectsAreMutable", + "addTooltipsForPage:", + "virtualScreenCount", + "usesWeakReadAndWriteBarriers", + "_maybeSubstitutePopUpButton", + NULL, + "drawWithBox:inContext:", + "_leading", + "_indexOfRangeAfterOrContainingIndex:", + "_inlineSlideshowItemChangedPlaying:", + "accessibilitySupportsOverriddenAttributes", + "processComment:", + "backingType", + "strokeRect:color:context:", + "appleEventClassCode", + "_initWithName:propertyList:", + "updateOrientationTag:animate:reCenter:", + "stepBackward", + "disableMakeHistory", + "removeObjectForResolution:", + "timerWithFireDate:target:selector:userInfo:", + NULL, + "_addHiddenWindow:", + "_doAutoscrolling", + "activate:", + "savedCriteriaSlices", + "setFetchPredicate:", + NULL, + "pauseRendering", + "ab_URLWithStringByEscapingStringIfNecessary:", + NULL, + "classCode", + "performStreamRead", + "cameraDZ", + "_minContentRectSize", + "focusedSwatchRect", + "fetchRequestTemplateForName:", + "stopError", + NULL, + "editInAddressBook:", + "bindInVRamMipmapItem:withUID:", + "setParagraphs:", + NULL, + "__preLiveResizeWidthOfColumn:", + "setNeedsDisplayOnBoundsChange:", + "_addVirtualToOneForToMany:withInheritedProperty:", + "updateTimeValue", + "lastResponseMessage", + "_scheduleDelayedShowOpenHandCursorIfNecessary", + NULL, + "appendSelectListToSQLForRequest:", + "SCTConvertBaseToScreenRect:", + "popLast", + "analyzeAndIndexApp:", + "initWithPNGFile:", + "_standardCustomMenuFormRepresentationClicked:", + "setOriginalDontResolveDataRefsFlag:", + "_oldUserCanSelectRow:", + "postColorSwatchesChangedDistributedNotification", + "cellAtRow:column:", + "_cornerViewFrame", + NULL, + NULL, + "busyButClickableCursor", + "targetAndArgumentsAcceptable", + "initWithLocal", + "addImagePasteLayer:", + "_updateDefaults", + "_allowAnimated_setFrameSize:", + "pathControl:willDisplayOpenPanel:", + "prefix", + "indexOfKey:", + NULL, + "nts_managedObjectContextWithModel:databasePath:dataType:version:loadFailure:", + "setTableColumn:", + "cut:", + "_givenPropertiesBeingInitialized:getAffectingProperties:", + "shadow", + "setAudioDevice:error:", + "showGreyScaleView:", + "_fillCache", + "applicationName", + "_commitEditing:", + "_removeParent:", + "_setUpLayerTreeRendererAndSurface", + "_accessibilityChildrenInRange:", + NULL, + "initWithYear:month:day:hour:minute:second:timeZone:", + "minimumRangeForEdit", + "_updateFilterPredicate:", + "_calculateSizeToFitWidthOfColumn:testLoadedOnly:", + "setMultipleCharacterSeparators:", + "destNode", + "_adjustClipIndicatorPosition", + "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:", + "setIdentifier:", + NULL, + "newWithURL:quartzFilter:", + "initWithRole:subrole:index:parent:", + "proxyWithLocal:connection:", + "__computeOrder:context:", + "_textViewOwnsTextStorage", + NULL, + "addPageReferenceToDictionaryRef:", + "currentFrameAsCIImage", + "_rl", + "clientWrapperWithRealClient:", + "setCountryCode:", + "_resetDrawerFirstResponder", + "valueTypeDescriptionFromName:declaration:", + "setLinkTextAttributes:", + "flushDerivables", + "suppressAllNotifications", + "_commonInitNavNodePopUpButton", + "sharedInfoPanel", + "_switchToPicker:", + "setGregorianStartDate:", + "computeInsideShadow", + "_concludeTracking", + "_shapeMenuPanel", + "control:textShouldEndEditing:", + "allowedFileTypes", }; - diff --git a/runtime/objc-sel.m b/runtime/objc-sel.m index cb9c9e1..c3f15dd 100644 --- a/runtime/objc-sel.m +++ b/runtime/objc-sel.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -36,9 +34,12 @@ #import "objc-rtp.h" #import "objc-sel-set.h" -// NUM_BUILTIN_SELS, LG_NUM_BUILTIN_SELS, _objc_builtin_selectors +// _objc_builtin_selectors[] #include "objc-sel-table.h" +// from phash.c +extern uint32_t phash(const char *key, int len); + #define NUM_NONBUILTIN_SELS 3500 // objc_sel_set grows at 3571, 5778, 9349. // Most apps use 2000..7000 extra sels. Most apps will grow zero to two times. @@ -68,33 +69,29 @@ static inline int ignore_selector(const char *sel) static SEL _objc_search_builtins(const char *key) { - int c, idx, lg = LG_NUM_BUILTIN_SELS; - const char *s; + const char *sel; + uint32_t hash; #if defined(DUMP_SELECTORS) if (NULL != key) printf("\t\"%s\",\n", key); #endif + /* The builtin table contains only sels starting with '[.A-z]', including '_' */ if (!key) return (SEL)0; + if ((intptr_t)key == kIgnore) return (SEL)kIgnore; if ('\0' == *key) return (SEL)_objc_empty_selector; 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; - idx = (c < 0) ? NUM_BUILTIN_SELS - (1 << lg) : -1; - while (--lg >= 0) { - s = _objc_builtin_selectors[idx + (1 << lg)]; - c = _objc_strcmp(s, key); - if (c == 0) return (SEL)s; - if (c < 0) idx += (1 << lg); - } - return (SEL)0; + hash = phash(key, (int)__builtin_strlen(key)); + sel = _objc_builtin_selectors[hash]; + if (sel && 0 == __builtin_strcmp(key, sel)) return (SEL)sel; + else return (SEL)0; } const char *sel_getName(SEL sel) { + if ((intptr_t)sel == kIgnore) return ""; return sel ? (const char *)sel : ""; } @@ -167,3 +164,9 @@ __private_extern__ void sel_unlock(void) SEL sel_getUid(const char *name) { return __sel_registerName(name, 2, 1); // YES lock, YES copy } + + +BOOL sel_isEqual(SEL lhs, SEL rhs) +{ + return (lhs == rhs) ? YES : NO; +} diff --git a/runtime/objc-sync.h b/runtime/objc-sync.h index 7ccee7d..12e3216 100644 --- a/runtime/objc-sync.h +++ b/runtime/objc-sync.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 2002, 2006 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -22,11 +20,6 @@ * * @APPLE_LICENSE_HEADER_END@ */ -// -// objc_sync.h -// -// Copyright (c) 2002 Apple Computer, Inc. All rights reserved. -// #ifndef __OBJC_SNYC_H_ #define __OBJC_SNYC_H_ diff --git a/runtime/objc-sync.m b/runtime/objc-sync.m index fe8e3a2..070d06a 100644 --- a/runtime/objc-sync.m +++ b/runtime/objc-sync.m @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -22,11 +20,6 @@ * * @APPLE_LICENSE_HEADER_END@ */ -// -// objc_sync.m -// -// Copyright (c) 2002 Apple Computer, Inc. All rights reserved. -// #include #include @@ -34,14 +27,10 @@ #include #include #include +#include #include "objc-sync.h" - -// -// Code by Nick Kledzik -// - -// revised comments by Blaine +#include "objc-private.h" // // Allocate a lock only when needed. Since few locks are needed at any point @@ -68,43 +57,146 @@ done: } -struct SyncData +typedef uintptr_t spin_lock_t; +extern void _spin_lock(spin_lock_t *lockp); +extern int _spin_lock_try(spin_lock_t *lockp); +extern void _spin_unlock(spin_lock_t *lockp); + +typedef struct SyncData { + struct SyncData* nextData; + id object; + int threadCount; // number of THREADS using this block + pthread_mutex_t mutex; + pthread_cond_t conditionVariable; +} SyncData; + +typedef struct { + SyncData *data; + unsigned int lockCount; // number of times THIS THREAD locked this block +} SyncCacheItem; + +typedef struct SyncCache { + unsigned int allocated; + unsigned int used; + SyncCacheItem list[0]; +} SyncCache; + +typedef struct { + spin_lock_t lock; + SyncData *data; +} SyncList __attribute__((aligned(64))); +// aligned to put locks on separate cache lines + +// Use multiple parallel lists to decrease contention among unrelated objects. +#define COUNT 16 +#define HASH(obj) ((((uintptr_t)(obj)) >> 5) & (COUNT - 1)) +#define LOCK_FOR_OBJ(obj) sDataLists[HASH(obj)].lock +#define LIST_FOR_OBJ(obj) sDataLists[HASH(obj)].data +static SyncList sDataLists[COUNT]; + + +enum usage { ACQUIRE, RELEASE, CHECK }; + +static SyncCache *fetch_cache(BOOL create) { - struct SyncData* nextData; // only accessed while holding sTableLock - id object; // only accessed while holding sTableLock - unsigned int lockCount; // only accessed while holding sTableLock - pthread_mutex_t mutex; - pthread_cond_t conditionVariable; -}; -typedef struct SyncData SyncData; + _objc_pthread_data *data; + + data = _objc_fetch_pthread_data(create); + if (!data && !create) return NULL; + + if (!data->syncCache) { + if (!create) { + return NULL; + } else { + int count = 4; + data->syncCache = calloc(1, sizeof(SyncCache) + + count*sizeof(SyncCacheItem)); + data->syncCache->allocated = count; + } + } + // Make sure there's at least one open slot in the list. + if (data->syncCache->allocated == data->syncCache->used) { + data->syncCache->allocated *= 2; + data->syncCache = + realloc(data->syncCache, sizeof(SyncCache) + + data->syncCache->allocated * sizeof(SyncCacheItem)); + } -static pthread_mutex_t sTableLock = PTHREAD_MUTEX_INITIALIZER; -static SyncData* sDataList = NULL; + return data->syncCache; +} + + +__private_extern__ void _destroySyncCache(struct SyncCache *cache) +{ + if (cache) free(cache); +} -enum usage { ACQUIRE, RELEASE, CHECK }; static SyncData* id2data(id object, enum usage why) { + spin_lock_t *lockp = &LOCK_FOR_OBJ(object); + SyncData **listp = &LIST_FOR_OBJ(object); SyncData* result = NULL; int err; - - pthread_mutex_lock(&sTableLock); - + + // Check per-thread cache of already-owned locks for matching object + SyncCache *cache = fetch_cache(NO); + if (cache) { + int i; + for (i = 0; i < cache->used; i++) { + SyncCacheItem *item = &cache->list[i]; + if (item->data->object != object) continue; + + // Found a match. + result = item->data; + require_action_string(result->threadCount > 0, cache_done, + result = NULL, "id2data cache is buggy"); + require_action_string(item->lockCount > 0, cache_done, + result = NULL, "id2data cache is buggy"); + + switch(why) { + case ACQUIRE: + item->lockCount++; + break; + case RELEASE: + item->lockCount--; + if (item->lockCount == 0) { + // remove from per-thread cache + cache->list[i] = cache->list[--cache->used]; + // atomic because may collide with concurrent ACQUIRE + OSAtomicDecrement32Barrier(&result->threadCount); + } + break; + case CHECK: + // do nothing + break; + } + + cache_done: + return result; + } + } + + // Thread cache didn't find anything. // Walk in-use list looking for matching object - // sTableLock keeps other threads from winning an allocation race - // for the same new object. + // Spinlock prevents multiple threads from creating multiple + // locks for the same new object. // We could keep the nodes in some hash table if we find that there are // more than 20 or so distinct locks active, but we don't do that now. - SyncData* firstUnused = NULL; + _spin_lock(lockp); + SyncData* p; - for (p = sDataList; p != NULL; p = p->nextData) { + SyncData* firstUnused = NULL; + for (p = *listp; p != NULL; p = p->nextData) { if ( p->object == object ) { result = p; + // atomic because may collide with concurrent RELEASE + OSAtomicIncrement32Barrier(&result->threadCount); goto done; } - if ( (firstUnused == NULL) && (p->object == NULL) ) + if ( (firstUnused == NULL) && (p->threadCount == 0) ) firstUnused = p; } @@ -116,7 +208,7 @@ static SyncData* id2data(id object, enum usage why) if ( firstUnused != NULL ) { result = firstUnused; result->object = object; - result->lockCount = 0; // sanity + result->threadCount = 1; goto done; } @@ -126,35 +218,42 @@ static SyncData* id2data(id object, enum usage why) // But since we never free these guys we won't be stuck in malloc very often. result = (SyncData*)malloc(sizeof(SyncData)); result->object = object; - result->lockCount = 0; + result->threadCount = 1; err = pthread_mutex_init(&result->mutex, recursiveAttributes()); require_noerr_string(err, done, "pthread_mutex_init failed"); err = pthread_cond_init(&result->conditionVariable, NULL); require_noerr_string(err, done, "pthread_cond_init failed"); - result->nextData = sDataList; - sDataList = result; + result->nextData = *listp; + *listp = result; -done: - if ( result != NULL ) { - switch ( why ) { - case ACQUIRE: - result->lockCount++; - break; - case RELEASE: - result->lockCount--; - if ( result->lockCount == 0 ) - result->object = NULL; // now recycled - break; - case CHECK: - // do nothing - break; - } + done: + _spin_unlock(lockp); + if (result) { + // Only new ACQUIRE should get here. + // All RELEASE and CHECK and recursive ACQUIRE are + // handled by the per-thread cache above. + + require_string(result != NULL, really_done, "id2data is buggy"); + require_action_string(why == ACQUIRE, really_done, + result = NULL, "id2data is buggy"); + require_action_string(result->object == object, really_done, + result = NULL, "id2data is buggy"); + + if (!cache) cache = fetch_cache(YES); + cache->list[cache->used++] = (SyncCacheItem){result, 1}; } - pthread_mutex_unlock(&sTableLock); + + really_done: return result; } +__private_extern__ __attribute__((noinline)) +int objc_sync_nil(void) +{ + return OBJC_SYNC_SUCCESS; // something to foil the optimizer +} + // Begin synchronizing on 'obj'. // Allocates recursive pthread_mutex associated with 'obj' if needed. @@ -171,6 +270,10 @@ int objc_sync_enter(id obj) require_noerr_string(result, done, "pthread_mutex_lock failed"); } else { // @synchronized(nil) does nothing + if (DebugNilSync) { + _objc_inform("NIL SYNC DEBUG: @synchronized(nil); set a breakpoint on objc_sync_nil to debug"); + } + result = objc_sync_nil(); } done: @@ -219,8 +322,8 @@ int objc_sync_wait(id obj, long long milliSecondsMaxWait) } else { struct timespec maxWait; - maxWait.tv_sec = milliSecondsMaxWait / 1000; - maxWait.tv_nsec = (milliSecondsMaxWait - (maxWait.tv_sec * 1000)) * 1000000; + maxWait.tv_sec = (time_t)(milliSecondsMaxWait / 1000); + maxWait.tv_nsec = (long)((milliSecondsMaxWait - (maxWait.tv_sec * 1000)) * 1000000); result = pthread_cond_timedwait_relative_np(&data->conditionVariable, &data->mutex, &maxWait); require_noerr_string(result, done, "pthread_cond_timedwait_relative_np failed"); } diff --git a/runtime/objc-typeencoding.m b/runtime/objc-typeencoding.m new file mode 100644 index 0000000..d3b720e --- /dev/null +++ b/runtime/objc-typeencoding.m @@ -0,0 +1,403 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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-typeencoding.m +* Parsing of old-style type strings. +**********************************************************************/ + +#include "objc-private.h" +#include + +/*********************************************************************** +* SubtypeUntil. +* +* Delegation. +**********************************************************************/ +static int SubtypeUntil (const char * type, + char end) +{ + int level = 0; + const char * head = type; + + // + while (*type) + { + if (!*type || (!level && (*type == end))) + return (int)(type - head); + + switch (*type) + { + case ']': case '}': case ')': level--; break; + case '[': case '{': case '(': level += 1; break; + } + + type += 1; + } + + _objc_fatal ("Object: SubtypeUntil: end of type encountered prematurely\n"); + return 0; +} + + +/*********************************************************************** +* SkipFirstType. +**********************************************************************/ +static const char * SkipFirstType (const char * type) +{ + while (1) + { + switch (*type++) + { + case 'O': /* bycopy */ + case 'n': /* in */ + case 'o': /* out */ + case 'N': /* inout */ + case 'r': /* const */ + case 'V': /* oneway */ + case '^': /* pointers */ + break; + + /* arrays */ + case '[': + while ((*type >= '0') && (*type <= '9')) + type += 1; + return type + SubtypeUntil (type, ']') + 1; + + /* structures */ + case '{': + return type + SubtypeUntil (type, '}') + 1; + + /* unions */ + case '(': + return type + SubtypeUntil (type, ')') + 1; + + /* basic types */ + default: + return type; + } + } +} + + +/*********************************************************************** +* encoding_getNumberOfArguments. +**********************************************************************/ +__private_extern__ unsigned int +encoding_getNumberOfArguments(const char *typedesc) +{ + unsigned nargs; + + // First, skip the return type + typedesc = SkipFirstType (typedesc); + + // Next, skip stack size + while ((*typedesc >= '0') && (*typedesc <= '9')) + typedesc += 1; + + // Now, we have the arguments - count how many + nargs = 0; + while (*typedesc) + { + // Traverse argument type + typedesc = SkipFirstType (typedesc); + + // Skip GNU runtime's register parameter hint + if (*typedesc == '+') typedesc++; + + // Traverse (possibly negative) argument offset + if (*typedesc == '-') + typedesc += 1; + while ((*typedesc >= '0') && (*typedesc <= '9')) + typedesc += 1; + + // Made it past an argument + nargs += 1; + } + + return nargs; +} + +/*********************************************************************** +* encoding_getSizeOfArguments. +**********************************************************************/ +__private_extern__ unsigned +encoding_getSizeOfArguments(const char *typedesc) +{ + unsigned stack_size; +#if defined(__ppc__) || defined(ppc) + unsigned trueBaseOffset; + unsigned foundBaseOffset; +#endif + + // Get our starting points + stack_size = 0; + + // Skip the return type +#if defined (__ppc__) || defined(ppc) + // Struct returns cause the parameters to be bumped + // by a register, so the offset to the receiver is + // 4 instead of the normal 0. + trueBaseOffset = (*typedesc == '{') ? (unsigned)sizeof(void *) : 0; +#endif + typedesc = SkipFirstType (typedesc); + + // Convert ASCII number string to integer + while ((*typedesc >= '0') && (*typedesc <= '9')) + stack_size = (stack_size * 10) + (*typedesc++ - '0'); +#if defined (__ppc__) || defined(ppc) + // NOTE: This is a temporary measure pending a compiler fix. + // Work around PowerPC compiler bug wherein the method argument + // string contains an incorrect value for the "stack size." + // Generally, the size is reported 4 bytes too small, so we apply + // that fudge factor. Unfortunately, there is at least one case + // where the error is something other than -4: when the last + // parameter is a double, the reported stack is much too high + // (about 32 bytes). We do not attempt to detect that case. + // The result of returning a too-high value is that objc_msgSendv + // can bus error if the destination of the marg_list copying + // butts up against excluded memory. + // This fix disables itself when it sees a correctly built + // type string (i.e. the offset for the Id is correct). This + // keeps us out of lockstep with the compiler. + + // skip the '@' marking the Id field + typedesc = SkipFirstType (typedesc); + + // Skip GNU runtime's register parameter hint + if (*typedesc == '+') typedesc++; + + // pick up the offset for the Id field + foundBaseOffset = 0; + while ((*typedesc >= '0') && (*typedesc <= '9')) + foundBaseOffset = (foundBaseOffset * 10) + (*typedesc++ - '0'); + + // add fudge factor iff the Id field offset was wrong + if (foundBaseOffset != trueBaseOffset) + stack_size += 4; +#endif + + return stack_size; +} + + +/*********************************************************************** +* encoding_getArgumentInfo. +**********************************************************************/ +__private_extern__ unsigned int +encoding_getArgumentInfo(const char *typedesc, int arg, + const char **type, int *offset) +{ + unsigned nargs = 0; + unsigned self_offset = 0; + BOOL offset_is_negative = NO; + + // First, skip the return type + typedesc = SkipFirstType (typedesc); + + // Next, skip stack size + while ((*typedesc >= '0') && (*typedesc <= '9')) + typedesc += 1; + + // Now, we have the arguments - position typedesc to the appropriate argument + while (*typedesc && nargs != arg) + { + + // Skip argument type + typedesc = SkipFirstType (typedesc); + + if (nargs == 0) + { + // Skip GNU runtime's register parameter hint + if (*typedesc == '+') typedesc++; + + // Skip negative sign in offset + if (*typedesc == '-') + { + offset_is_negative = YES; + typedesc += 1; + } + else + offset_is_negative = NO; + + while ((*typedesc >= '0') && (*typedesc <= '9')) + self_offset = self_offset * 10 + (*typedesc++ - '0'); + if (offset_is_negative) + self_offset = -(self_offset); + + } + + else + { + // Skip GNU runtime's register parameter hint + if (*typedesc == '+') typedesc++; + + // Skip (possibly negative) argument offset + if (*typedesc == '-') + typedesc += 1; + while ((*typedesc >= '0') && (*typedesc <= '9')) + typedesc += 1; + } + + nargs += 1; + } + + if (*typedesc) + { + unsigned arg_offset = 0; + + *type = typedesc; + typedesc = SkipFirstType (typedesc); + + if (arg == 0) + { + *offset = 0; + } + + else + { + // Skip GNU register parameter hint + if (*typedesc == '+') typedesc++; + + // Pick up (possibly negative) argument offset + if (*typedesc == '-') + { + offset_is_negative = YES; + typedesc += 1; + } + else + offset_is_negative = NO; + + while ((*typedesc >= '0') && (*typedesc <= '9')) + arg_offset = arg_offset * 10 + (*typedesc++ - '0'); + if (offset_is_negative) + arg_offset = - arg_offset; + + *offset = arg_offset - self_offset; + } + + } + + else + { + *type = 0; + *offset = 0; + } + + return nargs; +} + + +__private_extern__ void +encoding_getReturnType(const char *t, char *dst, size_t dst_len) +{ + size_t len; + const char *end; + + if (!dst) return; + if (!t) { + strncpy(dst, "", dst_len); + return; + } + + end = SkipFirstType(t); + len = end - t; + strncpy(dst, t, MIN(len, dst_len)); + if (len < dst_len) memset(dst+len, 0, dst_len - len); +} + +/*********************************************************************** +* encoding_copyReturnType. Returns the method's return type string +* on the heap. +**********************************************************************/ +__private_extern__ char * +encoding_copyReturnType(const char *t) +{ + size_t len; + const char *end; + char *result; + + if (!t) return NULL; + + end = SkipFirstType(t); + len = end - t; + result = malloc(len + 1); + strncpy(result, t, len); + result[len] = '\0'; + return result; +} + + +__private_extern__ void +encoding_getArgumentType(const char *t, unsigned int index, + char *dst, size_t dst_len) +{ + size_t len; + const char *end; + int offset; + + if (!dst) return; + if (!t) { + strncpy(dst, "", dst_len); + return; + } + + encoding_getArgumentInfo(t, index, &t, &offset); + + if (!t) { + strncpy(dst, "", dst_len); + return; + } + + end = SkipFirstType(t); + len = end - t; + strncpy(dst, t, MIN(len, dst_len)); + if (len < dst_len) memset(dst+len, 0, dst_len - len); +} + + +/*********************************************************************** +* encoding_copyArgumentType. Returns a single argument's type string +* on the heap. Argument 0 is `self`; argument 1 is `_cmd`. +**********************************************************************/ +__private_extern__ char * +encoding_copyArgumentType(const char *t, unsigned int index) +{ + size_t len; + const char *end; + char *result; + int offset; + + if (!t) return NULL; + + encoding_getArgumentInfo(t, index, &t, &offset); + + if (!t) return NULL; + + end = SkipFirstType(t); + len = end - t; + result = malloc(len + 1); + strncpy(result, t, len); + result[len] = '\0'; + return result; +} diff --git a/runtime/objc.h b/runtime/objc.h index d936162..aa2f962 100644 --- a/runtime/objc.h +++ b/runtime/objc.h @@ -1,9 +1,7 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License @@ -31,53 +29,49 @@ #define _OBJC_OBJC_H_ #import // for OBJC_EXPORT +#import -typedef struct objc_class *Class; +typedef struct objc_class *Class; typedef struct objc_object { - Class isa; + Class isa; } *id; + typedef struct objc_selector *SEL; typedef id (*IMP)(id, SEL, ...); typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. +#define OBJC_BOOL_DEFINED #define YES (BOOL)1 #define NO (BOOL)0 #ifndef Nil -#define Nil 0 /* id of Nil class */ +#define Nil __DARWIN_NULL /* id of Nil class */ #endif #ifndef nil -#define nil 0 /* id of Nil instance */ +#define nil __DARWIN_NULL /* id of Nil instance */ #endif #ifndef __OBJC_GC__ -# define __strong +#define __strong /* empty */ #endif -#if !defined(STRICT_OPENSTEP) - -typedef char *STR; - -OBJC_EXPORT BOOL sel_isMapped(SEL sel); OBJC_EXPORT const char *sel_getName(SEL sel); -OBJC_EXPORT SEL sel_getUid(const char *str); OBJC_EXPORT SEL sel_registerName(const char *str); OBJC_EXPORT const char *object_getClassName(id obj); OBJC_EXPORT void *object_getIndexedIvars(id obj); -#define ISSELECTOR(sel) sel_isMapped(sel) -#define SELNAME(sel) sel_getName(sel) -#define SELUID(str) sel_getUid(str) -#define NAMEOF(obj) object_getClassName(obj) -#define IV(obj) object_getIndexedIvars(obj) -#if defined(__osf__) && defined(__alpha__) +#if !__OBJC2__ + +// The following declarations are provided here for source compatibility. + +#if defined(__LP64__) typedef long arith_t; typedef unsigned long uarith_t; # define ARITH_SHIFT 32 @@ -87,6 +81,17 @@ OBJC_EXPORT void *object_getIndexedIvars(id obj); # define ARITH_SHIFT 16 #endif -#endif /* !STRICT_OPENSTEP */ +OBJC_EXPORT BOOL sel_isMapped(SEL sel); +OBJC_EXPORT SEL sel_getUid(const char *str); + +typedef char *STR; + +#define ISSELECTOR(sel) sel_isMapped(sel) +#define SELNAME(sel) sel_getName(sel) +#define SELUID(str) sel_getUid(str) +#define NAMEOF(obj) object_getClassName(obj) +#define IV(obj) object_getIndexedIvars(obj) + +#endif -#endif /* _OBJC_OBJC_H_ */ +#endif /* _OBJC_OBJC_H_ */ diff --git a/runtime/phash.h b/runtime/phash.h new file mode 100644 index 0000000..0b538a9 --- /dev/null +++ b/runtime/phash.h @@ -0,0 +1,17 @@ +/* Perfect hash definitions */ +#ifndef STANDARD +#include "standard.h" +#endif /* STANDARD */ +#ifndef PHASH +#define PHASH + +extern const ub1 tab[]; +#define PHASHLEN 0x2000 /* length of hash mapping table */ +#define PHASHNKEYS 29798 /* How many keys were hashed */ +#define PHASHRANGE 32768 /* Range any input might map to */ +#define PHASHSALT 0x5384540f /* internal, initialize normal hash */ + +ub4 phash(); + +#endif /* PHASH */ + diff --git a/runtime/phash.m b/runtime/phash.m new file mode 100644 index 0000000..c958679 --- /dev/null +++ b/runtime/phash.m @@ -0,0 +1,573 @@ +/* table for the mapping for the perfect hash */ +#ifndef STANDARD +#include "standard.h" +#endif /* STANDARD */ +#ifndef PHASH +#include "phash.h" +#endif /* PHASH */ +#ifndef LOOKUPA +#include "lookupa.h" +#endif /* LOOKUPA */ + +/* A way to make the 1-byte values in tab bigger */ +__private_extern__ const ub2 scramble[] = { +0x0000, 0x6b0f, 0x4c7d, 0x01b0, 0x1c38, 0x6c2c, 0x3596, 0x43b7, +0x754c, 0x0ad4, 0x18a7, 0x5131, 0x0a50, 0x291c, 0x6366, 0x7e81, +0x32bf, 0x19b3, 0x033b, 0x6346, 0x0df6, 0x58bd, 0x6c8d, 0x5de5, +0x26d1, 0x74a5, 0x35f8, 0x1bd7, 0x42e4, 0x0196, 0x4d64, 0x6e42, +0x1809, 0x007f, 0x2f2d, 0x0615, 0x73ac, 0x4dcd, 0x4cd9, 0x5767, +0x551b, 0x6aa5, 0x3587, 0x42c5, 0x329b, 0x3373, 0x5a4d, 0x5e6b, +0x0250, 0x40bf, 0x61fb, 0x5577, 0x344a, 0x54cc, 0x0533, 0x7055, +0x0be0, 0x65e9, 0x1963, 0x2549, 0x51a2, 0x77e2, 0x0498, 0x03f4, +0x2a77, 0x4d08, 0x2c45, 0x2978, 0x27a3, 0x73b0, 0x0ec5, 0x02e9, +0x4df7, 0x0858, 0x3124, 0x38dc, 0x3556, 0x34c5, 0x3fc5, 0x5b57, +0x1c13, 0x50d8, 0x3162, 0x5797, 0x16da, 0x5492, 0x7515, 0x3c25, +0x7d74, 0x2bbb, 0x490e, 0x068f, 0x751b, 0x4ccb, 0x7e7e, 0x6857, +0x6cdd, 0x2093, 0x726b, 0x0150, 0x472b, 0x5e5b, 0x5b20, 0x1b01, +0x5c2e, 0x63f5, 0x3cd6, 0x0ed0, 0x6a41, 0x16fe, 0x0069, 0x13fa, +0x1dcb, 0x44f0, 0x6f3a, 0x0cec, 0x0c4d, 0x7b40, 0x24f7, 0x5dff, +0x7929, 0x762f, 0x73bf, 0x396a, 0x155c, 0x2614, 0x7165, 0x5906, +0x7bcb, 0x51ba, 0x60e0, 0x2f88, 0x328d, 0x042b, 0x1175, 0x634b, +0x4cd1, 0x0893, 0x5e07, 0x708c, 0x5bb2, 0x00a5, 0x5ee3, 0x6f47, +0x34b9, 0x12a4, 0x0558, 0x0e61, 0x6744, 0x2f9f, 0x6b85, 0x36f9, +0x1a1e, 0x562d, 0x742e, 0x1655, 0x686d, 0x0bb6, 0x16fb, 0x2b8f, +0x5b7a, 0x0699, 0x5f40, 0x0130, 0x46d8, 0x0e8b, 0x7383, 0x0186, +0x7dc9, 0x05c4, 0x18f9, 0x6e8d, 0x7537, 0x05dc, 0x2076, 0x2b1e, +0x1a74, 0x6fcb, 0x6163, 0x645c, 0x14b9, 0x5995, 0x1387, 0x5bff, +0x1ad6, 0x3538, 0x6ad1, 0x3f04, 0x2ad8, 0x073c, 0x44d4, 0x3cee, +0x4d79, 0x0f50, 0x64a2, 0x52d7, 0x6930, 0x75a6, 0x24da, 0x58fe, +0x01ed, 0x7d35, 0x7afa, 0x662e, 0x3a3d, 0x4156, 0x1ba2, 0x6b0c, +0x0ca0, 0x4269, 0x2d22, 0x0a6e, 0x683e, 0x68aa, 0x5cb2, 0x18c3, +0x72c6, 0x6d37, 0x134d, 0x4801, 0x6a3a, 0x4904, 0x1cdd, 0x4565, +0x2e0f, 0x7534, 0x6c44, 0x537e, 0x6b70, 0x38eb, 0x16c4, 0x2e9c, +0x759d, 0x48ae, 0x6244, 0x12b2, 0x357d, 0x7a73, 0x6bd7, 0x604e, +0x6ca1, 0x3677, 0x7157, 0x3e55, 0x7d6e, 0x53d6, 0x36b3, 0x523b, +0x2991, 0x597e, 0x49c6, 0x5d92, 0x5076, 0x5857, 0x3c8c, 0x3e59, +}; + +/* small adjustments to _a_ to make values distinct */ +__private_extern__ const ub1 tab[] = { +4,2,0,52,1,7,1,15,7,15,0,9,1,44,0,39, +34,4,1,3,13,8,37,3,5,2,56,0,0,1,6,3, +31,7,105,4,3,8,6,10,2,11,1,19,10,39,24,5, +7,11,7,38,0,4,3,0,0,38,12,2,7,12,19,0, +36,78,5,67,9,4,15,0,0,57,1,1,2,6,7,0, +6,0,1,2,8,5,3,17,3,23,8,35,0,0,29,13, +50,0,23,4,0,28,5,20,36,2,12,10,23,55,9,2, +2,3,1,1,27,63,12,4,6,9,18,5,9,9,35,0, +16,71,0,0,2,1,0,6,4,6,0,20,4,1,6,14, +1,18,14,0,16,88,1,5,14,3,0,0,4,49,65,7, +0,6,0,1,1,1,11,234,5,17,5,0,0,5,0,9, +0,15,7,21,5,4,11,8,1,2,2,17,0,5,32,6, +1,0,5,29,5,18,7,0,19,97,0,1,6,3,50,0, +0,0,6,0,0,2,4,0,8,10,1,5,3,1,18,2, +3,0,0,14,1,2,4,29,0,0,0,6,16,34,2,10, +8,11,11,1,17,43,12,12,7,22,1,0,25,205,1,4, +20,31,6,70,0,0,16,9,0,13,1,11,1,4,57,5, +12,0,2,0,1,2,4,2,0,7,20,89,3,0,0,0, +2,37,1,33,6,14,11,6,2,2,2,11,4,24,5,0, +30,10,6,6,1,49,0,6,4,5,14,2,10,17,12,0, +0,2,13,66,76,11,0,17,1,3,26,0,0,5,19,5, +0,129,1,1,36,6,5,0,7,0,9,44,0,0,72,30, +0,9,0,1,18,4,27,63,1,1,10,15,10,35,0,25, +9,21,1,6,28,0,12,15,4,50,0,12,3,25,3,12, +35,77,6,22,14,6,0,0,31,0,2,0,0,61,9,0, +0,0,13,8,6,6,41,14,18,1,8,8,20,3,0,6, +11,2,141,31,1,6,17,10,16,3,30,20,2,14,3,4, +16,15,18,6,72,5,1,12,41,16,11,0,33,6,8,26, +3,6,2,26,8,27,0,4,2,37,0,98,3,14,1,5, +0,20,2,2,3,1,65,1,0,5,6,0,0,4,3,26, +5,45,4,1,0,3,0,6,0,4,4,3,10,26,5,68, +11,7,0,3,17,44,1,37,4,15,9,1,4,9,40,0, +0,1,0,43,3,1,3,20,1,3,2,6,8,13,34,0, +16,2,13,25,7,1,5,16,0,9,6,26,1,46,76,2, +15,19,0,3,3,1,6,40,2,0,6,1,62,18,14,2, +9,19,6,8,5,0,60,41,22,216,16,46,26,6,1,46, +30,0,0,24,3,0,2,3,21,23,48,27,5,0,1,17, +6,8,3,0,5,0,6,12,0,0,0,3,2,2,0,13, +5,3,2,23,18,33,1,27,1,0,0,18,39,26,0,19, +13,0,2,0,23,6,68,0,16,1,0,1,36,16,15,28, +1,10,0,10,4,6,5,4,0,26,0,5,6,14,5,2, +1,4,0,14,12,46,5,0,8,64,51,36,36,33,1,0, +29,8,0,4,4,0,0,11,13,50,1,22,2,4,1,24, +1,4,0,20,43,76,0,0,16,36,50,14,1,2,0,13, +3,0,1,27,1,87,11,0,6,26,8,2,6,2,4,33, +0,0,4,4,72,3,0,6,0,42,11,1,8,4,0,0, +0,11,0,28,2,15,2,2,33,13,1,5,3,3,19,2, +0,12,46,0,6,9,0,0,3,1,4,226,1,17,6,8, +1,1,37,4,5,2,12,38,12,0,9,4,1,20,1,0, +22,18,0,11,3,6,16,37,3,5,18,4,0,44,5,6, +32,3,1,57,3,7,2,3,4,29,10,2,17,6,0,1, +25,44,1,2,7,29,83,9,15,6,1,10,0,8,1,5, +32,4,0,4,68,0,3,0,7,11,3,0,0,1,2,9, +4,6,4,53,20,6,0,5,2,3,0,24,9,2,0,0, +22,13,8,8,16,16,15,22,0,51,80,6,0,3,12,0, +1,3,14,1,4,2,0,6,2,4,28,3,1,16,26,20, +3,76,3,3,109,12,53,40,8,19,1,35,4,3,14,21, +5,103,2,8,5,0,3,7,4,8,20,1,31,69,0,0, +39,68,3,9,15,12,4,7,16,12,23,1,13,9,7,1, +29,80,10,8,3,0,24,0,15,29,8,0,4,30,30,0, +38,3,0,9,12,2,2,0,7,11,18,5,3,25,3,0, +2,1,0,9,3,0,35,0,17,1,15,4,0,0,52,24, +0,2,0,63,7,46,3,1,7,9,29,3,1,2,7,16, +0,9,6,101,6,1,21,18,0,6,21,9,11,0,4,0, +3,0,19,1,0,0,38,3,4,66,0,9,2,32,5,4, +11,3,9,8,24,23,1,2,3,2,2,6,3,4,1,4, +26,0,0,0,12,0,2,8,0,1,49,25,0,0,0,0, +10,5,0,0,44,54,11,5,53,8,26,0,54,1,8,14, +68,6,7,13,2,7,0,9,2,38,0,31,1,2,0,2, +48,38,5,0,11,16,0,13,0,61,0,8,12,0,1,11, +2,20,1,3,42,3,0,3,9,0,2,1,4,14,32,0, +3,0,5,25,7,26,2,117,15,18,2,6,33,9,3,0, +29,5,9,9,12,5,4,8,3,4,0,0,41,4,1,2, +38,2,5,15,12,1,2,0,0,2,15,2,3,39,11,3, +89,22,0,36,24,4,50,5,8,5,20,3,50,14,0,0, +0,17,11,41,16,5,3,48,7,27,47,1,2,1,3,1, +4,0,18,2,2,8,0,0,7,60,2,62,21,0,1,8, +55,55,23,2,13,3,3,29,10,4,19,16,4,5,0,3, +35,15,1,4,3,3,0,8,0,15,4,0,4,69,16,3, +10,1,18,4,18,9,6,48,2,2,31,15,80,21,47,1, +0,2,59,15,3,14,2,30,7,1,3,5,0,24,1,0, +5,23,14,0,30,4,0,1,0,1,18,5,8,19,13,78, +3,5,0,26,34,5,5,12,0,1,7,5,10,2,1,14, +7,0,10,2,10,0,2,0,7,1,1,46,4,3,23,0, +21,4,59,0,0,27,56,11,9,27,1,3,0,13,3,11, +10,13,4,1,7,8,6,1,78,0,31,10,3,9,40,80, +69,14,3,77,21,0,0,3,1,2,0,3,2,5,7,5, +21,50,96,3,3,0,20,9,0,6,1,1,2,4,0,14, +0,0,0,5,0,32,12,45,6,32,3,20,12,0,0,28, +24,3,1,4,0,41,2,0,12,2,4,10,4,10,11,0, +30,11,44,10,68,20,2,121,0,5,1,10,21,14,22,35, +2,6,2,1,45,10,12,4,1,26,3,9,8,10,1,0, +26,23,11,1,19,39,0,0,0,84,13,4,7,38,30,9, +8,12,5,12,18,10,60,2,8,41,1,1,174,10,1,63, +0,37,0,50,73,13,0,4,2,0,6,1,42,55,13,4, +1,1,3,0,4,4,21,3,2,24,30,12,40,0,11,8, +4,6,45,2,6,1,15,18,31,8,0,57,1,73,34,19, +14,27,3,20,19,0,9,15,8,3,5,3,1,0,7,38, +10,20,40,62,25,12,1,1,0,5,4,4,22,1,18,6, +74,3,2,72,6,8,6,25,2,14,13,2,94,63,39,50, +0,26,41,0,55,2,22,89,8,1,0,3,7,1,1,0, +7,2,19,2,17,3,7,5,2,34,1,20,2,7,3,17, +2,7,24,2,54,3,1,0,7,0,0,0,4,3,7,2, +10,1,0,22,6,0,7,1,14,53,84,11,7,19,1,6, +31,3,10,20,121,1,1,1,5,6,0,21,2,0,10,0, +35,23,72,8,64,5,1,46,8,29,4,13,0,33,75,7, +2,48,55,17,0,23,84,0,1,5,0,2,3,15,11,5, +41,16,21,0,5,1,14,12,16,8,34,36,13,1,0,0, +8,19,0,0,14,6,14,0,7,10,2,23,0,31,4,0, +55,6,15,13,13,3,7,1,0,3,1,16,0,16,4,0, +41,0,5,1,0,1,0,1,4,16,2,1,0,0,3,7, +29,14,10,31,5,1,7,13,0,0,20,0,5,122,1,4, +20,1,25,14,0,0,7,45,6,0,8,3,24,0,0,3, +50,80,74,3,4,41,57,38,25,4,0,0,3,0,3,0, +2,8,31,72,11,9,7,15,12,0,0,5,2,15,2,3, +25,4,1,0,16,40,4,76,80,0,0,79,28,19,10,14, +0,2,106,8,27,1,3,21,2,49,27,0,2,27,0,21, +39,81,30,31,2,20,13,11,0,1,3,8,195,39,18,82, +7,47,0,5,88,1,126,1,1,0,0,6,4,77,6,1, +61,33,0,19,7,2,3,70,35,18,17,23,5,0,5,15, +0,11,0,19,22,0,45,0,0,45,13,5,2,55,11,8, +41,3,15,9,11,51,26,3,2,0,3,2,3,15,12,11, +2,4,79,1,6,26,151,1,5,11,4,6,1,15,7,3, +2,3,0,1,29,5,9,20,0,45,0,2,23,0,0,102, +14,19,0,1,6,14,14,1,1,0,18,0,8,36,0,0, +103,0,54,10,13,19,19,9,30,7,0,0,6,18,32,0, +40,4,5,24,0,10,5,10,54,6,13,0,11,21,28,7, +25,34,0,0,1,6,2,0,6,27,22,10,23,15,29,0, +16,0,2,48,18,95,16,3,1,22,21,12,6,12,0,50, +8,2,3,18,16,0,60,1,2,6,28,9,3,1,3,31, +77,42,8,24,36,13,21,7,10,27,18,1,14,9,29,22, +107,13,0,0,50,23,19,10,1,0,13,63,1,0,0,14, +13,7,0,19,0,27,14,1,3,4,5,1,7,9,35,10, +2,26,50,22,19,6,53,1,1,4,3,34,4,97,18,12, +30,1,4,29,14,22,27,0,0,3,6,0,33,1,20,3, +21,14,59,2,3,25,0,0,2,70,16,8,10,8,0,1, +0,4,9,16,4,20,3,5,1,61,10,22,86,7,0,0, +3,35,56,147,6,0,4,52,0,28,4,32,1,9,22,33, +3,33,0,29,0,3,11,0,7,2,2,20,2,3,57,49, +3,11,14,16,13,4,19,6,0,32,33,0,0,8,8,19, +6,9,69,45,15,4,2,3,74,11,8,3,3,28,27,9, +6,43,51,22,1,7,1,4,0,9,24,32,1,0,7,23, +22,53,25,0,57,0,56,0,10,1,65,0,0,6,53,21, +0,6,1,0,20,7,132,7,31,0,10,19,41,41,6,3, +1,7,22,2,0,12,10,19,65,0,5,40,7,5,171,9, +5,1,10,12,36,5,15,7,18,41,10,1,19,8,2,0, +62,23,1,11,7,4,54,3,7,11,179,56,0,21,18,2, +0,4,4,43,0,2,5,30,1,2,20,81,66,16,7,4, +6,10,3,0,26,0,20,0,7,11,0,18,5,0,2,9, +0,52,0,47,0,10,20,31,49,57,0,9,6,17,37,65, +13,1,26,2,100,1,7,1,16,33,29,5,8,51,15,0, +24,0,13,2,17,5,10,29,0,21,1,0,0,6,33,0, +2,20,0,0,3,0,10,12,0,3,16,9,14,2,0,0, +32,4,1,12,24,0,5,28,8,41,16,11,2,23,0,91, +0,18,5,15,16,0,3,88,3,11,0,2,38,0,15,55, +11,0,12,2,12,25,29,0,4,4,22,51,15,53,18,0, +0,2,10,29,0,37,5,14,3,0,7,13,0,34,71,7, +1,47,13,10,14,10,6,0,13,0,3,2,2,7,7,0, +8,22,39,0,35,29,17,15,54,18,33,2,14,24,102,4, +0,1,0,37,33,2,3,0,3,8,6,22,20,30,0,8, +12,2,27,7,4,1,2,17,2,1,79,19,1,5,36,26, +77,96,18,51,8,15,0,64,16,15,1,4,0,3,8,2, +6,4,12,1,5,33,1,5,0,13,2,83,71,41,1,7, +2,17,2,184,0,26,5,25,102,4,0,3,17,10,17,0, +5,1,16,47,4,2,105,0,4,5,3,12,14,0,4,37, +0,0,1,20,8,26,1,3,20,75,4,0,18,0,0,11, +2,0,0,0,1,0,50,4,31,3,0,0,32,1,0,22, +5,22,3,23,38,2,0,0,0,0,68,14,4,0,32,21, +7,91,8,7,0,40,13,8,19,14,1,47,6,62,3,36, +23,7,16,8,2,26,49,14,18,13,0,2,9,24,92,14, +37,18,28,30,1,1,0,36,2,7,3,15,11,55,0,6, +2,32,2,28,7,3,10,4,9,0,0,12,16,19,51,21, +1,1,7,10,8,3,11,2,8,21,2,3,33,23,10,97, +13,57,19,0,6,0,13,3,0,15,0,14,58,15,17,2, +5,2,0,38,11,0,0,15,5,0,2,21,6,0,3,0, +29,5,1,4,37,3,87,26,38,2,0,6,3,11,0,9, +0,10,6,6,4,20,7,27,18,23,25,9,19,6,5,5, +9,4,7,19,6,9,11,0,0,8,52,42,13,15,0,45, +2,105,13,7,18,17,46,0,1,7,14,10,44,23,17,28, +0,4,19,5,3,11,32,0,136,0,28,10,2,29,4,2, +41,4,9,19,0,11,3,3,0,40,13,4,0,3,3,49, +74,54,12,4,0,39,3,53,0,5,10,43,5,8,120,4, +4,13,2,5,83,13,28,2,25,5,6,66,3,1,4,52, +2,21,1,0,24,17,37,22,0,8,11,0,15,3,21,9, +0,29,5,69,22,87,4,12,3,27,5,30,3,7,3,25, +4,45,8,61,29,43,28,5,3,12,5,0,28,0,84,19, +0,100,28,53,8,56,8,4,2,62,0,30,16,8,5,8, +9,50,8,27,7,0,0,0,0,80,0,13,7,94,34,0, +42,6,79,0,0,11,11,25,2,3,10,2,23,30,1,12, +10,10,7,110,0,1,0,1,7,8,0,0,10,4,36,37, +1,32,9,34,2,26,5,11,32,7,0,8,4,0,37,1, +24,8,17,54,25,11,3,0,4,18,1,12,2,35,14,1, +11,28,3,5,0,13,32,5,0,14,2,11,7,5,51,4, +7,10,5,0,17,38,4,0,0,59,3,12,8,17,0,29, +24,148,0,34,39,15,48,25,29,16,33,0,22,4,8,38, +1,14,8,181,7,14,24,12,7,5,9,25,23,12,0,3, +0,9,0,2,2,25,0,37,52,61,5,6,44,15,4,4, +5,4,0,43,22,0,2,5,8,9,7,3,7,21,39,0, +109,4,22,88,17,29,92,70,5,25,10,38,28,21,52,14, +14,5,0,1,0,1,7,28,11,11,45,176,19,9,6,15, +65,1,65,5,97,109,1,19,0,1,52,157,4,39,16,0, +29,6,2,3,6,7,14,0,41,119,20,25,3,1,5,0, +41,36,6,47,0,81,5,3,42,79,7,6,0,7,16,3, +8,49,3,3,52,7,1,59,102,0,125,0,33,0,6,58, +20,22,12,30,99,19,63,2,2,42,3,26,0,4,3,36, +0,1,57,37,22,0,87,9,58,9,7,5,16,0,4,2, +61,4,4,3,9,0,3,21,2,93,88,0,0,2,1,7, +10,5,14,16,42,5,2,8,9,5,11,5,5,0,0,86, +0,0,14,0,2,3,44,70,2,60,80,1,32,61,13,5, +11,128,25,12,32,44,31,6,0,3,5,0,17,3,121,15, +45,20,2,4,62,27,18,4,8,58,98,14,0,28,60,43, +46,27,20,69,119,24,4,5,4,111,12,140,8,10,29,11, +0,50,23,18,53,1,13,0,1,0,1,2,30,10,17,3, +74,0,57,28,1,17,41,20,0,10,4,0,0,7,0,0, +25,86,18,12,80,62,27,0,72,4,74,0,2,5,42,0, +7,0,11,2,42,32,0,1,6,31,19,0,0,2,7,1, +6,16,17,29,15,4,53,0,12,30,12,14,7,4,59,16, +0,49,54,0,43,11,19,9,127,3,5,0,134,7,19,3, +3,0,0,25,5,6,3,38,10,2,97,0,11,4,1,24, +6,23,93,29,3,36,9,0,0,4,1,12,0,0,18,18, +0,1,89,3,2,3,2,37,0,5,28,5,1,21,9,22, +5,155,4,36,39,12,10,12,16,16,182,13,4,4,40,9, +3,0,28,44,5,2,58,15,13,7,26,12,48,0,30,8, +2,39,11,30,11,5,15,22,30,0,15,0,85,4,130,0, +14,25,15,3,3,10,2,2,17,0,19,0,4,0,156,51, +0,19,9,140,102,4,50,11,5,3,4,2,24,24,10,5, +33,4,0,29,0,37,6,5,22,0,25,31,102,22,11,6, +38,17,36,8,2,1,99,8,56,71,68,23,3,12,3,0, +0,0,22,123,83,5,28,25,3,20,0,8,16,4,1,18, +0,1,2,0,9,39,25,61,198,13,58,3,11,1,3,11, +7,5,6,7,19,102,1,14,16,24,68,35,13,6,7,97, +65,9,17,8,0,29,0,11,14,29,0,2,2,27,55,28, +9,15,8,1,10,15,4,3,17,1,0,6,67,0,14,4, +90,0,8,88,26,6,55,32,8,4,1,17,3,9,5,3, +17,211,59,13,20,60,37,0,0,5,10,39,44,6,12,47, +32,14,1,105,1,3,13,27,8,3,10,98,152,3,4,9, +45,17,9,4,3,18,65,0,82,73,1,10,4,8,9,0, +3,1,20,14,0,93,9,3,0,15,2,13,0,33,11,13, +2,30,39,47,8,1,32,100,39,17,3,10,61,19,0,2, +7,0,101,5,3,2,0,4,0,6,8,52,9,2,2,38, +17,0,0,97,108,32,0,1,28,38,18,10,18,10,26,178, +29,173,16,0,9,15,84,69,17,21,7,21,20,28,77,16, +3,0,1,14,77,49,1,1,2,9,9,7,16,39,7,1, +2,4,10,16,6,0,1,12,19,0,0,60,74,32,9,6, +56,6,1,6,10,1,10,1,1,27,52,0,28,46,25,164, +3,3,0,5,1,11,3,29,11,15,16,27,7,28,0,4, +4,27,7,3,19,2,2,2,3,1,51,11,14,5,20,125, +2,8,2,8,47,0,56,54,21,154,10,4,7,3,21,0, +65,1,6,35,1,16,12,45,32,60,7,3,16,109,1,0, +8,0,8,0,1,5,12,20,0,82,3,81,48,8,30,0, +8,3,1,12,0,45,3,22,2,1,4,0,85,2,11,7, +94,0,32,14,12,18,5,0,121,2,5,2,3,199,20,30, +51,42,23,8,35,13,1,15,0,6,2,5,17,9,1,49, +0,1,49,40,26,45,5,21,45,19,8,9,0,146,3,14, +1,4,2,52,6,10,0,0,0,16,0,0,12,6,2,3, +13,97,25,1,1,58,86,22,12,0,7,2,20,0,18,1, +3,1,22,6,45,3,72,77,44,4,1,6,2,24,2,1, +30,43,3,5,5,8,11,1,8,48,6,36,15,18,105,96, +59,12,2,2,5,1,12,1,19,0,70,0,17,0,24,1, +2,6,117,13,29,1,23,7,61,26,6,0,109,0,5,47, +13,92,61,22,0,30,4,9,2,4,172,41,0,3,50,5, +23,38,22,2,85,15,6,4,2,25,0,8,8,10,10,1, +26,0,1,21,18,86,21,15,9,46,84,4,43,29,24,16, +156,6,3,1,2,13,1,8,2,10,61,5,6,10,0,92, +12,25,48,27,13,51,30,54,57,0,10,11,7,51,2,119, +0,2,47,8,29,29,21,3,29,0,25,2,101,4,21,4, +30,14,14,36,2,6,1,1,0,29,0,31,0,12,4,26, +2,3,41,0,15,1,44,3,2,7,115,24,12,5,2,51, +7,1,4,2,7,104,29,21,6,5,14,5,0,42,0,37, +3,101,11,2,30,5,8,34,6,69,0,5,16,16,13,3, +34,0,1,55,2,46,10,18,32,3,2,3,0,5,7,1, +6,41,0,6,81,36,1,7,4,3,11,5,47,2,43,0, +0,1,9,4,14,34,16,12,27,2,107,0,4,60,154,14, +55,0,1,0,4,55,3,56,40,41,0,47,26,121,3,0, +67,33,5,2,1,44,91,29,5,69,5,4,61,2,10,3, +6,2,2,13,9,24,0,15,1,4,0,36,61,3,19,35, +34,4,0,1,91,0,80,6,3,0,7,3,6,4,16,1, +27,83,1,0,4,22,12,0,0,0,4,4,15,5,73,0, +6,8,5,1,3,25,71,97,37,9,13,110,13,70,10,8, +4,34,3,1,3,55,23,140,0,3,0,3,1,0,10,5, +17,3,42,15,9,0,27,8,59,13,11,15,75,13,2,25, +19,26,46,0,23,4,1,0,109,9,2,21,19,37,1,0, +58,28,75,12,32,15,0,97,0,1,17,3,1,28,12,7, +39,28,34,25,33,22,3,44,32,13,7,0,15,2,178,4, +6,13,0,44,1,0,22,0,0,52,15,3,94,12,12,34, +34,24,105,7,0,1,5,11,88,48,65,21,46,105,5,28, +0,34,22,36,2,82,0,7,117,1,29,27,17,24,2,0, +153,33,16,9,2,0,11,5,5,3,76,33,20,2,12,16, +2,30,109,6,6,11,84,49,5,2,23,0,18,174,18,22, +80,3,44,9,26,6,124,38,50,68,17,9,23,50,5,114, +1,0,0,0,19,14,41,26,13,2,2,1,44,2,9,76, +10,13,36,1,5,0,1,34,20,5,5,5,2,34,1,76, +7,48,3,4,6,1,197,0,33,12,0,1,10,61,92,13, +4,1,24,25,4,10,3,4,4,26,1,9,7,24,5,24, +1,46,7,10,65,16,31,1,6,66,6,9,9,14,0,28, +62,7,33,2,18,25,3,0,7,14,52,110,18,116,7,145, +4,15,17,69,1,5,0,22,131,6,57,20,39,3,5,0, +2,58,8,114,1,8,16,19,2,7,3,12,1,28,9,33, +5,29,1,30,8,2,19,21,78,103,17,2,99,71,36,16, +9,18,16,62,0,16,9,7,68,1,22,0,2,12,24,0, +19,15,110,0,20,12,16,110,60,4,147,1,5,56,17,7, +0,3,19,15,7,0,0,41,0,0,6,5,21,26,16,0, +5,11,44,38,0,1,6,40,23,93,4,63,2,9,56,5, +6,32,9,6,7,23,8,9,9,73,0,5,37,27,120,1, +57,41,176,0,1,6,57,36,9,93,89,0,1,5,6,78, +124,34,12,0,5,7,8,15,1,46,0,15,18,103,0,41, +5,24,4,29,4,55,1,155,8,38,53,17,2,52,0,236, +2,7,13,17,13,0,28,6,40,33,200,3,22,13,5,0, +0,15,13,1,71,82,1,111,24,34,28,0,25,15,6,33, +0,16,29,141,1,2,6,0,1,99,6,3,1,38,0,37, +0,31,66,42,0,0,47,0,3,1,115,26,8,22,19,2, +2,13,27,11,35,14,31,7,18,15,6,12,0,38,5,18, +195,15,12,0,7,42,26,10,38,30,33,13,63,48,10,8, +3,4,9,3,2,40,17,0,7,4,38,7,7,46,9,37, +41,2,4,5,6,0,5,5,17,2,78,7,4,36,36,0, +42,23,5,12,21,0,8,229,34,52,29,0,11,0,1,6, +23,165,11,9,0,20,6,3,24,14,15,21,48,95,24,39, +20,48,7,64,61,83,8,7,4,23,44,82,15,9,12,4, +7,16,7,15,0,2,7,49,10,18,2,24,58,0,79,166, +35,13,8,0,69,4,40,24,72,20,30,12,17,1,4,9, +9,75,7,21,8,86,7,0,0,138,0,54,13,44,151,42, +85,82,67,34,0,2,9,50,39,107,7,192,2,5,8,2, +52,1,10,7,6,69,12,34,15,0,11,6,45,11,8,29, +20,19,190,12,8,137,3,14,3,50,9,7,19,17,4,17, +26,34,0,7,7,21,1,4,85,185,5,62,2,0,62,63, +117,0,44,178,2,18,2,3,31,32,1,80,172,34,1,6, +1,4,12,1,42,5,40,5,8,2,4,47,4,0,0,38, +5,27,25,6,80,22,61,82,1,60,9,20,0,5,35,7, +1,0,6,9,3,0,41,21,21,0,24,20,45,0,1,0, +26,11,1,9,13,0,14,41,19,9,0,30,74,0,16,0, +16,47,5,2,97,38,5,0,46,18,2,6,10,51,0,2, +0,37,1,4,5,20,4,2,14,141,1,47,68,1,8,16, +4,27,7,38,8,0,20,0,5,45,53,1,1,4,15,1, +0,0,3,0,70,25,39,48,27,0,2,3,9,4,2,5, +3,0,10,10,8,2,6,89,4,1,87,3,99,41,33,34, +26,4,123,6,2,5,3,20,79,1,0,155,10,2,71,1, +15,9,20,33,6,2,18,0,88,0,2,3,38,21,5,36, +56,1,35,7,0,18,0,0,7,12,3,2,20,5,117,32, +11,6,33,17,49,112,9,67,147,24,31,14,2,0,184,56, +4,100,1,0,77,9,11,212,5,25,146,43,66,9,0,94, +1,5,16,16,14,11,66,7,85,1,4,5,47,11,84,0, +32,10,14,6,50,11,1,9,12,66,41,137,3,26,13,8, +28,31,7,9,59,5,13,2,116,8,19,18,4,21,6,14, +51,5,57,6,2,0,0,1,46,12,19,5,80,13,35,0, +18,156,38,33,18,1,146,11,0,10,12,1,3,1,63,6, +48,24,3,22,53,21,64,33,85,89,0,6,24,3,27,13, +9,1,32,35,30,15,1,2,47,13,4,63,33,0,1,0, +48,0,12,32,30,39,0,25,17,4,27,53,11,2,19,0, +3,7,45,43,4,16,37,37,62,59,5,1,0,83,7,37, +8,3,7,30,31,8,0,0,2,5,42,39,13,1,2,19, +15,11,0,18,20,4,1,0,0,45,5,3,0,4,1,11, +9,13,167,1,11,2,17,72,42,46,0,20,54,11,86,4, +21,5,2,4,3,0,142,4,7,81,0,55,19,61,19,158, +8,37,25,95,9,1,28,1,1,88,2,44,0,39,21,24, +31,4,37,17,121,107,2,7,11,2,13,52,127,2,12,51, +6,1,1,115,0,7,0,25,123,25,46,46,2,2,0,8, +0,18,12,34,1,3,19,1,11,33,82,15,99,0,9,77, +26,0,80,10,16,15,9,0,26,75,55,33,26,23,158,0, +37,74,50,61,10,0,17,81,4,6,19,2,23,16,2,30, +11,1,39,137,9,0,11,6,55,1,27,56,15,42,6,37, +9,35,17,68,20,0,1,2,31,93,24,38,64,1,4,11, +3,3,2,3,25,0,17,80,13,13,0,75,4,30,7,14, +2,0,0,5,85,34,6,26,25,46,38,3,0,6,7,128, +103,23,33,22,45,32,27,0,26,2,47,80,13,115,3,0, +2,0,70,181,1,227,0,31,4,19,234,3,0,76,7,9, +0,10,1,10,16,0,0,86,13,74,109,1,0,26,19,9, +1,46,0,89,1,143,57,37,7,0,43,127,55,89,13,5, +1,3,27,26,15,6,26,90,61,3,0,16,0,7,14,34, +22,0,19,2,111,80,44,52,2,10,127,6,44,15,24,11, +2,4,0,77,13,8,21,2,35,9,2,29,66,45,24,1, +0,7,10,2,2,2,16,46,174,14,101,3,1,6,88,0, +100,50,48,51,10,5,48,0,18,88,28,0,69,26,1,10, +10,20,10,1,2,36,13,142,91,3,21,186,0,12,11,3, +4,71,3,18,8,48,38,94,1,16,2,2,8,6,23,147, +0,157,2,52,3,156,0,68,34,0,2,20,83,29,42,4, +14,0,64,0,3,1,6,4,185,33,12,28,67,0,2,6, +45,10,0,2,20,86,40,10,61,9,5,48,3,18,0,1, +1,7,37,4,0,1,0,16,165,8,1,92,2,70,1,0, +74,7,2,12,75,31,0,3,3,27,0,1,40,0,10,4, +179,137,92,26,76,43,0,6,0,9,129,7,40,2,82,29, +8,31,146,3,44,90,3,12,1,73,10,6,35,95,16,10, +0,91,0,81,0,6,3,113,140,46,23,34,7,5,1,8, +3,31,20,139,64,9,2,50,50,16,0,0,11,5,37,31, +2,4,15,4,6,32,7,6,19,71,0,15,179,0,30,110, +8,2,0,33,7,29,35,1,0,37,3,3,102,1,1,37, +125,0,1,17,2,14,1,133,68,18,1,67,93,87,28,45, +23,9,20,58,16,31,59,4,17,71,0,18,2,1,58,81, +1,7,6,18,7,0,72,52,49,1,17,89,0,83,9,253, +92,1,2,66,5,100,8,73,3,3,0,22,24,34,19,24, +32,15,92,9,91,50,0,31,11,31,24,0,9,3,121,22, +22,24,44,124,14,35,73,5,0,66,72,8,14,42,28,8, +17,102,35,65,1,1,14,123,20,1,73,1,3,35,72,12, +15,2,7,138,1,62,79,20,3,26,0,3,5,1,185,3, +9,3,10,19,0,4,1,52,22,19,60,16,11,7,19,14, +29,101,16,80,159,1,0,65,1,6,112,108,4,11,171,33, +28,2,12,9,23,10,4,7,10,125,187,6,8,0,0,73, +42,6,77,91,5,64,113,3,0,12,31,6,50,27,23,131, +0,0,6,76,4,5,35,20,54,44,6,3,9,0,0,99, +0,20,38,106,88,16,4,0,8,12,4,18,234,1,113,0, +45,62,75,32,13,0,146,3,8,2,6,16,0,3,1,54, +99,97,3,18,35,7,18,101,1,31,16,210,22,150,9,27, +3,3,11,7,13,2,1,0,3,14,50,6,6,6,6,3, +0,13,0,0,8,1,36,11,12,187,15,7,17,3,18,63, +4,1,15,59,54,0,111,12,11,133,32,53,79,2,68,29, +0,0,86,0,41,3,24,4,12,35,206,11,18,2,0,7, +91,65,22,34,0,0,39,0,13,29,114,123,122,15,5,26, +0,0,42,68,7,15,1,0,3,0,0,8,45,17,1,89, +95,30,2,32,1,5,71,16,3,13,16,8,62,1,2,54, +42,14,150,39,8,39,18,64,88,0,106,98,71,13,19,13, +18,4,1,103,17,1,0,26,10,21,8,27,44,165,7,18, +0,0,85,0,211,19,0,11,0,13,0,1,0,85,16,6, +7,4,2,0,1,109,120,132,0,11,29,97,0,14,68,93, +3,11,2,16,117,22,3,145,10,18,50,33,37,10,1,19, +71,106,4,8,13,90,4,82,13,60,59,8,14,32,35,8, +4,61,0,70,14,9,21,6,200,7,75,36,20,48,1,18, +13,2,38,1,0,94,11,0,1,102,28,20,22,25,13,2, +44,69,219,56,4,5,4,8,52,49,29,37,9,36,43,56, +9,26,63,253,156,0,159,101,4,32,150,8,1,24,91,8, +13,0,62,0,0,0,209,99,36,31,24,71,119,71,0,16, +37,10,29,1,217,1,9,1,20,3,2,7,85,5,6,5, +4,4,85,49,126,2,100,7,5,229,10,58,99,54,14,33, +11,12,41,15,45,19,5,5,0,105,69,5,10,4,61,34, +0,8,3,182,9,0,61,41,0,9,0,5,13,38,46,0, +22,6,0,1,9,106,36,0,1,0,56,98,5,138,1,4, +70,0,5,17,34,25,42,14,58,0,0,0,7,14,0,19, +7,0,4,80,43,3,1,9,66,13,3,13,87,22,126,14, +1,217,9,2,91,2,54,58,3,0,34,29,1,6,31,24, +60,33,73,3,80,14,1,82,23,0,44,205,32,28,0,64, +50,154,16,18,69,0,8,2,2,37,53,70,6,7,19,25, +7,65,57,97,34,213,0,2,1,0,17,70,8,3,147,8, +2,35,7,122,0,81,32,0,0,13,28,253,171,50,51,110, +21,26,9,0,0,0,5,29,3,10,134,0,177,248,195,0, +3,75,8,85,0,12,66,110,0,37,12,0,157,46,4,3, +60,0,32,14,1,33,0,0,85,39,12,8,10,0,38,56, +3,7,27,35,2,15,42,49,11,26,0,113,6,9,0,23, +2,15,10,53,12,2,68,0,11,82,27,24,67,70,12,6, +127,21,3,0,0,0,54,2,27,66,1,137,0,2,9,54, +90,1,9,10,3,1,15,8,0,8,82,107,15,7,0,0, +0,3,131,2,6,24,34,70,41,12,8,62,138,5,39,114, +5,234,115,26,18,166,5,21,0,133,44,23,13,188,5,5, +0,17,1,7,13,13,2,17,30,84,26,46,155,26,0,37, +55,1,0,0,111,0,2,10,0,16,2,6,56,15,120,50, +187,0,16,1,131,72,0,29,21,179,34,15,3,2,11,20, +218,19,0,66,8,6,54,133,0,0,11,151,1,3,1,2, +9,12,41,64,5,241,7,73,10,20,11,6,58,2,28,237, +20,1,5,9,30,11,41,75,39,23,20,0,1,35,50,4, +4,13,44,23,4,5,63,9,22,14,3,0,99,7,0,31, +20,3,26,7,52,98,198,20,28,2,4,0,0,13,2,1, +2,16,9,10,6,0,21,12,174,3,81,24,171,9,42,0, +44,2,5,9,52,8,16,73,16,28,12,5,0,24,35,1, +48,172,6,0,43,121,79,31,43,51,1,10,58,63,29,6, +18,62,11,1,53,10,71,61,161,42,4,36,154,82,56,8, +5,2,32,35,100,13,10,159,8,104,10,0,7,12,11,77, +2,88,1,53,70,0,79,8,80,109,139,0,38,131,10,4, +7,2,23,61,1,0,18,51,9,5,18,172,5,110,4,10, +14,12,0,1,30,9,79,218,48,51,35,75,0,93,1,40, +79,72,124,6,0,0,11,19,43,1,5,94,1,26,191,3, +31,9,0,3,0,7,20,15,1,54,6,0,34,6,52,43, +27,5,147,1,0,30,162,50,14,35,0,39,2,37,139,25, +50,162,20,12,25,14,4,3,63,4,0,20,0,11,44,1, +1,20,5,4,0,68,49,0,145,6,36,0,29,3,42,115, +0,15,3,2,2,60,0,53,1,0,105,6,0,63,49,11, +7,5,10,56,1,11,8,5,4,9,92,1,31,197,51,2, +0,2,3,33,21,2,0,16,4,6,11,6,26,12,12,77, +16,5,24,10,114,3,10,70,4,19,17,0,3,0,4,81, +62,5,3,40,51,117,2,1,44,116,3,2,0,97,30,5, +4,0,13,1,3,12,21,20,102,1,54,1,5,126,15,12, +18,34,234,179,166,0,1,25,0,70,7,32,187,20,3,0, +57,9,65,1,78,10,82,31,0,3,96,2,15,13,19,0, +10,7,1,6,86,91,1,93,23,1,114,0,245,90,4,180, +14,39,16,3,68,1,5,74,1,7,136,20,5,14,4,31, +54,0,33,32,7,16,4,5,25,50,0,7,128,23,0,160, +29,46,112,0,5,19,104,41,70,6,7,237,0,9,18,13, +43,250,34,111,12,89,9,140,34,24,26,25,58,17,0,128, +20,36,83,44,34,250,0,61,0,0,110,13,107,177,14,0, +66,77,1,39,9,2,28,21,0,8,77,86,93,6,23,156, +34,15,11,18,7,37,4,14,96,10,23,0,95,80,3,61, +7,10,39,18,49,67,3,105,18,5,132,61,7,41,1,2, +38,40,3,92,4,0,90,9,0,87,34,22,2,5,130,248, +3,0,178,0,94,15,71,29,26,6,1,0,0,22,93,97, +86,63,6,13,20,10,1,52,5,93,3,57,40,2,0,1, +6,20,7,8,38,0,0,3,7,15,12,3,5,8,25,48, +14,89,76,77,72,0,71,20,20,3,0,0,42,42,11,18, +1,40,18,9,80,3,136,20,35,2,19,30,171,159,4,2, +94,18,0,1,33,91,44,5,0,10,0,3,37,9,115,15, +27,136,22,4,40,33,26,15,7,0,37,28,4,9,44,32, +17,35,5,1,25,21,10,1,20,31,0,5,11,1,26,183, +1,5,37,111,9,79,28,86,21,30,5,25,5,35,9,65, +6,0,97,45,2,117,8,44,7,11,225,5,70,99,157,0, +1,2,4,132,15,44,0,115,28,24,0,12,22,0,42,3, +25,89,40,244,33,82,26,156,49,58,52,0,47,2,117,24, +35,66,45,15,82,66,67,13,8,80,68,11,22,2,0,10, +1,47,30,1,203,68,19,76,157,34,110,33,21,135,6,51, +31,12,24,177,10,0,2,37,0,34,23,36,46,7,4,11, +5,5,17,21,226,7,33,7,22,149,52,0,78,59,5,52, +0,148,41,57,71,16,2,11,165,117,5,18,87,50,58,31, +2,1,12,49,2,0,1,42,2,94,0,7,72,94,4,130, +172,28,2,44,0,7,38,87,6,52,28,8,1,38,20,36, +0,13,184,40,0,59,147,0,20,80,7,165,16,1,18,36, +0,0,12,59,97,45,0,70,93,70,165,12,111,20,0,82, +36,0,202,23,35,49,149,4,1,1,128,15,1,49,100,11, +6,13,14,28,24,9,15,11,37,204,10,0,15,17,15,12, +39,0,17,16,80,97,84,4,16,70,58,121,75,148,67,5, +21,0,12,51,4,9,3,18,5,105,71,173,166,18,83,174, +5,11,208,19,123,0,29,0,4,0,88,23,109,61,66,97, +1,59,8,29,53,1,31,19,197,152,4,41,28,10,2,60, +112,2,5,58,9,193,45,80,10,57,9,36,104,131,1,212, +28,11,142,0,224,70,14,38,6,1,9,85,31,72,5,61, +8,77,9,8,7,38,0,21,0,63,53,0,8,4,9,3, +0,18,13,86,73,5,2,0,71,21,0,14,89,88,2,37, +41,19,25,1,69,28,18,132,2,4,3,29,0,82,26,8, +19,63,26,3,0,16,93,37,22,0,33,2,27,3,62,12, +}; + +/* The hash function */ +__private_extern__ ub4 phash(key, len) +char *key; +int len; +{ + ub4 rsl, val = lookup(key, len, 0x5384540f); + rsl = ((val>>17)^scramble[tab[val&0x1fff]]); + return rsl; +} + diff --git a/runtime/runtime.h b/runtime/runtime.h new file mode 100644 index 0000000..fd98fc5 --- /dev/null +++ b/runtime/runtime.h @@ -0,0 +1,483 @@ +/* + * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * 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@ + */ + +#ifndef _OBJC_RUNTIME_H +#define _OBJC_RUNTIME_H + +#import + +#import +#import +#import +#import +#import + + +/* Types */ + +typedef struct objc_method *Method; +typedef struct objc_ivar *Ivar; +typedef struct objc_category *Category; +typedef struct objc_property *objc_property_t; + +struct objc_class { + Class isa; + +#if !__OBJC2__ + Class super_class OBJC2_UNAVAILABLE; + const char *name OBJC2_UNAVAILABLE; + long version OBJC2_UNAVAILABLE; + long info OBJC2_UNAVAILABLE; + long instance_size OBJC2_UNAVAILABLE; + struct objc_ivar_list *ivars OBJC2_UNAVAILABLE; + struct objc_method_list **methodLists OBJC2_UNAVAILABLE; + struct objc_cache *cache OBJC2_UNAVAILABLE; + struct objc_protocol_list *protocols OBJC2_UNAVAILABLE; +#endif + +} OBJC2_UNAVAILABLE; +/* Use `Class` instead of `struct objc_class *` */ + +#ifdef __OBJC__ +@class Protocol; +#else +typedef struct objc_object Protocol; +#endif + +struct objc_method_description { + SEL name; + char *types; +}; +struct objc_method_description_list { + int count; + struct objc_method_description list[1]; +}; + +struct objc_protocol_list { + struct objc_protocol_list *next; + long count; + Protocol *list[1]; +}; + + +/* Functions */ + +OBJC_EXPORT id object_copy(id obj, size_t size); +OBJC_EXPORT id object_dispose(id obj); + +OBJC_EXPORT Class object_getClass(id obj) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Class object_setClass(id obj, Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *object_getClassName(id obj); +OBJC_EXPORT void *object_getIndexedIvars(id obj); + +OBJC_EXPORT id object_getIvar(id obj, Ivar ivar) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void object_setIvar(id obj, Ivar ivar, id value) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT Ivar object_setInstanceVariable(id obj, const char *name, void *value); +OBJC_EXPORT Ivar object_getInstanceVariable(id obj, const char *name, void **outValue); + +OBJC_EXPORT id objc_getClass(const char *name); +OBJC_EXPORT id objc_getMetaClass(const char *name); +OBJC_EXPORT id objc_lookUpClass(const char *name); +OBJC_EXPORT id objc_getRequiredClass(const char *name); +OBJC_EXPORT Class objc_getFutureClass(const char *name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void objc_setFutureClass(Class cls, const char *name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT int objc_getClassList(Class *buffer, int bufferCount); + +OBJC_EXPORT Protocol *objc_getProtocol(const char *name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Protocol **objc_copyProtocolList(unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *class_getName(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT BOOL class_isMetaClass(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Class class_getSuperclass(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Class class_setSuperclass(Class cls, Class newSuper) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER OBJC2_UNAVAILABLE; + +OBJC_EXPORT int class_getVersion(Class cls); +OBJC_EXPORT void class_setVersion(Class cls, int version); + +OBJC_EXPORT size_t class_getInstanceSize(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT Ivar class_getInstanceVariable(Class cls, const char *name); +OBJC_EXPORT Ivar class_getClassVariable(Class cls, const char *name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Ivar *class_copyIvarList(Class cls, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT Method class_getInstanceMethod(Class cls, SEL name); +OBJC_EXPORT Method class_getClassMethod(Class cls, SEL name); +OBJC_EXPORT IMP class_getMethodImplementation(Class cls, SEL name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT IMP class_getMethodImplementation_stret(Class cls, SEL name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT BOOL class_respondsToSelector(Class cls, SEL sel) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Method *class_copyMethodList(Class cls, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT BOOL class_conformsToProtocol(Class cls, Protocol *protocol) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Protocol **class_copyProtocolList(Class cls, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT objc_property_t class_getProperty(Class cls, const char *name) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *class_getIvarLayout(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *class_getWeakIvarLayout(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT id class_createInstance(Class cls, size_t extraBytes); + +OBJC_EXPORT Class objc_allocateClassPair(Class superclass, const char *name, + size_t extraBytes) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void objc_registerClassPair(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Class objc_duplicateClass(Class original, const char *name, + size_t extraBytes) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void objc_disposeClassPair(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT BOOL class_addMethod(Class cls, SEL name, IMP imp, + const char *types) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT IMP class_replaceMethod(Class cls, SEL name, IMP imp, + const char *types) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT BOOL class_addIvar(Class cls, const char *name, size_t size, + uint8_t alignment, const char *types) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT BOOL class_addProtocol(Class cls, Protocol *protocol) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void class_setIvarLayout(Class cls, const char *layout) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void class_setWeakIvarLayout(Class cls, const char *layout) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + + +OBJC_EXPORT SEL method_getName(Method m) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT IMP method_getImplementation(Method m) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *method_getTypeEncoding(Method m) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT unsigned int method_getNumberOfArguments(Method m); +OBJC_EXPORT char *method_copyReturnType(Method m) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT char *method_copyArgumentType(Method m, unsigned int index) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void method_getReturnType(Method m, char *dst, size_t dst_len) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void method_getArgumentType(Method m, unsigned int index, + char *dst, size_t dst_len) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT struct objc_method_description *method_getDescription(Method m) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT IMP method_setImplementation(Method m, IMP imp) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void method_exchangeImplementations(Method m1, Method m2) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *ivar_getName(Ivar v) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *ivar_getTypeEncoding(Ivar v) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT ptrdiff_t ivar_getOffset(Ivar v) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *property_getName(objc_property_t property) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *property_getAttributes(objc_property_t property) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT BOOL protocol_conformsToProtocol(Protocol *proto, Protocol *other) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT BOOL protocol_isEqual(Protocol *proto, Protocol *other) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *protocol_getName(Protocol *p) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT struct objc_method_description protocol_getMethodDescription(Protocol *p, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT struct objc_method_description *protocol_copyMethodDescriptionList(Protocol *p, BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT Protocol **protocol_copyProtocolList(Protocol *proto, unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char **objc_copyImageNames(unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char *class_getImageName(Class cls) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT const char **objc_copyClassNamesForImage(const char *image, + unsigned int *outCount) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT const char *sel_getName(SEL sel); +OBJC_EXPORT SEL sel_getUid(const char *str); +OBJC_EXPORT SEL sel_registerName(const char *str); +OBJC_EXPORT BOOL sel_isEqual(SEL lhs, SEL rhs) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT void objc_enumerationMutation(id) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +OBJC_EXPORT void objc_setEnumerationMutationHandler(void (*handler)(id)) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +OBJC_EXPORT void objc_setForwardHandler(void *fwd, void *fwd_stret) + AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + +#define _C_ID '@' +#define _C_CLASS '#' +#define _C_SEL ':' +#define _C_CHR 'c' +#define _C_UCHR 'C' +#define _C_SHT 's' +#define _C_USHT 'S' +#define _C_INT 'i' +#define _C_UINT 'I' +#define _C_LNG 'l' +#define _C_ULNG 'L' +#define _C_LNG_LNG 'q' +#define _C_ULNG_LNG 'Q' +#define _C_FLT 'f' +#define _C_DBL 'd' +#define _C_BFLD 'b' +#define _C_BOOL 'B' +#define _C_VOID 'v' +#define _C_UNDEF '?' +#define _C_PTR '^' +#define _C_CHARPTR '*' +#define _C_ATOM '%' +#define _C_ARY_B '[' +#define _C_ARY_E ']' +#define _C_UNION_B '(' +#define _C_UNION_E ')' +#define _C_STRUCT_B '{' +#define _C_STRUCT_E '}' +#define _C_VECTOR '!' +#define _C_CONST 'r' + + +/* Obsolete types */ + +#if !__OBJC2__ + +#define CLS_GETINFO(cls,infomask) ((cls)->info & (infomask)) +#define CLS_SETINFO(cls,infomask) ((cls)->info |= (infomask)) + +// class is not a metaclass +#define CLS_CLASS 0x1 +// class is a metaclass +#define CLS_META 0x2 +// class's +initialize method has completed +#define CLS_INITIALIZED 0x4 +// class is posing +#define CLS_POSING 0x8 +// unused +#define CLS_MAPPED 0x10 +// class and subclasses need cache flush during image loading +#define CLS_FLUSH_CACHE 0x20 +// method cache should grow when full +#define CLS_GROW_CACHE 0x40 +// unused +#define CLS_NEED_BIND 0x80 +// methodLists is array of method lists +#define CLS_METHOD_ARRAY 0x100 +// the JavaBridge constructs classes with these markers +#define CLS_JAVA_HYBRID 0x200 +#define CLS_JAVA_CLASS 0x400 +// thread-safe +initialize +#define CLS_INITIALIZING 0x800 +// bundle unloading +#define CLS_FROM_BUNDLE 0x1000 +// C++ ivar support +#define CLS_HAS_CXX_STRUCTORS 0x2000 +// Lazy method list arrays +#define CLS_NO_METHOD_ARRAY 0x4000 +// +load implementation +#define CLS_HAS_LOAD_METHOD 0x8000 +// objc_allocateClassPair API +#define CLS_CONSTRUCTING 0x10000 +// class compiled with bigger class structure +#define CLS_EXT 0x20000 + + +struct objc_category { + char *category_name OBJC2_UNAVAILABLE; + char *class_name OBJC2_UNAVAILABLE; + struct objc_method_list *instance_methods OBJC2_UNAVAILABLE; + struct objc_method_list *class_methods OBJC2_UNAVAILABLE; + struct objc_protocol_list *protocols OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + + +struct objc_ivar { + char *ivar_name OBJC2_UNAVAILABLE; + char *ivar_type OBJC2_UNAVAILABLE; + int ivar_offset OBJC2_UNAVAILABLE; +#ifdef __LP64__ + int space OBJC2_UNAVAILABLE; +#endif +} OBJC2_UNAVAILABLE; + +struct objc_ivar_list { + int ivar_count OBJC2_UNAVAILABLE; +#ifdef __LP64__ + int space OBJC2_UNAVAILABLE; +#endif + /* variable length structure */ + struct objc_ivar ivar_list[1] OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + + +struct objc_method { + SEL method_name OBJC2_UNAVAILABLE; + char *method_types OBJC2_UNAVAILABLE; + IMP method_imp OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + +struct objc_method_list { + struct objc_method_list *obsolete OBJC2_UNAVAILABLE; + + int method_count OBJC2_UNAVAILABLE; +#ifdef __LP64__ + int space OBJC2_UNAVAILABLE; +#endif + /* variable length structure */ + struct objc_method method_list[1] OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + + +typedef struct objc_symtab *Symtab OBJC2_UNAVAILABLE; + +struct objc_symtab { + unsigned long sel_ref_cnt OBJC2_UNAVAILABLE; + SEL *refs OBJC2_UNAVAILABLE; + unsigned short cls_def_cnt OBJC2_UNAVAILABLE; + unsigned short cat_def_cnt OBJC2_UNAVAILABLE; + void *defs[1] /* variable size */ OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + + +typedef struct objc_cache *Cache OBJC2_UNAVAILABLE; + +#define CACHE_BUCKET_NAME(B) ((B)->method_name) +#define CACHE_BUCKET_IMP(B) ((B)->method_imp) +#define CACHE_BUCKET_VALID(B) (B) +#ifndef __LP64__ +#define CACHE_HASH(sel, mask) (((uintptr_t)(sel)>>2) & (mask)) +#else +#define CACHE_HASH(sel, mask) (((unsigned int)((uintptr_t)(sel)>>3)) & (mask)) +#endif +struct objc_cache { + unsigned int mask /* total = mask + 1 */ OBJC2_UNAVAILABLE; + unsigned int occupied OBJC2_UNAVAILABLE; + Method buckets[1] OBJC2_UNAVAILABLE; +} /* GrP fixme should be OBJC2_UNAVAILABLE, but isn't because of spurious warnings in [super ...] calls */; + + +typedef struct objc_module *Module OBJC2_UNAVAILABLE; + +struct objc_module { + unsigned long version OBJC2_UNAVAILABLE; + unsigned long size OBJC2_UNAVAILABLE; + const char *name OBJC2_UNAVAILABLE; + Symtab symtab OBJC2_UNAVAILABLE; +} OBJC2_UNAVAILABLE; + +#else + +struct objc_method_list; + +#endif + + +/* Obsolete functions */ + +OBJC_EXPORT BOOL sel_isMapped(SEL sel) OBJC2_UNAVAILABLE; + +OBJC_EXPORT id object_copyFromZone(id anObject, size_t nBytes, void *z) OBJC2_UNAVAILABLE; +OBJC_EXPORT id object_realloc(id anObject, size_t nBytes) OBJC2_UNAVAILABLE; +OBJC_EXPORT id object_reallocFromZone(id anObject, size_t nBytes, void *z) OBJC2_UNAVAILABLE; + +#define OBSOLETE_OBJC_GETCLASSES 1 +OBJC_EXPORT void *objc_getClasses(void) OBJC2_UNAVAILABLE; +OBJC_EXPORT void objc_addClass(Class myClass) OBJC2_UNAVAILABLE; +OBJC_EXPORT void objc_setClassHandler(int (*)(const char *)) OBJC2_UNAVAILABLE; +OBJC_EXPORT void objc_setMultithreaded (BOOL flag) OBJC2_UNAVAILABLE; + +OBJC_EXPORT id class_createInstanceFromZone(Class, size_t idxIvars, void *z) OBJC2_UNAVAILABLE; + +OBJC_EXPORT void class_addMethods(Class, struct objc_method_list *) OBJC2_UNAVAILABLE; +OBJC_EXPORT void class_removeMethods(Class, struct objc_method_list *) OBJC2_UNAVAILABLE; + +OBJC_EXPORT Class class_poseAs(Class imposter, Class original) OBJC2_UNAVAILABLE; + +OBJC_EXPORT unsigned int method_getSizeOfArguments(Method m) OBJC2_UNAVAILABLE; +OBJC_EXPORT unsigned method_getArgumentInfo(struct objc_method *m, int arg, const char **type, int *offset) OBJC2_UNAVAILABLE; + +OBJC_EXPORT BOOL class_respondsToMethod(Class, SEL) OBJC2_UNAVAILABLE; +OBJC_EXPORT IMP class_lookupMethod(Class, SEL) OBJC2_UNAVAILABLE; +OBJC_EXPORT Class objc_getOrigClass(const char *name) OBJC2_UNAVAILABLE; +#define OBJC_NEXT_METHOD_LIST 1 +OBJC_EXPORT struct objc_method_list *class_nextMethodList(Class, void **) OBJC2_UNAVAILABLE; +// usage for nextMethodList +// +// void *iterator = 0; +// struct objc_method_list *mlist; +// while ( mlist = class_nextMethodList( cls, &iterator ) ) +// ; + +OBJC_EXPORT id (*_alloc)(Class, size_t) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_copy)(id, size_t) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_realloc)(id, size_t) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_dealloc)(id) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_zoneAlloc)(Class, size_t, void *) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_zoneRealloc)(id, size_t, void *) OBJC2_UNAVAILABLE; +OBJC_EXPORT id (*_zoneCopy)(id, size_t, void *) OBJC2_UNAVAILABLE; +OBJC_EXPORT void (*_error)(id, const char *, va_list) OBJC2_UNAVAILABLE; + +#endif diff --git a/runtime/standard.h b/runtime/standard.h new file mode 100644 index 0000000..7d471e2 --- /dev/null +++ b/runtime/standard.h @@ -0,0 +1,54 @@ +/* +------------------------------------------------------------------------------ +Standard definitions and types, Bob Jenkins +------------------------------------------------------------------------------ +*/ +#ifndef STANDARD +# define STANDARD + +#include +#include +#include +#include + +typedef uint64_t ub8; +#define UB8MAXVAL 0xffffffffffffffffLL +#define UB8BITS 64 +typedef int64_t sb8; +#define SB8MAXVAL 0x7fffffffffffffffLL +typedef uint32_t ub4; /* unsigned 4-byte quantities */ +#define UB4MAXVAL 0xffffffff +typedef int32_t sb4; +#define UB4BITS 32 +#define SB4MAXVAL 0x7fffffff +typedef uint16_t ub2; +#define UB2MAXVAL 0xffff +#define UB2BITS 16 +typedef int16_t sb2; +#define SB2MAXVAL 0x7fff +typedef uint8_t ub1; +#define UB1MAXVAL 0xff +#define UB1BITS 8 +typedef int8_t sb1; /* signed 1-byte quantities */ +#define SB1MAXVAL 0x7f +typedef int word; /* fastest type available */ + +#define bis(target,mask) ((target) |= (mask)) +#define bic(target,mask) ((target) &= ~(mask)) +#define bit(target,mask) ((target) & (mask)) +#ifndef min +# define min(a,b) (((a)<(b)) ? (a) : (b)) +#endif /* min */ +#ifndef max +# define max(a,b) (((a)<(b)) ? (b) : (a)) +#endif /* max */ +#ifndef align +# define align(a) (((ub4)a+(sizeof(void *)-1))&(~(sizeof(void *)-1))) +#endif /* align */ +#ifndef abs +# define abs(a) (((a)>0) ? (a) : -(a)) +#endif +#define TRUE 1 +#define FALSE 0 + +#endif /* STANDARD */ -- 2.47.2