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]:
- File src/runtime/runtime-private.h — part of check-in [b527914a91] at 2013-12-06 02:35:07 on branch trunk — Add x86/Win32 assembly lookup implementation. (user: js, size: 5260) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
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(); \ } |