annotate make/windows/makefiles/compile.make @ 364:919e7959392a

6742641: G1: NullPointerException during GCOld Summary: An update buffer is not processed correctly, which causes roots into the collection set not to be scanned and, hence, for the heap to be corrupted. The cause is that an object is accessed after it has been explicitly deleted, which causes a race. Reviewed-by: jcoomes, ysr
author tonyp
date Mon, 22 Sep 2008 09:56:49 -0400
parents d1605aabd0a1
children 3c07cda72b7d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 #
196
d1605aabd0a1 6719955: Update copyright year
xdono
parents: 91
diff changeset
2 # Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 #
a61af66fc99e Initial load
duke
parents:
diff changeset
5 # This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 # under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 # published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 #
a61af66fc99e Initial load
duke
parents:
diff changeset
9 # This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 # version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 # accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 #
a61af66fc99e Initial load
duke
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 # 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 #
a61af66fc99e Initial load
duke
parents:
diff changeset
19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 # CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 # have any questions.
a61af66fc99e Initial load
duke
parents:
diff changeset
22 #
a61af66fc99e Initial load
duke
parents:
diff changeset
23 #
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 # Generic compiler settings
a61af66fc99e Initial load
duke
parents:
diff changeset
26 CPP=cl.exe
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 # CPP Flags: (these vary slightly from VC6->VS2003->VS2005 compilers)
a61af66fc99e Initial load
duke
parents:
diff changeset
29 # /nologo Supress copyright message at every cl.exe startup
a61af66fc99e Initial load
duke
parents:
diff changeset
30 # /W3 Warning level 3
a61af66fc99e Initial load
duke
parents:
diff changeset
31 # /Zi Include debugging information
a61af66fc99e Initial load
duke
parents:
diff changeset
32 # /WX Treat any warning error as a fatal error
a61af66fc99e Initial load
duke
parents:
diff changeset
33 # /MD Use dynamic multi-threaded runtime (msvcrt.dll or msvc*71.dll)
a61af66fc99e Initial load
duke
parents:
diff changeset
34 # /MTd Use static multi-threaded runtime debug versions
a61af66fc99e Initial load
duke
parents:
diff changeset
35 # /O1 Optimize for size (/Os), skips /Oi
a61af66fc99e Initial load
duke
parents:
diff changeset
36 # /O2 Optimize for speed (/Ot), adds /Oi to /O1
a61af66fc99e Initial load
duke
parents:
diff changeset
37 # /Ox Old "all optimizations flag" for VC6 (in /O1)
a61af66fc99e Initial load
duke
parents:
diff changeset
38 # /Oy Use frame pointer register as GP reg (in /Ox and /O1)
a61af66fc99e Initial load
duke
parents:
diff changeset
39 # /GF Merge string constants and put in read-only memory (in /O1)
a61af66fc99e Initial load
duke
parents:
diff changeset
40 # /Gy Func level link (in /O1, allows for link-time func ordering)
a61af66fc99e Initial load
duke
parents:
diff changeset
41 # /Gs Inserts stack probes (in /O1)
a61af66fc99e Initial load
duke
parents:
diff changeset
42 # /GS Inserts security stack checks in some functions (VS2005 default)
a61af66fc99e Initial load
duke
parents:
diff changeset
43 # /Oi Use intrinsics (in /O2)
a61af66fc99e Initial load
duke
parents:
diff changeset
44 # /Od Disable all optimizations
a61af66fc99e Initial load
duke
parents:
diff changeset
45 #
a61af66fc99e Initial load
duke
parents:
diff changeset
46 # NOTE: Normally following any of the above with a '-' will turn off that flag
57
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
47 #
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
48 # 6655385: For VS2003/2005 we now specify /Oy- (disable frame pointer
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
49 # omission.) This has little to no effect on performance while vastly
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
50 # improving the quality of crash log stack traces involving jvm.dll.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
51
a61af66fc99e Initial load
duke
parents:
diff changeset
52 # These are always used in all compiles
a61af66fc99e Initial load
duke
parents:
diff changeset
53 CPP_FLAGS=/nologo /W3 /WX
a61af66fc99e Initial load
duke
parents:
diff changeset
54
a61af66fc99e Initial load
duke
parents:
diff changeset
55 # Let's add debug information always too.
a61af66fc99e Initial load
duke
parents:
diff changeset
56 CPP_FLAGS=$(CPP_FLAGS) /Zi
a61af66fc99e Initial load
duke
parents:
diff changeset
57
a61af66fc99e Initial load
duke
parents:
diff changeset
58 # Based on BUILDARCH we add some flags and select the default compiler name
a61af66fc99e Initial load
duke
parents:
diff changeset
59 !if "$(BUILDARCH)" == "ia64"
a61af66fc99e Initial load
duke
parents:
diff changeset
60 MACHINE=IA64
a61af66fc99e Initial load
duke
parents:
diff changeset
61 DEFAULT_COMPILER_NAME=VS2003
a61af66fc99e Initial load
duke
parents:
diff changeset
62 CPP_FLAGS=$(CPP_FLAGS) /D "CC_INTERP" /D "_LP64" /D "IA64"
a61af66fc99e Initial load
duke
parents:
diff changeset
63 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
64
a61af66fc99e Initial load
duke
parents:
diff changeset
65 !if "$(BUILDARCH)" == "amd64"
a61af66fc99e Initial load
duke
parents:
diff changeset
66 MACHINE=AMD64
a61af66fc99e Initial load
duke
parents:
diff changeset
67 DEFAULT_COMPILER_NAME=VS2005
a61af66fc99e Initial load
duke
parents:
diff changeset
68 CPP_FLAGS=$(CPP_FLAGS) /D "_LP64" /D "AMD64"
a61af66fc99e Initial load
duke
parents:
diff changeset
69 LP64=1
a61af66fc99e Initial load
duke
parents:
diff changeset
70 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
71
a61af66fc99e Initial load
duke
parents:
diff changeset
72 !if "$(BUILDARCH)" == "i486"
a61af66fc99e Initial load
duke
parents:
diff changeset
73 MACHINE=I386
a61af66fc99e Initial load
duke
parents:
diff changeset
74 DEFAULT_COMPILER_NAME=VS2003
a61af66fc99e Initial load
duke
parents:
diff changeset
75 CPP_FLAGS=$(CPP_FLAGS) /D "IA32"
a61af66fc99e Initial load
duke
parents:
diff changeset
76 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
77
a61af66fc99e Initial load
duke
parents:
diff changeset
78 # Sanity check, this is the default if not amd64, ia64, or i486
a61af66fc99e Initial load
duke
parents:
diff changeset
79 !ifndef DEFAULT_COMPILER_NAME
a61af66fc99e Initial load
duke
parents:
diff changeset
80 CPP=ARCH_ERROR
a61af66fc99e Initial load
duke
parents:
diff changeset
81 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
82
a61af66fc99e Initial load
duke
parents:
diff changeset
83 # MSC_VER is a 4 digit number that tells us what compiler is being used, it is
a61af66fc99e Initial load
duke
parents:
diff changeset
84 # generated when the local.make file is created by the script gen_msc_ver.sh.
a61af66fc99e Initial load
duke
parents:
diff changeset
85 # If MSC_VER is set, it overrides the above default setting.
a61af66fc99e Initial load
duke
parents:
diff changeset
86 # But it should be set.
a61af66fc99e Initial load
duke
parents:
diff changeset
87 # Possible values:
a61af66fc99e Initial load
duke
parents:
diff changeset
88 # 1200 is for VC6
a61af66fc99e Initial load
duke
parents:
diff changeset
89 # 1300 and 1310 is VS2003 or VC7
a61af66fc99e Initial load
duke
parents:
diff changeset
90 # 1399 is our fake number for the VS2005 compiler that really isn't 1400
a61af66fc99e Initial load
duke
parents:
diff changeset
91 # 1400 is for VS2005
a61af66fc99e Initial load
duke
parents:
diff changeset
92 # Do not confuse this MSC_VER with the predefined macro _MSC_VER that the
a61af66fc99e Initial load
duke
parents:
diff changeset
93 # compiler provides, when MSC_VER==1399, _MSC_VER will be 1400.
a61af66fc99e Initial load
duke
parents:
diff changeset
94 # Normally they are the same, but a pre-release of the VS2005 compilers
a61af66fc99e Initial load
duke
parents:
diff changeset
95 # in the Windows 64bit Platform SDK said it was 1400 when it was really
a61af66fc99e Initial load
duke
parents:
diff changeset
96 # closer to VS2003 in terms of option spellings, so we use 1399 for that
a61af66fc99e Initial load
duke
parents:
diff changeset
97 # 1400 version that really isn't 1400.
a61af66fc99e Initial load
duke
parents:
diff changeset
98 # See the file gen_msc_ver.sh for more info.
a61af66fc99e Initial load
duke
parents:
diff changeset
99 !if "x$(MSC_VER)" == "x"
a61af66fc99e Initial load
duke
parents:
diff changeset
100 COMPILER_NAME=$(DEFAULT_COMPILER_NAME)
a61af66fc99e Initial load
duke
parents:
diff changeset
101 !else
a61af66fc99e Initial load
duke
parents:
diff changeset
102 !if "$(MSC_VER)" == "1200"
a61af66fc99e Initial load
duke
parents:
diff changeset
103 COMPILER_NAME=VC6
a61af66fc99e Initial load
duke
parents:
diff changeset
104 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
105 !if "$(MSC_VER)" == "1300"
a61af66fc99e Initial load
duke
parents:
diff changeset
106 COMPILER_NAME=VS2003
a61af66fc99e Initial load
duke
parents:
diff changeset
107 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
108 !if "$(MSC_VER)" == "1310"
a61af66fc99e Initial load
duke
parents:
diff changeset
109 COMPILER_NAME=VS2003
a61af66fc99e Initial load
duke
parents:
diff changeset
110 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
111 !if "$(MSC_VER)" == "1399"
a61af66fc99e Initial load
duke
parents:
diff changeset
112 # Compiler might say 1400, but if it's 14.00.30701, it isn't really VS2005
a61af66fc99e Initial load
duke
parents:
diff changeset
113 COMPILER_NAME=VS2003
a61af66fc99e Initial load
duke
parents:
diff changeset
114 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
115 !if "$(MSC_VER)" == "1400"
a61af66fc99e Initial load
duke
parents:
diff changeset
116 COMPILER_NAME=VS2005
a61af66fc99e Initial load
duke
parents:
diff changeset
117 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
118 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 # Add what version of the compiler we think this is to the compile line
a61af66fc99e Initial load
duke
parents:
diff changeset
121 CPP_FLAGS=$(CPP_FLAGS) /D "MSC_VER=$(MSC_VER)"
a61af66fc99e Initial load
duke
parents:
diff changeset
122
a61af66fc99e Initial load
duke
parents:
diff changeset
123 # By default, we do not want to use the debug version of the msvcrt.dll file
a61af66fc99e Initial load
duke
parents:
diff changeset
124 # but if MFC_DEBUG is defined in the environment it will be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
125 MS_RUNTIME_OPTION = /MD
a61af66fc99e Initial load
duke
parents:
diff changeset
126 !if "$(MFC_DEBUG)" == "true"
a61af66fc99e Initial load
duke
parents:
diff changeset
127 MS_RUNTIME_OPTION = /MTd /D "_DEBUG"
a61af66fc99e Initial load
duke
parents:
diff changeset
128 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
129
a61af66fc99e Initial load
duke
parents:
diff changeset
130 # Always add the _STATIC_CPPLIB flag
a61af66fc99e Initial load
duke
parents:
diff changeset
131 STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
a61af66fc99e Initial load
duke
parents:
diff changeset
132 MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION)
a61af66fc99e Initial load
duke
parents:
diff changeset
133 CPP_FLAGS=$(CPP_FLAGS) $(MS_RUNTIME_OPTION)
a61af66fc99e Initial load
duke
parents:
diff changeset
134
a61af66fc99e Initial load
duke
parents:
diff changeset
135 # How /GX option is spelled
a61af66fc99e Initial load
duke
parents:
diff changeset
136 GX_OPTION = /GX
a61af66fc99e Initial load
duke
parents:
diff changeset
137
a61af66fc99e Initial load
duke
parents:
diff changeset
138 # Optimization settings for various versions of the compilers and types of
a61af66fc99e Initial load
duke
parents:
diff changeset
139 # builds. Three basic sets of settings: product, fastdebug, and debug.
a61af66fc99e Initial load
duke
parents:
diff changeset
140 # These get added into CPP_FLAGS as needed by other makefiles.
a61af66fc99e Initial load
duke
parents:
diff changeset
141 !if "$(COMPILER_NAME)" == "VC6"
a61af66fc99e Initial load
duke
parents:
diff changeset
142 PRODUCT_OPT_OPTION = /Ox /Os /Gy /GF
a61af66fc99e Initial load
duke
parents:
diff changeset
143 FASTDEBUG_OPT_OPTION = /Ox /Os /Gy /GF
a61af66fc99e Initial load
duke
parents:
diff changeset
144 DEBUG_OPT_OPTION = /Od
a61af66fc99e Initial load
duke
parents:
diff changeset
145 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 !if "$(COMPILER_NAME)" == "VS2003"
57
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
148 PRODUCT_OPT_OPTION = /O2 /Oy-
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
149 FASTDEBUG_OPT_OPTION = /O2 /Oy-
0
a61af66fc99e Initial load
duke
parents:
diff changeset
150 DEBUG_OPT_OPTION = /Od
a61af66fc99e Initial load
duke
parents:
diff changeset
151 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
152
a61af66fc99e Initial load
duke
parents:
diff changeset
153 !if "$(COMPILER_NAME)" == "VS2005"
57
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
154 PRODUCT_OPT_OPTION = /O2 /Oy-
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
155 FASTDEBUG_OPT_OPTION = /O2 /Oy-
0
a61af66fc99e Initial load
duke
parents:
diff changeset
156 DEBUG_OPT_OPTION = /Od
a61af66fc99e Initial load
duke
parents:
diff changeset
157 GX_OPTION = /EHsc
a61af66fc99e Initial load
duke
parents:
diff changeset
158 # This VS2005 compiler has /GS as a default and requires bufferoverflowU.lib
a61af66fc99e Initial load
duke
parents:
diff changeset
159 # on the link command line, otherwise we get missing __security_check_cookie
a61af66fc99e Initial load
duke
parents:
diff changeset
160 # externals at link time. Even with /GS-, you need bufferoverflowU.lib.
a61af66fc99e Initial load
duke
parents:
diff changeset
161 # NOTE: Currently we decided to not use /GS-
a61af66fc99e Initial load
duke
parents:
diff changeset
162 BUFFEROVERFLOWLIB = bufferoverflowU.lib
a61af66fc99e Initial load
duke
parents:
diff changeset
163 LINK_FLAGS = $(LINK_FLAGS) $(BUFFEROVERFLOWLIB)
a61af66fc99e Initial load
duke
parents:
diff changeset
164 !if "$(BUILDARCH)" == "i486"
a61af66fc99e Initial load
duke
parents:
diff changeset
165 # VS2005 on x86 restricts the use of certain libc functions without this
a61af66fc99e Initial load
duke
parents:
diff changeset
166 CPP_FLAGS=$(CPP_FLAGS) /D _CRT_SECURE_NO_DEPRECATE
a61af66fc99e Initial load
duke
parents:
diff changeset
167 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
168 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
169
a61af66fc99e Initial load
duke
parents:
diff changeset
170 # Compile for space above time.
a61af66fc99e Initial load
duke
parents:
diff changeset
171 !if "$(Variant)" == "kernel"
57
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
172 PRODUCT_OPT_OPTION = /O1 /Oy-
ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs
sbohne
parents: 0
diff changeset
173 FASTDEBUG_OPT_OPTION = /O1 /Oy-
0
a61af66fc99e Initial load
duke
parents:
diff changeset
174 DEBUG_OPT_OPTION = /Od
a61af66fc99e Initial load
duke
parents:
diff changeset
175 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
176
a61af66fc99e Initial load
duke
parents:
diff changeset
177 # If NO_OPTIMIZATIONS is defined in the environment, turn everything off
a61af66fc99e Initial load
duke
parents:
diff changeset
178 !ifdef NO_OPTIMIZATIONS
a61af66fc99e Initial load
duke
parents:
diff changeset
179 PRODUCT_OPT_OPTION = $(DEBUG_OPT_OPTION)
a61af66fc99e Initial load
duke
parents:
diff changeset
180 FASTDEBUG_OPT_OPTION = $(DEBUG_OPT_OPTION)
a61af66fc99e Initial load
duke
parents:
diff changeset
181 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 # Generic linker settings
a61af66fc99e Initial load
duke
parents:
diff changeset
184 LINK=link.exe
a61af66fc99e Initial load
duke
parents:
diff changeset
185 LINK_FLAGS= $(LINK_FLAGS) kernel32.lib user32.lib gdi32.lib winspool.lib \
a61af66fc99e Initial load
duke
parents:
diff changeset
186 comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
a61af66fc99e Initial load
duke
parents:
diff changeset
187 uuid.lib Wsock32.lib winmm.lib /nologo /machine:$(MACHINE) /opt:REF \
a61af66fc99e Initial load
duke
parents:
diff changeset
188 /opt:ICF,8 /map /debug
a61af66fc99e Initial load
duke
parents:
diff changeset
189
a61af66fc99e Initial load
duke
parents:
diff changeset
190 # Resource compiler settings
a61af66fc99e Initial load
duke
parents:
diff changeset
191 RC=rc.exe
a61af66fc99e Initial load
duke
parents:
diff changeset
192 RC_FLAGS=/D "HS_VER=$(HS_VER)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
193 /D "HS_DOTVER=$(HS_DOTVER)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
194 /D "HS_BUILD_ID=$(HS_BUILD_ID)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
195 /D "JDK_VER=$(JDK_VER)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
196 /D "JDK_DOTVER=$(JDK_DOTVER)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
197 /D "HS_COMPANY=$(HS_COMPANY)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
198 /D "HS_FILEDESC=$(HS_FILEDESC)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
199 /D "HS_COPYRIGHT=$(HS_COPYRIGHT)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
200 /D "HS_FNAME=$(HS_FNAME)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
201 /D "HS_INTERNAL_NAME=$(HS_INTERNAL_NAME)" \
a61af66fc99e Initial load
duke
parents:
diff changeset
202 /D "HS_NAME=$(HS_NAME)"
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 # Need this to match the CPP_FLAGS settings
a61af66fc99e Initial load
duke
parents:
diff changeset
205 !if "$(MFC_DEBUG)" == "true"
a61af66fc99e Initial load
duke
parents:
diff changeset
206 RC_FLAGS = $(RC_FLAGS) /D "_DEBUG"
a61af66fc99e Initial load
duke
parents:
diff changeset
207 !endif
a61af66fc99e Initial load
duke
parents:
diff changeset
208