diff src/share/vm/prims/jvmtiImpl.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents d2a62e0f25eb
children fb19af007ffc
line wrap: on
line diff
--- a/src/share/vm/prims/jvmtiImpl.hpp	Fri Aug 31 16:39:35 2012 -0700
+++ b/src/share/vm/prims/jvmtiImpl.hpp	Sat Sep 01 13:25:18 2012 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -164,17 +164,18 @@
 // A JvmtiBreakpoint describes a location (class, method, bci) to break at.
 //
 
-typedef void (methodOopDesc::*method_action)(int _bci);
+typedef void (Method::*method_action)(int _bci);
 
 class JvmtiBreakpoint : public GrowableElement {
 private:
-  methodOop             _method;
+  Method*               _method;
   int                   _bci;
   Bytecodes::Code       _orig_bytecode;
+  oop                   _class_loader;
 
 public:
   JvmtiBreakpoint();
-  JvmtiBreakpoint(methodOop m_method, jlocation location);
+  JvmtiBreakpoint(Method* m_method, jlocation location);
   bool equals(JvmtiBreakpoint& bp);
   bool lessThan(JvmtiBreakpoint &bp);
   void copy(JvmtiBreakpoint& bp);
@@ -185,13 +186,16 @@
   void clear();
   void print();
 
-  methodOop method() { return _method; }
+  Method* method() { return _method; }
 
   // GrowableElement implementation
   address getCacheValue()         { return getBcp(); }
   bool lessThan(GrowableElement* e) { Unimplemented(); return false; }
   bool equals(GrowableElement* e) { return equals((JvmtiBreakpoint&) *e); }
-  void oops_do(OopClosure* f)     { f->do_oop((oop *) &_method); }
+  void oops_do(OopClosure* f)     {
+    // Mark the method loader as live
+    f->do_oop(&_class_loader);
+  }
   GrowableElement *clone()        {
     JvmtiBreakpoint *bp = new JvmtiBreakpoint();
     bp->copy(*this);
@@ -283,7 +287,7 @@
 
   int  set(JvmtiBreakpoint& bp);
   int  clear(JvmtiBreakpoint& bp);
-  void clearall_in_class_at_safepoint(klassOop klass);
+  void clearall_in_class_at_safepoint(Klass* klass);
   void clearall();
   void gc_epilogue();
 };