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
|
if (cls->superclass != Nil)
dtable = objc_sparsearray_copy(cls->superclass->dtable);
else
dtable = objc_sparsearray_new();
for (ml = cls->methodlist; ml != NULL; ml = ml->next)
for (i = 0; i < ml->count; i++)
objc_sparsearray_set(dtable,
(uint32_t)ml->methods[i].name, ml->methods[i].imp);
if ((cats = objc_categories_for_class(cls)) != NULL) {
for (i = 0; cats[i] != NULL; i++) {
unsigned int j;
ml = (cls->info & OBJC_CLASS_INFO_CLASS ?
cats[i]->instance_methods : cats[i]->class_methods);
for (; ml != NULL; ml = ml->next)
for (j = 0; j < ml->count; j++)
objc_sparsearray_set(dtable,
(uint32_t)ml->methods[j].name,
ml->methods[j].imp);
}
}
if (cls->dtable != NULL)
objc_sparsearray_free_when_singlethreaded(cls->dtable);
|
|
|
|
|
|
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
|
if (cls->superclass != Nil)
dtable = objc_sparsearray_copy(cls->superclass->dtable);
else
dtable = objc_sparsearray_new();
for (ml = cls->methodlist; ml != NULL; ml = ml->next)
for (i = 0; i < ml->count; i++)
objc_sparsearray_set(dtable, (uint32_t)
(uintptr_t)ml->methods[i].name, ml->methods[i].imp);
if ((cats = objc_categories_for_class(cls)) != NULL) {
for (i = 0; cats[i] != NULL; i++) {
unsigned int j;
ml = (cls->info & OBJC_CLASS_INFO_CLASS ?
cats[i]->instance_methods : cats[i]->class_methods);
for (; ml != NULL; ml = ml->next)
for (j = 0; j < ml->count; j++)
objc_sparsearray_set(dtable, (uint32_t)
(uintptr_t)ml->methods[j].name,
ml->methods[j].imp);
}
}
if (cls->dtable != NULL)
objc_sparsearray_free_when_singlethreaded(cls->dtable);
|