[m-rev.] for review: include label layouts in annotated trace

Ian MacLarty maclarty at cs.mu.OZ.AU
Tue Feb 22 16:16:21 AEDT 2005


On Sun, Feb 20, 2005 at 11:22:29PM +1100, Julien Fischer wrote:
> 
> On Sun, 20 Feb 2005, Ian MacLarty wrote:
> 
> > For review by anyone.
> >
> > Estimated hours taken: 7
> > Branches: main
> >
> > Record label layouts in the annotated trace.  This does away with the need
> > to store goal path strings and proc_layouts in the annotated trace, since
> > both can be obtained from the label layout (we still however need to store the
> > goal path of a call in its parent for subterm dependency tracking).
> >
> > The label layouts will be used for displaying more detailed information
> > in the declarative debugging session (such as line numbers) and also for
> in declarative debugging sessions
> 

Okay.

> > for slicing and dicing in the declarative debugger.
> >
> > browser/declarative_execution.m
> > 	Add label_layout foreign types and some useful functions on this type.
> >
> > 	Add label_layout field to each event in an annotated trace.
> >
> > 	Record just the arguments of an atom for call and exit events in the
> > 	annotated trace.  The complete atom can be constructed from the
> > 	label_layout and the arguments.
> >
> > 	When recording argument values add them to the front of the
> > 	argument list instead of inserting them in a specified position in the
> > 	argument list.  This means the arguments must be added in reverse order
> > 	in trace/mercury_trace_declarative.c.  This should, however be a bit
> > 	more efficient than the previous method where the arguments were
> > 	effectively being appended to the end of the argument list each time.
> >
> I wouldn't think that the argument lists are large enough most of the
> time for it to matter.
> 

Since the arguments must be added for every CALL and EXIT event (which could be
quite a few), I think there should be a slight gain, though I haven't actually
tested this.  I'll remove the comment anyway.

> > 	Adjust the predicates for building the annotated trace to also accept
> > 	a label_layout.
> >
> > browser/declarative_debugger.m
> > 	Get the proc_layout from the label_layout.
> >
> > browser/declarative_tree.m
> > 	Make adjustments for the extra field.
> >
> > trace/mercury_trace_declarative.c
> > 	Pass the label_layout when constructing pieces of the annotated trace.
> >
> > 	Construct only the atoms arguments.  Also when adding the arguments
> Is that atoms plural or should that be atom's?
> 

Should be atom's.

> > 	add them in reverse order, because of the change in
> > 	browser/declarative_execution mentioned above.
> >
> ...
> 
> > @@ -579,10 +598,40 @@
> >
> >  %-----------------------------------------------------------------------------%
> >
> > -step_left_in_contour(Store, exit(_, Call, _, _, _, _)) = Prec :-
> > +:- pragma foreign_type("C", label_layout, "const MR_Label_Layout *",
> > +	[can_pass_as_mercury_type, stable]).
> > +:- pragma foreign_type("Java", label_layout, "Object", []). % stub only
> > +
> s/Object/java.lang.Object/ there.
> 

Okay.  Also changed it in another part of the file.

> > +:- pragma foreign_proc("C", get_proc_layout_from_label_layout(Label::in)
> > +	= (ProcLayout::out),
> > +	[will_not_call_mercury, thread_safe, terminates, promise_pure],
> 
> `will_not_call_mercury' implies `terminates' in the absence of a
> `does_not_terminate' attribute so the terminates attribute is not
> strictly necessary there (although there is no harm in leaving it
> there).  Likewise below.

Okay.  I've taken them out so the foreign_proc declaration is consistent with the
other ones in the file.

Cheers,

Ian.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list