Index: src/runtime/ObjFWRT.h ================================================================== --- src/runtime/ObjFWRT.h +++ src/runtime/ObjFWRT.h @@ -242,15 +242,14 @@ void *_Nullable bytes); extern void *_Nullable objc_destructInstance(id _Nullable object); extern void *_Null_unspecified objc_autoreleasePoolPush(void); extern void objc_autoreleasePoolPop(void *_Null_unspecified pool); extern id _Nullable _objc_rootAutorelease(id _Nullable object); -extern int_fast8_t objc_registerTaggedPointerClass(Class _Nonnull class); +extern int objc_registerTaggedPointerClass(Class _Nonnull class); extern Class _Nullable object_getTaggedPointerClass(id _Nonnull object); extern uintptr_t object_getTaggedPointerValue(id _Nonnull object); -extern id _Nullable objc_createTaggedPointer(uint_fast8_t class, - uintptr_t value); +extern id _Nullable objc_createTaggedPointer(int class, uintptr_t value); /* * Used by the compiler, but can also be called manually. * * These declarations are also required to prevent Clang's implicit Index: src/runtime/amiga-glue.m ================================================================== --- src/runtime/amiga-glue.m +++ src/runtime/amiga-glue.m @@ -798,11 +798,11 @@ M68K_ARG(struct objc_hashtable *, table, a0) objc_hashtable_free(table); } -int_fast8_t +int glue_objc_registerTaggedPointerClass PPC_PARAMS(Class class) { M68K_ARG(Class, class, a0) return objc_registerTaggedPointerClass(class); @@ -823,12 +823,12 @@ return object_getTaggedPointerValue(object); } id -glue_objc_createTaggedPointer PPC_PARAMS(uint_fast8_t class, uintptr_t value) +glue_objc_createTaggedPointer PPC_PARAMS(int class, uintptr_t value) { - M68K_ARG(uint_fast8_t, class, d0) + M68K_ARG(int, class, d0) M68K_ARG(uintptr_t, value, d1) return objc_createTaggedPointer(class, value); } Index: src/runtime/amiga-library.m ================================================================== --- src/runtime/amiga-library.m +++ src/runtime/amiga-library.m @@ -145,11 +145,11 @@ extern struct objc_hashtable *glue_objc_hashtable_new(void); extern void glue_objc_hashtable_set(void); extern void *glue_objc_hashtable_get(void); extern void glue_objc_hashtable_delete(void); extern void glue_objc_hashtable_free(void); -extern int_fast8_t glue_objc_registerTaggedPointerClass(void); +extern int glue_objc_registerTaggedPointerClass(void); extern Class _Nullable glue_object_getTaggedPointerClass(void); extern uintptr_t glue_object_getTaggedPointerValue(void); extern id _Nullable glue_objc_createTaggedPointer(void); #ifdef OF_MORPHOS Index: src/runtime/amigaos3.sfd ================================================================== --- src/runtime/amigaos3.sfd +++ src/runtime/amigaos3.sfd @@ -88,10 +88,10 @@ void glue_objc_hashtable_set(struct objc_hashtable *_Nonnull table, const void *_Nonnull key, const void *_Nonnull object)(a0,a1,a2) void *_Nullable glue_objc_hashtable_get(struct objc_hashtable *_Nonnull table, const void *_Nonnull key)(a0,a1) void glue_objc_hashtable_delete(struct objc_hashtable *_Nonnull table, const void *_Nonnull key)(a0,a1) void glue_objc_hashtable_free(struct objc_hashtable *_Nonnull table)(a0) * Public functions again -int_fast8_t glue_objc_registerTaggedPointerClass(Class _Nonnull class_)(a0) +int glue_objc_registerTaggedPointerClass(Class _Nonnull class_)(a0) Class _Nullable glue_object_getTaggedPointerClass(id _Nonnull object)(a0) uintptr_t glue_object_getTaggedPointerValue(id _Nonnull object)(a0) -id _Nullable glue_objc_createTaggedPointer(uint_fast8_t class_, uintptr_t value)(d0,d1) +id _Nullable glue_objc_createTaggedPointer(int class_, uintptr_t value)(d0,d1) ==end Index: src/runtime/linklib/linklib.m ================================================================== --- src/runtime/linklib/linklib.m +++ src/runtime/linklib/linklib.m @@ -706,10 +706,28 @@ objc_hashtable_free(struct objc_hashtable *table) { glue_objc_hashtable_free(table); } -extern int_fast8_t objc_registerTaggedPointerClass(Class _Nonnull class); -extern Class _Nullable object_getTaggedPointerClass(id _Nonnull object); -extern uintptr_t object_getTaggedPointerValue(id _Nonnull object); -extern id _Nullable objc_createTaggedPointer(uint_fast8_t class, - uintptr_t value); +int +objc_registerTaggedPointerClass(Class class) +{ + return glue_objc_registerTaggedPointerClass(class); +} + +Class +object_getTaggedPointerClass(id object) +{ + return glue_object_getTaggedPointerClass(object); +} + +uintptr_t +object_getTaggedPointerValue(id object) +{ + return glue_object_getTaggedPointerValue(object); +} + +id +objc_createTaggedPointer(int class, uintptr_t value) +{ + return objc_createTaggedPointer(class, value); +} Index: src/runtime/morphos-clib.h ================================================================== --- src/runtime/morphos-clib.h +++ src/runtime/morphos-clib.h @@ -83,9 +83,9 @@ void glue_objc_hashtable_set(struct objc_hashtable *, const void *, const void *); void *glue_objc_hashtable_get(struct objc_hashtable *, const void *); void glue_objc_hashtable_delete(struct objc_hashtable *, const void *); void glue_objc_hashtable_free(struct objc_hashtable *); /* Public functions again */ -int_fast8_t glue_objc_registerTaggedPointerClass(Class); +int glue_objc_registerTaggedPointerClass(Class); Class _Nullable glue_object_getTaggedPointerClass(id); uintptr_t glue_object_getTaggedPointerValue(id); -id glue_objc_createTaggedPointer(uint_fast8_t, uintptr_t); +id glue_objc_createTaggedPointer(int, uintptr_t); Index: src/runtime/tagged-pointer.m ================================================================== --- src/runtime/tagged-pointer.m +++ src/runtime/tagged-pointer.m @@ -21,16 +21,16 @@ #define TAGGED_POINTER_BITS 4 #define NUM_TAGGED_POINTER_CLASSES (1 << (TAGGED_POINTER_BITS - 1)) Class objc_tagged_pointer_classes[NUM_TAGGED_POINTER_CLASSES]; -static uint_fast8_t taggedPointerClassesCount; +static int taggedPointerClassesCount; -int_fast8_t +int objc_registerTaggedPointerClass(Class class) { - uint_fast8_t i; + int i; objc_global_mutex_lock(); if (taggedPointerClassesCount == NUM_TAGGED_POINTER_CLASSES) { objc_global_mutex_unlock(); @@ -68,15 +68,15 @@ return pointer; } id -objc_createTaggedPointer(uint_fast8_t class, uintptr_t value) +objc_createTaggedPointer(int class, uintptr_t value) { uintptr_t pointer; - if (class >= NUM_TAGGED_POINTER_CLASSES) + if (class < 0 || class >= NUM_TAGGED_POINTER_CLASSES) return nil; if (value > (UINTPTR_MAX >> TAGGED_POINTER_BITS)) return nil;