Overview
Comment: | OFBlock: Initialize spinlocks in +[load].
As most blocks are static instances, there's a chance +[initialize] is As a nice side effect, this also fixes the bug that the spinlocks were |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
8fbc6b4e638152b5d465522fbb8952f2 |
User & Date: | js on 2013-07-04 14:04:38 |
Other Links: | manifest | tags |
Context
2013-07-04
| ||
20:49 | Fix -[replaceCharactersInRange:withString:]. check-in: 4d892e0db1 user: js tags: trunk | |
14:04 | OFBlock: Initialize spinlocks in +[load]. check-in: 8fbc6b4e63 user: js tags: trunk | |
13:59 | Remove useless barriers. check-in: 0fea69d149 user: js tags: trunk | |
Changes
Modified src/OFBlock.m from [e7f8997037] to [84017da3fd].
︙ | ︙ | |||
311 312 313 314 315 316 317 | free(obj); } break; } } @implementation OFBlock | < > > > > > > > > > > | 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 | free(obj); } break; } } @implementation OFBlock + (void)load { #ifndef OF_HAVE_ATOMIC_OPS size_t i; for (i = 0; i < NUM_SPINLOCKS; i++) if (!of_spinlock_new(&spinlocks[i])) @throw [OFInitializationFailedException exceptionWithClass: self]; #endif #ifdef OF_APPLE_RUNTIME Class tmp; #ifdef __OBJC2__ tmp = objc_initializeClassPair(self, "OFStackBlock", (Class)&_NSConcreteStackBlock, (Class)&_NSConcreteStackBlock_metaclass); if (tmp == Nil) |
︙ | ︙ | |||
368 369 370 371 372 373 374 | if ((tmp = objc_allocateClassPair(self, "OFMallocBlock", 0)) == NULL) @throw [OFInitializationFailedException exceptionWithClass: self]; memcpy(&_NSConcreteMallocBlock, tmp, sizeof(_NSConcreteMallocBlock)); free(tmp); objc_registerClassPair((Class)&_NSConcreteMallocBlock); # endif | < | < < < < < < < < < < < | 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | if ((tmp = objc_allocateClassPair(self, "OFMallocBlock", 0)) == NULL) @throw [OFInitializationFailedException exceptionWithClass: self]; memcpy(&_NSConcreteMallocBlock, tmp, sizeof(_NSConcreteMallocBlock)); free(tmp); objc_registerClassPair((Class)&_NSConcreteMallocBlock); # endif #endif } + alloc { [self doesNotRecognizeSelector: _cmd]; abort(); } |
︙ | ︙ |