[m-rev.] for review: fix asm_fast.par.gc

Julien Fischer juliensf at cs.mu.OZ.AU
Wed Mar 8 19:08:07 AEDT 2006


On Wed, 8 Mar 2006, Peter Wang wrote:

> On 2006-03-07, Julien Fischer <juliensf at cs.mu.OZ.AU> wrote:
> > > > >
> > > > > Here's the list of failing tests on saturn.  I think most of are failing
> > > > > for other reasons (64-bitness, plus the copy of the testsuite used is a
> > > > > bit more recent than the rest of my workspace).
> > > > >
> > > > > debugger/declarative/nodescend_tracking
> > > > > hard_coded/integer_test
> > > > > invalid/duplicate_instance_2
> > > > >
> > > >
> > > > I'm not sure why those three are failing (although at a guess the last
> > > > one may have something to do with Mark's change to the parser) - not
> > > > sure about the other two though.
> > >
> > > I bootchecked it on saturn and none of those three failed.  The list of
> > > unexpected failures I got (at -O5) was:
> > >
> > > debugger/declarative/throw
> > > general/string_format/string_format_d
> > > general/string_format/string_format_o
> > > general/string_format/string_format_u
> > > general/string_format/string_format_x
> > >
> >
> > They're the ones I would expect to fail - so it looks like the others
> > are specific to the .par grades.
>
> I've changed the fix a little.  Now MR_ctxt_sp is set to be one word
> before MR_zone_min when the context is initialised (analogous to what
> happens for MR_ctxt_maxfr a few lines later).  That makes the
> MR_fork_new_context() code simpler, and maybe more correct.

maybe more correct?


> Interdiff follows.
>
> diff -u compiler/par_conj_gen.m compiler/par_conj_gen.m
> --- compiler/par_conj_gen.m	6 Mar 2006 12:06:49 -0000
> +++ compiler/par_conj_gen.m	7 Mar 2006 23:24:42 -0000
> @@ -264,6 +264,8 @@
>  copy_outputs(CI, [Var | Vars], SpSlot, Code) :-
>      code_info__get_variable_slot(CI, Var, SrcSlot),
>      ( SrcSlot = stackvar(SlotNum) ->
> +        % The stack pointer points to the last used word on the stack.
> +        % We want MR_sp[-0] = MR_sv(1), MR_sp[-1] = MR_sv(2), etc.
>          NegSlotNum = (1 - SlotNum),
>          DestSlot = field(yes(0), lval(SpSlot), const(int_const(NegSlotNum)))
>      ;
> diff -u runtime/mercury_context.h runtime/mercury_context.h
> --- runtime/mercury_context.h	7 Mar 2006 06:15:00 -0000
> +++ runtime/mercury_context.h	7 Mar 2006 23:19:01 -0000
> @@ -283,11 +283,9 @@
>              fork_new_context_i > 0;                             \
>              fork_new_context_i--)                               \
>          {                                                       \
> -            *(f_n_c_context->MR_ctxt_sp) = MR_stackvar(fork_new_context_i); \
>              f_n_c_context->MR_ctxt_sp++;                        \
> +            *(f_n_c_context->MR_ctxt_sp) = MR_stackvar(fork_new_context_i); \
>          }                                                       \
> -        /* `MR_ctxt_sp' points to the last used word */         \
> -        f_n_c_context->MR_ctxt_sp--;                            \
>          f_n_c_context->MR_ctxt_resume = (child);                \
>          MR_schedule(f_n_c_context);                             \
>          MR_GOTO(parent);                                        \
> only in patch2:
> unchanged:
> --- runtime/mercury_context.c	14 Sep 2005 06:57:32 -0000	1.42
> +++ runtime/mercury_context.c	7 Mar 2006 23:18:54 -0000
> @@ -109,7 +109,8 @@
>              0, MR_detstack_size, MR_next_offset(),
>              MR_detstack_zone_size, MR_default_handler);
>      }
> -    c->MR_ctxt_sp = c->MR_ctxt_detstack_zone->MR_zone_min;
> +    /* sp points to the last used word, not to the first free word. */
> +    c->MR_ctxt_sp = c->MR_ctxt_detstack_zone->MR_zone_min - 1;
>
>      if (c->MR_ctxt_nondetstack_zone != NULL) {
>          MR_reset_redzone(c->MR_ctxt_nondetstack_zone);
>
>
>
> It does, however, break tests/debugger/nondet_stack.  A sample of the
> log follows.  I think it's just a matter of adding another expected
> output case to reflect that the stack pointer is one less than it was
> before ?

I would think so.

> ** nondet_stack.out did not match the expected output
> ** (closest match was nondet_stack.res1)
> *** nondet_stack.exp    Mon Jan 17 16:58:08 2005
> --- nondet_stack.out    Wed Mar  8 17:11:48 2006
> ***************
> *** 81,94 ****
>   non  14: temp
>    redoip: label UNKNOWN
>    redofr: non  10
> !  detfr:  det  13
>   non  10: ordinary, 6 words
>    redoip: label global_fail
>    redofr: non  10
>    succip: label wrapper_not_reached
>    succfr: non   4
>   mdb> stack_regs
> ! sp = det  13
>   curfr = non 135
>   maxfr = non 135
>   mdb> nondet_stack -d
> --- 81,94 ----
>   non  14: temp
>    redoip: label UNKNOWN
>    redofr: non  10
> !  detfr:  det  12
>   non  10: ordinary, 6 words
>    redoip: label global_fail
>    redofr: non  10
>    succip: label wrapper_not_reached
>    succfr: non   4
>   mdb> stack_regs
> ! sp = det  12
>   curfr = non 135
>   maxfr = non 135
>   mdb> nondet_stack -d
> [etc.]
>
>
> Tabling seems to be broken in the .par grade, but didn't show up until I
> rebootchecked with a fresh copy of the testsuite.  Here are the failing
> tests.  Setting up the nightly tests would be good, but fib_list enters
> into an infinite loop so it may need to be disabled for the time being.

I suspect tabling has never really been tested with the .par grades
(I _know_ it hasn't been tested with it recently).  I'll get saturn
and a few of the other machines to install asm_fast.gc.par and disable
the tabling tests in that grade for the time being.

> tabling/expand_poly
> tabling/expand_tuple
> tabling/fib_list
> tabling/specified

Did you set MERCURY_SUPPRESS_STACK_TRACE to yes?

Julien.
--------------------------------------------------------------------------
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