Skip to content

Commit 9c28054

Browse files
committed
---
yaml --- r: 348397 b: refs/heads/master c: b736d19 h: refs/heads/master i: 348395: b995850
1 parent aa86cbd commit 9c28054

File tree

2 files changed

+50
-33
lines changed

2 files changed

+50
-33
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 27decb6b7869bedeb4f7275995f5981eba167cd2
2+
refs/heads/master: b736d19201e099e5d0fe8d9a5514919d5c5580d3
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/stdlib/public/runtime/HeapObject.cpp

Lines changed: 49 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,6 @@ static inline bool isValidPointerForNativeRetain(const void *p) {
7272
#endif
7373
}
7474

75-
HeapObject *swift::swift_allocObject(HeapMetadata const *metadata,
76-
size_t requiredSize,
77-
size_t requiredAlignmentMask) {
78-
return _swift_allocObject(metadata, requiredSize, requiredAlignmentMask);
79-
}
80-
8175
static HeapObject *_swift_allocObject_(HeapMetadata const *metadata,
8276
size_t requiredSize,
8377
size_t requiredAlignmentMask) {
@@ -98,7 +92,18 @@ static HeapObject *_swift_allocObject_(HeapMetadata const *metadata,
9892
return object;
9993
}
10094

101-
auto swift::_swift_allocObject = _swift_allocObject_;
95+
HeapObject *swift::swift_allocObject(HeapMetadata const *metadata,
96+
size_t requiredSize,
97+
size_t requiredAlignmentMask) {
98+
if (SWIFT_UNLIKELY(_swift_allocObject != _swift_allocObject_))
99+
return _swift_allocObject(metadata, requiredSize, requiredAlignmentMask);
100+
return _swift_allocObject_(metadata, requiredSize, requiredAlignmentMask);
101+
}
102+
103+
HeapObject *(*swift::_swift_allocObject)(HeapMetadata const *metadata,
104+
size_t requiredSize,
105+
size_t requiredAlignmentMask) =
106+
_swift_allocObject_;
102107

103108
HeapObject *
104109
swift::swift_initStackObject(HeapMetadata const *metadata,
@@ -292,18 +297,20 @@ HeapObject *swift::swift_allocEmptyBox() {
292297
extern "C" LLVM_LIBRARY_VISIBILITY LLVM_ATTRIBUTE_NOINLINE LLVM_ATTRIBUTE_USED
293298
void _swift_release_dealloc(HeapObject *object);
294299

295-
HeapObject *swift::swift_retain(HeapObject *object) {
296-
return _swift_retain(object);
297-
}
298-
299300
static HeapObject *_swift_retain_(HeapObject *object) {
300301
SWIFT_RT_TRACK_INVOCATION(object, swift_retain);
301302
if (isValidPointerForNativeRetain(object))
302303
object->refCounts.increment(1);
303304
return object;
304305
}
305306

306-
auto swift::_swift_retain = _swift_retain_;
307+
HeapObject *swift::swift_retain(HeapObject *object) {
308+
if (SWIFT_UNLIKELY(_swift_retain != _swift_retain_))
309+
return _swift_retain(object);
310+
return _swift_retain_(object);
311+
}
312+
313+
HeapObject *(*swift::_swift_retain)(HeapObject *object) = _swift_retain_;
307314

308315
HeapObject *swift::swift_nonatomic_retain(HeapObject *object) {
309316
SWIFT_RT_TRACK_INVOCATION(object, swift_nonatomic_retain);
@@ -312,18 +319,21 @@ HeapObject *swift::swift_nonatomic_retain(HeapObject *object) {
312319
return object;
313320
}
314321

315-
HeapObject *swift::swift_retain_n(HeapObject *object, uint32_t n) {
316-
return _swift_retain_n(object, n);
317-
}
318-
319322
static HeapObject *_swift_retain_n_(HeapObject *object, uint32_t n) {
320323
SWIFT_RT_TRACK_INVOCATION(object, swift_retain_n);
321324
if (isValidPointerForNativeRetain(object))
322325
object->refCounts.increment(n);
323326
return object;
324327
}
325328

326-
auto swift::_swift_retain_n = _swift_retain_n_;
329+
HeapObject *swift::swift_retain_n(HeapObject *object, uint32_t n) {
330+
if (SWIFT_UNLIKELY(_swift_retain_n != _swift_retain_n_))
331+
return _swift_retain_n(object, n);
332+
return _swift_retain_n_(object, n);
333+
}
334+
335+
HeapObject *(*swift::_swift_retain_n)(HeapObject *object, uint32_t n) =
336+
_swift_retain_n_;
327337

328338
HeapObject *swift::swift_nonatomic_retain_n(HeapObject *object, uint32_t n) {
329339
SWIFT_RT_TRACK_INVOCATION(object, swift_nonatomic_retain_n);
@@ -332,35 +342,40 @@ HeapObject *swift::swift_nonatomic_retain_n(HeapObject *object, uint32_t n) {
332342
return object;
333343
}
334344

335-
void swift::swift_release(HeapObject *object) {
336-
_swift_release(object);
337-
}
338-
339345
static void _swift_release_(HeapObject *object) {
340346
SWIFT_RT_TRACK_INVOCATION(object, swift_release);
341347
if (isValidPointerForNativeRetain(object))
342348
object->refCounts.decrementAndMaybeDeinit(1);
343349
}
344350

345-
auto swift::_swift_release = _swift_release_;
351+
void swift::swift_release(HeapObject *object) {
352+
if (SWIFT_UNLIKELY(_swift_release != _swift_release_))
353+
_swift_release(object);
354+
_swift_release_(object);
355+
}
356+
357+
void (*swift::_swift_release)(HeapObject *object) = _swift_release_;
346358

347359
void swift::swift_nonatomic_release(HeapObject *object) {
348360
SWIFT_RT_TRACK_INVOCATION(object, swift_nonatomic_release);
349361
if (isValidPointerForNativeRetain(object))
350362
object->refCounts.decrementAndMaybeDeinitNonAtomic(1);
351363
}
352364

353-
void swift::swift_release_n(HeapObject *object, uint32_t n) {
354-
return _swift_release_n(object, n);
355-
}
356-
357365
static void _swift_release_n_(HeapObject *object, uint32_t n) {
358366
SWIFT_RT_TRACK_INVOCATION(object, swift_release_n);
359367
if (isValidPointerForNativeRetain(object))
360368
object->refCounts.decrementAndMaybeDeinit(n);
361369
}
362370

363-
auto swift::_swift_release_n = _swift_release_n_;
371+
void swift::swift_release_n(HeapObject *object, uint32_t n) {
372+
if (SWIFT_UNLIKELY(_swift_release_n != _swift_release_n_))
373+
return _swift_release_n(object, n);
374+
return _swift_release_n_(object, n);
375+
}
376+
377+
void (*swift::_swift_release_n)(HeapObject *object, uint32_t n) =
378+
_swift_release_n_;
364379

365380
void swift::swift_nonatomic_release_n(HeapObject *object, uint32_t n) {
366381
SWIFT_RT_TRACK_INVOCATION(object, swift_nonatomic_release_n);
@@ -484,10 +499,6 @@ void swift::swift_nonatomic_unownedRelease_n(HeapObject *object, int n) {
484499
}
485500
}
486501

487-
HeapObject *swift::swift_tryRetain(HeapObject *object) {
488-
return _swift_tryRetain(object);
489-
}
490-
491502
static HeapObject *_swift_tryRetain_(HeapObject *object) {
492503
SWIFT_RT_TRACK_INVOCATION(object, swift_tryRetain);
493504
if (!isValidPointerForNativeRetain(object))
@@ -497,7 +508,13 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
497508
else return nullptr;
498509
}
499510

500-
auto swift::_swift_tryRetain = _swift_tryRetain_;
511+
HeapObject *swift::swift_tryRetain(HeapObject *object) {
512+
if (SWIFT_UNLIKELY(_swift_tryRetain != _swift_tryRetain_))
513+
return _swift_tryRetain(object);
514+
return _swift_tryRetain_(object);
515+
}
516+
517+
HeapObject *(*swift::_swift_tryRetain)(HeapObject *object) = _swift_tryRetain_;
501518

502519
bool swift::swift_isDeallocating(HeapObject *object) {
503520
if (!isValidPointerForNativeRetain(object))

0 commit comments

Comments
 (0)