aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-09-12 19:32:37 +0100
committerRichard Brooksby2012-09-12 19:32:37 +0100
commit9248316fb65eeafb7749b3879b81459f87bd9f54 (patch)
treedb0422f70afeac857c3e6f9169dbaee23230ed70 /mps/code
parent72def5850d5ee319929a76b0d8c983d881761a07 (diff)
downloademacs-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.h4
-rw-r--r--mps/code/mpmtypes.h10
-rw-r--r--mps/code/mps.h1
-rw-r--r--mps/code/mpsi.c6
-rw-r--r--mps/code/root.c8
-rw-r--r--mps/code/than.c2
-rw-r--r--mps/code/thix.c2
-rw-r--r--mps/code/thw3.h2
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);
937extern Res RootCreateReg(Root *rootReturn, Arena arena, 937extern 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);
941extern Res RootCreateFmt(Root *rootReturn, Arena arena, 941extern 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);
945extern Res RootCreateFun(Root *rootReturn, Arena arena, 945extern 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);
948extern void RootDestroy(Root root); 948extern void RootDestroy(Root root);
949extern Bool RootModeCheck(RootMode mode); 949extern 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/> */
96typedef struct GlobalsStruct *Globals; /* <design/arena/> */ 96typedef struct GlobalsStruct *Globals; /* <design/arena/> */
97typedef struct VMStruct *VM; /* <code/vm.c>* */ 97typedef struct VMStruct *VM; /* <code/vm.c>* */
98typedef struct RootStruct *Root; /* <code/root.c> */ 98typedef struct RootStruct *Root; /* <code/root.c> */
99typedef struct ThreadStruct *Thread; /* <code/th.c>* */ 99typedef struct mps_thr_s *Thread; /* <code/th.c>* */
100typedef struct MutatorFaultContextStruct 100typedef struct MutatorFaultContextStruct
101 *MutatorFaultContext; /* <design/prot/> */ 101 *MutatorFaultContext; /* <design/prot/> */
102typedef struct PoolDebugMixinStruct *PoolDebugMixin; 102typedef struct PoolDebugMixinStruct *PoolDebugMixin;
@@ -255,14 +255,6 @@ typedef void (*FormatPadMethod)(Addr base, Size size);
255typedef Addr (*FormatClassMethod)(Addr object); 255typedef 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
262typedef Res (*RootScanMethod)(mps_ss_t ss, void *p, size_t s);
263typedef 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
297Res RootCreateReg(Root *rootReturn, Arena arena, 297Res 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
338Res RootCreateFun(Root *rootReturn, Arena arena, Rank rank, 338Res 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 @@
17SRCID(than, "$Id$"); 17SRCID(than, "$Id$");
18 18
19 19
20typedef struct ThreadStruct { /* ANSI fake thread structure */ 20typedef 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
46typedef struct ThreadStruct { /* PThreads thread structure */ 46typedef 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
24typedef struct ThreadStruct { /* Win32 thread structure */ 24typedef 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 */