@@ -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 }
@@ -441,7 +455,7 @@ bool Lookup::resolveVTableReceiver(VMSymbol *sym, char *buf, size_t bufsize,
441455 // the stack frame's class_id absent from this chunk's class pool.
442456 // (Plain lookup() remains correct for non-dump callers — e.g. Profiler::
443457 // lookupClass on JVM threads — where the next rotate() will propagate.)
444- u32 class_id = _classes->lookupDuringDump (buf, len);
458+ u32 class_id = _classes->lookupDuringDump (buf, len, Profiler::maxClassMapSize () );
445459 // Apply synthetic-accessor/LambdaForm normalisation so that the many
446460 // distinct names HotSpot generates for these families (..Accessor1234,
447461 // LambdaForm$MH/0x...) collapse to one bucket each in the JFR class pool.
@@ -451,32 +465,32 @@ bool Lookup::resolveVTableReceiver(VMSymbol *sym, char *buf, size_t bufsize,
451465 if (has_prefix_n (buf, len,
452466 " jdk/internal/reflect/GeneratedConstructorAccessor" )) {
453467 static const char kName [] = " jdk/internal/reflect/GeneratedConstructorAccessor" ;
454- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
468+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
455469 } else if (has_prefix_n (buf, len, " sun/reflect/GeneratedConstructorAccessor" )) {
456470 static const char kName [] = " sun/reflect/GeneratedConstructorAccessor" ;
457- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
471+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
458472 } else if (has_prefix_n (buf, len,
459473 " jdk/internal/reflect/GeneratedMethodAccessor" )) {
460474 static const char kName [] = " jdk/internal/reflect/GeneratedMethodAccessor" ;
461- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
475+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
462476 } else if (has_prefix_n (buf, len, " sun/reflect/GeneratedMethodAccessor" )) {
463477 static const char kName [] = " sun/reflect/GeneratedMethodAccessor" ;
464- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
478+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
465479 } else if (has_prefix_n (buf, len, " java/lang/invoke/LambdaForm$" )) {
466480 size_t prefix_len = strlen (" java/lang/invoke/LambdaForm$" );
467481 const char *suffix = buf + prefix_len;
468482 size_t suffix_len = len - prefix_len;
469483 if (suffix_len >= 2 && suffix[0 ] == ' M' && suffix[1 ] == ' H' ) {
470484 static const char kName [] = " java/lang/invoke/LambdaForm$MH" ;
471- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
485+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
472486 } else if (suffix_len >= 3 && suffix[0 ] == ' B' && suffix[1 ] == ' M' &&
473487 suffix[2 ] == ' H' ) {
474488 static const char kName [] = " java/lang/invoke/LambdaForm$BMH" ;
475- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
489+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
476490 } else if (suffix_len >= 3 && suffix[0 ] == ' D' && suffix[1 ] == ' M' &&
477491 suffix[2 ] == ' H' ) {
478492 static const char kName [] = " java/lang/invoke/LambdaForm$DMH" ;
479- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
493+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
480494 }
481495 }
482496 *out_class_id = class_id;
@@ -500,7 +514,7 @@ u32 Lookup::resolveVTableReceiverCached(void *sym) {
500514 // marker instead of an empty class name (which is indistinguishable
501515 // from a parser/encoder error downstream).
502516 static const char kName [] = " <unresolved_vtable_receiver>" ;
503- class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 );
517+ class_id = _classes->lookupDuringDump (kName , sizeof (kName ) - 1 , Profiler::maxClassMapSize () );
504518 }
505519 _vtable_receiver_cache[sym] = class_id;
506520 return class_id;
0 commit comments