[m-rev.] for review: cliques on the stack and the debugger

Julien Fischer juliensf at csse.unimelb.edu.au
Fri Apr 27 01:41:11 AEST 2012

On Mon, 23 Apr 2012, Zoltan Somogyi wrote:

> I am seeking feedback particularly on the user interface aspects of this diff:
> what options and arguments mdb users give, and what the format of the output
> is. For that, you want to read the diff to doc/user_guide.texi.
> Zoltan.
> Give the Mercury debugger the ability to detect cliques of mutually recursive
> predicates on the stack. Exploit this ability to enhance the debugger's
> level, retry, finish and stack commands.
> runtime/mercury_stack_trace.[ch]:
> 	Add a function, MR_find_clique_entry, that detects the clique
> 	that contains the top stack frame. This is used to implement the new
> 	arguments "clentry" and "clparent" (short for clique entry and parent)
> 	options of the level, retry and finish commands.
> 	Add a function, MR_dump_stack_layout_clique, that implements the
> 	new capabilities of the stack command. It can detect more than one
> 	clique, anywhere on the stack.
> 	To make this possible, modify the existing functions for printing
> 	the lines of stack traces. These used to keep some information around
> 	between calls in global variables. Now that information is stored in
> 	two structures that the caller passes them. One contains the parameters
> 	that govern what is to be printed, the other contains information about
> 	what has been buffered up to be printed, but has not been flushed yet.
> 	(The old code was confused in its handling of parameters. Some parts
> 	of it looked up the global variables storing them, while other parts
> 	were given the parameter values by their callers, values that could
> 	have been -but weren't- inconsistent.)
> 	Change the buffer flushing code to be idempotent, since in the new
> 	code, sometimes it hard to avoid flushing the buffer more than once,
> 	and we want only the first to print its contents.
> 	Make some type names conform to our standard style.
> runtime/mercury_malloc.[ch]:
> 	Add a module containing definitions of checked_malloc and
> 	checked_realloc. The new code in mercury_stack_trace.c uses them.

Is there a reason why you didn't just use MR_malloc and MR_realloc
(exported from runtime/mercury_memory.h)?

Also, the changes to the util directory are not mentioned in the log

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