On 21 jan 2013, at 08:30, David Holmes <david.hol...@oracle.com> wrote:

> On 21/01/2013 5:11 PM, Staffan Larsen wrote:
>> A webrev is here: http://cr.openjdk.java.net/~sla/8005278/webrev.00/
> 
> Thanks.
> 
> So based on the error message the actual fix here seems to be in
> 
> src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
> 
> where we add:
> 
> nonstatic_field(CompactibleFreeListSpace,_dictionary,FreeBlockDictionary<FreeChunk>*)

Yes, this is the real fix (as well as the fix in 
agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java).

> So I am still missing why we needed to change the BinaryTreeDictionary
> to AFLBinaryTreeDictionary ? I'm unclear whether the typedef in the
> vmStructs needs to be used in the SA code or whether the SA should just
> be referring to the real type ??

Not clear to me, either. The initialize() code in BinaryTreeDictionary.java said

  43       Type type = db.lookupType("BinaryTreeDictionary");
  44       totalSizeField = type.getCIntegerField("_totalSize");

This needs to change to 

  43       Type type = db.lookupType("AFLBinaryTreeDictionary");
  44       totalSizeField = type.getCIntegerField("_total_size");

For the code to work. I think the change on line 43 is because 
vmStructs_cms.hpp declares "AFLBinaryTreeDictionary" as the exported type name:

           declare_type(AFLBinaryTreeDictionary, FreeBlockDictionary<FreeChunk>)

vmStructs could have exported "BinaryTreeDictionary<FreeChunk, 
AdaptiveFreeList>" as the type name. 

In any case BinaryTreeDictionary.java can only be one of the templated 
instances of BinaryTreeDictionary<> in the C++ code (at least that is how I 
think it works - are there other examples of how templated classes are handled 
in SA?). Thus, renaming it to the name of the exported type name makes sense.

Thanks,
/Staffan


> 
> Assuming we do need to rename this then hg mv should be used (which
> seems not to be the case in the webrev)
> 
> This problem seems to have been introduced with
> 
> changeset:   3767:685df3c6f84b
> parent:      3758:d0e7716b179e
> user:        jmasa
> date:        Tue Sep 18 23:35:42 2012 -0700
> summary:     7045397: NPG: Add freelists to class loader arenas.
> 
> So I've added Jon to the cc list.
> 
> Thanks,
> David
> 
>> /Staffan
>> 
>> On 21 jan 2013, at 05:00, David Holmes<david.hol...@oracle.com>  wrote:
>> 
>>> On 21/01/2013 1:06 PM, 云达 wrote:
>>>> Actually I just changed "BinaryTreeDictionary" to 
>>>> "AFLBinaryTreeDictionary", since there is no definition of 
>>>> BinaryTreeDictionary in the latest hotspot: 
>>>> http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/file/b5f6465019f6/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
>>>>  , which has been changed to AFLBinaryTreeDictionary. So the code in SA 
>>>> has to change too. The bug is already found here: 
>>>> http://bugs.sun.com/view_bug.do?bug_id=8005278
>>> 
>>> I'm still missing some pieces here. We have:
>>> 
>>> typedef BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>
>>> AFLBinaryTreeDictionary;
>>> 
>>> in vmStructs and we have:
>>> 
>>> ./share/vm/memory/binaryTreeDictionary.hpp/cpp
>>> 
>>> and we have:
>>> 
>>> src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java
>>> 
>>> So I'm unclear what is causing the problem here.
>>> 
>>> Staffan: can you generate a webrev from this patch to make the context
>>> clearer please?
>>> 
>>> Thanks,
>>> David
>>> 
>>>> Regards,
>>>> Yunda
>>>> -----邮件原件-----
>>>> 发件人: David Holmes [mailto:david.hol...@oracle.com]
>>>> 发送时间: 2013年1月21日 10:45
>>>> 收件人: 云达
>>>> 抄送: Staffan Larsen; serviceability-dev@openjdk.java.net
>>>> 主题: Re: 答复: Errors when use "universe" command in CLHSDB
>>>> 
>>>> I couldn't quite understand the problem and fix from the patch. Why do we 
>>>> need to add AFLBinaryTreeDictionary ??
>>>> 
>>>> Thanks,
>>>> David
>>>> 
>>>> On 21/01/2013 12:03 PM, 云达 wrote:
>>>>> Thanks for your review again. Could someone with Reviewer status help
>>>>> me with this? Thanks in advance!
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Yunda
>>>>> 
>>>>> *发件人:*Staffan Larsen [mailto:staffan.lar...@oracle.com]
>>>>> *发送时间:*2013年1月18日20:14
>>>>> *收件人:*云达
>>>>> *抄送:*daniel.daughe...@oracle.com; serviceability-dev@openjdk.java.net
>>>>> *主题:*Re: Errors when use "universe" command in CLHSDB
>>>>> 
>>>>> This patch applied cleanly.
>>>>> 
>>>>> I can sponsor this fix, but we still need a review from someone with
>>>>> Reviewer status. Once we have that, I can push the change.
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> /Staffan
>>>>> 
>>>>> On 18 jan 2013, at 11:22, 云达<yunda....@taobao.com
>>>>> <mailto:yunda....@taobao.com>>   wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> OK. I diffed it with the
>>>>> latesthttp://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/and I hope it
>>>>> works. Thanks for the review!
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Yunda
>>>>> 
>>>>> *发件人:*Staffan Larsen [mailto:staffan.lar...@oracle.com
>>>>> <http://oracle.com>]
>>>>> *发送时间:*2013年1月18日17:07
>>>>> *收件人:*云达
>>>>> *抄送:*daniel.daughe...@oracle.com<mailto:daniel.daughe...@oracle.com>;
>>>>> serviceability-dev@openjdk.java.net
>>>>> <mailto:serviceability-dev@openjdk.java.net>
>>>>> *主题:*Re: Errors when use "universe" command in CLHSDB
>>>>> 
>>>>> Yunda,
>>>>> 
>>>>> I think this fixes http://bugs.sun.com/view_bug.do?bug_id=8005278
>>>>> 
>>>>> The changes look good to me. I couldn't apply the patch to the code
>>>>> cleanly, however (see below). Perhaps the patch was broken in email?
>>>>> Can you regenerate the patch and include it as a zipped attachment?
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> /Staffan
>>>>> 
>>>>> file
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary
>>>>> .java
>>>>> already exists
>>>>> 1 out of 1 hunks FAILED -- saving rejects to file
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary
>>>>> .java.rej
>>>>> patching file
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac
>>>>> e.java
>>>>> Hunk #1 FAILED at 116
>>>>> Hunk #2 FAILED at 40
>>>>> 2 out of 2 hunks FAILED -- saving rejects to file
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac
>>>>> e.java.rej
>>>>> patching file
>>>>> src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
>>>>> Hunk #1 succeeded at 45 with fuzz 2 (offset 0 lines).
>>>>> patch failed, unable to continue (try -v) patch failed, rejects left
>>>>> in working dir
>>>>> 
>>>>> On 18 jan 2013, at 04:54,云达<yunda....@taobao.com
>>>>> <mailto:yunda....@taobao.com>>   wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> Thanks Dan!
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Yunda
>>>>> 
>>>>> *发件人:*Daniel D. Daugherty [mailto:daniel.daughe...@oracle.com
>>>>> <http://oracle.com>]
>>>>> *发送时间:*2013年1月18日10:46
>>>>> *收件人:*云达;serviceability-dev@openjdk.java.net
>>>>> <mailto:serviceability-dev@openjdk.java.net>
>>>>> *主题:*Re: Errors when use "universe" command in CLHSDB
>>>>> 
>>>>> Yunda,
>>>>> 
>>>>> The Serviceability Agent is maintained by the Serviceability team.
>>>>> I'm adding that alias to this e-mail thread (and Bcc'ing the Runtime
>>>>> alias.
>>>>> 
>>>>> Dan
>>>>> 
>>>>> On 1/17/13 7:42 PM,云达wrote:
>>>>> 
>>>>>     Hi all,
>>>>> 
>>>>>     This is Yunda<yunda....@taobao.com>
>>>>>     <mailto:yunda....@taobao.com>from Alibaba Group(with OCA).
>>>>> 
>>>>>     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.
>>>>> 
>>>>>     hsdb>   universe
>>>>> 
>>>>>     Heap Parameters:
>>>>> 
>>>>>     Gen 0: eden
>>>>>     [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space
>>>>>     capacity = 140640256, 2.000007736049627 used
>>>>> 
>>>>>     from [0x0000000611820000,0x0000000611820000,0x00000006128e0000)
>>>>>     space capacity = 17563648, 0.0 used
>>>>> 
>>>>>     to [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space
>>>>>     capacity = 17563648, 0.0 usedInvocations: 0
>>>>> 
>>>>>     Gen 1: concurrent mark-sweep generation
>>>>> 
>>>>>     Exception in thread "main" java.lang.ExceptionInInitializerError
>>>>> 
>>>>>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>> Method)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructo
>>>>> rAccessorImpl.java:57)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCo
>>>>> nstructorAccessorImpl.java:45)
>>>>> 
>>>>>     at java.lang.reflect.Constructor.newInstance(Constructor.java:395)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.runtime.VMObjectFactory.newObject(VMObjectFactory.java
>>>>> :58)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.cmsSpace(Concurre
>>>>> ntMarkSweepGeneration.java:55)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(Concurren
>>>>> tMarkSweepGeneration.java:79)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java:
>>>>> 139)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:
>>>>> 1897)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:
>>>>> 1867)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747)
>>>>> 
>>>>>     at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91)
>>>>> 
>>>>>     at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35)
>>>>> 
>>>>>     Caused by: java.lang.RuntimeException: field "_dictionary" not found
>>>>>     in type CompactibleFreeListSpace
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:183)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:190)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:194)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.types.basic.BasicType.getAddressField(BasicType.java:2
>>>>> 82)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.initialize(Compactible
>>>>> FreeListSpace.java:69)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.access$000(Compactible
>>>>> FreeListSpace.java:35)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace$1.update(CompactibleFr
>>>>> eeListSpace.java:55)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.<clinit>(CompactibleFr
>>>>> eeListSpace.java:53)
>>>>> 
>>>>>     ... 14 more
>>>>> 
>>>>>     hsdb>   universe
>>>>> 
>>>>>     Heap Parameters:
>>>>> 
>>>>>     Gen 0: eden
>>>>>     [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space
>>>>>     capacity = 140640256, 2.000007736049627 used
>>>>> 
>>>>>     from [0x0000000611820000,0x0000000611820000,0x00000006128e0000)
>>>>>     space capacity = 17563648, 0.0 used
>>>>> 
>>>>>     to [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space
>>>>>     capacity = 17563648, 0.0 usedInvocations: 0
>>>>> 
>>>>>     Gen 1: concurrent mark-sweep generation
>>>>> 
>>>>>     free-list-space[ 0x000000064cb90000 , 0x0000000661ad0000 ) Exception
>>>>>     in thread "main" java.lang.ExceptionInInitializerError
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.free(CompactibleFreeLi
>>>>> stSpace.java:112)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.used(CompactibleFreeLi
>>>>> stSpace.java:95)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.printOn(CompactibleFre
>>>>> eListSpace.java:137)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(Concurren
>>>>> tMarkSweepGeneration.java:79)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java:
>>>>> 139)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:
>>>>> 1897)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:
>>>>> 1867)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747)
>>>>> 
>>>>>     at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91)
>>>>> 
>>>>>     at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35)
>>>>> 
>>>>>     Caused by: java.lang.RuntimeException: No type named "FreeList" in
>>>>>     database
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeData
>>>>> Base.java:80)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.HotSpotTypeDataBase.lookupType(HotSpotTypeDataBase.jav
>>>>> a:134)
>>>>> 
>>>>>     at
>>>>> 
>>>>> sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeData
>>>>> Base.java:74)
>>>>> 
>>>>>     at sun.jvm.hotspot.memory.FreeList.initialize(FreeList.java:44)
>>>>> 
>>>>>     at sun.jvm.hotspot.memory.FreeList.access$000(FreeList.java:34)
>>>>> 
>>>>>     at sun.jvm.hotspot.memory.FreeList$1.update(FreeList.java:38)
>>>>> 
>>>>>     at
>>>>> sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402)
>>>>> 
>>>>>     at sun.jvm.hotspot.memory.FreeList.<clinit>(FreeList.java:36)
>>>>> 
>>>>>     ... 11 more
>>>>> 
>>>>>     So I made a patch to fix them and now “universe” command works well.
>>>>>     Could someone help to review the patch below?
>>>>> 
>>>>>     diff -r b14da2e6f2dc -r 8652e04889a4
>>>>> 
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary
>>>>> .java
>>>>> 
>>>>>     --- /dev/null Thu Jan 01 00:00:00 1970 +0000
>>>>> 
>>>>>     +++
>>>>>     
>>>>> b/agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary.java
>>>>>     Fri Jan 18 09:56:06 2013 +0800
>>>>> 
>>>>>     @@ -0,0 +1,59 @@
>>>>> 
>>>>>     +/*
>>>>> 
>>>>>     + * @(#)AFLBinaryTreeDictionary.java
>>>>> 
>>>>>     + * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All
>>>>>     rights reserved.
>>>>> 
>>>>>     + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>>>> 
>>>>>     + *
>>>>> 
>>>>>     + * This code is free software; you can redistribute it and/or
>>>>> modify it
>>>>> 
>>>>>     + * under the terms of the GNU General Public License version 2
>>>>> only, as
>>>>> 
>>>>>     + * published by the Free Software Foundation.
>>>>> 
>>>>>     + *
>>>>> 
>>>>>     + * This code is distributed in the hope that it will be useful, but
>>>>>     WITHOUT
>>>>> 
>>>>>     + * ANY WARRANTY; without even the implied warranty of
>>>>>     MERCHANTABILITY or
>>>>> 
>>>>>     + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
>>>>> License
>>>>> 
>>>>>     + * version 2 for more details (a copy is included in the LICENSE
>>>>>     file that
>>>>> 
>>>>>     + * accompanied this code).
>>>>> 
>>>>>     + *
>>>>> 
>>>>>     + * You should have received a copy of the GNU General Public
>>>>>     License version
>>>>> 
>>>>>     + * 2 along with this work; if not, write to the Free Software
>>>>>     Foundation,
>>>>> 
>>>>>     + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
>>>>> 
>>>>>     + *
>>>>> 
>>>>>     + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA
>>>>>     94065 USA
>>>>> 
>>>>>     + * or visitwww.oracle.com<http://www.oracle.com>if you need
>>>>>     additional information or have any
>>>>> 
>>>>>     + * questions.
>>>>> 
>>>>>     + *
>>>>> 
>>>>>     + */
>>>>> 
>>>>>     +
>>>>> 
>>>>>     +package sun.jvm.hotspot.memory;
>>>>> 
>>>>>     +
>>>>> 
>>>>>     +import java.util.*;
>>>>> 
>>>>>     +import sun.jvm.hotspot.debugger.*;
>>>>> 
>>>>>     +import sun.jvm.hotspot.types.*;
>>>>> 
>>>>>     +import sun.jvm.hotspot.runtime.*;
>>>>> 
>>>>>     +
>>>>> 
>>>>>     +public class AFLBinaryTreeDictionary extends VMObject {
>>>>> 
>>>>>     + static {
>>>>> 
>>>>>     + VM.registerVMInitializedObserver(new Observer() {
>>>>> 
>>>>>     + public void update(Observable o, Object data) {
>>>>> 
>>>>>     + initialize(VM.getVM().getTypeDataBase());
>>>>> 
>>>>>     + }
>>>>> 
>>>>>     + });
>>>>> 
>>>>>     + }
>>>>> 
>>>>>     +
>>>>> 
>>>>>     + private static synchronized void initialize(TypeDataBase db) {
>>>>> 
>>>>>     + Type type = db.lookupType("AFLBinaryTreeDictionary");
>>>>> 
>>>>>     + totalSizeField = type.getCIntegerField("_total_size");
>>>>> 
>>>>>     + }
>>>>> 
>>>>>     +
>>>>> 
>>>>>     + // Fields
>>>>> 
>>>>>     + private static CIntegerField totalSizeField;
>>>>> 
>>>>>     +
>>>>> 
>>>>>     + // Accessors
>>>>> 
>>>>>     + public long size() {
>>>>> 
>>>>>     + return totalSizeField.getValue(addr);
>>>>> 
>>>>>     + }
>>>>> 
>>>>>     +
>>>>> 
>>>>>     + // Constructor
>>>>> 
>>>>>     + public AFLBinaryTreeDictionary(Address addr) {
>>>>> 
>>>>>     + super(addr);
>>>>> 
>>>>>     + }
>>>>> 
>>>>>     +}
>>>>> 
>>>>>     diff -r b14da2e6f2dc -r 8652e04889a4
>>>>> 
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.ja
>>>>> va
>>>>> 
>>>>>     ---
>>>>>     
>>>>> a/agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java
>>>>>     Thu Jan 17 13:40:31 2013 -0500
>>>>> 
>>>>>     +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
>>>>> 
>>>>>     @@ -1,59 +0,0 @@
>>>>> 
>>>>>     -/*
>>>>> 
>>>>>     - * @(#)BinaryTreeDictionary.java
>>>>> 
>>>>>     - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All
>>>>>     rights reserved.
>>>>> 
>>>>>     - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>>>> 
>>>>>     - *
>>>>> 
>>>>>     - * This code is free software; you can redistribute it and/or
>>>>> modify it
>>>>> 
>>>>>     - * under the terms of the GNU General Public License version 2
>>>>> only, as
>>>>> 
>>>>>     - * published by the Free Software Foundation.
>>>>> 
>>>>>     - *
>>>>> 
>>>>>     - * This code is distributed in the hope that it will be useful, but
>>>>>     WITHOUT
>>>>> 
>>>>>     - * ANY WARRANTY; without even the implied warranty of
>>>>>     MERCHANTABILITY or
>>>>> 
>>>>>     - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
>>>>> License
>>>>> 
>>>>>     - * version 2 for more details (a copy is included in the LICENSE
>>>>>     file that
>>>>> 
>>>>>     - * accompanied this code).
>>>>> 
>>>>>     - *
>>>>> 
>>>>>     - * You should have received a copy of the GNU General Public
>>>>>     License version
>>>>> 
>>>>>     - * 2 along with this work; if not, write to the Free Software
>>>>>     Foundation,
>>>>> 
>>>>>     - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
>>>>> 
>>>>>     - *
>>>>> 
>>>>>     - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA
>>>>>     94065 USA
>>>>> 
>>>>>     - * or visitwww.oracle.com<http://www.oracle.com>if you need
>>>>>     additional information or have any
>>>>> 
>>>>>     - * questions.
>>>>> 
>>>>>     - *
>>>>> 
>>>>>     - */
>>>>> 
>>>>>     -
>>>>> 
>>>>>     -package sun.jvm.hotspot.memory;
>>>>> 
>>>>>     -
>>>>> 
>>>>>     -import java.util.*;
>>>>> 
>>>>>     -import sun.jvm.hotspot.debugger.*;
>>>>> 
>>>>>     -import sun.jvm.hotspot.types.*;
>>>>> 
>>>>>     -import sun.jvm.hotspot.runtime.*;
>>>>> 
>>>>>     -
>>>>> 
>>>>>     -public class BinaryTreeDictionary extends VMObject {
>>>>> 
>>>>>     - static {
>>>>> 
>>>>>     - VM.registerVMInitializedObserver(new Observer() {
>>>>> 
>>>>>     - public void update(Observable o, Object data) {
>>>>> 
>>>>>     - initialize(VM.getVM().getTypeDataBase());
>>>>> 
>>>>>     - }
>>>>> 
>>>>>     - });
>>>>> 
>>>>>     - }
>>>>> 
>>>>>     -
>>>>> 
>>>>>     - private static synchronized void initialize(TypeDataBase db) {
>>>>> 
>>>>>     - Type type = db.lookupType("BinaryTreeDictionary");
>>>>> 
>>>>>     - totalSizeField = type.getCIntegerField("_totalSize");
>>>>> 
>>>>>     - }
>>>>> 
>>>>>     -
>>>>> 
>>>>>     - // Fields
>>>>> 
>>>>>     - private static CIntegerField totalSizeField;
>>>>> 
>>>>>     -
>>>>> 
>>>>>     - // Accessors
>>>>> 
>>>>>     - public long size() {
>>>>> 
>>>>>     - return totalSizeField.getValue(addr);
>>>>> 
>>>>>     - }
>>>>> 
>>>>>     -
>>>>> 
>>>>>     - // Constructor
>>>>> 
>>>>>     - public BinaryTreeDictionary(Address addr) {
>>>>> 
>>>>>     - super(addr);
>>>>> 
>>>>>     - }
>>>>> 
>>>>>     -}
>>>>> 
>>>>>     diff -r b14da2e6f2dc -r 8652e04889a4
>>>>> 
>>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac
>>>>> e.java
>>>>> 
>>>>>     ---
>>>>>     
>>>>> a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java
>>>>>     Thu Jan 17 13:40:31 2013 -0500
>>>>> 
>>>>>     +++
>>>>>     
>>>>> b/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java
>>>>>     Fri Jan 18 09:56:06 2013 +0800
>>>>> 
>>>>>     @@ -117,7 +117,7 @@
>>>>> 
>>>>>     }
>>>>> 
>>>>>     // large block
>>>>> 
>>>>>     - BinaryTreeDictionary bfbd = (BinaryTreeDictionary)
>>>>>     VMObjectFactory.newObject(BinaryTreeDictionary.class,
>>>>> 
>>>>>     + AFLBinaryTreeDictionary bfbd = (AFLBinaryTreeDictionary)
>>>>>     VMObjectFactory.newObject(AFLBinaryTreeDictionary.class,
>>>>> 
>>>>>     dictionaryField.getValue(addr));
>>>>> 
>>>>>     size += bfbd.size();
>>>>> 
>>>>>     diff -r b14da2e6f2dc -r 8652e04889a4
>>>>>     agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java
>>>>> 
>>>>>     --- a/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java
>>>>>     Thu Jan 17 13:40:31 2013 -0500
>>>>> 
>>>>>     +++ b/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java
>>>>>     Fri Jan 18 09:56:06 2013 +0800
>>>>> 
>>>>>     @@ -41,7 +41,7 @@
>>>>> 
>>>>>     }
>>>>> 
>>>>>     private static synchronized void initialize(TypeDataBase db) {
>>>>> 
>>>>>     - Type type = db.lookupType("FreeList");
>>>>> 
>>>>>     + Type type = db.lookupType("FreeList<FreeChunk>");
>>>>> 
>>>>>     sizeField = type.getCIntegerField("_size");
>>>>> 
>>>>>     countField = type.getCIntegerField("_count");
>>>>> 
>>>>>     headerSize = type.getSize();
>>>>> 
>>>>>     diff -r b14da2e6f2dc -r 8652e04889a4
>>>>> 
>>>>> src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
>>>>> 
>>>>>     ---
>>>>>     a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
>>>>>     Thu Jan 17 13:40:31 2013 -0500
>>>>> 
>>>>>     +++
>>>>>     b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp
>>>>>     Fri Jan 18 09:56:06 2013 +0800
>>>>> 
>>>>>     @@ -43,7 +43,8 @@
>>>>> 
>>>>>     nonstatic_field(LinearAllocBlock, _word_size, size_t) \
>>>>> 
>>>>>     nonstatic_field(AFLBinaryTreeDictionary, _total_size, size_t) \
>>>>> 
>>>>>     nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0],
>>>>>     FreeList<FreeChunk>) \
>>>>> 
>>>>>     - nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock,
>>>>>     LinearAllocBlock)
>>>>> 
>>>>>     + nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock,
>>>>>     LinearAllocBlock) \
>>>>> 
>>>>>     + nonstatic_field(CompactibleFreeListSpace, _dictionary,
>>>>>     FreeBlockDictionary<FreeChunk>*)
>>>>> 
>>>>>     #define VM_TYPES_CMS(declare_type, \
>>>>> 
>>>>>     Regards,
>>>>> 
>>>>>     Yunda
>>>>> 
>>>>> 
>>>>> ----------------------------------------------------------------------
>>>>> --
>>>>> 
>>>>> 
>>>>>     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.
>>>>> 
>>>>>     本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件
>>>>>     人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或
>>>>>     透露本邮件之内容。谢谢。
>>>>> 
>>>>> ----------------------------------------------------------------------
>>>>> --
>>>>> 
>>>>> 
>>>>> 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.
>>>>> 
>>>>> 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,
>>>>> 请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮
>>>>> 件之内容。谢谢。
>>>>> 
>>>>> <tmp.zip>
>>>>> 
>>>> 
>>>> ________________________________
>>>> 
>>>> 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.
>>>> 
>>>> 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮件之内容。谢谢。
>> 

Reply via email to