94 int removed = 0;
95 unlink_or_oops_do(cl, NULL, &processed, &removed);
96 }
97 static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
98 static void unlink(BoolObjectClosure* cl, int* processed, int* removed) {
99 unlink_or_oops_do(cl, NULL, processed, removed);
100 }
101 // Serially invoke "f->do_oop" on the locations of all oops in the table.
102 static void oops_do(OopClosure* f);
103
104 // Possibly parallel versions of the above
105 static void possibly_parallel_unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
106 static void possibly_parallel_unlink(BoolObjectClosure* cl, int* processed, int* removed) {
107 possibly_parallel_unlink_or_oops_do(cl, NULL, processed, removed);
108 }
109 static void possibly_parallel_oops_do(OopClosure* f);
110
111 // Hashing algorithm, used as the hash value used by the
112 // StringTable for bucket selection and comparison (stored in the
113 // HashtableEntry structures). This is used in the String.intern() method.
114 static unsigned int hash_string(const jchar* s, int len);
115
116 // Internal test.
117 static void test_alt_hash() PRODUCT_RETURN;
118
119 // Probing
120 static oop lookup(Symbol* symbol);
121 static oop lookup(jchar* chars, int length);
122
123 // Interning
124 static oop intern(Symbol* symbol, TRAPS);
125 static oop intern(oop string, TRAPS);
126 static oop intern(const char *utf8_string, TRAPS);
127
128 // Debugging
129 static void verify();
130 static void dump(outputStream* st, bool verbose=false);
131
132 enum VerifyMesgModes {
133 _verify_quietly = 0,
134 _verify_with_mesgs = 1
|
94 int removed = 0;
95 unlink_or_oops_do(cl, NULL, &processed, &removed);
96 }
97 static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
98 static void unlink(BoolObjectClosure* cl, int* processed, int* removed) {
99 unlink_or_oops_do(cl, NULL, processed, removed);
100 }
101 // Serially invoke "f->do_oop" on the locations of all oops in the table.
102 static void oops_do(OopClosure* f);
103
104 // Possibly parallel versions of the above
105 static void possibly_parallel_unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
106 static void possibly_parallel_unlink(BoolObjectClosure* cl, int* processed, int* removed) {
107 possibly_parallel_unlink_or_oops_do(cl, NULL, processed, removed);
108 }
109 static void possibly_parallel_oops_do(OopClosure* f);
110
111 // Hashing algorithm, used as the hash value used by the
112 // StringTable for bucket selection and comparison (stored in the
113 // HashtableEntry structures). This is used in the String.intern() method.
114 template<typename T> static unsigned int hash_string(const T* s, int len);
115
116 // Internal test.
117 static void test_alt_hash() PRODUCT_RETURN;
118
119 // Probing
120 static oop lookup(Symbol* symbol);
121 static oop lookup(jchar* chars, int length);
122
123 // Interning
124 static oop intern(Symbol* symbol, TRAPS);
125 static oop intern(oop string, TRAPS);
126 static oop intern(const char *utf8_string, TRAPS);
127
128 // Debugging
129 static void verify();
130 static void dump(outputStream* st, bool verbose=false);
131
132 enum VerifyMesgModes {
133 _verify_quietly = 0,
134 _verify_with_mesgs = 1
|