From d554406726c4bff45658e9e02cb34c5acfea7cea Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 26 Aug 2012 15:31:40 +0100 Subject: Using fast clock to timestamp events, making event logging much quicker. Copied from Perforce Change: 179055 ServerID: perforce.ravenbrook.com --- mps/code/w3vc9.bat | 55 ------------------------------------------------------ 1 file changed, 55 deletions(-) delete mode 100755 mps/code/w3vc9.bat (limited to 'mps/code') diff --git a/mps/code/w3vc9.bat b/mps/code/w3vc9.bat deleted file mode 100755 index f418d16cc2a..00000000000 --- a/mps/code/w3vc9.bat +++ /dev/null @@ -1,55 +0,0 @@ -@rem impl.bat.gathconf: GATHERING A RELEASE FOR CONFIGURA -@rem -@rem $HopeName: !gathconf.bat(trunk.1) $ -@rem $Id$ -@rem Copyright (C) 2000 Harlequin Limited. All rights reserved. -@rem Copyright (C) 2005-2008 Ravenbrook Limited. All rights reserved. - - -IF DEFINED mpsreleasename ( -@echo "Adding vc9 build into mpsreleasename=%mpsreleasename%" -) ELSE ( -@echo "Error: mpsreleasename is not defined." -@echo "You must run w3build.bat first, then run VC9's vcvars32.bat, then run this script." -exit /b -) - -rmdir /q/s w3i3m9 -nmake /f w3i3m9.nmk VARIETY=we mps.lib mpsplan.lib mpsplcb.lib mpsdy.dll -nmake /f w3i3m9.nmk VARIETY=hi mps.lib mpsplan.lib mpsplcb.lib mpsdy.dll -nmake /f w3i3m9.nmk VARIETY=di mps.lib mpsplan.lib mpsplcb.lib mpsdy.dll -nmake /f w3i3m9.nmk VARIETY=ci mps.lib mpsplan.lib mpsplcb.lib mpsdy.dll - -mkdir %mpsreleasename%\lib\w3i3m9 - -mkdir %mpsreleasename%\lib\w3i3m9\we -@echo we-%mpsreleasename% > %mpsreleasename%\lib\w3i3m9\we\we-%mpsreleasename%.txt -copy w3i3m9\we\mps.lib %mpsreleasename%\lib\w3i3m9\we -copy w3i3m9\we\mpsplan.lib %mpsreleasename%\lib\w3i3m9\we -copy w3i3m9\we\mpsplcb.lib %mpsreleasename%\lib\w3i3m9\we -copy w3i3m9\we\mpsdy.dll %mpsreleasename%\lib\w3i3m9\we -copy w3i3m9\we\mpsdy.lib %mpsreleasename%\lib\w3i3m9\we - -mkdir %mpsreleasename%\lib\w3i3m9\hi -@echo hi-%mpsreleasename% > %mpsreleasename%\lib\w3i3m9\hi\hi-%mpsreleasename%.txt -copy w3i3m9\hi\mps.lib %mpsreleasename%\lib\w3i3m9\hi -copy w3i3m9\hi\mpsplan.lib %mpsreleasename%\lib\w3i3m9\hi -copy w3i3m9\hi\mpsplcb.lib %mpsreleasename%\lib\w3i3m9\hi -copy w3i3m9\hi\mpsdy.dll %mpsreleasename%\lib\w3i3m9\hi -copy w3i3m9\hi\mpsdy.lib %mpsreleasename%\lib\w3i3m9\hi - -mkdir %mpsreleasename%\lib\w3i3m9\di -@echo di-%mpsreleasename% > %mpsreleasename%\lib\w3i3m9\di\di-%mpsreleasename%.txt -copy w3i3m9\di\mps.lib %mpsreleasename%\lib\w3i3m9\di -copy w3i3m9\di\mpsplan.lib %mpsreleasename%\lib\w3i3m9\di -copy w3i3m9\di\mpsplcb.lib %mpsreleasename%\lib\w3i3m9\di -copy w3i3m9\di\mpsdy.dll %mpsreleasename%\lib\w3i3m9\di -copy w3i3m9\di\mpsdy.lib %mpsreleasename%\lib\w3i3m9\di - -mkdir %mpsreleasename%\lib\w3i3m9\ci -@echo ci-%mpsreleasename% > %mpsreleasename%\lib\w3i3m9\ci\ci-%mpsreleasename%.txt -copy w3i3m9\ci\mps.lib %mpsreleasename%\lib\w3i3m9\ci -copy w3i3m9\ci\mpsplan.lib %mpsreleasename%\lib\w3i3m9\ci -copy w3i3m9\ci\mpsplcb.lib %mpsreleasename%\lib\w3i3m9\ci -copy w3i3m9\ci\mpsdy.dll %mpsreleasename%\lib\w3i3m9\ci -copy w3i3m9\ci\mpsdy.lib %mpsreleasename%\lib\w3i3m9\ci -- cgit v1.2.1 From 82bc1374643e8e357a984fefa550650c99f222fd Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 1 Sep 2012 00:01:03 +0100 Subject: Abolishing a bunch of varieties and reforming the hot variety to run about as fast as white-hot. See . Copied from Perforce Change: 179153 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 72 ++++++++++++++++++++++++++++++++------------------- mps/code/comm.gmk | 33 +++--------------------- mps/code/config.h | 77 ++++++++++++++++++++++++++++++++++++++----------------- mps/code/gc.gmk | 5 ++-- mps/code/gp.gmk | 1 - 5 files changed, 103 insertions(+), 85 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index e58a9d04ced..26ce0ea965e 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -56,19 +56,32 @@ enum { #elif defined(AVER_AND_CHECK) #define AVER(cond) ASSERT(cond, #cond) -#define AVERT(type, val) ASSERT(type ## Check(val), \ - "TypeCheck " #type ": " #val) + +#define AVERT(type, val) \ + ASSERT(type ## Check(val), "TypeCheck " #type ": " #val) + +#if !defined(AVER_AND_CHECK_ALL) + +#define AVER_CRITICAL DISCARD +#define AVERT_CRITICAL(type, val) DISCARD(type ## Check(val)) + +#else /* AVER_AND_CHECK_ALL */ + #define AVER_CRITICAL(cond) \ BEGIN \ - if (CheckLevel != CheckLevelMINIMAL) ASSERT(cond, #cond); \ + if (CheckLevel != CheckLevelMINIMAL) \ + ASSERT(cond, #cond); \ END + #define AVERT_CRITICAL(type, val) \ BEGIN \ if (CheckLevel != CheckLevelMINIMAL) \ ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ END -#else +#endif /* AVER_AND_CHECK_ALL */ + +#else /* AVER_AND_CHECK, not */ #error "No checking defined." @@ -115,24 +128,34 @@ enum { #if defined(AVER_AND_CHECK_NONE) - -#define CHECKS(type, val) DISCARD(CHECKT(type, val)) -#define CHECKL(cond) DISCARD(cond) -#define CHECKD(type, val) DISCARD(CHECKT(type, val)) +#define CHECKS(type, val) DISCARD(CHECKT(type, val)) +#define CHECKL(cond) DISCARD(cond) +#define CHECKD(type, val) DISCARD(CHECKT(type, val)) #define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) -#define CHECKU(type, val) DISCARD(CHECKT(type, val)) +#define CHECKU(type, val) DISCARD(CHECKT(type, val)) #define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) - -#else - +#else /* AVER_AND_CHECK_NONE, not */ /* CHECKS -- Check Signature */ /* (if CheckLevel == CheckLevelMINIMAL, this is all we check) */ -#define CHECKS(type, val) ASSERT(CHECKT(type, val), \ - "SigCheck " #type ": " #val) +#define CHECKS(type, val) \ + ASSERT(CHECKT(type, val), "SigCheck " #type ": " #val) +#if !defined(AVER_AND_CHECK_ALL) + +/* FIXME: This gives comparable performance to white-hot when compiling + using mps.c and -O (to get check methods inlined), but is it a bit + too minimal? How much do we rely on check methods? */ + +#define CHECKL(cond) DISCARD(cond) +#define CHECKD(type, val) DISCARD(CHECKT(type, val)) +#define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) +#define CHECKU(type, val) DISCARD(CHECKT(type, val)) +#define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) + +#else /* AVER_AND_CHECK_ALL */ /* CHECKL -- Check Local Invariant * @@ -162,12 +185,10 @@ enum { NOOP; \ break; \ case CheckLevelSHALLOW: \ - ASSERT(CHECKT(type, val), \ - "SigCheck " #type ": " #val); \ + CHECKS(type, val); \ break; \ case CheckLevelDEEP: \ - ASSERT(type ## Check(val), \ - "TypeCheck " #type ": " #val); \ + ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ break; \ } \ END @@ -182,12 +203,10 @@ enum { NOOP; \ break; \ case CheckLevelSHALLOW: \ - ASSERT((val) != NULL, \ - "NullCheck " #type ": " #val); \ + ASSERT((val) != NULL, "NullCheck " #type ": " #val); \ break; \ case CheckLevelDEEP: \ - ASSERT(type ## Check(val), \ - "TypeCheck " #type ": " #val); \ + ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ break; \ } \ END @@ -203,8 +222,7 @@ enum { break; \ case CheckLevelSHALLOW: \ case CheckLevelDEEP: \ - ASSERT(CHECKT(type, val), \ - "SigCheck " #type ": " #val); \ + CHECKS(type, val); \ break; \ } \ END @@ -220,14 +238,14 @@ enum { break; \ case CheckLevelSHALLOW: \ case CheckLevelDEEP: \ - ASSERT((val) != NULL, \ - "NullCheck " #type ": " #val); \ + ASSERT((val) != NULL, "NullCheck " #type ": " #val); \ break; \ } \ END +#endif /* AVER_AND_CHECK_ALL */ -#endif +#endif /* AVER_AND_CHECK_NONE */ /* CHECKLVALUE &c -- type compatibility checking diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 9141c34c9cd..1726e451543 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -16,8 +16,6 @@ # information, and any optimization possible # CFLAGSOPT a list of flags for compilations with maximum # optimization, and any debug info possible -# CFLAGSOPTNODEBUG a list of flags for compilations with maximum -# optimization, and absolutely no debug info # CC the command for the C compiler # LINKFLAGS a list of flags passed to the linker # ARFLAGSPFM platform-specific flags for ar @@ -64,9 +62,6 @@ endif ifndef CFLAGSOPT error "comm.gmk: CFLAGSOPT not defined" endif -ifndef CFLAGSOPTNODEBUG -error "comm.gmk: CFLAGSOPTNODEBUG not defined" -endif # # %%PART: Add checks for the parameter with the sources for the new @@ -122,13 +117,9 @@ CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSTARGET) $(CFLAGSCOMPILER) # variety. # These flags are added to compilations for the indicated variety. -CFWE = -DCONFIG_VAR_WE -DNDEBUG $(CFLAGSOPTNODEBUG) -CFWI = -DCONFIG_VAR_WI -DNDEBUG $(CFLAGSOPT) -CFHE = -DCONFIG_VAR_HE -DNDEBUG $(CFLAGSOPTNODEBUG) -CFHI = -DCONFIG_VAR_HI -DNDEBUG $(CFLAGSOPT) +CFWE = -DCONFIG_VAR_WE -DNDEBUG $(CFLAGSOPT) +CFHE = -DCONFIG_VAR_HE -DNDEBUG $(CFLAGSOPT) CFDI = -DCONFIG_VAR_DI -DNDEBUG $(CFLAGSOPT) -CFII = -DCONFIG_VAR_II -DNDEBUG $(CFLAGSOPT) -CFCE = -DCONFIG_VAR_CE $(CFLAGSOPTNODEBUG) CFCI = -DCONFIG_VAR_CI $(CFLAGSDEBUG) CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) @@ -137,24 +128,12 @@ CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) ifeq ($(VARIETY),we) CFLAGS=$(CFLAGSCOMMON) $(CFWE) else -ifeq ($(VARIETY),wi) -CFLAGS=$(CFLAGSCOMMON) $(CFWI) -else ifeq ($(VARIETY),he) CFLAGS=$(CFLAGSCOMMON) $(CFHE) else -ifeq ($(VARIETY),hi) -CFLAGS=$(CFLAGSCOMMON) $(CFHI) -else ifeq ($(VARIETY),di) CFLAGS=$(CFLAGSCOMMON) $(CFDI) else -ifeq ($(VARIETY),ii) -CFLAGS=$(CFLAGSCOMMON) $(CFII) -else -ifeq ($(VARIETY),ce) -CFLAGS=$(CFLAGSCOMMON) $(CFCE) -else ifeq ($(VARIETY),ci) CFLAGS=$(CFLAGSCOMMON) $(CFCI) else @@ -166,10 +145,6 @@ endif endif endif endif -endif -endif -endif -endif ARFLAGS=rc$(ARFLAGSPFM) @@ -328,10 +303,8 @@ clean: phony ifdef TARGET ifndef VARIETY target: phony - $(MAKE) -f $(PFM).gmk VARIETY=hi variety + $(MAKE) -f $(PFM).gmk VARIETY=he variety $(MAKE) -f $(PFM).gmk VARIETY=ci variety - $(MAKE) -f $(PFM).gmk VARIETY=di variety - $(MAKE) -f $(PFM).gmk VARIETY=we variety endif endif diff --git a/mps/code/config.h b/mps/code/config.h index 29abad920f7..86b3a22b610 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -21,36 +21,46 @@ /* Variety Configuration */ -/* First translate GG build directives into better ones. - */ - -#ifdef CONFIG_DEBUG -/* Translate CONFIG_DEBUG to CONFIG_STATS, because that's what it */ -/* means. It's got nothing to do with debugging! RHSK 2007-06-29 */ -#define CONFIG_STATS -#endif +/* Then deal with CONFIG_VAR_* build directives. These are translated into + the directives CONFIG_ASSERT, CONFIG_STATS, CONFIG_LOG, etc. which control + actual compilation features. */ - -/* Then deal with old-style CONFIG_VAR_* build directives. These - * must be translated into the new directives CONFIG_ASSERT, - * CONFIG_STATS, and CONFIG_LOG. +/* CONFIG_VAR_WE -- the white-hot variety * - * One day the old build system may be converted to use the new - * directives. + * This variety switches off as many features as possible for maximum + * performance, but is therefore unsafe and undebuggable. It is not intended + * for use, but for comparison with the hot variety, to check that assertion, + * logging, etc. have negligible overhead. */ -#if defined(CONFIG_VAR_WI) || defined(CONFIG_VAR_WE) /* White-hot varieties */ +#if defined(CONFIG_VAR_WE) /* White-hot variety */ /* no asserts */ /* ... so CHECKLEVEL_INITIAL is irrelevant */ /* no statistic meters */ /* no telemetry log events */ -#elif defined(CONFIG_VAR_HI) || defined(CONFIG_VAR_HE) /* Hot varieties */ + +/* CONFIG_VAR_HE -- the hot variety + * + * This variety is the default variety for distribution in products that use + * the MPS. It has maximum performance while retaining a good level of + * consistency checking and allowing some debugging and telemetry features. + */ + +#elif defined(CONFIG_VAR_HE) /* Hot variety */ #define CONFIG_ASSERT #define CHECKLEVEL_INITIAL CheckLevelMINIMAL /* no statistic meters */ /* no telemetry log events */ + +/* CONFIG_VAR_DI -- diagnostic variety + * + * Deprecated. The diagnostic variety prints messages about the internals + * of the MPS to an output stream. This is being replaced by an extended + * telemetry system. RB 2012-08-31 + */ + #elif defined(CONFIG_VAR_DI) /* Diagnostic variety */ #define CONFIG_ASSERT #define CHECKLEVEL_INITIAL CheckLevelMINIMAL @@ -63,24 +73,38 @@ /* #define DIAG_WITH_PRINTF */ /* no telemetry log events */ -#elif defined(CONFIG_VAR_CI) || defined(CONFIG_VAR_CE) /* Cool varieties */ + +/* CONFIG_VAR_CI -- cool variety + * + * The cool variety is intended for use when developing an integration with + * the MPS or debugging memory problems or collecting detailed telemetry + * data for performance analysis. It has more thorough consistency checking + * and data collection and output, and full debugging information. + */ + +#elif defined(CONFIG_VAR_CI) /* Cool variety */ #define CONFIG_ASSERT +#define CONFIG_ASSERT_ALL /* ... let PRODUCT determine CHECKLEVEL_INITIAL */ #define CONFIG_STATS /* no telemetry log events */ + +/* CONFIG_VAR_TI -- telemetry variety + * + * Deprecated. This is the variety with event logging to a telemetry stream. + * Currently being reworked to retain event logging with negligible overhead + * on all other varieties. RB 2012-08-31 + */ + #elif defined(CONFIG_VAR_TI) /* Telemetry, Internal; variety.ti */ #define CONFIG_ASSERT +#define CONFIG_ASSERT_ALL /* ... let PRODUCT determine CHECKLEVEL_INITIAL */ #define CONFIG_STATS #define CONFIG_LOG -#elif defined(CONFIG_VAR_II) /* Ice, Internal; variety.ii (HotLog) */ -#define CONFIG_ASSERT -#define CHECKLEVEL_INITIAL CheckLevelMINIMAL -/* no statistic meters */ -#define CONFIG_LOG -#endif +#endif /* CONFIG_VAR_* */ /* Build Features */ @@ -90,8 +114,13 @@ /* asserts: AVER, AVERT, NOTREACHED, CHECKx */ /* note: a direct call to ASSERT() will *still* fire */ #define AVER_AND_CHECK +#if defined(CONFIG_ASSERT_ALL) +#define AVER_AND_CHECK_ALL +#define MPS_ASSERT_STRING "assertastic" +#else /* CONFIG_ASSERT_ALL, not */ #define MPS_ASSERT_STRING "asserted" -#else +#endif /* CONFIG_ASSERT_ALL */ +#else /* CONFIG_ASSERT, not */ #define AVER_AND_CHECK_NONE #define MPS_ASSERT_STRING "nonasserted" #endif diff --git a/mps/code/gc.gmk b/mps/code/gc.gmk index 75b83bf8118..2aeb61cdbc1 100644 --- a/mps/code/gc.gmk +++ b/mps/code/gc.gmk @@ -13,9 +13,8 @@ CFLAGSCOMPILER := \ -Wstrict-prototypes -Wmissing-prototypes \ -Winline -Waggregate-return -Wnested-externs \ -Wcast-qual -Wshadow -CFLAGSDEBUG = -g -ggdb3 -CFLAGSOPT = -O -g -ggdb3 -CFLAGSOPTNODEBUG = -O -g0 +CFLAGSDEBUG = -O0 -g +CFLAGSOPT = -O3 -g # gcc -MM generates a dependency line of the form: # thing.o : thing.c ... diff --git a/mps/code/gp.gmk b/mps/code/gp.gmk index 229064d3055..8e16b524c38 100644 --- a/mps/code/gp.gmk +++ b/mps/code/gp.gmk @@ -16,7 +16,6 @@ CFLAGSCOMPILER = \ -Wcast-qual -Wshadow -pg CFLAGSDEBUG = -g -ggdb3 CFLAGSOPT = -O -g -ggdb3 -CFLAGSOPTNODEBUG = -O -g0 # gcc -MM generates a dependency line of the form: # thing.o : thing.c ... -- cgit v1.2.1 From 4265ff2c625a8655d682baf86a690bed9025623a Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 1 Sep 2012 10:05:30 +0100 Subject: Tidying up check.h and adding lots of design documentation. Copied from Perforce Change: 179154 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 280 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 156 insertions(+), 124 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index 26ce0ea965e..78334f8d7d3 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -17,6 +17,18 @@ * will throw the code away, but check its syntax. * * .trans.level-check: CheckLevel itself is not checked anywhere. + * + * .careful: BE CAREFUL when changing this file. It is easy to make mistakes + * and change the checking level in a variety and thereby its performance + * without realising it. This has happened before. Eyeball the preprocessor + * output for each variety. For example: + * + * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_WE trace.c + * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_HE trace.c + * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_CI trace.c + * + * Then look at TraceCheck to make sure checking is right, TraceAddWhite + * for general assertions, and TraceFix for the critical path assertions. */ #ifndef check_h @@ -27,7 +39,38 @@ #include "mpslib.h" -/* CheckLevel -- Control check method behaviour */ +/* ASSERT -- basic assertion + * + * The ASSERT macro is equivalent to the ISO C assert() except that it is + * always defined, and uses the assertion handler from the MPS plinth, which + * can be replaced by the client code. + * + * It is not intended for direct use within the MPS. Use AVER and CHECK + * macros, which can be controlled by both build and run-time configuration. + */ + +#define ASSERT(cond, condstring) \ + BEGIN \ + if (cond) NOOP; else \ + mps_lib_assert_fail(condstring "\n" __FILE__ "\n" STR(__LINE__)); \ + END + +#define ASSERT_TYPECHECK(type, val) \ + ASSERT(type ## Check(val), "TypeCheck " #type ": " #val) + +#define ASSERT_NULLCHECK(type, val) \ + ASSERT((val) != NULL, "NullCheck " #type ": " #val) + + +/* CheckLevel -- control for check method behaviour + * + * When the MPS is build with AVER_AND_CHECK_ALL (in a "cool" variety) the + * static variable CheckLevel controls the frequency and detail of + * consistency checking on structures. + * + * FIXME: This should be initialised from an environment variable and have + * an interface in mps.h. + */ extern unsigned CheckLevel; @@ -43,29 +86,34 @@ enum { /* AVER, AVERT -- MPM assertions * - * AVER and AVERT are used to assert conditions in the code. + * AVER and AVERT are used to assert conditions in the code. AVER checks + * an expression. AVERT checks that a value is of the correct type and + * may perform consistency checks on the value. + * + * AVER and AVERT are on by default, and check conditions even in "hot" + * varieties intended to work in production. To avoid the cost of a check + * in critical parts of the code, use AVER_CRITICAL and AVERT_CRITICAL, + * but only when you've *proved* that this makes a difference to performance + * that affects requirements. */ #if defined(AVER_AND_CHECK_NONE) #define AVER(cond) DISCARD(cond) #define AVERT(type, val) DISCARD(type ## Check(val)) -#define AVER_CRITICAL(cond) DISCARD(cond) -#define AVERT_CRITICAL(type, val) DISCARD(type ## Check(val)) -#elif defined(AVER_AND_CHECK) +#else #define AVER(cond) ASSERT(cond, #cond) - #define AVERT(type, val) \ ASSERT(type ## Check(val), "TypeCheck " #type ": " #val) -#if !defined(AVER_AND_CHECK_ALL) +#endif -#define AVER_CRITICAL DISCARD -#define AVERT_CRITICAL(type, val) DISCARD(type ## Check(val)) +#if defined(AVER_AND_CHECK_ALL) -#else /* AVER_AND_CHECK_ALL */ +/* FIXME: Find out whether these tests on checklevel have any performance + impact and remove them if possible. */ #define AVER_CRITICAL(cond) \ BEGIN \ @@ -79,38 +127,31 @@ enum { ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ END -#endif /* AVER_AND_CHECK_ALL */ - -#else /* AVER_AND_CHECK, not */ +#else -#error "No checking defined." +#define AVER_CRITICAL DISCARD +#define AVERT_CRITICAL(type, val) DISCARD(type ## Check(val)) #endif -/* internals for actually asserting */ - -#define ASSERT(cond, condstring) \ - BEGIN \ - if (cond) NOOP; else \ - mps_lib_assert_fail(condstring "\n" __FILE__ "\n" STR(__LINE__)); \ - END +/* NOTREACHED -- control should never reach this statement + * + * This is a sort of AVER; it is equivalent to AVER(FALSE), but will produce + * a more informative message. + */ +#if defined(AVER_AND_CHECK_NONE) -/* NOTREACHED -- control should never reach this statement */ -/* This is a sort of AVER; it is equivalent to AVER(FALSE). */ +#define NOTREACHED NOOP -#if defined(AVER_AND_CHECK) +#else #define NOTREACHED \ BEGIN \ mps_lib_assert_fail("unreachable code" "\n" __FILE__ "\n" STR(__LINE__)); \ END -#else - -#define NOTREACHED NOOP - #endif @@ -126,126 +167,117 @@ enum { #define CHECKT(type, val) ((val) != NULL && (val)->sig == type ## Sig) -#if defined(AVER_AND_CHECK_NONE) +/* CHECKS -- Check Signature + * + * (if CheckLevel == CheckLevelMINIMAL, this is all we check) + */ +#if defined(AVER_AND_CHECK_NONE) #define CHECKS(type, val) DISCARD(CHECKT(type, val)) -#define CHECKL(cond) DISCARD(cond) -#define CHECKD(type, val) DISCARD(CHECKT(type, val)) -#define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) -#define CHECKU(type, val) DISCARD(CHECKT(type, val)) -#define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) - -#else /* AVER_AND_CHECK_NONE, not */ - -/* CHECKS -- Check Signature */ -/* (if CheckLevel == CheckLevelMINIMAL, this is all we check) */ - +#else #define CHECKS(type, val) \ ASSERT(CHECKT(type, val), "SigCheck " #type ": " #val) +#endif -#if !defined(AVER_AND_CHECK_ALL) - -/* FIXME: This gives comparable performance to white-hot when compiling - using mps.c and -O (to get check methods inlined), but is it a bit - too minimal? How much do we rely on check methods? */ - -#define CHECKL(cond) DISCARD(cond) -#define CHECKD(type, val) DISCARD(CHECKT(type, val)) -#define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) -#define CHECKU(type, val) DISCARD(CHECKT(type, val)) -#define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) - -#else /* AVER_AND_CHECK_ALL */ -/* CHECKL -- Check Local Invariant +/* CHECKL, CHECKD, CHECKU -- local, "down", and "up" checks + * + * Each type should have a function defined called Check that checks + * the consistency of the type. This function should return TRUE iff the + * value passes consistency checks. In general, it should assert otherwise, + * but we allow for the possibility of returning FALSE in this case for + * configuration adaptability. + * + * For structure types, the check function should: * - * Could make this an expression using ?: + * - check its own signature with CHECKS + * + * - check fields that it "owns" with CHECKL, like asserts + * + * - check "down" values which are its "children" with CHEKCD + * + * - check "up" values which are its "parents" with CHECKU. + * + * These various checks will be compiled out or compiled to be controlled + * by CheckLevel. + * + * For example: + * + * Bool MessageCheck(Message message) + * { + * CHECKS(Message, message); + * CHECKU(Arena, message->arena); + * CHECKD(MessageClass, message->class); + * CHECKL(RingCheck(&message->queueRing)); + * CHECKL(MessageIsClocked(message) || (message->postedClock == 0)); + * return TRUE; + * } + * + * The parent/child distinction depends on the structure, but in the MPS + * the Arena has no parents, and has children which are Pools, which have + * children which are Segments, etc. + * + * The important thing is to have a partial order on types so that recursive + * checking will terminate. When CheckLevel is set to DEEP, checking will + * recurse into check methods for children, but will only do a shallow + * signature check on parents, avoiding infinite regression. + * + * FIXME: Switching on every CHECK line doesn't compile very well, because + * the compiler can't tell that CheckLevel won't change between function + * calls and can't lift out the test. Is there a better arrangement, + * perhaps by reading CheckLevel into a local variable? */ -#define CHECKL(cond) \ - BEGIN \ - switch(CheckLevel) { \ - case CheckLevelMINIMAL: \ - NOOP; \ - break; \ - case CheckLevelSHALLOW: \ - case CheckLevelDEEP: \ - ASSERT(cond, #cond); \ - break; \ - } \ - END - +#if defined(AVER_AND_CHECK_ALL) -/* CHECKD -- Check Down */ - -#define CHECKD(type, val) \ +#define CHECK_BY_LEVEL(minimal, shallow, deep) \ BEGIN \ - switch(CheckLevel) { \ - case CheckLevelMINIMAL: \ - NOOP; \ - break; \ - case CheckLevelSHALLOW: \ - CHECKS(type, val); \ - break; \ - case CheckLevelDEEP: \ - ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ - break; \ + switch (CheckLevel) { \ + case CheckLevelDEEP: deep; break; \ + case CheckLevelSHALLOW: shallow; break; \ + default: NOTREACHED; /* fall through */ \ + case CheckLevelMINIMAL: minimal; break; \ } \ END +#define CHECKL(cond) \ + CHECK_BY_LEVEL(NOOP, \ + ASSERT(cond, #cond), \ + ASSERT(cond, #cond)) -/* CHECKD_NOSIG -- Check Down for a type with no signature */ +#define CHECKD(type, val) \ + CHECK_BY_LEVEL(NOOP, \ + CHECKS(type, val), \ + ASSERT_TYPECHECK(type, val)) #define CHECKD_NOSIG(type, val) \ - BEGIN \ - switch(CheckLevel) { \ - case CheckLevelMINIMAL: \ - NOOP; \ - break; \ - case CheckLevelSHALLOW: \ - ASSERT((val) != NULL, "NullCheck " #type ": " #val); \ - break; \ - case CheckLevelDEEP: \ - ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ - break; \ - } \ - END - - -/* CHECKU -- Check Up */ + CHECK_BY_LEVEL(NOOP, \ + ASSERT_NULLCHECK(type, val), \ + ASSERT_TYPECHECK(type, val)) #define CHECKU(type, val) \ - BEGIN \ - switch(CheckLevel) { \ - case CheckLevelMINIMAL: \ - NOOP; \ - break; \ - case CheckLevelSHALLOW: \ - case CheckLevelDEEP: \ - CHECKS(type, val); \ - break; \ - } \ - END + CHECK_BY_LEVEL(NOOP, \ + CHECKS(type, val), \ + CHECKS(type, val)) +#define CHECKU_NOSIG(type, val) \ + CHECK_BY_LEVEL(NOOP, \ + ASSERT_NULLCHECK(type, val), \ + ASSERT_NULLCHECK(type, val)) -/* CHECKU_NOSIG -- Check Up for a type with no signature */ +#else /* AVER_AND_CHECK_ALL, not */ -#define CHECKU_NOSIG(type, val) \ - BEGIN \ - switch(CheckLevel) { \ - case CheckLevelMINIMAL: \ - NOOP; \ - break; \ - case CheckLevelSHALLOW: \ - case CheckLevelDEEP: \ - ASSERT((val) != NULL, "NullCheck " #type ": " #val); \ - break; \ - } \ - END +/* FIXME: This gives comparable performance to white-hot when compiling + using mps.c and -O (to get check methods inlined), but is it a bit + too minimal? How much do we rely on check methods? */ -#endif /* AVER_AND_CHECK_ALL */ +#define CHECKL(cond) DISCARD(cond) +#define CHECKD(type, val) DISCARD(CHECKT(type, val)) +#define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) +#define CHECKU(type, val) DISCARD(CHECKT(type, val)) +#define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) -#endif /* AVER_AND_CHECK_NONE */ +#endif /* AVER_AND_CHECK_ALL */ /* CHECKLVALUE &c -- type compatibility checking -- cgit v1.2.1 From 89a685f16488555436a7e70782ab3ac6132a59bf Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 1 Sep 2012 10:18:08 +0100 Subject: Renaming some check* macros with more accurate names, making remaining check* macros similar in function. Copied from Perforce Change: 179155 ServerID: perforce.ravenbrook.com --- mps/code/arena.c | 8 ++-- mps/code/arenavm.c | 4 +- mps/code/buffer.c | 8 ++-- mps/code/cbs.c | 2 +- mps/code/check.h | 36 ++++++++---------- mps/code/dbgpool.c | 2 +- mps/code/dbgpooli.c | 8 ++-- mps/code/eventpro.c | 18 ++++----- mps/code/eventrep.c | 10 ++--- mps/code/global.c | 4 +- mps/code/mpsi.c | 106 ++++++++++++++++++++++++++-------------------------- mps/code/pool.c | 2 +- mps/code/poolamc.c | 12 +++--- mps/code/poolams.c | 10 ++--- mps/code/poolmrg.c | 4 +- mps/code/poolmv.c | 4 +- mps/code/poolmv2.c | 4 +- mps/code/poolmvff.c | 4 +- mps/code/root.c | 4 +- mps/code/seg.c | 8 ++-- mps/code/vmw3.c | 4 +- 21 files changed, 128 insertions(+), 134 deletions(-) (limited to 'mps/code') diff --git a/mps/code/arena.c b/mps/code/arena.c index 704d13f60db..c3fe88ebf19 100644 --- a/mps/code/arena.c +++ b/mps/code/arena.c @@ -26,7 +26,7 @@ static void ArenaTrivCompact(Arena arena, Trace trace); static Res ArenaTrivDescribe(Arena arena, mps_lib_FILE *stream) { - if (!CHECKT(Arena, arena)) return ResFAIL; + if (!TESTT(Arena, arena)) return ResFAIL; if (stream == NULL) return ResFAIL; /* .describe.triv.never-called-from-subclass-method: @@ -324,7 +324,7 @@ Res ArenaDescribe(Arena arena, mps_lib_FILE *stream) Res res; Size reserved; - if (!CHECKT(Arena, arena)) return ResFAIL; + if (!TESTT(Arena, arena)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, "Arena $P {\n", (WriteFP)arena, @@ -396,7 +396,7 @@ Res ArenaDescribeTracts(Arena arena, mps_lib_FILE *stream) Addr oldLimit, base, limit; Size size; - if (!CHECKT(Arena, arena)) return ResFAIL; + if (!TESTT(Arena, arena)) return ResFAIL; if (stream == NULL) return ResFAIL; b = TractFirst(&tract, arena); @@ -481,7 +481,7 @@ Res ControlDescribe(Arena arena, mps_lib_FILE *stream) { Res res; - if (!CHECKT(Arena, arena)) return ResFAIL; + if (!TESTT(Arena, arena)) return ResFAIL; if (stream == NULL) return ResFAIL; res = PoolDescribe(ArenaControlPool(arena), stream); diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 81caf8bead5..87d7a797d37 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -202,10 +202,10 @@ static Res VMArenaDescribe(Arena arena, mps_lib_FILE *stream) VMArena vmArena; Index gen; - if (!CHECKT(Arena, arena)) return ResFAIL; + if (!TESTT(Arena, arena)) return ResFAIL; if (stream == NULL) return ResFAIL; vmArena = Arena2VMArena(arena); - if (!CHECKT(VMArena, vmArena)) return ResFAIL; + if (!TESTT(VMArena, vmArena)) return ResFAIL; /* Describe the superclass fields first via next-method call */ /* ...but the next method is ArenaTrivDescribe, so don't call it; diff --git a/mps/code/buffer.c b/mps/code/buffer.c index d8346c49e9c..9b7748c6572 100644 --- a/mps/code/buffer.c +++ b/mps/code/buffer.c @@ -149,7 +149,7 @@ Res BufferDescribe(Buffer buffer, mps_lib_FILE *stream) Res res; char abzMode[5]; - if (!CHECKT(Buffer, buffer)) return ResFAIL; + if (!TESTT(Buffer, buffer)) return ResFAIL; if (stream == NULL) return ResFAIL; abzMode[0] = (char)( (buffer->mode & BufferModeTRANSITION) ? 't' : '_' ); @@ -1185,7 +1185,7 @@ static void bufferNoReassignSeg (Buffer buffer, Seg seg) static Res bufferTrivDescribe(Buffer buffer, mps_lib_FILE *stream) { - if (!CHECKT(Buffer, buffer)) return ResFAIL; + if (!TESTT(Buffer, buffer)) return ResFAIL; if (stream == NULL) return ResFAIL; /* dispatching function does it all */ return ResOK; @@ -1444,10 +1444,10 @@ static Res segBufDescribe(Buffer buffer, mps_lib_FILE *stream) BufferClass super; Res res; - if (!CHECKT(Buffer, buffer)) return ResFAIL; + if (!TESTT(Buffer, buffer)) return ResFAIL; if (stream == NULL) return ResFAIL; segbuf = BufferSegBuf(buffer); - if (!CHECKT(SegBuf, segbuf)) return ResFAIL; + if (!TESTT(SegBuf, segbuf)) return ResFAIL; /* Describe the superclass fields first via next-method call */ super = BUFFER_SUPERCLASS(SegBufClass); diff --git a/mps/code/cbs.c b/mps/code/cbs.c index e3f5204e03e..df1a359e59a 100644 --- a/mps/code/cbs.c +++ b/mps/code/cbs.c @@ -1627,7 +1627,7 @@ Res CBSDescribe(CBS cbs, mps_lib_FILE *stream) { Res res; - if (!CHECKT(CBS, cbs)) return ResFAIL; + if (!TESTT(CBS, cbs)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/check.h b/mps/code/check.h index 78334f8d7d3..c43dcc1c3d2 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -155,16 +155,13 @@ enum { #endif -/* CHECKT -- check type simply +/* TESTT -- check type simply * * Must be thread safe. See * and . - * - * @@@@ This is a test, not a CHECK macro -- it does not assert. - * It should be renamed TESTSIG. RHSK 2006-12-13. */ -#define CHECKT(type, val) ((val) != NULL && (val)->sig == type ## Sig) +#define TESTT(type, val) ((val) != NULL && (val)->sig == type ## Sig) /* CHECKS -- Check Signature @@ -173,10 +170,10 @@ enum { */ #if defined(AVER_AND_CHECK_NONE) -#define CHECKS(type, val) DISCARD(CHECKT(type, val)) +#define CHECKS(type, val) DISCARD(TESTT(type, val)) #else #define CHECKS(type, val) \ - ASSERT(CHECKT(type, val), "SigCheck " #type ": " #val) + ASSERT(TESTT(type, val), "SigCheck " #type ": " #val) #endif @@ -272,43 +269,40 @@ enum { too minimal? How much do we rely on check methods? */ #define CHECKL(cond) DISCARD(cond) -#define CHECKD(type, val) DISCARD(CHECKT(type, val)) +#define CHECKD(type, val) DISCARD(TESTT(type, val)) #define CHECKD_NOSIG(type, val) DISCARD((val) != NULL) -#define CHECKU(type, val) DISCARD(CHECKT(type, val)) +#define CHECKU(type, val) DISCARD(TESTT(type, val)) #define CHECKU_NOSIG(type, val) DISCARD((val) != NULL) #endif /* AVER_AND_CHECK_ALL */ -/* CHECKLVALUE &c -- type compatibility checking +/* COMPAT* -- type compatibility checking * - * .check.macros: The CHECK* macros use some C trickery to attempt to + * .check.macros: The COMPAT* macros use some C trickery to attempt to * verify that certain types and fields are equivalent. They do not * do a complete job. This trickery is justified by the security gained * in knowing that matches the MPM. See also * mail.richard.1996-08-07.09-49. [This paragraph is intended to * satisfy rule.impl.trick.] - * - * @@@@ These are tests, not CHECK macros -- they do not assert. - * They should be renamed TESTTYPE etc. RHSK 2006-12-13. */ /* compile-time check */ -#define CHECKLVALUE(lv1, lv2) \ +#define COMPATLVALUE(lv1, lv2) \ ((void)sizeof((lv1) = (lv2)), (void)sizeof((lv2) = (lv1)), TRUE) /* aims to test whether t1 and t2 are assignment-compatible */ -#define CHECKTYPE(t1, t2) \ +#define COMPATTYPE(t1, t2) \ (sizeof(t1) == sizeof(t2) && \ - CHECKLVALUE(*((t1 *)0), *((t2 *)0))) + COMPATLVALUE(*((t1 *)0), *((t2 *)0))) -#define CHECKFIELDAPPROX(s1, f1, s2, f2) \ +#define COMPATFIELDAPPROX(s1, f1, s2, f2) \ (sizeof(((s1 *)0)->f1) == sizeof(((s2 *)0)->f2) && \ offsetof(s1, f1) == offsetof(s2, f2)) -#define CHECKFIELD(s1, f1, s2, f2) \ - (CHECKFIELDAPPROX(s1, f1, s2, f2) && \ - CHECKLVALUE(((s1 *)0)->f1, ((s2 *)0)->f2)) +#define COMPATFIELD(s1, f1, s2, f2) \ + (COMPATFIELDAPPROX(s1, f1, s2, f2) && \ + COMPATLVALUE(((s1 *)0)->f1, ((s2 *)0)->f2)) #endif /* check_h */ diff --git a/mps/code/dbgpool.c b/mps/code/dbgpool.c index 79d14a77727..765372fae64 100644 --- a/mps/code/dbgpool.c +++ b/mps/code/dbgpool.c @@ -72,7 +72,7 @@ Bool PoolDebugMixinCheck(PoolDebugMixin debug) CHECKL(TagInitMethodCheck(debug->tagInit)); /* Nothing to check about tagSize */ CHECKD(Pool, debug->tagPool); - CHECKL(CHECKTYPE(Addr, void*)); /* tagPool relies on this */ + CHECKL(COMPATTYPE(Addr, void*)); /* tagPool relies on this */ /* Nothing to check about missingTags */ CHECKL(SplayTreeCheck(&debug->index)); } diff --git a/mps/code/dbgpooli.c b/mps/code/dbgpooli.c index 52b6e7d3916..ebc8733e3c2 100644 --- a/mps/code/dbgpooli.c +++ b/mps/code/dbgpooli.c @@ -21,8 +21,8 @@ void mps_pool_check_fenceposts(mps_pool_t mps_pool) Pool pool = (Pool)mps_pool; Arena arena; - /* CHECKT not AVERT, see f1) == sizeof(((s2 *)0)->f2) && \ offsetof(s1, f1) == offsetof(s2, f2)) -#define CHECKFIELD(s1, f1, s2, f2) \ - (CHECKFIELDAPPROX(s1, f1, s2, f2) && \ - CHECKLVALUE(((s1 *)0)->f1, ((s2 *)0)->f2)) +#define COMPATFIELD(s1, f1, s2, f2) \ + (COMPATFIELDAPPROX(s1, f1, s2, f2) && \ + COMPATLVALUE(((s1 *)0)->f1, ((s2 *)0)->f2)) /* EventProcCreate -- initialize the module */ @@ -383,8 +383,8 @@ Res EventProcCreate(EventProc *procReturn, Bool partial, if (proc == NULL) return ResMEMORY; /* check event struct access */ - assert(CHECKFIELD(EventUnion, any.code, EventWSStruct, code)); - assert(CHECKFIELD(EventUnion, any.clock, EventWSStruct, clock)); + assert(COMPATFIELD(EventUnion, any.code, EventWSStruct, code)); + assert(COMPATFIELD(EventUnion, any.clock, EventWSStruct, clock)); /* check use of labelTable */ #if !defined(MPS_OS_FR) /* GCC -ansi -pedantic -Werror on FreeBSD will fail here diff --git a/mps/code/eventrep.c b/mps/code/eventrep.c index 7bbf2828eb2..75437f532b4 100644 --- a/mps/code/eventrep.c +++ b/mps/code/eventrep.c @@ -682,12 +682,12 @@ void EventReplay(Event event, Word etime) /* Checking macros, copied from check.h */ -#define CHECKLVALUE(lv1, lv2) \ +#define COMPATLVALUE(lv1, lv2) \ ((void)sizeof((lv1) = (lv2)), (void)sizeof((lv2) = (lv1)), TRUE) -#define CHECKTYPE(t1, t2) \ +#define COMPATTYPE(t1, t2) \ (sizeof(t1) == sizeof(t2) && \ - CHECKLVALUE(*((t1 *)0), *((t2 *)0))) + COMPATLVALUE(*((t1 *)0), *((t2 *)0))) /* CHECKCONV -- check t2 can be cast to t1 without loss */ @@ -705,8 +705,8 @@ Res EventRepInit(Bool partial) /* Check using pointers as keys in the tables. */ verify(CHECKCONV(Word, void *)); /* Check storage of MPS opaque handles in the tables. */ - verify(CHECKTYPE(mps_arena_t, void *)); - verify(CHECKTYPE(mps_ap_t, void *)); + verify(COMPATTYPE(mps_arena_t, void *)); + verify(COMPATTYPE(mps_ap_t, void *)); /* .event-conv: Conversion of event fields into the types required */ /* by the MPS functions is justified by the reverse conversion */ /* being acceptable (which is upto the event log generator). */ diff --git a/mps/code/global.c b/mps/code/global.c index ede40309f4a..806da8dfbaa 100644 --- a/mps/code/global.c +++ b/mps/code/global.c @@ -484,7 +484,7 @@ void arenaEnterLock(Arena arena, int recursive) /* This check is safe to do outside the lock. Unless the client is also calling ArenaDestroy, but that's a protocol violation by the client if so. */ - AVER(CHECKT(Arena, arena)); + AVER(TESTT(Arena, arena)); StackProbe(StackProbeDEPTH); lock = ArenaGlobals(arena)->lock; @@ -946,7 +946,7 @@ Res GlobalsDescribe(Globals arenaGlobals, mps_lib_FILE *stream) Ring node, nextNode; Index i; - if (!CHECKT(Globals, arenaGlobals)) return ResFAIL; + if (!TESTT(Globals, arenaGlobals)) return ResFAIL; if (stream == NULL) return ResFAIL; arena = GlobalsArena(arenaGlobals); diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c index 3a356f5d50a..06b2e50cc15 100644 --- a/mps/code/mpsi.c +++ b/mps/code/mpsi.c @@ -73,7 +73,7 @@ static Bool mpsi_check(void) /* .check.rc: Check that external and internal result codes match. */ /* See and . */ /* Also see .check.enum.cast. */ - CHECKL(CHECKTYPE(mps_res_t, Res)); + CHECKL(COMPATTYPE(mps_res_t, Res)); CHECKL((int)MPS_RES_OK == (int)ResOK); CHECKL((int)MPS_RES_FAIL == (int)ResFAIL); CHECKL((int)MPS_RES_RESOURCE == (int)ResRESOURCE); @@ -86,7 +86,7 @@ static Bool mpsi_check(void) /* Check that external and internal rank numbers match. */ /* See and . */ /* Also see .check.enum.cast. */ - CHECKL(CHECKTYPE(mps_rank_t, Rank)); + CHECKL(COMPATTYPE(mps_rank_t, Rank)); CHECKL((int)MPS_RANK_AMBIG == (int)RankAMBIG); CHECKL((int)MPS_RANK_EXACT == (int)RankEXACT); CHECKL((int)MPS_RANK_WEAK == (int)RankWEAK); @@ -95,7 +95,7 @@ static Bool mpsi_check(void) /* See and */ /* . */ /* Also see .check.enum.cast. */ - CHECKL(CHECKTYPE(mps_message_type_t, MessageType)); + CHECKL(COMPATTYPE(mps_message_type_t, MessageType)); CHECKL((int)MessageTypeFINALIZATION == (int)MPS_MESSAGE_TYPE_FINALIZATION); CHECKL((int)MessageTypeGC @@ -106,74 +106,74 @@ static Bool mpsi_check(void) /* The external idea of a word width and the internal one */ /* had better match. See . */ CHECKL(sizeof(mps_word_t) == sizeof(void *)); - CHECKL(CHECKTYPE(mps_word_t, Word)); + CHECKL(COMPATTYPE(mps_word_t, Word)); /* The external idea of an address and the internal one */ /* had better match. */ - CHECKL(CHECKTYPE(mps_addr_t, Addr)); + CHECKL(COMPATTYPE(mps_addr_t, Addr)); /* The external idea of size and the internal one had */ /* better match. See */ /* and . */ - CHECKL(CHECKTYPE(size_t, Size)); + CHECKL(COMPATTYPE(size_t, Size)); /* Clock values are passed from external to internal and back */ /* out to external. */ - CHECKL(CHECKTYPE(mps_clock_t, Clock)); + CHECKL(COMPATTYPE(mps_clock_t, Clock)); /* Check ap_s/APStruct compatibility by hand */ /* .check.ap: See and . */ CHECKL(sizeof(mps_ap_s) == sizeof(APStruct)); - CHECKL(CHECKFIELD(mps_ap_s, init, APStruct, init)); - CHECKL(CHECKFIELD(mps_ap_s, alloc, APStruct, alloc)); - CHECKL(CHECKFIELD(mps_ap_s, limit, APStruct, limit)); + CHECKL(COMPATFIELD(mps_ap_s, init, APStruct, init)); + CHECKL(COMPATFIELD(mps_ap_s, alloc, APStruct, alloc)); + CHECKL(COMPATFIELD(mps_ap_s, limit, APStruct, limit)); /* Check sac_s/ExternalSACStruct compatibility by hand */ /* See and . */ CHECKL(sizeof(mps_sac_s) == sizeof(ExternalSACStruct)); - CHECKL(CHECKFIELD(mps_sac_s, mps_middle, ExternalSACStruct, middle)); - CHECKL(CHECKFIELD(mps_sac_s, mps_trapped, + CHECKL(COMPATFIELD(mps_sac_s, mps_middle, ExternalSACStruct, middle)); + CHECKL(COMPATFIELD(mps_sac_s, mps_trapped, ExternalSACStruct, trapped)); - CHECKL(CHECKFIELDAPPROX(mps_sac_s, mps_freelists, + CHECKL(COMPATFIELDAPPROX(mps_sac_s, mps_freelists, ExternalSACStruct, freelists)); CHECKL(sizeof(mps_sac_freelist_block_s) == sizeof(SACFreeListBlockStruct)); - CHECKL(CHECKFIELD(mps_sac_freelist_block_s, mps_size, + CHECKL(COMPATFIELD(mps_sac_freelist_block_s, mps_size, SACFreeListBlockStruct, size)); - CHECKL(CHECKFIELD(mps_sac_freelist_block_s, mps_count, + CHECKL(COMPATFIELD(mps_sac_freelist_block_s, mps_count, SACFreeListBlockStruct, count)); - CHECKL(CHECKFIELD(mps_sac_freelist_block_s, mps_count_max, + CHECKL(COMPATFIELD(mps_sac_freelist_block_s, mps_count_max, SACFreeListBlockStruct, countMax)); - CHECKL(CHECKFIELD(mps_sac_freelist_block_s, mps_blocks, + CHECKL(COMPATFIELD(mps_sac_freelist_block_s, mps_blocks, SACFreeListBlockStruct, blocks)); /* Check sac_classes_s/SACClassesStruct compatibility by hand */ /* See and . */ CHECKL(sizeof(mps_sac_classes_s) == sizeof(SACClassesStruct)); - CHECKL(CHECKFIELD(mps_sac_classes_s, mps_block_size, + CHECKL(COMPATFIELD(mps_sac_classes_s, mps_block_size, SACClassesStruct, blockSize)); - CHECKL(CHECKFIELD(mps_sac_classes_s, mps_cached_count, + CHECKL(COMPATFIELD(mps_sac_classes_s, mps_cached_count, SACClassesStruct, cachedCount)); - CHECKL(CHECKFIELD(mps_sac_classes_s, mps_frequency, + CHECKL(COMPATFIELD(mps_sac_classes_s, mps_frequency, SACClassesStruct, frequency)); /* Check ss_s/ScanStateStruct compatibility by hand */ /* .check.ss: See and . */ /* Note that the size of the mps_ss_s and ScanStateStruct */ - /* are not equal. See . CHECKFIELDAPPROX */ + /* are not equal. See . COMPATFIELDAPPROX */ /* is used on the fix field because its type is punned and */ /* therefore isn't exactly checkable. See */ /* . */ - CHECKL(CHECKFIELDAPPROX(mps_ss_s, fix, ScanStateStruct, fix)); - CHECKL(CHECKFIELD(mps_ss_s, w0, ScanStateStruct, zoneShift)); - CHECKL(CHECKFIELD(mps_ss_s, w1, ScanStateStruct, white)); - CHECKL(CHECKFIELD(mps_ss_s, w2, ScanStateStruct, unfixedSummary)); + CHECKL(COMPATFIELDAPPROX(mps_ss_s, fix, ScanStateStruct, fix)); + CHECKL(COMPATFIELD(mps_ss_s, w0, ScanStateStruct, zoneShift)); + CHECKL(COMPATFIELD(mps_ss_s, w1, ScanStateStruct, white)); + CHECKL(COMPATFIELD(mps_ss_s, w2, ScanStateStruct, unfixedSummary)); /* Check ld_s/LDStruct compatibility by hand */ /* .check.ld: See also and */ CHECKL(sizeof(mps_ld_s) == sizeof(LDStruct)); - CHECKL(CHECKFIELD(mps_ld_s, w0, LDStruct, epoch)); - CHECKL(CHECKFIELD(mps_ld_s, w1, LDStruct, rs)); + CHECKL(COMPATFIELD(mps_ld_s, w0, LDStruct, epoch)); + CHECKL(COMPATFIELD(mps_ld_s, w1, LDStruct, rs)); return TRUE; } @@ -726,7 +726,7 @@ void mps_fmt_destroy(mps_fmt_t mps_fmt) Format format = (Format)mps_fmt; Arena arena; - AVER(CHECKT(Format, format)); + AVER(TESTT(Format, format)); arena = FormatArena(format); ArenaEnter(arena); @@ -776,7 +776,7 @@ void mps_pool_destroy(mps_pool_t mps_pool) Pool pool = (Pool)mps_pool; Arena arena; - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -794,7 +794,7 @@ mps_res_t mps_alloc(mps_addr_t *p_o, mps_pool_t mps_pool, size_t size, ...) Addr p; Res res; - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -836,7 +836,7 @@ void mps_free(mps_pool_t mps_pool, mps_addr_t p, size_t size) Pool pool = (Pool)mps_pool; Arena arena; - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -864,7 +864,7 @@ mps_res_t mps_ap_create(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, ...) va_list args; AVER(mps_ap_o != NULL); - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -897,7 +897,7 @@ mps_res_t mps_ap_create_v(mps_ap_t *mps_ap_o, mps_pool_t mps_pool, Res res; AVER(mps_ap_o != NULL); - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -921,7 +921,7 @@ void mps_ap_destroy(mps_ap_t mps_ap) Arena arena; AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -945,7 +945,7 @@ mps_res_t (mps_reserve)(mps_addr_t *p_o, mps_ap_t mps_ap, size_t size) AVER(p_o != NULL); AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, BufferOfAP((AP)mps_ap))); + AVER(TESTT(Buffer, BufferOfAP((AP)mps_ap))); AVER(mps_ap->init == mps_ap->alloc); AVER(size > 0); @@ -964,7 +964,7 @@ mps_res_t mps_reserve_with_reservoir_permit(mps_addr_t *p_o, AVER(p_o != NULL); AVER(size > 0); AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, BufferOfAP((AP)mps_ap))); + AVER(TESTT(Buffer, BufferOfAP((AP)mps_ap))); AVER(mps_ap->init == mps_ap->alloc); MPS_RESERVE_WITH_RESERVOIR_PERMIT_BLOCK(res, *p_o, mps_ap, size); @@ -985,7 +985,7 @@ mps_res_t mps_reserve_with_reservoir_permit(mps_addr_t *p_o, mps_bool_t (mps_commit)(mps_ap_t mps_ap, mps_addr_t p, size_t size) { AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, BufferOfAP((AP)mps_ap))); + AVER(TESTT(Buffer, BufferOfAP((AP)mps_ap))); AVER(p != NULL); AVER(size > 0); AVER(p == mps_ap->init); @@ -1027,7 +1027,7 @@ mps_res_t (mps_ap_frame_push)(mps_frame_t *frame_o, mps_ap_t mps_ap) AllocFrame frame; Res res; - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1070,7 +1070,7 @@ mps_res_t (mps_ap_frame_pop)(mps_ap_t mps_ap, mps_frame_t frame) Arena arena; Res res; - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1097,7 +1097,7 @@ mps_res_t mps_ap_fill(mps_addr_t *p_o, mps_ap_t mps_ap, size_t size) Res res; AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1128,7 +1128,7 @@ mps_res_t mps_ap_fill_with_reservoir_permit(mps_addr_t *p_o, mps_ap_t mps_ap, Res res; AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1162,7 +1162,7 @@ mps_bool_t mps_ap_trip(mps_ap_t mps_ap, mps_addr_t p, size_t size) Bool b; AVER(mps_ap != NULL); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1191,7 +1191,7 @@ mps_res_t mps_sac_create(mps_sac_t *mps_sac_o, mps_pool_t mps_pool, Res res; AVER(mps_sac_o != NULL); - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); @@ -1214,7 +1214,7 @@ void mps_sac_destroy(mps_sac_t mps_sac) SAC sac = SACOfExternalSAC((ExternalSAC)mps_sac); Arena arena; - AVER(CHECKT(SAC, sac)); + AVER(TESTT(SAC, sac)); arena = SACArena(sac); ArenaEnter(arena); @@ -1232,7 +1232,7 @@ void mps_sac_flush(mps_sac_t mps_sac) SAC sac = SACOfExternalSAC((ExternalSAC)mps_sac); Arena arena; - AVER(CHECKT(SAC, sac)); + AVER(TESTT(SAC, sac)); arena = SACArena(sac); ArenaEnter(arena); @@ -1254,7 +1254,7 @@ mps_res_t mps_sac_fill(mps_addr_t *p_o, mps_sac_t mps_sac, size_t size, Res res; AVER(p_o != NULL); - AVER(CHECKT(SAC, sac)); + AVER(TESTT(SAC, sac)); arena = SACArena(sac); ArenaEnter(arena); @@ -1276,7 +1276,7 @@ void mps_sac_empty(mps_sac_t mps_sac, mps_addr_t p, size_t size) SAC sac = SACOfExternalSAC((ExternalSAC)mps_sac); Arena arena; - AVER(CHECKT(SAC, sac)); + AVER(TESTT(SAC, sac)); arena = SACArena(sac); ArenaEnter(arena); @@ -1295,7 +1295,7 @@ mps_res_t mps_sac_alloc(mps_addr_t *p_o, mps_sac_t mps_sac, size_t size, Res res; AVER(p_o != NULL); - AVER(CHECKT(SAC, SACOfExternalSAC((ExternalSAC)mps_sac))); + AVER(TESTT(SAC, SACOfExternalSAC((ExternalSAC)mps_sac))); AVER(size > 0); MPS_SAC_ALLOC_FAST(res, *p_o, mps_sac, size, (has_reservoir_permit != 0)); @@ -1307,7 +1307,7 @@ mps_res_t mps_sac_alloc(mps_addr_t *p_o, mps_sac_t mps_sac, size_t size, void mps_sac_free(mps_sac_t mps_sac, mps_addr_t p, size_t size) { - AVER(CHECKT(SAC, SACOfExternalSAC((ExternalSAC)mps_sac))); + AVER(TESTT(SAC, SACOfExternalSAC((ExternalSAC)mps_sac))); /* Can't check p outside arena lock */ AVER(size > 0); @@ -1940,7 +1940,7 @@ mps_res_t mps_ap_alloc_pattern_begin(mps_ap_t mps_ap, AVER(mps_ap != NULL); buf = BufferOfAP((AP)mps_ap); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -1961,7 +1961,7 @@ mps_res_t mps_ap_alloc_pattern_end(mps_ap_t mps_ap, AVER(mps_ap != NULL); buf = BufferOfAP((AP)mps_ap); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); UNUSED(alloc_pattern); /* .ramp.hack */ arena = BufferArena(buf); @@ -1982,7 +1982,7 @@ mps_res_t mps_ap_alloc_pattern_reset(mps_ap_t mps_ap) AVER(mps_ap != NULL); buf = BufferOfAP((AP)mps_ap); - AVER(CHECKT(Buffer, buf)); + AVER(TESTT(Buffer, buf)); arena = BufferArena(buf); ArenaEnter(arena); @@ -2074,7 +2074,7 @@ void mps_chain_destroy(mps_chain_t mps_chain) Arena arena; Chain chain = (Chain)mps_chain; - AVER(CHECKT(Chain, chain)); + AVER(TESTT(Chain, chain)); arena = chain->arena; ArenaEnter(arena); diff --git a/mps/code/pool.c b/mps/code/pool.c index e2578cf3497..802acf01d6a 100644 --- a/mps/code/pool.c +++ b/mps/code/pool.c @@ -515,7 +515,7 @@ Res PoolDescribe(Pool pool, mps_lib_FILE *stream) Res res; Ring node, nextNode; - if (!CHECKT(Pool, pool)) return ResFAIL; + if (!TESTT(Pool, pool)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/poolamc.c b/mps/code/poolamc.c index bea60caa03e..3698f328b90 100644 --- a/mps/code/poolamc.c +++ b/mps/code/poolamc.c @@ -258,12 +258,12 @@ static Res AMCSegDescribe(Seg seg, mps_lib_FILE *stream) Size row; char abzSketch[5]; - if(!CHECKT(Seg, seg)) + if(!TESTT(Seg, seg)) return ResFAIL; if(stream == NULL) return ResFAIL; amcseg = Seg2amcSeg(seg); - if(!CHECKT(amcSeg, amcseg)) + if(!TESTT(amcSeg, amcseg)) return ResFAIL; /* Describe the superclass fields first via next-method call */ @@ -745,7 +745,7 @@ static Res amcGenDescribe(amcGen gen, mps_lib_FILE *stream) { Res res; - if(!CHECKT(amcGen, gen)) + if(!TESTT(amcGen, gen)) return ResFAIL; res = WriteF(stream, @@ -2330,10 +2330,10 @@ static Res AMCDescribe(Pool pool, mps_lib_FILE *stream) Ring node, nextNode; char *rampmode; - if(!CHECKT(Pool, pool)) + if(!TESTT(Pool, pool)) return ResFAIL; amc = Pool2AMC(pool); - if(!CHECKT(AMC, amc)) + if(!TESTT(AMC, amc)) return ResFAIL; if(stream == NULL) return ResFAIL; @@ -2485,7 +2485,7 @@ void mps_amc_apply(mps_pool_t mps_pool, mps_amc_apply_closure_s closure_s; Arena arena; - AVER(CHECKT(Pool, pool)); + AVER(TESTT(Pool, pool)); arena = PoolArena(pool); ArenaEnter(arena); AVERT(Pool, pool); diff --git a/mps/code/poolams.c b/mps/code/poolams.c index 913195aab7c..4fbaba79b7d 100644 --- a/mps/code/poolams.c +++ b/mps/code/poolams.c @@ -524,10 +524,10 @@ static Res AMSSegDescribe(Seg seg, mps_lib_FILE *stream) Buffer buffer; /* the segment's buffer, if it has one */ Index i; - if (!CHECKT(Seg, seg)) return ResFAIL; + if (!TESTT(Seg, seg)) return ResFAIL; if (stream == NULL) return ResFAIL; amsseg = Seg2AMSSeg(seg); - if (!CHECKT(AMSSeg, amsseg)) return ResFAIL; + if (!TESTT(AMSSeg, amsseg)) return ResFAIL; /* Describe the superclass fields first via next-method call */ super = SEG_SUPERCLASS(AMSSegClass); @@ -1366,7 +1366,7 @@ static Res AMSFix(Pool pool, ScanState ss, Seg seg, Ref *refIO) Format format; AVERT_CRITICAL(Pool, pool); - AVER_CRITICAL(CHECKT(AMS, Pool2AMS(pool))); + AVER_CRITICAL(TESTT(AMS, Pool2AMS(pool))); AVERT_CRITICAL(ScanState, ss); AVERT_CRITICAL(Seg, seg); AVER_CRITICAL(refIO != NULL); @@ -1591,9 +1591,9 @@ static Res AMSDescribe(Pool pool, mps_lib_FILE *stream) Ring node, nextNode; Res res; - if (!CHECKT(Pool, pool)) return ResFAIL; + if (!TESTT(Pool, pool)) return ResFAIL; ams = Pool2AMS(pool); - if (!CHECKT(AMS, ams)) return ResFAIL; + if (!TESTT(AMS, ams)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/poolmrg.c b/mps/code/poolmrg.c index 73ec8ac81f1..6abba410f72 100644 --- a/mps/code/poolmrg.c +++ b/mps/code/poolmrg.c @@ -792,9 +792,9 @@ static Res MRGDescribe(Pool pool, mps_lib_FILE *stream) RefPart refPart; Res res; - if (!CHECKT(Pool, pool)) return ResFAIL; + if (!TESTT(Pool, pool)) return ResFAIL; mrg = Pool2MRG(pool); - if (!CHECKT(MRG, mrg)) return ResFAIL; + if (!TESTT(MRG, mrg)) return ResFAIL; if (stream == NULL) return ResFAIL; arena = PoolArena(pool); diff --git a/mps/code/poolmv.c b/mps/code/poolmv.c index ae71bb40804..a7026276008 100644 --- a/mps/code/poolmv.c +++ b/mps/code/poolmv.c @@ -646,9 +646,9 @@ static Res MVDescribe(Pool pool, mps_lib_FILE *stream) char c; Ring spans, node = NULL, nextNode; /* gcc whinge stop */ - if(!CHECKT(Pool, pool)) return ResFAIL; + if(!TESTT(Pool, pool)) return ResFAIL; mv = Pool2MV(pool); - if(!CHECKT(MV, mv)) return ResFAIL; + if(!TESTT(MV, mv)) return ResFAIL; if(stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/poolmv2.c b/mps/code/poolmv2.c index 974112b7abe..b67b236d1b4 100644 --- a/mps/code/poolmv2.c +++ b/mps/code/poolmv2.c @@ -685,9 +685,9 @@ static Res MVTDescribe(Pool pool, mps_lib_FILE *stream) Res res; MVT mvt; - if (!CHECKT(Pool, pool)) return ResFAIL; + if (!TESTT(Pool, pool)) return ResFAIL; mvt = Pool2MVT(pool); - if (!CHECKT(MVT, mvt)) return ResFAIL; + if (!TESTT(MVT, mvt)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/poolmvff.c b/mps/code/poolmvff.c index f13c94893aa..1bbe1e85806 100644 --- a/mps/code/poolmvff.c +++ b/mps/code/poolmvff.c @@ -537,9 +537,9 @@ static Res MVFFDescribe(Pool pool, mps_lib_FILE *stream) Res res; MVFF mvff; - if (!CHECKT(Pool, pool)) return ResFAIL; + if (!TESTT(Pool, pool)) return ResFAIL; mvff = Pool2MVFF(pool); - if (!CHECKT(MVFF, mvff)) return ResFAIL; + if (!TESTT(MVFF, mvff)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/root.c b/mps/code/root.c index bd2dd21f5ea..e746d3c1b61 100644 --- a/mps/code/root.c +++ b/mps/code/root.c @@ -380,7 +380,7 @@ void RootDestroy(Root root) Arena RootArena(Root root) { - AVER(CHECKT(Root, root)); + AVER(TESTT(Root, root)); return root->arena; } @@ -584,7 +584,7 @@ Res RootDescribe(Root root, mps_lib_FILE *stream) { Res res; - if (!CHECKT(Root, root)) return ResFAIL; + if (!TESTT(Root, root)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, diff --git a/mps/code/seg.c b/mps/code/seg.c index 3f95ba4ec88..6c194881bb8 100644 --- a/mps/code/seg.c +++ b/mps/code/seg.c @@ -353,7 +353,7 @@ Res SegDescribe(Seg seg, mps_lib_FILE *stream) Res res; Pool pool; - if (!CHECKT(Seg, seg)) return ResFAIL; + if (!TESTT(Seg, seg)) return ResFAIL; if (stream == NULL) return ResFAIL; pool = SegPool(seg); @@ -964,7 +964,7 @@ static Res segTrivDescribe(Seg seg, mps_lib_FILE *stream) { Res res; - if (!CHECKT(Seg, seg)) return ResFAIL; + if (!TESTT(Seg, seg)) return ResFAIL; if (stream == NULL) return ResFAIL; res = WriteF(stream, @@ -1550,10 +1550,10 @@ static Res gcSegDescribe(Seg seg, mps_lib_FILE *stream) SegClass super; GCSeg gcseg; - if (!CHECKT(Seg, seg)) return ResFAIL; + if (!TESTT(Seg, seg)) return ResFAIL; if (stream == NULL) return ResFAIL; gcseg = SegGCSeg(seg); - if (!CHECKT(GCSeg, gcseg)) return ResFAIL; + if (!TESTT(GCSeg, gcseg)) return ResFAIL; /* Describe the superclass fields first via next-method call */ super = SEG_SUPERCLASS(GCSegClass); diff --git a/mps/code/vmw3.c b/mps/code/vmw3.c index 554209687d3..e1e05b4ab2a 100644 --- a/mps/code/vmw3.c +++ b/mps/code/vmw3.c @@ -103,8 +103,8 @@ Res VMCreate(VM *vmReturn, Size size) AVER(vmReturn != NULL); - AVER(CHECKTYPE(LPVOID, Addr)); /* .assume.lpvoid-addr */ - AVER(CHECKTYPE(SIZE_T, Size)); + AVER(COMPATTYPE(LPVOID, Addr)); /* .assume.lpvoid-addr */ + AVER(COMPATTYPE(SIZE_T, Size)); GetSystemInfo(&si); align = (Align)si.dwPageSize; -- cgit v1.2.1 From 4fde4e10b29d4779189b81cf9c8a050593514aa3 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 1 Sep 2012 11:40:43 +0100 Subject: Compiling with a static checking level by default, doubling the speed of the cool variety. Copied from Perforce Change: 179157 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 44 +++++++++++++++++++++++++++++--------------- mps/code/config.h | 24 ++++++++++++------------ mps/code/mpm.c | 6 ++++-- 3 files changed, 45 insertions(+), 29 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index c43dcc1c3d2..63afefad564 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -68,12 +68,25 @@ * static variable CheckLevel controls the frequency and detail of * consistency checking on structures. * - * FIXME: This should be initialised from an environment variable and have - * an interface in mps.h. + * By default, CHECKLEVEL is defined to a static value in config.h, though + * it can be overridden on the compiler command line, e.g. + * cc -DCHECKLEVEL=CheckLevelSHALLOW ... + * + * However, if CHECKLEVEL_DYNAMIC is defined we use a variable to control + * the level of checking. The run-time overhead for this is quite high + * (observed double run-time on amcss when the variable is set to SHALLOW). + * CHECKLEVEL_DYNAMIC should be set to the initial level for the variable, + * which is in mpm.c. + * + * In general, it's better to adjust the check level by defining CHECKLEVEL + * but this is intended to meet the case where a run-time adjustable + * checking level is required -- where recompilation or relinking is + * undesirable or impossible. + * + * FIXME: Should also allow the check level variable to come from an + * environment variable. */ -extern unsigned CheckLevel; - enum { CheckLevelMINIMAL = 0, /* local sig check only */ CheckLevelSHALLOW = 1, /* local invariants, */ @@ -83,6 +96,12 @@ enum { /* and recursive down full type checks */ }; +#ifdef CHECKLEVEL_DYNAMIC +extern unsigned CheckLevel; +#undef CHECKLEVEL +#define CHECKLEVEL CheckLevel +#endif + /* AVER, AVERT -- MPM assertions * @@ -117,13 +136,13 @@ enum { #define AVER_CRITICAL(cond) \ BEGIN \ - if (CheckLevel != CheckLevelMINIMAL) \ + if (CHECKLEVEL != CheckLevelMINIMAL) \ ASSERT(cond, #cond); \ END #define AVERT_CRITICAL(type, val) \ BEGIN \ - if (CheckLevel != CheckLevelMINIMAL) \ + if (CHECKLEVEL != CheckLevelMINIMAL) \ ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ END @@ -166,7 +185,7 @@ enum { /* CHECKS -- Check Signature * - * (if CheckLevel == CheckLevelMINIMAL, this is all we check) + * (if CHECKLEVEL == CheckLevelMINIMAL, this is all we check) */ #if defined(AVER_AND_CHECK_NONE) @@ -196,7 +215,7 @@ enum { * - check "up" values which are its "parents" with CHECKU. * * These various checks will be compiled out or compiled to be controlled - * by CheckLevel. + * by CHECKLEVEL. * * For example: * @@ -215,21 +234,16 @@ enum { * children which are Segments, etc. * * The important thing is to have a partial order on types so that recursive - * checking will terminate. When CheckLevel is set to DEEP, checking will + * checking will terminate. When CHECKLEVEL is set to DEEP, checking will * recurse into check methods for children, but will only do a shallow * signature check on parents, avoiding infinite regression. - * - * FIXME: Switching on every CHECK line doesn't compile very well, because - * the compiler can't tell that CheckLevel won't change between function - * calls and can't lift out the test. Is there a better arrangement, - * perhaps by reading CheckLevel into a local variable? */ #if defined(AVER_AND_CHECK_ALL) #define CHECK_BY_LEVEL(minimal, shallow, deep) \ BEGIN \ - switch (CheckLevel) { \ + switch (CHECKLEVEL) { \ case CheckLevelDEEP: deep; break; \ case CheckLevelSHALLOW: shallow; break; \ default: NOTREACHED; /* fall through */ \ diff --git a/mps/code/config.h b/mps/code/config.h index 86b3a22b610..15c30b6e5e0 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -35,7 +35,6 @@ #if defined(CONFIG_VAR_WE) /* White-hot variety */ /* no asserts */ -/* ... so CHECKLEVEL_INITIAL is irrelevant */ /* no statistic meters */ /* no telemetry log events */ @@ -49,7 +48,9 @@ #elif defined(CONFIG_VAR_HE) /* Hot variety */ #define CONFIG_ASSERT -#define CHECKLEVEL_INITIAL CheckLevelMINIMAL +#ifndef CHECKLEVEL +#define CHECKLEVEL CheckLevelMINIMAL +#endif /* no statistic meters */ /* no telemetry log events */ @@ -63,7 +64,9 @@ #elif defined(CONFIG_VAR_DI) /* Diagnostic variety */ #define CONFIG_ASSERT -#define CHECKLEVEL_INITIAL CheckLevelMINIMAL +#ifndef CHECKLEVEL +#define CHECKLEVEL CheckLevelMINIMAL +#endif #define CONFIG_STATS /* For diagnostics, choose a DIAG_WITH_... output method. * (We need to choose because the DIAG output system is under @@ -85,8 +88,10 @@ #elif defined(CONFIG_VAR_CI) /* Cool variety */ #define CONFIG_ASSERT #define CONFIG_ASSERT_ALL -/* ... let PRODUCT determine CHECKLEVEL_INITIAL */ #define CONFIG_STATS +#ifndef CHECKLEVEL +#define CHECKLEVEL CheckLevelSHALLOW +#endif /* no telemetry log events */ @@ -100,7 +105,9 @@ #elif defined(CONFIG_VAR_TI) /* Telemetry, Internal; variety.ti */ #define CONFIG_ASSERT #define CONFIG_ASSERT_ALL -/* ... let PRODUCT determine CHECKLEVEL_INITIAL */ +#ifndef CHECKLEVEL +#define CHECKLEVEL CheckLevelSHALLOW +#endif #define CONFIG_STATS #define CONFIG_LOG @@ -400,13 +407,6 @@ */ #define ARENA_SIZE ((Size)1<<30) -/* if CHECKLEVEL_INITIAL hasn't been defined already (e.g. by a variety, or - * in a makefile), take the value from the product. */ - -#ifndef CHECKLEVEL_INITIAL -#define CHECKLEVEL_INITIAL PROD_CHECKLEVEL_INITIAL -#endif - /* Dongle configuration */ diff --git a/mps/code/mpm.c b/mps/code/mpm.c index 4f9af3f888c..f287f2cf964 100644 --- a/mps/code/mpm.c +++ b/mps/code/mpm.c @@ -23,10 +23,12 @@ SRCID(mpm, "$Id$"); /* CheckLevel -- Control check level * - * This controls the behaviour of Check methods (see impl.h.check). + * This controls the behaviour of Check methods (see check.h). */ -unsigned CheckLevel = CHECKLEVEL_INITIAL; +#ifdef CHECKLEVEL_DYNAMIC +unsigned CheckLevel = CHECKLEVEL_DYNAMIC; +#endif /* MPMCheck -- test MPM assumptions */ -- cgit v1.2.1 From ad1c82af3b12d5a1ac91360c87bc79165b37fab9 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sat, 1 Sep 2012 11:45:26 +0100 Subject: Adding fixme note about checkleveldeep not working. Copied from Perforce Change: 179158 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index 63afefad564..3ba0fff138b 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -85,6 +85,9 @@ * * FIXME: Should also allow the check level variable to come from an * environment variable. + * + * FIXME: CheckLevelDEEP asserts on arena creation with bootstrapping + * problems. It clearly hasn't been tried for a while. RB 2012-09-01 */ enum { -- cgit v1.2.1 From f92b4c38238702b94bd89327c96c2bd9d52dbf3d Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 08:25:27 +0100 Subject: Building version.c at link time to avoid constant rebuilds of executables and libraries. Copied from Perforce Change: 179165 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 1726e451543..0cb317c1042 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -173,7 +173,7 @@ MPMCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ trace.c traceanc.c root.c seg.c format.c buffer.c ref.c \ bt.c ring.c shield.c ld.c event.c sac.c message.c \ poolmrg.c poolmfs.c poolmv.c dbgpool.c dbgpooli.c \ - boot.c meter.c splay.c cbs.c diag.c version.c + boot.c meter.c splay.c cbs.c diag.c MPM = $(MPMCOMMON) $(MPMPF) SWCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ tract.c walk.c reserv.c protocol.c pool.c poolabs.c \ @@ -181,7 +181,7 @@ SWCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ bt.c ring.c shield.c ld.c event.c sac.c message.c \ poolmrg.c poolmfs.c poolmv.c dbgpool.c dbgpooli \ poolams.c poolamsi.c poolmvff.c \ - boot.c meter.c splay.c cbs.c version.c mpsioan.c + boot.c meter.c splay.c cbs.c mpsioan.c SW = $(SWCOMMON) $(SWPF) @@ -471,25 +471,6 @@ test -d $(PFM)/$(VARIETY) || mkdir $(PFM)/$(VARIETY) $(CC) $(CFLAGS) -c -o $@ $< endef -# .force: FORCE is a dependent that can be used to force targets to be -# built. -.PHONY: FORCE -# A rule with no dependents and no commands always causes update. -# (See GNUMake doc, make.info, Node: Force Targets) -# (ignore the bit about using FORCE as being the same as using .PHONY -# it's not, and we make use of that, see .special.version below) -FORCE: - -# .special.version: version.o has a special rule so that it is always -# built. This rule has no commands, this has the effect of adding the -# dependents to those specified by other rules (in this case the implicit -# .o:.c rule below, .rule.c-to-o). The extra dependent added is the -# FORCE dependent (defined above, .force) which causes the target to be -# always built. -ifdef VARIETY -$(PFM)/$(VARIETY)/version.o: FORCE -endif - # .rule.c-to-o: $(PFM)/$(VARIETY)/%.o: %.c $(run-cc) @@ -534,14 +515,15 @@ endif $(PFM)/$(VARIETY)/%.a: $(ECHO) "$(PFM): $@" rm -f $@ - $(AR) $(ARFLAGS) $@ $^ + $(CC) $(CFLAGS) -c -o $(PFM)/$(VARIETY)/version.o version.c + $(AR) $(ARFLAGS) $@ $^ $(PFM)/$(VARIETY)/version.o $(RANLIB) $@ # Executable $(PFM)/$(VARIETY)/%: $(ECHO) "$(PFM): $@" - $(CC) $(LINKFLAGS) -o $@ $^ $(LIBS) + $(CC) $(CFLAGS) $(LINKFLAGS) -o $@ $^ version.c $(LIBS) # C. COPYRIGHT AND LICENSE -- cgit v1.2.1 From 538a119b38cd0453582b8ec566c5fa5501ebf1e1 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 08:26:56 +0100 Subject: Trimming varieties to match comm.gmk. Copied from Perforce Change: 179166 ServerID: perforce.ravenbrook.com --- mps/code/commpost.nmk | 4 +--- mps/code/commpre.nmk | 10 ---------- 2 files changed, 1 insertion(+), 13 deletions(-) (limited to 'mps/code') diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index 3a855d81d88..e579daabd23 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -66,10 +66,8 @@ clean: !IFDEF TARGET !IFNDEF VARIETY target: - $(MAKE) /nologo /f $(PFM).nmk VARIETY=hi variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=he variety $(MAKE) /nologo /f $(PFM).nmk VARIETY=ci variety - $(MAKE) /nologo /f $(PFM).nmk VARIETY=ti variety - $(MAKE) /nologo /f $(PFM).nmk VARIETY=wi variety !ENDIF !ENDIF diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk index a27b704134c..385431e138e 100644 --- a/mps/code/commpre.nmk +++ b/mps/code/commpre.nmk @@ -145,11 +145,8 @@ CFLAGSEXTERNAL = # The combinations of variety # %%VARIETY: Define a macro containing the set of flags for the new variety. CFWE = /DCONFIG_VAR_WE $(CRTFLAGSW) $(CFLAGSHOT) $(CFLAGSEXTERNAL) -CFWI = /DCONFIG_VAR_WI $(CRTFLAGSW) $(CFLAGSHOT) $(CFLAGSINTERNAL) CFHE = /DCONFIG_VAR_HE $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSEXTERNAL) -CFHI = /DCONFIG_VAR_HI $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSINTERNAL) CFDI = /DCONFIG_VAR_DI $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSINTERNAL) -CFCE = /DCONFIG_VAR_CE $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSEXTERNAL) CFCI = /DCONFIG_VAR_CI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) @@ -165,11 +162,8 @@ LINKFLAGSINTERNAL = /DEBUG LINKFLAGSEXTERNAL = /RELEASE LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL) -LFWI = $(LINKFLAGSWHITE) $(LINKFLAGSINTERNAL) LFHE = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) -LFHI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) LFDI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) -LFCE = $(LINKFLAGSCOOL) $(LINKFLAGSEXTERNAL) LFCI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) @@ -181,14 +175,10 @@ LIBMAN = lib # can't call this LIB - it screws the environment LIBFLAGSCOMMON = /nologo LIBFLAGSWE = -LIBFLAGSWI = LIBFLAGSHE = -LIBFLAGSHI = LIBFLAGSDI = -LIBFLAGSCE = LIBFLAGSCI = LIBFLAGSTI = -#LIBFLAGSCV = # Browser database manager [not used at present] #BSC = bscmake -- cgit v1.2.1 From ce014ebd6e02fe110a0402086395a86ee5f51d98 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 09:03:32 +0100 Subject: Removing old variety substitutions. Copied from Perforce Change: 179167 ServerID: perforce.ravenbrook.com --- mps/code/w3i3mv.nmk | 91 ++--------------------------------------------------- mps/code/w3i6mv.nmk | 87 -------------------------------------------------- 2 files changed, 2 insertions(+), 176 deletions(-) (limited to 'mps/code') diff --git a/mps/code/w3i3mv.nmk b/mps/code/w3i3mv.nmk index 93ef97984f9..bf2258a7e4a 100644 --- a/mps/code/w3i3mv.nmk +++ b/mps/code/w3i3mv.nmk @@ -22,7 +22,7 @@ MPM = \ \ \ \ - + SW = \ \ \ @@ -32,7 +32,7 @@ SW = \ \ \ \ - + PLINTH = AMC = AMS = @@ -86,64 +86,6 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\he\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "ce" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFCE) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCE) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCE) -MPMOBJ0 = $(MPM:<=w3i3mv\ce\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i3mv\ce\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\ce\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i3mv\ce\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i3mv\ce\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i3mv\ce\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i3mv\ce\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i3mv\ce\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i3mv\ce\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\ce\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i3mv\ce\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\ce\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - -!ELSEIF "$(VARIETY)" == "hi" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFHI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHI) -MPMOBJ0 = $(MPM:<=w3i3mv\hi\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i3mv\hi\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\hi\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i3mv\hi\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i3mv\hi\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i3mv\hi\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i3mv\hi\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i3mv\hi\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i3mv\hi\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\hi\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i3mv\hi\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\hi\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - !ELSEIF "$(VARIETY)" == "di" CFLAGS=$(CFLAGSCOMMONPRE) $(CFDI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFDI) @@ -231,35 +173,6 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\ti\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "wi" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFWI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWI) -MPMOBJ0 = $(MPM:<=w3i3mv\wi\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i3mv\wi\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\wi\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i3mv\wi\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i3mv\wi\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i3mv\wi\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i3mv\wi\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i3mv\wi\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i3mv\wi\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\wi\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i3mv\wi\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\wi\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - !ELSEIF "$(VARIETY)" == "we" CFLAGS=$(CFLAGSCOMMONPRE) $(CFWE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWE) diff --git a/mps/code/w3i6mv.nmk b/mps/code/w3i6mv.nmk index f703ff2cc2c..255600d11ce 100644 --- a/mps/code/w3i6mv.nmk +++ b/mps/code/w3i6mv.nmk @@ -88,64 +88,6 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\he\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "ce" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFCE) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCE) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCE) -MPMOBJ0 = $(MPM:<=w3i6mv\ce\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ce\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\ce\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i6mv\ce\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i6mv\ce\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i6mv\ce\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i6mv\ce\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i6mv\ce\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i6mv\ce\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ce\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i6mv\ce\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ce\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - -!ELSEIF "$(VARIETY)" == "hi" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFHI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHI) -MPMOBJ0 = $(MPM:<=w3i6mv\hi\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i6mv\hi\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\hi\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i6mv\hi\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i6mv\hi\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i6mv\hi\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i6mv\hi\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i6mv\hi\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i6mv\hi\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\hi\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i6mv\hi\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\hi\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - !ELSEIF "$(VARIETY)" == "di" CFLAGS=$(CFLAGSCOMMONPRE) $(CFDI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFDI) @@ -233,35 +175,6 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ti\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "wi" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFWI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWI) -MPMOBJ0 = $(MPM:<=w3i6mv\wi\) -MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i6mv\wi\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\wi\) -SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i6mv\wi\) -AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i6mv\wi\) -AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i6mv\wi\) -AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i6mv\wi\) -LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i6mv\wi\) -SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i6mv\wi\) -DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\wi\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i6mv\wi\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\wi\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) - !ELSEIF "$(VARIETY)" == "we" CFLAGS=$(CFLAGSCOMMONPRE) $(CFWE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWE) -- cgit v1.2.1 From 24edbc4ab4d4a25208ab38405841b646b51b21f1 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 09:03:55 +0100 Subject: Building a fresh copy of version.c in the link/library step to avoid constant rebuilding. Copied from Perforce Change: 179168 ServerID: perforce.ravenbrook.com --- mps/code/commpost.nmk | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'mps/code') diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index e579daabd23..283869eb6aa 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -83,11 +83,6 @@ variety: $(PFM)\$(VARIETY)\$(TARGET) mpsicv.cov: $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ VARIETY=cv variety -# FORCE -# Used to force a target to be built. -# Depends on there being no file called "FORCE". -FORCE: - # GENUINE TARGETS # @@ -98,15 +93,8 @@ FORCE: # to build it. # %%TARGET: Add your new target here - !IFDEF VARIETY -# .special.version: version.obj has a special rule so that it is always -# built. This rule has no commands, meaning that the commands from -# other rules (the implicit .c -> .obj rule in particular) will be used. -# (Actually, there's a MS bug that causes this to randomly fail to build.) -$(PFM)\$(VARIETY)\version.obj: FORCE - $(PFM)\$(VARIETY)\finalcv.exe: $(PFM)\$(VARIETY)\finalcv.obj \ $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ $(MRGOBJ) $(TESTLIBOBJ) @@ -256,17 +244,20 @@ $(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ $(PFM)\$(VARIETY)\mmsw.lib: $(SWOBJ) $(ECHO) $@ - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o $(PFM)\$(VARIETY)\mmdw.lib: $(MPMOBJ) $(AMCOBJ) $(DWOBJ) \ $(AWLOBJ) $(LOOBJ) $(SNCOBJ) $(ECHO) $@ - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o $(PFM)\$(VARIETY)\mps.lib: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) $(ECHO) $@ - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o # We would like to use $** in the linker command line here, but we # cannot because the target, mpsdy.dll, depends on the w3gen.def file, @@ -324,7 +315,8 @@ $(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj {$(PFM)\$(VARIETY)}.obj{$(PFM)\$(VARIETY)}.exe: $(ECHO) $@ - $(LINKER) $(LINKFLAGS) /PDB:$*.pdb /OUT:$@ $(**) + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LINKER) $(LINKFLAGS) /PDB:$*.pdb /OUT:$@ $(**) $(PFM)\$(VARIETY)\version.o # C. COPYRIGHT AND LICENSE -- cgit v1.2.1 From fa0bfed44e43eab3cead0b0e10082038438b0a01 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 10:39:42 +0100 Subject: Removing product-specific configuration, including dylan- and scriptworks-specific targets and config_prod configurations. we should support any necessary requirements generically. It's now possible to write "cc -c mps.c" and get a sensible result. Copied from Perforce Change: 179169 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 61 +----- mps/code/commpost.nmk | 18 +- mps/code/commpre.nmk | 31 +-- mps/code/config.h | 44 +---- mps/code/global.c | 3 + mps/code/mps.h | 4 - mps/code/mps.xcodeproj/project.pbxproj | 332 +++++++++++++++++++++++++++++++-- mps/code/mpsi.c | 13 -- 8 files changed, 331 insertions(+), 175 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 0cb317c1042..6ee91523612 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -30,7 +30,6 @@ # MPMPF platform-dependent C sources for the "mpm" part # MPMS assembler sources for the "mpm" part (.s files) # MPMPS pre-processor assembler sources for the "mpm" part (.S files) -# SWPF platform-dependent C sources for the "sw" part # # %%PART: Add a new parameter above for the files included in the part. # @@ -89,29 +88,8 @@ endif # C FLAGS -# Some flags depend on the target. Alas. -ifdef TARGET -ifeq ($(TARGET),mmsw.a) -CFLAGSTARGET = -DCONFIG_PROD_EPCORE -else -ifeq ($(TARGET),replaysw) -CFLAGSTARGET = -DCONFIG_PROD_EPCORE -else -ifeq ($(TARGET),mmdw.a) -CFLAGSTARGET = -DCONFIG_PROD_DYLAN -else -ifeq ($(TARGET),replay) -CFLAGSTARGET = -DCONFIG_PROD_DYLAN -else -CFLAGSTARGET = -DCONFIG_PROD_MPS -endif -endif -endif -endif -endif - # These flags are included in all compilations. -CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSTARGET) $(CFLAGSCOMPILER) +CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSCOMPILER) # %%VARIETY: Define a macro containing the set of flags for the new # variety. @@ -175,14 +153,6 @@ MPMCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ poolmrg.c poolmfs.c poolmv.c dbgpool.c dbgpooli.c \ boot.c meter.c splay.c cbs.c diag.c MPM = $(MPMCOMMON) $(MPMPF) -SWCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ - tract.c walk.c reserv.c protocol.c pool.c poolabs.c \ - trace.c traceanc.c root.c seg.c format.c buffer.c ref.c \ - bt.c ring.c shield.c ld.c event.c sac.c message.c \ - poolmrg.c poolmfs.c poolmv.c dbgpool.c dbgpooli \ - poolams.c poolamsi.c poolmvff.c \ - boot.c meter.c splay.c cbs.c mpsioan.c -SW = $(SWCOMMON) $(SWPF) # These map the source file lists onto object files and dependency files @@ -209,21 +179,6 @@ POOLNOBJ = $(POOLN:%.c=$(PFM)/$(VARIETY)/%.o) POOLNDEP = $(POOLN:%.c=$(PFM)/$(VARIETY)/%.d) MVFFOBJ = $(MVFF:%.c=$(PFM)/$(VARIETY)/%.o) MVFFDEP = $(MVFF:%.c=$(PFM)/$(VARIETY)/%.d) -SWOBJ = $(SW:%.c=$(PFM)/$(VARIETY)/%.o) - -# The following hack for SWDEP only creates those dependencies when -# a SW target is being built. -ifdef TARGET -ifeq ($(TARGET),mmsw.a) -SWDEP = $(SW:%.c=$(PFM)/$(VARIETY)/%.d) -else -ifeq ($(TARGET),depend) -SWDEP = $(SW:%.c=$(PFM)/$(VARIETY)/%.d) -else -SWDEP = -endif -endif -endif TESTLIBOBJ = $(TESTLIB:%.c=$(PFM)/$(VARIETY)/%.o) TESTLIBDEP = $(TESTLIB:%.c=$(PFM)/$(VARIETY)/%.d) @@ -241,8 +196,7 @@ endif # == Pseudo-targets == -# %%TARGET: Add the target to the all dependencies, if it uses the -# CONFIG_PROD_MPS configuration, to swall if CONFIG_PROD_EPCORE +# %%TARGET: Add the target to the all dependencies all: mpmss sacss amcss amcsshe amsss amssshe segsmss awlut awluthe \ mpsicv lockcov poolncv locv qs apss \ @@ -252,7 +206,6 @@ all: mpmss sacss amcss amcsshe amsss amssshe segsmss awlut awluthe \ eventcnv \ mps.a mpsplan.a -swall: mmsw.a replaysw # Runs the automatic tests that are built with CONFIG_PROD_MPS. # These tests are run overnight (see design.buildsys.overnight). @@ -281,7 +234,7 @@ mpmss sacss amcss amcssth amcsshe amsss amssshe segsmss awlut awlutth \ exposet0 \ zcoll zmess \ eventcnv replay replaysw \ - mps.a mmsw.a mpsplan.a mmdw.a: phony + mps.a mpsplan.a: phony ifdef VARIETY $(MAKE) -f $(PFM).gmk TARGET=$@ variety else @@ -445,14 +398,8 @@ $(PFM)/$(VARIETY)/replay: $(PFM)/$(VARIETY)/replay.o \ $(PFM)/$(VARIETY)/mps.a: $(MPMOBJ) $(AMCOBJ) $(SNCOBJ) $(MVFFOBJ) -$(PFM)/$(VARIETY)/mmdw.a: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ - $(FMTDYOBJ) $(AWLOBJ) - $(PFM)/$(VARIETY)/mpsplan.a: $(PLINTHOBJ) -$(PFM)/$(VARIETY)/mmsw.a: \ - $(SWOBJ) - endif @@ -498,7 +445,7 @@ $(PFM)/$(VARIETY)/%.d: %.c ifdef VARIETY ifdef TARGET # %%PART: Add the dependency file macro for the new part here. -include $(MPMDEP) $(AMSDEP) $(AMCDEP) $(LODEP) $(SWDEP) \ +include $(MPMDEP) $(AMSDEP) $(AMCDEP) $(LODEP) \ $(AWLDEP) $(POOLNDEP) $(TESTLIBDEP) $(FMTDYDEP) $(FMTHETSTDEP) \ $(PLINTHDEP) $(EVENTPROCDEP) endif diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index 283869eb6aa..fc197e48353 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -11,8 +11,7 @@ # PSEUDO-TARGETS # "all" builds all the varieties of all targets -# %%TARGET: Add the target to the all dependencies, if it uses the -# CONFIG_PROD_MPS configuration, to swall if CONFIG_PROD_EPCORE +# %%TARGET: Add the target to the all dependencies. all: mpmss.exe amcss.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awluthe.exe\ mpsicv.exe lockutw3.exe lockcov.exe poolncv.exe locv.exe qs.exe apss.exe \ @@ -23,8 +22,6 @@ all: mpmss.exe amcss.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awluthe.exe eventcnv.exe \ mps.lib mpsplan.lib -swall: mmsw.lib replaysw.exe - # Convenience targets @@ -40,7 +37,7 @@ mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awlu walkt0.exe locbwcss.exe locusss.exe \ exposet0.exe zcoll.exe zmess.exe \ replay.exe replaysw.exe eventcnv.exe \ - mmdw.lib mmsw.lib mps.lib mpsplan.lib mpsplcb.lib \ + mps.lib mpsplan.lib mpsplcb.lib \ mpsdy.dll: !IFDEF VARIETY $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety @@ -242,17 +239,6 @@ $(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ $(TESTLIBOBJ) -$(PFM)\$(VARIETY)\mmsw.lib: $(SWOBJ) - $(ECHO) $@ - cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o - -$(PFM)\$(VARIETY)\mmdw.lib: $(MPMOBJ) $(AMCOBJ) $(DWOBJ) \ - $(AWLOBJ) $(LOOBJ) $(SNCOBJ) - $(ECHO) $@ - cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o - $(PFM)\$(VARIETY)\mps.lib: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) $(ECHO) $@ diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk index 385431e138e..04ea7ff3d52 100644 --- a/mps/code/commpre.nmk +++ b/mps/code/commpre.nmk @@ -24,7 +24,6 @@ # AMS as above for the "ams" part # LO as above for the "lo" part # MRG as above for the "mrg" part -# SW as above for the "sw" part # TESTLIB as above for the "testlib" part # NOISY if defined, causes command to be emitted # @@ -64,9 +63,6 @@ !IFNDEF AMS !ERROR commpre.nmk: AMS not defined !ENDIF -!IFNDEF SW -!ERROR commpre.nmk: SW not defined -!ENDIF !IFNDEF TESTLIB !ERROR commpre.nmk: TESTLIB not defined !ENDIF @@ -90,30 +86,7 @@ ECHO = echo # /ML means compile for single-threaded environment. # A 'd' at the end means compile for debugging. -!ifdef TARGET -!if "$(TARGET)" == "mmsw.lib" || "$(TARGET)" == "epvmss.exe" || "$(TARGET)" == "replaysw.exe" -CFLAGSTARGETPRE = /DCONFIG_PROD_EPCORE -CFLAGSTARGETPOST = -CRTFLAGSW = /MD -CRTFLAGSH = /MDd -CRTFLAGSC = /MDd -LINKFLAGSWHITE = msvcrt.lib -LINKFLAGSHOT = msvcrtd.lib -LINKFLAGSCOOL = msvcrtd.lib - -!elseif "$(TARGET)" == "mmdw.lib" -# /Oy- is actually 86-specific, but Dylan is only built for that platform -CFLAGSTARGETPRE = /DCONFIG_PROD_DYLAN -CFLAGSTARGETPOST = /Oy- -CRTFLAGSW = /MT -CRTFLAGSH = /MT -CRTFLAGSC = /MT -LINKFLAGSWHITE = libcmt.lib -LINKFLAGSHOT = libcmt.lib -LINKFLAGSCOOL = libcmt.lib - -!else -CFLAGSTARGETPRE = /DCONFIG_PROD_MPS +CFLAGSTARGETPRE = CFLAGSTARGETPOST = CRTFLAGSW = /MT CRTFLAGSH = /MT @@ -121,8 +94,6 @@ CRTFLAGSC = /MTd LINKFLAGSWHITE = libcmt.lib LINKFLAGSHOT = libcmt.lib LINKFLAGSCOOL = libcmtd.lib -!endif -!endif CFLAGSCOMMONPRE = /nologo /W4 /WX $(PFMDEFS) $(CFLAGSTARGETPRE) CFLAGSCOMMONPOST = $(CFLAGSTARGETPOST) diff --git a/mps/code/config.h b/mps/code/config.h index 15c30b6e5e0..faaed43a2d9 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -365,28 +365,9 @@ * * Convert CONFIG_PROD_* defined on compiler command line into * internal configuration parameters. See . + * FIXME: Rework . */ -#if defined(CONFIG_PROD_EPCORE) -#define MPS_PROD_STRING "epcore" -#define MPS_PROD_EPCORE -#define ARENA_INIT_SPARE_COMMIT_LIMIT ((Size)0) -/* .nosync.why: ScriptWorks is single-threaded when using the MM. */ -#define THREAD_SINGLE -#define PROTECTION_NONE -#define DONGLE_NONE -#define PROD_CHECKLEVEL_INITIAL CheckLevelMINIMAL /* CheckLevelSHALLOW is too slow for SW */ - -#elif defined(CONFIG_PROD_DYLAN) -#define MPS_PROD_STRING "dylan" -#define MPS_PROD_DYLAN -#define ARENA_INIT_SPARE_COMMIT_LIMIT ((Size)10uL*1024uL*1024uL) -#define THREAD_MULTI -#define PROTECTION -#define DONGLE_NONE -#define PROD_CHECKLEVEL_INITIAL CheckLevelSHALLOW - -#elif defined(CONFIG_PROD_MPS) #define MPS_PROD_STRING "mps" #define MPS_PROD_MPS #define ARENA_INIT_SPARE_COMMIT_LIMIT ((Size)10uL*1024uL*1024uL) @@ -395,29 +376,6 @@ #define DONGLE_NONE #define PROD_CHECKLEVEL_INITIAL CheckLevelSHALLOW -#else -#error "No target product configured." -#endif - -/* .prod.arena-size: ARENA_SIZE is currently set larger for the - * MM/Dylan product as an interim solution. - * See request.dylan.170170.sol.patch and change.dylan.buffalo.170170. - * Note that this define is only used by the implementation of the - * deprecated mps_space_create interface. - */ -#define ARENA_SIZE ((Size)1<<30) - - -/* Dongle configuration */ - -#if defined(DONGLE) -#define DONGLE_TEST_FREQUENCY ((unsigned int)4000) -#elif defined(DONGLE_NONE) -/* nothing to do */ -#else -#error "No dongle configured." -#endif - /* Pool Class AMC configuration */ diff --git a/mps/code/global.c b/mps/code/global.c index 806da8dfbaa..4d647a3754c 100644 --- a/mps/code/global.c +++ b/mps/code/global.c @@ -462,6 +462,9 @@ Ring GlobalsRememberedSummaryRing(Globals global) /* ArenaEnter -- enter the state where you can look at the arena */ +/* FIXME: Do we want to support the THREAD_SINGLE and PROTECTION_NONE build + configs? If so, how will we test them? RB 2012-09-02 */ + #if defined(THREAD_SINGLE) && defined(PROTECTION_NONE) void (ArenaEnter)(Arena arena) { diff --git a/mps/code/mps.h b/mps/code/mps.h index 427d9ccba94..633dbb5ddac 100644 --- a/mps/code/mps.h +++ b/mps/code/mps.h @@ -274,10 +274,6 @@ extern mps_res_t mps_arena_create(mps_arena_t *, mps_arena_class_t, ...); extern mps_res_t mps_arena_create_v(mps_arena_t *, mps_arena_class_t, va_list); extern void mps_arena_destroy(mps_arena_t); -/* these two for backward compatibility */ -extern mps_res_t mps_space_create(mps_space_t *); -extern void mps_space_destroy(mps_space_t); - extern size_t mps_arena_reserved(mps_arena_t); extern size_t mps_arena_committed(mps_arena_t); extern size_t mps_arena_spare_committed(mps_arena_t); diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj index cbee78a359f..2f8844affe0 100644 --- a/mps/code/mps.xcodeproj/project.pbxproj +++ b/mps/code/mps.xcodeproj/project.pbxproj @@ -2081,7 +2081,7 @@ 31EEABDA156AAE9E00714D05 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0430; + LastUpgradeCheck = 0440; }; buildConfigurationList = 31EEABDD156AAE9E00714D05 /* Build configuration list for PBXProject "mps" */; compatibilityVersion = "Xcode 3.2"; @@ -2818,6 +2818,7 @@ 3104AFF3156D37A0000A585A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -2825,6 +2826,7 @@ 3104AFF4156D37A0000A585A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -3109,6 +3111,285 @@ }; name = Release; }; + 318387EB15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = ansi; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_WE; + GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; + GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; + GCC_TREAT_WARNINGS_AS_ERRORS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; + GCC_WARN_ABOUT_MISSING_NEWLINE = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_PEDANTIC = YES; + GCC_WARN_SHADOW = YES; + GCC_WARN_SIGN_COMPARE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNKNOWN_PRAGMAS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_LABEL = YES; + GCC_WARN_UNUSED_PARAMETER = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CFLAGS = ( + "-pedantic", + "-Wall", + "-Wno-extended-offsetof", + ); + SDKROOT = macosx; + WARNING_CFLAGS = ( + "-pedantic", + "-Wpointer-arith", + "-Wstrict-prototypes", + "-Wmissing-prototypes", + "-Winline", + "-Waggregate-return", + "-Wnested-externs", + "-Wcast-qual", + "-Wshadow", + "-Wall", + "-Wno-extended-offsetof", + ); + }; + name = WE; + }; + 318387EC15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387ED15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387EE15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387EF15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F015DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F115DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F215DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F315DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F415DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F515DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F615DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F715DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F815DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387F915DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FA15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FB15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FC15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FD15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FE15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 318387FF15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880015DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880115DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880215DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880315DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880415DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880515DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880615DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880715DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880815DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880915DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880A15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; + 3183880B15DC30CC008E4EA0 /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; 31D60015156D3CB200337B26 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3202,11 +3483,7 @@ COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - CONFIG_PF_XCI6LL, - CONFIG_PROD_MPS, - CONFIG_VAR_CI, - ); + GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_CI; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = NO; @@ -3257,12 +3534,8 @@ CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; - GCC_PREPROCESSOR_DEFINITIONS = ( - CONFIG_PF_XCI6LL, - CONFIG_PROD_MPS, - CONFIG_VAR_HE, - NDEBUG, - ); + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_HE; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = NO; @@ -3308,6 +3581,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -3317,6 +3591,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; EXECUTABLE_PREFIX = lib; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -3344,6 +3619,7 @@ buildConfigurations = ( 3104AFBA156D357B000A585A /* Debug */, 3104AFBB156D357B000A585A /* Release */, + 318387EF15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3353,6 +3629,7 @@ buildConfigurations = ( 3104AFD0156D35E2000A585A /* Debug */, 3104AFD1156D35E2000A585A /* Release */, + 318387F315DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3362,6 +3639,7 @@ buildConfigurations = ( 3104AFE5156D3682000A585A /* Debug */, 3104AFE6156D3682000A585A /* Release */, + 318387F415DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3371,6 +3649,7 @@ buildConfigurations = ( 3104AFF3156D37A0000A585A /* Debug */, 3104AFF4156D37A0000A585A /* Release */, + 318387EC15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3380,6 +3659,7 @@ buildConfigurations = ( 3104B011156D38F3000A585A /* Debug */, 3104B012156D38F3000A585A /* Release */, + 318387F515DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3389,6 +3669,7 @@ buildConfigurations = ( 3104B02A156D39D4000A585A /* Debug */, 3104B02B156D39D4000A585A /* Release */, + 318387F615DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3398,6 +3679,7 @@ buildConfigurations = ( 3104B045156D3AD8000A585A /* Debug */, 3104B046156D3AD8000A585A /* Release */, + 318387F715DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3407,6 +3689,7 @@ buildConfigurations = ( 3114A597156E913C001E0AA3 /* Debug */, 3114A598156E913C001E0AA3 /* Release */, + 318387FE15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3416,6 +3699,7 @@ buildConfigurations = ( 3114A5AF156E92C0001E0AA3 /* Debug */, 3114A5B0156E92C0001E0AA3 /* Release */, + 318387FF15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3425,6 +3709,7 @@ buildConfigurations = ( 3114A5C5156E9315001E0AA3 /* Debug */, 3114A5C6156E9315001E0AA3 /* Release */, + 3183880015DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3434,6 +3719,7 @@ buildConfigurations = ( 3114A5DE156E93A0001E0AA3 /* Debug */, 3114A5DF156E93A0001E0AA3 /* Release */, + 3183880115DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3443,6 +3729,7 @@ buildConfigurations = ( 3114A5F7156E93E7001E0AA3 /* Debug */, 3114A5F8156E93E7001E0AA3 /* Release */, + 3183880215DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3452,6 +3739,7 @@ buildConfigurations = ( 3114A60D156E9430001E0AA3 /* Debug */, 3114A60E156E9430001E0AA3 /* Release */, + 3183880315DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3461,6 +3749,7 @@ buildConfigurations = ( 3114A624156E9485001E0AA3 /* Debug */, 3114A625156E9485001E0AA3 /* Release */, + 3183880415DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3470,6 +3759,7 @@ buildConfigurations = ( 3114A63B156E94DB001E0AA3 /* Debug */, 3114A63C156E94DB001E0AA3 /* Release */, + 3183880515DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3479,6 +3769,7 @@ buildConfigurations = ( 3114A654156E9596001E0AA3 /* Debug */, 3114A655156E9596001E0AA3 /* Release */, + 3183880615DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3488,6 +3779,7 @@ buildConfigurations = ( 3114A66A156E95D9001E0AA3 /* Debug */, 3114A66B156E95D9001E0AA3 /* Release */, + 3183880715DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3497,6 +3789,7 @@ buildConfigurations = ( 3114A684156E9669001E0AA3 /* Debug */, 3114A685156E9669001E0AA3 /* Release */, + 3183880815DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3506,6 +3799,7 @@ buildConfigurations = ( 3114A69D156E971B001E0AA3 /* Debug */, 3114A69E156E971B001E0AA3 /* Release */, + 3183880915DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3515,6 +3809,7 @@ buildConfigurations = ( 3114A6B4156E9759001E0AA3 /* Debug */, 3114A6B5156E9759001E0AA3 /* Release */, + 3183880A15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3524,6 +3819,7 @@ buildConfigurations = ( 3114A6CE156E9815001E0AA3 /* Debug */, 3114A6CF156E9815001E0AA3 /* Release */, + 3183880B15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3533,6 +3829,7 @@ buildConfigurations = ( 3124CAC0156BE3EC00753214 /* Debug */, 3124CAC1156BE3EC00753214 /* Release */, + 318387F015DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3542,6 +3839,7 @@ buildConfigurations = ( 3124CADC156BE64A00753214 /* Debug */, 3124CADD156BE64A00753214 /* Release */, + 318387F215DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3551,6 +3849,7 @@ buildConfigurations = ( 3124CAF3156BE7F300753214 /* Debug */, 3124CAF4156BE7F300753214 /* Release */, + 318387EE15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3560,6 +3859,7 @@ buildConfigurations = ( 31D60015156D3CB200337B26 /* Debug */, 31D60016156D3CB200337B26 /* Release */, + 318387F815DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3569,6 +3869,7 @@ buildConfigurations = ( 31D6002F156D3D3F00337B26 /* Debug */, 31D60030156D3D3F00337B26 /* Release */, + 318387F915DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3578,6 +3879,7 @@ buildConfigurations = ( 31D60046156D3EC700337B26 /* Debug */, 31D60047156D3EC700337B26 /* Release */, + 318387FA15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3587,6 +3889,7 @@ buildConfigurations = ( 31D6005C156D3F3500337B26 /* Debug */, 31D6005D156D3F3500337B26 /* Release */, + 318387FB15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3596,6 +3899,7 @@ buildConfigurations = ( 31D60079156D3FBC00337B26 /* Debug */, 31D6007A156D3FBC00337B26 /* Release */, + 318387FC15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3605,6 +3909,7 @@ buildConfigurations = ( 31D60094156D402900337B26 /* Debug */, 31D60095156D402900337B26 /* Release */, + 318387FD15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3614,6 +3919,7 @@ buildConfigurations = ( 31EEABDF156AAE9E00714D05 /* Debug */, 31EEABE0156AAE9E00714D05 /* Release */, + 318387EB15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3623,6 +3929,7 @@ buildConfigurations = ( 31EEABFD156AAF9D00714D05 /* Debug */, 31EEABFE156AAF9D00714D05 /* Release */, + 318387ED15DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3632,6 +3939,7 @@ buildConfigurations = ( 31EEAC6D156AB52600714D05 /* Debug */, 31EEAC6E156AB52600714D05 /* Release */, + 318387F115DC30CC008E4EA0 /* WE */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c index 06b2e50cc15..a4ea84f5574 100644 --- a/mps/code/mpsi.c +++ b/mps/code/mpsi.c @@ -459,13 +459,6 @@ mps_res_t mps_arena_create_v(mps_arena_t *mps_arena_o, return MPS_RES_OK; } -/* DEPRECATED */ -mps_res_t mps_space_create(mps_space_t *mps_space_o) -{ - return mps_arena_create(mps_space_o, mps_arena_class_vm(), ARENA_SIZE); -} - - /* mps_arena_destroy -- destroy an arena object */ void mps_arena_destroy(mps_arena_t mps_arena) @@ -476,12 +469,6 @@ void mps_arena_destroy(mps_arena_t mps_arena) ArenaDestroy(arena); } -/* DEPRECATED */ -void mps_space_destroy(mps_space_t mps_space) -{ - mps_arena_destroy(mps_space); -} - /* mps_arena_has_addr -- is this address managed by this arena? */ -- cgit v1.2.1 From ee4106393acc41b1b4c600fa5d0d0d667a03ce36 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 11:04:53 +0100 Subject: Renaming "he" variety to "hot" and "ci" variety to "cool". like the old days. Copied from Perforce Change: 179170 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 22 ++++++------ mps/code/commpost.nmk | 6 ++-- mps/code/commpre.nmk | 30 ++++++++-------- mps/code/config.h | 8 ++--- mps/code/mps.xcodeproj/project.pbxproj | 4 +-- mps/code/w3i3mv.nmk | 62 ++++++++++++++-------------------- mps/code/w3i6mv.nmk | 62 ++++++++++++++-------------------- 7 files changed, 85 insertions(+), 109 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 6ee91523612..98f19aa0958 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -95,25 +95,25 @@ CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSCOMPILER) # variety. # These flags are added to compilations for the indicated variety. -CFWE = -DCONFIG_VAR_WE -DNDEBUG $(CFLAGSOPT) -CFHE = -DCONFIG_VAR_HE -DNDEBUG $(CFLAGSOPT) -CFDI = -DCONFIG_VAR_DI -DNDEBUG $(CFLAGSOPT) -CFCI = -DCONFIG_VAR_CI $(CFLAGSDEBUG) -CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) +CFWE = -DCONFIG_VAR_WE -DNDEBUG $(CFLAGSOPT) +CFHOT = -DCONFIG_VAR_HOT -DNDEBUG $(CFLAGSOPT) +CFDI = -DCONFIG_VAR_DI -DNDEBUG $(CFLAGSOPT) +CFCOOL = -DCONFIG_VAR_COOL $(CFLAGSDEBUG) +CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) # Bind CFLAGS to the appropriate set of flags for the variety. # %%VARIETY: Add a test for the variety and set CFLAGS here. ifeq ($(VARIETY),we) CFLAGS=$(CFLAGSCOMMON) $(CFWE) else -ifeq ($(VARIETY),he) -CFLAGS=$(CFLAGSCOMMON) $(CFHE) +ifeq ($(VARIETY),hot) +CFLAGS=$(CFLAGSCOMMON) $(CFHOT) else ifeq ($(VARIETY),di) CFLAGS=$(CFLAGSCOMMON) $(CFDI) else -ifeq ($(VARIETY),ci) -CFLAGS=$(CFLAGSCOMMON) $(CFCI) +ifeq ($(VARIETY),cool) +CFLAGS=$(CFLAGSCOMMON) $(CFCOOL) else ifeq ($(VARIETY),ti) CFLAGS=$(CFLAGSCOMMON) $(CFTI) @@ -256,8 +256,8 @@ clean: phony ifdef TARGET ifndef VARIETY target: phony - $(MAKE) -f $(PFM).gmk VARIETY=he variety - $(MAKE) -f $(PFM).gmk VARIETY=ci variety + $(MAKE) -f $(PFM).gmk VARIETY=hot variety + $(MAKE) -f $(PFM).gmk VARIETY=cool variety endif endif diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index fc197e48353..d150a37df10 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -47,12 +47,10 @@ mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awlu # "clean" removes the directory containing the build results. # Depends on there being no file called "clean". -# Since we can't know whether we have rmdir, try with deltree as well. clean: $(ECHO) $(PFM): $@ -echo y | rmdir/s $(PFM) - -deltree /Y $(PFM) # target target # %%VARIETY: Optionally, add a recursive make call for the new variety, @@ -63,8 +61,8 @@ clean: !IFDEF TARGET !IFNDEF VARIETY target: - $(MAKE) /nologo /f $(PFM).nmk VARIETY=he variety - $(MAKE) /nologo /f $(PFM).nmk VARIETY=ci variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=hot variety + $(MAKE) /nologo /f $(PFM).nmk VARIETY=cool variety !ENDIF !ENDIF diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk index 04ea7ff3d52..16a10445ccc 100644 --- a/mps/code/commpre.nmk +++ b/mps/code/commpre.nmk @@ -88,10 +88,8 @@ ECHO = echo CFLAGSTARGETPRE = CFLAGSTARGETPOST = -CRTFLAGSW = /MT -CRTFLAGSH = /MT -CRTFLAGSC = /MTd -LINKFLAGSWHITE = libcmt.lib +CRTFLAGSHOT = /MT +CRTFLAGSCOOL = /MTd LINKFLAGSHOT = libcmt.lib LINKFLAGSCOOL = libcmtd.lib @@ -115,11 +113,11 @@ CFLAGSEXTERNAL = # The combinations of variety # %%VARIETY: Define a macro containing the set of flags for the new variety. -CFWE = /DCONFIG_VAR_WE $(CRTFLAGSW) $(CFLAGSHOT) $(CFLAGSEXTERNAL) -CFHE = /DCONFIG_VAR_HE $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSEXTERNAL) -CFDI = /DCONFIG_VAR_DI $(CRTFLAGSH) $(CFLAGSHOT) $(CFLAGSINTERNAL) -CFCI = /DCONFIG_VAR_CI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) -CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL) +CFWE = /DCONFIG_VAR_WE $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSEXTERNAL) +CFHOT = /DCONFIG_VAR_HOT $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSEXTERNAL) +CFDI = /DCONFIG_VAR_DI $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSINTERNAL) +CFCOOL = /DCONFIG_VAR_COOL $(CRTFLAGSCOOL) $(CFLAGSCOOL) $(CFLAGSINTERNAL) +CFTI = /DCONFIG_VAR_TI $(CRTFLAGSCOOL) $(CFLAGSCOOL) $(CFLAGSINTERNAL) # Microsoft documentation is not very clear on the point of using both # optimization and debug information @@ -132,11 +130,11 @@ LINKFLAGSINTERNAL = /DEBUG # ( Internal flags used to be set to /DEBUG:full ) LINKFLAGSEXTERNAL = /RELEASE -LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL) -LFHE = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) -LFDI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) -LFCI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) -LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) +LFWE = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) +LFHOT = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) +LFDI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) +LFCOOL = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) +LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) #LFCV = /PROFILE /DEBUG:full /DEBUGTYPE:cv @@ -146,9 +144,9 @@ LIBMAN = lib # can't call this LIB - it screws the environment LIBFLAGSCOMMON = /nologo LIBFLAGSWE = -LIBFLAGSHE = +LIBFLAGSHOT = LIBFLAGSDI = -LIBFLAGSCI = +LIBFLAGSCOOL = LIBFLAGSTI = # Browser database manager [not used at present] diff --git a/mps/code/config.h b/mps/code/config.h index faaed43a2d9..41c092fc070 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -39,14 +39,14 @@ /* no telemetry log events */ -/* CONFIG_VAR_HE -- the hot variety +/* CONFIG_VAR_HOT -- the hot variety * * This variety is the default variety for distribution in products that use * the MPS. It has maximum performance while retaining a good level of * consistency checking and allowing some debugging and telemetry features. */ -#elif defined(CONFIG_VAR_HE) /* Hot variety */ +#elif defined(CONFIG_VAR_HOT) /* Hot variety */ #define CONFIG_ASSERT #ifndef CHECKLEVEL #define CHECKLEVEL CheckLevelMINIMAL @@ -77,7 +77,7 @@ /* no telemetry log events */ -/* CONFIG_VAR_CI -- cool variety +/* CONFIG_VAR_COOL -- cool variety * * The cool variety is intended for use when developing an integration with * the MPS or debugging memory problems or collecting detailed telemetry @@ -85,7 +85,7 @@ * and data collection and output, and full debugging information. */ -#elif defined(CONFIG_VAR_CI) /* Cool variety */ +#elif defined(CONFIG_VAR_COOL) /* Cool variety */ #define CONFIG_ASSERT #define CONFIG_ASSERT_ALL #define CONFIG_STATS diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj index 2f8844affe0..24287ac9b98 100644 --- a/mps/code/mps.xcodeproj/project.pbxproj +++ b/mps/code/mps.xcodeproj/project.pbxproj @@ -3483,7 +3483,7 @@ COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_CI; + GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_COOL; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = NO; @@ -3535,7 +3535,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 3; - GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_HE; + GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_HOT; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = NO; diff --git a/mps/code/w3i3mv.nmk b/mps/code/w3i3mv.nmk index bf2258a7e4a..3c4969309f6 100644 --- a/mps/code/w3i3mv.nmk +++ b/mps/code/w3i3mv.nmk @@ -23,16 +23,6 @@ MPM = \ \ \ -SW = \ - \ - \ - \ - \ - \ - \ - \ - \ - PLINTH = AMC = AMS = @@ -57,33 +47,33 @@ TESTLIB = # macro which expands to the flags that the variety should use when building # libraries -!IF "$(VARIETY)" == "he" +!IF "$(VARIETY)" == "hot" CFLAGS=$(CFLAGSCOMMONPRE) $(CFHE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHE) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHE) -MPMOBJ0 = $(MPM:<=w3i3mv\he\) +MPMOBJ0 = $(MPM:<=w3i3mv\hot\) MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i3mv\he\) +PLINTHOBJ0 = $(PLINTH:<=w3i3mv\hot\) PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\he\) +SWOBJ0 = $(SW:<=w3i3mv\hot\) SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i3mv\he\) +AMSOBJ0 = $(AMS:<=w3i3mv\hot\) AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i3mv\he\) +AMCOBJ0 = $(AMC:<=w3i3mv\hot\) AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i3mv\he\) +AWLOBJ0 = $(AWL:<=w3i3mv\hot\) AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i3mv\he\) +LOOBJ0 = $(LO:<=w3i3mv\hot\) LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i3mv\he\) +SNCOBJ0 = $(SNC:<=w3i3mv\hot\) SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i3mv\he\) +DWOBJ0 = $(DW:<=w3i3mv\hot\) DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\he\) +FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\hot\) FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i3mv\he\) +POOLNOBJ0 = $(POOLN:<=w3i3mv\hot\) POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\he\) +TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\hot\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "di" @@ -115,33 +105,33 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\di\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "ci" +!ELSEIF "$(VARIETY)" == "cool" CFLAGS=$(CFLAGSCOMMONPRE) $(CFCI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCI) -MPMOBJ0 = $(MPM:<=w3i3mv\ci\) +MPMOBJ0 = $(MPM:<=w3i3mv\cool\) MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i3mv\ci\) +PLINTHOBJ0 = $(PLINTH:<=w3i3mv\cool\) PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\ci\) +SWOBJ0 = $(SW:<=w3i3mv\cool\) SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i3mv\ci\) +AMSOBJ0 = $(AMS:<=w3i3mv\cool\) AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i3mv\ci\) +AMCOBJ0 = $(AMC:<=w3i3mv\cool\) AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i3mv\ci\) +AWLOBJ0 = $(AWL:<=w3i3mv\cool\) AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i3mv\ci\) +LOOBJ0 = $(LO:<=w3i3mv\cool\) LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i3mv\ci\) +SNCOBJ0 = $(SNC:<=w3i3mv\cool\) SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i3mv\ci\) +DWOBJ0 = $(DW:<=w3i3mv\cool\) DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\ci\) +FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\cool\) FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i3mv\ci\) +POOLNOBJ0 = $(POOLN:<=w3i3mv\cool\) POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\ci\) +TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\cool\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "ti" diff --git a/mps/code/w3i6mv.nmk b/mps/code/w3i6mv.nmk index 255600d11ce..bf5b6efa68d 100644 --- a/mps/code/w3i6mv.nmk +++ b/mps/code/w3i6mv.nmk @@ -25,16 +25,6 @@ MPM = \ \ \ -SW = \ - \ - \ - \ - \ - \ - \ - \ - \ - PLINTH = AMC = AMS = @@ -59,33 +49,33 @@ TESTLIB = # macro which expands to the flags that the variety should use when building # libraries -!IF "$(VARIETY)" == "he" +!IF "$(VARIETY)" == "hot" CFLAGS=$(CFLAGSCOMMONPRE) $(CFHE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHE) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHE) -MPMOBJ0 = $(MPM:<=w3i6mv\he\) +MPMOBJ0 = $(MPM:<=w3i6mv\hot\) MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i6mv\he\) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\hot\) PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\he\) +SWOBJ0 = $(SW:<=w3i6mv\hot\) SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i6mv\he\) +AMSOBJ0 = $(AMS:<=w3i6mv\hot\) AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i6mv\he\) +AMCOBJ0 = $(AMC:<=w3i6mv\hot\) AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i6mv\he\) +AWLOBJ0 = $(AWL:<=w3i6mv\hot\) AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i6mv\he\) +LOOBJ0 = $(LO:<=w3i6mv\hot\) LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i6mv\he\) +SNCOBJ0 = $(SNC:<=w3i6mv\hot\) SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i6mv\he\) +DWOBJ0 = $(DW:<=w3i6mv\hot\) DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\he\) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\hot\) FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i6mv\he\) +POOLNOBJ0 = $(POOLN:<=w3i6mv\hot\) POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\he\) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\hot\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "di" @@ -117,33 +107,33 @@ POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\di\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) -!ELSEIF "$(VARIETY)" == "ci" +!ELSEIF "$(VARIETY)" == "cool" CFLAGS=$(CFLAGSCOMMONPRE) $(CFCI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCI) -MPMOBJ0 = $(MPM:<=w3i6mv\ci\) +MPMOBJ0 = $(MPM:<=w3i6mv\cool\) MPMOBJ = $(MPMOBJ0:>=.obj) -PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ci\) +PLINTHOBJ0 = $(PLINTH:<=w3i6mv\cool\) PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\ci\) +SWOBJ0 = $(SW:<=w3i6mv\cool\) SWOBJ = $(SWOBJ0:>=.obj) -AMSOBJ0 = $(AMS:<=w3i6mv\ci\) +AMSOBJ0 = $(AMS:<=w3i6mv\cool\) AMSOBJ = $(AMSOBJ0:>=.obj) -AMCOBJ0 = $(AMC:<=w3i6mv\ci\) +AMCOBJ0 = $(AMC:<=w3i6mv\cool\) AMCOBJ = $(AMCOBJ0:>=.obj) -AWLOBJ0 = $(AWL:<=w3i6mv\ci\) +AWLOBJ0 = $(AWL:<=w3i6mv\cool\) AWLOBJ = $(AWLOBJ0:>=.obj) -LOOBJ0 = $(LO:<=w3i6mv\ci\) +LOOBJ0 = $(LO:<=w3i6mv\cool\) LOOBJ = $(LOOBJ0:>=.obj) -SNCOBJ0 = $(SNC:<=w3i6mv\ci\) +SNCOBJ0 = $(SNC:<=w3i6mv\cool\) SNCOBJ = $(SNCOBJ0:>=.obj) -DWOBJ0 = $(DW:<=w3i6mv\ci\) +DWOBJ0 = $(DW:<=w3i6mv\cool\) DWOBJ = $(DWOBJ0:>=.obj) -FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ci\) +FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\cool\) FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) -POOLNOBJ0 = $(POOLN:<=w3i6mv\ci\) +POOLNOBJ0 = $(POOLN:<=w3i6mv\cool\) POOLNOBJ = $(POOLNOBJ0:>=.obj) -TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ci\) +TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\cool\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "ti" -- cgit v1.2.1 From fa7749327be324fb3398aa37bd2eb786e4fef659 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 11:37:27 +0100 Subject: Fixing flags for hot and cool varieties. Copied from Perforce Change: 179171 ServerID: perforce.ravenbrook.com --- mps/code/w3i3mv.nmk | 12 ++++++------ mps/code/w3i6mv.nmk | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'mps/code') diff --git a/mps/code/w3i3mv.nmk b/mps/code/w3i3mv.nmk index 3c4969309f6..604a16cb2bc 100644 --- a/mps/code/w3i3mv.nmk +++ b/mps/code/w3i3mv.nmk @@ -48,9 +48,9 @@ TESTLIB = # libraries !IF "$(VARIETY)" == "hot" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFHE) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHE) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHE) +CFLAGS=$(CFLAGSCOMMONPRE) $(CFHOT) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHOT) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHOT) MPMOBJ0 = $(MPM:<=w3i3mv\hot\) MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\hot\) @@ -106,9 +106,9 @@ TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\di\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "cool" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFCI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCI) +CFLAGS=$(CFLAGSCOMMONPRE) $(CFCOOL) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCOOL) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCOOL) MPMOBJ0 = $(MPM:<=w3i3mv\cool\) MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\cool\) diff --git a/mps/code/w3i6mv.nmk b/mps/code/w3i6mv.nmk index bf5b6efa68d..4bb3325f691 100644 --- a/mps/code/w3i6mv.nmk +++ b/mps/code/w3i6mv.nmk @@ -50,9 +50,9 @@ TESTLIB = # libraries !IF "$(VARIETY)" == "hot" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFHE) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHE) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHE) +CFLAGS=$(CFLAGSCOMMONPRE) $(CFHOT) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHOT) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHOT) MPMOBJ0 = $(MPM:<=w3i6mv\hot\) MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\hot\) @@ -108,9 +108,9 @@ TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\di\) TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "cool" -CFLAGS=$(CFLAGSCOMMONPRE) $(CFCI) $(CFLAGSCOMMONPOST) -LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCI) -LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCI) +CFLAGS=$(CFLAGSCOMMONPRE) $(CFCOOL) $(CFLAGSCOMMONPOST) +LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCOOL) +LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCOOL) MPMOBJ0 = $(MPM:<=w3i6mv\cool\) MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\cool\) -- cgit v1.2.1 From 894ce316996bce7d9abc29efb28890aa116d8909 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 12:27:20 +0100 Subject: Merging the plinth and default pools into the mps library, as on other platforms, and building the tests using the library rather than object files. Copied from Perforce Change: 179172 ServerID: perforce.ravenbrook.com --- mps/code/commpost.nmk | 124 +++++++++++++++++++------------------------------- mps/code/w3i3mv.nmk | 88 ++++++++--------------------------- mps/code/w3i6mv.nmk | 88 ++++++++--------------------------- 3 files changed, 87 insertions(+), 213 deletions(-) (limited to 'mps/code') diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index d150a37df10..05ed6a0ba84 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -20,7 +20,7 @@ all: mpmss.exe amcss.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awluthe.exe abqtest.exe cbstest.exe btcv.exe mv2test.exe messtest.exe steptest.exe \ locbwcss.exe locusss.exe zcoll.exe zmess.exe \ eventcnv.exe \ - mps.lib mpsplan.lib + mps.lib # Convenience targets @@ -37,7 +37,7 @@ mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awlu walkt0.exe locbwcss.exe locusss.exe \ exposet0.exe zcoll.exe zmess.exe \ replay.exe replaysw.exe eventcnv.exe \ - mps.lib mpsplan.lib mpsplcb.lib \ + mps.lib mpsplcb.lib \ mpsdy.dll: !IFDEF VARIETY $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety @@ -91,115 +91,101 @@ mpsicv.cov: !IFDEF VARIETY $(PFM)\$(VARIETY)\finalcv.exe: $(PFM)\$(VARIETY)\finalcv.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ - $(MRGOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\finaltest.exe: $(PFM)\$(VARIETY)\finaltest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ - $(MRGOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\expt825.exe: $(PFM)\$(VARIETY)\expt825.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ - $(MRGOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\locv.exe: $(PFM)\$(VARIETY)\locv.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\mpmss.exe: $(PFM)\$(VARIETY)\mpmss.obj \ - $(PFM)\$(VARIETY)\poolmvff.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\apss.exe: $(PFM)\$(VARIETY)\apss.obj \ - $(PFM)\$(VARIETY)\poolmvff.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\sacss.exe: $(PFM)\$(VARIETY)\sacss.obj \ - $(PFM)\$(VARIETY)\poolmvff.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\bttest.exe: $(PFM)\$(VARIETY)\bttest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\teletest.exe: $(PFM)\$(VARIETY)\teletest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\lockcov.exe: $(PFM)\$(VARIETY)\lockcov.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\lockutw3.exe: $(PFM)\$(VARIETY)\lockutw3.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\mpsicv.exe: $(PFM)\$(VARIETY)\mpsicv.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\amcss.exe: $(PFM)\$(VARIETY)\amcss.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\amcsshe.exe: $(PFM)\$(VARIETY)\amcsshe.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\amsss.exe: $(PFM)\$(VARIETY)\amsss.obj \ - $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\amssshe.exe: $(PFM)\$(VARIETY)\amssshe.obj \ - $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\segsmss.exe: $(PFM)\$(VARIETY)\segsmss.obj \ - $(MPMOBJ) $(AMSOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\locbwcss.exe: $(PFM)\$(VARIETY)\locbwcss.obj \ - $(PFM)\$(VARIETY)\poolmvff.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\locusss.exe: $(PFM)\$(VARIETY)\locusss.obj \ - $(PFM)\$(VARIETY)\poolmvff.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) -$(PFM)\$(VARIETY)\dwstress.exe: $(PFM)\$(VARIETY)\dwstress.obj \ - $(DWOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) +$(PFM)\$(VARIETY)\dwstress.exe: $(PFM)\$(VARIETY)\dwstress.obj \ + $(DWOBJ) $(PFM)\$(VARIETY)\mps.lib -$(PFM)\$(VARIETY)\awlut.exe: $(PFM)\$(VARIETY)\awlut.obj \ +$(PFM)\$(VARIETY)\awlut.exe: $(PFM)\$(VARIETY)\awlut.obj \ $(FMTTESTOBJ) \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) $(AWLOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\awluthe.exe: $(PFM)\$(VARIETY)\awluthe.obj \ $(FMTTESTOBJ) \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(LOOBJ) $(AWLOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\poolncv.exe: $(PFM)\$(VARIETY)\poolncv.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(POOLNOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\qs.exe: $(PFM)\$(VARIETY)\qs.obj \ - $(AMCOBJ) $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\arenacv.exe: $(PFM)\$(VARIETY)\arenacv.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\abqtest.exe: $(PFM)\$(VARIETY)\abqtest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\cbstest.exe: $(PFM)\$(VARIETY)\cbstest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\btcv.exe: $(PFM)\$(VARIETY)\btcv.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\mv2test.exe: $(PFM)\$(VARIETY)\mv2test.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\zcoll.exe: $(PFM)\$(VARIETY)\zcoll.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ - $(MRGOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) \ + $(TESTLIBOBJ) $(PFM)\$(VARIETY)\zmess.exe: $(PFM)\$(VARIETY)\zmess.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(FMTTESTOBJ) \ - $(MRGOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) \ + $(TESTLIBOBJ) $(PFM)\$(VARIETY)\eventcnv.exe: $(PFM)\$(VARIETY)\eventcnv.obj \ $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj @@ -207,8 +193,7 @@ $(PFM)\$(VARIETY)\eventcnv.exe: $(PFM)\$(VARIETY)\eventcnv.obj \ $(PFM)\$(VARIETY)\replay.exe: $(PFM)\$(VARIETY)\replay.obj \ $(PFM)\$(VARIETY)\eventrep.obj \ $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj \ - $(MPMOBJ) $(AWLOBJ) $(AMSOBJ) $(POOLNOBJ) $(AMCOBJ) $(SNCOBJ) \ - $(PFM)\$(VARIETY)\poolmvff.obj $(PFM)\$(VARIETY)\mpsliban.obj + $(PFM)\$(VARIETY)\mps.lib # Have to rename the object file, because the names must match, or # the template rule for .exe.obj won't be used. @@ -216,29 +201,21 @@ $(PFM)\$(VARIETY)\replaysw.obj: $(PFM)\$(VARIETY)\replay.obj $(ECHO) $@ copy $** $@ >nul: -$(PFM)\$(VARIETY)\replaysw.exe: $(PFM)\$(VARIETY)\replaysw.obj \ - $(PFM)\$(VARIETY)\eventrep.obj \ - $(PFM)\$(VARIETY)\eventpro.obj $(PFM)\$(VARIETY)\table.obj \ - $(PFM)\$(VARIETY)\fmtpstst.obj $(TESTLIBOBJ) \ - $(PFM)\$(VARIETY)\mpsliban.obj $(SWOBJ) - $(PFM)\$(VARIETY)\messtest.exe: $(PFM)\$(VARIETY)\messtest.obj \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\steptest.exe: $(PFM)\$(VARIETY)\steptest.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\walkt0.exe: $(PFM)\$(VARIETY)\walkt0.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) $(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ - $(MPMOBJ) $(AMCOBJ) $(PLINTHOBJ) $(FMTTESTOBJ) \ - $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) -$(PFM)\$(VARIETY)\mps.lib: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ - $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) +$(PFM)\$(VARIETY)\mps.lib: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) $(ECHO) $@ cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o @@ -248,20 +225,16 @@ $(PFM)\$(VARIETY)\mps.lib: $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ # but this is not to be treated as an object on the linker line. Sorry # about the repetition of the object list. $(PFM)\$(VARIETY)\mpsdy.dll: $(PFM)\$(VARIETY)\mpslibcb.obj \ - $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \ $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) w3gen.def \ mpslibcb.def $(ECHO) $@ $(LINKER) $(LINKFLAGS) /def:w3gen.def \ /def:mpslibcb.def /dll /OUT:$@ \ $(PFM)\$(VARIETY)\mpslibcb.obj \ - $(MPMOBJ) $(AMCOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \ $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) -$(PFM)\$(VARIETY)\mpsplan.lib: $(PLINTHOBJ) - $(ECHO) $@ - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** - $(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj $(ECHO) $@ $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** @@ -299,8 +272,7 @@ $(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj {$(PFM)\$(VARIETY)}.obj{$(PFM)\$(VARIETY)}.exe: $(ECHO) $@ - cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c - $(LINKER) $(LINKFLAGS) /PDB:$*.pdb /OUT:$@ $(**) $(PFM)\$(VARIETY)\version.o + $(LINKER) $(LINKFLAGS) /PDB:$*.pdb /OUT:$@ $(**) # C. COPYRIGHT AND LICENSE diff --git a/mps/code/w3i3mv.nmk b/mps/code/w3i3mv.nmk index 604a16cb2bc..18f307dfbd9 100644 --- a/mps/code/w3i3mv.nmk +++ b/mps/code/w3i3mv.nmk @@ -5,9 +5,6 @@ PFM = w3i3mv -RAINBOWPATH = MSVISUAL\WIN32\I386 -DONGLELIB = $(RAINBOWPATH)\spromeps.lib - # /Gs appears to be necessary to suppress stack checks. Stack checks # (if not suppressed) generate a dependency on the C library, __chkesp, # which causes the linker step to fail when building the DLL, mpsdy.dll. @@ -29,6 +26,8 @@ AMS = AWL = LO = SNC = +MVFF = +N = DW = FMTTEST = POOLN = @@ -52,145 +51,85 @@ CFLAGS=$(CFLAGSCOMMONPRE) $(CFHOT) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHOT) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHOT) MPMOBJ0 = $(MPM:<=w3i3mv\hot\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\hot\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\hot\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i3mv\hot\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i3mv\hot\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i3mv\hot\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i3mv\hot\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i3mv\hot\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i3mv\hot\) DWOBJ0 = $(DW:<=w3i3mv\hot\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\hot\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i3mv\hot\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\hot\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "di" CFLAGS=$(CFLAGSCOMMONPRE) $(CFDI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFDI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSDI) MPMOBJ0 = $(MPM:<=w3i3mv\di\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\di\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\di\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i3mv\di\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i3mv\di\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i3mv\di\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i3mv\di\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i3mv\di\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i3mv\di\) DWOBJ0 = $(DW:<=w3i3mv\di\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\di\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i3mv\di\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\di\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "cool" CFLAGS=$(CFLAGSCOMMONPRE) $(CFCOOL) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCOOL) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCOOL) MPMOBJ0 = $(MPM:<=w3i3mv\cool\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\cool\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\cool\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i3mv\cool\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i3mv\cool\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i3mv\cool\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i3mv\cool\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i3mv\cool\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i3mv\cool\) DWOBJ0 = $(DW:<=w3i3mv\cool\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\cool\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i3mv\cool\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\cool\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "ti" CFLAGS=$(CFLAGSCOMMONPRE) $(CFTI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFTI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSTI) MPMOBJ0 = $(MPM:<=w3i3mv\ti\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\ti\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\ti\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i3mv\ti\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i3mv\ti\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i3mv\ti\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i3mv\ti\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i3mv\ti\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i3mv\ti\) DWOBJ0 = $(DW:<=w3i3mv\ti\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\ti\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i3mv\ti\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\ti\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "we" CFLAGS=$(CFLAGSCOMMONPRE) $(CFWE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWE) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWE) MPMOBJ0 = $(MPM:<=w3i3mv\we\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i3mv\we\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i3mv\we\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i3mv\we\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i3mv\we\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i3mv\we\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i3mv\we\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i3mv\we\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i3mv\we\) DWOBJ0 = $(DW:<=w3i3mv\we\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i3mv\we\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i3mv\we\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i3mv\we\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) #!ELSEIF "$(VARIETY)" == "cv" #CFLAGS=$(CFLAGSCOMMON) $(CFCV) @@ -219,6 +158,19 @@ TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ENDIF +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ = $(MVFFOBJ0:>=.obj) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + !INCLUDE commpost.nmk diff --git a/mps/code/w3i6mv.nmk b/mps/code/w3i6mv.nmk index 4bb3325f691..544427281d5 100644 --- a/mps/code/w3i6mv.nmk +++ b/mps/code/w3i6mv.nmk @@ -5,10 +5,6 @@ PFM = w3i6mv -# @@@@ Can we remove this? RB 2012-03-26 -RAINBOWPATH = MSVISUAL\WIN32\I386 -DONGLELIB = $(RAINBOWPATH)\spromeps.lib - # /Gs appears to be necessary to suppress stack checks. Stack checks # (if not suppressed) generate a dependency on the C library, __chkesp, # which causes the linker step to fail when building the DLL, mpsdy.dll. @@ -31,6 +27,7 @@ AMS = AWL = LO = SNC = +MVFF = DW = FMTTEST = POOLN = @@ -54,145 +51,85 @@ CFLAGS=$(CFLAGSCOMMONPRE) $(CFHOT) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFHOT) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSHOT) MPMOBJ0 = $(MPM:<=w3i6mv\hot\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\hot\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\hot\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i6mv\hot\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i6mv\hot\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i6mv\hot\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i6mv\hot\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i6mv\hot\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i6mv\hot\) DWOBJ0 = $(DW:<=w3i6mv\hot\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\hot\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i6mv\hot\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\hot\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "di" CFLAGS=$(CFLAGSCOMMONPRE) $(CFDI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFDI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSDI) MPMOBJ0 = $(MPM:<=w3i6mv\di\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\di\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\di\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i6mv\di\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i6mv\di\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i6mv\di\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i6mv\di\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i6mv\di\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i6mv\di\) DWOBJ0 = $(DW:<=w3i6mv\di\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\di\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i6mv\di\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\di\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "cool" CFLAGS=$(CFLAGSCOMMONPRE) $(CFCOOL) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFCOOL) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSCOOL) MPMOBJ0 = $(MPM:<=w3i6mv\cool\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\cool\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\cool\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i6mv\cool\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i6mv\cool\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i6mv\cool\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i6mv\cool\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i6mv\cool\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i6mv\cool\) DWOBJ0 = $(DW:<=w3i6mv\cool\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\cool\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i6mv\cool\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\cool\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "ti" CFLAGS=$(CFLAGSCOMMONPRE) $(CFTI) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFTI) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSTI) MPMOBJ0 = $(MPM:<=w3i6mv\ti\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\ti\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\ti\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i6mv\ti\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i6mv\ti\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i6mv\ti\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i6mv\ti\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i6mv\ti\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i6mv\ti\) DWOBJ0 = $(DW:<=w3i6mv\ti\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\ti\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i6mv\ti\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\ti\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ELSEIF "$(VARIETY)" == "we" CFLAGS=$(CFLAGSCOMMONPRE) $(CFWE) $(CFLAGSCOMMONPOST) LINKFLAGS=$(LINKFLAGSCOMMON) $(LFWE) LIBFLAGS=$(LIBFLAGSCOMMON) $(LIBFLAGSWE) MPMOBJ0 = $(MPM:<=w3i6mv\we\) -MPMOBJ = $(MPMOBJ0:>=.obj) PLINTHOBJ0 = $(PLINTH:<=w3i6mv\we\) -PLINTHOBJ = $(PLINTHOBJ0:>=.obj) -SWOBJ0 = $(SW:<=w3i6mv\we\) -SWOBJ = $(SWOBJ0:>=.obj) AMSOBJ0 = $(AMS:<=w3i6mv\we\) -AMSOBJ = $(AMSOBJ0:>=.obj) AMCOBJ0 = $(AMC:<=w3i6mv\we\) -AMCOBJ = $(AMCOBJ0:>=.obj) AWLOBJ0 = $(AWL:<=w3i6mv\we\) -AWLOBJ = $(AWLOBJ0:>=.obj) LOOBJ0 = $(LO:<=w3i6mv\we\) -LOOBJ = $(LOOBJ0:>=.obj) SNCOBJ0 = $(SNC:<=w3i6mv\we\) -SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ0 = $(MVFF:<=w3i6mv\we\) DWOBJ0 = $(DW:<=w3i6mv\we\) -DWOBJ = $(DWOBJ0:>=.obj) FMTTESTOBJ0 = $(FMTTEST:<=w3i6mv\we\) -FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) POOLNOBJ0 = $(POOLN:<=w3i6mv\we\) -POOLNOBJ = $(POOLNOBJ0:>=.obj) TESTLIBOBJ0 = $(TESTLIB:<=w3i6mv\we\) -TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) #!ELSEIF "$(VARIETY)" == "cv" #CFLAGS=$(CFLAGSCOMMON) $(CFCV) @@ -221,6 +158,19 @@ TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) !ENDIF +MPMOBJ = $(MPMOBJ0:>=.obj) +PLINTHOBJ = $(PLINTHOBJ0:>=.obj) +AMSOBJ = $(AMSOBJ0:>=.obj) +AMCOBJ = $(AMCOBJ0:>=.obj) +AWLOBJ = $(AWLOBJ0:>=.obj) +LOOBJ = $(LOOBJ0:>=.obj) +SNCOBJ = $(SNCOBJ0:>=.obj) +MVFFOBJ = $(MVFFOBJ0:>=.obj) +DWOBJ = $(DWOBJ0:>=.obj) +FMTTESTOBJ = $(FMTTESTOBJ0:>=.obj) +POOLNOBJ = $(POOLNOBJ0:>=.obj) +TESTLIBOBJ = $(TESTLIBOBJ0:>=.obj) + !INCLUDE commpost.nmk -- cgit v1.2.1 From 74c3b4b877ed085092f7dfc25067b397b60c2143 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 15:49:50 +0100 Subject: Deleting unused callback mechanism for installing plinth routines with windows' broken dynamic linker. Copied from Perforce Change: 179174 ServerID: perforce.ravenbrook.com --- mps/code/mpslibcb.c | 343 -------------------------------------------------- mps/code/mpslibcb.def | 10 -- mps/code/mpslibcb.h | 58 --------- 3 files changed, 411 deletions(-) delete mode 100644 mps/code/mpslibcb.c delete mode 100644 mps/code/mpslibcb.def delete mode 100644 mps/code/mpslibcb.h (limited to 'mps/code') diff --git a/mps/code/mpslibcb.c b/mps/code/mpslibcb.c deleted file mode 100644 index 41bf5bcb6c7..00000000000 --- a/mps/code/mpslibcb.c +++ /dev/null @@ -1,343 +0,0 @@ -/* mpslibcb.c: RAVENBROOK MEMORY POOL SYSTEM LIBRARY INTERFACE (CALLBACK) - * - * $Header$ - * Copyright (c) 2005 Ravenbrook Limited. See end of file for license. - * - * .purpose: The purpose of this code is - * 1. permit the MPS Library Interface to be used conveniently when - * the MPS is packaged as a dynamic library (and in particular a - * Windows DLL). - * - * .readership: For MPS client application developers and MPS developers. - * .sources: - * - * .freestanding: This is designed to be deployed in a freestanding - * environment, so we can't use strcmp from , so we have to - * roll our own (in fact we only ever need equality so we define a - * simpler interface). - * - * .mpm.not: This module occupies a halfway house between the MPM and - * the client. Let's make it clearer: this module should not use any - * services of the MPM. That is, it should be written as if the client - * could have, in principle, written it. .mpm.not.why: Perhaps the most - * compelling reason is that if config.h is included (via mpm.h) then - * the compile breaks on platform.w3i3mv because of "#define - * mps_lib_memset memset" in config.h. - */ - -#include "mpslibcb.h" -#include "mpslib.h" -#include "mps.h" - -/* Forward declarations. */ - -int mps_lib_callback_default_get_EOF(void); -mps_lib_FILE *mps_lib_callback_default_get_stderr(void); -mps_lib_FILE *mps_lib_callback_default_get_stdout(void); -int mps_lib_callback_default_fputc(int c_, mps_lib_FILE *f_); -int mps_lib_callback_default_fputs(const char *s_, mps_lib_FILE *f_); -void *mps_lib_callback_default_memset(void *p_, int c_, size_t n_); -void *mps_lib_callback_default_memcpy(void *p_, const void *q_, size_t n_); -int mps_lib_callback_default_memcmp(const void *p_, const void *q_, size_t n_); -mps_clock_t mps_lib_callback_default_clock(void); -mps_clock_t mps_lib_callback_default_clocks_per_sec(void); -unsigned long mps_lib_callback_default_telemetry_control(void); -int mps_lib_callback_streq(const char *, const char *); - -/* Macros */ - -/* See .freestanding */ -#define EQ(p, q) (mps_lib_callback_streq((p), (q))) -/* We use this to call mps_lib_asssert_fail (which we only ever do - * unconditionally). See .mpm.not on why we cannot use ASSERT from - * mpm.h */ -#define AFAIL mps_lib_assert_fail -/* Replaced UNUSED from mpm.h, see .mpm.not */ -#define UNUSED(x) ((void)(x)) - -/* Structures and Types */ - -struct mps_lib_callback_s -{ - int (*lib_get_EOF)(void); - mps_lib_FILE * (*lib_get_stderr)(void); - mps_lib_FILE * (*lib_get_stdout)(void); - int (*lib_fputc)(int, mps_lib_FILE *); - int (*lib_fputs)(const char *, mps_lib_FILE *); - void (*lib_assert_fail)(const char *); - void * (*lib_memset)(void *, int, size_t); - void * (*lib_memcpy)(void *, const void *, size_t); - int (*lib_memcmp)(const void *, const void *, size_t); - mps_clock_t (*clock)(void); - mps_clock_t (*clocks_per_sec)(void); - unsigned long (*lib_telemetry_control)(void); -}; - -/* Globals */ - -/* .global.why: A global is necessary so that we can store the function - * pointers that the client gives us. The functions in the mpslib.h - * interface _are_ global. There is no scope for having one memset - * function for one Arena and a different memset function for another. - * */ - -/* The default functions are stubs that assert. Except for the - * assert_fail function (which is called when assertions fail) which - * will be NULL. This means: if you provide assert_fail and forget - * something else, you'll know about it. If you do not provide - * assert_fail then it will probably stop anyway. - * - * These functions really do need to fail, so they subvert the checking - * mechanism (which is in mpm.h and not available to us, see .mpm.not) - */ - -struct mps_lib_callback_s mps_lib_callback_global = { - mps_lib_callback_default_get_EOF, - mps_lib_callback_default_get_stderr, - mps_lib_callback_default_get_stdout, - mps_lib_callback_default_fputc, - mps_lib_callback_default_fputs, - NULL, /* assert_fail */ - mps_lib_callback_default_memset, - mps_lib_callback_default_memcpy, - mps_lib_callback_default_memcmp, - mps_lib_callback_default_clock, - mps_lib_callback_default_clocks_per_sec, - mps_lib_callback_default_telemetry_control -}; - -/* Functions */ - -int mps_lib_callback_register(const char *name, mps_lib_function_t f) -{ - if(NULL == name) { - return MPS_RES_FAIL; - } - if(EQ(name, "mps_lib_get_EOF")) { - mps_lib_callback_global.lib_get_EOF = (int(*)(void))f; - } else if(EQ(name, "mps_lib_get_stderr")) { - mps_lib_callback_global.lib_get_stderr = (mps_lib_FILE *(*)(void))f; - } else if(EQ(name, "mps_lib_get_stdout")) { - mps_lib_callback_global.lib_get_stdout = (mps_lib_FILE *(*)(void))f; - } else if(EQ(name, "mps_lib_fputc")) { - mps_lib_callback_global.lib_fputc = (int(*)(int, mps_lib_FILE *))f; - } else if(EQ(name, "mps_lib_fputs")) { - mps_lib_callback_global.lib_fputs = - (int(*)(const char *, mps_lib_FILE *))f; - } else if(EQ(name, "mps_lib_assert_fail")) { - mps_lib_callback_global.lib_assert_fail = (void(*)(const char *))f; - } else if(EQ(name, "mps_lib_memset")) { - mps_lib_callback_global.lib_memset = (void *(*)(void *, int, size_t))f; - } else if(EQ(name, "mps_lib_memcpy")) { - mps_lib_callback_global.lib_memcpy = - (void *(*)(void *, const void *, size_t))f; - } else if(EQ(name, "mps_lib_memcmp")) { - mps_lib_callback_global.lib_memcmp = - (int(*)(const void *, const void *, size_t))f; - } else if(EQ(name, "mps_clock")) { - mps_lib_callback_global.clock = (mps_clock_t(*)(void))f; - } else if(EQ(name, "mps_clocks_per_sec")) { - mps_lib_callback_global.clocks_per_sec = (mps_clock_t(*)(void))f; - } else if(EQ(name, "mps_lib_telemetry_control")) { - mps_lib_callback_global.lib_telemetry_control = - (unsigned long(*)(void))f; - } else { - return MPS_RES_UNIMPL; - } - return MPS_RES_OK; -} - -/* Return non-zero if and only if string p equals string q. */ -int mps_lib_callback_streq(const char *p, const char *q) -{ - do { - if(*p == '\0' && *q == '\0') { - return 1; - } - } while(*p++ == *q++); - return 0; -} - -int mps_lib_callback_default_get_EOF(void) -{ - AFAIL("mps_lib_get_EOF needs to be provided"); - return 0; -} - -mps_lib_FILE *mps_lib_callback_default_get_stderr(void) -{ - AFAIL("mps_lib_get_stderr needs to be provided"); - return NULL; -} - -mps_lib_FILE *mps_lib_callback_default_get_stdout(void) -{ - AFAIL("mps_lib_get_stdout needs to be provided"); - return NULL; -} - -int mps_lib_callback_default_fputc(int c_, mps_lib_FILE *f_) -{ - UNUSED(c_); - UNUSED(f_); - AFAIL("mps_lib_fputc needs to be provided"); - return 0; -} - -int mps_lib_callback_default_fputs(const char *s_, mps_lib_FILE *f_) -{ - UNUSED(s_); - UNUSED(f_); - AFAIL("mps_lib_fputs needs to be provided"); - return 0; -} - -/* No default implementation for mps_lib_assert_fail */ - -void *mps_lib_callback_default_memset(void *p_, int c_, size_t n_) -{ - UNUSED(p_); - UNUSED(c_); - UNUSED(n_); - AFAIL("mps_lib_memset needs to be provided"); - return NULL; -} - -void *mps_lib_callback_default_memcpy(void *p_, const void *q_, size_t n_) -{ - UNUSED(p_); - UNUSED(q_); - UNUSED(n_); - AFAIL("mps_lib_memcpy needs to be provided"); - return NULL; -} - -int mps_lib_callback_default_memcmp(const void *p_, const void *q_, size_t n_) -{ - UNUSED(p_); - UNUSED(q_); - UNUSED(n_); - AFAIL("mps_lib_memcmp needs to be provided"); - return 0; -} - -mps_clock_t mps_lib_callback_default_clock(void) -{ - AFAIL("mps_clock needs to be provided"); - return 0; -} - -mps_clock_t mps_lib_callback_default_clocks_per_sec(void) -{ - AFAIL("mps_clocks_per_sec needs to be provided"); - return 0; -} - -unsigned long mps_lib_callback_default_telemetry_control(void) -{ - AFAIL("mps_lib_telemetry_control needs to be provided"); - return 0; -} - -int mps_lib_get_EOF(void) -{ - return mps_lib_callback_global.lib_get_EOF(); -} - -mps_lib_FILE *mps_lib_get_stderr(void) -{ - return mps_lib_callback_global.lib_get_stderr(); -} - -mps_lib_FILE *mps_lib_get_stdout(void) -{ - return mps_lib_callback_global.lib_get_stdout(); -} - -int mps_lib_fputc(int c, mps_lib_FILE *f) -{ - return mps_lib_callback_global.lib_fputc(c, f); -} - -int mps_lib_fputs(const char *s, mps_lib_FILE *f) -{ - return mps_lib_callback_global.lib_fputs(s, f); -} - -void mps_lib_assert_fail(const char *m) -{ - mps_lib_callback_global.lib_assert_fail(m); -} - -void *(mps_lib_memset)(void *p, int c, size_t n) -{ - return mps_lib_callback_global.lib_memset(p, c, n); -} - -void *(mps_lib_memcpy)(void *p, const void *q, size_t n) -{ - return mps_lib_callback_global.lib_memcpy(p, q, n); -} - -int (mps_lib_memcmp)(const void *p, const void *q, size_t n) -{ - return mps_lib_callback_global.lib_memcmp(p, q, n); -} - -mps_clock_t mps_clock(void) -{ - return mps_lib_callback_global.clock(); -} - -mps_clock_t mps_clocks_per_sec(void) -{ - return mps_lib_callback_global.clocks_per_sec(); -} - -unsigned long mps_lib_telemetry_control(void) -{ - return mps_lib_callback_global.lib_telemetry_control(); -} - - - -/* C. COPYRIGHT AND LICENSE - * - * Copyright (C) 2005 Ravenbrook Limited . - * All rights reserved. This is an open source license. Contact - * Ravenbrook for commercial licensing options. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Redistributions in any form must be accompanied by information on how - * to obtain complete source code for this software and any accompanying - * software that uses this software. The source code must either be - * included in the distribution or be available for no more than the cost - * of distribution plus a nominal fee, and must be freely redistributable - * under reasonable conditions. For an executable file, complete source - * code means the source code for all modules it contains. It does not - * include source code for modules or files that typically accompany the - * major components of the operating system on which the executable file - * runs. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/mps/code/mpslibcb.def b/mps/code/mpslibcb.def deleted file mode 100644 index 9b2f4e3b285..00000000000 --- a/mps/code/mpslibcb.def +++ /dev/null @@ -1,10 +0,0 @@ -; $Header$ -; --- EXTERNAL MPS FUNCTIONS --- -; This file tells the linker to export the mpslibcb functions from -; the MPS DLL. -; This list is for the w3i3mv platform. -; -; This file was extracted by hand from expgen.sh; see MPS job002148. -EXPORTS -; mpslibcb.h -mps_lib_callback_register diff --git a/mps/code/mpslibcb.h b/mps/code/mpslibcb.h deleted file mode 100644 index 140448e2482..00000000000 --- a/mps/code/mpslibcb.h +++ /dev/null @@ -1,58 +0,0 @@ -/* mpslibcb.h: RAVENBROOK MEMORY POOL SYSTEM LIBRARY CALLBACK INTERFACE - * - * $Header$ - * Copyright (c) 2005 Ravenbrook Limited. See end of file for license. - * - * .readership: MPS client application developers, MPS developers. - * - */ - -#ifndef mpslibcb_h -#define mpslibcb_h - -typedef void (*mps_lib_function_t)(void); -int mps_lib_callback_register(const char *, mps_lib_function_t); - -#endif /* mpslibcb_h */ - - -/* C. COPYRIGHT AND LICENSE - * - * Copyright (C) 2005 Ravenbrook Limited . - * All rights reserved. This is an open source license. Contact - * Ravenbrook for commercial licensing options. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Redistributions in any form must be accompanied by information on how - * to obtain complete source code for this software and any accompanying - * software that uses this software. The source code must either be - * included in the distribution or be available for no more than the cost - * of distribution plus a nominal fee, and must be freely redistributable - * under reasonable conditions. For an executable file, complete source - * code means the source code for all modules it contains. It does not - * include source code for modules or files that typically accompany the - * major components of the operating system on which the executable file - * runs. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -- cgit v1.2.1 From 8631e4a2f7f2c5a3bf70cddde303cf44cb272fbe Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 16:44:34 +0100 Subject: Removing windows dll export symbols and script to generate them, as we're not longer building dlls. Copied from Perforce Change: 179175 ServerID: perforce.ravenbrook.com --- mps/code/expgen.sh | 203 ----------------------------------------------------- mps/code/w3gen.def | 158 ----------------------------------------- 2 files changed, 361 deletions(-) delete mode 100755 mps/code/expgen.sh delete mode 100644 mps/code/w3gen.def (limited to 'mps/code') diff --git a/mps/code/expgen.sh b/mps/code/expgen.sh deleted file mode 100755 index 78fd5a29c0d..00000000000 --- a/mps/code/expgen.sh +++ /dev/null @@ -1,203 +0,0 @@ -#!/bin/sh -# $Header$ -# -# Copyright (C) 2004-2005 Ravenbrook Limited. See end of file for license. -# -# expgen.sh -# -# Export Generator -# -# This is a script to generate the a list of exports that is required -# for Windows DLL creation. -# -# It processed the mps header files and produces a .DEF file that is -# suitable for use with the linker when producing a DLL file on Windows. -# -# When run, this script produces the following output files: -# expgen - a plain text list of functions declared in the header files. -# w3gen.def - a .def file suitable for use in the linker stage when -# building a Windows .DLL. -# -# Procedure for rebuilding a new w3gen.def -# -# This procedure should be carried out when the contents of w3gen.def -# would change. This is a bit tricky to say exactly when, but certainly -# when: -# a) new functions are declared in public header files. -# b) different header files are released to a client. -# -# Procedure: -# -# 0) Note: This procedure worked with gcc 3.3 "gcc (GCC) 3.3 20030304 -# (Apple Computer, Inc. build 1495)", running on Mac OS X 10.3. -# However, at 2005-10-12, with gcc 4.0 "gcc version 4.0.0 (Apple -# Computer, Inc. build 5026)", running on Mac OS X 10.4.2, it did not -# work. Invoking "gcc -fdump-translation-unit spong.h" did not produce -# a "spong.h.tu" file. -# -# 1) Ensure that the sources for w3gen.def are submitted. w3gen.def -# must be built from versioned sources. -# The sources are: -# expgen.sh -# w3build.bat -# all the headers that get included. -# For safety's sake better to ensure that no files are open: -# p4 opened ... -# should say '... - file(s) not opened on this client.' -# -# 2) Open w3gen.def for edit (making it writable) -# p4 open w3gen.def -# -# 3) Run this script. -# sh expgen.sh -# There should be no output when successful. -# -# 4) Eyeball the diff. -# p4 diff ... -# Check the that resulting diff is sane. For most changes it should -# just consist of a new symbol being included (plus some Header related -# junk). -# -# 5) Submit the change. -# p4 submit ... -# -# -# Design -# -# The script works by using the -fdump-translation-unit option of gcc. -# This produces a more easily parseable rendering of the header files. -# A fairly simple awk script is used to process the output. -# -# -# Dependencies -# -# This script currently depends fairly heavily on being run in a -# Unix-like environment with access to the GNU compiler. -# -# It's also fairly sensitive to changes in the undocumented format -# produced by gcc -fdump-translation-unit. Hopefully it is fairly easy -# to adapt to changes in this output. -# -# Assumes it can freely write to the files "fun", "name-s". -# -# -# Awk crash course -# -# Awk processes files line-by-line, thus the entire script is executed -# for each line of the input file (more complex awk scripts can control -# this using "next" and "getline" and so on). -# -# In awk $exp identifies a field within the line. $1 is the first -# field, $2 is the second and so on. $0 is the whole line. By default -# fields are separated by whitespace. -# -# string ~ RE is a matching expression and evaulated to true iff the -# string is matched by the regular expression. -# -# REFERENCES -# -# [SUSV3] Single UNIX Specification Version 3, -# http://www.unix.org/single_unix_specification/ -# -# For documenation of the standard utilities: sh, awk, join, sort, sed -# -# [MSDN-LINKER-DEF] Module-Definition (.def) files, -# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_module.2d.definition_files.asp -# -# For documentation on the format of .def files. - -tu () { - # if invoked on a file called spong.h will produce a file named - # spong.h.tu - gcc -fdump-translation-unit -o /dev/null "$@" -} - -# This list of header files is produced by -# awk '/^copy.*\.h/{print $2}' w3build.bat -# followed by manual removal of mpsw3.h mpswin.h (which gcc on UNIX -# cannot parse). Also removed are mpsio.h mpslib.h as they defined -# interfaces that mps _uses_ not defines. Also removed is mpscmvff.h as -# it does not get included in mps.lib. Also removed is mpslibcb.h, -# which now has its own mpslibcb.def file (job002148). -# The functions declared in mpsw3.h have to be added to the .def file by -# hand later in this script. -f='mps.h -mpsavm.h -mpsacl.h -mpscamc.h -mpscams.h -mpscawl.h -mpsclo.h -mpscmv.h -mpscsnc.h -mpstd.h' - -tu $f - ->expgen - -for a in $f -do - >fun - awk ' - $2=="function_decl" && $7=="srcp:" && $8 ~ /^'$a':/ {print $4 >"fun"} - $2=="identifier_node"{print $1,$4} - ' $a.tu | - sort -k 1 >name-s - - echo ';' $a >>expgen - sort -k 1 fun | - join -o 2.2 - name-s >>expgen -done - -{ - printf '; %sHeader%s\n' '$' '$' - echo '; DO NOT EDIT. Automatically generated by $Header$' | sed 's/\$/!/g' - echo 'EXPORTS' - cat expgen - # This is where we manually the functions declared in mpsw3.h - echo ';' mpsw3.h - by hand - echo mps_SEH_filter - echo mps_SEH_handler -} > w3gen.def - - -# C. COPYRIGHT AND LICENSE -# -# Copyright (C) 2004-2005 Ravenbrook Limited . -# All rights reserved. This is an open source license. Contact -# Ravenbrook for commercial licensing options. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Redistributions in any form must be accompanied by information on how -# to obtain complete source code for this software and any accompanying -# software that uses this software. The source code must either be -# included in the distribution or be available for no more than the cost -# of distribution plus a nominal fee, and must be freely redistributable -# under reasonable conditions. For an executable file, complete source -# code means the source code for all modules it contains. It does not -# include source code for modules or files that typically accompany the -# major components of the operating system on which the executable file -# runs. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -# PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/mps/code/w3gen.def b/mps/code/w3gen.def deleted file mode 100644 index 03ebba93c95..00000000000 --- a/mps/code/w3gen.def +++ /dev/null @@ -1,158 +0,0 @@ -; $Header$ -; --- EXTERNAL MPS FUNCTIONS --- -; This is a list of the external MPS functions (those a client -; might wish to call) present in the accompanying mps.lib library. -; This list is for the w3i3mv platform. -; -; If you wish to link with the MPS library AND re-export these -; functions from it (for example: so that other DLLs linked with -; your binary will also be able to make direct MPS calls), then -; you can specify: -; /def: -; to the MSVC LINK.EXE when you link your binary. -; -; This file was initially generated by !Header: //info.ravenbrook.com/project/mps/branch/2004-12-15/dll/code/expgen.sh#4 ! -; And since then has been hand-edited. (But the result should be -; identical (apart from ordering) to what expgen.sh would produce, -; were it run on these sources. See MPS job001935.) -EXPORTS -; mps.h -mps_ap_fill_with_reservoir_permit -mps_ap_fill -mps_commit -mps_reserve -mps_ap_destroy -mps_ap_create_v -mps_ap_create -mps_free -mps_alloc_v -mps_alloc -mps_chain_destroy -mps_chain_create -mps_pool_destroy -mps_pool_create_v -mps_pool_create -mps_fmt_destroy -mps_fmt_create_fixed -mps_fmt_create_auto_header -mps_fmt_create_B -mps_fmt_create_A -mps_arena_extend -mps_arena_has_addr -mps_addr_pool -mps_addr_fmt -mps_space_committed -mps_space_reserved -mps_arena_formatted_objects_walk -mps_arena_spare_commit_limit -mps_arena_spare_commit_limit_set -mps_arena_commit_limit_set -mps_arena_commit_limit -mps_arena_spare_committed -mps_arena_committed -mps_arena_reserved -mps_space_destroy -mps_space_create -mps_arena_destroy -mps_arena_create_v -mps_arena_create -mps_space_collect -mps_space_park -mps_space_release -mps_space_clamp -mps_arena_step -mps_arena_collect -mps_arena_start_collect -mps_arena_unsafe_restore_protection -mps_arena_unsafe_expose_remember_protection -mps_arena_expose -mps_arena_park -mps_arena_release -mps_arena_clamp -mps_telemetry_flush -mps_fix -mps_pool_check_fenceposts -mps_telemetry_label -mps_telemetry_intern -mps_telemetry_control -mps_alert_collection_set -mps_definalize -mps_finalize -mps_message_gc_not_condemned_size -mps_message_gc_condemned_size -mps_message_gc_live_size -mps_message_finalization_ref -mps_message_type -mps_message_queue_type -mps_message_discard -mps_message_get -mps_message_type_disable -mps_message_type_enable -mps_message_poll -mps_collections -mps_ld_isstale -mps_ld_merge -mps_ld_add -mps_ld_reset -mps_thread_dereg -mps_thread_reg -mps_tramp -mps_stack_scan_ambig -mps_root_destroy -mps_root_create_reg -mps_root_create_fmt -mps_root_create_table_masked -mps_root_create_table -mps_root_create -mps_reserve_with_reservoir_permit -mps_reservoir_available -mps_reservoir_limit -mps_arena_roots_walk -mps_reservoir_limit_set -mps_sac_empty -mps_pool_check_free_space -mps_sac_fill -mps_sac_flush -mps_sac_free -mps_sac_alloc -mps_sac_destroy -mps_sac_create -mps_rank_weak -mps_ap_alloc_pattern_reset -mps_rank_exact -mps_ap_alloc_pattern_end -mps_rank_ambig -mps_ap_alloc_pattern_begin -mps_alloc_pattern_ramp_collect_all -mps_alloc_pattern_ramp -mps_ap_trip -mps_ap_frame_pop -mps_ap_frame_push -; mpsavm.h -mps_arena_class_vmnz -mps_arena_class_vm -mps_arena_vm_growth -; mpsacl.h -mps_arena_class_cl -; mpscamc.h -mps_class_amc -mps_amc_apply -mps_class_amcz -; mpscams.h -mps_class_ams_debug -mps_class_ams -; mpscawl.h -mps_class_awl -; mpsclo.h -mps_class_lo -; mpscmv.h -mps_mv_size -mps_class_mv_debug -mps_mv_free_size -mps_class_mv -; mpscsnc.h -mps_class_snc -; mpstd.h -; mpsw3.h - by hand -mps_SEH_filter -mps_SEH_handler -- cgit v1.2.1 From ad6b08eecbde32eba1b15f7d832f671f8afe0b18 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Sun, 2 Sep 2012 16:48:23 +0100 Subject: Updating procedure for testing check macros to fit new variety scheme. Copied from Perforce Change: 179176 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index 3ba0fff138b..d338fb0fa5a 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -23,9 +23,9 @@ * without realising it. This has happened before. Eyeball the preprocessor * output for each variety. For example: * - * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_WE trace.c - * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_HE trace.c - * cc -E -DCONFIG_PROD_MPS -DCONFIG_VAR_CI trace.c + * cc -E -DCONFIG_VAR_WE trace.c + * cc -E -DCONFIG_VAR_HOT trace.c + * cc -E -DCONFIG_VAR_COOL trace.c * * Then look at TraceCheck to make sure checking is right, TraceAddWhite * for general assertions, and TraceFix for the critical path assertions. -- cgit v1.2.1 From 369994f49f8955b0d4b5353e4ec92b49a46a02b9 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 00:29:21 +0100 Subject: Fixing up warnings caused by higher levels of optimisation. Copied from Perforce Change: 179178 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 8 +------- mps/code/dbgpool.c | 2 +- mps/code/fri3gc.gmk | 6 +++--- mps/code/poolams.c | 2 +- 4 files changed, 6 insertions(+), 12 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 98f19aa0958..5e606fc09b9 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -202,7 +202,7 @@ all: mpmss sacss amcss amcsshe amsss amssshe segsmss awlut awluthe \ mpsicv lockcov poolncv locv qs apss \ finalcv finaltest arenacv bttest teletest \ abqtest cbstest btcv mv2test messtest steptest \ - walkt0 libcbt zcoll zmess \ + walkt0 zcoll zmess \ eventcnv \ mps.a mpsplan.a @@ -227,7 +227,6 @@ mpmss sacss amcss amcssth amcsshe amsss amssshe segsmss awlut awlutth \ awluthe mpsicv lockcov poolncv locv qs apss \ finalcv finaltest arenacv bttest teletest \ expt825 \ - libcbt \ abqtest cbstest btcv mv2test \ messtest steptest \ walkt0 \ @@ -291,11 +290,6 @@ $(PFM)/$(VARIETY)/finaltest: $(PFM)/$(VARIETY)/finaltest.o \ $(PFM)/$(VARIETY)/expt825: $(PFM)/$(VARIETY)/expt825.o \ $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) -$(PFM)/$(VARIETY)/libcbt: $(PFM)/$(VARIETY)/libcbt.o \ - $(PFM)/$(VARIETY)/mpslibcb.o \ - $(PFM)/$(VARIETY)/mpsioan.o \ - $(MPMOBJ) $(TESTLIBOBJ) - $(PFM)/$(VARIETY)/locv: $(PFM)/$(VARIETY)/locv.o \ $(MPMOBJ) $(PLINTHOBJ) $(LOOBJ) $(TESTLIBOBJ) diff --git a/mps/code/dbgpool.c b/mps/code/dbgpool.c index 765372fae64..c7978249596 100644 --- a/mps/code/dbgpool.c +++ b/mps/code/dbgpool.c @@ -472,7 +472,7 @@ static Res DebugPoolAlloc(Addr *aReturn, Pool pool, Size size, Bool withReservoir) { Res res; - Addr new; + Addr new = NULL; /* suppress "may be used uninitialized" warning */ PoolDebugMixin debug; AVER(aReturn != NULL); diff --git a/mps/code/fri3gc.gmk b/mps/code/fri3gc.gmk index 32f4496de6e..17ce26833a0 100644 --- a/mps/code/fri3gc.gmk +++ b/mps/code/fri3gc.gmk @@ -15,9 +15,9 @@ LIBS = -lm -pthread include gc.gmk -CFLAGSCOMPILER := $(subst -pedantic,,$(CFLAGSCOMPILER)) -CFLAGSDEBUG = -g3 -CFLAGSOPT = -O -g3 +# FIXME: We pun types through the MPS interface, setting off this warning. +# Can we avoid this? The puns might indeed be dangerous. +CFLAGSCOMPILER := $(CFLAGSCOMPILER) -Wno-strict-aliasing CC = cc diff --git a/mps/code/poolams.c b/mps/code/poolams.c index 4fbaba79b7d..f1ae7478bc3 100644 --- a/mps/code/poolams.c +++ b/mps/code/poolams.c @@ -885,7 +885,7 @@ static Res AMSBufferFill(Addr *baseReturn, Addr *limitReturn, AMS ams; Seg seg; Ring node, ring, nextNode; /* for iterating over the segments */ - Index base, limit; + Index base = 0, limit = 0; /* suppress "may be used uninitialized" */ Addr baseAddr, limitAddr; RankSet rankSet; Bool b; /* the return value of amsSegAlloc */ -- cgit v1.2.1 From 682bd80b85b2cdf3e6dc7922859ff6b6a0eac9ef Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 00:32:49 +0100 Subject: Removing obsolete swpf definitions from makefiles. Increasing default optimisation levels for GCC. Copied from Perforce Change: 179179 ServerID: perforce.ravenbrook.com --- mps/code/fri3gc.gmk | 4 +++- mps/code/fri6gc.gmk | 8 +++++--- mps/code/gc.gmk | 4 ++-- mps/code/lii3gc.gmk | 2 +- mps/code/lii6gc.gmk | 2 +- mps/code/xci3gc.gmk | 1 - 6 files changed, 12 insertions(+), 9 deletions(-) (limited to 'mps/code') diff --git a/mps/code/fri3gc.gmk b/mps/code/fri3gc.gmk index 17ce26833a0..2a79160c1e0 100644 --- a/mps/code/fri3gc.gmk +++ b/mps/code/fri3gc.gmk @@ -5,11 +5,13 @@ PFM = fri3gc +# FIXME: What is this for? Clues at +# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html +# Discover whether it's still necessary and if so, document why. PFMDEFS = -D_REENTRANT MPMPF = lockix.c thix.c pthrdext.c vmix.c \ protix.c protsgix.c prmcan.c prmci3fr.c ssixi3.c span.c -SWPF = than.c vmfr.c protsw.c prmcan.c ssan.c LIBS = -lm -pthread diff --git a/mps/code/fri6gc.gmk b/mps/code/fri6gc.gmk index 44358be0767..de1102190e6 100644 --- a/mps/code/fri6gc.gmk +++ b/mps/code/fri6gc.gmk @@ -5,19 +5,21 @@ PFM = fri6gc +# FIXME: What is this for? Clues at +# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html +# Discover whether it's still necessary and if so, document why. PFMDEFS = -D_REENTRANT MPMPF = lockix.c thix.c pthrdext.c vmix.c \ protix.c protsgix.c prmcan.c prmci6fr.c ssixi6.c span.c -SWPF = than.c vmfr.c protsw.c prmcan.c ssan.c LIBS = -lm -pthread include gc.gmk CFLAGSCOMPILER := $(subst -pedantic,,$(CFLAGSCOMPILER)) -CFLAGSDEBUG = -g3 -CFLAGSOPT = -O -g3 +CFLAGSDEBUG = -O -g3 +CFLAGSOPT = -O3 -g3 CC = cc diff --git a/mps/code/gc.gmk b/mps/code/gc.gmk index 2aeb61cdbc1..9b0a087afee 100644 --- a/mps/code/gc.gmk +++ b/mps/code/gc.gmk @@ -13,8 +13,8 @@ CFLAGSCOMPILER := \ -Wstrict-prototypes -Wmissing-prototypes \ -Winline -Waggregate-return -Wnested-externs \ -Wcast-qual -Wshadow -CFLAGSDEBUG = -O0 -g -CFLAGSOPT = -O3 -g +CFLAGSDEBUG = -O -g3 +CFLAGSOPT = -O3 -g3 # gcc -MM generates a dependency line of the form: # thing.o : thing.c ... diff --git a/mps/code/lii3gc.gmk b/mps/code/lii3gc.gmk index 3652016cc45..148df6fed04 100644 --- a/mps/code/lii3gc.gmk +++ b/mps/code/lii3gc.gmk @@ -10,11 +10,11 @@ THREADLIB = -lpthread # _XOPEN_SOURCE is to get the modern POSIX signal handling # _GNU_SOURCE is to get register numbers in prmci3li.c +# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html PFMDEFS = -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE MPMPF = ${THREADSRC} vmix.c \ protix.c protli.c proti3.c prmci3li.c ssixi3.c span.c -SWPF = than.c vmli.c protsw.c prmcan.c ssan.c LIBS = -lm ${THREADLIB} diff --git a/mps/code/lii6gc.gmk b/mps/code/lii6gc.gmk index 47d1bb744e0..9c47b0926fb 100644 --- a/mps/code/lii6gc.gmk +++ b/mps/code/lii6gc.gmk @@ -10,11 +10,11 @@ THREADLIB = -lpthread # _XOPEN_SOURCE is to get the modern POSIX signal handling # _GNU_SOURCE is to get register numbers in prmci3li.c +# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html PFMDEFS = -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE MPMPF = ${THREADSRC} vmix.c \ protix.c protli.c proti6.c prmci6li.c ssixi6.c span.c -SWPF = than.c vmli.c protsw.c prmcan.c ssan.c LIBS = -lm ${THREADLIB} diff --git a/mps/code/xci3gc.gmk b/mps/code/xci3gc.gmk index a8bed82a7f1..1aea3bc22d5 100644 --- a/mps/code/xci3gc.gmk +++ b/mps/code/xci3gc.gmk @@ -9,7 +9,6 @@ PFM = xci3gc MPMPF = lockix.c than.c vmix.c \ protix.c protsgix.c prmcan.c span.c ssixi3.c -SWPF = than.c vmxc.c protsw.c prmcan.c ssan.c LIBS = -- cgit v1.2.1 From 17977ef9c84ff8d5de6dc171591fd264426b4c23 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 00:49:02 +0100 Subject: Eliminating pfmdefs from makefiles by moving them to mpstd.h so that the mps can be built with a simpler compiler command. Copied from Perforce Change: 179180 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 2 ++ mps/code/fri3gc.gmk | 5 ----- mps/code/fri6gc.gmk | 5 ----- mps/code/lii3gc.gmk | 5 ----- mps/code/lii6gc.gmk | 5 ----- mps/code/mps.c | 14 ++++++++++---- mps/code/mpstd.h | 36 +++++++++++++++++++++--------------- 7 files changed, 33 insertions(+), 39 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 5e606fc09b9..3e24487f3d3 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -89,6 +89,8 @@ endif # C FLAGS # These flags are included in all compilations. +# Avoid using PFMDEFS in platform makefiles, as they prevent the MPS being +# built with a simple command like "cc -c mps.c". CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSCOMPILER) # %%VARIETY: Define a macro containing the set of flags for the new diff --git a/mps/code/fri3gc.gmk b/mps/code/fri3gc.gmk index 2a79160c1e0..f2895c00404 100644 --- a/mps/code/fri3gc.gmk +++ b/mps/code/fri3gc.gmk @@ -5,11 +5,6 @@ PFM = fri3gc -# FIXME: What is this for? Clues at -# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html -# Discover whether it's still necessary and if so, document why. -PFMDEFS = -D_REENTRANT - MPMPF = lockix.c thix.c pthrdext.c vmix.c \ protix.c protsgix.c prmcan.c prmci3fr.c ssixi3.c span.c diff --git a/mps/code/fri6gc.gmk b/mps/code/fri6gc.gmk index de1102190e6..081e0cff43b 100644 --- a/mps/code/fri6gc.gmk +++ b/mps/code/fri6gc.gmk @@ -5,11 +5,6 @@ PFM = fri6gc -# FIXME: What is this for? Clues at -# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html -# Discover whether it's still necessary and if so, document why. -PFMDEFS = -D_REENTRANT - MPMPF = lockix.c thix.c pthrdext.c vmix.c \ protix.c protsgix.c prmcan.c prmci6fr.c ssixi6.c span.c diff --git a/mps/code/lii3gc.gmk b/mps/code/lii3gc.gmk index 148df6fed04..58176c0571f 100644 --- a/mps/code/lii3gc.gmk +++ b/mps/code/lii3gc.gmk @@ -8,11 +8,6 @@ PFM = lii3gc THREADSRC = lockli.c thix.c pthrdext.c THREADLIB = -lpthread -# _XOPEN_SOURCE is to get the modern POSIX signal handling -# _GNU_SOURCE is to get register numbers in prmci3li.c -# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html -PFMDEFS = -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE - MPMPF = ${THREADSRC} vmix.c \ protix.c protli.c proti3.c prmci3li.c ssixi3.c span.c diff --git a/mps/code/lii6gc.gmk b/mps/code/lii6gc.gmk index 9c47b0926fb..4c48923b082 100644 --- a/mps/code/lii6gc.gmk +++ b/mps/code/lii6gc.gmk @@ -8,11 +8,6 @@ PFM = lii6gc THREADSRC = lockli.c thix.c pthrdext.c THREADLIB = -lpthread -# _XOPEN_SOURCE is to get the modern POSIX signal handling -# _GNU_SOURCE is to get register numbers in prmci3li.c -# http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html -PFMDEFS = -D_REENTRANT -D_XOPEN_SOURCE=500 -D_GNU_SOURCE - MPMPF = ${THREADSRC} vmix.c \ protix.c protli.c proti6.c prmci6li.c ssixi6.c span.c diff --git a/mps/code/mps.c b/mps/code/mps.c index 34bec8c0c42..cf967507816 100644 --- a/mps/code/mps.c +++ b/mps/code/mps.c @@ -18,6 +18,16 @@ * which closely mirror those in the makefiles. */ + +/* Platform interface + * + * This must be included first as it defines symbols which affect system + * headers, such as _POSIX_C_SOURCE _REENTRANT etc. + */ + +#include "mpstd.h" + + /* MPM Core */ #include "mpsi.c" @@ -75,10 +85,6 @@ #include "mpsliban.c" #include "mpsioan.c" -/* Platform interface */ - -#include "mpstd.h" - /* Mac OS X on 32-bit Intel built with Clang or GCC */ #if defined(MPS_PF_XCI3LL) || defined(MPS_PF_XCI3GC) diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h index 10d3d2833a6..2f3f3f4d94b 100644 --- a/mps/code/mpstd.h +++ b/mps/code/mpstd.h @@ -127,6 +127,7 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 /* I'm just guessing. */ + /* Apple clang version 3.1, clang -E -dM */ #elif defined(__APPLE__) && defined(__i386__) && defined(__MACH__) \ @@ -145,6 +146,7 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 /* I'm just guessing. */ + /* Apple clang version 3.1, clang -E -dM */ #elif defined(__APPLE__) && defined(__x86_64__) && defined(__MACH__) \ @@ -163,6 +165,7 @@ #define MPS_WORD_SHIFT 6 #define MPS_PF_ALIGN 8 + /* GCC 2.6.3, gcc -E -dM * The actual granularity of GNU malloc is 8, but field alignments are * all 4. @@ -183,6 +186,11 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 +#define _REENTRANT /* FIXME: What for? */ +#define _XOPEN_SOURCE 500 /* to get POSIX signal handling */ +#define _GNU_SOURCE /* to get register numbers for prmci3li.c */ + + /* GCC 4.6.3, gcc -E -dM */ #elif defined(__linux__) && defined(__x86_64) && defined(__GNUC__) @@ -200,22 +208,10 @@ #define MPS_WORD_SHIFT 6 #define MPS_PF_ALIGN 8 -/* GCC 2.7.2, gcc -E -dM */ +#define _REENTRANT /* FIXME: What for? */ +#define _XOPEN_SOURCE 500 /* to get POSIX signal handling */ +#define _GNU_SOURCE /* to get register numbers for prmci3li.c */ -#elif defined(__linux__) && defined(__PPC__) && defined(__GNUC__) -#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_LIPPGC) -#error "specified CONFIG_PF_... inconsistent with detected lippgc" -#endif -#define MPS_PF_LIPPGC -#define MPS_PF_STRING "lippgc" -#define MPS_OS_LI -#define MPS_ARCH_PP -#define MPS_BUILD_GC -#define MPS_T_WORD unsigned long -#define MPS_T_ULONGEST unsigned long -#define MPS_WORD_WIDTH 32 -#define MPS_WORD_SHIFT 5 -#define MPS_PF_ALIGN 8 /* @@@@ not tested */ /* GCC 2.95.3, gcc -E -dM */ @@ -234,6 +230,11 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 +/* FIXME: What is this for? Clues at + Discover whether it's still necessary and if so, document why. */ +#define _REENTRANT + + #elif defined(__FreeBSD__) && defined (__x86_64__) && defined (__GNUC__) #if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_FRI6GC) #error "specified CONFIG_PF_... inconsistent with detected fri6gc" @@ -249,6 +250,11 @@ #define MPS_WORD_SHIFT 6 #define MPS_PF_ALIGN 8 +/* FIXME: What is this for? Clues at + Discover whether it's still necessary and if so, document why. */ +#define _REENTRANT + + #else #error "Unable to detect target platform" #endif -- cgit v1.2.1 From b88b9d2d64e3d4c2c4e77e8b7836504122fcff7c Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 01:09:09 +0100 Subject: Fixing up platform definitions after test build on ubuntu 12. Copied from Perforce Change: 179181 ServerID: perforce.ravenbrook.com --- mps/code/lockli.c | 9 ++++----- mps/code/mpstd.h | 8 ++++++-- mps/code/protix.c | 5 ----- 3 files changed, 10 insertions(+), 12 deletions(-) (limited to 'mps/code') diff --git a/mps/code/lockli.c b/mps/code/lockli.c index deac899e0f2..8bd03649bbf 100644 --- a/mps/code/lockli.c +++ b/mps/code/lockli.c @@ -22,15 +22,14 @@ * while we hold the mutex. */ -#define _XOPEN_SOURCE 500 -#include -#include -#include - #include "mpmtypes.h" #include "lock.h" #include "config.h" +#include +#include +#include + #ifndef MPS_OS_LI #error "lockli.c is specific to LinuxThreads but MPS_OS_LI not defined" diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h index 2f3f3f4d94b..a7b1783edc8 100644 --- a/mps/code/mpstd.h +++ b/mps/code/mpstd.h @@ -186,7 +186,9 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 -#define _REENTRANT /* FIXME: What for? */ +#ifndef _REENTRANT /* it's also defined by cc -pthread */ +#define _REENTRANT /* defines, e.g., pthread_mutexattr_settype */ +#endif #define _XOPEN_SOURCE 500 /* to get POSIX signal handling */ #define _GNU_SOURCE /* to get register numbers for prmci3li.c */ @@ -208,7 +210,9 @@ #define MPS_WORD_SHIFT 6 #define MPS_PF_ALIGN 8 -#define _REENTRANT /* FIXME: What for? */ +#ifndef _REENTRANT /* it's also defined by cc -pthread */ +#define _REENTRANT /* defines, e.g., pthread_mutexattr_settype */ +#endif #define _XOPEN_SOURCE 500 /* to get POSIX signal handling */ #define _GNU_SOURCE /* to get register numbers for prmci3li.c */ diff --git a/mps/code/protix.c b/mps/code/protix.c index b121e2f48ae..31c272bc5b9 100644 --- a/mps/code/protix.c +++ b/mps/code/protix.c @@ -39,11 +39,6 @@ * is permitted when PROT_NONE alone is used. */ - -/* open sesame magic, see standards(5) */ -#define _POSIX_C_SOURCE 199309L -#define _XOPEN_SOURCE_EXTENDED 1 - #include "mpm.h" #if !defined(MPS_OS_LI) && !defined(MPS_OS_FR) && !defined(MPS_OS_XC) -- cgit v1.2.1 From 164a6b4bc745ec8e2e467bf52ca31c8bf5bb7cba Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 12:37:33 +0100 Subject: Building hot varieties with globally optimized mps.c instead of separate object files. Copied from Perforce Change: 179189 ServerID: perforce.ravenbrook.com --- mps/code/comm.gmk | 107 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 68 insertions(+), 39 deletions(-) (limited to 'mps/code') diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 3e24487f3d3..5d9d9c32ae8 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -273,7 +273,39 @@ endif endif -# GENUINE TARGETS +# THE MPS LIBRARY +# +# The MPS library is built in two ways: +# +# 1. In the usual way, from a pile of object files compiled from their +# corresponding sources. +# +# 2. From mps.c, which effectively concatenates all the sources, allowing +# important global optimisation and inlining to occur. +# +# We mostly use the method (2), because it is fast to compile and execute. +# But we use method (1) for some varieties to ensure correctness of +# code (linkage errors are masked by (2)) and to maintain a correct list +# of source files in case method (1) won't work on some future constrained +# platform. +# +# %%VARIETY: Add a rule for how to build the MPS library for the variety + +$(PFM)/we/mps.a: $(PFM)/we/mps.o +$(PFM)/hot/mps.a: $(PFM)/hot/mps.o + +$(PFM)/di/mps.a: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) +$(PFM)/cool/mps.a: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) +$(PFM)/ti/mps.a: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) + + +# OTHER GENUINE TARGETS # # Each line defines an executable or library target to be built and the # object files it is built from. These lines add dependencies to the @@ -284,104 +316,104 @@ endif ifdef VARIETY $(PFM)/$(VARIETY)/finalcv: $(PFM)/$(VARIETY)/finalcv.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/finaltest: $(PFM)/$(VARIETY)/finaltest.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/expt825: $(PFM)/$(VARIETY)/expt825.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/locv: $(PFM)/$(VARIETY)/locv.o \ - $(MPMOBJ) $(PLINTHOBJ) $(LOOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/mpmss: $(PFM)/$(VARIETY)/mpmss.o \ - $(MPMOBJ) $(PLINTHOBJ) $(MVFFOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/apss: $(PFM)/$(VARIETY)/apss.o \ - $(MPMOBJ) $(PLINTHOBJ) $(MVFFOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/sacss: $(PFM)/$(VARIETY)/sacss.o \ - $(MPMOBJ) $(PLINTHOBJ) $(MVFFOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/bttest: $(PFM)/$(VARIETY)/bttest.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/teletest: $(PFM)/$(VARIETY)/teletest.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/lockcov: $(PFM)/$(VARIETY)/lockcov.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/mpsicv: $(PFM)/$(VARIETY)/mpsicv.o \ - $(FMTDYTSTOBJ) $(FMTHETSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/amcss: $(PFM)/$(VARIETY)/amcss.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/amcssth: $(PFM)/$(VARIETY)/amcssth.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/amcsshe: $(PFM)/$(VARIETY)/amcsshe.o \ - $(FMTHETSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/amsss: $(PFM)/$(VARIETY)/amsss.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMSOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/amssshe: $(PFM)/$(VARIETY)/amssshe.o \ - $(FMTHETSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMSOBJ) $(TESTLIBOBJ) + $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/segsmss: $(PFM)/$(VARIETY)/segsmss.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMSOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/awlut: $(PFM)/$(VARIETY)/awlut.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(LOOBJ) $(AWLOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/awluthe: $(PFM)/$(VARIETY)/awluthe.o \ - $(FMTHETSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(LOOBJ) $(AWLOBJ) $(TESTLIBOBJ) + $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/awlutth: $(PFM)/$(VARIETY)/awlutth.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(LOOBJ) $(AWLOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/poolncv: $(PFM)/$(VARIETY)/poolncv.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) $(POOLNOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/qs: $(PFM)/$(VARIETY)/qs.o \ - $(AMCOBJ) $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/arenacv: $(PFM)/$(VARIETY)/arenacv.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/abqtest: $(PFM)/$(VARIETY)/abqtest.o \ - $(PFM)/$(VARIETY)/abq.o $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(PFM)/$(VARIETY)/abq.o $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/cbstest: $(PFM)/$(VARIETY)/cbstest.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/btcv: $(PFM)/$(VARIETY)/btcv.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/mv2test: $(PFM)/$(VARIETY)/mv2test.o \ $(PFM)/$(VARIETY)/poolmv2.o $(PFM)/$(VARIETY)/abq.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/messtest: $(PFM)/$(VARIETY)/messtest.o \ - $(MPMOBJ) $(PLINTHOBJ) $(TESTLIBOBJ) + $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/steptest: $(PFM)/$(VARIETY)/steptest.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/walkt0: $(PFM)/$(VARIETY)/walkt0.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/exposet0: $(PFM)/$(VARIETY)/exposet0.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/zcoll: $(PFM)/$(VARIETY)/zcoll.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/zmess: $(PFM)/$(VARIETY)/zmess.o \ - $(FMTDYTSTOBJ) $(MPMOBJ) $(PLINTHOBJ) $(AMCOBJ) $(TESTLIBOBJ) + $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/eventcnv: $(PFM)/$(VARIETY)/eventcnv.o \ $(PFM)/$(VARIETY)/eventpro.o $(PFM)/$(VARIETY)/table.o @@ -389,10 +421,7 @@ $(PFM)/$(VARIETY)/eventcnv: $(PFM)/$(VARIETY)/eventcnv.o \ $(PFM)/$(VARIETY)/replay: $(PFM)/$(VARIETY)/replay.o \ $(PFM)/$(VARIETY)/eventrep.o \ $(PFM)/$(VARIETY)/eventpro.o $(PFM)/$(VARIETY)/table.o \ - $(MPMOBJ) $(PLINTHOBJ) $(AWLOBJ) $(AMSOBJ) $(POOLNOBJ) \ - $(AMCOBJ) $(SNCOBJ) $(MVFFOBJ) - -$(PFM)/$(VARIETY)/mps.a: $(MPMOBJ) $(AMCOBJ) $(SNCOBJ) $(MVFFOBJ) + $(PFM)/$(VARIETY)/mps.a $(PFM)/$(VARIETY)/mpsplan.a: $(PLINTHOBJ) @@ -466,7 +495,7 @@ $(PFM)/$(VARIETY)/%.a: $(PFM)/$(VARIETY)/%: $(ECHO) "$(PFM): $@" - $(CC) $(CFLAGS) $(LINKFLAGS) -o $@ $^ version.c $(LIBS) + $(CC) $(CFLAGS) $(LINKFLAGS) -o $@ $^ $(LIBS) # C. COPYRIGHT AND LICENSE -- cgit v1.2.1 From 5140062cd6f1736f72b328ae0a15dca754629bed Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 12:56:38 +0100 Subject: Building hot varieties with globally optimized mps.c instead of separate object files. Copied from Perforce Change: 179191 ServerID: perforce.ravenbrook.com --- mps/code/commpost.nmk | 82 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 30 deletions(-) (limited to 'mps/code') diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index 05ed6a0ba84..0308ada12ab 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -37,8 +37,7 @@ mpmss.exe amcss.exe amcsshe.exe amsss.exe amssshe.exe segsmss.exe awlut.exe awlu walkt0.exe locbwcss.exe locusss.exe \ exposet0.exe zcoll.exe zmess.exe \ replay.exe replaysw.exe eventcnv.exe \ - mps.lib mpsplcb.lib \ - mpsdy.dll: + mps.lib: !IFDEF VARIETY $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ variety !ELSE @@ -79,7 +78,55 @@ mpsicv.cov: $(MAKE) /nologo /f $(PFM).nmk TARGET=$@ VARIETY=cv variety -# GENUINE TARGETS +# THE MPS LIBRARY +# +# The MPS library is built in two ways: +# +# 1. In the usual way, from a pile of object files compiled from their +# corresponding sources. +# +# 2. From mps.c, which effectively concatenates all the sources, allowing +# important global optimisation and inlining to occur. +# +# We mostly use the method (2), because it is fast to compile and execute. +# But we use method (1) for some varieties to ensure correctness of +# code (linkage errors are masked by (2)) and to maintain a correct list +# of source files in case method (1) won't work on some future constrained +# platform. +# +# %%VARIETY: Add a rule for how to build the MPS library for the variety + +$(PFM)\we\mps.lib: $(PFM)\we\mps.obj + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +$(PFM)\hot\mps.lib: $(PFM)\hot\mps.obj + $(ECHO) $@ + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** + +$(PFM)\cool\mps.lib: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) + $(ECHO) $@ + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o + +$(PFM)\di\mps.lib: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) + $(ECHO) $@ + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o + +$(PFM)\ti\mps.lib: \ + $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ + $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) + $(ECHO) $@ + cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c + $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o + + +# OTHER GENUINE TARGETS # # Each line defines an executable or library target to be built and the object # files it is build from. For an executable these lines add dependencies to @@ -168,7 +215,7 @@ $(PFM)\$(VARIETY)\arenacv.exe: $(PFM)\$(VARIETY)\arenacv.obj \ $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\abqtest.exe: $(PFM)\$(VARIETY)\abqtest.obj \ - $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) + $(PFM)\$(VARIETY)\abq.obj $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\cbstest.exe: $(PFM)\$(VARIETY)\cbstest.obj \ $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) @@ -177,6 +224,7 @@ $(PFM)\$(VARIETY)\btcv.exe: $(PFM)\$(VARIETY)\btcv.obj \ $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\mv2test.exe: $(PFM)\$(VARIETY)\mv2test.obj \ + $(PFM)\$(VARIETY)\poolmv2.obj $(PFM)\$(VARIETY)\abq.obj \ $(PFM)\$(VARIETY)\mps.lib $(TESTLIBOBJ) $(PFM)\$(VARIETY)\zcoll.exe: $(PFM)\$(VARIETY)\zcoll.obj \ @@ -213,32 +261,6 @@ $(PFM)\$(VARIETY)\walkt0.exe: $(PFM)\$(VARIETY)\walkt0.obj \ $(PFM)\$(VARIETY)\exposet0.exe: $(PFM)\$(VARIETY)\exposet0.obj \ $(PFM)\$(VARIETY)\mps.lib $(FMTTESTOBJ) $(TESTLIBOBJ) -$(PFM)\$(VARIETY)\mps.lib: \ - $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ - $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) - $(ECHO) $@ - cl /c $(CFLAGS) /Fd$(PFM)\$(VARIETY)\ /Fo$(PFM)\$(VARIETY)\version.o version.c - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** $(PFM)\$(VARIETY)\version.o - -# We would like to use $** in the linker command line here, but we -# cannot because the target, mpsdy.dll, depends on the w3gen.def file, -# but this is not to be treated as an object on the linker line. Sorry -# about the repetition of the object list. -$(PFM)\$(VARIETY)\mpsdy.dll: $(PFM)\$(VARIETY)\mpslibcb.obj \ - $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \ - $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) w3gen.def \ - mpslibcb.def - $(ECHO) $@ - $(LINKER) $(LINKFLAGS) /def:w3gen.def \ - /def:mpslibcb.def /dll /OUT:$@ \ - $(PFM)\$(VARIETY)\mpslibcb.obj \ - $(MPMOBJ) $(LOOBJ) $(SNCOBJ) \ - $(MVFFOBJ) $(AMSOBJ) $(AWLOBJ) - -$(PFM)\$(VARIETY)\mpsplcb.lib: $(PFM)\$(VARIETY)\mpslibcb.obj - $(ECHO) $@ - $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** - !ENDIF -- cgit v1.2.1 From d3aacdebfc18450b32531dadf7d9c2d4091faba6 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 13:15:34 +0100 Subject: Suppressing warnings revealed by increased level of optimisation and building the mps from mps.c Copied from Perforce Change: 179192 ServerID: perforce.ravenbrook.com --- mps/code/buffer.c | 2 +- mps/code/dbgpool.c | 4 ++-- mps/code/global.c | 2 +- mps/code/poolmrg.c | 2 +- mps/code/poolmv.c | 2 +- mps/code/poolmvff.c | 2 +- mps/code/poolsnc.c | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) (limited to 'mps/code') diff --git a/mps/code/buffer.c b/mps/code/buffer.c index 9b7748c6572..c7dc6edd82e 100644 --- a/mps/code/buffer.c +++ b/mps/code/buffer.c @@ -1330,7 +1330,7 @@ static void segBufAttach(Buffer buffer, Addr base, Addr limit, Addr init, Size size) { SegBuf segbuf; - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Arena arena; Bool found; diff --git a/mps/code/dbgpool.c b/mps/code/dbgpool.c index c7978249596..c433d044ef1 100644 --- a/mps/code/dbgpool.c +++ b/mps/code/dbgpool.c @@ -224,7 +224,7 @@ static void freeSplat(PoolDebugMixin debug, Pool pool, Addr base, Addr limit) Addr p, next; Size freeSize = debug->freeSize; Arena arena; - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Bool inSeg; AVER(base < limit); @@ -258,7 +258,7 @@ static Bool freeCheck(PoolDebugMixin debug, Pool pool, Addr base, Addr limit) Size freeSize = debug->freeSize; Res res; Arena arena; - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Bool inSeg; AVER(base < limit); diff --git a/mps/code/global.c b/mps/code/global.c index 4d647a3754c..1997efbba6d 100644 --- a/mps/code/global.c +++ b/mps/code/global.c @@ -915,7 +915,7 @@ void ArenaPokeSeg(Arena arena, Seg seg, Addr addr, Ref ref) Ref ArenaRead(Arena arena, Addr addr) { Bool b; - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ AVERT(Arena, arena); diff --git a/mps/code/poolmrg.c b/mps/code/poolmrg.c index 6abba410f72..d55f8af9f3b 100644 --- a/mps/code/poolmrg.c +++ b/mps/code/poolmrg.c @@ -332,7 +332,7 @@ static Count MRGGuardiansPerSeg(MRG mrg) static RefPart MRGRefPartOfLink(Link link, Arena arena) { - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Bool b; Link linkBase; Index index; diff --git a/mps/code/poolmv.c b/mps/code/poolmv.c index a7026276008..6a682da6707 100644 --- a/mps/code/poolmv.c +++ b/mps/code/poolmv.c @@ -574,7 +574,7 @@ static void MVFree(Pool pool, Addr old, Size size) MV mv; Res res; Bool b; - Tract tract; + Tract tract = NULL; /* suppress "may be used uninitialized" */ AVERT(Pool, pool); mv = Pool2MV(pool); diff --git a/mps/code/poolmvff.c b/mps/code/poolmvff.c index 1bbe1e85806..b83b58243bb 100644 --- a/mps/code/poolmvff.c +++ b/mps/code/poolmvff.c @@ -112,7 +112,7 @@ static void MVFFAddToFreeList(Addr *baseIO, Addr *limitIO, MVFF mvff) { */ static void MVFFFreeSegs(MVFF mvff, Addr base, Addr limit) { - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Arena arena; Bool b; Addr segLimit; /* limit of the current segment when iterating */ diff --git a/mps/code/poolsnc.c b/mps/code/poolsnc.c index c9b1c20098e..eda496d450f 100644 --- a/mps/code/poolsnc.c +++ b/mps/code/poolsnc.c @@ -590,7 +590,7 @@ static void SNCFramePopPending(Pool pool, Buffer buf, AllocFrame frame) } else { Arena arena; - Seg seg; + Seg seg = NULL; /* suppress "may be used uninitialized" */ Bool foundSeg; arena = PoolArena(pool); -- cgit v1.2.1 From 3ec3f57262fa3cb2ceed3b1be8dae787a8424075 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 13:32:11 +0100 Subject: Renaming varieties we to rash and di to diag. leaving ti alone as it will be deleted shortly in merge with diagnostic-telemetry branch. Copied from Perforce Change: 179193 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 2 +- mps/code/comm.gmk | 22 +++++++++++----------- mps/code/commpost.nmk | 2 +- mps/code/commpre.nmk | 12 ++++++------ mps/code/config.h | 12 ++++++------ 5 files changed, 25 insertions(+), 25 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index d338fb0fa5a..d5209cf7945 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -23,7 +23,7 @@ * without realising it. This has happened before. Eyeball the preprocessor * output for each variety. For example: * - * cc -E -DCONFIG_VAR_WE trace.c + * cc -E -DCONFIG_VAR_RASH trace.c * cc -E -DCONFIG_VAR_HOT trace.c * cc -E -DCONFIG_VAR_COOL trace.c * diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk index 5d9d9c32ae8..bdb37556c9c 100644 --- a/mps/code/comm.gmk +++ b/mps/code/comm.gmk @@ -97,22 +97,22 @@ CFLAGSCOMMON = $(PFMDEFS) $(CFLAGSCOMPILER) # variety. # These flags are added to compilations for the indicated variety. -CFWE = -DCONFIG_VAR_WE -DNDEBUG $(CFLAGSOPT) -CFHOT = -DCONFIG_VAR_HOT -DNDEBUG $(CFLAGSOPT) -CFDI = -DCONFIG_VAR_DI -DNDEBUG $(CFLAGSOPT) -CFCOOL = -DCONFIG_VAR_COOL $(CFLAGSDEBUG) -CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) +CFRASH = -DCONFIG_VAR_RASH -DNDEBUG $(CFLAGSOPT) +CFHOT = -DCONFIG_VAR_HOT -DNDEBUG $(CFLAGSOPT) +CFDIAG = -DCONFIG_VAR_DIAG -DNDEBUG $(CFLAGSOPT) +CFCOOL = -DCONFIG_VAR_COOL $(CFLAGSDEBUG) +CFTI = -DCONFIG_VAR_TI $(CFLAGSDEBUG) # Bind CFLAGS to the appropriate set of flags for the variety. # %%VARIETY: Add a test for the variety and set CFLAGS here. -ifeq ($(VARIETY),we) -CFLAGS=$(CFLAGSCOMMON) $(CFWE) +ifeq ($(VARIETY),rash) +CFLAGS=$(CFLAGSCOMMON) $(CFRASH) else ifeq ($(VARIETY),hot) CFLAGS=$(CFLAGSCOMMON) $(CFHOT) else -ifeq ($(VARIETY),di) -CFLAGS=$(CFLAGSCOMMON) $(CFDI) +ifeq ($(VARIETY),diag) +CFLAGS=$(CFLAGSCOMMON) $(CFDIAG) else ifeq ($(VARIETY),cool) CFLAGS=$(CFLAGSCOMMON) $(CFCOOL) @@ -291,10 +291,10 @@ endif # # %%VARIETY: Add a rule for how to build the MPS library for the variety -$(PFM)/we/mps.a: $(PFM)/we/mps.o +$(PFM)/rash/mps.a: $(PFM)/rash/mps.o $(PFM)/hot/mps.a: $(PFM)/hot/mps.o -$(PFM)/di/mps.a: \ +$(PFM)/diag/mps.a: \ $(MPMOBJ) $(AMCOBJ) $(AMSOBJ) $(AWLOBJ) $(LOOBJ) $(SNCOBJ) \ $(MVFFOBJ) $(PLINTHOBJ) $(POOLNOBJ) $(PFM)/cool/mps.a: \ diff --git a/mps/code/commpost.nmk b/mps/code/commpost.nmk index 0308ada12ab..568b914b8fe 100644 --- a/mps/code/commpost.nmk +++ b/mps/code/commpost.nmk @@ -96,7 +96,7 @@ mpsicv.cov: # # %%VARIETY: Add a rule for how to build the MPS library for the variety -$(PFM)\we\mps.lib: $(PFM)\we\mps.obj +$(PFM)\rash\mps.lib: $(PFM)\rash\mps.obj $(ECHO) $@ $(LIBMAN) $(LIBFLAGS) /OUT:$@ $** diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk index 16a10445ccc..08a3d02587d 100644 --- a/mps/code/commpre.nmk +++ b/mps/code/commpre.nmk @@ -113,9 +113,9 @@ CFLAGSEXTERNAL = # The combinations of variety # %%VARIETY: Define a macro containing the set of flags for the new variety. -CFWE = /DCONFIG_VAR_WE $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSEXTERNAL) +CFRASH = /DCONFIG_VAR_RASH $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSEXTERNAL) CFHOT = /DCONFIG_VAR_HOT $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSEXTERNAL) -CFDI = /DCONFIG_VAR_DI $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSINTERNAL) +CFDIAG = /DCONFIG_VAR_DIAG $(CRTFLAGSHOT) $(CFLAGSHOT) $(CFLAGSINTERNAL) CFCOOL = /DCONFIG_VAR_COOL $(CRTFLAGSCOOL) $(CFLAGSCOOL) $(CFLAGSINTERNAL) CFTI = /DCONFIG_VAR_TI $(CRTFLAGSCOOL) $(CFLAGSCOOL) $(CFLAGSINTERNAL) @@ -130,9 +130,9 @@ LINKFLAGSINTERNAL = /DEBUG # ( Internal flags used to be set to /DEBUG:full ) LINKFLAGSEXTERNAL = /RELEASE -LFWE = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) +LFRASH = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) LFHOT = $(LINKFLAGSHOT) $(LINKFLAGSEXTERNAL) -LFDI = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) +LFDIAG = $(LINKFLAGSHOT) $(LINKFLAGSINTERNAL) LFCOOL = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) @@ -143,9 +143,9 @@ LFTI = $(LINKFLAGSCOOL) $(LINKFLAGSINTERNAL) LIBMAN = lib # can't call this LIB - it screws the environment LIBFLAGSCOMMON = /nologo -LIBFLAGSWE = +LIBFLAGSRASH = LIBFLAGSHOT = -LIBFLAGSDI = +LIBFLAGSDIAG = LIBFLAGSCOOL = LIBFLAGSTI = diff --git a/mps/code/config.h b/mps/code/config.h index 41c092fc070..8920274e83e 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -25,7 +25,7 @@ the directives CONFIG_ASSERT, CONFIG_STATS, CONFIG_LOG, etc. which control actual compilation features. */ -/* CONFIG_VAR_WE -- the white-hot variety +/* CONFIG_VAR_RASH -- the rash and reckless variety * * This variety switches off as many features as possible for maximum * performance, but is therefore unsafe and undebuggable. It is not intended @@ -33,7 +33,7 @@ * logging, etc. have negligible overhead. */ -#if defined(CONFIG_VAR_WE) /* White-hot variety */ +#if defined(CONFIG_VAR_RASH) /* no asserts */ /* no statistic meters */ /* no telemetry log events */ @@ -46,7 +46,7 @@ * consistency checking and allowing some debugging and telemetry features. */ -#elif defined(CONFIG_VAR_HOT) /* Hot variety */ +#elif defined(CONFIG_VAR_HOT) #define CONFIG_ASSERT #ifndef CHECKLEVEL #define CHECKLEVEL CheckLevelMINIMAL @@ -55,14 +55,14 @@ /* no telemetry log events */ -/* CONFIG_VAR_DI -- diagnostic variety +/* CONFIG_VAR_DIAG -- diagnostic variety * * Deprecated. The diagnostic variety prints messages about the internals * of the MPS to an output stream. This is being replaced by an extended * telemetry system. RB 2012-08-31 */ -#elif defined(CONFIG_VAR_DI) /* Diagnostic variety */ +#elif defined(CONFIG_VAR_DIAG) /* Diagnostic variety */ #define CONFIG_ASSERT #ifndef CHECKLEVEL #define CHECKLEVEL CheckLevelMINIMAL @@ -85,7 +85,7 @@ * and data collection and output, and full debugging information. */ -#elif defined(CONFIG_VAR_COOL) /* Cool variety */ +#elif defined(CONFIG_VAR_COOL) #define CONFIG_ASSERT #define CONFIG_ASSERT_ALL #define CONFIG_STATS -- cgit v1.2.1 From 5333e6d525fe9065cf403e65517576ca7cd9397e Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 13:38:53 +0100 Subject: Checking and suppressing warnings caused by higher level of optimisation and building from mps.c on ubuntu 12. Copied from Perforce Change: 179194 ServerID: perforce.ravenbrook.com --- mps/code/arenacl.c | 2 +- mps/code/arenavm.c | 2 +- mps/code/cbs.c | 2 +- mps/code/poolmrg.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) (limited to 'mps/code') diff --git a/mps/code/arenacl.c b/mps/code/arenacl.c index 5d59abb9827..2238dddb4f6 100644 --- a/mps/code/arenacl.c +++ b/mps/code/arenacl.c @@ -406,7 +406,7 @@ static Res ClientAlloc(Addr *baseReturn, Tract *baseTractReturn, static void ClientFree(Addr base, Size size, Pool pool) { Arena arena; - Chunk chunk; + Chunk chunk = NULL; /* suppress "may be used uninitialized" */ Size pages; ClientArena clientArena; Index pi, baseIndex, limitIndex; diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 87d7a797d37..0f6f3ab47b2 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -1584,7 +1584,7 @@ static void VMFree(Addr base, Size size, Pool pool) Arena arena; VMArena vmArena; VMChunk vmChunk; - Chunk chunk; + Chunk chunk = NULL; /* suppress "may be used uninitialized" */ Count pages; Index pi, piBase, piLimit; Index pageTableBase; diff --git a/mps/code/cbs.c b/mps/code/cbs.c index df1a359e59a..c2cda567b7f 100644 --- a/mps/code/cbs.c +++ b/mps/code/cbs.c @@ -1561,7 +1561,7 @@ Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn, notEmpty = SplayRoot(&root, splayTreeOfCBS(cbs)); if (notEmpty) { CBSBlock block; - SplayNode node; + SplayNode node = NULL; /* suppress "may be used uninitialized" */ size = cbsBlockOfSplayNode(root)->maxSize; METER_ACC(cbs->splaySearch, cbs->splayTreeSize); diff --git a/mps/code/poolmrg.c b/mps/code/poolmrg.c index d55f8af9f3b..397ba89b6db 100644 --- a/mps/code/poolmrg.c +++ b/mps/code/poolmrg.c @@ -407,7 +407,7 @@ static void MRGGuardianInit(MRG mrg, Link link, RefPart refPart) static void MRGMessageDelete(Message message) { - Pool pool; + Pool pool = NULL; /* suppress "may be used uninitialized" */ Arena arena; Link link; Bool b; -- cgit v1.2.1 From be2a97a67399853a86f8f7847056dd08766aab5d Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 13:42:08 +0100 Subject: Checking and suppressing warnings revealed by higher level of optimisation and building from mps.c on freebsd. Copied from Perforce Change: 179195 ServerID: perforce.ravenbrook.com --- mps/code/mpsi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mps/code') diff --git a/mps/code/mpsi.c b/mps/code/mpsi.c index a4ea84f5574..aa60a7ed70b 100644 --- a/mps/code/mpsi.c +++ b/mps/code/mpsi.c @@ -1237,7 +1237,7 @@ mps_res_t mps_sac_fill(mps_addr_t *p_o, mps_sac_t mps_sac, size_t size, { SAC sac = SACOfExternalSAC((ExternalSAC)mps_sac); Arena arena; - Addr p; + Addr p = NULL; /* suppress "may be used uninitialized" */ Res res; AVER(p_o != NULL); -- cgit v1.2.1 From 9236590ff07d51e6ba1109ff29054e41dbd0cdf4 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 13:47:41 +0100 Subject: Fixing up reformed variety build on 64-bit freebsd. Copied from Perforce Change: 179196 ServerID: perforce.ravenbrook.com --- mps/code/fri6gc.gmk | 2 +- mps/code/mps.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'mps/code') diff --git a/mps/code/fri6gc.gmk b/mps/code/fri6gc.gmk index 081e0cff43b..383197430a2 100644 --- a/mps/code/fri6gc.gmk +++ b/mps/code/fri6gc.gmk @@ -12,7 +12,7 @@ LIBS = -lm -pthread include gc.gmk -CFLAGSCOMPILER := $(subst -pedantic,,$(CFLAGSCOMPILER)) +CFLAGSCOMPILER := $(CFLAGSCOMPILER) -Wno-strict-aliasing CFLAGSDEBUG = -O -g3 CFLAGSOPT = -O3 -g3 diff --git a/mps/code/mps.c b/mps/code/mps.c index cf967507816..0cdb6c8c650 100644 --- a/mps/code/mps.c +++ b/mps/code/mps.c @@ -116,7 +116,7 @@ #elif defined(MPS_PF_FRI3GC) #include "lockix.c" /* Posix locks */ -#include "thix.c" /* FreeBSD on 32-bit Intel threading */ +#include "thix.c" /* Posix threading */ #include "pthrdext.c" /* Posix thread extensions */ #include "vmix.c" /* Posix virtual memory */ #include "protix.c" /* Posix protection */ @@ -126,6 +126,21 @@ #include "span.c" /* generic stack probe */ #include "ssixi3.c" /* Posix on 32-bit Intel stack scan */ +/* FreeBSD on 64-bit Intel built with GCC */ + +#elif defined(MPS_PF_FRI6GC) + +#include "lockix.c" /* Posix locks */ +#include "thix.c" /* Posix threading */ +#include "pthrdext.c" /* Posix thread extensions */ +#include "vmix.c" /* Posix virtual memory */ +#include "protix.c" /* Posix protection */ +#include "protsgix.c" /* Posix signal handling */ +#include "prmcan.c" /* generic mutator context */ +#include "prmci6fr.c" /* 32-bit Intel for FreeBSD mutator context */ +#include "span.c" /* generic stack probe */ +#include "ssixi6.c" /* Posix on 32-bit Intel stack scan */ + /* Linux on 32-bit Intel with GCC */ #elif defined(MPS_PF_LII3GC) -- cgit v1.2.1 From 15fc448c3566df26057b32df34a95aa9bfaf9e38 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 14:45:43 +0100 Subject: Resolving fixmes. Removing test on check level in critical path asserts in cool variety, as they had no measurable impact. Copied from Perforce Change: 179199 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index d5209cf7945..0c621cfcfc6 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -83,10 +83,10 @@ * checking level is required -- where recompilation or relinking is * undesirable or impossible. * - * FIXME: Should also allow the check level variable to come from an + * TODO: Should also allow the check level variable to come from an * environment variable. * - * FIXME: CheckLevelDEEP asserts on arena creation with bootstrapping + * TODO: CheckLevelDEEP asserts on arena creation with bootstrapping * problems. It clearly hasn't been tried for a while. RB 2012-09-01 */ @@ -134,19 +134,14 @@ extern unsigned CheckLevel; #if defined(AVER_AND_CHECK_ALL) -/* FIXME: Find out whether these tests on checklevel have any performance - impact and remove them if possible. */ - #define AVER_CRITICAL(cond) \ BEGIN \ - if (CHECKLEVEL != CheckLevelMINIMAL) \ - ASSERT(cond, #cond); \ + ASSERT(cond, #cond); \ END #define AVERT_CRITICAL(type, val) \ BEGIN \ - if (CHECKLEVEL != CheckLevelMINIMAL) \ - ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ + ASSERT(type ## Check(val), "TypeCheck " #type ": " #val); \ END #else @@ -281,8 +276,8 @@ extern unsigned CheckLevel; #else /* AVER_AND_CHECK_ALL, not */ -/* FIXME: This gives comparable performance to white-hot when compiling - using mps.c and -O (to get check methods inlined), but is it a bit +/* TODO: This gives comparable performance to white-hot when compiling + using mps.c and -O3 (to get check methods inlined), but is it a bit too minimal? How much do we rely on check methods? */ #define CHECKL(cond) DISCARD(cond) -- cgit v1.2.1 From a3b6b012d7ee2f1b4623344f8b153fcabec2f02f Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 14:46:09 +0100 Subject: Resolving fixmes. Correcting untruths in . Copied from Perforce Change: 179200 ServerID: perforce.ravenbrook.com --- mps/code/config.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mps/code') diff --git a/mps/code/config.h b/mps/code/config.h index 8920274e83e..d2c93ea68f8 100644 --- a/mps/code/config.h +++ b/mps/code/config.h @@ -363,9 +363,9 @@ /* Product Configuration * - * Convert CONFIG_PROD_* defined on compiler command line into - * internal configuration parameters. See . - * FIXME: Rework . + * Deprecated, see design/config/#req.prod>. This now only contains the + * configuration used by the former "MPS" product, which is now the only + * product. */ #define MPS_PROD_STRING "mps" -- cgit v1.2.1 From d3d7860572e1d7d17850634bc4c46da23afc98a2 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 14:48:51 +0100 Subject: Removing unnecessary definition of _reentrant on freebsd. cc -dm -e reveals that this is not set by -pthread, and inspection of headers reveals no effect. checked on freebsd 7 and 9. Copied from Perforce Change: 179201 ServerID: perforce.ravenbrook.com --- mps/code/mpstd.h | 8 -------- 1 file changed, 8 deletions(-) (limited to 'mps/code') diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h index a7b1783edc8..1725639691f 100644 --- a/mps/code/mpstd.h +++ b/mps/code/mpstd.h @@ -234,10 +234,6 @@ #define MPS_WORD_SHIFT 5 #define MPS_PF_ALIGN 4 -/* FIXME: What is this for? Clues at - Discover whether it's still necessary and if so, document why. */ -#define _REENTRANT - #elif defined(__FreeBSD__) && defined (__x86_64__) && defined (__GNUC__) #if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_FRI6GC) @@ -254,10 +250,6 @@ #define MPS_WORD_SHIFT 6 #define MPS_PF_ALIGN 8 -/* FIXME: What is this for? Clues at - Discover whether it's still necessary and if so, document why. */ -#define _REENTRANT - #else #error "Unable to detect target platform" -- cgit v1.2.1 From 8d7373042cf0f3eac7c07c03638e1d6d26a9f7f4 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Mon, 3 Sep 2012 14:49:25 +0100 Subject: Making note about low priority fixme task. Copied from Perforce Change: 179202 ServerID: perforce.ravenbrook.com --- mps/code/global.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'mps/code') diff --git a/mps/code/global.c b/mps/code/global.c index 1997efbba6d..db0e6800dea 100644 --- a/mps/code/global.c +++ b/mps/code/global.c @@ -462,8 +462,9 @@ Ring GlobalsRememberedSummaryRing(Globals global) /* ArenaEnter -- enter the state where you can look at the arena */ -/* FIXME: Do we want to support the THREAD_SINGLE and PROTECTION_NONE build - configs? If so, how will we test them? RB 2012-09-02 */ +/* TODO: The THREAD_SINGLE and PROTECTION_NONE build configs aren't regularly + tested, though they might well be useful for embedded custom targets. + Should test them. RB 2012-09-03 */ #if defined(THREAD_SINGLE) && defined(PROTECTION_NONE) void (ArenaEnter)(Arena arena) -- cgit v1.2.1 From b6e7805b6f870b335c678e2406869933a5cac43b Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 5 Sep 2012 18:20:38 +0100 Subject: Downgrading hot optimisation from -o3 to -o2. DL feels uneasy about -O3 until we're certain we're not breaking aliasing rules. Copied from Perforce Change: 179278 ServerID: perforce.ravenbrook.com --- mps/code/check.h | 2 +- mps/code/fri6gc.gmk | 2 -- mps/code/gc.gmk | 2 +- mps/code/mps.xcodeproj/project.pbxproj | 4 ++-- 4 files changed, 4 insertions(+), 6 deletions(-) (limited to 'mps/code') diff --git a/mps/code/check.h b/mps/code/check.h index 0c621cfcfc6..5b99ea2dca8 100644 --- a/mps/code/check.h +++ b/mps/code/check.h @@ -277,7 +277,7 @@ extern unsigned CheckLevel; #else /* AVER_AND_CHECK_ALL, not */ /* TODO: This gives comparable performance to white-hot when compiling - using mps.c and -O3 (to get check methods inlined), but is it a bit + using mps.c and -O2 (to get check methods inlined), but is it a bit too minimal? How much do we rely on check methods? */ #define CHECKL(cond) DISCARD(cond) diff --git a/mps/code/fri6gc.gmk b/mps/code/fri6gc.gmk index 383197430a2..814d0a7e204 100644 --- a/mps/code/fri6gc.gmk +++ b/mps/code/fri6gc.gmk @@ -13,8 +13,6 @@ LIBS = -lm -pthread include gc.gmk CFLAGSCOMPILER := $(CFLAGSCOMPILER) -Wno-strict-aliasing -CFLAGSDEBUG = -O -g3 -CFLAGSOPT = -O3 -g3 CC = cc diff --git a/mps/code/gc.gmk b/mps/code/gc.gmk index 9b0a087afee..5eb513176f4 100644 --- a/mps/code/gc.gmk +++ b/mps/code/gc.gmk @@ -14,7 +14,7 @@ CFLAGSCOMPILER := \ -Winline -Waggregate-return -Wnested-externs \ -Wcast-qual -Wshadow CFLAGSDEBUG = -O -g3 -CFLAGSOPT = -O3 -g3 +CFLAGSOPT = -O2 -g3 # gcc -MM generates a dependency line of the form: # thing.o : thing.c ... diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj index 24287ac9b98..20610876843 100644 --- a/mps/code/mps.xcodeproj/project.pbxproj +++ b/mps/code/mps.xcodeproj/project.pbxproj @@ -3119,7 +3119,7 @@ CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; - GCC_OPTIMIZATION_LEVEL = 3; + GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_WE; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; @@ -3534,7 +3534,7 @@ CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; - GCC_OPTIMIZATION_LEVEL = 3; + GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = CONFIG_VAR_HOT; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; -- cgit v1.2.1