aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Brooksby2012-05-22 21:27:55 +0100
committerRichard Brooksby2012-05-22 21:27:55 +0100
commitf2f702fc18e370d9367506bbf1e449e2c622618c (patch)
tree73b472c83e4f8bebc474493cbe3e208d8cae848a /mps/code
parent5dc28bfc61deeb7dca77b9d74194286aa15c330f (diff)
downloademacs-f2f702fc18e370d9367506bbf1e449e2c622618c.tar.gz
emacs-f2f702fc18e370d9367506bbf1e449e2c622618c.zip
Added single compilation unit version of mps library to allow global optimization and universal binary building. minor fixes to other sources to avoid clashing symbols.
Separated XCI3GC (gcc) from XCI3LL (clang) platforms, so that we can build both 32- and 64-bit binaries with clang. Enabled universal (multi architecture) builds. Copied from Perforce Change: 178287 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/global.c4
-rw-r--r--mps/code/mps.c151
-rw-r--r--mps/code/mps.xcodeproj/project.pbxproj208
-rw-r--r--mps/code/mpstd.h58
-rw-r--r--mps/code/shield.c6
5 files changed, 288 insertions, 139 deletions
diff --git a/mps/code/global.c b/mps/code/global.c
index a9090d00372..ede40309f4a 100644
--- a/mps/code/global.c
+++ b/mps/code/global.c
@@ -40,10 +40,6 @@ static RingStruct arenaRing; /* <design/arena/#static.ring> */
40void arenaEnterLock(Arena, int); 40void arenaEnterLock(Arena, int);
41void arenaLeaveLock(Arena, int); 41void arenaLeaveLock(Arena, int);
42 42
43/* ArenaControlPool -- get the control pool */
44
45#define ArenaControlPool(arena) MVPool(&(arena)->controlPoolStruct)
46
47 43
48/* arenaClaimRingLock, arenaReleaseRingLock -- lock/release the arena ring 44/* arenaClaimRingLock, arenaReleaseRingLock -- lock/release the arena ring
49 * 45 *
diff --git a/mps/code/mps.c b/mps/code/mps.c
new file mode 100644
index 00000000000..ae14469bda9
--- /dev/null
+++ b/mps/code/mps.c
@@ -0,0 +1,151 @@
1/* mps.c: MEMORY POOL SYSTEM ALL-IN-ONE TRANSLATION UNIT
2 *
3 * $Id$
4 * Copyright (C) 2012 Ravenbrook Limited. See end of file for license.
5 *
6 * .purpose: This file can be compiled to create the complete MPS library in
7 * a single compilation, allowing the compiler to apply global optimizations
8 * and inlining effectively. On most modern compilers this is also faster
9 * than compiling each file separately.
10 *
11 * .purpose.universal: This file also allows simple building of a Mac OS X
12 * "universal" (multiple architecture) binary when the set of source files
13 * differs by architecture. It may work for other platforms in a similar
14 * manner.
15 *
16 * .rule.simple: This file should never be more than a simple list of
17 * includes of other source code, with ifdefs for platform configuration,
18 * which closely mirror those in the makefiles.
19 */
20
21/* MPM Core */
22
23#include "mpsi.c"
24#include "mpm.c"
25#include "arenavm.c"
26#include "arenacl.c"
27#include "arena.c"
28#include "global.c"
29#include "locus.c"
30#include "tract.c"
31#include "walk.c"
32#include "reserv.c"
33#include "protocol.c"
34#include "pool.c"
35#include "poolabs.c"
36#include "trace.c"
37#include "traceanc.c"
38#include "root.c"
39#include "seg.c"
40#include "format.c"
41#include "buffer.c"
42#include "ref.c"
43#include "bt.c"
44#include "ring.c"
45#include "shield.c"
46#include "ld.c"
47#include "event.c"
48#include "sac.c"
49#include "message.c"
50#include "poolmrg.c"
51#include "poolmfs.c"
52#include "poolmv.c"
53#include "dbgpool.c"
54#include "dbgpooli.c"
55#include "boot.c"
56#include "meter.c"
57#include "splay.c"
58#include "cbs.c"
59#include "diag.c"
60#include "version.c"
61
62/* Additional pool classes */
63
64#include "poolamc.c"
65#include "poolams.c"
66#include "poolamsi.c"
67#include "poolawl.c"
68#include "poollo.c"
69#include "poolsnc.c"
70#include "pooln.c"
71#include "poolmvff.c"
72
73/* ANSI Plinth */
74
75#include "mpsliban.c"
76#include "mpsioan.c"
77
78/* Platform interface */
79
80#include "mpstd.h"
81
82#if defined(MPS_PF_XCI3LL)
83
84#include "lockix.c"
85#include "than.c"
86#include "vmix.c"
87#include "protix.c"
88#include "protsgix.c"
89#include "prmcan.c"
90#include "span.c"
91#include "ssixi3.c"
92
93#elif defined(MPS_PF_XCI6LL)
94
95#include "lockix.c"
96#include "than.c"
97#include "vmix.c"
98#include "protix.c"
99#include "protsgix.c"
100#include "prmcan.c"
101#include "span.c"
102#include "ssan.c"
103
104#else
105
106#error "Unknown platform -- can't determine platform specific parts."
107
108#endif
109
110
111
112/* C. COPYRIGHT AND LICENSE
113 *
114 * Copyright (C) 2012 Ravenbrook Limited <http://www.ravenbrook.com/>.
115 * All rights reserved. This is an open source license. Contact
116 * Ravenbrook for commercial licensing options.
117 *
118 * Redistribution and use in source and binary forms, with or without
119 * modification, are permitted provided that the following conditions are
120 * met:
121 *
122 * 1. Redistributions of source code must retain the above copyright
123 * notice, this list of conditions and the following disclaimer.
124 *
125 * 2. Redistributions in binary form must reproduce the above copyright
126 * notice, this list of conditions and the following disclaimer in the
127 * documentation and/or other materials provided with the distribution.
128 *
129 * 3. Redistributions in any form must be accompanied by information on how
130 * to obtain complete source code for this software and any accompanying
131 * software that uses this software. The source code must either be
132 * included in the distribution or be available for no more than the cost
133 * of distribution plus a nominal fee, and must be freely redistributable
134 * under reasonable conditions. For an executable file, complete source
135 * code means the source code for all modules it contains. It does not
136 * include source code for modules or files that typically accompany the
137 * major components of the operating system on which the executable file
138 * runs.
139 *
140 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
141 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
142 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
143 * PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE
144 * COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
145 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
146 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
147 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
148 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
149 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
150 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
151 */
diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj
index bcca0e8d621..8c18f9c8edb 100644
--- a/mps/code/mps.xcodeproj/project.pbxproj
+++ b/mps/code/mps.xcodeproj/project.pbxproj
@@ -12,9 +12,7 @@
12 3124CAC5156BE41700753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 12 3124CAC5156BE41700753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
13 3124CAC8156BE48D00753214 /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; }; 13 3124CAC8156BE48D00753214 /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; };
14 3124CAC9156BE48D00753214 /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; }; 14 3124CAC9156BE48D00753214 /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; };
15 3124CACB156BE4A300753214 /* poollo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACA156BE4A300753214 /* poollo.c */; };
16 3124CACD156BE4C200753214 /* fmtno.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACC156BE4C200753214 /* fmtno.c */; }; 15 3124CACD156BE4C200753214 /* fmtno.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACC156BE4C200753214 /* fmtno.c */; };
17 3124CACF156BE4CF00753214 /* poolawl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACE156BE4CF00753214 /* poolawl.c */; };
18 3124CADF156BE65900753214 /* mpsicv.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CADE156BE65900753214 /* mpsicv.c */; }; 16 3124CADF156BE65900753214 /* mpsicv.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CADE156BE65900753214 /* mpsicv.c */; };
19 3124CAE0156BE66B00753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 17 3124CAE0156BE66B00753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
20 3124CAE1156BE67000753214 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 18 3124CAE1156BE67000753214 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
@@ -30,61 +28,42 @@
30 3124CAFB156BE82000753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 28 3124CAFB156BE82000753214 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
31 3124CAFC156BE82900753214 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 29 3124CAFC156BE82900753214 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
32 3150AE53156ABA2500A6E22A /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 30 3150AE53156ABA2500A6E22A /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
33 3150AE54156ABA5000A6E22A /* mpsioan.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC70156AB56000714D05 /* mpsioan.c */; }; 31 31A47BA4156C1E130039B1C2 /* mps.c in Sources */ = {isa = PBXBuildFile; fileRef = 31A47BA3156C1E130039B1C2 /* mps.c */; };
34 3150AE55156ABA5000A6E22A /* mpsliban.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC71156AB56000714D05 /* mpsliban.c */; };
35 31EEABFF156AAFA400714D05 /* mpsi.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEABF5156AAF7C00714D05 /* mpsi.c */; };
36 31EEAC02156AB21B00714D05 /* mpm.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC01156AB21B00714D05 /* mpm.c */; };
37 31EEAC04156AB23A00714D05 /* arenavm.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC03156AB23A00714D05 /* arenavm.c */; };
38 31EEAC0F156AB27B00714D05 /* arena.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC05156AB27B00714D05 /* arena.c */; };
39 31EEAC10156AB27B00714D05 /* arenacl.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC06156AB27B00714D05 /* arenacl.c */; };
40 31EEAC11156AB27B00714D05 /* global.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC07156AB27B00714D05 /* global.c */; };
41 31EEAC12156AB27B00714D05 /* locus.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC08156AB27B00714D05 /* locus.c */; };
42 31EEAC13156AB27B00714D05 /* pool.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC09156AB27B00714D05 /* pool.c */; };
43 31EEAC14156AB27B00714D05 /* poolabs.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC0A156AB27B00714D05 /* poolabs.c */; };
44 31EEAC15156AB27B00714D05 /* protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC0B156AB27B00714D05 /* protocol.c */; };
45 31EEAC16156AB27B00714D05 /* reserv.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC0C156AB27B00714D05 /* reserv.c */; };
46 31EEAC17156AB27B00714D05 /* tract.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC0D156AB27B00714D05 /* tract.c */; };
47 31EEAC18156AB27B00714D05 /* walk.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC0E156AB27B00714D05 /* walk.c */; };
48 31EEAC20156AB2B200714D05 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC19156AB2B200714D05 /* buffer.c */; };
49 31EEAC21156AB2B200714D05 /* format.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1A156AB2B200714D05 /* format.c */; };
50 31EEAC22156AB2B200714D05 /* ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1B156AB2B200714D05 /* ref.c */; };
51 31EEAC23156AB2B200714D05 /* root.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1C156AB2B200714D05 /* root.c */; };
52 31EEAC24156AB2B200714D05 /* seg.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1D156AB2B200714D05 /* seg.c */; };
53 31EEAC25156AB2B200714D05 /* trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1E156AB2B200714D05 /* trace.c */; };
54 31EEAC26156AB2B200714D05 /* traceanc.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC1F156AB2B200714D05 /* traceanc.c */; };
55 31EEAC33156AB2F200714D05 /* bt.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC27156AB2F200714D05 /* bt.c */; };
56 31EEAC34156AB2F200714D05 /* dbgpool.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC28156AB2F200714D05 /* dbgpool.c */; };
57 31EEAC35156AB2F200714D05 /* dbgpooli.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC29156AB2F200714D05 /* dbgpooli.c */; };
58 31EEAC36156AB2F200714D05 /* event.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2A156AB2F200714D05 /* event.c */; };
59 31EEAC37156AB2F200714D05 /* ld.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2B156AB2F200714D05 /* ld.c */; };
60 31EEAC38156AB2F200714D05 /* message.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2C156AB2F200714D05 /* message.c */; };
61 31EEAC39156AB2F200714D05 /* poolmfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2D156AB2F200714D05 /* poolmfs.c */; };
62 31EEAC3A156AB2F200714D05 /* poolmrg.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2E156AB2F200714D05 /* poolmrg.c */; };
63 31EEAC3B156AB2F200714D05 /* poolmv.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC2F156AB2F200714D05 /* poolmv.c */; };
64 31EEAC3C156AB2F200714D05 /* ring.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC30156AB2F200714D05 /* ring.c */; };
65 31EEAC3D156AB2F200714D05 /* sac.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC31156AB2F200714D05 /* sac.c */; };
66 31EEAC3E156AB2F200714D05 /* shield.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC32156AB2F200714D05 /* shield.c */; };
67 31EEAC45156AB32500714D05 /* boot.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC3F156AB32500714D05 /* boot.c */; };
68 31EEAC46156AB32500714D05 /* cbs.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC40156AB32500714D05 /* cbs.c */; };
69 31EEAC47156AB32500714D05 /* diag.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC41156AB32500714D05 /* diag.c */; };
70 31EEAC48156AB32500714D05 /* meter.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC42156AB32500714D05 /* meter.c */; };
71 31EEAC49156AB32500714D05 /* splay.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC43156AB32500714D05 /* splay.c */; };
72 31EEAC4A156AB32500714D05 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC44156AB32500714D05 /* version.c */; };
73 31EEAC4D156AB3B000714D05 /* lockix.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC4C156AB3B000714D05 /* lockix.c */; };
74 31EEAC54156AB3E300714D05 /* prmcan.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC4E156AB3E300714D05 /* prmcan.c */; };
75 31EEAC55156AB3E300714D05 /* protix.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC4F156AB3E300714D05 /* protix.c */; };
76 31EEAC56156AB3E300714D05 /* protsgix.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC50156AB3E300714D05 /* protsgix.c */; };
77 31EEAC57156AB3E300714D05 /* ssan.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC51156AB3E300714D05 /* ssan.c */; };
78 31EEAC58156AB3E300714D05 /* than.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC52156AB3E300714D05 /* than.c */; };
79 31EEAC59156AB3E300714D05 /* vmix.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC53156AB3E300714D05 /* vmix.c */; };
80 31EEAC5C156AB41900714D05 /* poolamc.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC5B156AB41900714D05 /* poolamc.c */; };
81 31EEAC5E156AB43F00714D05 /* poolsnc.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC5D156AB43F00714D05 /* poolsnc.c */; };
82 31EEAC60156AB44D00714D05 /* poolmvff.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC5F156AB44D00714D05 /* poolmvff.c */; };
83 31EEAC75156AB58E00714D05 /* mpmss.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC74156AB58E00714D05 /* mpmss.c */; }; 32 31EEAC75156AB58E00714D05 /* mpmss.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC74156AB58E00714D05 /* mpmss.c */; };
84 31EEAC9F156AB73400714D05 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 33 31EEAC9F156AB73400714D05 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
85 31EEACA8156AB79800714D05 /* span.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEACA7156AB79800714D05 /* span.c */; };
86/* End PBXBuildFile section */ 34/* End PBXBuildFile section */
87 35
36/* Begin PBXContainerItemProxy section */
37 31A47BA9156C210D0039B1C2 /* PBXContainerItemProxy */ = {
38 isa = PBXContainerItemProxy;
39 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
40 proxyType = 1;
41 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
42 remoteInfo = mps;
43 };
44 31A47BAB156C21120039B1C2 /* PBXContainerItemProxy */ = {
45 isa = PBXContainerItemProxy;
46 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
47 proxyType = 1;
48 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
49 remoteInfo = mps;
50 };
51 31A47BAD156C21170039B1C2 /* PBXContainerItemProxy */ = {
52 isa = PBXContainerItemProxy;
53 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
54 proxyType = 1;
55 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
56 remoteInfo = mps;
57 };
58 31A47BAF156C211B0039B1C2 /* PBXContainerItemProxy */ = {
59 isa = PBXContainerItemProxy;
60 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
61 proxyType = 1;
62 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
63 remoteInfo = mps;
64 };
65/* End PBXContainerItemProxy section */
66
88/* Begin PBXCopyFilesBuildPhase section */ 67/* Begin PBXCopyFilesBuildPhase section */
89 3124CAB6156BE3EC00753214 /* CopyFiles */ = { 68 3124CAB6156BE3EC00753214 /* CopyFiles */ = {
90 isa = PBXCopyFilesBuildPhase; 69 isa = PBXCopyFilesBuildPhase;
@@ -137,6 +116,8 @@
137 3124CAE4156BE6D500753214 /* fmthe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fmthe.c; sourceTree = "<group>"; }; 116 3124CAE4156BE6D500753214 /* fmthe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fmthe.c; sourceTree = "<group>"; };
138 3124CAEB156BE7F300753214 /* amcss */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = amcss; sourceTree = BUILT_PRODUCTS_DIR; }; 117 3124CAEB156BE7F300753214 /* amcss */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = amcss; sourceTree = BUILT_PRODUCTS_DIR; };
139 3124CAF5156BE81100753214 /* amcss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amcss.c; sourceTree = "<group>"; }; 118 3124CAF5156BE81100753214 /* amcss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amcss.c; sourceTree = "<group>"; };
119 31A47BA3156C1E130039B1C2 /* mps.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mps.c; sourceTree = "<group>"; };
120 31A47BA5156C1E5E0039B1C2 /* ssixi3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ssixi3.c; sourceTree = "<group>"; };
140 31EEABF5156AAF7C00714D05 /* mpsi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mpsi.c; sourceTree = "<group>"; }; 121 31EEABF5156AAF7C00714D05 /* mpsi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mpsi.c; sourceTree = "<group>"; };
141 31EEABFB156AAF9D00714D05 /* libmps.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmps.a; sourceTree = BUILT_PRODUCTS_DIR; }; 122 31EEABFB156AAF9D00714D05 /* libmps.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmps.a; sourceTree = BUILT_PRODUCTS_DIR; };
142 31EEAC01156AB21B00714D05 /* mpm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mpm.c; sourceTree = "<group>"; }; 123 31EEAC01156AB21B00714D05 /* mpm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mpm.c; sourceTree = "<group>"; };
@@ -253,13 +234,38 @@
253 name = Tests; 234 name = Tests;
254 sourceTree = "<group>"; 235 sourceTree = "<group>";
255 }; 236 };
256 31EEABD8156AAE9E00714D05 = { 237 31A47BA6156C1E620039B1C2 /* I3 */ = {
257 isa = PBXGroup; 238 isa = PBXGroup;
258 children = ( 239 children = (
240 31A47BA5156C1E5E0039B1C2 /* ssixi3.c */,
241 );
242 name = I3;
243 sourceTree = "<group>";
244 };
245 31A47BA7156C1E6E0039B1C2 /* I6 */ = {
246 isa = PBXGroup;
247 children = (
248 31EEAC51156AB3E300714D05 /* ssan.c */,
249 );
250 name = I6;
251 sourceTree = "<group>";
252 };
253 31A47BA8156C1E930039B1C2 /* MPS */ = {
254 isa = PBXGroup;
255 children = (
256 31A47BA3156C1E130039B1C2 /* mps.c */,
259 31EEABF4156AAF6500714D05 /* MPM Core */, 257 31EEABF4156AAF6500714D05 /* MPM Core */,
260 31EEAC5A156AB40800714D05 /* Extra pools */, 258 31EEAC5A156AB40800714D05 /* Extra pools */,
261 31EEAC4B156AB39C00714D05 /* Platform XCI6LL */, 259 31EEAC4B156AB39C00714D05 /* Platform */,
262 31EEAC6F156AB54300714D05 /* ANSI Plinth */, 260 31EEAC6F156AB54300714D05 /* ANSI Plinth */,
261 );
262 name = MPS;
263 sourceTree = "<group>";
264 };
265 31EEABD8156AAE9E00714D05 = {
266 isa = PBXGroup;
267 children = (
268 31A47BA8156C1E930039B1C2 /* MPS */,
263 3124CAB3156BE1B700753214 /* Tests */, 269 3124CAB3156BE1B700753214 /* Tests */,
264 31EEABEF156AAF5C00714D05 /* Products */, 270 31EEABEF156AAF5C00714D05 /* Products */,
265 ); 271 );
@@ -322,19 +328,20 @@
322 name = "MPM Core"; 328 name = "MPM Core";
323 sourceTree = "<group>"; 329 sourceTree = "<group>";
324 }; 330 };
325 31EEAC4B156AB39C00714D05 /* Platform XCI6LL */ = { 331 31EEAC4B156AB39C00714D05 /* Platform */ = {
326 isa = PBXGroup; 332 isa = PBXGroup;
327 children = ( 333 children = (
334 31A47BA7156C1E6E0039B1C2 /* I6 */,
335 31A47BA6156C1E620039B1C2 /* I3 */,
328 31EEAC4C156AB3B000714D05 /* lockix.c */, 336 31EEAC4C156AB3B000714D05 /* lockix.c */,
329 31EEAC4E156AB3E300714D05 /* prmcan.c */, 337 31EEAC4E156AB3E300714D05 /* prmcan.c */,
330 31EEAC4F156AB3E300714D05 /* protix.c */, 338 31EEAC4F156AB3E300714D05 /* protix.c */,
331 31EEAC50156AB3E300714D05 /* protsgix.c */, 339 31EEAC50156AB3E300714D05 /* protsgix.c */,
332 31EEACA7156AB79800714D05 /* span.c */, 340 31EEACA7156AB79800714D05 /* span.c */,
333 31EEAC51156AB3E300714D05 /* ssan.c */,
334 31EEAC52156AB3E300714D05 /* than.c */, 341 31EEAC52156AB3E300714D05 /* than.c */,
335 31EEAC53156AB3E300714D05 /* vmix.c */, 342 31EEAC53156AB3E300714D05 /* vmix.c */,
336 ); 343 );
337 name = "Platform XCI6LL"; 344 name = Platform;
338 sourceTree = "<group>"; 345 sourceTree = "<group>";
339 }; 346 };
340 31EEAC5A156AB40800714D05 /* Extra pools */ = { 347 31EEAC5A156AB40800714D05 /* Extra pools */ = {
@@ -382,6 +389,7 @@
382 buildRules = ( 389 buildRules = (
383 ); 390 );
384 dependencies = ( 391 dependencies = (
392 31A47BAC156C21120039B1C2 /* PBXTargetDependency */,
385 ); 393 );
386 name = awlut; 394 name = awlut;
387 productName = awlut; 395 productName = awlut;
@@ -399,6 +407,7 @@
399 buildRules = ( 407 buildRules = (
400 ); 408 );
401 dependencies = ( 409 dependencies = (
410 31A47BAE156C21170039B1C2 /* PBXTargetDependency */,
402 ); 411 );
403 name = mpsicv; 412 name = mpsicv;
404 productName = mpsicv; 413 productName = mpsicv;
@@ -416,6 +425,7 @@
416 buildRules = ( 425 buildRules = (
417 ); 426 );
418 dependencies = ( 427 dependencies = (
428 31A47BB0156C211B0039B1C2 /* PBXTargetDependency */,
419 ); 429 );
420 name = amcss; 430 name = amcss;
421 productName = amcss; 431 productName = amcss;
@@ -450,6 +460,7 @@
450 buildRules = ( 460 buildRules = (
451 ); 461 );
452 dependencies = ( 462 dependencies = (
463 31A47BAA156C210D0039B1C2 /* PBXTargetDependency */,
453 ); 464 );
454 name = mpmss; 465 name = mpmss;
455 productName = mpmss; 466 productName = mpmss;
@@ -528,59 +539,7 @@
528 isa = PBXSourcesBuildPhase; 539 isa = PBXSourcesBuildPhase;
529 buildActionMask = 2147483647; 540 buildActionMask = 2147483647;
530 files = ( 541 files = (
531 31EEABFF156AAFA400714D05 /* mpsi.c in Sources */, 542 31A47BA4156C1E130039B1C2 /* mps.c in Sources */,
532 31EEAC02156AB21B00714D05 /* mpm.c in Sources */,
533 31EEAC04156AB23A00714D05 /* arenavm.c in Sources */,
534 31EEAC0F156AB27B00714D05 /* arena.c in Sources */,
535 31EEAC10156AB27B00714D05 /* arenacl.c in Sources */,
536 31EEAC11156AB27B00714D05 /* global.c in Sources */,
537 31EEAC12156AB27B00714D05 /* locus.c in Sources */,
538 31EEAC13156AB27B00714D05 /* pool.c in Sources */,
539 31EEAC14156AB27B00714D05 /* poolabs.c in Sources */,
540 31EEAC15156AB27B00714D05 /* protocol.c in Sources */,
541 31EEAC16156AB27B00714D05 /* reserv.c in Sources */,
542 31EEAC17156AB27B00714D05 /* tract.c in Sources */,
543 31EEAC18156AB27B00714D05 /* walk.c in Sources */,
544 31EEAC20156AB2B200714D05 /* buffer.c in Sources */,
545 31EEAC21156AB2B200714D05 /* format.c in Sources */,
546 31EEAC22156AB2B200714D05 /* ref.c in Sources */,
547 31EEAC23156AB2B200714D05 /* root.c in Sources */,
548 31EEAC24156AB2B200714D05 /* seg.c in Sources */,
549 31EEAC25156AB2B200714D05 /* trace.c in Sources */,
550 31EEAC26156AB2B200714D05 /* traceanc.c in Sources */,
551 31EEAC33156AB2F200714D05 /* bt.c in Sources */,
552 31EEAC34156AB2F200714D05 /* dbgpool.c in Sources */,
553 31EEAC35156AB2F200714D05 /* dbgpooli.c in Sources */,
554 31EEAC36156AB2F200714D05 /* event.c in Sources */,
555 31EEAC37156AB2F200714D05 /* ld.c in Sources */,
556 31EEAC38156AB2F200714D05 /* message.c in Sources */,
557 31EEAC39156AB2F200714D05 /* poolmfs.c in Sources */,
558 31EEAC3A156AB2F200714D05 /* poolmrg.c in Sources */,
559 31EEAC3B156AB2F200714D05 /* poolmv.c in Sources */,
560 31EEAC3C156AB2F200714D05 /* ring.c in Sources */,
561 31EEAC3D156AB2F200714D05 /* sac.c in Sources */,
562 31EEAC3E156AB2F200714D05 /* shield.c in Sources */,
563 31EEAC45156AB32500714D05 /* boot.c in Sources */,
564 31EEAC46156AB32500714D05 /* cbs.c in Sources */,
565 31EEAC47156AB32500714D05 /* diag.c in Sources */,
566 31EEAC48156AB32500714D05 /* meter.c in Sources */,
567 31EEAC49156AB32500714D05 /* splay.c in Sources */,
568 31EEAC4A156AB32500714D05 /* version.c in Sources */,
569 31EEAC4D156AB3B000714D05 /* lockix.c in Sources */,
570 31EEAC54156AB3E300714D05 /* prmcan.c in Sources */,
571 31EEAC55156AB3E300714D05 /* protix.c in Sources */,
572 31EEAC56156AB3E300714D05 /* protsgix.c in Sources */,
573 31EEAC57156AB3E300714D05 /* ssan.c in Sources */,
574 31EEAC58156AB3E300714D05 /* than.c in Sources */,
575 31EEAC59156AB3E300714D05 /* vmix.c in Sources */,
576 31EEAC5C156AB41900714D05 /* poolamc.c in Sources */,
577 31EEAC5E156AB43F00714D05 /* poolsnc.c in Sources */,
578 31EEAC60156AB44D00714D05 /* poolmvff.c in Sources */,
579 31EEACA8156AB79800714D05 /* span.c in Sources */,
580 3150AE54156ABA5000A6E22A /* mpsioan.c in Sources */,
581 3150AE55156ABA5000A6E22A /* mpsliban.c in Sources */,
582 3124CACB156BE4A300753214 /* poollo.c in Sources */,
583 3124CACF156BE4CF00753214 /* poolawl.c in Sources */,
584 ); 543 );
585 runOnlyForDeploymentPostprocessing = 0; 544 runOnlyForDeploymentPostprocessing = 0;
586 }; 545 };
@@ -595,6 +554,29 @@
595 }; 554 };
596/* End PBXSourcesBuildPhase section */ 555/* End PBXSourcesBuildPhase section */
597 556
557/* Begin PBXTargetDependency section */
558 31A47BAA156C210D0039B1C2 /* PBXTargetDependency */ = {
559 isa = PBXTargetDependency;
560 target = 31EEABFA156AAF9D00714D05 /* mps */;
561 targetProxy = 31A47BA9156C210D0039B1C2 /* PBXContainerItemProxy */;
562 };
563 31A47BAC156C21120039B1C2 /* PBXTargetDependency */ = {
564 isa = PBXTargetDependency;
565 target = 31EEABFA156AAF9D00714D05 /* mps */;
566 targetProxy = 31A47BAB156C21120039B1C2 /* PBXContainerItemProxy */;
567 };
568 31A47BAE156C21170039B1C2 /* PBXTargetDependency */ = {
569 isa = PBXTargetDependency;
570 target = 31EEABFA156AAF9D00714D05 /* mps */;
571 targetProxy = 31A47BAD156C21170039B1C2 /* PBXContainerItemProxy */;
572 };
573 31A47BB0156C211B0039B1C2 /* PBXTargetDependency */ = {
574 isa = PBXTargetDependency;
575 target = 31EEABFA156AAF9D00714D05 /* mps */;
576 targetProxy = 31A47BAF156C211B0039B1C2 /* PBXContainerItemProxy */;
577 };
578/* End PBXTargetDependency section */
579
598/* Begin XCBuildConfiguration section */ 580/* Begin XCBuildConfiguration section */
599 3124CAC0156BE3EC00753214 /* Debug */ = { 581 3124CAC0156BE3EC00753214 /* Debug */ = {
600 isa = XCBuildConfiguration; 582 isa = XCBuildConfiguration;
@@ -698,7 +680,7 @@
698 31EEABDF156AAE9E00714D05 /* Debug */ = { 680 31EEABDF156AAE9E00714D05 /* Debug */ = {
699 isa = XCBuildConfiguration; 681 isa = XCBuildConfiguration;
700 buildSettings = { 682 buildSettings = {
701 ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 683 ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
702 CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; 684 CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
703 CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; 685 CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
704 GCC_C_LANGUAGE_STANDARD = ansi; 686 GCC_C_LANGUAGE_STANDARD = ansi;
@@ -752,7 +734,7 @@
752 31EEABE0156AAE9E00714D05 /* Release */ = { 734 31EEABE0156AAE9E00714D05 /* Release */ = {
753 isa = XCBuildConfiguration; 735 isa = XCBuildConfiguration;
754 buildSettings = { 736 buildSettings = {
755 ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 737 ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
756 CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; 738 CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
757 CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; 739 CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
758 GCC_C_LANGUAGE_STANDARD = ansi; 740 GCC_C_LANGUAGE_STANDARD = ansi;
diff --git a/mps/code/mpstd.h b/mps/code/mpstd.h
index edf7ec8d933..c53fbe31989 100644
--- a/mps/code/mpstd.h
+++ b/mps/code/mpstd.h
@@ -258,10 +258,12 @@
258/* GCC 4.0.1 (As supplied by Apple on Mac OS X 10.4.8 on an Intel Mac), 258/* GCC 4.0.1 (As supplied by Apple on Mac OS X 10.4.8 on an Intel Mac),
259 * gcc -E -dM 259 * gcc -E -dM
260 * And above for xcppgc. 260 * And above for xcppgc.
261 * Note that Clang also defines __GNUC__ since it's generally GCC compatible,
262 * but that doesn't fit our system so we exclude Clang here.
261 */ 263 */
262 264
263#elif defined(__APPLE__) && defined(__i386__) && defined(__MACH__) \ 265#elif defined(__APPLE__) && defined(__i386__) && defined(__MACH__) \
264 && defined(__GNUC__) 266 && defined(__GNUC__) && !defined(__clang__)
265#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI3GC) 267#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI3GC)
266#error "specified CONFIG_PF_... inconsistent with detected xci3gc" 268#error "specified CONFIG_PF_... inconsistent with detected xci3gc"
267#endif 269#endif
@@ -276,6 +278,42 @@
276#define MPS_WORD_SHIFT 5 278#define MPS_WORD_SHIFT 5
277#define MPS_PF_ALIGN 4 /* I'm just guessing. */ 279#define MPS_PF_ALIGN 4 /* I'm just guessing. */
278 280
281/* Apple clang version 3.1, clang -E -dM */
282
283#elif defined(__APPLE__) && defined(__i386__) && defined(__MACH__) \
284 && defined(__clang__)
285#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI3LL)
286#error "specified CONFIG_PF_... inconsistent with detected xci3ll"
287#endif
288#define MPS_PF_XCI3LL
289#define MPS_PF_STRING "xci3ll"
290#define MPS_OS_XC
291#define MPS_ARCH_I3
292#define MPS_BUILD_LL
293#define MPS_T_WORD unsigned long
294#define MPS_T_ULONGEST unsigned long
295#define MPS_WORD_WIDTH 32
296#define MPS_WORD_SHIFT 5
297#define MPS_PF_ALIGN 4 /* I'm just guessing. */
298
299/* Apple clang version 3.1, clang -E -dM */
300
301#elif defined(__APPLE__) && defined(__x86_64__) && defined(__MACH__) \
302 && defined(__clang__)
303#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI6LL)
304#error "specified CONFIG_PF_... inconsistent with detected xci6ll"
305#endif
306#define MPS_PF_XCI6LL
307#define MPS_PF_STRING "xci6ll"
308#define MPS_OS_XC
309#define MPS_ARCH_I6
310#define MPS_BUILD_LL
311#define MPS_T_WORD unsigned long
312#define MPS_T_ULONGEST unsigned long
313#define MPS_WORD_WIDTH 64
314#define MPS_WORD_SHIFT 6
315#define MPS_PF_ALIGN 8
316
279/* GCC 2.5.8, gcc -E -dM, (__SVR4 indicates Solaris) */ 317/* GCC 2.5.8, gcc -E -dM, (__SVR4 indicates Solaris) */
280 318
281#elif defined(__sun__) && defined(__sparc__) && defined(__GNUC__) \ 319#elif defined(__sun__) && defined(__sparc__) && defined(__GNUC__) \
@@ -440,24 +478,6 @@
440#define MPS_WORD_SHIFT 5 478#define MPS_WORD_SHIFT 5
441#define MPS_PF_ALIGN 4 479#define MPS_PF_ALIGN 4
442 480
443/* Apple clang version 3.1, clang -E -dM */
444
445#elif defined(__APPLE__) && defined(__x86_64__) && defined(__MACH__) \
446 && defined(__clang__)
447#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_XCI6LL)
448#error "specified CONFIG_PF_... inconsistent with detected xci6ll"
449#endif
450#define MPS_PF_XCI6LL
451#define MPS_PF_STRING "xci6ll"
452#define MPS_OS_XC
453#define MPS_ARCH_I6
454#define MPS_BUILD_LL
455#define MPS_T_WORD unsigned long
456#define MPS_T_ULONGEST unsigned long
457#define MPS_WORD_WIDTH 64
458#define MPS_WORD_SHIFT 6
459#define MPS_PF_ALIGN 8
460
461#else 481#else
462#error "Unable to detect target platform" 482#error "Unable to detect target platform"
463#endif 483#endif
diff --git a/mps/code/shield.c b/mps/code/shield.c
index d27cbcee529..dc41ba8fb59 100644
--- a/mps/code/shield.c
+++ b/mps/code/shield.c
@@ -113,7 +113,7 @@ static void protLower(Arena arena, Seg seg, AccessSet mode)
113} 113}
114 114
115 115
116static void sync(Arena arena, Seg seg) 116static void shieldSync(Arena arena, Seg seg)
117{ 117{
118 AVERT(Arena, arena); 118 AVERT(Arena, arena);
119 AVERT(Seg, seg); 119 AVERT(Seg, seg);
@@ -142,7 +142,7 @@ static void flush(Arena arena, Size i)
142 SegSetDepth(seg, SegDepth(seg) - 1); 142 SegSetDepth(seg, SegDepth(seg) - 1);
143 143
144 if (SegDepth(seg) == 0) 144 if (SegDepth(seg) == 0)
145 sync(arena, seg); 145 shieldSync(arena, seg);
146 146
147 arena->shCache[i] = NULL; 147 arena->shCache[i] = NULL;
148} 148}
@@ -163,7 +163,7 @@ static void cache(Arena arena, Seg seg)
163 return; 163 return;
164 } 164 }
165 if (ShieldCacheSIZE == 0 || !arena->suspended) 165 if (ShieldCacheSIZE == 0 || !arena->suspended)
166 sync(arena, seg); 166 shieldSync(arena, seg);
167 else { 167 else {
168 SegSetDepth(seg, SegDepth(seg) + 1); 168 SegSetDepth(seg, SegDepth(seg) + 1);
169 ++arena->shDepth; 169 ++arena->shDepth;