Skip to content
Closed
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
16 changes: 14 additions & 2 deletions include/glatter/glatter_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -1441,7 +1441,7 @@ Printable;


GLATTER_INLINE_OR_NOT
Printable get_prs(size_t sz, void* obj)
Printable glatter_prs_format(size_t sz, const void* obj)
{
Printable ret;
memset(&ret, 0, sizeof ret);
Expand Down Expand Up @@ -1496,6 +1496,18 @@ Printable get_prs(size_t sz, void* obj)
return ret;
}

GLATTER_INLINE_OR_NOT
const char* glatter_prs_to_string(size_t sz, const void* obj)
{
enum { GLATTER_PRS_SLOTS = 8 };
static GLATTER_THREAD_LOCAL Printable slots[GLATTER_PRS_SLOTS];
static GLATTER_THREAD_LOCAL unsigned slot_index;

Printable* slot = &slots[slot_index++ % GLATTER_PRS_SLOTS];
*slot = glatter_prs_format(sz, obj);
return slot->data;
}



GLATTER_INLINE_OR_NOT
Expand Down Expand Up @@ -1684,7 +1696,7 @@ void glatter_dbg_return(const char* fmt, ...)
#endif

#define GET_PRS(v)\
(get_prs(sizeof(v), (void*)(&(v))).data)
(glatter_prs_to_string(sizeof(v), (const void*)(&(v))))


#if defined(__llvm__) || defined (__clang__)
Expand Down