<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
@font-face
        {font-family:宋体}
@font-face
        {font-family:宋体}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:"\@宋体"}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";
        color:black}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
p.msochpdefault, li.msochpdefault, div.msochpdefault
        {margin-right:0cm;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Calibri","sans-serif";
        color:black}
span.emailstyle17
        {font-family:"Calibri","sans-serif";
        color:windowtext}
span.EmailStyle19
        {font-family:"Calibri","sans-serif";
        color:#1F497D}
.MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:72.0pt 90.0pt 72.0pt 90.0pt}
div.WordSection1
        {}
-->
</style>
</head>
<body bgcolor="white" lang="ZH-CN" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Yes and Yumin has already considered my fix and made a webrev:
<a href="http://cr.openjdk.java.net/~minqi/8005278/">http://cr.openjdk.java.net/~minqi/8005278/</a> which has been reviewed by several people. I think it can be pushed soon.</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Regards,</span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Yunda</span></p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left"><b><span style="font-size:10.0pt; font-family:宋体; color:windowtext">发件人<span lang="EN-US">:</span></span></b><span lang="EN-US" style="font-size:10.0pt; font-family:宋体; color:windowtext"> Tao Mao [mailto:tao.mao@oracle.com]
<br>
</span><b><span style="font-size:10.0pt; font-family:宋体; color:windowtext">发送时间<span lang="EN-US">:</span></span></b><span lang="EN-US" style="font-size:10.0pt; font-family:宋体; color:windowtext"> 2013</span><span style="font-size:10.0pt; font-family:宋体; color:windowtext">年<span lang="EN-US">1</span>月<span lang="EN-US">25</span>日<span lang="EN-US">
 9:32<br>
</span><b>收件人<span lang="EN-US">:</span></b><span lang="EN-US"> </span>云达<span lang="EN-US"><br>
</span><b>抄送<span lang="EN-US">:</span></b><span lang="EN-US"> hotspot-runtime-dev@openjdk.java.net<br>
</span><b>主题<span lang="EN-US">:</span></b><span lang="EN-US"> Re: Errors when use &quot;universe&quot; command in CLHSDB</span></span></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US">&nbsp;</span></p>
<div>
<p class="MsoNormal"><span lang="EN-US">Hi Yunda,<br>
<br>
Is this related to CR 8005278?<br>
<br>
Thanks.<br>
Tao<br>
<br>
On 1/17/13 6:42 PM, </span><span style="font-family:宋体">云达</span><span lang="EN-US"> wrote:</span></p>
</div>
<blockquote style="margin-top:5.0pt; margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span lang="EN-US">Hi all,</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">This is Yunda <a href="mailto:yunda.mly@taobao.com">
&lt;yunda.mly@taobao.com&gt;</a> from Alibaba Group(with OCA).</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">When I used CLHSDB( java -classpath .:$JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB) I found two errors below(the second error occurred after I made some fix). It seemed that some code about CMS in SA didn’t change
 accordingly. </span></p>
<p class="MsoNormal"><span lang="EN-US">hsdb&gt; universe</span></p>
<p class="MsoNormal"><span lang="EN-US">Heap Parameters:</span></p>
<p class="MsoNormal"><span lang="EN-US">Gen 0:&nbsp;&nbsp; eden [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space capacity = 140640256, 2.000007736049627 used</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; from [0x0000000611820000,0x0000000611820000,0x00000006128e0000) space capacity = 17563648, 0.0 used</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; to&nbsp;&nbsp; [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space capacity = 17563648, 0.0 usedInvocations: 0</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Gen 1: concurrent mark-sweep generation</span></p>
<p class="MsoNormal"><span lang="EN-US">Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.reflect.Constructor.newInstance(Constructor.java:395)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.runtime.VMObjectFactory.newObject(VMObjectFactory.java:58)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.cmsSpace(ConcurrentMarkSweepGeneration.java:55)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(ConcurrentMarkSweepGeneration.java:79)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java:139)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:1897)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:1867)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35)</span></p>
<p class="MsoNormal"><span lang="EN-US">Caused by: java.lang.RuntimeException: field &quot;_dictionary&quot; not found in type CompactibleFreeListSpace</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:183)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:190)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:194)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicType.getAddressField(BasicType.java:282)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.initialize(CompactibleFreeListSpace.java:69)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.access$000(CompactibleFreeListSpace.java:35)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace$1.update(CompactibleFreeListSpace.java:55)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.&lt;clinit&gt;(CompactibleFreeListSpace.java:53)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... 14 more</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">hsdb&gt; universe</span></p>
<p class="MsoNormal"><span lang="EN-US">Heap Parameters:</span></p>
<p class="MsoNormal"><span lang="EN-US">Gen 0:&nbsp;&nbsp; eden [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space capacity = 140640256, 2.000007736049627 used</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; from [0x0000000611820000,0x0000000611820000,0x00000006128e0000) space capacity = 17563648, 0.0 used</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; to&nbsp;&nbsp; [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space capacity = 17563648, 0.0 usedInvocations: 0</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Gen 1: concurrent mark-sweep generation</span></p>
<p class="MsoNormal"><span lang="EN-US">free-list-space[ 0x000000064cb90000 , 0x0000000661ad0000 ) Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.free(CompactibleFreeListSpace.java:112)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.used(CompactibleFreeListSpace.java:95)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.CompactibleFreeListSpace.printOn(CompactibleFreeListSpace.java:137)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(ConcurrentMarkSweepGeneration.java:79)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java:139)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:1897)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:1867)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35)</span></p>
<p class="MsoNormal"><span lang="EN-US">Caused by: java.lang.RuntimeException: No type named &quot;FreeList&quot; in database</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeDataBase.java:80)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.HotSpotTypeDataBase.lookupType(HotSpotTypeDataBase.java:134)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeDataBase.java:74)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.FreeList.initialize(FreeList.java:44)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.FreeList.access$000(FreeList.java:34)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.FreeList$1.update(FreeList.java:38)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.jvm.hotspot.memory.FreeList.&lt;clinit&gt;(FreeList.java:36)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... 11 more</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">So I made a patch to fix them and now “universe” command works well. Could someone help to review the patch below?
</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">diff -r b14da2e6f2dc -r 8652e04889a4 agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary.java</span></p>
<p class="MsoNormal"><span lang="EN-US">--- /dev/null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thu Jan 01 00:00:00 1970 &#43;0000</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; b/agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary.java&nbsp;&nbsp; Fri Jan 18 09:56:06 2013 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">@@ -0,0 &#43;1,59 @@</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;/*</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * @(#)AFLBinaryTreeDictionary.java</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; *</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * This code is free software; you can redistribute it and/or modify it</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * under the terms of the GNU General Public License version 2 only, as</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * published by the Free Software Foundation.</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; *</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * This code is distributed in the hope that it will be useful, but WITHOUT</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the GNU General Public License</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * version 2 for more details (a copy is included in the LICENSE file that</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * accompanied this code).</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; *</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * You should have received a copy of the GNU General Public License version</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * 2 along with this work; if not, write to the Free Software Foundation,</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; *</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * or visit <a href="http://www.oracle.com">
www.oracle.com</a> if you need additional information or have any</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; * questions.</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; *</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; */</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;package sun.jvm.hotspot.memory;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;import java.util.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;import sun.jvm.hotspot.debugger.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;import sun.jvm.hotspot.types.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;import sun.jvm.hotspot.runtime.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;public class AFLBinaryTreeDictionary extends VMObject {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; static {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VM.registerVMInitializedObserver(new Observer() {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void update(Observable o, Object data) {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initialize(VM.getVM().getTypeDataBase());</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; private static synchronized void initialize(TypeDataBase db) {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type type = db.lookupType(&quot;AFLBinaryTreeDictionary&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalSizeField = type.getCIntegerField(&quot;_total_size&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; // Fields</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; private static CIntegerField totalSizeField;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; // Accessors</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; public long size() {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return totalSizeField.getValue(addr);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; // Constructor</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; public AFLBinaryTreeDictionary(Address addr) {</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(addr);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;}</span></p>
<p class="MsoNormal"><span lang="EN-US">diff -r b14da2e6f2dc -r 8652e04889a4 agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java</span></p>
<p class="MsoNormal"><span lang="EN-US">--- a/agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java&nbsp;&nbsp; Thu Jan 17 13:40:31 2013 -0500</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; /dev/null&nbsp;&nbsp; Thu Jan 01 00:00:00 1970 &#43;0000</span></p>
<p class="MsoNormal"><span lang="EN-US">@@ -1,59 &#43;0,0 @@</span></p>
<p class="MsoNormal"><span lang="EN-US">-/*</span></p>
<p class="MsoNormal"><span lang="EN-US">- * @(#)BinaryTreeDictionary.java</span></p>
<p class="MsoNormal"><span lang="EN-US">- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.</span></p>
<p class="MsoNormal"><span lang="EN-US">- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.</span></p>
<p class="MsoNormal"><span lang="EN-US">- *</span></p>
<p class="MsoNormal"><span lang="EN-US">- * This code is free software; you can redistribute it and/or modify it</span></p>
<p class="MsoNormal"><span lang="EN-US">- * under the terms of the GNU General Public License version 2 only, as</span></p>
<p class="MsoNormal"><span lang="EN-US">- * published by the Free Software Foundation.</span></p>
<p class="MsoNormal"><span lang="EN-US">- *</span></p>
<p class="MsoNormal"><span lang="EN-US">- * This code is distributed in the hope that it will be useful, but WITHOUT</span></p>
<p class="MsoNormal"><span lang="EN-US">- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span></p>
<p class="MsoNormal"><span lang="EN-US">- * FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the GNU General Public License</span></p>
<p class="MsoNormal"><span lang="EN-US">- * version 2 for more details (a copy is included in the LICENSE file that</span></p>
<p class="MsoNormal"><span lang="EN-US">- * accompanied this code).</span></p>
<p class="MsoNormal"><span lang="EN-US">- *</span></p>
<p class="MsoNormal"><span lang="EN-US">- * You should have received a copy of the GNU General Public License version</span></p>
<p class="MsoNormal"><span lang="EN-US">- * 2 along with this work; if not, write to the Free Software Foundation,</span></p>
<p class="MsoNormal"><span lang="EN-US">- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.</span></p>
<p class="MsoNormal"><span lang="EN-US">- *</span></p>
<p class="MsoNormal"><span lang="EN-US">- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA</span></p>
<p class="MsoNormal"><span lang="EN-US">- * or visit <a href="http://www.oracle.com">
www.oracle.com</a> if you need additional information or have any</span></p>
<p class="MsoNormal"><span lang="EN-US">- * questions.</span></p>
<p class="MsoNormal"><span lang="EN-US">- *</span></p>
<p class="MsoNormal"><span lang="EN-US">- */</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-package sun.jvm.hotspot.memory;</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-import java.util.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">-import sun.jvm.hotspot.debugger.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">-import sun.jvm.hotspot.types.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">-import sun.jvm.hotspot.runtime.*;</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-public class BinaryTreeDictionary extends VMObject {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; static {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VM.registerVMInitializedObserver(new Observer() {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void update(Observable o, Object data) {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initialize(VM.getVM().getTypeDataBase());</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; private static synchronized void initialize(TypeDataBase db) {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type type = db.lookupType(&quot;BinaryTreeDictionary&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalSizeField = type.getCIntegerField(&quot;_totalSize&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; // Fields</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; private static CIntegerField totalSizeField;</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; // Accessors</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; public long size() {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return totalSizeField.getValue(addr);</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">-</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; // Constructor</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; public BinaryTreeDictionary(Address addr) {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(addr);</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">-}</span></p>
<p class="MsoNormal"><span lang="EN-US">diff -r b14da2e6f2dc -r 8652e04889a4 agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java</span></p>
<p class="MsoNormal"><span lang="EN-US">--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java&nbsp; Thu Jan 17 13:40:31 2013 -0500</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; b/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fri Jan 18 09:56:06 2013 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">@@ -117,7 &#43;117,7 @@</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// large block</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BinaryTreeDictionary bfbd = (BinaryTreeDictionary) VMObjectFactory.newObject(BinaryTreeDictionary.class,</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AFLBinaryTreeDictionary bfbd = (AFLBinaryTreeDictionary) VMObjectFactory.newObject(AFLBinaryTreeDictionary.class,</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dictionaryField.getValue(addr));</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size &#43;= bfbd.size();</span></p>
<p class="MsoNormal"><span lang="EN-US">diff -r b14da2e6f2dc -r 8652e04889a4 agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java</span></p>
<p class="MsoNormal"><span lang="EN-US">--- a/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thu Jan 17 13:40:31 2013 -0500</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; b/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fri Jan 18 09:56:06 2013 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">@@ -41,7 &#43;41,7 @@</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;private static synchronized void initialize(TypeDataBase db) {</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type type = db.lookupType(&quot;FreeList&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type type = db.lookupType(&quot;FreeList&lt;FreeChunk&gt;&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeField = type.getCIntegerField(&quot;_size&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; countField = type.getCIntegerField(&quot;_count&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headerSize = type.getSize();</span></p>
<p class="MsoNormal"><span lang="EN-US">diff -r b14da2e6f2dc -r 8652e04889a4 src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp</span></p>
<p class="MsoNormal"><span lang="EN-US">--- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp&nbsp; Thu Jan 17 13:40:31 2013 -0500</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&#43;&#43; b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fri Jan 18 09:56:06 2013 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">@@ -43,7 &#43;43,8 @@</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp; nonstatic_field(LinearAllocBlock,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;_word_size,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size_t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp; nonstatic_field(AFLBinaryTreeDictionary,&nbsp;&nbsp;&nbsp;&nbsp; _total_size,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size_t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp; nonstatic_field(CompactibleFreeListSpace,&nbsp;&nbsp;&nbsp; _indexedFreeList[0],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeList&lt;FreeChunk&gt;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p>
<p class="MsoNormal"><span lang="EN-US">-&nbsp; nonstatic_field(CompactibleFreeListSpace,&nbsp;&nbsp;&nbsp; _smallLinearAllocBlock,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinearAllocBlock)</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp; nonstatic_field(CompactibleFreeListSpace,&nbsp;&nbsp;&nbsp; _smallLinearAllocBlock,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinearAllocBlock)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp; nonstatic_field(CompactibleFreeListSpace,&nbsp;&nbsp;&nbsp; _dictionary,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeBlockDictionary&lt;FreeChunk&gt;*)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;#define VM_TYPES_CMS(declare_type,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">Regards,</span></p>
<p class="MsoNormal"><span lang="EN-US">Yunda</span></p>
</div>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US" style="font-size:12.0pt; font-family:宋体">&nbsp;</span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-size:12.0pt; font-family:宋体">
<hr size="2" width="100%" align="center">
</span></div>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US" style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray"><br>
This email (including any attachments) is confidential and may be legally privileged. If you received this email in error, please delete it immediately and do not copy it or use it for any purpose or disclose its contents to any other person. Thank you.<br>
<br>
</span><span style="font-size:7.5pt; font-family:宋体; color:gray">本电邮</span><span lang="EN-US" style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray">(</span><span style="font-size:7.5pt; font-family:宋体; color:gray">包括任何附件</span><span lang="EN-US" style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray">)</span><span style="font-size:7.5pt; font-family:宋体; color:gray">可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其</span><span style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray">
</span><span style="font-size:7.5pt; font-family:宋体; color:gray">他用途、或透露本邮件之内容。谢谢。</span><span lang="EN-US" style="font-size:12.0pt; font-family:宋体"></span></p>
</blockquote>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US" style="font-size:12.0pt; font-family:宋体">&nbsp;</span></p>
</div>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
This email (including any attachments) is confidential and may be legally privileged. If you received this email in error, please delete it immediately and do not copy it or use it for any purpose or disclose its contents to any other person. Thank you.<br>
<br>
本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮件之内容。谢谢。<br>
</font>
</body>
</html>