[m-rev.] for review: reduce the number of publicly documented base grades
Julien Fischer
jfischer at opturion.com
Fri Apr 10 15:31:43 AEST 2015
For review by anyone.
As per the discussion in this thread,
<http://www.mercurylang.org/list-archives/reviews/2014-September/017300.html>.
This does not implement everything discussed in that thread, but it's a
start.
------------------------------
Reduce the number of publicly documented base grades.
Currently, 14 out of a possible 15 base grades are publicly documented (to some
extent). This changes hides the user facing documentation for seven of the
less useful base grades, namely: asm_jump, fast, jump, hlc_nest, hl, hl_nest
and il.
Change the configure script so that it will not automatically set the LLDS base
grade to asm_jump, fast or jump. (Developers can still manually select these
base grades using configure's '--with-llds-base-grade' option.)
Hide the user facing documentation for the .pic_reg and .agc grade components.
The former is an internal thing and the latter is an experimental feature
(which currently doesn't work anyway).
configure.ac:
When choosing the LLDS base grade, use the first one of asm_fast,
reg or none that is supported. Do not attempt to use asm_jump,
fast or jump.
Disable the documentation for the '--enable-agc-grades' option.
(The option itself is still supported.)
compiler/options.m:
doc/user_guide.texi:
Comment out, ignore or delete (as appropriate) documentation related
to the seven base grades and two grade components mentioned above.
Delete a left-over reference to the MPS collector.
Delete references to the IL backend in various spots.
Add reference to the Erlang backend where appropriate.
.INSTALL.in:
Delete the description of the '--enable-agc-grades' option.
README.MinGW:
README.MinGW-cross:
Delete references to the asm_jump grade.
Julien.
diff --git a/.INSTALL.in b/.INSTALL.in
index 150d756..5ee0dc9 100755
--- a/.INSTALL.in
+++ b/.INSTALL.in
@@ -126,9 +126,6 @@ make install
# The option --disable-nogc-grades prevents the installation
# of grades without garbage collection.
#
-# The option --enable-agc-grades causes the installation
-# of grades that support type-accurate garbage collection.
-#
# The option --disable-prof-grades prevents the installation
# of grades that support profiling.
#
diff --git a/README.MinGW b/README.MinGW
index 62ba269..bbeb359 100644
--- a/README.MinGW
+++ b/README.MinGW
@@ -2,9 +2,9 @@ This file documents the port of Mercury to Windows using either the MinGW
or MinGW64 ports of GCC, i.e. the i686-pc-mingw32 or x86_64-w64-mingw32
configurations.
-NOTE: There are problems with 64-bit executables in some low-level C grades,
-namely the 'asm_fast*' and 'asm_jump*' grades. The 'none*' and 'reg*' grades
-do appear to work correctly in our limited testing.
+NOTE: There are currently problems with 64-bit executalbes in the 'asm_fast*'
+grade. The 'none*' and 'reg*' grades do appear to work correctly in our
+limited testing.
-----------------------------------------------------------------------------
diff --git a/README.MinGW-cross b/README.MinGW-cross
index 5d4b5d5..6a3689f 100644
--- a/README.MinGW-cross
+++ b/README.MinGW-cross
@@ -7,9 +7,9 @@ After copying and adjusting some paths, the Mercury installation should be
usable on Windows. When combined with a native Mercury compiler, it can be
used to cross-compile Mercury applications for Windows.
-NOTE: There are problems with 64-bit executables in some low-level C grades,
-namely 'asm_fast*' and 'asm_jump*' grades. The 'none*' and 'reg*' grades
-do appear to work correctly in our limited testing.
+NOTE: There are currently problems with 64-bit executalbes in the 'asm_fast*'
+grade. The 'none*' and 'reg*' grades do appear to work correctly in our
+limited testing.
-----------------------------------------------------------------------------
diff --git a/compiler/options.m b/compiler/options.m
index 4c957e4..0979a90 100644
--- a/compiler/options.m
+++ b/compiler/options.m
@@ -3863,7 +3863,7 @@ options_help_output -->
"\tCheck the module for errors, but do not generate any code.",
"-C, --target-code-only",
"\tGenerate target code (i.e. C code in `<module>.c',",
- "\tIL code in `<module>.il', or Java code in",
+ "\tC# code in `<module>.cs', or Java code in",
"\t`<module>.java'), but not object code.",
"-c, --compile-only",
"\tGenerate C code in `<module>.c' and object code in `<module>.o'",
@@ -4311,16 +4311,27 @@ options_help_compilation_model -->
"",
"-s <grade>, --grade <grade>",
"\tSelect the compilation model. The <grade> should be one of",
- "\tthe base grades `none', `reg', `jump', `asm_jump', `fast', ",
- "\t`asm_fast', `hl', `hlc', `il', `java', `csharp' or `erlang'",
-% The hl, hl_nest, and hlc_nest are not yet documented, because
-% the --high-level-data option is not yet supported for C,
-% and the --gcc-nested-functions option is not yet documented.
-% The ilc grade is not documented because it is not useful;
-% it has been superceded by the il grade.
+ "\tthe base grades `none', `reg', `asm_fast', `hlc', `java',",
+ "\t`csharp' or `erlang'",
+
+% The following base grade components are not publicly documented:
+%
+% asm_jump
+% fast
+% jump These three are not tested as much as the other
+% three LLDS base grades and have proved to be a bit
+% delicate in any case.
+%
+% hlc_nest
+% hl_nest These two rely on GCC nested functions extension.
+%
+% hl Not useful.
+% il Currently broken.
+% ilc Deprecated.
+%
"\tor one of those with one or more of the grade modifiers",
"\t`.gc', `.prof', `.memprof', `.profdeep', `.tr',",
- "\t`.spf', `.stseg', `.debug', `.par' and/or `.pic_reg' appended.",
+ "\t`.spf', `.stseg', `.debug', and/or `.par' appended.",
"\tDepending on your particular installation, only a subset",
"\tof these possible grades will have been installed.",
"\tAttempting to use a grade which has not been installed",
@@ -4329,16 +4340,15 @@ options_help_compilation_model -->
io.write_string("\n Target selection compilation model options:\n"),
write_tabbed_lines([
- "--target c\t\t\t(grades: none, reg, jump, fast,",
- "\t\t\t\t\tasm_jump, asm_fast, hl, hlc)",
- "--target il\t\t\t(grades: il)",
+ %"--target c\t\t\t(grades: none, reg, jump, fast,",
+ %"\t\t\t\t\tasm_jump, asm_fast, hl, hlc)",
+ %"--target il\t\t\t(grades: il)",
+ "--target c\t\t\t(grades: none, reg, asm_fast)",
"--target csharp\t\t\t(grades: csharp)",
"--target java\t\t\t(grades: java)",
"--target erlang\t\t\t(grades: erlang)",
- "\tSpecify the target language: C, IL, C#, Java or Erlang.",
- "\tThe default is C. ""IL"" (also known as ""CIL"" or ""MSIL"")",
- "\tis the Intermediate Language for the .NET Common Language",
- "\tRuntime.",
+ "\tSpecify the target language: C, C#, Java or Erlang.",
+ "\tThe default is C.",
"\tTargets other than C imply `--high-level-code' (see below).",
% IL options are commented out to reduce confusion.
@@ -4417,13 +4427,13 @@ options_help_compilation_model -->
"\tgenerated code, and also output some profiling",
"\tinformation (the static call graph) to the file",
"\t`<module>.prof'.",
- "\tThis option is not supported for the IL, C# or Java back-ends.",
+ "\tThis option is not supported for the C#, Erlang or Java back-ends.",
"--memory-profiling\t\t(grade modifier: `.memprof')",
"\tEnable memory and call profiling.",
- "\tThis option is not supported for the IL, C# or Java back-ends.",
+ "\tThis option is not supported for the C#, Erlang or Java back-ends.",
"--deep-profiling\t\t(grade modifier: `.profdeep')",
"\tEnable deep profiling.",
- "\tThis option is not supported for the high-level C, IL, C#",
+ "\tThis option is not supported for the high-level C, C#, Erlang",
"\tor Java back-ends.",
% This option is not documented, it is intended for use by developers only.
@@ -4531,14 +4541,14 @@ options_help_compilation_model -->
"\t`accurate' is our own type-accurate copying GC;",
"\tit requires `--high-level-code'.",
"\t`automatic' means the target language provides it.",
- "\tThis is the case for the IL, C#, Java and Erlang back-ends,",
+ "\tThis is the case for the C#, Java and Erlang back-ends,",
"\twhich always use the garbage collector of the underlying",
"\timplementation.",
"--use-trail\t\t\t(grade modifier: `.tr')",
"\tEnable use of a trail.",
"\tThis is necessary for interfacing with constraint solvers,",
"\tor for backtrackable destructive update.",
- "\tThis option is not yet supported for the IL, C#, Java",
+ "\tThis option is not yet supported for the C#, Java",
"\tor Erlang back-ends.",
"--trail-segments\t\t\t(grade modifier: `.trseg')",
"\tAs above, but use a dynamically sized trail that is composed",
@@ -4575,30 +4585,37 @@ options_help_compilation_model -->
io.write_string("\n LLDS back-end compilation model options:\n"),
write_tabbed_lines([
- "--gcc-global-registers\t\t(grades: reg, fast, asm_fast)",
- "--no-gcc-global-registers\t(grades: none, jump, asm_jump)",
+ %"--gcc-global-registers\t\t(grades: reg, fast, asm_fast)",
+ %"--no-gcc-global-registers\t(grades: none, jump, asm_jump)",
+ "--gcc-global-registers\t\t(grades: reg, asm_fast)",
+ "--no-gcc-global-registers\t(grades: none)",
"\tSpecify whether or not to use GNU C's",
"\tglobal register variables extension.",
"\tThis option is ignored if the `--high-level-code' option is",
"\tenabled.",
- "--gcc-non-local-gotos\t\t(grades: jump, fast, asm_jump, asm_fast)",
+ %"--gcc-non-local-gotos\t\t(grades: jump, fast, asm_jump, asm_fast)",
+ %"--no-gcc-non-local-gotos\t(grades: none, reg)",
+ "--gcc-non-local-gotos\t\t(grades: asm_fast)",
"--no-gcc-non-local-gotos\t(grades: none, reg)",
"\tSpecify whether or not to use GNU C's",
"\t""labels as values"" extension.",
"\tThis option is ignored if the `--high-level-code' option is",
"\tenabled.",
- "--asm-labels\t\t\t(grades: asm_jump, asm_fast)",
- "--no-asm-labels\t\t\t(grades: none, reg, jump, fast)",
+ %"--asm-labels\t\t\t(grades: asm_jump, asm_fast)",
+ %"--no-asm-labels\t\t\t(grades: none, reg, jump, fast)",
+ "--asm-labels\t\t\t(grades: asm_fast)",
+ "--no-asm-labels\t\t\t(grades: none, reg)",
"\tSpecify whether or not to use GNU C's",
"\tasm extensions for inline assembler labels.",
"\tThis option is ignored if the `--high-level-code' option is",
"\tenabled.",
- "--pic-reg\t\t\t(grade modifier: `.pic_reg')",
- "[For Unix with intel x86 architecture only]",
- "\tSelect a register usage convention that is compatible,",
- "\twith position-independent code (gcc's `-fpic' option).",
- "\tThis is necessary when using shared libraries on Intel x86",
- "\tsystems running Unix. On other systems it has no effect.",
+ % This option is a developer only option.
+ %"--pic-reg\t\t\t(grade modifier: `.pic_reg')",
+ %"[For Unix with intel x86 architecture only]",
+ %"\tSelect a register usage convention that is compatible,",
+ %"\twith position-independent code (gcc's `-fpic' option).",
+ %"\tThis is necessary when using shared libraries on Intel x86",
+ %"\tsystems running Unix. On other systems it has no effect.",
"--stack-segments\t\t(grade modifier: `.stseg')",
"\tSpecify whether to use dynamically sized stacks that are",
"\tcomposed of small segments. This can help to avoid stack",
@@ -4618,7 +4635,8 @@ options_help_compilation_model -->
% "-H, --high-level-code\t\t\t(grades: hl_nest, hlc_nest)",
% The ilc grade is not documented because it is not useful;
% it has been superceded by the il grade.
- "-H, --high-level-code\t\t\t(grades: hl, hlc, il, csharp, java)",
+ %"-H, --high-level-code\t\t\t(grades: hl, hlc, il, csharp, java)",
+ "-H, --high-level-code\t\t\t(grades: hlc, csharp, java)",
"\tUse an alternative back-end that generates high-level code",
"\trather than the very low-level code that is generated by our",
"\toriginal back-end.",
@@ -4626,10 +4644,10 @@ options_help_compilation_model -->
% because the --gcc-nested-functions option is not yet documented.
% because it is not yet supported
% "--high-level-data\t\t\t(grades: hl, hl_nest, il, csharp, java)",
- "--high-level-data\t\t\t(grades: hl, il, csharp, java)",
+ "--high-level-data\t\t\t(grades: csharp, java)",
"\tUse an alternative higher-level data representation.",
% "--high-level\t\t\t(grades: hl, hl_nest, il, csharp, java)",
- "--high-level\t\t\t(grades: hl, il, csharp, java)",
+ "--high-level\t\t\t(grades: csharp, java)",
"\tAn abbreviation for `--high-level-code --high-level-data'."
% The --gcc-nested-functions option is not yet documented,
% because it doesn't pass our test suite, and it is
@@ -5507,8 +5525,8 @@ options_help_target_code_compilation -->
"\tEnable debugging of the generated target code.",
"\tIf the target language is C, this has the same effect as",
"\t`--c-debug' (see below).",
- "\tIf the target language is IL or C#, this causes the compiler to",
- "\tpass `/debug' to the IL assembler or C# compiler.)",
+ "\tIf the target language is C#, this causes the compiler to",
+ "\tpass `/debug' to the C# compiler.)",
"--cc <compiler-name>",
"\tSpecify which C compiler to use.",
diff --git a/configure.ac b/configure.ac
index dfd1609..ebf5270 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3287,15 +3287,15 @@ AC_SUBST([SYMPREFIX])
# BEST_LLDS_BASE_GRADE is the most efficient of the LLDS->C base grades
# that can be supported. If the user explicitly chooses a base grade
# using --with-llds-base-grade then we use that instead.
+#
+# NOTE: the base grade can also be one of asm_jump, fast and jump.
+# However, we do not publicly document those grades or encourage their
+# use by non-developers.
AC_ARG_WITH([llds-base-grade],
AC_HELP_STRING([--with-llds-base-grade=<base_grade>],
[Force the use of <base_grade> as the base LLDS grade.
- This is mainly useful for forcing the source distribution to
- compile in a grade other than the one which is chosen
- automatically.
- <base_grade> must be one of asm_fast, asm_jump, fast, jump,
- reg or none]),
+ <base_grade> must be one of asm_fast, reg or none]),
[user_llds_base_grade="$withval";mercury_cv_user_base_grade=yes],
[mercury_cv_user_base_grade=no]
)
@@ -3323,24 +3323,14 @@ case "$mercury_cv_user_base_grade" in
esac
;;
no)
- if test $mercury_cv_asm_labels = yes; then
- if test $mercury_cv_gcc_model_fast = yes; then
- BEST_LLDS_BASE_GRADE=asm_fast
- else
- BEST_LLDS_BASE_GRADE=asm_jump
- fi
- elif test $mercury_cv_gcc_labels = yes; then
- if test $mercury_cv_gcc_model_fast = yes; then
- BEST_LLDS_BASE_GRADE=fast
- else
- BEST_LLDS_BASE_GRADE=jump
- fi
+ if test $mercury_cv_asm_labels = yes -a \
+ $mercury_cv_gcc_model_fast = yes
+ then
+ BEST_LLDS_BASE_GRADE=asm_fast
+ elif test $mercury_cv_gcc_model_reg = yes; then
+ BEST_LLDS_BASE_GRADE=reg
else
- if test $mercury_cv_gcc_model_reg = yes; then
- BEST_LLDS_BASE_GRADE=reg
- else
- BEST_LLDS_BASE_GRADE=none
- fi
+ BEST_LLDS_BASE_GRADE=none
fi
# We used to force the use of the none base grade if the C compiler
@@ -3512,9 +3502,10 @@ AC_ARG_ENABLE(nogc-grades,
[install no-gc versions of the library]),
enable_nogc_grades="$enableval",enable_nogc_grades=no)
-AC_ARG_ENABLE(agc-grades,
- AC_HELP_STRING([--enable-agc-grades],
- [install accurate GC versions of the library]),
+# Not publicly documented since the agc grades are currently broken.
+#
+# --enable-agc-grades install accurate GC versions of the library
+AC_ARG_ENABLE(agc-grades, [],
enable_agc_grades="$enableval",enable_agc_grades=no)
AC_ARG_ENABLE(debug-grades,
diff --git a/doc/user_guide.texi b/doc/user_guide.texi
index 034eae4..dbb88a7 100644
--- a/doc/user_guide.texi
+++ b/doc/user_guide.texi
@@ -7645,13 +7645,13 @@ The set of aspects and their alternatives are:
@cindex none (compilation grade)
@cindex reg (compilation grade)
- at cindex jump (compilation grade)
- at cindex asm_jump (compilation grade)
- at cindex fast (compilation grade)
- at cindex asm_fast (compilation grade)
- at cindex hl (compilation grade)
+ at c @cindex jump (compilation grade)
+ at c @cindex asm_jump (compilation grade)
+ at c @cindex fast (compilation grade)
+ at c @cindex asm_fast (compilation grade)
+ at c @cindex hl (compilation grade)
@cindex hlc (compilation grade)
- at cindex il (compilation grade)
+ at c @cindex il (compilation grade)
@cindex csharp (compilation grade)
@cindex java (compilation grade)
@cindex erlang (compilation grade)
@@ -7675,7 +7675,7 @@ The set of aspects and their alternatives are:
@cindex .tr (grade modifier)
@cindex .trseg (grade modifier)
@cindex .gc (grade modifier)
- at cindex .agc (grade modifier)
+ at c @cindex .agc (grade modifier)
@cindex .spf (grade modifier)
@cindex .stseg (grade modifier)
@cindex .debug (grade modifier)
@@ -7693,7 +7693,8 @@ The set of aspects and their alternatives are:
(the default is system dependent).
@item What garbage collection strategy to use:
- at samp{gc}, and @samp{agc} (the default is no garbage collection).
+ at c @samp{agc}
+ at samp{gc} (the default is no garbage collection).
@item What kind of profiling to use:
@samp{prof},
@@ -7774,14 +7775,14 @@ and grade modifier; they are followed by descriptions of those options.
@item @samp{reg}
@code{--target c --gcc-global-registers --no-gcc-nonlocal-gotos --no-asm-labels}.
- at item @samp{jump}
- at code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
+ at c @item @samp{jump}
+ at c @code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
- at item @samp{fast}
- at code{--target c --gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
+ at c @item @samp{fast}
+ at c @code{--target c --gcc-global-registers --gcc-nonlocal-gotos --no-asm-labels}.
- at item @samp{asm_jump}
- at code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.
+ at c @item @samp{asm_jump}
+ at c @code{--target c --no-gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.
@item @samp{asm_fast}
@code{--target c --gcc-global-registers --gcc-nonlocal-gotos --asm-labels}.
@@ -7789,11 +7790,11 @@ and grade modifier; they are followed by descriptions of those options.
@item @samp{hlc}
@code{--target c --high-level-code}.
- at item @samp{hl}
- at code{--target c --high-level-code --high-level-data}.
+ at c @item @samp{hl}
+ at c @code{--target c --high-level-code --high-level-data}.
- at item @samp{il}
- at code{--target il --high-level-code --high-level-data}.
+ at c @item @samp{il}
+ at c @code{--target il --high-level-code --high-level-data}.
@item @samp{csharp}
@code{--target csharp --high-level-code --high-level-data}.
@@ -7807,8 +7808,8 @@ and grade modifier; they are followed by descriptions of those options.
@item @samp{.gc}
@code{--gc boehm}.
- at item @samp{.agc}
- at code{--gc accurate}.
+ at c @item @samp{.agc}
+ at c @code{--gc accurate}.
@item @samp{.prof}
@code{--profiling}.
@@ -7876,16 +7877,15 @@ and grade modifier; they are followed by descriptions of those options.
@cindex Target options
@table @asis
- at item @code{--target c} (grades: none, reg, jump, fast, asm_jump, asm_fast, hl, hlc)
- at itemx @code{--il}, @code{--target il} (grades: il)
+ at c @item @code{--target c} (grades: none, reg, jump, fast, asm_jump, asm_fast, hl, hlc)
+ at item @code{--target c} (grades: none, reg, asm_fast, hlc)
+ at c @itemx @code{--il}, @code{--target il} (grades: il)
@itemx @code{--csharp}, @code{--target csharp} (grades: csharp)
@itemx @code{--java}, @code{--target java} (grades: java)
@itemx @code{--erlang}, @code{--target erlang} (grades: erlang)
-Specify the target language used for compilation: C, IL, C#, Java
+Specify the target language used for compilation: C, C#, Java
or Erlang.
C means ANSI/ISO C, optionally with GNU C extensions (see below).
-IL means the Intermediate Language of the .NET Common Language Runtime.
-(IL is sometimes also known as "CIL" or "MSIL".)
Targets other than C and Erlang imply @samp{--high-level-code}.
@c @sp 1
@@ -7949,15 +7949,19 @@ the Erlang compiler to produce Erlang bytecode.
@table @asis
@sp 1
- at item @code{--gcc-global-registers} (grades: reg, fast, asm_fast)
- at itemx @code{--no-gcc-global-registers} (grades: none, jump, asm_jump)
+ at c @item @code{--gcc-global-registers} (grades: reg, fast, asm_fast)
+ at c @itemx @code{--no-gcc-global-registers} (grades: none, jump, asm_jump)
+ at item @code{--gcc-global-registers} (grades: reg, asm_fast)
+ at itemx @code{--no-gcc-global-registers} (grades: none)
@findex --gcc-global-registers
@findex --no-gcc-global-registers
Specify whether or not to use GNU C's global register variables extension.
This option is ignored if the @samp{--high-level-code} option is enabled.
@sp 1
- at item @code{--gcc-non-local-gotos} (grades: jump, fast, asm_jump, asm_fast)
+ at c @item @code{--gcc-non-local-gotos} (grades: jump, fast, asm_jump, asm_fast)
+ at c @itemx @code{--no-gcc-non-local-gotos} (grades: none, reg)
+ at item @code{--gcc-non-local-gotos} (grades: asm_fast)
@itemx @code{--no-gcc-non-local-gotos} (grades: none, reg)
@findex --gcc-non-local-gotos
@findex --no-gcc-non-local-gotos
@@ -7965,14 +7969,20 @@ Specify whether or not to use GNU C's ``labels as values'' extension.
This option is ignored if the @samp{--high-level-code} option is enabled.
@sp 1
- at item @code{--asm-labels} (grades: asm_jump, asm_fast)
- at itemx @code{--no-asm-labels} (grades: none, reg, jump, fast)
+ at c @item @code{--asm-labels} (grades: asm_jump, asm_fast)
+ at c @itemx @code{--no-asm-labels} (grades: none, reg, jump, fast)
+ at item @code{--asm-labels} (grades: asm_fast)
+ at itemx @code{--no-asm-labels} (grades: none, reg)
@findex --asm-labels
@findex --no-asm-labels
Specify whether or not to use GNU C's asm extensions
for inline assembler labels.
This option is ignored if the @samp{--high-level-code} option is enabled.
+ at ignore
+
+ This option is not useful for non-developers.
+
@sp 1
@item @code{--pic-reg} (grades: any grade containing `.pic_reg')
@findex --pic-reg
@@ -7986,6 +7996,7 @@ with position-independent code (gcc's `-fpic' option).
This is necessary when using shared libraries on Intel x86 systems
running Unix. On other systems it has no effect.
This option is also ignored if the @samp{--high-level-code} option is enabled.
+ at end ignore
@sp 1
@item @code{--stack-segments} (grades: any grade containing `.stseg')
@@ -8003,14 +8014,16 @@ This option is ignored if the @samp{--high-level-code} option is enabled.
@cindex MLDS back-end compilation model options
@table @asis
- at item @code{-H}, @code{--high-level-code} (grades: hl, hlc, il, csharp, java)
+ at c @item @code{-H}, @code{--high-level-code} (grades: hl, hlc, il, csharp, java)
+ at item @code{-H}, @code{--high-level-code} (grades: hlc, csharp, java)
@findex -H
@findex --high-level-code
Use an alternative back-end that generates high-level code
rather than the very low-level code that is generated by our
original back-end.
- at item @code{--high-level-data} (grades: hl, il, csharp, java)
+ at c @item @code{--high-level-data} (grades: hl, il, csharp, java)
+ at item @code{--high-level-data} (grades: csharp, java)
@findex --high-level-data
Use an alternative, higher-level data representation that uses structs
or classes, rather than treating all objects as arrays.
@@ -8192,27 +8205,29 @@ This option is supported for the C back-end, with @samp{--no-high-level-code}.
For now, this option itself is for developers only.
@sp 1
- at item @code{--gc @{none, boehm, accurate, automatic@}}
- at itemx @code{--garbage-collection @{none, boehm, accurate, automatic@}}
+ at c @item @code{--gc @{none, boehm, accurate, automatic@}}
+ at c @itemx @code{--garbage-collection @{none, boehm, accurate, automatic@}}
+ at item @code{--gc @{none, boehm, automatic@}}
+ at itemx @code{--garbage-collection @{none, boehm, automatic@}}
@cindex Garbage collection
@cindex Conservative garbage collection
@cindex Boehm (et al) conservative garbage collector
- at cindex Memory Pool System conservative garbage collector
- at cindex Accurate garbage collection
+ at c @cindex Accurate garbage collection
@cindex Automatic garbage collection
@findex --gc
@findex --garbage-collection
Specify which method of garbage collection to use.
-Grades containing @samp{csharp}, @samp{java}, @samp{il} or @samp{erlang} use
+ at c and @samp{il}.
+Grades containing @samp{csharp}, @samp{java}, or @samp{erlang} use
@samp{--gc automatic},
grades containing @samp{.gc} use @samp{--gc boehm},
other grades use @samp{--gc none}.
@samp{conservative} or @samp{boehm} is Hans Boehm et al's conservative
garbage collector.
- at samp{accurate} is our own type-accurate copying collector.
-It requires @samp{--high-level-code}.
+ at c @samp{accurate} is our own type-accurate copying collector.
+ at c It requires @samp{--high-level-code}.
@samp{automatic} means the target language provides it.
-This is the case for the IL, C#, Java and Erlang back-ends, which always use
+This is the case for the C#, Java and Erlang back-ends, which always use
the underlying implementation's garbage collector.
@sp 1
@@ -8256,7 +8271,7 @@ accessible via the @samp{thread} module in the standard library.
The runtime uses POSIX threads to achieve this, therefore it may also support
parallel execution of threads.
-The Java, C#, IL and Erlang grades support concurrency without this option.
+The Java, C# and Erlang grades support concurrency without this option.
Parallel execution may also be available depending on the target's runtime.
@sp 1
@@ -9329,8 +9344,8 @@ than to @samp{mmc}.
Enable debugging of the generated target code.
If the target language is C, this has the same effect as
@samp{--c-debug} (see below).
-If the target language is IL or C#, this causes the compiler to
-pass @samp{/debug} to the IL assembler or C# compiler.
+If the target language is C#, this causes the compiler to pass @samp{/debug} to
+the C# compiler.
@sp 1
@item --cc @var{compiler-name}
More information about the reviews
mailing list