< prev index next >

src/share/vm/oops/klass.hpp

Print this page




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_OOPS_KLASS_HPP
  26 #define SHARE_VM_OOPS_KLASS_HPP
  27 
  28 #include "memory/genOopClosures.hpp"
  29 #include "memory/iterator.hpp"
  30 #include "memory/memRegion.hpp"
  31 #include "memory/specialized_oop_closures.hpp"
  32 #include "oops/klassPS.hpp"
  33 #include "oops/metadata.hpp"
  34 #include "oops/oop.hpp"
  35 #include "utilities/accessFlags.hpp"
  36 #include "utilities/macros.hpp"
  37 #if INCLUDE_ALL_GCS
  38 #include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
  39 #include "gc_implementation/g1/g1OopClosures.hpp"

  40 #include "gc_implementation/parNew/parOopClosures.hpp"
  41 #endif // INCLUDE_ALL_GCS
  42 #if INCLUDE_JFR
  43 #include "jfr/support/jfrTraceIdExtension.hpp"
  44 #endif
  45 
  46 //
  47 // A Klass provides:
  48 //  1: language level class object (method dictionary etc.)
  49 //  2: provide vm dispatch behavior for the object
  50 // Both functions are combined into one C++ class.
  51 
  52 // One reason for the oop/klass dichotomy in the implementation is
  53 // that we don't want a C++ vtbl pointer in every object.  Thus,
  54 // normal oops don't have any virtual functions.  Instead, they
  55 // forward all "virtual" functions to their klass, which does have
  56 // a vtbl and does the C++ dispatch depending on the object's
  57 // actual type.  (See oop.inline.hpp for some of the forwarding code.)
  58 // ALL FUNCTIONS IMPLEMENTING THIS DISPATCH ARE PREFIXED WITH "oop_"!
  59 




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_OOPS_KLASS_HPP
  26 #define SHARE_VM_OOPS_KLASS_HPP
  27 
  28 #include "memory/genOopClosures.hpp"
  29 #include "memory/iterator.hpp"
  30 #include "memory/memRegion.hpp"
  31 #include "memory/specialized_oop_closures.hpp"
  32 #include "oops/klassPS.hpp"
  33 #include "oops/metadata.hpp"
  34 #include "oops/oop.hpp"
  35 #include "utilities/accessFlags.hpp"
  36 #include "utilities/macros.hpp"
  37 #if INCLUDE_ALL_GCS
  38 #include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
  39 #include "gc_implementation/g1/g1OopClosures.hpp"
  40 #include "gc_implementation/shenandoah/shenandoahOopClosures.hpp"
  41 #include "gc_implementation/parNew/parOopClosures.hpp"
  42 #endif // INCLUDE_ALL_GCS
  43 #if INCLUDE_JFR
  44 #include "jfr/support/jfrTraceIdExtension.hpp"
  45 #endif
  46 
  47 //
  48 // A Klass provides:
  49 //  1: language level class object (method dictionary etc.)
  50 //  2: provide vm dispatch behavior for the object
  51 // Both functions are combined into one C++ class.
  52 
  53 // One reason for the oop/klass dichotomy in the implementation is
  54 // that we don't want a C++ vtbl pointer in every object.  Thus,
  55 // normal oops don't have any virtual functions.  Instead, they
  56 // forward all "virtual" functions to their klass, which does have
  57 // a vtbl and does the C++ dispatch depending on the object's
  58 // actual type.  (See oop.inline.hpp for some of the forwarding code.)
  59 // ALL FUNCTIONS IMPLEMENTING THIS DISPATCH ARE PREFIXED WITH "oop_"!
  60 


< prev index next >