[m-rev.] for review: add new grade component for rbmm
Julien Fischer
juliensf at csse.unimelb.edu.au
Fri Jun 8 15:52:25 AEST 2007
Is anyone planning to review this? I would like to commit it.
On Thu, 24 May 2007, Julien Fischer wrote:
>
> Estimated hours taken: 1
> Branches: main
>
> Add a new grade component for use with region-based memory management.
>
> runtime/mercury_conf_param.h:
> runtime/mercury_grade.h:
> compiler/compile_target_code.m:
> compiler/handle_options.m:
> compiler/options.m:
> scripts/canonical_grade.sh-subr:
> scripts/init_grade_options.sh-subr:
> scripts/mgnuc.in:
> scripts/parse_grade_options.sh-subr:
> doc/user_guide.texi:
> Add the grade component `.rbmm' for use with region-based memory
> management.
>
> Julien.
>
> Index: compiler/compile_target_code.m
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/compiler/compile_target_code.m,v
> retrieving revision 1.107
> diff -u -r1.107 compile_target_code.m
> --- compiler/compile_target_code.m 7 May 2007 05:21:29 -0000 1.107
> +++ compiler/compile_target_code.m 24 May 2007 04:41:34 -0000
> @@ -696,6 +696,14 @@
> SinglePrecFloat = no,
> SinglePrecFloatOpt = ""
> ),
> + globals.io_lookup_bool_option(use_regions, UseRegions, !IO),
> + (
> + UseRegions = yes,
> + UseRegionsOpt = "-DMR_USE_REGIONS "
> + ;
> + UseRegions = no,
> + UseRegionsOpt = ""
> + ),
> globals.io_lookup_bool_option(type_layout, TypeLayoutOption, !IO),
> (
> TypeLayoutOption = no,
> @@ -783,6 +791,7 @@
> ReserveTagOpt,
> MinimalModelOpt,
> SinglePrecFloatOpt,
> + UseRegionsOpt,
> TypeLayoutOpt,
> InlineAllocOpt, " ",
> AnsiOpt, " ", Index: compiler/handle_options.m
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/compiler/handle_options.m,v
> retrieving revision 1.299
> diff -u -r1.299 handle_options.m
> --- compiler/handle_options.m 7 May 2007 06:59:23 -0000 1.299
> +++ compiler/handle_options.m 24 May 2007 04:41:34 -0000
> @@ -2149,7 +2149,9 @@
> % PIC (position independent code)?
> ; comp_lowlevel % what to do to target code
> ; comp_trace % tracing/debugging options
> - ; comp_stack_extend. % automatic stack extension
> + ; comp_stack_extend % automatic stack extension
> + ; comp_regions. % Whether or not to use region-based memory
> + % management.
>
> convert_grade_option(GradeString, Options0, Options) :-
> reset_grade_options(Options0, Options1),
> @@ -2485,6 +2487,10 @@
> grade_component_table("stseg", comp_stack_extend,
> [extend_stacks_when_needed - bool(no), stack_segments - bool(yes)],
> no, yes).
> + + % Region-based memory managment components
> +grade_component_table("rbmm", comp_regions, [use_regions - bool(yes)],
> + no, yes).
>
> :- pred reset_grade_options(option_table::in, option_table::out) is det.
>
> Index: compiler/options.m
> ===================================================================
> RCS file: /home/mercury/mercury1/repository/mercury/compiler/options.m,v
> retrieving revision 1.562
> diff -u -r1.562 options.m
> --- compiler/options.m 24 May 2007 01:37:44 -0000 1.562
> +++ compiler/options.m 24 May 2007 04:41:34 -0000
> @@ -293,7 +293,6 @@
> ; record_term_sizes_as_words
> ; record_term_sizes_as_cells
> ; experimental_complexity
> - ; region_analysis
>
> % (c) Miscellaneous
> ; gc
> @@ -307,6 +306,7 @@
> ; maybe_thread_safe_opt
> ; extend_stacks_when_needed
> ; stack_segments
> + ; use_regions
>
> % Data representation compilation model options
> ; reserve_tag
> @@ -560,6 +560,7 @@
> ; distance_granularity
> ; parallelism_target
> ; implicit_parallelism
> + ; region_analysis
>
> % Stuff for the CTGC system (structure sharing / structure reuse).
> ; structure_sharing_analysis
> @@ -1071,7 +1072,6 @@
> record_term_sizes_as_words - bool(no),
> record_term_sizes_as_cells - bool(no),
> experimental_complexity - string(""),
> - region_analysis - bool(no),
> % (c) Miscellaneous optional features
> gc - string("boehm"),
> parallel - bool(no),
> @@ -1079,6 +1079,7 @@
> maybe_thread_safe_opt - string("no"),
> extend_stacks_when_needed - bool(no),
> stack_segments - bool(no),
> + use_regions - bool(no),
> use_minimal_model_stack_copy - bool(no),
> use_minimal_model_own_stacks - bool(no),
> minimal_model_debug - bool(no),
> @@ -1330,6 +1331,7 @@
> distance_granularity - int(0),
> parallelism_target - int(4),
> implicit_parallelism - bool(no),
> + region_analysis - bool(no),
>
> % HLDS -> LLDS
> smart_indexing - bool(no),
> @@ -1848,6 +1850,7 @@
> long_option("maybe-thread-safe", maybe_thread_safe_opt).
> long_option("extend-stacks-when-needed", extend_stacks_when_needed).
> long_option("stack-segments", stack_segments).
> +long_option("use-regions", use_regions).
> % Data representation options
> long_option("reserve-tag", reserve_tag).
> long_option("use-minimal-model-stack_copy", use_minimal_model_stack_copy).
> @@ -3658,8 +3661,6 @@
> "\tlisted in the given file.",
> "\tThis option is supported for the C back-end, with",
> "\t--no-highlevel-code."
> -% "--region-analysis",
> -% "\tEnable the analysis for region based memory management"
> ]),
>
> io.write_string(" Miscellaneous optional features\n"),
> @@ -3704,6 +3705,9 @@
> "--stack-segments",
> "\tSpecify that code that increments a stack pointer must allocate",
> "\ta new stack segment when the limit on the old one is reached."
> + % RBMM is undocumented since it is still experimental.
> + %"--use-regions\t\t(grade modifier: `.rbmm')",
> + %"\tEnable support for region-based memory managment."
> ]),
>
> io.write_string("\n LLDS back-end compilation model options:\n"),
> @@ -4344,6 +4348,9 @@
> "\tinformation generated by mdprof_feedback.",
> "\tThe profiling feedback file can be specified using the",
> "\t--feedback file option."
> +% `--region-analysis' is not documented because it is still experimental.
> +% "--region-analysis",
> +% "\tEnable the analysis for region based-memory management."
> ]).
>
> :- pred options_help_hlds_llds_optimization(io::di, io::uo) is det.
> Index: doc/user_guide.texi
> ===================================================================
> RCS file: /home/mercury/mercury1/repository/mercury/doc/user_guide.texi,v
> retrieving revision 1.520
> diff -u -r1.520 user_guide.texi
> --- doc/user_guide.texi 24 May 2007 01:37:47 -0000 1.520
> +++ doc/user_guide.texi 24 May 2007 04:41:34 -0000
> @@ -7424,6 +7424,11 @@
> precision floats are used by default.
> This option is not yet supported for the IL or Java back-ends.
>
> + at c RBMM is undocumented since it is still experimental.
> + at c @sp 1
> + at c @item @code{--use-regions} (grades: any grade containing @samp{.rbmm})
> + at c Enable support for region-based memory managment."
> +
> @end table
>
> @node Developer compilation model options
> @@ -8165,6 +8170,12 @@
> parallelism) using deep profiling feedback information generated by
> mdprof_feedback. The profiling feedback file can be specified using the
> --feedback-file option.
> +
> + at c This is not documented because it is still experimental.
> + at c @sp 1
> + at c @item --region-analysis
> + at c @findex --region-analysis
> + at c Enable the analysis for region-based memory management.
>
> @end table
>
> Index: runtime/mercury_conf_param.h
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/runtime/mercury_conf_param.h,v
> retrieving revision 1.96
> diff -u -r1.96 mercury_conf_param.h
> --- runtime/mercury_conf_param.h 13 Apr 2007 04:56:44 -0000 1.96
> +++ runtime/mercury_conf_param.h 24 May 2007 04:41:34 -0000
> @@ -63,6 +63,7 @@
> ** MR_PIC_REG
> ** MR_HIGHTAGS
> ** MR_TAGBITS
> +** MR_USE_REGIONS
> ** See the documentation for
> ** --high-level-code
> ** --high-level-data
> @@ -85,6 +86,7 @@
> ** --pic-reg
> ** --tags
> ** --num-tag-bits
> +** --use-regions
> ** (respectively) in the mmc help message or the Mercury User's Guide.
> **
> ** MR_PIC
> Index: runtime/mercury_grade.h
> ===================================================================
> RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_grade.h,v
> retrieving revision 1.70
> diff -u -r1.70 mercury_grade.h
> --- runtime/mercury_grade.h 2 Mar 2007 02:56:41 -0000 1.70
> +++ runtime/mercury_grade.h 24 May 2007 04:41:34 -0000
> @@ -412,8 +412,16 @@
> #define MR_GRADE_OPT_PART_16 MR_GRADE_OPT_PART_15
> #endif
>
> -#define MR_GRADE MR_GRADE_PART_16
> -#define MR_GRADE_OPT MR_GRADE_OPT_PART_16
> +#if defined(MR_USE_REGIONS)
> + #define MR_GRADE_PART_17 MR_PASTE2(MR_GRADE_PART_16, _rbmm)
> + #define MR_GRADE_OPT_PART_17 MR_GRADE_OPT_PART_16 ".rbmm"
> +#else
> + #define MR_GRADE_PART_17 MR_GRADE_PART_16
> + #define MR_GRADE_OPT_PART_17 MR_GRADE_OPT_PART_16
> +#endif
> +
> +#define MR_GRADE MR_GRADE_PART_17
> +#define MR_GRADE_OPT MR_GRADE_OPT_PART_17
>
> #define MR_GRADE_VAR MR_PASTE2(MR_grade_,MR_GRADE)
> #define MR_GRADE_STRING MR_STRINGIFY(MR_GRADE)
> Index: scripts/canonical_grade.sh-subr
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/scripts/canonical_grade.sh-subr,v
> retrieving revision 1.17
> diff -u -r1.17 canonical_grade.sh-subr
> --- scripts/canonical_grade.sh-subr 2 Mar 2007 02:56:42 -0000 1.17
> +++ scripts/canonical_grade.sh-subr 24 May 2007 04:41:34 -0000
> @@ -170,3 +170,9 @@
> exit 1
> ;;
> esac
> +
> +case $use_regions in
> + true) GRADE="$GRADE.rbmm" ;;
> + false) ;;
> +esac
> +
> Index: scripts/init_grade_options.sh-subr
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/scripts/init_grade_options.sh-subr,v
> retrieving revision 1.28
> diff -u -r1.28 init_grade_options.sh-subr
> --- scripts/init_grade_options.sh-subr 2 Mar 2007 02:56:42 -0000 1.28
> +++ scripts/init_grade_options.sh-subr 24 May 2007 04:41:34 -0000
> @@ -51,6 +51,7 @@
> --low-level-debug
> --extend-stacks-when-needed
> --stack-segments
> + --use-regions
> See the documentation in the \"Invocation\" section
> of the Mercury User's Guide."
>
> @@ -86,6 +87,7 @@
> ll_debug=false
> extend_stacks=false
> stack_segments=false
> +use_regions=false
>
> case $# in
> 0) set - --grade "$DEFAULT_GRADE" ;;
> Index: scripts/mgnuc.in
> ===================================================================
> RCS file: /home/mercury/mercury1/repository/mercury/scripts/mgnuc.in,v
> retrieving revision 1.119
> diff -u -r1.119 mgnuc.in
> --- scripts/mgnuc.in 2 Mar 2007 02:56:42 -0000 1.119
> +++ scripts/mgnuc.in 24 May 2007 04:41:34 -0000
> @@ -409,6 +409,11 @@
> false) STACK_SEGMENTS_OPTS="" ;;
> esac
>
> +case $use_regions in
> + true) REGION_OPTS="-DMR_USE_REGIONS" ;;
> + false) REGION_OPTS="" ;;
> +esac
> +
> GCC_OPTS="$NEST_OPTS $ASM_OPTS $GOTO_OPTS $REG_OPTS"
>
> # check that special grades are only used with gcc
> @@ -609,6 +614,7 @@
> $SINGLE_PREC_FLOAT_OPTS\
> $SPLIT_OPTS\
> $THREAD_OPTS\
> + $REGION_OPTS\
> $PICREG_OPTS\
> $ARCH_OPTS\
> $ARG_OPTS\
> Index: scripts/parse_grade_options.sh-subr
> ===================================================================
> RCS file:
> /home/mercury/mercury1/repository/mercury/scripts/parse_grade_options.sh-subr,v
> retrieving revision 1.34
> diff -u -r1.34 parse_grade_options.sh-subr
> --- scripts/parse_grade_options.sh-subr 2 Mar 2007 02:56:42 -0000 1.34
> +++ scripts/parse_grade_options.sh-subr 24 May 2007 04:41:34 -0000
> @@ -200,6 +200,11 @@
> --no-stack-segments)
> stack_segments=false ;;
>
> + --use-regions)
> + use_regions=true;;
> + --no-use-regions)
> + use_regions=false ;; +
> -s|--grade)
> shift
> grade="$1";
> @@ -237,6 +242,7 @@
> ll_debug=false
> extend_stacks=false
> stack_segments=false
> + use_regions=false
>
> grade_pieces=`echo $grade | tr '.' ' '`
> for grade_piece in $grade_pieces
> @@ -489,6 +495,9 @@
> stack_segments=true
> ;;
>
> + rbmm)
> + use_regions=true
> + ;;
> *)
> echo "$0: unknown grade component \`$grade_piece'" 1>&2
> exit 1
>
>
> --------------------------------------------------------------------------
> 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
> --------------------------------------------------------------------------
>
--------------------------------------------------------------------------
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