ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/modobject.c
(Generate patch)

Comparing ray/src/common/modobject.c (file contents):
Revision 2.25 by greg, Sat Jun 21 17:42:17 2025 UTC vs.
Revision 2.26 by greg, Sun Jun 22 17:21:37 2025 UTC

# Line 31 | Line 31 | objndx(                                /* get object number from pointer */
31   #define ONCACHESIZ      907     /* keep a cache of previous searches */
32   #endif
33          static OBJECT   oncache[ONCACHESIZ];
34 <        const int       ent = (size_t)op % ONCACHESIZ;
35 <        int             i;
36 <                                /* clear cache on first call */
34 >        const int       ent = (size_t)op % ONCACHESIZ;  /* hash on pointer */
35 >        int             i, lastblock;
36 >
37 > #if OVOID != 0                  /* clear cache on first call */
38          for (i = ONCACHESIZ*(!oncache[0] & !oncache[1]); i--; )
39                  oncache[i] = OVOID;
40 + #endif
41                                  /* is this pointer in cache? */
42          if ((oncache[ent] != OVOID) & (oncache[ent] < nobjects) &&
43                                  objptr(oncache[ent]) == op)
44                  return(oncache[ent]);           /* matches previous search */
45 <                                /* else look for allocated block */
46 <        for (i = (nobjects-1)>>OBJBLKSHFT; i >= 0; i--)
45 >                                /* else search for our block from first */
46 >        lastblock = (nobjects-1)>>OBJBLKSHFT;
47 >        for (i = 0; i <= lastblock; i++)
48                  if ((objblock[i] <= op) & (op < objblock[i]+OBJBLKSIZ)) {
49 <                                /* found it -- save index to cache */
49 >                                /* found it -- cache corresponding index */
50                          oncache[ent] = ((OBJECT)i << OBJBLKSHFT) +
51                                                  (op - objblock[i]);
52                          return(oncache[ent]);
53                  }
54 <        return(OVOID);          /* not in our array -- may still be valid */
54 >        return(OVOID);          /* not allocated -- may still be valid */
55   }
56  
57  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines