aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-09-12 20:00:04 +0100
committerRichard Brooksby2012-09-12 20:00:04 +0100
commit50c50c895b9c98ca0a21fe5edc86ed83d5c5ada8 (patch)
tree8e5716fc014d4e6f3b4b711a5b8dd83e647cf1e9 /mps/code
parent513aabb046ca6417eea1355428d212e1f3a1573d (diff)
downloademacs-50c50c895b9c98ca0a21fe5edc86ed83d5c5ada8.tar.gz
emacs-50c50c895b9c98ca0a21fe5edc86ed83d5c5ada8.zip
Eliminating interface puns that break the strict aliasing rule. the last of the structure puns and casts, i think.
Copied from Perforce Change: 179453 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/chain.h2
-rw-r--r--mps/code/mpmst.h10
-rw-r--r--mps/code/mpmtypes.h12
-rw-r--r--mps/code/mpsi.c71
4 files changed, 36 insertions, 59 deletions
diff --git a/mps/code/chain.h b/mps/code/chain.h
index 785c25e2349..0d2be1de068 100644
--- a/mps/code/chain.h
+++ b/mps/code/chain.h
@@ -64,7 +64,7 @@ typedef struct PoolGenStruct {
64 64
65#define ChainSig ((Sig)0x519C8A14) /* SIGnature CHAIN */ 65#define ChainSig ((Sig)0x519C8A14) /* SIGnature CHAIN */
66 66
67typedef struct ChainStruct { 67typedef struct mps_chain_s {
68 Sig sig; 68 Sig sig;
69 Arena arena; 69 Arena arena;
70 RingStruct chainRing; /* list of chains in the arena */ 70 RingStruct chainRing; /* list of chains in the arena */
diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h
index 1cd8a77a7ec..332d32084e1 100644
--- a/mps/code/mpmst.h
+++ b/mps/code/mpmst.h
@@ -46,7 +46,7 @@
46 46
47#define PoolClassSig ((Sig)0x519C7A55) /* SIGnature pool CLASS */ 47#define PoolClassSig ((Sig)0x519C7A55) /* SIGnature pool CLASS */
48 48
49typedef struct PoolClassStruct { 49typedef struct mps_class_s {
50 ProtocolClassStruct protocol; 50 ProtocolClassStruct protocol;
51 const char *name; /* class name string */ 51 const char *name; /* class name string */
52 size_t size; /* size of outer structure */ 52 size_t size; /* size of outer structure */
@@ -93,7 +93,7 @@ typedef struct PoolClassStruct {
93 93
94#define PoolSig ((Sig)0x519B0019) /* SIGnature POOL */ 94#define PoolSig ((Sig)0x519B0019) /* SIGnature POOL */
95 95
96typedef struct PoolStruct { /* generic structure */ 96typedef struct mps_pool_s { /* generic structure */
97 Sig sig; /* <design/sig/> */ 97 Sig sig; /* <design/sig/> */
98 Serial serial; /* from arena->poolSerial */ 98 Serial serial; /* from arena->poolSerial */
99 PoolClass class; /* pool class structure */ 99 PoolClass class; /* pool class structure */
@@ -218,7 +218,7 @@ typedef struct MessageClassStruct {
218 * 218 *
219 * See <design/message/#message.struct>. */ 219 * See <design/message/#message.struct>. */
220 220
221typedef struct MessageStruct { 221typedef struct mps_message_s {
222 Sig sig; /* <design/sig/> */ 222 Sig sig; /* <design/sig/> */
223 Arena arena; /* owning arena */ 223 Arena arena; /* owning arena */
224 MessageClass class; /* Message Class Structure */ 224 MessageClass class; /* Message Class Structure */
@@ -399,7 +399,7 @@ typedef struct SegBufStruct {
399 399
400#define FormatSig ((Sig)0x519F63A2) /* Signature FoRMAT */ 400#define FormatSig ((Sig)0x519F63A2) /* Signature FoRMAT */
401 401
402typedef struct FormatStruct { 402typedef struct mps_fmt_s {
403 Sig sig; 403 Sig sig;
404 Serial serial; /* from arena->formatSerial */ 404 Serial serial; /* from arena->formatSerial */
405 FormatVariety variety; /* format variety (e.g. A) */ 405 FormatVariety variety; /* format variety (e.g. A) */
@@ -530,7 +530,7 @@ typedef struct ChunkCacheEntryStruct {
530 530
531#define ArenaClassSig ((Sig)0x519A6C1A) /* SIGnature ARena CLAss */ 531#define ArenaClassSig ((Sig)0x519A6C1A) /* SIGnature ARena CLAss */
532 532
533typedef struct ArenaClassStruct { 533typedef struct mps_arena_class_s {
534 ProtocolClassStruct protocol; 534 ProtocolClassStruct protocol;
535 char *name; /* class name string */ 535 char *name; /* class name string */
536 size_t size; /* size of outer structure */ 536 size_t size; /* size of outer structure */
diff --git a/mps/code/mpmtypes.h b/mps/code/mpmtypes.h
index 890522b804e..9246d10e67d 100644
--- a/mps/code/mpmtypes.h
+++ b/mps/code/mpmtypes.h
@@ -67,10 +67,10 @@ typedef BufferClass SegBufClass; /* <design/buffer/> */
67typedef BufferClass RankBufClass; /* <design/buffer/> */ 67typedef BufferClass RankBufClass; /* <design/buffer/> */
68typedef unsigned BufferMode; /* <design/buffer/> */ 68typedef unsigned BufferMode; /* <design/buffer/> */
69typedef unsigned FrameState; /* <design/alloc-frame/> */ 69typedef unsigned FrameState; /* <design/alloc-frame/> */
70typedef struct FormatStruct *Format; /* design.mps.format */ 70typedef struct mps_fmt_s *Format; /* design.mps.format */
71typedef struct LockStruct *Lock; /* <code/lock.c>* */ 71typedef struct LockStruct *Lock; /* <code/lock.c>* */
72typedef struct PoolStruct *Pool; /* <design/pool/> */ 72typedef struct mps_pool_s *Pool; /* <design/pool/> */
73typedef struct PoolClassStruct *PoolClass; /* <code/poolclas.c> */ 73typedef struct mps_class_s *PoolClass; /* <code/poolclas.c> */
74typedef PoolClass AbstractPoolClass; /* <code/poolabs.c> */ 74typedef PoolClass AbstractPoolClass; /* <code/poolabs.c> */
75typedef PoolClass AbstractAllocFreePoolClass; /* <code/poolabs.c> */ 75typedef PoolClass AbstractAllocFreePoolClass; /* <code/poolabs.c> */
76typedef PoolClass AbstractBufferPoolClass; /* <code/poolabs.c> */ 76typedef PoolClass AbstractBufferPoolClass; /* <code/poolabs.c> */
@@ -79,7 +79,7 @@ typedef PoolClass AbstractScanPoolClass; /* <code/poolabs.c> */
79typedef PoolClass AbstractCollectPoolClass; /* <code/poolabs.c> */ 79typedef PoolClass AbstractCollectPoolClass; /* <code/poolabs.c> */
80typedef struct TraceStruct *Trace; /* <design/trace/> */ 80typedef struct TraceStruct *Trace; /* <design/trace/> */
81typedef struct ScanStateStruct *ScanState; /* <design/trace/> */ 81typedef struct ScanStateStruct *ScanState; /* <design/trace/> */
82typedef struct ChainStruct *Chain; /* <design/trace/> */ 82typedef struct mps_chain_s *Chain; /* <design/trace/> */
83typedef struct TractStruct *Tract; /* <design/arena/> */ 83typedef struct TractStruct *Tract; /* <design/arena/> */
84typedef struct ChunkStruct *Chunk; /* <code/tract.c> */ 84typedef struct ChunkStruct *Chunk; /* <code/tract.c> */
85typedef struct ChunkCacheEntryStruct *ChunkCacheEntry; /* <code/tract.c> */ 85typedef struct ChunkCacheEntryStruct *ChunkCacheEntry; /* <code/tract.c> */
@@ -90,7 +90,7 @@ typedef struct SegClassStruct *SegClass; /* <code/seg.c> */
90typedef SegClass GCSegClass; /* <code/seg.c> */ 90typedef SegClass GCSegClass; /* <code/seg.c> */
91typedef struct SegPrefStruct *SegPref; /* design.mps.pref, <code/locus.c> */ 91typedef struct SegPrefStruct *SegPref; /* design.mps.pref, <code/locus.c> */
92typedef int SegPrefKind; /* design.mps.pref, <code/locus.c> */ 92typedef int SegPrefKind; /* design.mps.pref, <code/locus.c> */
93typedef struct ArenaClassStruct *ArenaClass; /* <design/arena/> */ 93typedef struct mps_arena_class_s *ArenaClass; /* <design/arena/> */
94typedef ArenaClass AbstractArenaClass; /* <code/arena.c> */ 94typedef ArenaClass AbstractArenaClass; /* <code/arena.c> */
95typedef struct mps_arena_s *Arena; /* <design/arena/> */ 95typedef struct mps_arena_s *Arena; /* <design/arena/> */
96typedef struct GlobalsStruct *Globals; /* <design/arena/> */ 96typedef struct GlobalsStruct *Globals; /* <design/arena/> */
@@ -223,7 +223,7 @@ typedef PoolDebugMixin (*PoolDebugMixinMethod)(Pool pool);
223 */ 223 */
224 224
225typedef unsigned MessageType; 225typedef unsigned MessageType;
226typedef struct MessageStruct *Message; 226typedef struct mps_message_s *Message;
227typedef struct MessageClassStruct *MessageClass; 227typedef struct MessageClassStruct *MessageClass;
228 228
229/* Message*Method -- <design/message/> */ 229/* Message*Method -- <design/message/> */
diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c
index 711f5807254..15bc692ee00 100644
--- a/mps/code/mpsi.c
+++ b/mps/code/mpsi.c
@@ -324,7 +324,7 @@ mps_res_t mps_arena_create(mps_arena_t *mps_arena_o,
324/* mps_arena_create_v -- create an arena object */ 324/* mps_arena_create_v -- create an arena object */
325 325
326mps_res_t mps_arena_create_v(mps_arena_t *mps_arena_o, 326mps_res_t mps_arena_create_v(mps_arena_t *mps_arena_o,
327 mps_arena_class_t mps_arena_class, va_list args) 327 mps_arena_class_t arena_class, va_list args)
328{ 328{
329 Arena arena; 329 Arena arena;
330 Res res; 330 Res res;
@@ -335,7 +335,7 @@ mps_res_t mps_arena_create_v(mps_arena_t *mps_arena_o,
335 335
336 AVER(mps_arena_o != NULL); 336 AVER(mps_arena_o != NULL);
337 337
338 res = ArenaCreateV(&arena, (ArenaClass)mps_arena_class, args); 338 res = ArenaCreateV(&arena, arena_class, args);
339 if (res != ResOK) 339 if (res != ResOK)
340 return res; 340 return res;
341 341
@@ -584,9 +584,8 @@ mps_res_t mps_fmt_create_fixed(mps_fmt_t *mps_fmt_o,
584 584
585/* mps_fmt_destroy -- destroy a format object */ 585/* mps_fmt_destroy -- destroy a format object */
586 586
587void mps_fmt_destroy(mps_fmt_t mps_fmt) 587void mps_fmt_destroy(mps_fmt_t format)
588{ 588{
589 Format format = (Format)mps_fmt;
590 Arena arena; 589 Arena arena;
591 590
592 AVER(TESTT(Format, format)); 591 AVER(TESTT(Format, format));
@@ -612,10 +611,9 @@ mps_res_t mps_pool_create(mps_pool_t *mps_pool_o, mps_arena_t arena,
612} 611}
613 612
614mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena, 613mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena,
615 mps_class_t mps_class, va_list args) 614 mps_class_t class, va_list args)
616{ 615{
617 Pool pool; 616 Pool pool;
618 PoolClass class = (PoolClass)mps_class;
619 Res res; 617 Res res;
620 618
621 ArenaEnter(arena); 619 ArenaEnter(arena);
@@ -633,9 +631,8 @@ mps_res_t mps_pool_create_v(mps_pool_t *mps_pool_o, mps_arena_t arena,
633 return res; 631 return res;
634} 632}
635 633
636void mps_pool_destroy(mps_pool_t mps_pool) 634void mps_pool_destroy(mps_pool_t pool)
637{ 635{
638 Pool pool = (Pool)mps_pool;
639 Arena arena; 636 Arena arena;
640 637
641 AVER(TESTT(Pool, pool)); 638 AVER(TESTT(Pool, pool));
@@ -649,9 +646,8 @@ void mps_pool_destroy(mps_pool_t mps_pool)
649} 646}
650 647
651 648
652mps_res_t mps_alloc(mps_addr_t *p_o, mps_pool_t mps_pool, size_t size, ...) 649mps_res_t mps_alloc(mps_addr_t *p_o, mps_pool_t pool, size_t size, ...)
653{ 650{
654 Pool pool = (Pool)mps_pool;
655 Arena arena; 651 Arena arena;
656 Addr p; 652 Addr p;
657 Res res; 653 Res res;
@@ -693,9 +689,8 @@ mps_res_t mps_alloc_v(mps_addr_t *p_o, mps_pool_t mps_pool, size_t size,
693} 689}
694 690
695 691
696void mps_free(mps_pool_t mps_pool, mps_addr_t p, size_t size) 692void mps_free(mps_pool_t pool, mps_addr_t p, size_t size)
697{ 693{
698 Pool pool = (Pool)mps_pool;
699 Arena arena; 694 Arena arena;
700 695
701 AVER(TESTT(Pool, pool)); 696 AVER(TESTT(Pool, pool));
@@ -716,9 +711,8 @@ void mps_free(mps_pool_t mps_pool, mps_addr_t p, size_t size)
716 711
717/* mps_ap_create -- create an allocation point */ 712/* mps_ap_create -- create an allocation point */
718 713
719mps_res_t mps_ap_create(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, ...) 714mps_res_t mps_ap_create(mps_ap_t *mps_ap_o, mps_pool_t pool, ...)
720{ 715{
721 Pool pool = (Pool)mps_pool;
722 Arena arena; 716 Arena arena;
723 Buffer buf; 717 Buffer buf;
724 BufferClass bufclass; 718 BufferClass bufclass;
@@ -733,7 +727,7 @@ mps_res_t mps_ap_create(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, ...)
733 727
734 AVERT(Pool, pool); 728 AVERT(Pool, pool);
735 729
736 va_start(args, mps_pool); 730 va_start(args, pool);
737 bufclass = PoolDefaultBufferClass(pool); 731 bufclass = PoolDefaultBufferClass(pool);
738 res = BufferCreateV(&buf, bufclass, pool, TRUE, args); 732 res = BufferCreateV(&buf, bufclass, pool, TRUE, args);
739 va_end(args); 733 va_end(args);
@@ -749,10 +743,9 @@ mps_res_t mps_ap_create(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, ...)
749 743
750/* mps_ap_create_v -- create an allocation point, with varargs */ 744/* mps_ap_create_v -- create an allocation point, with varargs */
751 745
752mps_res_t mps_ap_create_v(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, 746mps_res_t mps_ap_create_v(mps_ap_t *mps_ap_o, mps_pool_t pool,
753 va_list args) 747 va_list args)
754{ 748{
755 Pool pool = (Pool)mps_pool;
756 Arena arena; 749 Arena arena;
757 Buffer buf; 750 Buffer buf;
758 BufferClass bufclass; 751 BufferClass bufclass;
@@ -1043,12 +1036,10 @@ mps_bool_t mps_ap_trip(mps_ap_t mps_ap, mps_addr_t p, size_t size)
1043 1036
1044/* mps_sac_create -- create an SAC object */ 1037/* mps_sac_create -- create an SAC object */
1045 1038
1046mps_res_t mps_sac_create(mps_sac_t *mps_sac_o, mps_pool_t mps_pool, 1039mps_res_t mps_sac_create(mps_sac_t *mps_sac_o, mps_pool_t pool,
1047 size_t classes_count, mps_sac_classes_s *mps_classes) 1040 size_t classes_count, mps_sac_classes_s *classes)
1048{ 1041{
1049 Pool pool = (Pool)mps_pool;
1050 Arena arena; 1042 Arena arena;
1051 SACClasses classes;
1052 SAC sac; 1043 SAC sac;
1053 Res res; 1044 Res res;
1054 1045
@@ -1058,7 +1049,6 @@ mps_res_t mps_sac_create(mps_sac_t *mps_sac_o, mps_pool_t mps_pool,
1058 1049
1059 ArenaEnter(arena); 1050 ArenaEnter(arena);
1060 1051
1061 classes = (SACClasses)mps_classes;
1062 res = SACCreate(&sac, pool, (Count)classes_count, classes); 1052 res = SACCreate(&sac, pool, (Count)classes_count, classes);
1063 1053
1064 ArenaLeave(arena); 1054 ArenaLeave(arena);
@@ -1287,11 +1277,10 @@ mps_res_t mps_root_create_fmt(mps_root_t *mps_root_o, mps_arena_t arena,
1287 1277
1288mps_res_t mps_root_create_reg(mps_root_t *mps_root_o, mps_arena_t arena, 1278mps_res_t mps_root_create_reg(mps_root_t *mps_root_o, mps_arena_t arena,
1289 mps_rank_t mps_rank, mps_rm_t mps_rm, 1279 mps_rank_t mps_rank, mps_rm_t mps_rm,
1290 mps_thr_t mps_thr, mps_reg_scan_t mps_reg_scan, 1280 mps_thr_t thread, mps_reg_scan_t mps_reg_scan,
1291 void *reg_scan_p, size_t mps_size) 1281 void *reg_scan_p, size_t mps_size)
1292{ 1282{
1293 Rank rank = (Rank)mps_rank; 1283 Rank rank = (Rank)mps_rank;
1294 Thread thread = (Thread)mps_thr;
1295 Root root; 1284 Root root;
1296 Res res; 1285 Res res;
1297 1286
@@ -1321,10 +1310,9 @@ mps_res_t mps_root_create_reg(mps_root_t *mps_root_o, mps_arena_t arena,
1321 * See .reg-scan. */ 1310 * See .reg-scan. */
1322 1311
1323mps_res_t mps_stack_scan_ambig(mps_ss_t mps_ss, 1312mps_res_t mps_stack_scan_ambig(mps_ss_t mps_ss,
1324 mps_thr_t mps_thr, void *p, size_t s) 1313 mps_thr_t thread, void *p, size_t s)
1325{ 1314{
1326 ScanState ss = PARENT(ScanStateStruct, ss_s, mps_ss); 1315 ScanState ss = PARENT(ScanStateStruct, ss_s, mps_ss);
1327 Thread thread = (Thread)mps_thr;
1328 UNUSED(s); 1316 UNUSED(s);
1329 return ThreadScan(ss, thread, p); 1317 return ThreadScan(ss, thread, p);
1330} 1318}
@@ -1376,9 +1364,8 @@ mps_res_t mps_thread_reg(mps_thr_t *mps_thr_o, mps_arena_t arena)
1376 return MPS_RES_OK; 1364 return MPS_RES_OK;
1377} 1365}
1378 1366
1379void mps_thread_dereg(mps_thr_t mps_thr) 1367void mps_thread_dereg(mps_thr_t thread)
1380{ 1368{
1381 Thread thread = (Thread)mps_thr;
1382 Arena arena; 1369 Arena arena;
1383 1370
1384 AVER(ThreadCheckSimple(thread)); 1371 AVER(ThreadCheckSimple(thread));
@@ -1561,10 +1548,8 @@ mps_bool_t mps_message_get(mps_message_t *mps_message_return,
1561} 1548}
1562 1549
1563void mps_message_discard(mps_arena_t arena, 1550void mps_message_discard(mps_arena_t arena,
1564 mps_message_t mps_message) 1551 mps_message_t message)
1565{ 1552{
1566 Message message = (Message)mps_message;
1567
1568 ArenaEnter(arena); 1553 ArenaEnter(arena);
1569 1554
1570 MessageDiscard(arena, message); 1555 MessageDiscard(arena, message);
@@ -1578,9 +1563,8 @@ void mps_message_discard(mps_arena_t arena,
1578/* -- All Message Types */ 1563/* -- All Message Types */
1579 1564
1580mps_message_type_t mps_message_type(mps_arena_t arena, 1565mps_message_type_t mps_message_type(mps_arena_t arena,
1581 mps_message_t mps_message) 1566 mps_message_t message)
1582{ 1567{
1583 Message message = (Message)mps_message;
1584 MessageType type; 1568 MessageType type;
1585 1569
1586 ArenaEnter(arena); 1570 ArenaEnter(arena);
@@ -1593,9 +1577,8 @@ mps_message_type_t mps_message_type(mps_arena_t arena,
1593} 1577}
1594 1578
1595mps_clock_t mps_message_clock(mps_arena_t arena, 1579mps_clock_t mps_message_clock(mps_arena_t arena,
1596 mps_message_t mps_message) 1580 mps_message_t message)
1597{ 1581{
1598 Message message = (Message)mps_message;
1599 Clock postedClock; 1582 Clock postedClock;
1600 1583
1601 ArenaEnter(arena); 1584 ArenaEnter(arena);
@@ -1612,9 +1595,8 @@ mps_clock_t mps_message_clock(mps_arena_t arena,
1612 1595
1613void mps_message_finalization_ref(mps_addr_t *mps_addr_return, 1596void mps_message_finalization_ref(mps_addr_t *mps_addr_return,
1614 mps_arena_t arena, 1597 mps_arena_t arena,
1615 mps_message_t mps_message) 1598 mps_message_t message)
1616{ 1599{
1617 Message message = (Message)mps_message;
1618 Ref ref; 1600 Ref ref;
1619 1601
1620 AVER(mps_addr_return != NULL); 1602 AVER(mps_addr_return != NULL);
@@ -1631,9 +1613,8 @@ void mps_message_finalization_ref(mps_addr_t *mps_addr_return,
1631/* -- mps_message_type_gc */ 1613/* -- mps_message_type_gc */
1632 1614
1633size_t mps_message_gc_live_size(mps_arena_t arena, 1615size_t mps_message_gc_live_size(mps_arena_t arena,
1634 mps_message_t mps_message) 1616 mps_message_t message)
1635{ 1617{
1636 Message message = (Message)mps_message;
1637 Size size; 1618 Size size;
1638 1619
1639 ArenaEnter(arena); 1620 ArenaEnter(arena);
@@ -1646,9 +1627,8 @@ size_t mps_message_gc_live_size(mps_arena_t arena,
1646} 1627}
1647 1628
1648size_t mps_message_gc_condemned_size(mps_arena_t arena, 1629size_t mps_message_gc_condemned_size(mps_arena_t arena,
1649 mps_message_t mps_message) 1630 mps_message_t message)
1650{ 1631{
1651 Message message = (Message)mps_message;
1652 Size size; 1632 Size size;
1653 1633
1654 ArenaEnter(arena); 1634 ArenaEnter(arena);
@@ -1661,9 +1641,8 @@ size_t mps_message_gc_condemned_size(mps_arena_t arena,
1661} 1641}
1662 1642
1663size_t mps_message_gc_not_condemned_size(mps_arena_t arena, 1643size_t mps_message_gc_not_condemned_size(mps_arena_t arena,
1664 mps_message_t mps_message) 1644 mps_message_t message)
1665{ 1645{
1666 Message message = (Message)mps_message;
1667 Size size; 1646 Size size;
1668 1647
1669 ArenaEnter(arena); 1648 ArenaEnter(arena);
@@ -1678,10 +1657,9 @@ size_t mps_message_gc_not_condemned_size(mps_arena_t arena,
1678/* -- mps_message_type_gc_start */ 1657/* -- mps_message_type_gc_start */
1679 1658
1680const char *mps_message_gc_start_why(mps_arena_t arena, 1659const char *mps_message_gc_start_why(mps_arena_t arena,
1681 mps_message_t mps_message) 1660 mps_message_t message)
1682{ 1661{
1683 const char *s; 1662 const char *s;
1684 Message message = (Message)mps_message;
1685 1663
1686 ArenaEnter(arena); 1664 ArenaEnter(arena);
1687 1665
@@ -1885,10 +1863,9 @@ mps_res_t mps_chain_create(mps_chain_t *chain_o, mps_arena_t arena,
1885 1863
1886/* mps_chain_destroy -- destroy a chain */ 1864/* mps_chain_destroy -- destroy a chain */
1887 1865
1888void mps_chain_destroy(mps_chain_t mps_chain) 1866void mps_chain_destroy(mps_chain_t chain)
1889{ 1867{
1890 Arena arena; 1868 Arena arena;
1891 Chain chain = (Chain)mps_chain;
1892 1869
1893 AVER(TESTT(Chain, chain)); 1870 AVER(TESTT(Chain, chain));
1894 arena = chain->arena; 1871 arena = chain->arena;