Skip to content

Commit 49d7366

Browse files
committed
Move mem_pool under BulkTypeEventLogger
1 parent 50bacd1 commit 49d7366

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

src/mono/mono/eventpipe/ep-rt-mono.c

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3011,6 +3011,7 @@ struct _BulkTypeEventLogger {
30113011
uint8_t *bulk_type_event_buffer;
30123012
uint32_t bulk_type_value_count;
30133013
uint32_t bulk_type_value_byte_count;
3014+
MonoMemPool *mem_pool;
30143015
};
30153016

30163017
static
@@ -3019,13 +3020,15 @@ ep_rt_bulk_type_event_logger_alloc ()
30193020
{
30203021
BulkTypeEventLogger *type_logger = g_malloc0 (sizeof (BulkTypeEventLogger));
30213022
type_logger->bulk_type_event_buffer = g_malloc0 (sizeof (uint8_t) * MAX_SIZE_OF_EVENT_BUFFER);
3023+
type_logger->mem_pool = mono_mempool_new ();
30223024
return type_logger;
30233025
}
30243026

30253027
static
30263028
void
30273029
ep_rt_bulk_type_event_logger_free (BulkTypeEventLogger *type_logger)
30283030
{
3031+
mono_mempool_destroy (type_logger->mem_pool);
30293032
g_free (type_logger->bulk_type_event_buffer);
30303033
g_free (type_logger);
30313034
}
@@ -3189,7 +3192,6 @@ get_typeid_for_class (MonoClass *c)
31893192
int
31903193
ep_rt_mono_log_single_type (
31913194
BulkTypeEventLogger *type_logger,
3192-
MonoMemPool *mem_pool,
31933195
MonoType *mono_type)
31943196
{
31953197
// If there's no room for another type, flush what we've got
@@ -3236,7 +3238,7 @@ ep_rt_mono_log_single_type (
32363238
}
32373239

32383240
// mono arrays are always arrays of by value types
3239-
val->mono_type_parameters = mono_mempool_alloc0 (mem_pool, 1 * sizeof (MonoType*));
3241+
val->mono_type_parameters = mono_mempool_alloc0 (type_logger->mem_pool, 1 * sizeof (MonoType*));
32403242
*val->mono_type_parameters = m_class_get_byval_arg (mono_array_type->eklass);
32413243
val->type_parameters_count++;
32423244
break;
@@ -3245,7 +3247,7 @@ ep_rt_mono_log_single_type (
32453247
{
32463248
MonoGenericInst *class_inst = mono_type->data.generic_class->context.class_inst;
32473249
val->type_parameters_count = class_inst->type_argc;
3248-
val->mono_type_parameters = mono_mempool_alloc0 (mem_pool, val->type_parameters_count * sizeof (MonoType*));
3250+
val->mono_type_parameters = mono_mempool_alloc0 (type_logger->mem_pool, val->type_parameters_count * sizeof (MonoType*));
32493251
memcpy (val->mono_type_parameters, class_inst->type_argv, val->type_parameters_count * sizeof (MonoType*));
32503252
break;
32513253
}
@@ -3256,7 +3258,7 @@ ep_rt_mono_log_single_type (
32563258
{
32573259
if (mono_underlying_type == mono_type)
32583260
break;
3259-
val->mono_type_parameters = mono_mempool_alloc0 (mem_pool, 1 * sizeof (MonoType*));
3261+
val->mono_type_parameters = mono_mempool_alloc0 (type_logger->mem_pool, 1 * sizeof (MonoType*));
32603262
*val->mono_type_parameters = mono_underlying_type;
32613263
val->type_parameters_count++;
32623264
break;
@@ -3285,7 +3287,7 @@ ep_rt_mono_log_single_type (
32853287
// call itself again.
32863288
g_assert (type_logger->bulk_type_value_byte_count + val_byte_count > MAX_TYPE_VALUES_BYTES);
32873289
ep_rt_mono_fire_bulk_type_event (type_logger);
3288-
return ep_rt_mono_log_single_type (type_logger, mem_pool, mono_type);
3290+
return ep_rt_mono_log_single_type (type_logger, mono_type);
32893291
}
32903292

32913293
// The type fits into the batch, so update our state
@@ -3308,12 +3310,11 @@ ep_rt_mono_log_single_type (
33083310
void
33093311
ep_rt_mono_log_type_and_parameters (
33103312
BulkTypeEventLogger *type_logger,
3311-
MonoMemPool *mem_pool,
33123313
MonoType *mono_type)
33133314
{
33143315
// Batch up this type. This grabs useful info about the type, including any
33153316
// type parameters it may have, and sticks it in bulk_type_values
3316-
int bulk_type_value_index = ep_rt_mono_log_single_type (type_logger, mem_pool, mono_type);
3317+
int bulk_type_value_index = ep_rt_mono_log_single_type (type_logger, mono_type);
33173318
if (bulk_type_value_index == -1) {
33183319
// There was a failure trying to log the type, so don't bother with its type
33193320
// parameters
@@ -3330,11 +3331,11 @@ ep_rt_mono_log_type_and_parameters (
33303331
if (param_count == 0)
33313332
return;
33323333

3333-
MonoType **mono_type_parameters = mono_mempool_alloc0 (mem_pool, param_count * sizeof (MonoType*));
3334+
MonoType **mono_type_parameters = mono_mempool_alloc0 (type_logger->mem_pool, param_count * sizeof (MonoType*));
33343335
memcpy (mono_type_parameters, val->mono_type_parameters, sizeof (MonoType*) * param_count);
33353336

33363337
for (uint32_t i = 0; i < param_count; i++)
3337-
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, mem_pool, mono_type_parameters [i]);
3338+
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, mono_type_parameters [i]);
33383339
}
33393340

33403341
//---------------------------------------------------------------------------------------
@@ -3351,12 +3352,11 @@ ep_rt_mono_log_type_and_parameters (
33513352
void
33523353
ep_rt_mono_log_type_and_parameters_if_necessary (
33533354
BulkTypeEventLogger *type_logger,
3354-
MonoMemPool *mem_pool,
33553355
MonoType *mono_type)
33563356
{
33573357
// TODO Log the type if necessary
33583358

3359-
ep_rt_mono_log_type_and_parameters (type_logger, mem_pool, mono_type);
3359+
ep_rt_mono_log_type_and_parameters (type_logger, mono_type);
33603360
}
33613361

33623362
// ETW has a limit for maximum event size. Do not log overly large method type argument sets
@@ -3393,7 +3393,6 @@ ep_rt_mono_send_method_details_event (MonoMethod *method)
33933393
return;
33943394

33953395
BulkTypeEventLogger *type_logger = ep_rt_bulk_type_event_logger_alloc ();
3396-
MonoMemPool *mem_pool = mono_mempool_new ();
33973396

33983397
uint64_t method_type_id = 0;
33993398
g_assert (mono_metadata_token_index (method->token) != 0);
@@ -3404,7 +3403,7 @@ ep_rt_mono_send_method_details_event (MonoMethod *method)
34043403
MonoType *method_mono_type = m_class_get_byval_arg (klass);
34053404
method_type_id = get_typeid_for_class (klass);
34063405

3407-
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, mem_pool, method_mono_type);
3406+
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, method_mono_type);
34083407

34093408
loader_module_id = (uint64_t)mono_class_get_image (klass);
34103409
}
@@ -3413,11 +3412,11 @@ ep_rt_mono_send_method_details_event (MonoMethod *method)
34133412
if (method_inst)
34143413
method_inst_parameter_types_count = method_inst->type_argc;
34153414

3416-
uint64_t *method_inst_parameters_type_ids = mono_mempool_alloc0 (mem_pool, method_inst_parameter_types_count * sizeof (uint64_t));
3415+
uint64_t *method_inst_parameters_type_ids = mono_mempool_alloc0 (type_logger->mem_pool, method_inst_parameter_types_count * sizeof (uint64_t));
34173416
for (int i = 0; i < method_inst_parameter_types_count; i++) {
34183417
method_inst_parameters_type_ids [i] = get_typeid_for_type (method_inst->type_argv [i]);
34193418

3420-
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, mem_pool, method_inst->type_argv [i]);
3419+
ep_rt_mono_log_type_and_parameters_if_necessary (type_logger, method_inst->type_argv [i]);
34213420
}
34223421

34233422
ep_rt_mono_fire_bulk_type_event (type_logger);
@@ -3432,7 +3431,6 @@ ep_rt_mono_send_method_details_event (MonoMethod *method)
34323431
NULL,
34333432
NULL);
34343433

3435-
mono_mempool_destroy (mem_pool);
34363434
ep_rt_bulk_type_event_logger_free (type_logger);
34373435
}
34383436

src/mono/mono/eventpipe/ep-rt-mono.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,19 +2187,16 @@ ep_rt_mono_fire_bulk_type_event (BulkTypeEventLogger *p_type_logger);
21872187
int
21882188
ep_rt_mono_log_single_type (
21892189
BulkTypeEventLogger *p_type_logger,
2190-
MonoMemPool *mem_pool,
21912190
MonoType *mono_type);
21922191

21932192
void
21942193
ep_rt_mono_log_type_and_parameters (
21952194
BulkTypeEventLogger *p_type_logger,
2196-
MonoMemPool *mem_pool,
21972195
MonoType *mono_type);
21982196

21992197
void
22002198
ep_rt_mono_log_type_and_parameters_if_necessary (
22012199
BulkTypeEventLogger *p_type_logger,
2202-
MonoMemPool *mem_pool,
22032200
MonoType *mono_type);
22042201

22052202
void

0 commit comments

Comments
 (0)