24 #ifndef SHARE_GC_Z_ZNMETHODTABLE_HPP
25 #define SHARE_GC_Z_ZNMETHODTABLE_HPP
26
27 #include "gc/z/zArray.hpp"
28 #include "gc/z/zGlobals.hpp"
29 #include "gc/z/zLock.hpp"
30 #include "gc/z/zNMethodTableEntry.hpp"
31 #include "memory/allocation.hpp"
32
33 class ZWorkers;
34
35 class ZNMethodTableEntryClosure {
36 public:
37 virtual void do_nmethod_entry(ZNMethodTableEntry entry) = 0;
38 };
39
40 class ZNMethodTable : public AllStatic {
41 private:
42 static ZNMethodTableEntry* _table;
43 static size_t _size;
44 static ZLock _iter_lock;
45 static ZNMethodTableEntry* _iter_table;
46 static size_t _iter_table_size;
47 static ZArray<void*> _iter_deferred_deletes;
48 static size_t _nregistered;
49 static size_t _nunregistered;
50 static volatile size_t _claimed ATTRIBUTE_ALIGNED(ZCacheLineSize);
51
52 static ZNMethodTableEntry create_entry(nmethod* nm);
53
54 static size_t first_index(const nmethod* nm, size_t size);
55 static size_t next_index(size_t prev_index, size_t size);
56
57 static void wait_until_iteration_done();
58
59 static bool register_entry(ZNMethodTableEntry* table, size_t size, ZNMethodTableEntry entry);
60 static void unregister_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm);
61
62 static void rebuild(size_t new_size);
63 static void rebuild_if_needed();
64
|
24 #ifndef SHARE_GC_Z_ZNMETHODTABLE_HPP
25 #define SHARE_GC_Z_ZNMETHODTABLE_HPP
26
27 #include "gc/z/zArray.hpp"
28 #include "gc/z/zGlobals.hpp"
29 #include "gc/z/zLock.hpp"
30 #include "gc/z/zNMethodTableEntry.hpp"
31 #include "memory/allocation.hpp"
32
33 class ZWorkers;
34
35 class ZNMethodTableEntryClosure {
36 public:
37 virtual void do_nmethod_entry(ZNMethodTableEntry entry) = 0;
38 };
39
40 class ZNMethodTable : public AllStatic {
41 private:
42 static ZNMethodTableEntry* _table;
43 static size_t _size;
44 static ZNMethodTableEntry* _iter_table;
45 static size_t _iter_table_size;
46 static ZArray<void*> _iter_deferred_deletes;
47 static size_t _nregistered;
48 static size_t _nunregistered;
49 static volatile size_t _claimed ATTRIBUTE_ALIGNED(ZCacheLineSize);
50
51 static ZNMethodTableEntry create_entry(nmethod* nm);
52
53 static size_t first_index(const nmethod* nm, size_t size);
54 static size_t next_index(size_t prev_index, size_t size);
55
56 static void wait_until_iteration_done();
57
58 static bool register_entry(ZNMethodTableEntry* table, size_t size, ZNMethodTableEntry entry);
59 static void unregister_entry(ZNMethodTableEntry* table, size_t size, nmethod* nm);
60
61 static void rebuild(size_t new_size);
62 static void rebuild_if_needed();
63
|