diff --git a/runtime/include/chpl-privatization.h b/runtime/include/chpl-privatization.h index 97bf331c5a12..af33d4962f84 100644 --- a/runtime/include/chpl-privatization.h +++ b/runtime/include/chpl-privatization.h @@ -23,10 +23,18 @@ #include #include "chpltypes.h" +extern void** chpl_privateObjects; + void chpl_privatization_init(void); void chpl_newPrivatizedClass(void*, int64_t); -void* chpl_getPrivatizedClass(int64_t); + +// Implementation is here for performance: getPrivatizedClass can be called +// frequently, so putting it in a header allows the backend to fully optimize. +static inline void* chpl_getPrivatizedClass(int64_t i) { + return chpl_privateObjects[i]; +} + void chpl_clearPrivatizedClass(int64_t); int64_t chpl_numPrivatizedClasses(void); diff --git a/runtime/src/chpl-privatization.c b/runtime/src/chpl-privatization.c index 355952a58feb..e6fba8187ef8 100644 --- a/runtime/src/chpl-privatization.c +++ b/runtime/src/chpl-privatization.c @@ -25,7 +25,7 @@ static int64_t chpl_capPrivateObjects = 0; static chpl_sync_aux_t privatizationSync; -static void** chpl_privateObjects = NULL; +void** chpl_privateObjects = NULL; void chpl_privatization_init(void) { chpl_sync_initAux(&privatizationSync); @@ -70,12 +70,6 @@ void chpl_newPrivatizedClass(void* v, int64_t pid) { chpl_sync_unlock(&privatizationSync); } - -void* chpl_getPrivatizedClass(int64_t i) { - return chpl_privateObjects[i]; -} - - void chpl_clearPrivatizedClass(int64_t i) { chpl_sync_lock(&privatizationSync); chpl_privateObjects[i] = NULL; @@ -93,4 +87,3 @@ int64_t chpl_numPrivatizedClasses(void) { chpl_sync_unlock(&privatizationSync); return ret; } -