Overview
Comment: | runtime: Add class_getInstanceMethod() |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9e23a50de70b58b7afe8353735585652 |
User & Date: | js on 2019-12-13 00:00:54 |
Other Links: | manifest | tags |
Context
2019-12-14
| ||
18:48 | OFNumber: Add -[stringValue] check-in: f5558d0919 user: js tags: trunk | |
2019-12-13
| ||
00:00 | runtime: Add class_getInstanceMethod() check-in: 9e23a50de7 user: js tags: trunk | |
2019-12-12
| ||
23:30 | Remove OFIntrospection check-in: a989f0ab6f user: js tags: trunk | |
Changes
Modified src/OFObject.m from [349b3d550a] to [507689f6ed].
︙ | ︙ | |||
101 102 103 104 105 106 107 | } allocFailedException; uint32_t of_hash_seed; static const char * typeEncodingForSelector(Class class, SEL selector) { | < < < | | | < | 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | } allocFailedException; uint32_t of_hash_seed; static const char * typeEncodingForSelector(Class class, SEL selector) { Method method; if ((method = class_getInstanceMethod(class, selector)) == NULL) return NULL; return method_getTypeEncoding(method); } #if !defined(OF_APPLE_RUNTIME) || defined(__OBJC2__) static void uncaughtExceptionHandler(id exception) { OFString *description = [exception description]; |
︙ | ︙ |
Modified src/runtime/ObjFWRT.h from [752b8568a9] to [b950544256].
︙ | ︙ | |||
106 107 108 109 110 111 112 | SEL _Nonnull selector); extern bool class_conformsToProtocol(Class _Nullable class_, Protocol *_Nonnull protocol); extern IMP _Nullable class_getMethodImplementation(Class _Nullable class_, SEL _Nonnull selector); extern IMP _Nullable class_getMethodImplementation_stret(Class _Nullable class_, SEL _Nonnull selector); | | | 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | SEL _Nonnull selector); extern bool class_conformsToProtocol(Class _Nullable class_, Protocol *_Nonnull protocol); extern IMP _Nullable class_getMethodImplementation(Class _Nullable class_, SEL _Nonnull selector); extern IMP _Nullable class_getMethodImplementation_stret(Class _Nullable class_, SEL _Nonnull selector); extern Method _Nullable class_getInstanceMethod(Class _Nullable class_, SEL _Nonnull selector); extern bool class_addMethod(Class _Nonnull class_, SEL _Nonnull selector, IMP _Nonnull implementation, const char *_Nullable typeEncoding); extern IMP _Nullable class_replaceMethod(Class _Nonnull class_, SEL _Nonnull selector, IMP _Nonnull implementation, const char *_Nullable typeEncoding); extern Class _Nullable object_getClass(id _Nullable object); |
︙ | ︙ |
Modified src/runtime/amiga-glue.m from [2e81cbccc1] to [066d6109b5].
︙ | ︙ | |||
503 504 505 506 507 508 509 | { M68K_ARG(Class, class, a0) M68K_ARG(SEL, selector, a1) return class_getMethodImplementation_stret(class, selector); } | | | | | 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 | { M68K_ARG(Class, class, a0) M68K_ARG(SEL, selector, a1) return class_getMethodImplementation_stret(class, selector); } Method __saveds glue_class_getInstanceMethod PPC_PARAMS(Class class, SEL selector) { M68K_ARG(Class, class, a0) M68K_ARG(SEL, selector, a1) return class_getInstanceMethod(class, selector); } bool __saveds glue_class_addMethod PPC_PARAMS(Class class, SEL selector, IMP implementation, const char *typeEncoding) { M68K_ARG(Class, class, a0) |
︙ | ︙ |
Modified src/runtime/amiga-library.m from [9e632d2539] to [947d91885b].
︙ | ︙ | |||
60 61 62 63 64 65 66 | extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; #endif extern bool glue_objc_init(void); extern void glue___objc_exec_class(void); | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; #endif extern bool glue_objc_init(void); extern void glue___objc_exec_class(void); extern IMP glue_objc_msg_lookup(void); extern IMP glue_objc_msg_lookup_stret(void); extern IMP glue_objc_msg_lookup_super(void); extern IMP glue_objc_msg_lookup_super_stret(void); extern Class glue_objc_lookUpClass(void); extern Class glue_objc_getClass(void); extern Class glue_objc_getRequiredClass(void); extern Class glue_objc_lookup_class(void); extern Class glue_objc_get_class(void); extern void glue_objc_exception_throw(void); extern int glue_objc_sync_enter(void); extern int glue_objc_sync_exit(void); extern id glue_objc_getProperty(void); extern void glue_objc_setProperty(void); extern void glue_objc_getPropertyStruct(void); extern void glue_objc_setPropertyStruct(void); extern void glue_objc_enumerationMutation(void); extern int glue___gnu_objc_personality(void); extern id glue_objc_retain(void); extern id glue_objc_retainBlock(void); extern id glue_objc_retainAutorelease(void); extern void glue_objc_release(void); extern id glue_objc_autorelease(void); extern id glue_objc_autoreleaseReturnValue(void); extern id glue_objc_retainAutoreleaseReturnValue(void); extern id glue_objc_retainAutoreleasedReturnValue(void); extern id glue_objc_storeStrong(void); extern id glue_objc_storeWeak(void); extern id glue_objc_loadWeakRetained(void); extern id glue_objc_initWeak(void); extern void glue_objc_destroyWeak(void); extern id glue_objc_loadWeak(void); extern void glue_objc_copyWeak(void); extern void glue_objc_moveWeak(void); extern SEL glue_sel_registerName(void); extern const char *glue_sel_getName(void); extern bool glue_sel_isEqual(void); extern Class glue_objc_allocateClassPair(void); extern void glue_objc_registerClassPair(void); extern unsigned int glue_objc_getClassList(void); extern Class *glue_objc_copyClassList(void); extern bool glue_class_isMetaClass(void); extern const char *glue_class_getName(void); extern Class glue_class_getSuperclass(void); extern unsigned long glue_class_getInstanceSize(void); extern bool glue_class_respondsToSelector(void); extern bool glue_class_conformsToProtocol(void); extern IMP glue_class_getMethodImplementation(void); extern IMP glue_class_getMethodImplementation_stret(void); extern Method glue_class_getInstanceMethod(void); extern bool glue_class_addMethod(void); extern IMP glue_class_replaceMethod(void); extern Class glue_object_getClass(void); extern Class glue_object_setClass(void); extern const char *glue_object_getClassName(void); extern const char *glue_protocol_getName(void); extern bool glue_protocol_isEqual(void); extern bool glue_protocol_conformsToProtocol(void); extern objc_uncaught_exception_handler_t glue_objc_setUncaughtExceptionHandler(void); extern void glue_objc_setForwardHandler(void); extern void glue_objc_setEnumerationMutationHandler(void); extern void glue_objc_zero_weak_references(void); extern void glue_objc_exit(void); extern Ivar *glue_class_copyIvarList(void); extern const char *glue_ivar_getName(void); |
︙ | ︙ | |||
627 628 629 630 631 632 633 | (CONST_APTR)glue_class_getName, (CONST_APTR)glue_class_getSuperclass, (CONST_APTR)glue_class_getInstanceSize, (CONST_APTR)glue_class_respondsToSelector, (CONST_APTR)glue_class_conformsToProtocol, (CONST_APTR)glue_class_getMethodImplementation, (CONST_APTR)glue_class_getMethodImplementation_stret, | | | 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 | (CONST_APTR)glue_class_getName, (CONST_APTR)glue_class_getSuperclass, (CONST_APTR)glue_class_getInstanceSize, (CONST_APTR)glue_class_respondsToSelector, (CONST_APTR)glue_class_conformsToProtocol, (CONST_APTR)glue_class_getMethodImplementation, (CONST_APTR)glue_class_getMethodImplementation_stret, (CONST_APTR)glue_class_getInstanceMethod, (CONST_APTR)glue_class_addMethod, (CONST_APTR)glue_class_replaceMethod, (CONST_APTR)glue_object_getClass, (CONST_APTR)glue_object_setClass, (CONST_APTR)glue_object_getClassName, (CONST_APTR)glue_protocol_getName, (CONST_APTR)glue_protocol_isEqual, |
︙ | ︙ |
Modified src/runtime/amigaos3.sfd from [313504d85b] to [49f4c1e562].
︙ | ︙ | |||
53 54 55 56 57 58 59 | const char *_Nullable glue_class_getName(Class _Nullable class_)(a0) Class _Nullable glue_class_getSuperclass(Class _Nullable class_)(a0) unsigned long glue_class_getInstanceSize(Class _Nullable class_)(a0) bool glue_class_respondsToSelector(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) bool glue_class_conformsToProtocol(Class _Nullable class_, Protocol *_Nonnull p)(a0,a1) IMP _Nullable glue_class_getMethodImplementation(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) IMP _Nullable glue_class_getMethodImplementation_stret(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) | | | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | const char *_Nullable glue_class_getName(Class _Nullable class_)(a0) Class _Nullable glue_class_getSuperclass(Class _Nullable class_)(a0) unsigned long glue_class_getInstanceSize(Class _Nullable class_)(a0) bool glue_class_respondsToSelector(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) bool glue_class_conformsToProtocol(Class _Nullable class_, Protocol *_Nonnull p)(a0,a1) IMP _Nullable glue_class_getMethodImplementation(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) IMP _Nullable glue_class_getMethodImplementation_stret(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) Method _Nullable glue_class_getInstanceMethod(Class _Nullable class_, SEL _Nonnull selector)(a0,a1) bool glue_class_addMethod(Class _Nonnull class_, SEL _Nonnull selector, IMP _Nonnull implementation, const char *_Nullable typeEncoding)(a0,a1,a2,a3) IMP _Nullable glue_class_replaceMethod(Class _Nonnull class_, SEL _Nonnull selector, IMP _Nonnull implementation, const char *_Nullable typeEncoding)(a0,a1,a2,a3) Class _Nullable glue_object_getClass(id _Nullable object)(a0) Class _Nullable glue_object_setClass(id _Nullable object, Class _Nonnull class_)(a0,a1) const char *_Nullable glue_object_getClassName(id _Nullable object)(a0) const char *_Nonnull glue_protocol_getName(Protocol *_Nonnull protocol)(a0) bool glue_protocol_isEqual(Protocol *_Nonnull protocol1, Protocol *_Nonnull protocol2)(a0,a1) |
︙ | ︙ |
Modified src/runtime/class.m from [9e1fe8b99e] to [415251c564].
︙ | ︙ | |||
766 767 768 769 770 771 772 | methodList->methods[0].implementation = implementation; class->methodList = methodList; objc_update_dtable(class); } | | | | > < | > > | | | 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 | methodList->methods[0].implementation = implementation; class->methodList = methodList; objc_update_dtable(class); } Method class_getInstanceMethod(Class class, SEL selector) { Method method; Class superclass; if (class == Nil) return NULL; objc_global_mutex_lock(); if ((method = getMethod(class, selector)) != NULL) { objc_global_mutex_unlock(); return method; } superclass = class->superclass; objc_global_mutex_unlock(); if (superclass != Nil) return class_getInstanceMethod(superclass, selector); return NULL; } bool class_addMethod(Class class, SEL selector, IMP implementation, const char *typeEncoding) |
︙ | ︙ |
Modified src/runtime/linklib/linklib.m from [962890f13f] to [df8b8ee743].
︙ | ︙ | |||
500 501 502 503 504 505 506 | IMP class_getMethodImplementation_stret(Class class, SEL selector) { return glue_class_getMethodImplementation_stret(class, selector); } | | | | | 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 | IMP class_getMethodImplementation_stret(Class class, SEL selector) { return glue_class_getMethodImplementation_stret(class, selector); } Method class_getInstanceMethod(Class class, SEL selector) { return glue_class_getInstanceMethod(class, selector); } bool class_addMethod(Class class, SEL selector, IMP implementation, const char *typeEncoding) { return glue_class_addMethod(class, selector, implementation, |
︙ | ︙ |
Modified src/runtime/morphos-clib.h from [c0d4505658] to [ad80976596].
︙ | ︙ | |||
47 48 49 50 51 52 53 | const char *glue_class_getName(Class); Class glue_class_getSuperclass(Class); unsigned long glue_class_getInstanceSize(Class); bool glue_class_respondsToSelector(Class, SEL); bool glue_class_conformsToProtocol(Class, Protocol *); IMP glue_class_getMethodImplementation(Class, SEL); IMP glue_class_getMethodImplementation_stret(Class, SEL); | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | const char *glue_class_getName(Class); Class glue_class_getSuperclass(Class); unsigned long glue_class_getInstanceSize(Class); bool glue_class_respondsToSelector(Class, SEL); bool glue_class_conformsToProtocol(Class, Protocol *); IMP glue_class_getMethodImplementation(Class, SEL); IMP glue_class_getMethodImplementation_stret(Class, SEL); Method glue_class_getInstanceMethod(Class, SEL); bool glue_class_addMethod(Class class_, SEL selector, IMP, const char *); IMP glue_class_replaceMethod(Class, SEL, IMP, const char *); Class glue_object_getClass(id); Class glue_object_setClass(id, Class); const char *glue_object_getClassName(id); const char *glue_protocol_getName(Protocol *); bool glue_protocol_isEqual(Protocol *, Protocol *); |
︙ | ︙ |
Modified src/runtime/morphos.fd from [946400c8ab] to [826761c847].
︙ | ︙ | |||
49 50 51 52 53 54 55 | glue_class_getName(class_)(sysv,r12base) glue_class_getSuperclass(class_)(sysv,r12base) glue_class_getInstanceSize(class_)(sysv,r12base) glue_class_respondsToSelector(class_,selector)(sysv,r12base) glue_class_conformsToProtocol(class_,p)(sysv,r12base) glue_class_getMethodImplementation(class_,selector)(sysv,r12base) glue_class_getMethodImplementation_stret(class_,selector)(sysv,r12base) | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | glue_class_getName(class_)(sysv,r12base) glue_class_getSuperclass(class_)(sysv,r12base) glue_class_getInstanceSize(class_)(sysv,r12base) glue_class_respondsToSelector(class_,selector)(sysv,r12base) glue_class_conformsToProtocol(class_,p)(sysv,r12base) glue_class_getMethodImplementation(class_,selector)(sysv,r12base) glue_class_getMethodImplementation_stret(class_,selector)(sysv,r12base) glue_class_getInstanceMethod(class_,selector)(sysv,r12base) glue_class_addMethod(class_,selector,implementation,typeEncoding)(sysv,r12base) glue_class_replaceMethod(class_,selector,implementation,typeEncoding)(sysv,r12base) glue_object_getClass(object)(sysv,r12base) glue_object_setClass(object,class_)(sysv,r12base) glue_object_getClassName(object)(sysv,r12base) glue_protocol_getName(protocol)(sysv,r12base) glue_protocol_isEqual(protocol1,protocol2)(sysv,r12base) |
︙ | ︙ |