ObjFW  Check-in [b3f32186dd]

Overview
Comment:runtime: Let objc_get*Class return Class
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: b3f32186dd6ed59928ddbaa5af2e6719f0da6c8a4a5f0c276765c9a8f7c2a4e5
User & Date: js on 2018-05-05 18:06:22
Other Links: manifest | tags
Context
2018-05-05
18:06
runtime: Remove protos.h as it is no longer used check-in: f854e529c2 user: js tags: trunk
18:06
runtime: Let objc_get*Class return Class check-in: b3f32186dd user: js tags: trunk
17:46
runtime: Work around compiler bug in Amiga library check-in: dff419362e user: js tags: trunk
Changes

Modified src/runtime/ObjFW_RT.h from [4c021bd0e6] to [48418839dd].

307
308
309
310
311
312
313
314
315
316



317
318
319
320
321
322
323
307
308
309
310
311
312
313



314
315
316
317
318
319
320
321
322
323







-
-
-
+
+
+







extern IMP _Nonnull objc_msg_lookup(id _Nullable object, SEL _Nonnull sel);
extern IMP _Nonnull objc_msg_lookup_stret(id _Nullable object,
    SEL _Nonnull sel);
extern IMP _Nonnull objc_msg_lookup_super(struct objc_super *_Nonnull super,
    SEL _Nonnull sel);
extern IMP _Nonnull objc_msg_lookup_super_stret(
    struct objc_super *_Nonnull super, SEL _Nonnull sel);
extern id _Nullable objc_lookUpClass(const char *_Nonnull name);
extern id _Nullable objc_getClass(const char *_Nonnull name);
extern id _Nonnull objc_getRequiredClass(const char *_Nonnull name);
extern Class _Nullable objc_lookUpClass(const char *_Nonnull name);
extern Class _Nullable objc_getClass(const char *_Nonnull name);
extern Class _Nonnull objc_getRequiredClass(const char *_Nonnull name);
extern Class _Nullable objc_lookup_class(const char *_Nonnull name);
extern Class _Nonnull objc_get_class(const char *_Nonnull name);
extern void objc_exception_throw(id _Nullable object);
extern int objc_sync_enter(id _Nullable object);
extern int objc_sync_exit(id _Nullable object);
extern id _Nullable objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd,
    ptrdiff_t offset, bool atomic);

Modified src/runtime/ObjFW_RT.sfd from [256d65765a] to [7051c536a2].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16



17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13



14
15
16
17
18
19
20
21
22
23













-
-
-
+
+
+







==base _ObjFWRTBase
==basetype struct Library *
==libname objfw_rt.library
==bias 30
==public
* Functions for the linklib
void objc_init(struct objc_libc *libc)(a0)
* Used by the compiler - these need glue code
void glue___objc_exec_class(void *_Nonnull module)(a0)
IMP _Nonnull glue_objc_msg_lookup(id _Nullable obj, SEL _Nonnull sel)(a0,a1)
IMP _Nonnull glue_objc_msg_lookup_stret(id _Nullable obj, SEL _Nonnull sel)(a0,a1)
IMP _Nonnull glue_objc_msg_lookup_super(struct objc_super *_Nonnull super, SEL _Nonnull sel)(a0,a1)
IMP _Nonnull glue_objc_msg_lookup_super_stret(struct objc_super *_Nonnull super, SEL _Nonnull sel)(a0,a1)
id _Nullable glue_objc_lookUpClass(const char *_Nonnull name)(a0)
id _Nullable glue_objc_getClass(const char *_Nonnull name)(a0)
id _Nonnull glue_objc_getRequiredClass(const char *_Nonnull name)(a0)
Class _Nullable glue_objc_lookUpClass(const char *_Nonnull name)(a0)
Class _Nullable glue_objc_getClass(const char *_Nonnull name)(a0)
Class _Nonnull glue_objc_getRequiredClass(const char *_Nonnull name)(a0)
Class _Nullable glue_objc_lookup_class(const char *_Nonnull name)(a0)
Class _Nonnull glue_objc_get_class(const char *_Nonnull name)(a0)
void glue_objc_exception_throw(id _Nonnull object)(a0)
int glue_objc_sync_enter(id _Nullable object)(a0)
int glue_objc_sync_exit(id _Nullable object)(a0)
id glue_objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1)
void glue_objc_setProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, id value, bool atomic, signed char copy)(a0,a1,d0,a2,d1,d2)

Modified src/runtime/amiga-glue.m from [41f74e1272] to [01ae4542a3].

50
51
52
53
54
55
56
57

58
59
60
61
62
63

64
65
66
67
68
69

70
71
72
73
74
75
76
50
51
52
53
54
55
56

57
58
59
60
61
62

63
64
65
66
67
68

69
70
71
72
73
74
75
76







-
+





-
+





-
+







IMP
glue_objc_msg_lookup_super_stret(struct objc_super *super OBJC_M68K_REG("a0"),
    SEL sel OBJC_M68K_REG("a1"))
{
	return objc_msg_lookup_super_stret(super, sel);
}

id
Class
glue_objc_lookUpClass(const char *name OBJC_M68K_REG("a0"))
{
	return objc_lookUpClass(name);
}

id
Class
glue_objc_getClass(const char *name OBJC_M68K_REG("a0"))
{
	return objc_getClass(name);
}

id
Class
glue_objc_getRequiredClass(const char *name OBJC_M68K_REG("a0"))
{
	return objc_getRequiredClass(name);
}

Class
glue_objc_lookup_class(const char *name OBJC_M68K_REG("a0"))

Modified src/runtime/class.m from [b4196ed858] to [6fa07e9231].

473
474
475
476
477
478
479
480

481
482
483
484
485
486
487
473
474
475
476
477
478
479

480
481
482
483
484
485
486
487







-
+







		cls->info |= OBJC_CLASS_INFO_LOADED;

	process_load_queue();

	objc_global_mutex_unlock();
}

id
Class
objc_lookUpClass(const char *name)
{
	Class cls;

	if ((cls = objc_classname_to_class(name, true)) == NULL)
		return Nil;

496
497
498
499
500
501
502
503

504
505
506
507
508
509

510
511
512
513
514
515
516
496
497
498
499
500
501
502

503
504
505
506
507
508

509
510
511
512
513
514
515
516







-
+





-
+








	if (!(cls->info & OBJC_CLASS_INFO_SETUP))
		return Nil;

	return cls;
}

id
Class
objc_getClass(const char *name)
{
	return objc_lookUpClass(name);
}

id
Class
objc_getRequiredClass(const char *name)
{
	Class cls;

	if ((cls = objc_getClass(name)) == Nil)
		OBJC_ERROR("Class %s not found!", name);

Modified src/runtime/linklib/linklib.m from [c7c08d7d39] to [478a2413e5].

123
124
125
126
127
128
129
130

131
132
133
134
135
136

137
138
139
140
141
142

143
144
145
146
147
148
149
123
124
125
126
127
128
129

130
131
132
133
134
135

136
137
138
139
140
141

142
143
144
145
146
147
148
149







-
+





-
+





-
+








IMP
objc_msg_lookup_super_stret(struct objc_super *super, SEL sel)
{
	return glue_objc_msg_lookup_super_stret(super, sel);
}

id
Class
objc_lookUpClass(const char *name)
{
	return glue_objc_lookUpClass(name);
}

id
Class
objc_getClass(const char *name)
{
	return glue_objc_getClass(name);
}

id
Class
objc_getRequiredClass(const char *name)
{
	return glue_objc_getRequiredClass(name);
}

Class
objc_lookup_class(const char *name)

Modified src/runtime/private.h from [457aeb2c70] to [1ad0dd9f90].

175
176
177
178
179
180
181
182

183
184

185
186

187
188
189
190
191
192
193
175
176
177
178
179
180
181

182
183

184
185

186
187
188
189
190
191
192
193







-
+

-
+

-
+







    id _Nullable obj OBJC_M68K_REG("a0"), SEL _Nonnull sel OBJC_M68K_REG("a1"));
extern IMP _Nonnull glue_objc_msg_lookup_super(
    struct objc_super *_Nonnull super OBJC_M68K_REG("a0"),
    SEL _Nonnull sel OBJC_M68K_REG("a1"));
extern IMP _Nonnull glue_objc_msg_lookup_super_stret(
    struct objc_super *_Nonnull super OBJC_M68K_REG("a0"),
    SEL _Nonnull sel OBJC_M68K_REG("a1"));
extern id _Nullable glue_objc_lookUpClass(
extern Class _Nullable glue_objc_lookUpClass(
    const char *_Nonnull name OBJC_M68K_REG("a0"));
extern id _Nullable glue_objc_getClass(
extern Class _Nullable glue_objc_getClass(
    const char *_Nonnull name OBJC_M68K_REG("a0"));
extern id _Nonnull glue_objc_getRequiredClass(
extern Class _Nonnull glue_objc_getRequiredClass(
    const char *_Nonnull name OBJC_M68K_REG("a0"));
extern Class _Nullable glue_objc_lookup_class(
    const char *_Nonnull name OBJC_M68K_REG("a0"));
extern Class _Nonnull glue_objc_get_class(
    const char *_Nonnull name OBJC_M68K_REG("a0"));
extern int glue_objc_sync_enter(id _Nullable object OBJC_M68K_REG("a0"));
extern int glue_objc_sync_exit(id _Nullable object OBJC_M68K_REG("a0"));