V8/usr/src/cmd/trace/trace6.c

Compare this file to the similar file:
Show the results in this format:

#include <stdio.h>
#include "trace.h"
#include "trace.d"

 extern int  *processes, *state, nrprocs, nrtbl;
 extern char mask[MAXPROC], althash;
 extern struct TBL *tbl;

 short *Factor;
 short maxr = 0;

inihash()
{ register int i;
  char *Smalloc();

	for (i = 0; i < nrtbl; i++)
		if (tbl[i].nrrows > maxr)
			maxr = tbl[i].nrrows;

	Factor = (short *)
		Smalloc(maxr * sizeof(short));

	for (i = 0; i < maxr; i++)
		Factor[i] = rand()%NOTOOBIG;	/* number between 0 and 16k */
}

hashvalue()
{ register int i, h;

	for (i = h = 0; i < nrprocs; i++)
	{	if (mask[i])
			continue;
		h = ((h << 2) | (h >> 13));	/* rotate */
		h ^= Factor[state[i]] ^ Factor[processes[i]];
	}

	return (h & NOTOOBIG);	/* return value will be stored in a short */
}