Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/runtime/gc/copy-loop.h
ViewVC logotype

Annotation of /sml/trunk/src/runtime/gc/copy-loop.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 651 - (view) (download) (as text)

1 : monnier 249 /* copy-loop.h
2 :     *
3 :     * COPYRIGHT (c) 1993 by AT&T Bell Laboratories.
4 :     *
5 :     * A dirty, but quick, copy loop for the GC.
6 :     */
7 :    
8 :     #ifndef _COPY_LOOP_
9 :     #define _COPY_LOOP_
10 :    
11 :     #ifdef HAS_INCREMENT
12 :    
13 :     #define COPYLOOP(SRC,DST,LEN) { \
14 :     Word_t *__src = (Word_t *)(SRC); \
15 :     Word_t *__dst = (Word_t *)(DST); \
16 :     int __len = (LEN); \
17 :     int __m; \
18 :     switch (__len & 0x3) { \
19 :     case 3: *__dst++ = *__src++; \
20 :     case 2: *__dst++ = *__src++; \
21 :     case 1: *__dst++ = *__src++; \
22 :     case 0: break; \
23 :     } \
24 :     __m = __len >> 2; \
25 :     while (--__m >= 0) { \
26 :     *__dst++ = *__src++; *__dst++ = *__src++; \
27 :     *__dst++ = *__src++; *__dst++ = *__src++; \
28 :     } \
29 :     }
30 :    
31 :     #else
32 :    
33 :     #define COPYLOOP(SRC,DST,LEN) { \
34 :     Word_t *__src = (Word_t *)(SRC); \
35 :     Word_t *__dst = (Word_t *)(DST); \
36 :     int __len = (LEN); \
37 :     int __m; \
38 :     switch (__len & 0x3) { \
39 :     case 3: *__dst++ = *__src++; \
40 :     case 2: *__dst++ = *__src++; \
41 :     case 1: *__dst++ = *__src++; \
42 :     case 0: break; \
43 :     } \
44 :     __m = __len >> 2; \
45 :     while (--__m >= 0) { \
46 :     __dst[0] = __src[0]; __dst[1] = __src[1]; \
47 :     __dst[2] = __src[2]; __dst[3] = __src[3]; \
48 :     __dst += 4; __src += 4; \
49 :     } \
50 :     }
51 :    
52 :     #endif
53 :    
54 :     #endif /* !_COPY_LOOP_ */
55 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0