ObjFW  Diff

Differences From Artifact [6ae6224b73]:

To Artifact [283e2434aa]:


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
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);
			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)ml->methods[j].name,
					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);