< prev index next >

src/hotspot/share/gc/z/zNMethodData.cpp


58   }                                                                                                                                  
59 }                                                                                                                                    
60 
61 size_t ZNMethodDataOops::immediates_count() const {                                                                                  
62   return _nimmediates;                                                                                                               
63 }                                                                                                                                    
64 
65 oop** ZNMethodDataOops::immediates_begin() const {                                                                                   
66   // The immediate oop* array starts immediately after this object                                                                   
67   return (oop**)((uintptr_t)this + header_size());                                                                                   
68 }                                                                                                                                    
69 
70 oop** ZNMethodDataOops::immediates_end() const {                                                                                     
71   return immediates_begin() + immediates_count();                                                                                    
72 }                                                                                                                                    
73 
74 bool ZNMethodDataOops::has_non_immediates() const {                                                                                  
75   return _has_non_immediates;                                                                                                        
76 }                                                                                                                                    
77 
78 ZNMethodData* ZNMethodData::create(nmethod* nm) {                                                                                    
79   void* const mem = ZNMethodAllocator::allocate(sizeof(ZNMethodData));                                                               
80   return ::new (mem) ZNMethodData(nm);                                                                                               
81 }                                                                                                                                    
82                                                                                                                                      
83 void ZNMethodData::destroy(ZNMethodData* data) {                                                                                     
84   ZNMethodAllocator::free(data->oops());                                                                                             
85   ZNMethodAllocator::free(data);                                                                                                     
86 }                                                                                                                                    
87                                                                                                                                      
88 ZNMethodData::ZNMethodData(nmethod* nm) :                                                                                            
89     _lock(),                                                                                                                         
90     _oops(NULL) {}                                                                                                                   
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
91 
92 ZReentrantLock* ZNMethodData::lock() {                                                                                               
93   return &_lock;                                                                                                                     
94 }                                                                                                                                    
95 
96 ZNMethodDataOops* ZNMethodData::oops() const {                                                                                       
97   return OrderAccess::load_acquire(&_oops);                                                                                          
98 }                                                                                                                                    
99 
100 ZNMethodDataOops* ZNMethodData::swap_oops(ZNMethodDataOops* new_oops) {                                                              
101   return Atomic::xchg(new_oops, &_oops);                                                                                             
102 }                                                                                                                                    

58   }
59 }
60 
61 size_t ZNMethodDataOops::immediates_count() const {
62   return _nimmediates;
63 }
64 
65 oop** ZNMethodDataOops::immediates_begin() const {
66   // The immediate oop* array starts immediately after this object
67   return (oop**)((uintptr_t)this + header_size());
68 }
69 
70 oop** ZNMethodDataOops::immediates_end() const {
71   return immediates_begin() + immediates_count();
72 }
73 
74 bool ZNMethodDataOops::has_non_immediates() const {
75   return _has_non_immediates;
76 }
77 
78 ZNMethodData::ZNMethodData() :










79     _lock(),
80     _oops(NULL) {}
81 
82 ZNMethodData::~ZNMethodData() {
83   ZNMethodAllocator::free(_oops);
84 }
85 
86 ZReentrantLock* ZNMethodData::lock() {
87   return &_lock;
88 }
89 
90 ZNMethodDataOops* ZNMethodData::oops() const {
91   return OrderAccess::load_acquire(&_oops);
92 }
93 
94 ZNMethodDataOops* ZNMethodData::swap_oops(ZNMethodDataOops* new_oops) {
95   return Atomic::xchg(new_oops, &_oops);
96 }
< prev index next >