From dfce35a35bb8bd99563cd64f2966745d2e13e0c8 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Wed, 15 May 2013 14:18:28 +0100
Subject: [PATCH 01/10] Make forward declarations of various functions
consistent with their actual declarations.
Copied from Perforce
Change: 181788
ServerID: perforce.ravenbrook.com
---
mps/code/arenavm.c | 8 ++++----
mps/code/poolamc.c | 12 ++++++------
mps/code/poolawl.c | 6 +++---
mps/code/poolmrg.c | 8 ++++----
mps/code/poolsnc.c | 8 ++++----
5 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c
index ca2188c04b1..ba2d575049e 100644
--- a/mps/code/arenavm.c
+++ b/mps/code/arenavm.c
@@ -1,7 +1,7 @@
/* arenavm.c: VIRTUAL MEMORY ARENA CLASS
*
* $Id$
- * Copyright (c) 2001 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
*
*
* DESIGN
@@ -89,8 +89,8 @@ typedef struct VMArenaStruct { /* VM arena structure */
/* Forward declarations */
static void sparePagesPurge(VMArena vmArena);
-static ArenaClass VMArenaClassGet(void);
-static ArenaClass VMNZArenaClassGet(void);
+extern ArenaClass VMArenaClassGet(void);
+extern ArenaClass VMNZArenaClassGet(void);
static void VMCompact(Arena arena, Trace trace);
@@ -1816,7 +1816,7 @@ mps_arena_class_t mps_arena_class_vmnz(void)
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2002 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
diff --git a/mps/code/poolamc.c b/mps/code/poolamc.c
index e96acb0f977..231fe9f70d8 100644
--- a/mps/code/poolamc.c
+++ b/mps/code/poolamc.c
@@ -1,7 +1,7 @@
/* poolamc.c: AUTOMATIC MOSTLY-COPYING MEMORY POOL CLASS
*
* $Id$
- * Copyright (c) 2001-2012 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
* Portions copyright (C) 2002 Global Graphics Software.
*
* .sources: .
@@ -29,9 +29,9 @@ static Bool amcSegHasNailboard(Seg seg);
static Bool AMCCheck(AMC amc);
static Res AMCFix(Pool pool, ScanState ss, Seg seg, Ref *refIO);
static Res AMCHeaderFix(Pool pool, ScanState ss, Seg seg, Ref *refIO);
-static PoolClass AMCPoolClassGet(void);
-static BufferClass amcBufClassGet(void);
-static SegClass amcSegClassGet(void);
+extern PoolClass AMCPoolClassGet(void);
+extern BufferClass amcBufClassGet(void);
+extern SegClass amcSegClassGet(void);
/* amcGenStruct -- pool AMC generation descriptor */
@@ -1741,7 +1741,7 @@ fixInPlace: /* see .Nailboard.emergency */
*
* See .
*/
-Res AMCFix(Pool pool, ScanState ss, Seg seg, Ref *refIO)
+static Res AMCFix(Pool pool, ScanState ss, Seg seg, Ref *refIO)
{
Arena arena;
AMC amc;
@@ -2528,7 +2528,7 @@ static Bool AMCCheck(AMC amc)
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2012 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
diff --git a/mps/code/poolawl.c b/mps/code/poolawl.c
index e775517a7b2..67c23c82991 100644
--- a/mps/code/poolawl.c
+++ b/mps/code/poolawl.c
@@ -1,7 +1,7 @@
/* poolawl.c: AUTOMATIC WEAK LINKED POOL CLASS
*
* $Id$
- * Copyright (c) 2001 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
*
*
* DESIGN
@@ -132,7 +132,7 @@ typedef struct AWLSegStruct {
#define AWLSeg2Seg(awlseg) ((Seg)(awlseg))
-static SegClass AWLSegClassGet(void);
+extern SegClass AWLSegClassGet(void);
static Bool AWLSegCheck(AWLSeg awlseg)
@@ -1285,7 +1285,7 @@ static Bool AWLCheck(AWL awl)
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2002 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
diff --git a/mps/code/poolmrg.c b/mps/code/poolmrg.c
index 298e5f7788f..b9e1e11e3a7 100644
--- a/mps/code/poolmrg.c
+++ b/mps/code/poolmrg.c
@@ -1,7 +1,7 @@
/* poolmrg.c: MANUAL RANK GUARDIAN POOL
*
* $Id$
- * Copyright (c) 2001 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
* Portions copyright (C) 2002 Global Graphics Software.
*
*
@@ -168,8 +168,8 @@ typedef struct MRGRefSegStruct {
/* forward declarations */
-static SegClass MRGLinkSegClassGet(void);
-static SegClass MRGRefSegClassGet(void);
+extern SegClass MRGLinkSegClassGet(void);
+extern SegClass MRGRefSegClassGet(void);
/* MRGLinkSegCheck -- check a link segment
@@ -867,7 +867,7 @@ PoolClass PoolClassMRG(void)
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2002 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
diff --git a/mps/code/poolsnc.c b/mps/code/poolsnc.c
index 4dcb7115902..f677d3a7add 100644
--- a/mps/code/poolsnc.c
+++ b/mps/code/poolsnc.c
@@ -1,7 +1,7 @@
/* poolsnc.c: STACK NO CHECKING POOL CLASS
*
* $Id$
- * Copyright (c) 2001 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
*
* DESIGN
*
@@ -47,8 +47,8 @@ typedef struct SNCStruct {
/* Forward declarations */
-static SegClass SNCSegClassGet(void);
-static BufferClass SNCBufClassGet(void);
+extern SegClass SNCSegClassGet(void);
+extern BufferClass SNCBufClassGet(void);
static Bool SNCCheck(SNC snc);
static void sncPopPartialSegChain(SNC snc, Buffer buf, Seg upTo);
@@ -698,7 +698,7 @@ static Bool SNCCheck(SNC snc)
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2002 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
From 808da8a6e7b57c41c24165d6f743c99aafff4497 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Wed, 15 May 2013 19:25:16 +0100
Subject: [PATCH 02/10] Test coverage report on os x.
Copied from Perforce
Change: 181822
ServerID: perforce.ravenbrook.com
---
mps/code/gcovfmt.py | 109 ++++++++++++++
mps/code/mps.xcodeproj/project.pbxproj | 190 ++++++++++++++++++++++++-
2 files changed, 298 insertions(+), 1 deletion(-)
create mode 100755 mps/code/gcovfmt.py
diff --git a/mps/code/gcovfmt.py b/mps/code/gcovfmt.py
new file mode 100755
index 00000000000..ac6e9c73fe6
--- /dev/null
+++ b/mps/code/gcovfmt.py
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+#
+# $Id$
+# Copyright (c) 2013 Ravenbrook Limited. See end of file for license.
+#
+# This program takes the output of gcov on standard input and writes a
+# human-readable table with a summary, to the file named on the
+# command line (or standard output if none is given). The summary line
+# is always written to standard output so that in the context of "make
+# test" where the detailed test output is being directed to a test log
+# file, the coverage summary can still be presented.
+#
+# gcov output looks like this:
+#
+# File '/project/mps/master/code/mpsi.c'
+# Lines executed:85.12% of 921
+# /project/mps/master/code/mpsi.c:creating 'mpsi.c.gcov'
+#
+# Note that we select only the .c files (there may also be output for
+# system files like signal.h with inline function definitions, and we
+# are not interested in covering them). The MPS has no inline function
+# definitions in headers.
+
+from sys import argv, stdin, stdout
+from re import match
+
+def coverage():
+ """For each .c file with coverage data, generate a triple (percent
+ coverage, file name, number of lines).
+
+ """
+ for line in stdin:
+ m1 = match(r"File '.*/([^/]+\.c)'$", line)
+ if not m1:
+ continue
+ m2 = match(r"Lines executed:(\d[0-9.]*)% of (\d+)$", next(stdin))
+ if m2:
+ yield float(m2.group(1)), m1.group(1), int(m2.group(2))
+
+def main():
+ if len(argv) >= 2:
+ out = open(argv[1], 'a')
+ else:
+ out = stdout
+ fmt1 = "{:<16s} {:<7s} {:<7s} {:<7s}\n"
+ fmt2 = "{:<16s} {:7d} {:7d} {:7.2f}\n"
+ underlines = "---------------- ------- ------- -------".split()
+ out.write(fmt1.format(*"File Lines Covered Percent".split()))
+ out.write(fmt1.format(*underlines))
+ total_lines, total_covered = 0, 0
+ for percent, file, lines in sorted(coverage()):
+ covered = int(round(lines * percent / 100))
+ total_lines += lines
+ total_covered += covered
+ out.write(fmt2.format(file, lines, covered, percent))
+ out.write(fmt1.format(*underlines))
+ if total_lines == 0:
+ total_percent = 100.0
+ else:
+ total_percent = 100.0 * total_covered / total_lines
+ summary = fmt2.format("COVERAGE TOTAL", total_lines, total_covered,
+ total_percent)
+ out.write(summary)
+ if out != stdout:
+ stdout.write(summary)
+
+if __name__ == '__main__':
+ main()
+
+
+# C. COPYRIGHT AND LICENSE
+#
+# Copyright (C) 2013 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/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj
index 375124a990f..9976cdc1844 100644
--- a/mps/code/mps.xcodeproj/project.pbxproj
+++ b/mps/code/mps.xcodeproj/project.pbxproj
@@ -2338,7 +2338,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# bttest & teletest cannot be run unattended\n# mv2test cannot be run because MV2 is broken\n# amcssth doesn't work on OS X (job001621)\nTESTCASES=\"abqtest amcss amcsshe amsss amssshe apss arenacv awlut \\\n awluthe btcv cbstest finalcv finaltest lockcov locv \\\n messtest mpmss mpsicv poolncv qs sacss segsmss steptest \\\n walkt0\"\nOUTPUT=$(mktemp /tmp/mps.log.XXXXXX)\necho \"Logging test output to $OUTPUT\"\nfor TEST in $TESTCASES; do\n TESTCASE=$TARGET_BUILD_DIR/$TEST\n printf \"\\n\\n-- Running $TESTCASE at $(date) --\\n\" >> $OUTPUT\n echo \"Running $TESTCASE\"\n $TESTCASE >> $OUTPUT || exit 1\ndone";
+ shellScript = "# bttest & teletest cannot be run unattended\n# mv2test cannot be run because MV2 is broken\n# amcssth doesn't work on OS X (job001621)\nTESTCASES=\"abqtest amcss amcsshe amsss amssshe apss arenacv awlut \\\n awluthe btcv cbstest finalcv finaltest lockcov locv \\\n messtest mpmss mpsicv poolncv qs sacss segsmss steptest \\\n walkt0\"\nOUTPUT=$(mktemp /tmp/mps.log.XXXXXX)\necho \"Logging test output to $OUTPUT\"\nfor TEST in $TESTCASES; do\n TESTCASE=$TARGET_BUILD_DIR/$TEST\n printf \"\\n\\n-- Running $TESTCASE at $(date) --\\n\" >> $OUTPUT\n echo \"Running $TEST ($CONFIGURATION)\"\n $TESTCASE >> $OUTPUT || exit 1\ndone\necho \"All tests pass.\"\n\n# Coverage\nif [ \"$CONFIGURATION\" == \"Debug\" ]; then\n (cd xc/$PROJECT.build/$CONFIGURATION/$PROJECT.build/Objects-normal/x86_64 &&\n gcov mps.c 2>>$OUTPUT) |\n python gcovfmt.py $OUTPUT\nfi";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -3062,6 +3062,8 @@
22FA177216E8D6FC0098B23F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = amcssth;
};
name = Debug;
@@ -3069,6 +3071,8 @@
22FA177316E8D6FC0098B23F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = amcssth;
};
name = Release;
@@ -3076,6 +3080,8 @@
22FA177416E8D6FC0098B23F /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = amcssth;
};
name = WE;
@@ -3084,6 +3090,8 @@
isa = XCBuildConfiguration;
buildSettings = {
GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3107,6 +3115,8 @@
2D604B9F16514B1A003AAF46 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3128,6 +3138,8 @@
3104AFBA156D357B000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3135,6 +3147,8 @@
3104AFBB156D357B000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3142,6 +3156,8 @@
3104AFD0156D35E2000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3149,6 +3165,8 @@
3104AFD1156D35E2000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3156,6 +3174,8 @@
3104AFE5156D3682000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3163,6 +3183,8 @@
3104AFE6156D3682000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3186,6 +3208,8 @@
3104B011156D38F3000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3193,6 +3217,8 @@
3104B012156D38F3000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3200,6 +3226,8 @@
3104B02A156D39D4000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3207,6 +3235,8 @@
3104B02B156D39D4000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3214,6 +3244,8 @@
3104B045156D3AD8000A585A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3221,6 +3253,8 @@
3104B046156D3AD8000A585A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3228,6 +3262,8 @@
3114A597156E913C001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3235,6 +3271,8 @@
3114A598156E913C001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3242,6 +3280,8 @@
3114A5AF156E92C0001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3249,6 +3289,8 @@
3114A5B0156E92C0001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3256,6 +3298,8 @@
3114A5C5156E9315001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3263,6 +3307,8 @@
3114A5C6156E9315001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3270,6 +3316,8 @@
3114A5DE156E93A0001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3277,6 +3325,8 @@
3114A5DF156E93A0001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3284,6 +3334,8 @@
3114A5F7156E93E7001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3291,6 +3343,8 @@
3114A5F8156E93E7001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3298,6 +3352,8 @@
3114A60D156E9430001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3305,6 +3361,8 @@
3114A60E156E9430001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3312,6 +3370,8 @@
3114A624156E9485001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3319,6 +3379,8 @@
3114A625156E9485001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3326,6 +3388,8 @@
3114A63B156E94DB001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3333,6 +3397,8 @@
3114A63C156E94DB001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3340,6 +3406,8 @@
3114A654156E9596001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3347,6 +3415,8 @@
3114A655156E9596001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3354,6 +3424,8 @@
3114A66A156E95D9001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3361,6 +3433,8 @@
3114A66B156E95D9001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3368,6 +3442,8 @@
3114A684156E9669001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3375,6 +3451,8 @@
3114A685156E9669001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3382,6 +3460,8 @@
3114A69D156E971B001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3389,6 +3469,8 @@
3114A69E156E971B001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3396,6 +3478,8 @@
3114A6B4156E9759001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3403,6 +3487,8 @@
3114A6B5156E9759001E0AA3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3410,6 +3496,8 @@
3114A6CE156E9815001E0AA3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3424,6 +3512,8 @@
3124CAC0156BE3EC00753214 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3431,6 +3521,8 @@
3124CAC1156BE3EC00753214 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3438,6 +3530,8 @@
3124CADC156BE64A00753214 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3445,6 +3539,8 @@
3124CADD156BE64A00753214 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3452,6 +3548,8 @@
3124CAF3156BE7F300753214 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3459,6 +3557,8 @@
3124CAF4156BE7F300753214 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3538,6 +3638,8 @@
318387EE15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3545,6 +3647,8 @@
318387EF15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3552,6 +3656,8 @@
318387F015DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3559,6 +3665,8 @@
318387F115DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3566,6 +3674,8 @@
318387F215DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3573,6 +3683,8 @@
318387F315DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3580,6 +3692,8 @@
318387F415DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3587,6 +3701,8 @@
318387F515DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3594,6 +3710,8 @@
318387F615DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3601,6 +3719,8 @@
318387F715DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3608,6 +3728,8 @@
318387F815DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3615,6 +3737,8 @@
318387F915DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3622,6 +3746,8 @@
318387FA15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3629,6 +3755,8 @@
318387FB15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3636,6 +3764,8 @@
318387FC15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3643,6 +3773,8 @@
318387FD15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3650,6 +3782,8 @@
318387FE15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3657,6 +3791,8 @@
318387FF15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3664,6 +3800,8 @@
3183880015DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3671,6 +3809,8 @@
3183880115DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3678,6 +3818,8 @@
3183880215DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3685,6 +3827,8 @@
3183880315DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3692,6 +3836,8 @@
3183880415DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3699,6 +3845,8 @@
3183880515DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3706,6 +3854,8 @@
3183880615DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3713,6 +3863,8 @@
3183880715DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3720,6 +3872,8 @@
3183880815DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3727,6 +3881,8 @@
3183880915DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3734,6 +3890,8 @@
3183880A15DC30CC008E4EA0 /* WE */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = WE;
@@ -3748,6 +3906,8 @@
31D60015156D3CB200337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3755,6 +3915,8 @@
31D60016156D3CB200337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3762,6 +3924,8 @@
31D6002F156D3D3F00337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3769,6 +3933,8 @@
31D60030156D3D3F00337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3776,6 +3942,8 @@
31D60046156D3EC700337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3783,6 +3951,8 @@
31D60047156D3EC700337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3790,6 +3960,8 @@
31D6005C156D3F3500337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3797,6 +3969,8 @@
31D6005D156D3F3500337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3804,6 +3978,8 @@
31D60079156D3FBC00337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3811,6 +3987,8 @@
31D6007A156D3FBC00337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3818,6 +3996,8 @@
31D60094156D402900337B26 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3825,6 +4005,8 @@
31D60095156D402900337B26 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@@ -3944,6 +4126,8 @@
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = lib;
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3961,6 +4145,8 @@
31EEAC6D156AB52600714D05 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = YES;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@@ -3968,6 +4154,8 @@
31EEAC6E156AB52600714D05 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_GENERATE_TEST_COVERAGE_FILES = NO;
+ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
From a2f7f16444e2a38e46e868451a8b571c9fe830b7 Mon Sep 17 00:00:00 2001
From: Richard Brooksby
Date: Thu, 16 May 2013 01:04:17 +0100
Subject: [PATCH 03/10] Removing obsolete note.
Copied from Perforce
Change: 181836
ServerID: perforce.ravenbrook.com
---
mps/design/config.txt | 2 --
1 file changed, 2 deletions(-)
diff --git a/mps/design/config.txt b/mps/design/config.txt
index ab640a9f205..0cfc86919f7 100644
--- a/mps/design/config.txt
+++ b/mps/design/config.txt
@@ -275,8 +275,6 @@ Publishing division of Harlequin.
Implementation
--------------
-[ Now in impl.h.config, may symbols out of date. GavinM 1997-08-07 ]
-
_`.impl`: The two implementation files `config.h`_ and `mpstd.h`_ can be
seen as preprocessor programs which "accept" build parameters and "emit"
configuration parameters (`.fig.impl`_). The build parameters are
From d4fbeed6f7b17abfbe4d33260e65d7e7fd974933 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 13:17:42 +0100
Subject: [PATCH 04/10] Eventclock has enough entropy on all the platforms we
support that we can use it to choose the random number seed.
Copied from Perforce
Change: 181855
ServerID: perforce.ravenbrook.com
---
mps/code/testlib.c | 39 ++++++++++-----------------------------
1 file changed, 10 insertions(+), 29 deletions(-)
diff --git a/mps/code/testlib.c b/mps/code/testlib.c
index be7284ea3fa..dae807b59fb 100644
--- a/mps/code/testlib.c
+++ b/mps/code/testlib.c
@@ -8,6 +8,7 @@
*/
#include "testlib.h"
+#include "clock.h" /* for EVENT_CLOCK */
#include "mps.h"
#include "misc.h" /* for NOOP */
#include
@@ -246,17 +247,15 @@ mps_addr_t rnd_addr(void)
* that's impossible.
* (2008..2010-03-22)
*
- * 3. v3 states: when autogenerated from time(), the published state
- * (printf'd) is that *after* the 10 rnds. Therefore you can get
- * the state easily, store it, re-use it, etc.
- * (New from 2010-03-22, changelist 170093)
+ * 3. v3 states: the published state is the state *after* all
+ * initialization is complete. Therefore you can easily store and
+ * re-use the published state. (From 2010-03-22, changelist
+ * 170093).
*/
void randomize(int argc, char *argv[])
{
- int i;
int n;
- unsigned long seedt;
unsigned long seed0;
if (argc > 1) {
@@ -266,29 +265,11 @@ void randomize(int argc, char *argv[])
argv[0], seed0);
rnd_state_set(seed0);
} else {
- /* time_t uses an arbitrary encoding, but hopefully the low order */
- /* 31 bits will have at least one bit changed from run to run. */
- seedt = 1 + (unsigned long)time(NULL) % (R_m - 1);
-
- /* The value returned by time() on some OSs may simply be a
- * count of seconds: therefore successive runs may start with
- * nearby seeds, possibly differing only by 1. So the first value
- * returned by rnd() may differ by only 48271. It is conceivable
- * that some tests might be able to 'spot' this pattern (for
- * example: by using the first rnd() value, mod 100M and rounded
- * to multiple of 1024K, as arena size in bytes).
- *
- * So to mix it up a bit, we do a few iterations now. How many?
- * Very roughly, 48271^2 is of the same order as 2^31, so two
- * iterations would make the characteristic difference similar to
- * the period. Hey, let's go wild and do 10.
- */
- rnd_state_set(seedt);
- for(i = 0; i < 10; i += 1) {
- (void)rnd();
- }
-
- seed0 = rnd_state();
+ /* Initialize seed based on seconds since epoch and on processor
+ * cycle count. */
+ EventClock t2;
+ EVENT_CLOCK(t2);
+ seed0 = 1 + ((unsigned long)time(NULL) + (unsigned long)t2) % (R_m - 1);
printf("%s: randomize(): choosing initial state (v3): %lu.\n",
argv[0], seed0);
rnd_state_set(seed0);
From a6550d1536fe1a0c04946af7d5800db94bb7e8bd Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 13:37:31 +0100
Subject: [PATCH 05/10] Use __builtin_readcyclecounter for event_clock if it's
available.
Copied from Perforce
Change: 181858
ServerID: perforce.ravenbrook.com
---
mps/code/clock.h | 38 ++++++++++++++++++++++++--------------
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/mps/code/clock.h b/mps/code/clock.h
index b9205f2e9be..eb28de96612 100644
--- a/mps/code/clock.h
+++ b/mps/code/clock.h
@@ -1,6 +1,6 @@
/* clock.h -- Fast clocks and timers
*
- * Copyright (c) 2001 Ravenbrook Limited. See end of file for license.
+ * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
* $Id$
*/
@@ -21,17 +21,6 @@
* RB 2012-09-11
*/
-/* Clang provides a cross-platform builtin for a fast timer, but it
- was not available on Mac OS X 10.8 until the release of XCode 4.6.
- */
-#if defined(MPS_BUILD_LL)
-
-#if __has_builtin(__builtin_readcyclecounter)
-/* TODO: use this for EVENT_CLOCK. See job003411. */
-#endif /* __has_builtin(__builtin_readcyclecounter) */
-
-#endif
-
/* Microsoft C provides an intrinsic for the Intel rdtsc instruction.
*/
#if (defined(MPS_ARCH_I3) || defined(MPS_ARCH_I6)) && defined(MPS_BUILD_MV)
@@ -104,9 +93,28 @@ typedef union EventClockUnion {
(defined(MPS_ARCH_I3) || defined(MPS_ARCH_I6)) && \
(defined(MPS_BUILD_GC) || defined(MPS_BUILD_LL))
-/* Use __extension__ to enable use of a 64-bit type on 32-bit pedantic GCC */
+/* Use __extension__ to enable use of a 64-bit type on 32-bit pedantic
+ GCC or Clang. */
__extension__ typedef unsigned long long EventClock;
+/* Clang provides a cross-platform builtin for a fast timer, but it
+ was not available on Mac OS X 10.8 until the release of XCode 4.6.
+ */
+#if defined(MPS_BUILD_LL)
+
+#if __has_builtin(__builtin_readcyclecounter)
+
+#define EVENT_CLOCK(lvalue) \
+ BEGIN \
+ (lvalue) = __builtin_readcyclecounter(); \
+ END
+
+#endif /* __has_builtin(__builtin_readcyclecounter) */
+
+#endif /* Clang */
+
+#ifndef EVENT_CLOCK
+
#define EVENT_CLOCK(lvalue) \
BEGIN \
unsigned _l, _h; \
@@ -114,6 +122,8 @@ __extension__ typedef unsigned long long EventClock;
(lvalue) = ((EventClock)_h << 32) | _l; \
END
+#endif
+
/* The __extension__ keyword doesn't work on printf formats, so we
concatenate two 32-bit hex numbers to print the 64-bit value. */
#define EVENT_CLOCK_PRINT(stream, clock) \
@@ -150,7 +160,7 @@ typedef mps_clock_t EventClock;
/* C. COPYRIGHT AND LICENSE
*
- * Copyright (C) 2001-2002 Ravenbrook Limited .
+ * Copyright (C) 2001-2013 Ravenbrook Limited .
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*
From 1bd1db03e4c6a1e73c45eeecd9d51ed2481011b7 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 13:54:36 +0100
Subject: [PATCH 06/10] Improve installation rule: don't need shell loop here.
Copied from Perforce
Change: 181860
ServerID: perforce.ravenbrook.com
---
mps/Makefile.in | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/mps/Makefile.in b/mps/Makefile.in
index b31d1fa4092..17191e574ea 100644
--- a/mps/Makefile.in
+++ b/mps/Makefile.in
@@ -1,7 +1,7 @@
# Makefile.in -- source for autoconf Makefile
#
# $Id$
-# Copyright (C) 2012 Ravenbrook Limited. See end of file for license.
+# Copyright (C) 2012-2013 Ravenbrook Limited. See end of file for license.
#
# YOU DON'T NEED AUTOCONF TO BUILD THE MPS
# This is just here for people who want or expect a configure script.
@@ -32,7 +32,7 @@ install-make-build: make-install-dirs build-via-make
$(INSTALL_DATA) code/mps*.h $(prefix)/include/
$(INSTALL_DATA) code/$(MPS_TARGET_NAME)/cool/mps.a $(prefix)/lib/libmps-debug.a
$(INSTALL_DATA) code/$(MPS_TARGET_NAME)/hot/mps.a $(prefix)/lib/libmps.a
- for PROGRAM in $(EXTRA_TARGETS); do $(INSTALL_PROGRAM) code/$(MPS_TARGET_NAME)/hot/$$PROGRAM $(prefix)/bin/$$PROGRAM; done
+ $(INSTALL_PROGRAM) $(addprefix code/$(MPS_TARGET_NAME)/hot/Release/,$(EXTRA_TARGETS)) $(prefix)/bin
build-via-xcode:
$(XCODEBUILD) -config Release
@@ -46,7 +46,7 @@ install-xcode-build: make-install-dirs build-via-xcode
$(INSTALL_DATA) code/mps*.h $(prefix)/include/
$(INSTALL_DATA) code/xc/Debug/libmps.a $(prefix)/lib/libmps-debug.a
$(INSTALL_DATA) code/xc/Release/libmps.a $(prefix)/lib/libmps.a
- for PROGRAM in $(EXTRA_TARGETS); do $(INSTALL_PROGRAM) code/xc/Release/$$PROGRAM $(prefix)/bin/$$PROGRAM; done
+ $(INSTALL_PROGRAM) $(addprefix code/xc/Release/,$(EXTRA_TARGETS)) $(prefix)/bin
Makefile: Makefile.in config.status
./config.status Makefile
From 509cf747cb5258bfdc6506e5809dbdd847d145d4 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 13:55:04 +0100
Subject: [PATCH 07/10] Downgrade warning to note.
Copied from Perforce
Change: 181861
ServerID: perforce.ravenbrook.com
---
mps/manual/source/topic/scanning.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mps/manual/source/topic/scanning.rst b/mps/manual/source/topic/scanning.rst
index b7aed248ee7..cc1c8ec8a7f 100644
--- a/mps/manual/source/topic/scanning.rst
+++ b/mps/manual/source/topic/scanning.rst
@@ -229,7 +229,7 @@ code. The MPS provides a convenience macro :c:func:`MPS_FIX12` for the
common case of calling :c:func:`MPS_FIX1` and then immediately calling
:c:func:`MPS_FIX2` if the reference is "of interest".
-.. warning::
+.. note::
Some compilers generate better code if you use
:c:func:`MPS_FIX12`, and some if you use :c:func:`MPS_FIX1` and
From b02d355e5ca316864709313ab3d9ac90ae90781f Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 15:56:27 +0100
Subject: [PATCH 08/10] Readme.txt doesn't need updating; w3build.bat no longer
exists
Copied from Perforce
Change: 181866
ServerID: perforce.ravenbrook.com
---
mps/procedure/version-create/index.html | 108 +++++++++++-------------
1 file changed, 49 insertions(+), 59 deletions(-)
diff --git a/mps/procedure/version-create/index.html b/mps/procedure/version-create/index.html
index d1405d204e3..2f8b852b310 100644
--- a/mps/procedure/version-create/index.html
+++ b/mps/procedure/version-create/index.html
@@ -49,98 +49,87 @@
-Do I need this procedure?
+2.1. Do I need this procedure?
-You might not need to create a new version. An alternative is to create a further 'point release' on the existing version. Refer to PQTCM when deciding. (Summary: am I changing the specification?).
+You might not need to create a new version. An alternative is to create a further ‘point release’ on the existing version. Refer to PQTCM when deciding. (Summary: am I changing the specification?).
-What is a version?
+2.2. What is a version?
- A version is a 'clone' of all the master source files, that then has its own evolution. A Version has these parts:
+ A version is a ‘clone’ of all the master source files, that then has its own evolution. A version has these parts:
+
+
+
+A version name, consisting of a major version number A and a minor version number BBB.
-
-
-Perforce branch, defining the mapping used to integrate from master to version. By convention, the name of the branch is "mps/version/A.BBB": note that we make the branch name exactly match the pathname of that version's sub-tree. For example:
-
- $ p4 branch -o mps/version/1.105
- ...
- //info.ravenbrook.com/project/mps/master/... //info.ravenbrook.com/project/mps/version/1.105/...
- ...
+A Perforce branch specification that defines the mapping used between the master sources and the sources on the version branch. By convention, the name of the branch is mps/version/A.BBB: note that we make the branch name exactly match the pathname of that version's sub-tree. For example:
+$ p4 branch -o mps/version/1.105
+Branch: mps/version/1.105
+
+Description:
+ Branching master sources for version 1.105.
+
+View:
+ //info.ravenbrook.com/project/mps/master/... //info.ravenbrook.com/project/mps/version/1.105/...
-- Cloned (integrated) and submitted files, in the "version/A.BBB/..." sub-tree. Usually this is a clone of the entire "master" subtree and all its files. These were created in a single change with "p4 integrate -b <branchspec>". This initial integrate is what populates the version branch with files; before that it was empty. For each of these files, Perforce reports the first action as "branch". Some files may then be further modified.
+Cloned (integrated) and submitted files, in the version/A.BBB/... sub-tree. Usually this is a clone of the entire master/... subtree and all its files. These were created in a single change by running p4 integrate -b mps/version/A.BBB. This initial integrate is what populates the version branch with files; before that it was empty. For each of these files, Perforce reports the first action as “branch”. Some files may then be further modified.
-- Origin: The point in time that the initial integrate was performed, expressed as its changelevel minus one, defines the "Origin" of the version. The Origin is the last change on the master sources that also made it into the version sources by virtue of the initial integrate command.
+Origin: The point in time that the initial integrate was performed, expressed as its changelevel minus one, defines the “Origin” of the version. This is the last change on the master sources that also made it into the version sources by virtue of the initial integrate command.
-- Entry in the table at http://info.ravenbrook.com/project/mps/version/.
-
-
+Entry in the table at //info.ravenbrook.com/project/mps/version/.
+
+
-
-0. Some files contain an MPS version-name. What version-name do the *master*
-copies of these files contain? It depends. Some contain the pseudo-version-name
-"master": you will leave these files unchanged on master, and only update them
-on the version branch (see step 6 below). Others, even in master, refer to the
-expected next version-name: you should update these files before making the
-branch. Make these files contain the expected new version-name, and/or
-information pertinent to the new version: master/readme.txt
-master/code/version.c master/code/w3build.bat
-(check the "Setup" section of
-procedure/release-build for the full list of these files) Submit these files
-before you continue.
+
-
-1. Make the branch: p4 branch mps/version/A.BBB Description: Branching master
-sources for version A.BBB. Always the whole of master:
-
-//info.ravenbrook.com/project/mps/master/... //info.ravenbrook.com/project/mps/version/A.BBB/...
+Choose the version number for the new version. Typically this has the same major version number as the previous version, and the next minor version number. Thus 1.104 is followed by 1.105. [TODO: when does the major version number change?]
-
-2. Make sure you have no unsubmitted files, and then:
-p4 integrate -b mps/version/A.BBB
+Make sure you have the new version branch mapped to your client workspace: run p4 client and check that there is a mapping for //info.ravenbrook.com/project/mps/version/A.BBB/....
-
-3. p4 submit
+In the master sources, edit code/version.c and change MPS_RELEASE to refer to the version you are about to create (using .0 for the release), and update MPSCopyrightNotice to include the current year. Submit this file to Perforce. [Note that MPS_RELEASE in this file is used to populate the release number for the Sphinx documentation: see manual/source/conf.py.]
-
-4. Determine the Origin of the new version: do p4 changes -m 5 on the master,
-and note the latest change that was in before the integrate.
-
+Determine the origin of the branch: run p4 changes -m 1 //info.ravenbrook.com/project/mps/master/... and note the output changelevel (this is called ORIGIN in the examples below).
-
-[Note: it's better to do it this way -- do the integrate from the _implicit_
-tip of the master, and then check back to see what happened -- because it's
-hard to get wrong. Also, then the integrate has the changelevel origin+1.
-Clashes with master submits could theoretically occur, and could be avoided by
-determining the origin first and specifying it to the initial integrate, but in
-practice this never happens. RHSK]
-
+Make the branch: p4 branch mps/version/A.BBB and edit the branch specification to read as follows:
-
-5. Update the table at <http://info.ravenbrook.com/project/mps/version/>.
-
+Branch: mps/version/A.BBB
-
-6. Edit Master->Version in documents that erroneously say "Master".
+Description:
+ Branching master sources for version A.BBB.
+
+View:
+ //info.ravenbrook.com/project/mps/master/... //info.ravenbrook.com/project/mps/version/A.BBB/...
+
+
+Make sure you have no unsubmitted files, and then run p4 integrate -b mps/version/A.BBB //info.ravenbrook.com/project/mps/master/...@ORIGIN and then p4 submit.
+
+Update the table at http://info.ravenbrook.com/project/mps/version/.
+
+
+Edit Master->Version in documents that erroneously say "Master".
Always edit version/A.BBB/index.html, eg. (case-sensitive):
"of the Master version" -> "of Version A.BBB"
"Master" -> "Version A.BBB"
Less importantly, edit various other files. See change 30260.
-
+
-
-7. Do an empty-integrate of this change back on to the masters, so P4 thinks
+
+Do an empty-integrate of this change back on to the masters, so P4 thinks
it's done and doesn't keep suggesting it:
p4 integrate -r -b mps/version/A.BBB <Files Edited Master->Version>
p4 resolve -ay <Files Edited Master->Version>
-
+
+
+
@@ -175,6 +164,7 @@ p4 resolve -ay <Files Edited Master->Version>
2007-07-05 RHSK Releasename now also in w3build.bat. Make sure all submitted before integ.
2008-10-29 RHSK Convert from text to html.
2010-11-06 RHSK Correctly format example of p4 branch -o mps/version/1.105
+2013-05-16 GDR readme.txt doesn’t need updating; w3build.bat no longer exists
From b74d999798c75cc578d15367caed85bebebd0f89 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 16:28:23 +0100
Subject: [PATCH 09/10] Mvt is broken at the moment (job003486) so we shouldn't
be recommending it!
Copied from Perforce
Change: 181868
ServerID: perforce.ravenbrook.com
---
mps/manual/source/pool/intro.rst | 10 +++++-----
mps/manual/source/pool/mv.rst | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/mps/manual/source/pool/intro.rst b/mps/manual/source/pool/intro.rst
index 1d0b7cec744..2346e1637bd 100644
--- a/mps/manual/source/pool/intro.rst
+++ b/mps/manual/source/pool/intro.rst
@@ -51,15 +51,15 @@ yes no none :ref:`pool-lo`
yes no exact :ref:`pool-ams`
yes no ambiguous nothing suitable
yes no weak nothing suitable
-no *any* none :ref:`pool-mvt`
-no *any* exact :ref:`pool-mvt` [1]_
-no *any* ambiguous :ref:`pool-mvt` [1]_
-no *any* weak :ref:`pool-mvt` [1]_
+no *any* none :ref:`pool-mvff`
+no *any* exact :ref:`pool-mvff` [1]_
+no *any* ambiguous :ref:`pool-mvff` [1]_
+no *any* weak :ref:`pool-mvff` [1]_
========== ====================== =========== ====================================
.. note::
- .. [1] :ref:`pool-mvt` doesn't scan for references, but you can
+ .. [1] :ref:`pool-mvff` doesn't scan for references, but you can
work around this by registering your blocks as
:term:`roots` (with the appropriate :term:`rank`) just
after they are allocated, and deregistering them just
diff --git a/mps/manual/source/pool/mv.rst b/mps/manual/source/pool/mv.rst
index c0a5f90cc39..92b43cc4b15 100644
--- a/mps/manual/source/pool/mv.rst
+++ b/mps/manual/source/pool/mv.rst
@@ -9,7 +9,7 @@ MV (Manual Variable)
.. deprecated:: starting with version 1.111.
- :ref:`pool-mvt` or :ref:`pool-mvff` should be used instead.
+ :ref:`pool-mvff` should be used instead.
**MV** is a general-purpose :term:`manually managed ` :term:`pool class` that manages :term:`blocks` of
From e9a0f85cfb783e473bd4a229030b9b976b747034 Mon Sep 17 00:00:00 2001
From: Gareth Rees
Date: Thu, 16 May 2013 16:29:11 +0100
Subject: [PATCH 10/10] Consider removing deprecated features before making a
version branch.
Copied from Perforce
Change: 181869
ServerID: perforce.ravenbrook.com
---
mps/procedure/version-create/index.html | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/mps/procedure/version-create/index.html b/mps/procedure/version-create/index.html
index 2f8b852b310..3868585a042 100644
--- a/mps/procedure/version-create/index.html
+++ b/mps/procedure/version-create/index.html
@@ -6,7 +6,7 @@
-Memory Pool System Version Create Procedure
+Memory Pool System Version Creation Procedure
@@ -27,7 +27,7 @@
-Memory Pool System Version Create Procedure
+Memory Pool System Version Creation Procedure
Richard Kistruck,
@@ -88,6 +88,8 @@ View:
+Consider each deprecated feature (by grepping the manual sources for deprecated:: sections) and decide whether it needs to be removed from the version you are about to make (and all subsequent versions). Remove features from the master sources before making the version branch.
+
Choose the version number for the new version. Typically this has the same major version number as the previous version, and the next minor version number. Thus 1.104 is followed by 1.105. [TODO: when does the major version number change?]
Make sure you have the new version branch mapped to your client workspace: run p4 client and check that there is a mapping for //info.ravenbrook.com/project/mps/version/A.BBB/....