39 public: 40 ResolvedMethodEntry* next() const { 41 return (ResolvedMethodEntry*)HashtableEntry<ClassLoaderWeakHandle, mtClass>::next(); 42 } 43 44 ResolvedMethodEntry** next_addr() { 45 return (ResolvedMethodEntry**)HashtableEntry<ClassLoaderWeakHandle, mtClass>::next_addr(); 46 } 47 48 oop object(); 49 oop object_no_keepalive(); 50 51 void print_on(outputStream* st) const; 52 }; 53 54 class ResolvedMethodTable : public Hashtable<ClassLoaderWeakHandle, mtClass> { 55 enum Constants { 56 _table_size = 1007 57 }; 58 59 static int _oops_removed; 60 static int _oops_counted; 61 62 static bool _dead_entries; 63 64 static ResolvedMethodTable* _the_table; 65 private: 66 ResolvedMethodEntry* bucket(int i) { 67 return (ResolvedMethodEntry*) Hashtable<ClassLoaderWeakHandle, mtClass>::bucket(i); 68 } 69 70 ResolvedMethodEntry** bucket_addr(int i) { 71 return (ResolvedMethodEntry**) Hashtable<ClassLoaderWeakHandle, mtClass>::bucket_addr(i); 72 } 73 74 unsigned int compute_hash(Method* method); 75 76 // need not be locked; no state change 77 oop lookup(int index, unsigned int hash, Method* method); 78 oop lookup(Method* method); 79 80 // must be done under ResolvedMethodTable_lock 81 oop basic_add(Method* method, Handle rmethod_name); 82 83 public: 84 ResolvedMethodTable(); 85 86 static void create_table() { 87 assert(_the_table == NULL, "One symbol table allowed."); 88 _the_table = new ResolvedMethodTable(); 89 } 90 91 // Called from java_lang_invoke_ResolvedMethodName 92 static oop find_method(Method* method); 93 static oop add_method(Handle rmethod_name); 94 95 static bool has_work() { return _dead_entries; } 96 static void trigger_cleanup(); 97 98 #if INCLUDE_JVMTI 99 // It is called at safepoint only for RedefineClasses 100 static void adjust_method_entries(bool * trace_name_printed); 101 #endif // INCLUDE_JVMTI 102 103 // Cleanup cleared entries 104 static void unlink(); 105 106 #ifndef PRODUCT 107 void print(); 108 #endif 109 void verify(); 110 }; 111 112 #endif // SHARE_VM_PRIMS_RESOLVEDMETHOD_HPP | 39 public: 40 ResolvedMethodEntry* next() const { 41 return (ResolvedMethodEntry*)HashtableEntry<ClassLoaderWeakHandle, mtClass>::next(); 42 } 43 44 ResolvedMethodEntry** next_addr() { 45 return (ResolvedMethodEntry**)HashtableEntry<ClassLoaderWeakHandle, mtClass>::next_addr(); 46 } 47 48 oop object(); 49 oop object_no_keepalive(); 50 51 void print_on(outputStream* st) const; 52 }; 53 54 class ResolvedMethodTable : public Hashtable<ClassLoaderWeakHandle, mtClass> { 55 enum Constants { 56 _table_size = 1007 57 }; 58 59 static int total_oops_removed; 60 61 static bool _dead_entries; 62 63 static ResolvedMethodTable* _the_table; 64 private: 65 ResolvedMethodEntry* bucket(int i) { 66 return (ResolvedMethodEntry*) Hashtable<ClassLoaderWeakHandle, mtClass>::bucket(i); 67 } 68 69 ResolvedMethodEntry** bucket_addr(int i) { 70 return (ResolvedMethodEntry**) Hashtable<ClassLoaderWeakHandle, mtClass>::bucket_addr(i); 71 } 72 73 unsigned int compute_hash(Method* method); 74 75 // need not be locked; no state change 76 oop lookup(int index, unsigned int hash, Method* method); 77 oop lookup(Method* method); 78 79 // must be done under ResolvedMethodTable_lock 80 oop basic_add(Method* method, Handle rmethod_name); 81 82 public: 83 ResolvedMethodTable(); 84 85 static void create_table() { 86 assert(_the_table == NULL, "One symbol table allowed."); 87 _the_table = new ResolvedMethodTable(); 88 } 89 90 // Called from java_lang_invoke_ResolvedMethodName 91 static oop find_method(Method* method); 92 static oop add_method(Handle rmethod_name); 93 94 static bool has_work() { return _dead_entries; } 95 static void trigger_cleanup(); 96 97 static int removed_entries_count() { return total_oops_removed; }; 98 99 #if INCLUDE_JVMTI 100 // It is called at safepoint only for RedefineClasses 101 static void adjust_method_entries(bool * trace_name_printed); 102 #endif // INCLUDE_JVMTI 103 104 // Cleanup cleared entries 105 static void unlink(); 106 107 #ifndef PRODUCT 108 void print(); 109 #endif 110 void verify(); 111 }; 112 113 #endif // SHARE_VM_PRIMS_RESOLVEDMETHOD_HPP |