311 unlink_or_oops_do(cl, f, &processed, &removed);
312 }
313 static void unlink(BoolObjectClosure* cl) {
314 int processed = 0;
315 int removed = 0;
316 unlink_or_oops_do(cl, NULL, &processed, &removed);
317 }
318 static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
319 static void unlink(BoolObjectClosure* cl, int* processed, int* removed) {
320 unlink_or_oops_do(cl, NULL, processed, removed);
321 }
322 // Serially invoke "f->do_oop" on the locations of all oops in the table.
323 static void oops_do(OopClosure* f);
324
325 // Possibly parallel versions of the above
326 static void possibly_parallel_unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
327 static void possibly_parallel_unlink(BoolObjectClosure* cl, int* processed, int* removed) {
328 possibly_parallel_unlink_or_oops_do(cl, NULL, processed, removed);
329 }
330 static void possibly_parallel_oops_do(OopClosure* f);
331
332 // Hashing algorithm, used as the hash value used by the
333 // StringTable for bucket selection and comparison (stored in the
334 // HashtableEntry structures). This is used in the String.intern() method.
335 static unsigned int hash_string(const jchar* s, int len);
336
337 // Internal test.
338 static void test_alt_hash() PRODUCT_RETURN;
339
340 // Probing
341 static oop lookup(Symbol* symbol);
342 static oop lookup(jchar* chars, int length);
343
344 // Interning
345 static oop intern(Symbol* symbol, TRAPS);
346 static oop intern(oop string, TRAPS);
347 static oop intern(const char *utf8_string, TRAPS);
348
349 // Debugging
350 static void verify();
|
311 unlink_or_oops_do(cl, f, &processed, &removed);
312 }
313 static void unlink(BoolObjectClosure* cl) {
314 int processed = 0;
315 int removed = 0;
316 unlink_or_oops_do(cl, NULL, &processed, &removed);
317 }
318 static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
319 static void unlink(BoolObjectClosure* cl, int* processed, int* removed) {
320 unlink_or_oops_do(cl, NULL, processed, removed);
321 }
322 // Serially invoke "f->do_oop" on the locations of all oops in the table.
323 static void oops_do(OopClosure* f);
324
325 // Possibly parallel versions of the above
326 static void possibly_parallel_unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed);
327 static void possibly_parallel_unlink(BoolObjectClosure* cl, int* processed, int* removed) {
328 possibly_parallel_unlink_or_oops_do(cl, NULL, processed, removed);
329 }
330 static void possibly_parallel_oops_do(OopClosure* f);
331 static void possibly_parallel_oops_do_shenandoah(OopClosure* f);
332
333 // Hashing algorithm, used as the hash value used by the
334 // StringTable for bucket selection and comparison (stored in the
335 // HashtableEntry structures). This is used in the String.intern() method.
336 static unsigned int hash_string(const jchar* s, int len);
337
338 // Internal test.
339 static void test_alt_hash() PRODUCT_RETURN;
340
341 // Probing
342 static oop lookup(Symbol* symbol);
343 static oop lookup(jchar* chars, int length);
344
345 // Interning
346 static oop intern(Symbol* symbol, TRAPS);
347 static oop intern(oop string, TRAPS);
348 static oop intern(const char *utf8_string, TRAPS);
349
350 // Debugging
351 static void verify();
|