diff src/share/vm/oops/methodDataKlass.cpp @ 4439:f7251c729b31

profiling info first try
author Christian Haeubl <christian.haeubl@oracle.com>
date Thu, 19 Jan 2012 16:29:35 -0800
parents e5383553fd4e
children 59d3d0b80975
line wrap: on
line diff
--- a/src/share/vm/oops/methodDataKlass.cpp	Tue Jan 17 20:35:49 2012 +0100
+++ b/src/share/vm/oops/methodDataKlass.cpp	Thu Jan 19 16:29:35 2012 -0800
@@ -84,6 +84,7 @@
 
   obj->follow_header();
   MarkSweep::mark_and_push(m->adr_method());
+  MarkSweep::mark_and_push(m->adr_graal_mirror());
   ResourceMark rm;
   for (ProfileData* data = m->first_data();
        m->is_valid(data);
@@ -100,6 +101,7 @@
 
   obj->follow_header(cm);
   PSParallelCompact::mark_and_push(cm, m->adr_method());
+  PSParallelCompact::mark_and_push(cm, m->adr_graal_mirror());
   ResourceMark rm;
   for (ProfileData* data = m->first_data();
        m->is_valid(data);
@@ -119,6 +121,7 @@
 
   obj->oop_iterate_header(blk);
   blk->do_oop(m->adr_method());
+  blk->do_oop(m->adr_graal_mirror());
   ResourceMark rm;
   for (ProfileData* data = m->first_data();
        m->is_valid(data);
@@ -140,6 +143,11 @@
   if (mr.contains(adr)) {
     blk->do_oop(m->adr_method());
   }
+  adr = m->adr_graal_mirror();
+  if(mr.contains(adr)) {
+    blk->do_oop(m->adr_graal_mirror());
+  }
+
   ResourceMark rm;
   for (ProfileData* data = m->first_data();
        m->is_valid(data);
@@ -158,6 +166,7 @@
 
   obj->adjust_header();
   MarkSweep::adjust_pointer(m->adr_method());
+  MarkSweep::adjust_pointer(m->adr_graal_mirror());
   ResourceMark rm;
   ProfileData* data;
   for (data = m->first_data(); m->is_valid(data); data = m->next_data(data)) {
@@ -173,6 +182,11 @@
   methodDataOop m = methodDataOop(obj);
   // This should never point into the young gen.
   assert(!PSScavenge::should_scavenge(m->adr_method()), "Sanity");
+ 
+  oop* adr = m->adr_graal_mirror();
+  if(PSScavenge::should_scavenge(adr)) {
+    pm->claim_or_forward_depth(adr);
+  }
 }
 
 int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
@@ -180,6 +194,7 @@
   methodDataOop m = methodDataOop(obj);
 
   PSParallelCompact::adjust_pointer(m->adr_method());
+  PSParallelCompact::adjust_pointer(m->adr_graal_mirror());
 
   ResourceMark rm;
   ProfileData* data;