diff --git a/sendmsg2.c b/sendmsg2.c index 4b7fd19..ab3f304 100644 --- a/sendmsg2.c +++ b/sendmsg2.c @@ -111,6 +111,27 @@ Slot_t objc_msg_lookup_sender(id *receiver, SEL selector, id sender) return objc_plane_lookup(receiver, selector, sender); } +Slot_t objc_slot_lookup_super(Super_t super, SEL selector) +{ + id receiver = super->self; + if (receiver) + { + Class class = super->class; + Slot_t result = sarray_get_safe(class->dtable, (sidx)selector->sel_id); + if (0 == result) + { + // Dtable should always be installed in the superclass + assert(dtable_for_class(class) != __objc_uninstalled_dtable); + result = &nil_slot; + } + return result; + } + else + { + return &nil_slot; + } +} + #ifdef PROFILE /** * Mutex used to protect non-thread-safe parts of the profiling subsystem. @@ -119,11 +140,11 @@ static mutex_t profileLock; /** * File used for writing the profiling symbol table. */ -FILE *profileSymbols; +static FILE *profileSymbols; /** * File used for writing the profiling data. */ -FILE *profileData; +static FILE *profileData; struct profile_info {