register I32 i;
char *a = (char*) HvARRAY(hv);
register HE **aep;
- register HE **oentry;
int longest_chain = 0;
int was_shared;
for (i=0; i<oldsize; i++,aep++) {
int left_length = 0;
int right_length = 0;
- register HE *entry;
+ HE **oentry = aep;
+ HE *entry = *aep;
register HE **bep;
- if (!*aep) /* non-existent */
+ if (!entry) /* non-existent */
continue;
bep = aep+oldsize;
- for (oentry = aep, entry = *aep; entry; entry = *oentry) {
+ do {
if ((HeHASH(entry) & newsize) != (U32)i) {
*oentry = HeNEXT(entry);
HeNEXT(entry) = *bep;
*bep = entry;
right_length++;
- continue;
}
else {
oentry = &HeNEXT(entry);
left_length++;
}
- }
+ entry = *oentry;
+ } while (entry);
/* I think we don't actually need to keep track of the longest length,
merely flag if anything is too long. But for the moment while
developing this code I'll track it. */
register I32 i;
register char *a;
register HE **aep;
- register HE *entry;
- register HE **oentry;
PERL_ARGS_ASSERT_HV_KSPLIT;
aep = (HE**)a;
for (i=0; i<oldsize; i++,aep++) {
- if (!*aep) /* non-existent */
+ HE **oentry = aep;
+ HE *entry = *aep;
+
+ if (!entry) /* non-existent */
continue;
- for (oentry = aep, entry = *aep; entry; entry = *oentry) {
+ do {
register I32 j = (HeHASH(entry) & newsize);
if (j != i) {
*oentry = HeNEXT(entry);
HeNEXT(entry) = aep[j];
aep[j] = entry;
- continue;
}
else
oentry = &HeNEXT(entry);
- }
+ entry = *oentry;
+ } while (entry);
}
}