Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/BlocksRuntime/Block_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,16 +197,25 @@ BLOCK_EXPORT bool _Block_tryRetain(const void *aBlock);
// Callable only from the ARR weak subsystem while in exclusion zone
BLOCK_EXPORT bool _Block_isDeallocating(const void *aBlock);


// the raw data space for runtime classes for blocks
// class+meta used for stack, malloc, and collectable based blocks
#if defined(_WIN32)
extern void * _NSConcreteMallocBlock[32];
extern void * _NSConcreteAutoBlock[32];
extern void * _NSConcreteFinalizingBlock[32];
extern void * _NSConcreteWeakBlockVariable[32];
// declared in Block.h
// extern void * _NSConcreteGlobalBlock[32];
// extern void * _NSConcreteStackBlock[32];
#else
BLOCK_EXPORT void * _NSConcreteMallocBlock[32];
BLOCK_EXPORT void * _NSConcreteAutoBlock[32];
BLOCK_EXPORT void * _NSConcreteFinalizingBlock[32];
BLOCK_EXPORT void * _NSConcreteWeakBlockVariable[32];
// declared in Block.h
// BLOCK_EXPORT void * _NSConcreteGlobalBlock[32];
// BLOCK_EXPORT void * _NSConcreteStackBlock[32];
#endif


// the intercept routines that must be used under GC
Expand Down
4 changes: 4 additions & 0 deletions src/BlocksRuntime/BlocksRuntime.def
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ LIBRARY BlocksRuntime
EXPORTS
_NSConcreteGlobalBlock CONSTANT
_NSConcreteStackBlock CONSTANT
_NSConcreteMallocBlock CONSTANT
_NSConcreteAutoBlock CONSTANT
_NSConcreteFinalizingBlock CONSTANT
_NSConcreteWeakBlockVariable CONSTANT
7 changes: 5 additions & 2 deletions src/BlocksRuntime/data.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,15 @@ We keep these in a separate file so that we can include the runtime code in test
#if defined(_WIN32)
void * _NSConcreteStackBlock[32] = { 0 };
void * _NSConcreteGlobalBlock[32] = { 0 };
void * _NSConcreteMallocBlock[32] = { 0 };
void * _NSConcreteAutoBlock[32] = { 0 };
void * _NSConcreteFinalizingBlock[32] = { 0 };
void * _NSConcreteWeakBlockVariable[32] = { 0 };
#else
BLOCK_ABI void * _NSConcreteStackBlock[32] = { 0 };
BLOCK_ABI void * _NSConcreteGlobalBlock[32] = { 0 };
#endif

BLOCK_ABI void * _NSConcreteMallocBlock[32] = { 0 };
BLOCK_ABI void * _NSConcreteAutoBlock[32] = { 0 };
BLOCK_ABI void * _NSConcreteFinalizingBlock[32] = { 0 };
BLOCK_ABI void * _NSConcreteWeakBlockVariable[32] = { 0 };
#endif