Overview
| Comment: | runtime: Fix a comment |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
1106d5ad1da4f9c7691dfe8aa2b9da98 |
| User & Date: | js on 2023-07-15 14:26:45 |
| Other Links: | manifest | tags |
Context
|
2023-07-15
| ||
| 14:48 | platform.h: Add OF_HURD (check-in: 340a3ac277 user: js tags: trunk) | |
| 14:26 | runtime: Fix a comment (check-in: 1106d5ad1d user: js tags: trunk) | |
|
2023-06-20
| ||
| 20:30 | OFIPXSocketTests: Skip if we have no address (check-in: c4b7136091 user: js tags: trunk) | |
Changes
Modified src/runtime/class.m from [13704fc982] to [c32cd0bfe5].
| ︙ | ︙ | |||
88 89 90 91 92 93 94 | return Nil; /* * Fast path * * Instead of looking up the string in a dictionary, which needs * locking, we use a sparse array to look up the pointer. If | | | | | | | | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
return Nil;
/*
* Fast path
*
* Instead of looking up the string in a dictionary, which needs
* locking, we use a sparse array to look up the pointer. If
* objc_classnameToClass() gets called a lot, it is most likely that
* the GCC ABI is used, which always calls into objc_lookup_class(), or
* that it is used in a loop by the user. In both cases, it is very
* likely that the same string pointer is passed again and again.
*
* This is not used before objc_classnameToClass() has been called a
* certain amount of times, so that no memory is wasted if it is only
* used rarely, for example if the ObjFW ABI is used and the user does
* not call it in a loop.
*
* Runtime internal usage does not use the fast path and does not count
* as a call into objc_classnameToClass(). The reason for this is that
* if the runtime calls into objc_classnameToClass(), it already has
* the lock and thus the performance gain would be small, but it would
* waste memory.
*/
if (cache && fastPath != NULL) {
class = objc_sparsearray_get(fastPath, (uintptr_t)name);
if (class != Nil)
return class;
}
|
| ︙ | ︙ |