Differences From Artifact [209bda944a]:
- File src/runtime/ObjFW_RT.h — part of check-in [1cae2c720c] at 2018-05-05 15:57:32 on branch trunk — runtime: Make exceptions work in Amiga library (user: js, size: 11069) [annotate] [blame] [check-ins using]
To Artifact [4c021bd0e6]:
- File
src/runtime/ObjFW_RT.h
— part of check-in
[dff419362e]
at
2018-05-05 17:46:52
on branch trunk
— runtime: Work around compiler bug in Amiga library
This adds the same workaround for objc_enumerationMutation() as for
objc_exception_throw(). (user: js, size: 11091) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
270 271 272 273 274 275 276 | extern bool class_addMethod(Class _Nonnull cls OBJC_M68K_REG("a0"), SEL _Nonnull sel OBJC_M68K_REG("a1"), IMP _Nonnull imp OBJC_M68K_REG("a2"), const char *_Nullable types OBJC_M68K_REG("a3")); extern IMP _Nullable class_replaceMethod(Class _Nonnull cls OBJC_M68K_REG("a0"), SEL _Nonnull sel OBJC_M68K_REG("a1"), IMP _Nonnull imp OBJC_M68K_REG("a2"), const char *_Nullable types OBJC_M68K_REG("a3")); | | | | | 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | extern bool class_addMethod(Class _Nonnull cls OBJC_M68K_REG("a0"), SEL _Nonnull sel OBJC_M68K_REG("a1"), IMP _Nonnull imp OBJC_M68K_REG("a2"), const char *_Nullable types OBJC_M68K_REG("a3")); extern IMP _Nullable class_replaceMethod(Class _Nonnull cls OBJC_M68K_REG("a0"), SEL _Nonnull sel OBJC_M68K_REG("a1"), IMP _Nonnull imp OBJC_M68K_REG("a2"), const char *_Nullable types OBJC_M68K_REG("a3")); extern Class _Nullable object_getClass(id _Nullable object OBJC_M68K_REG("a0")); extern Class _Nullable object_setClass(id _Nullable object OBJC_M68K_REG("a0"), Class _Nonnull OBJC_M68K_REG("a1")); extern const char *_Nullable object_getClassName( id _Nullable object OBJC_M68K_REG("a0")); extern const char *_Nonnull protocol_getName( Protocol *_Nonnull p OBJC_M68K_REG("a0")); extern bool protocol_isEqual(Protocol *_Nonnull a OBJC_M68K_REG("a0"), Protocol *_Nonnull b OBJC_M68K_REG("a1")); extern bool protocol_conformsToProtocol( Protocol *_Nonnull a OBJC_M68K_REG("a0"), Protocol *_Nonnull b OBJC_M68K_REG("a1")); |
︙ | ︙ | |||
300 301 302 303 304 305 306 | /* * 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. */ extern void __objc_exec_class(void *_Nonnull module); | | | > | | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | /* * 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. */ extern void __objc_exec_class(void *_Nonnull module); 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_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); extern void objc_setProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, id _Nullable value, bool atomic, signed char copy); extern void objc_getPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong); extern void objc_setPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong); extern void objc_enumerationMutation(id _Nonnull object); # ifndef OBJC_NO_PERSONALITY_DECLARATION extern int __gnu_objc_personality_v0(int version, int actions, uint64_t ex_class, void *_Nonnull ex, void *_Nonnull ctx); # endif #ifdef __cplusplus } #endif #endif |