ObjFW  Diff

Differences From Artifact [3c88a5e1a9]:

  • File src/runtime/runtime-private.h — part of check-in [84a724dd4b] at 2013-12-06 00:52:26 on branch trunk — Add a fast path for objc_classname_to_class().

    This should improve the performance for the GCC ABI, as
    objc_classname_to_class() is used for all sorts of class lookups, e.g.
    objc_lookup_class().

    As this performance improvement needs RAM, it is only used after 128
    calls into objc_classname_to_class(), so that if the ObjFW ABI is used
    and the user does not call into objc_getClass() or similar in a loop, no
    memory is wasted.

    Runtime internal usage of objc_classname_to_class() does not use the
    fast path and does not count as a call into objc_classname_to_class().
    The reason for this is that if the runtime calls
    objc_classname_to_class(), it already has the lock and thus the
    performance gain would be small, but it would waste memory. (user: js, size: 5194) [annotate] [blame] [check-ins using]

To Artifact [d3d6b58a3c]:


183
184
185
186
187
188
189


190
191
192
193
194
195
196
197
198
    (defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  define OF_ASM_LOOKUP
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  define OF_ASM_LOOKUP
# endif


#endif

#define OBJC_ERROR(...)							\
	{								\
		fprintf(stderr, "[objc @ " __FILE__ ":%d] ", __LINE__);	\
		fprintf(stderr, __VA_ARGS__);				\
		fputs("\n", stderr);					\
		abort();						\
	}







>
>









183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
    (defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  define OF_ASM_LOOKUP
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  define OF_ASM_LOOKUP
# endif
#elif defined(_WIN32) && defined(__i386__)
# define OF_ASM_LOOKUP
#endif

#define OBJC_ERROR(...)							\
	{								\
		fprintf(stderr, "[objc @ " __FILE__ ":%d] ", __LINE__);	\
		fprintf(stderr, __VA_ARGS__);				\
		fputs("\n", stderr);					\
		abort();						\
	}