18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #ifndef SHARE_GC_Z_ZNMETHODTABLE_HPP 25 #define SHARE_GC_Z_ZNMETHODTABLE_HPP 26 27 #include "gc/z/zNMethodTableIteration.hpp" 28 #include "gc/z/zSafeDelete.hpp" 29 #include "memory/allocation.hpp" 30 31 class nmethod; 32 class NMethodClosure; 33 class ZNMethodTableEntry; 34 class ZWorkers; 35 36 class ZNMethodTable : public AllStatic { 37 private: 38 static ZNMethodTableEntry* _table; 39 static size_t _size; 40 static size_t _nregistered; 41 static size_t _nunregistered; 42 static ZNMethodTableIteration _iteration; 43 static ZSafeDelete<ZNMethodTableEntry[]> _safe_delete; 44 45 static ZNMethodTableEntry* create(size_t size); 46 static void destroy(ZNMethodTableEntry* table); 47 48 static size_t first_index(const nmethod* nm, size_t size); 49 static size_t next_index(size_t prev_index, size_t size); 50 51 static bool register_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm); 52 static void unregister_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm); 53 54 static void rebuild(size_t new_size); 55 static void rebuild_if_needed(); 56 57 public: 58 static size_t registered_nmethods(); 59 static size_t unregistered_nmethods(); 60 61 static void register_nmethod(nmethod* nm); 62 static void unregister_nmethod(nmethod* nm); 63 | 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #ifndef SHARE_GC_Z_ZNMETHODTABLE_HPP 25 #define SHARE_GC_Z_ZNMETHODTABLE_HPP 26 27 #include "gc/z/zNMethodTableIteration.hpp" 28 #include "gc/z/zSafeDelete.hpp" 29 #include "memory/allocation.hpp" 30 31 class nmethod; 32 class NMethodClosure; 33 class ZNMethodTableEntry; 34 class ZWorkers; 35 36 class ZNMethodTable : public AllStatic { 37 private: 38 static ZNMethodTableEntry* _table; 39 static size_t _size; 40 static size_t _nregistered; 41 static size_t _nunregistered; 42 static ZNMethodTableIteration _iteration; 43 static ZSafeDeleteNoLock<ZNMethodTableEntry[]> _safe_delete; 44 45 static ZNMethodTableEntry* create(size_t size); 46 static void destroy(ZNMethodTableEntry* table); 47 48 static size_t first_index(const nmethod* nm, size_t size); 49 static size_t next_index(size_t prev_index, size_t size); 50 51 static bool register_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm); 52 static void unregister_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm); 53 54 static void rebuild(size_t new_size); 55 static void rebuild_if_needed(); 56 57 public: 58 static size_t registered_nmethods(); 59 static size_t unregistered_nmethods(); 60 61 static void register_nmethod(nmethod* nm); 62 static void unregister_nmethod(nmethod* nm); 63 |