ObjFW  Check-in [10b3fbc5fc]

Overview
Comment:Make objc_msg_lookup_super public.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | runtime
Files: files | file ages | folders
SHA3-256: 10b3fbc5fcb5cf4565dac222b2315eac9b6cfec923189b1643bd01db54175a7c
User & Date: js on 2012-04-06 12:14:15
Other Links: branch diff | manifest | tags
Context
2012-04-06
13:43
Convert lookup-amd64-elf.S to AT&T syntax. check-in: d3ce57addf user: js tags: runtime
12:14
Make objc_msg_lookup_super public. check-in: 10b3fbc5fc user: js tags: runtime
2012-04-03
18:42
Fix includes in OFBlockTests for ObjFW runtime. check-in: 917e9dff1f user: js tags: runtime
Changes

Modified src/runtime/lookup.m from [29b33e14c4] to [40605ab2a2].

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	if ((imp = objc_sparsearray_get(obj->isa->dtable, sel->uid)) == NULL)
		return objc_forward_handler(obj, sel);

	return imp;
}

IMP
objc_msg_lookup_super(struct objc_abi_super *super, SEL sel)
{
	IMP imp;

	if (super->self == nil)
		return (IMP)nil_method;

	imp = objc_sparsearray_get(super->class->dtable, sel->uid);







|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	if ((imp = objc_sparsearray_get(obj->isa->dtable, sel->uid)) == NULL)
		return objc_forward_handler(obj, sel);

	return imp;
}

IMP
objc_msg_lookup_super(struct objc_super *super, SEL sel)
{
	IMP imp;

	if (super->self == nil)
		return (IMP)nil_method;

	imp = objc_sparsearray_get(super->class->dtable, sel->uid);

Modified src/runtime/runtime-private.h from [76682de6f9] to [8f5d45afbf].

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	const char *category_name;
	const char *class_name;
	struct objc_abi_method_list *instance_methods;
	struct objc_abi_method_list *class_methods;
	struct objc_protocol_list *protocols;
};

struct objc_abi_super {
	id self;
	Class class;
};

struct objc_abi_method_description {
	const char *name;
	const char *types;
};

struct objc_abi_method_description_list {
	int count;







<
<
<
<
<







56
57
58
59
60
61
62





63
64
65
66
67
68
69
	const char *category_name;
	const char *class_name;
	struct objc_abi_method_list *instance_methods;
	struct objc_abi_method_list *class_methods;
	struct objc_protocol_list *protocols;
};






struct objc_abi_method_description {
	const char *name;
	const char *types;
};

struct objc_abi_method_description_list {
	int count;

Modified src/runtime/runtime.h from [a509668aea] to [7dcff464ae].

62
63
64
65
66
67
68





69
70
71
72
73
74
75
	Class isa;
};

struct objc_selector {
	uintptr_t uid;
	const char *types;
};






struct objc_method {
	struct objc_selector sel;
	IMP imp;
};

struct objc_method_list {







>
>
>
>
>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
	Class isa;
};

struct objc_selector {
	uintptr_t uid;
	const char *types;
};

struct objc_super {
	id self;
	Class class;
};

struct objc_method {
	struct objc_selector sel;
	IMP imp;
};

struct objc_method_list {
108
109
110
111
112
113
114

115
116
117
118
extern unsigned long class_getInstanceSize(Class);
extern BOOL class_respondsToSelector(Class, SEL);
extern BOOL class_conformsToProtocol(Class, Protocol*);
extern IMP class_getMethodImplementation(Class, SEL);
extern IMP class_replaceMethod(Class, SEL, IMP, const char*);
extern const char* objc_get_type_encoding(Class, SEL);
extern IMP objc_msg_lookup(id, SEL);

extern void objc_thread_add(void);
extern void objc_thread_remove(void);
extern void objc_exit(void);
#endif







>




113
114
115
116
117
118
119
120
121
122
123
124
extern unsigned long class_getInstanceSize(Class);
extern BOOL class_respondsToSelector(Class, SEL);
extern BOOL class_conformsToProtocol(Class, Protocol*);
extern IMP class_getMethodImplementation(Class, SEL);
extern IMP class_replaceMethod(Class, SEL, IMP, const char*);
extern const char* objc_get_type_encoding(Class, SEL);
extern IMP objc_msg_lookup(id, SEL);
extern IMP objc_msg_lookup_super(struct objc_super*, SEL);
extern void objc_thread_add(void);
extern void objc_thread_remove(void);
extern void objc_exit(void);
#endif