|
| 1 | +diff --git a/src/BlocksRuntime/Block_private.h b/src/BlocksRuntime/Block_private.h |
| 2 | +index b2e1512..df6fa19 100644 |
| 3 | +--- a/src/BlocksRuntime/Block_private.h |
| 4 | ++++ b/src/BlocksRuntime/Block_private.h |
| 5 | +@@ -197,9 +197,17 @@ BLOCK_EXPORT bool _Block_tryRetain(const void *aBlock); |
| 6 | + // Callable only from the ARR weak subsystem while in exclusion zone |
| 7 | + BLOCK_EXPORT bool _Block_isDeallocating(const void *aBlock); |
| 8 | + |
| 9 | +- |
| 10 | + // the raw data space for runtime classes for blocks |
| 11 | + // class+meta used for stack, malloc, and collectable based blocks |
| 12 | ++#if defined(_WIN32) |
| 13 | ++extern void * _NSConcreteMallocBlock[32]; |
| 14 | ++extern void * _NSConcreteAutoBlock[32]; |
| 15 | ++extern void * _NSConcreteFinalizingBlock[32]; |
| 16 | ++extern void * _NSConcreteWeakBlockVariable[32]; |
| 17 | ++// declared in Block.h |
| 18 | ++// extern void * _NSConcreteGlobalBlock[32]; |
| 19 | ++// extern void * _NSConcreteStackBlock[32]; |
| 20 | ++#else |
| 21 | + BLOCK_EXPORT void * _NSConcreteMallocBlock[32]; |
| 22 | + BLOCK_EXPORT void * _NSConcreteAutoBlock[32]; |
| 23 | + BLOCK_EXPORT void * _NSConcreteFinalizingBlock[32]; |
| 24 | +@@ -207,6 +215,7 @@ BLOCK_EXPORT void * _NSConcreteWeakBlockVariable[32]; |
| 25 | + // declared in Block.h |
| 26 | + // BLOCK_EXPORT void * _NSConcreteGlobalBlock[32]; |
| 27 | + // BLOCK_EXPORT void * _NSConcreteStackBlock[32]; |
| 28 | ++#endif |
| 29 | + |
| 30 | + |
| 31 | + // the intercept routines that must be used under GC |
| 32 | +diff --git a/src/BlocksRuntime/BlocksRuntime.def b/src/BlocksRuntime/BlocksRuntime.def |
| 33 | +index a3b1aab..a4142b2 100644 |
| 34 | +--- a/src/BlocksRuntime/BlocksRuntime.def |
| 35 | ++++ b/src/BlocksRuntime/BlocksRuntime.def |
| 36 | +@@ -2,3 +2,7 @@ LIBRARY BlocksRuntime |
| 37 | + EXPORTS |
| 38 | + _NSConcreteGlobalBlock CONSTANT |
| 39 | + _NSConcreteStackBlock CONSTANT |
| 40 | ++ _NSConcreteMallocBlock CONSTANT |
| 41 | ++ _NSConcreteAutoBlock CONSTANT |
| 42 | ++ _NSConcreteFinalizingBlock CONSTANT |
| 43 | ++ _NSConcreteWeakBlockVariable CONSTANT |
| 44 | +diff --git a/src/BlocksRuntime/data.c b/src/BlocksRuntime/data.c |
| 45 | +index fe4745b..f96ea25 100644 |
| 46 | +--- a/src/BlocksRuntime/data.c |
| 47 | ++++ b/src/BlocksRuntime/data.c |
| 48 | +@@ -19,12 +19,15 @@ We keep these in a separate file so that we can include the runtime code in test |
| 49 | + #if defined(_WIN32) |
| 50 | + void * _NSConcreteStackBlock[32] = { 0 }; |
| 51 | + void * _NSConcreteGlobalBlock[32] = { 0 }; |
| 52 | ++void * _NSConcreteMallocBlock[32] = { 0 }; |
| 53 | ++void * _NSConcreteAutoBlock[32] = { 0 }; |
| 54 | ++void * _NSConcreteFinalizingBlock[32] = { 0 }; |
| 55 | ++void * _NSConcreteWeakBlockVariable[32] = { 0 }; |
| 56 | + #else |
| 57 | + BLOCK_ABI void * _NSConcreteStackBlock[32] = { 0 }; |
| 58 | + BLOCK_ABI void * _NSConcreteGlobalBlock[32] = { 0 }; |
| 59 | +-#endif |
| 60 | +- |
| 61 | + BLOCK_ABI void * _NSConcreteMallocBlock[32] = { 0 }; |
| 62 | + BLOCK_ABI void * _NSConcreteAutoBlock[32] = { 0 }; |
| 63 | + BLOCK_ABI void * _NSConcreteFinalizingBlock[32] = { 0 }; |
| 64 | + BLOCK_ABI void * _NSConcreteWeakBlockVariable[32] = { 0 }; |
| 65 | ++#endif |
0 commit comments