Pointer on clean card crosses boundary

John Rose John.Rose at Sun.COM
Wed Aug 13 11:49:53 PDT 2008

Hi Gary.

I'm not a GC person, but I'll chime in since it's often necessary for  
others (e.g., compiler people like you and me) to discover important  
system invariants.

In order of preference:

1. Find a document that already describes what you need.  The public  
home for such documents is http://wikis.sun.com/display/HotSpotInternals

2. Get someone who already knows to create such a document.  (And  
have them put it on HotSpotInternals.)

3. Go spelunking through the code and discover the invariants for  
yourself. (As you do so, add to HotSpotInternals for the next  
engineer in line.)

Although 1. and 2. are best cases, 3. is often the most practical  
choice.  I suggest working through the interpreter code (which is  
simpler than the compiler code) looking at the placement of card  
marks.  That's what I would do.

You'll notice my comments are oriented to process and not content.  I  
don't think Email is the right place to accumulate this sort of  
information.  I started a wiki page with some of what I know about GC  
marks (which is not much); please add to it:

Best wishes,
-- John

P.S.  Let me know your wiki ID and I will gladly give you author  
access to the wiki.  This goes for anybody coding in the JVM.

On Aug 13, 2008, at 1:31 AM, Gary Benson wrote:

> Currently the only places I generate card marks are in putfield and
> putstatic.  The only other place I can think of where I store an oop
> is in the implementation of new, where the klass pointer is stored in
> the new object, but I didn't think you needed one there.  Where
> exactly do you need them?  You don't need them if you store an oop in
> the stack do you?

More information about the hotspot-dev mailing list