ObjFW  Check-in [4e40a57efa]

Overview
Comment:Make __objc_exec_class() take a void*

This is necessary for ObjC++ with GCC, as otherwise, this generates an
error. Since the objc_abi_module struct is private anyway, there is not
much reason to have the argument of that type.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 4e40a57efa74f07103a0962e7c8103cf9dfa0227e654afa03b2b7277b1ae3e04
User & Date: js on 2017-04-02 15:30:03
Other Links: manifest | tags
Context
2017-04-02
16:02
Avoid the anonymous namespace for ObjC++ with GCC check-in: 35934a9594 user: js tags: trunk
15:30
Make __objc_exec_class() take a void* check-in: 4e40a57efa user: js tags: trunk
12:13
Use OF_PATH_CURRENT_DIRECTORY instead of @"." check-in: 643985e07a user: js tags: trunk
Changes

Modified src/OFBlock.m from [0163c4920f] to [067d5d407d].

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
	}
};

static struct objc_abi_module module = {
	8, sizeof(module), NULL, (struct objc_abi_symtab*)&symtab
};

extern void __objc_exec_class(struct objc_abi_module*);

OF_CONSTRUCTOR()
{
	__objc_exec_class(&module);
}
/* End of ObjC module */
#elif defined(OF_APPLE_RUNTIME)
extern Class objc_initializeClassPair(Class, const char*, Class, Class);







<
<







113
114
115
116
117
118
119


120
121
122
123
124
125
126
	}
};

static struct objc_abi_module module = {
	8, sizeof(module), NULL, (struct objc_abi_symtab*)&symtab
};



OF_CONSTRUCTOR()
{
	__objc_exec_class(&module);
}
/* End of ObjC module */
#elif defined(OF_APPLE_RUNTIME)
extern Class objc_initializeClassPair(Class, const char*, Class, Class);

Modified src/runtime/init.m from [103b6f1a87] to [56c8216488].

16
17
18
19
20
21
22
23
24


25
26
27
28
29
30
31

#include "config.h"

#import "runtime.h"
#import "runtime-private.h"

void
__objc_exec_class(struct objc_abi_module *module)
{


	objc_global_mutex_lock();

	objc_register_all_selectors(module->symtab);
	objc_register_all_classes(module->symtab);
	objc_register_all_categories(module->symtab);
	objc_init_static_instances(module->symtab);








|

>
>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#include "config.h"

#import "runtime.h"
#import "runtime-private.h"

void
__objc_exec_class(void *module_)
{
	struct objc_abi_module *module = module_;

	objc_global_mutex_lock();

	objc_register_all_selectors(module->symtab);
	objc_register_all_classes(module->symtab);
	objc_register_all_categories(module->symtab);
	objc_init_static_instances(module->symtab);

Modified src/runtime/runtime-private.h from [26968fda37] to [8959ceec24].

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
extern struct objc_dtable* objc_dtable_new(void);
extern void objc_dtable_copy(struct objc_dtable*, struct objc_dtable*);
extern void objc_dtable_set(struct objc_dtable*, uint32_t, IMP);
extern void objc_dtable_free(struct objc_dtable*);
extern void objc_dtable_cleanup(void);
extern void objc_init_static_instances(struct objc_abi_symtab*);
extern void objc_forget_pending_static_instances(void);
extern void __objc_exec_class(struct objc_abi_module*);
#ifdef OF_HAVE_THREADS
extern void objc_global_mutex_lock(void);
extern void objc_global_mutex_unlock(void);
extern void objc_global_mutex_free(void);
#else
# define objc_global_mutex_lock()
# define objc_global_mutex_unlock()







<







152
153
154
155
156
157
158

159
160
161
162
163
164
165
extern struct objc_dtable* objc_dtable_new(void);
extern void objc_dtable_copy(struct objc_dtable*, struct objc_dtable*);
extern void objc_dtable_set(struct objc_dtable*, uint32_t, IMP);
extern void objc_dtable_free(struct objc_dtable*);
extern void objc_dtable_cleanup(void);
extern void objc_init_static_instances(struct objc_abi_symtab*);
extern void objc_forget_pending_static_instances(void);

#ifdef OF_HAVE_THREADS
extern void objc_global_mutex_lock(void);
extern void objc_global_mutex_unlock(void);
extern void objc_global_mutex_free(void);
#else
# define objc_global_mutex_lock()
# define objc_global_mutex_unlock()

Modified src/runtime/runtime.h from [dffb928599] to [35cbcdf16d].

238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/*
 * Used by the compiler, but can also be called manually.
 *
 * These declarations are also required to prevent Clang's implicit
 * declarations which include __declspec(dllimport) on Windows.
 */
struct objc_abi_module;
extern void __objc_exec_class(struct objc_abi_module*);
extern IMP objc_msg_lookup(id, SEL);
extern IMP objc_msg_lookup_stret(id, SEL);
extern IMP objc_msg_lookup_super(struct objc_super*, SEL);
extern IMP objc_msg_lookup_super_stret(struct objc_super*, SEL);
extern void objc_exception_throw(id);
extern int objc_sync_enter(id);
extern int objc_sync_exit(id);







|







238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/*
 * Used by the compiler, but can also be called manually.
 *
 * These declarations are also required to prevent Clang's implicit
 * declarations which include __declspec(dllimport) on Windows.
 */
struct objc_abi_module;
extern void __objc_exec_class(void*);
extern IMP objc_msg_lookup(id, SEL);
extern IMP objc_msg_lookup_stret(id, SEL);
extern IMP objc_msg_lookup_super(struct objc_super*, SEL);
extern IMP objc_msg_lookup_super_stret(struct objc_super*, SEL);
extern void objc_exception_throw(id);
extern int objc_sync_enter(id);
extern int objc_sync_exit(id);