[m-rev.] for review: trail segments
Julien Fischer
juliensf at csse.unimelb.edu.au
Fri Sep 5 19:17:39 AEST 2008
On Fri, 5 Sep 2008, Peter Wang wrote:
> On 2008-09-04, Julien Fischer <juliensf at csse.unimelb.edu.au> wrote:
>>
>> (I will post some benchmarks with G12's FD solver shortly -- benchmarking
>> the compiler will be unenlightening in this case since the additional
>> overhead is only incurred when entries are added to the trail, which the
>> compiler doesn't do.)
>>
>> Estimated hours taken: 20
>> Branches: main
>>
>> Add a mechanism for dynamically growing the trail by adding new segments to it
>> in a similar fashion to what we do for the stacks with stack segments. The
>> mechanism is enabled by the trseg (trail segments) grade component. Unlike
>> stack segments the trail segment mechanism also works with the high-level C
>> backend.
>
>> Index: runtime/mercury_trail.h
>> ===================================================================
>> RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_trail.h,v
>> retrieving revision 1.30
>> diff -u -r1.30 mercury_trail.h
>> --- runtime/mercury_trail.h 13 Jun 2008 07:27:56 -0000 1.30
>> +++ runtime/mercury_trail.h 3 Sep 2008 22:04:02 -0000
>> @@ -25,6 +25,7 @@
>> #define MR_IF_USE_TRAIL(x)
>> #endif
>>
>> +
>> /*---------------------------------------------------------------------------*/
>> /*
>> ** The following macros define how to store and retrieve a 'ticket' -
>> @@ -307,7 +308,7 @@
>> } while (0)
>>
>> /*
>> - ** void MR_store_function_trail_entry_kind(
>> + ** void MR_store_function_trail_entry(
>> ** MR_trail_entry *entry, MR_untrail_func *func, void *datum);
>> */
>> #define MR_store_function_trail_entry(entry, func, datum) \
>> @@ -316,7 +317,8 @@
>> (entry)->MR_union.MR_func.MR_untrail_func = (func); \
>> (entry)->MR_union.MR_func.MR_datum = (datum); \
>> } while (0)
>> -#endif
>> +
>> +#endif /* ! MR_USE_TAGGED_TRAIL */
>>
>> /*
>> ** MR_Word MR_get_trail_entry_value(const MR_trail_entry *);
>> @@ -355,6 +357,11 @@
>> /* The Mercury trail */
>> extern MR_MemoryZone *MR_trail_zone;
>>
>> + #if !defined(MR_TRAIL_SEGMENTS)
>> + /* A list of any previous trail zones. */
>> + extern MR_MemoryZones *MR_prev_trail_zones;
>> + #endif
>> +
>
> The condition looks inverted.
Fixed.
>> @@ -397,6 +439,22 @@
>> */
>> /*---------------------------------------------------------------------------*/
>>
>> +#if defined(MR_TRAIL_SEGMENTS)
>> +
>> +#define MR_trail_extend_and_check() \
>> + do { \
>> + if (MR_trail_ptr >= (MR_TrailEntry *) MR_TRAIL_ZONE->MR_zone_end) { \
>> + MR_new_trail_segment(); \
>> + } \
>> + } while (0)
>> +
>> +#else /* ! MR_TRAIL_SEGMENTS */
>> +
>> + #define MR_trail_extend_and_check()
>
> #define MR_trail_extend_and_check() ((void) 0)
Fixed.
>> Index: scripts/canonical_grade.sh-subr
>> ===================================================================
>> RCS file: /home/mercury/mercury1/repository/mercury/scripts/canonical_grade.sh-subr,v
>> retrieving revision 1.21
>> diff -u -r1.21 canonical_grade.sh-subr
>> --- scripts/canonical_grade.sh-subr 24 Oct 2007 09:21:17 -0000 1.21
>> +++ scripts/canonical_grade.sh-subr 3 Sep 2008 22:04:02 -0000
>> @@ -118,9 +118,14 @@
>> ;;
>> esac
>>
>> -case $use_trail in
>> - true) GRADE="$GRADE.tr" ;;
>> - false) ;;
>> +case $use_trail,$trail_segments in
>> + true,false) GRADE="$GRADE.tr" ;;
>> + true,true) GRADE="$GRADE.trseg" ;;
>> + false,false) ;;
>> + *) progname=`basename $0`
>> + echo "$progname: error: invalid combination of trailing opitons." 1>&2
>> + exit 1
>> + ;;
>
> options
Fixed.
Thanks for 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