From ab870063b93e2cf07a400c2d2e0facbc8ea0a352 Mon Sep 17 00:00:00 2001 From: Pekka Pirinen Date: Fri, 16 Jan 1998 18:39:22 +0000 Subject: [PATCH] Move the windows mps_tramp macro to mpsw3.h Copied from Perforce Change: 19227 ServerID: perforce.ravenbrook.com --- mps/src/mps.h | 49 ++++++++++++------------------------------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/mps/src/mps.h b/mps/src/mps.h index b5498735fb5..c5486e10711 100644 --- a/mps/src/mps.h +++ b/mps/src/mps.h @@ -1,7 +1,7 @@ /* impl.h.mps: HARLEQUIN MEMORY POOL SYSTEM C INTERFACE * - * $HopeName: MMsrc!mps.h(trunk.31) $ - * Copyright (C) 1997 The Harlequin Group Limited. All rights reserved. + * $HopeName: MMsrc!mps.h(trunk.32) $ + * Copyright (C) 1997, 1998 The Harlequin Group Limited. All rights reserved. * * .readership: customers, MPS developers. * .sources: design.mps.interface.c. @@ -14,9 +14,6 @@ #include #include #include -#ifdef MPS_OS_W3 -#include "mpswin.h" /* needed for SEH filter type */ -#endif /* MPS_OS_W3 */ /* Abstract Types */ @@ -155,14 +152,6 @@ typedef struct mps_fmt_A_s { * #pragma warning(disable: 4127) */ -extern mps_res_t mps_ap_fill(mps_addr_t *, mps_ap_t, size_t); -extern mps_bool_t mps_ap_trip(mps_ap_t, mps_addr_t, size_t); - -#ifdef MPS_OS_W3 -extern LONG mps_SEH_filter(LPEXCEPTION_POINTERS, void **, size_t *); -extern void mps_SEH_handler(void *, size_t); -#endif /* MPS_OS_W3 */ - /* Assertion Handling */ @@ -233,6 +222,9 @@ extern void mps_ap_destroy(mps_ap_t); extern mps_res_t (mps_reserve)(mps_addr_t *, mps_ap_t, size_t); extern mps_bool_t (mps_commit)(mps_ap_t, mps_addr_t, size_t); +extern mps_res_t mps_ap_fill(mps_addr_t *, mps_ap_t, size_t); +extern mps_bool_t mps_ap_trip(mps_ap_t, mps_addr_t, size_t); + /* Reserve Macros */ /* .reserve: Keep in sync with impl.c.buffer.reserve. */ @@ -292,39 +284,22 @@ extern mps_res_t mps_stack_scan_ambig(mps_ss_t, mps_thr_t, /* Protection Trampoline and Thread Registration */ -extern void (mps_tramp)(void **, - void *(*)(void *, size_t), - void *, size_t); +typedef void *(*mps_tramp_t)(void *, size_t); -#ifdef MPS_OS_W3 +extern void (mps_tramp)(void **, mps_tramp_t, void *, size_t); + +#ifndef mps_tramp /* If a platform-specific version hasn't been defined */ #define mps_tramp(r_o, f, p, s) \ MPS_BEGIN \ void **_r_o = (r_o); \ - void *(*_f)(void *, size_t) = (f); \ + mps_tramp_t _f = (f); \ void *_p = (p); \ size_t _s = (s); \ - void *_hp; size_t _hs; \ - __try { \ - *(_r_o) = (*(_f))(_p, _s); \ - } __except(mps_SEH_filter(GetExceptionInformation(), \ - &_hp, &_hs)) { \ - mps_SEH_handler(_hp, _hs); \ - } \ + *_r_o = (*_f)(_p, _s); \ MPS_END -#else /* MPS_OS_W3 */ - -#define mps_tramp(r_o, f, p, s) \ - MPS_BEGIN \ - void **_r_o = (r_o); \ - void *(*_f)(void *, size_t) = (f); \ - void *_p = (p); \ - size_t _s = (s); \ - *(_r_o) = (*(_f))(_p, _s); \ - MPS_END - -#endif /* MPS_OS_W3 */ +#endif extern mps_res_t mps_thread_reg(mps_thr_t *, mps_arena_t); extern void mps_thread_dereg(mps_thr_t);