[m-rev.] for review: fix bug #67
Julien Fischer
juliensf at csse.unimelb.edu.au
Thu Jul 15 12:55:19 AEST 2010
On Thu, 15 Jul 2010, Julien Fischer wrote:
>
> On Thu, 15 Jul 2010, Peter Wang wrote:
>
>> An alternative fix would be to modify mprof to ignore those entries.
>> ---
>>
>> Branches: main, 10.04
>>
>> Fix bug #67.
>>
>> runtime/mercury_prof.c:
>> Don't write out entries for do_call_closure_* and
>> do_call_class_method_* into Prof.Decl. These produce duplicates
>> which
>> causes mprof when trying to read it in, yet are ignored for
>> profiling
>> anyway.
>>
>> diff --git a/runtime/mercury_prof.c b/runtime/mercury_prof.c
>> index d64d94b..d63eb65 100644
>> --- a/runtime/mercury_prof.c
>> +++ b/runtime/mercury_prof.c
>> @@ -292,6 +292,19 @@ print_addr_pair_node(FILE *fptr, prof_call_node *node)
>> void
>> MR_prof_output_addr_decl(const char *name, const MR_Code *address)
>> {
>> + const char ignore1[] = "mercury__do_call_closure_";
>> + const char ignore2[] = "mercury__do_call_class_method_";
>> +
>> + /*
>> + ** Don't output labels for do_call_closure_* and
>> do_call_class_method_*
>> + ** as they are ignored for profiling, and the duplicates confuse
>> mprof.
>> + */
>> + if (MR_strneq(name, ignore1, sizeof(ignore1) - 1) ||
>> + MR_strneq(name, ignore2, sizeof(ignore2) - 1))
>> + {
>> + return;
>> + }
>
> You need to allow for an optional leading underscore, e.g.
>
> _mercury__do_call_closure_
> _mercury__do_call_class_method_
>
> since some systems prefix symbol names in that way, e.g. Mac OS X.
Actually, ignore that.
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list