25 #ifndef SHARE_VM_OOPS_OOP_HPP
26 #define SHARE_VM_OOPS_OOP_HPP
27
28 #include "gc/shared/specialized_oop_closures.hpp"
29 #include "memory/iterator.hpp"
30 #include "memory/memRegion.hpp"
31 #include "oops/metadata.hpp"
32 #include "utilities/macros.hpp"
33
34 // oopDesc is the top baseclass for objects classes. The {name}Desc classes describe
35 // the format of Java objects so the fields can be accessed from C++.
36 // oopDesc is abstract.
37 // (see oopHierarchy for complete oop class hierarchy)
38 //
39 // no virtual functions allowed
40
41 // store into oop with store check
42 template <class T> inline void oop_store(T* p, oop v);
43 template <class T> inline void oop_store(volatile T* p, oop v);
44
45 extern bool always_do_update_barrier;
46
47 // Forward declarations.
48 class OopClosure;
49 class ScanClosure;
50 class FastScanClosure;
51 class FilteringClosure;
52 class BarrierSet;
53 class CMSIsAliveClosure;
54
55 class PSPromotionManager;
56 class ParCompactionManager;
57
58 class oopDesc {
59 friend class VMStructs;
60 friend class JVMCIVMStructs;
61 private:
62 volatile markOop _mark;
63 union _metadata {
64 Klass* _klass;
65 narrowKlass _compressed_klass;
66 } _metadata;
|
25 #ifndef SHARE_VM_OOPS_OOP_HPP
26 #define SHARE_VM_OOPS_OOP_HPP
27
28 #include "gc/shared/specialized_oop_closures.hpp"
29 #include "memory/iterator.hpp"
30 #include "memory/memRegion.hpp"
31 #include "oops/metadata.hpp"
32 #include "utilities/macros.hpp"
33
34 // oopDesc is the top baseclass for objects classes. The {name}Desc classes describe
35 // the format of Java objects so the fields can be accessed from C++.
36 // oopDesc is abstract.
37 // (see oopHierarchy for complete oop class hierarchy)
38 //
39 // no virtual functions allowed
40
41 // store into oop with store check
42 template <class T> inline void oop_store(T* p, oop v);
43 template <class T> inline void oop_store(volatile T* p, oop v);
44
45 // Forward declarations.
46 class OopClosure;
47 class ScanClosure;
48 class FastScanClosure;
49 class FilteringClosure;
50 class BarrierSet;
51 class CMSIsAliveClosure;
52
53 class PSPromotionManager;
54 class ParCompactionManager;
55
56 class oopDesc {
57 friend class VMStructs;
58 friend class JVMCIVMStructs;
59 private:
60 volatile markOop _mark;
61 union _metadata {
62 Klass* _klass;
63 narrowKlass _compressed_klass;
64 } _metadata;
|