diff options
| author | Richard Brooksby | 2012-09-12 19:32:37 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2012-09-12 19:32:37 +0100 |
| commit | 9248316fb65eeafb7749b3879b81459f87bd9f54 (patch) | |
| tree | db0422f70afeac857c3e6f9169dbaee23230ed70 /mps/code | |
| parent | 72def5850d5ee319929a76b0d8c983d881761a07 (diff) | |
| download | emacs-9248316fb65eeafb7749b3879b81459f87bd9f54.tar.gz emacs-9248316fb65eeafb7749b3879b81459f87bd9f54.zip | |
Further reduction of interface puns that violate the strict aliasing rule, this time in thread function types and the corresponding threadstruct.
Copied from Perforce
Change: 179451
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
| -rw-r--r-- | mps/code/mpm.h | 4 | ||||
| -rw-r--r-- | mps/code/mpmtypes.h | 10 | ||||
| -rw-r--r-- | mps/code/mps.h | 1 | ||||
| -rw-r--r-- | mps/code/mpsi.c | 6 | ||||
| -rw-r--r-- | mps/code/root.c | 8 | ||||
| -rw-r--r-- | mps/code/than.c | 2 | ||||
| -rw-r--r-- | mps/code/thix.c | 2 | ||||
| -rw-r--r-- | mps/code/thw3.h | 2 |
8 files changed, 13 insertions, 22 deletions
diff --git a/mps/code/mpm.h b/mps/code/mpm.h index 165c7485e37..58fb4da6a31 100644 --- a/mps/code/mpm.h +++ b/mps/code/mpm.h | |||
| @@ -936,14 +936,14 @@ extern Res RootCreateTableMasked(Root *rootReturn, Arena arena, | |||
| 936 | Word mask); | 936 | Word mask); |
| 937 | extern Res RootCreateReg(Root *rootReturn, Arena arena, | 937 | extern Res RootCreateReg(Root *rootReturn, Arena arena, |
| 938 | Rank rank, Thread thread, | 938 | Rank rank, Thread thread, |
| 939 | RootScanRegMethod scan, | 939 | mps_reg_scan_t scan, |
| 940 | void *p, size_t s); | 940 | void *p, size_t s); |
| 941 | extern Res RootCreateFmt(Root *rootReturn, Arena arena, | 941 | extern Res RootCreateFmt(Root *rootReturn, Arena arena, |
| 942 | Rank rank, RootMode mode, | 942 | Rank rank, RootMode mode, |
| 943 | FormatScanMethod scan, | 943 | FormatScanMethod scan, |
| 944 | Addr base, Addr limit); | 944 | Addr base, Addr limit); |
| 945 | extern Res RootCreateFun(Root *rootReturn, Arena arena, | 945 | extern Res RootCreateFun(Root *rootReturn, Arena arena, |
| 946 | Rank rank, RootScanMethod scan, | 946 | Rank rank, mps_root_scan_t scan, |
| 947 | void *p, size_t s); | 947 | void *p, size_t s); |
| 948 | extern void RootDestroy(Root root); | 948 | extern void RootDestroy(Root root); |
| 949 | extern Bool RootModeCheck(RootMode mode); | 949 | extern Bool RootModeCheck(RootMode mode); |
diff --git a/mps/code/mpmtypes.h b/mps/code/mpmtypes.h index b1853178cbb..12d23e39989 100644 --- a/mps/code/mpmtypes.h +++ b/mps/code/mpmtypes.h | |||
| @@ -96,7 +96,7 @@ typedef struct mps_arena_s *Arena; /* <design/arena/> */ | |||
| 96 | typedef struct GlobalsStruct *Globals; /* <design/arena/> */ | 96 | typedef struct GlobalsStruct *Globals; /* <design/arena/> */ |
| 97 | typedef struct VMStruct *VM; /* <code/vm.c>* */ | 97 | typedef struct VMStruct *VM; /* <code/vm.c>* */ |
| 98 | typedef struct RootStruct *Root; /* <code/root.c> */ | 98 | typedef struct RootStruct *Root; /* <code/root.c> */ |
| 99 | typedef struct ThreadStruct *Thread; /* <code/th.c>* */ | 99 | typedef struct mps_thr_s *Thread; /* <code/th.c>* */ |
| 100 | typedef struct MutatorFaultContextStruct | 100 | typedef struct MutatorFaultContextStruct |
| 101 | *MutatorFaultContext; /* <design/prot/> */ | 101 | *MutatorFaultContext; /* <design/prot/> */ |
| 102 | typedef struct PoolDebugMixinStruct *PoolDebugMixin; | 102 | typedef struct PoolDebugMixinStruct *PoolDebugMixin; |
| @@ -255,14 +255,6 @@ typedef void (*FormatPadMethod)(Addr base, Size size); | |||
| 255 | typedef Addr (*FormatClassMethod)(Addr object); | 255 | typedef Addr (*FormatClassMethod)(Addr object); |
| 256 | 256 | ||
| 257 | 257 | ||
| 258 | /* Root*Method -- see design.mps.root-interface */ | ||
| 259 | /* .root-methods: These methods must match those defined in the */ | ||
| 260 | /* MPS C Interface. (See <code/mps.h#root-methods>.) */ | ||
| 261 | |||
| 262 | typedef Res (*RootScanMethod)(mps_ss_t ss, void *p, size_t s); | ||
| 263 | typedef Res (*RootScanRegMethod)(mps_ss_t ss, Thread thread, void *p, size_t s); | ||
| 264 | |||
| 265 | |||
| 266 | /* CONSTANTS */ | 258 | /* CONSTANTS */ |
| 267 | 259 | ||
| 268 | 260 | ||
diff --git a/mps/code/mps.h b/mps/code/mps.h index 469639b6c6d..945d43cc13b 100644 --- a/mps/code/mps.h +++ b/mps/code/mps.h | |||
| @@ -178,6 +178,7 @@ typedef struct mps_ld_s { /* location dependency descriptor */ | |||
| 178 | 178 | ||
| 179 | 179 | ||
| 180 | /* Format and Root Method Types */ | 180 | /* Format and Root Method Types */ |
| 181 | /* see design.mps.root-interface */ | ||
| 181 | /* .fmt-methods: Keep in sync with <code/mpmtypes.h#fmt-methods> */ | 182 | /* .fmt-methods: Keep in sync with <code/mpmtypes.h#fmt-methods> */ |
| 182 | /* .root-methods: Keep in sync with <code/mpmtypes.h#root-methods> */ | 183 | /* .root-methods: Keep in sync with <code/mpmtypes.h#root-methods> */ |
| 183 | 184 | ||
diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c index 240861f8dad..c620cad18dd 100644 --- a/mps/code/mpsi.c +++ b/mps/code/mpsi.c | |||
| @@ -1194,8 +1194,7 @@ mps_res_t mps_root_create(mps_root_t *mps_root_o, mps_arena_t arena, | |||
| 1194 | AVER(mps_rm == (mps_rm_t)0); | 1194 | AVER(mps_rm == (mps_rm_t)0); |
| 1195 | 1195 | ||
| 1196 | /* See .root-mode. */ | 1196 | /* See .root-mode. */ |
| 1197 | res = RootCreateFun(&root, arena, rank, | 1197 | res = RootCreateFun(&root, arena, rank, mps_root_scan, p, s); |
| 1198 | (RootScanMethod)mps_root_scan, p, s); | ||
| 1199 | 1198 | ||
| 1200 | ArenaLeave(arena); | 1199 | ArenaLeave(arena); |
| 1201 | 1200 | ||
| @@ -1308,8 +1307,7 @@ mps_res_t mps_root_create_reg(mps_root_t *mps_root_o, mps_arena_t arena, | |||
| 1308 | 1307 | ||
| 1309 | /* See .root-mode. */ | 1308 | /* See .root-mode. */ |
| 1310 | res = RootCreateReg(&root, arena, rank, thread, | 1309 | res = RootCreateReg(&root, arena, rank, thread, |
| 1311 | (RootScanRegMethod)mps_reg_scan, | 1310 | mps_reg_scan, reg_scan_p, mps_size); |
| 1312 | reg_scan_p, mps_size); | ||
| 1313 | 1311 | ||
| 1314 | ArenaLeave(arena); | 1312 | ArenaLeave(arena); |
| 1315 | 1313 | ||
diff --git a/mps/code/root.c b/mps/code/root.c index 9ce385a124c..c94217c04ad 100644 --- a/mps/code/root.c +++ b/mps/code/root.c | |||
| @@ -33,7 +33,7 @@ typedef struct RootStruct { | |||
| 33 | RootVar var; /* union discriminator */ | 33 | RootVar var; /* union discriminator */ |
| 34 | union RootUnion { | 34 | union RootUnion { |
| 35 | struct { | 35 | struct { |
| 36 | RootScanMethod scan; /* the function which does the scanning */ | 36 | mps_root_scan_t scan; /* the function which does the scanning */ |
| 37 | void *p; /* environment for scan */ | 37 | void *p; /* environment for scan */ |
| 38 | size_t s; /* environment for scan */ | 38 | size_t s; /* environment for scan */ |
| 39 | } fun; | 39 | } fun; |
| @@ -47,7 +47,7 @@ typedef struct RootStruct { | |||
| 47 | Word mask; /* tag mask for scanning */ | 47 | Word mask; /* tag mask for scanning */ |
| 48 | } tableMasked; | 48 | } tableMasked; |
| 49 | struct { | 49 | struct { |
| 50 | RootScanRegMethod scan; /* function for scanning registers */ | 50 | mps_reg_scan_t scan; /* function for scanning registers */ |
| 51 | Thread thread; /* passed to scan */ | 51 | Thread thread; /* passed to scan */ |
| 52 | void *p; /* passed to scan */ | 52 | void *p; /* passed to scan */ |
| 53 | size_t s; /* passed to scan */ | 53 | size_t s; /* passed to scan */ |
| @@ -296,7 +296,7 @@ Res RootCreateTableMasked(Root *rootReturn, Arena arena, | |||
| 296 | 296 | ||
| 297 | Res RootCreateReg(Root *rootReturn, Arena arena, | 297 | Res RootCreateReg(Root *rootReturn, Arena arena, |
| 298 | Rank rank, Thread thread, | 298 | Rank rank, Thread thread, |
| 299 | RootScanRegMethod scan, void *p, size_t s) | 299 | mps_reg_scan_t scan, void *p, size_t s) |
| 300 | { | 300 | { |
| 301 | union RootUnion theUnion; | 301 | union RootUnion theUnion; |
| 302 | 302 | ||
| @@ -336,7 +336,7 @@ Res RootCreateFmt(Root *rootReturn, Arena arena, | |||
| 336 | } | 336 | } |
| 337 | 337 | ||
| 338 | Res RootCreateFun(Root *rootReturn, Arena arena, Rank rank, | 338 | Res RootCreateFun(Root *rootReturn, Arena arena, Rank rank, |
| 339 | RootScanMethod scan, void *p, size_t s) | 339 | mps_root_scan_t scan, void *p, size_t s) |
| 340 | { | 340 | { |
| 341 | union RootUnion theUnion; | 341 | union RootUnion theUnion; |
| 342 | 342 | ||
diff --git a/mps/code/than.c b/mps/code/than.c index 96553c7cd75..752ef3ed64c 100644 --- a/mps/code/than.c +++ b/mps/code/than.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | SRCID(than, "$Id$"); | 17 | SRCID(than, "$Id$"); |
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | typedef struct ThreadStruct { /* ANSI fake thread structure */ | 20 | typedef struct mps_thr_s { /* ANSI fake thread structure */ |
| 21 | Sig sig; /* <design/sig/> */ | 21 | Sig sig; /* <design/sig/> */ |
| 22 | Serial serial; /* from arena->threadSerial */ | 22 | Serial serial; /* from arena->threadSerial */ |
| 23 | Arena arena; /* owning arena */ | 23 | Arena arena; /* owning arena */ |
diff --git a/mps/code/thix.c b/mps/code/thix.c index 5089f33f56e..b792cd96783 100644 --- a/mps/code/thix.c +++ b/mps/code/thix.c | |||
| @@ -43,7 +43,7 @@ SRCID(thix, "$Id$"); | |||
| 43 | 43 | ||
| 44 | /* ThreadStruct -- thread desriptor */ | 44 | /* ThreadStruct -- thread desriptor */ |
| 45 | 45 | ||
| 46 | typedef struct ThreadStruct { /* PThreads thread structure */ | 46 | typedef struct mps_thr_s { /* PThreads thread structure */ |
| 47 | Sig sig; /* <design/sig/> */ | 47 | Sig sig; /* <design/sig/> */ |
| 48 | Serial serial; /* from arena->threadSerial */ | 48 | Serial serial; /* from arena->threadSerial */ |
| 49 | Arena arena; /* owning arena */ | 49 | Arena arena; /* owning arena */ |
diff --git a/mps/code/thw3.h b/mps/code/thw3.h index b3e67cb319d..7e3cd68e2f1 100644 --- a/mps/code/thw3.h +++ b/mps/code/thw3.h | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | #include "mpswin.h" | 22 | #include "mpswin.h" |
| 23 | 23 | ||
| 24 | typedef struct ThreadStruct { /* Win32 thread structure */ | 24 | typedef struct mps_thr_s { /* Win32 thread structure */ |
| 25 | Sig sig; /* <design/sig/> */ | 25 | Sig sig; /* <design/sig/> */ |
| 26 | Serial serial; /* from arena->threadSerial */ | 26 | Serial serial; /* from arena->threadSerial */ |
| 27 | Arena arena; /* owning arena */ | 27 | Arena arena; /* owning arena */ |