Imported Upstream version 4.2.0.179

Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
This commit is contained in:
Xamarin Public Jenkins
2015-08-26 07:17:56 -04:00
committed by Jo Shields
parent 183bba2c9a
commit 6992685b86
7507 changed files with 90259 additions and 657307 deletions

View File

@@ -146,6 +146,13 @@ Defaults to 128.
.I nodebug
Instructs the AOT compiler to not output any debugging information.
.TP
.I no-direct-calls
This prevents the AOT compiler from generating a direct calls to a
method. The AOT compiler usually generates direct calls for certain
methods that do not require going through the PLT (for example,
methods that are known to not require a hook like a static
constructor) or call into simple internal calls.
.TP
.I dwarfdebug
Instructs the AOT compiler to emit DWARF debugging information. When
used together with the nodebug option, only DWARF debugging
@@ -333,31 +340,31 @@ In general, Mono has been tuned to use the default set of flags,
before using these flags for a deployment setting, you might want to
actually measure the benefits of using them.
.Sp
The following optimizations are implemented:
The following optimization flags are implemented in the core engine:
.nf
abcrem Array bound checks removal
all Turn on all optimizations
peephole Peephole postpass
aot Usage of Ahead Of Time compiled code
branch Branch optimizations
inline Inline method calls
cfold Constant folding
cmov Conditional moves [arch-dependency]
deadce Dead code elimination
consprop Constant propagation
copyprop Copy propagation
deadce Dead code elimination
linears Linear scan global reg allocation
cmov Conditional moves [arch-dependency]
shared Emit per-domain code
sched Instruction scheduling
intrins Intrinsic method implementations
tailc Tail recursion and tail calls
loop Loop related optimizations
fcmov Fast x86 FP compares [arch-dependency]
leaf Leaf procedures optimizations
aot Usage of Ahead Of Time compiled code
precomp Precompile all methods before executing Main
abcrem Array bound checks removal
ssapre SSA based Partial Redundancy Elimination
sse2 SSE2 instructions on x86 [arch-dependency]
float32 Perform 32-bit float arithmetic using 32-bit operations
gshared Enable generic code sharing.
inline Inline method calls
intrins Intrinsic method implementations
linears Linear scan global reg allocation
leaf Leaf procedures optimizations
loop Loop related optimizations
peephole Peephole postpass
precomp Precompile all methods before executing Main
sched Instruction scheduling
shared Emit per-domain code
sse2 SSE2 instructions on x86 [arch-dependency]
tailc Tail recursion and tail calls
.fi
.Sp
For example, to enable all the optimization but dead code
@@ -370,6 +377,23 @@ The flags that are flagged with [arch-dependency] indicate that the
given option if used in combination with Ahead of Time compilation
(--aot flag) would produce pre-compiled code that will depend on the
current CPU and might not be safely moved to another computer.
.RS
.ne 8
.PP
The following optimizations are supported
.TP
.I float32
Requests that the runtime performn 32-bit floating point operations
using only 32-bits. By default the Mono runtime tries to use the
highest precision available for floating point operations, but while
this might render better results, the code might run slower. This
options also affects the code generated by the LLVM backend.
.TP
.I inline
Controls whether the runtime should attempt to inline (the default),
or not inline methods invocations
.ne
.RE
.TP
\fB--runtime=VERSION\fR
Mono supports different runtime versions. The version used depends on the program
@@ -393,10 +417,6 @@ Using security without parameters is equivalent as calling it with the
"cas" parameter.
.PP
The following modes are supported:
.TP
.I cas
This allows mono to support declarative security attributes,
e.g. execution of Code Access Security (CAS) or non-CAS demands.
.TP
.I core-clr
Enables the core-clr security system, typically used for
@@ -1122,9 +1142,16 @@ to 100 percent. A value of 0 turns evacuation off.
.TP
\fB(no-)lazy-sweep\fR
Enables or disables lazy sweep for the Mark&Sweep collector. If
enabled, the sweep phase of the garbage collection is done piecemeal
whenever the need arises, typically during nursery collections. Lazy
sweeping is enabled by default.
enabled, the sweeping of individual major heap blocks is done
piecemeal whenever the need arises, typically during nursery
collections. Lazy sweeping is enabled by default.
.TP
\fB(no-)concurrent-sweep\fR
Enables or disables concurrent sweep for the Mark&Sweep collector. If
enabled, the iteration of all major blocks to determine which ones can
be freed and which ones have to be kept and swept, is done
concurrently with the running program. Concurrent sweeping is enabled
by default.
.TP
\fBstack-mark=\fImark-mode\fR
Specifies how application threads should be scanned. Options are
@@ -1283,14 +1310,13 @@ work, Mono needs to be compiled with the BINARY_PROTOCOL define on
sgen-gc.c. You can then use this command to explore the output
.nf
sgen-grep-binprot 0x1234 0x5678 < file
.fi
.TP
\fBnursery-canaries\fR
If set, objects allocated in the nursery are suffixed with a canary (guard)
word, which is checked on each minor collection. Can be used to detect/debug
heap corruption issues.
.fi
.ne
.RE
.TP
\fBdo-not-finalize\fR
If enabled, finalizers will not be run. Everything else will be
@@ -1298,7 +1324,10 @@ unaffected: finalizable objects will still be put into the
finalization queue where they survive until they're scheduled to
finalize. Once they're not in the queue anymore they will be
collected regularly.
.fi
.TP
\fBlog-finalizers\fR
Log verbosely around the finalization process to aid debugging.
.ne
.RE
.TP