In src/mapping.c:
#ifdef PIKE_MAPPING_KEYPAIR_LOOP #error Broken code below! #define GC_RECURSE(M, MD, REC_KEYPAIR, TYPE, IND_TYPES, VAL_TYPES) do {
Which apparently is compiled in under some circumstances, and avoided under other circumstances. What's the deal with that piece of code?
The circumstance in which this gets compiled in is when you explicitly request it by specifying --with-keypair-loop to the configure script. The deal with the code is that it doesn't work yet, I suppose.
In src/mapping.c:
#ifdef PIKE_MAPPING_KEYPAIR_LOOP #error Broken code below! #define GC_RECURSE(M, MD, REC_KEYPAIR, TYPE, IND_TYPES, VAL_TYPES) do {
Which apparently is compiled in under some circumstances, and avoided under other circumstances.
The #define PIKE_MAPPING_KEYPAIR_LOOP is enabled by the configure option --with-keypair-loop, which is intended to change the mapping loops from looping over the hashtable to looping over the allocated keypairs. Unfortunately the feature isn't fully implemented yet with respect to interaction with the gc, thus the error message above.
What's the deal with that piece of code?
The theory is that looping over the keypairs should be more stable, and somewhat faster (less memory accesses and reading memory sequencially).
-- Sincerely, Stephen R. van den Berg.
pike-devel@lists.lysator.liu.se