@@ -68,7 +68,7 @@ SharedLineNumberTable::~SharedLineNumberTable() {
6868
6969void Lookup::fillNativeMethodInfo (MethodInfo *mi, const char *name,
7070 const char *lib_name) {
71- mi->_class = _classes->lookupDuringDump (" " , 0 );
71+ mi->_class = _classes->lookupDuringDump (" " , 0 , Profiler::maxClassMapSize () );
7272 // TODO return the library name once we figured out how to cooperate with the
7373 // backend
7474 // if (lib_name == NULL) {
@@ -117,7 +117,8 @@ void Lookup::fillNativeMethodInfo(MethodInfo *mi, const char *name,
117117
118118void Lookup::fillRemoteFrameInfo (MethodInfo *mi, const RemoteFrameInfo *rfi) {
119119 // Store build-id in the class name field
120- mi->_class = _classes->lookupDuringDump (rfi->build_id , strlen (rfi->build_id ));
120+ mi->_class = _classes->lookupDuringDump (rfi->build_id , strlen (rfi->build_id ),
121+ Profiler::maxClassMapSize ());
121122
122123 // Store PC offset in hex format in the signature field
123124 char offset_hex[32 ];
@@ -269,35 +270,40 @@ void Lookup::fillJavaMethodInfo(MethodInfo *mi, jmethodID method,
269270 " Ljdk/internal/reflect/GeneratedConstructorAccessor" )) {
270271 class_name_id = _classes->lookupDuringDump (
271272 " jdk/internal/reflect/GeneratedConstructorAccessor" ,
272- strlen (" jdk/internal/reflect/GeneratedConstructorAccessor" ));
273+ strlen (" jdk/internal/reflect/GeneratedConstructorAccessor" ),
274+ Profiler::maxClassMapSize ());
273275 method_name_id =
274276 _symbols.lookup (" Object "
275277 " jdk.internal.reflect.GeneratedConstructorAccessor."
276278 " newInstance(Object[])" );
277279 method_sig_id = _symbols.lookup (method_sig);
278280 } else if (has_prefix (class_name,
279281 " Lsun/reflect/GeneratedConstructorAccessor" )) {
280- class_name_id =
281- _classes->lookupDuringDump (" sun/reflect/GeneratedConstructorAccessor" ,
282- strlen (" sun/reflect/GeneratedConstructorAccessor" ));
282+ class_name_id = _classes->lookupDuringDump (
283+ " sun/reflect/GeneratedConstructorAccessor" ,
284+ strlen (" sun/reflect/GeneratedConstructorAccessor" ),
285+ Profiler::maxClassMapSize ());
283286 method_name_id = _symbols.lookup (
284287 " Object "
285288 " sun.reflect.GeneratedConstructorAccessor.newInstance(Object[])" );
286289 method_sig_id = _symbols.lookup (method_sig);
287290 } else if (has_prefix (class_name,
288291 " Ljdk/internal/reflect/GeneratedMethodAccessor" )) {
289- class_name_id =
290- _classes->lookupDuringDump (" jdk/internal/reflect/GeneratedMethodAccessor" ,
291- strlen (" jdk/internal/reflect/GeneratedMethodAccessor" ));
292+ class_name_id = _classes->lookupDuringDump (
293+ " jdk/internal/reflect/GeneratedMethodAccessor" ,
294+ strlen (" jdk/internal/reflect/GeneratedMethodAccessor" ),
295+ Profiler::maxClassMapSize ());
292296 method_name_id =
293297 _symbols.lookup (" Object "
294298 " jdk.internal.reflect.GeneratedMethodAccessor."
295299 " invoke(Object, Object[])" );
296300 method_sig_id = _symbols.lookup (method_sig);
297301 } else if (has_prefix (class_name,
298302 " Lsun/reflect/GeneratedMethodAccessor" )) {
299- class_name_id = _classes->lookupDuringDump (" sun/reflect/GeneratedMethodAccessor" ,
300- strlen (" sun/reflect/GeneratedMethodAccessor" ));
303+ class_name_id = _classes->lookupDuringDump (
304+ " sun/reflect/GeneratedMethodAccessor" ,
305+ strlen (" sun/reflect/GeneratedMethodAccessor" ),
306+ Profiler::maxClassMapSize ());
301307 method_name_id = _symbols.lookup (
302308 " Object sun.reflect.GeneratedMethodAccessor.invoke(Object, "
303309 " Object[])" );
@@ -308,30 +314,38 @@ void Lookup::fillJavaMethodInfo(MethodInfo *mi, jmethodID method,
308314 // we want to normalise to java/lang/invoke/LambdaForm$MH,
309315 // java/lang/invoke/LambdaForm$DMH, java/lang/invoke/LambdaForm$BMH,
310316 if (has_prefix (class_name + lambdaFormPrefixLength, " MH" )) {
311- class_name_id = _classes->lookupDuringDump (" java/lang/invoke/LambdaForm$MH" ,
312- strlen (" java/lang/invoke/LambdaForm$MH" ));
317+ class_name_id = _classes->lookupDuringDump (
318+ " java/lang/invoke/LambdaForm$MH" ,
319+ strlen (" java/lang/invoke/LambdaForm$MH" ),
320+ Profiler::maxClassMapSize ());
313321 } else if (has_prefix (class_name + lambdaFormPrefixLength, " BMH" )) {
314- class_name_id = _classes->lookupDuringDump (" java/lang/invoke/LambdaForm$BMH" ,
315- strlen (" java/lang/invoke/LambdaForm$BMH" ));
322+ class_name_id = _classes->lookupDuringDump (
323+ " java/lang/invoke/LambdaForm$BMH" ,
324+ strlen (" java/lang/invoke/LambdaForm$BMH" ),
325+ Profiler::maxClassMapSize ());
316326 } else if (has_prefix (class_name + lambdaFormPrefixLength, " DMH" )) {
317- class_name_id = _classes->lookupDuringDump (" java/lang/invoke/LambdaForm$DMH" ,
318- strlen (" java/lang/invoke/LambdaForm$DMH" ));
327+ class_name_id = _classes->lookupDuringDump (
328+ " java/lang/invoke/LambdaForm$DMH" ,
329+ strlen (" java/lang/invoke/LambdaForm$DMH" ),
330+ Profiler::maxClassMapSize ());
319331 } else {
320332 // don't recognise the suffix, so don't normalise
321333 class_name_id = _classes->lookupDuringDump (
322- normalized_class_name, normalized_class_name_len);
334+ normalized_class_name, normalized_class_name_len,
335+ Profiler::maxClassMapSize ());
323336 }
324337 method_name_id = _symbols.lookup (method_name);
325338 method_sig_id = _symbols.lookup (method_sig);
326339 } else {
327- class_name_id = _classes->lookupDuringDump (normalized_class_name,
328- normalized_class_name_len);
340+ class_name_id = _classes->lookupDuringDump (
341+ normalized_class_name, normalized_class_name_len,
342+ Profiler::maxClassMapSize ());
329343 method_name_id = _symbols.lookup (method_name);
330344 method_sig_id = _symbols.lookup (method_sig);
331345 }
332346 } else {
333347 Counters::increment (JMETHODID_SKIPPED );
334- class_name_id = _classes->lookupDuringDump (" " , 0 );
348+ class_name_id = _classes->lookupDuringDump (" " , 0 , Profiler::maxClassMapSize () );
335349 method_name_id = _symbols.lookup (" jvmtiError" );
336350 method_sig_id = _symbols.lookup (" ()L;" );
337351 }
@@ -426,7 +440,7 @@ bool Lookup::resolveVTableReceiver(VMSymbol *sym, char *buf, size_t bufsize,
426440 // the stack frame's class_id absent from this chunk's class pool.
427441 // (Plain lookup() remains correct for non-dump callers — e.g. Profiler::
428442 // lookupClass on JVM threads — where the next rotate() will propagate.)
429- u32 class_id = _classes->lookupDuringDump (buf, len);
443+ u32 class_id = _classes->lookupDuringDump (buf, len, Profiler::maxClassMapSize () );
430444 // Apply synthetic-accessor/LambdaForm normalisation so that the many
431445 // distinct names HotSpot generates for these families (..Accessor1234,
432446 // LambdaForm$MH/0x...) collapse to one bucket each in the JFR class pool.
@@ -436,32 +450,32 @@ bool Lookup::resolveVTableReceiver(VMSymbol *sym, char *buf, size_t bufsize,
436450 if (has_prefix_n (buf, len,
437451 " jdk/internal/reflect/GeneratedConstructorAccessor" )) {
438452 static const char kName [] = " jdk/internal/reflect/GeneratedConstructorAccessor" ;
439- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
453+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
440454 } else if (has_prefix_n (buf, len, " sun/reflect/GeneratedConstructorAccessor" )) {
441455 static const char kName [] = " sun/reflect/GeneratedConstructorAccessor" ;
442- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
456+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
443457 } else if (has_prefix_n (buf, len,
444458 " jdk/internal/reflect/GeneratedMethodAccessor" )) {
445459 static const char kName [] = " jdk/internal/reflect/GeneratedMethodAccessor" ;
446- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
460+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
447461 } else if (has_prefix_n (buf, len, " sun/reflect/GeneratedMethodAccessor" )) {
448462 static const char kName [] = " sun/reflect/GeneratedMethodAccessor" ;
449- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
463+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
450464 } else if (has_prefix_n (buf, len, " java/lang/invoke/LambdaForm$" )) {
451465 size_t prefix_len = strlen (" java/lang/invoke/LambdaForm$" );
452466 const char *suffix = buf + prefix_len;
453467 size_t suffix_len = len - prefix_len;
454468 if (suffix_len >= 2 && suffix[0 ] == ' M' && suffix[1 ] == ' H' ) {
455469 static const char kName [] = " java/lang/invoke/LambdaForm$MH" ;
456- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
470+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
457471 } else if (suffix_len >= 3 && suffix[0 ] == ' B' && suffix[1 ] == ' M' &&
458472 suffix[2 ] == ' H' ) {
459473 static const char kName [] = " java/lang/invoke/LambdaForm$BMH" ;
460- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
474+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
461475 } else if (suffix_len >= 3 && suffix[0 ] == ' D' && suffix[1 ] == ' M' &&
462476 suffix[2 ] == ' H' ) {
463477 static const char kName [] = " java/lang/invoke/LambdaForm$DMH" ;
464- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
478+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
465479 }
466480 }
467481 *out_class_id = class_id;
@@ -485,7 +499,7 @@ u32 Lookup::resolveVTableReceiverCached(void *sym) {
485499 // marker instead of an empty class name (which is indistinguishable
486500 // from a parser/encoder error downstream).
487501 static const char kName [] = " <unresolved_vtable_receiver>" ;
488- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
502+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
489503 }
490504 _vtable_receiver_cache[sym] = class_id;
491505 return class_id;
0 commit comments