.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
.I write-symbols
Instructs the AOT compiler to emit debug symbol information.
.PP
-For more information about AOT, see: http://www.mono-project.com/AOT
+For more information about AOT, see: http://www.mono-project.com/docs/advanced/aot/
.RE
.TP
\fB--attach=[options]\fR
in all configurations), Mono will use the LLVM optimization and code
generation engine to JIT or AOT compile.
.Sp
-For more information, consult: http://www.mono-project.com/Mono_LLVM
+For more information, consult: http://www.mono-project.com/docs/advanced/mono-llvm/
.TP
\fB--nollvm\fR
When using a Mono that has been compiled with LLVM support, it forces
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]
+ 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
- aot Usage of Ahead Of Time compiled code
+ loop Loop related optimizations
+ peephole Peephole postpass
precomp Precompile all methods before executing Main
- abcrem Array bound checks removal
- ssapre SSA based Partial Redundancy Elimination
+ sched Instruction scheduling
+ shared Emit per-domain code
sse2 SSE2 instructions on x86 [arch-dependency]
- gshared Enable generic code sharing.
+ tailc Tail recursion and tail calls
.fi
.Sp
For example, to enable all the optimization but dead code
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
"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
Moonlight/Silverlight applications. It provides a much simpler
-security system than CAS, see http://www.mono-project.com/Moonlight
+security system than CAS, see http://www.mono-project.com/docs/web/moonlight/
for more details and links to the descriptions of this new system.
.TP
.I validil
be on your dynamic linker library path.
.PP
A list of other third party profilers is available from Mono's web
-site (www.mono-project.com/Performance_Tips)
+site (www.mono-project.com/docs/advanced/performance-tips/)
.PP
Custom profiles are written as shared libraries. The shared library
must be called `mono-profiler-NAME.so' where `NAME' is the name of
.fi
.PP
+.SH DEBUGGING WITH LLDB
+If you are using LLDB, you can use the
+.B mono.py
+script to print some internal data structures with it. To use this,
+add this to your
+.B $HOME/.lldbinit
+file:
+.nf
+command script import $PREFIX/lib/mono/lldb/mono.py
+.fi
+.PP
+Where $PREFIX is the prefix value that you used when you configured
+Mono (typically /usr).
+.PP
+Once this is done, then you can inspect some Mono Runtime data structures,
+for example:
+.nf
+(lldb) p method
+
+(MonoMethod *) $0 = 0x05026ac0 [mscorlib]System.OutOfMemoryException:.ctor()
+.fi
.SH SERIALIZATION
Mono's XML serialization engine by default will use a reflection-based
approach to serialize which might be slow for continuous processing
.fi
.TP
+\fBMONO_ARM_FORCE_SOFT_FLOAT\fR
+When Mono is built with a soft float fallback on ARM and this variable is set to
+"1", Mono will always emit soft float code, even if a VFP unit is detected.
+.TP
\fBMONO_DISABLE_AIO\fR
If set, tells mono NOT to attempt using native asynchronous I/O services. In
that case, a default select/poll implementation is used. Currently only epoll()
.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
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
+
+.TP
+\fBdo-not-finalize\fR
+If enabled, finalizers will not be run. Everything else will be
+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.
+
+.TP
+\fBlog-finalizers\fR
+Log verbosely around the finalization process to aid debugging.
.ne
.RE
.TP
.Sp
For a complete description of recommended practices for application
deployment, see
-http://www.mono-project.com/Guidelines:Application_Deployment
+http://www.mono-project.com/docs/getting-started/application-deployment/
.TP
\fBMONO_RTC\fR
Experimental RTC support in the statistical profiler: if the user has
.Sp
The default is "win32".
.TP
+\fBMONO_THREAPOOL\fR
+This environment variable can be used to choose the implementation of
+the ThreadPool used at runtime. By default this uses the long term
+Mono threadpool implementation. But a new "microsoft" value switches
+the threadpool implementation to Microsoft's CoreCLR/ReferenceSource implementation.
+.TP
\fBMONO_TLS_SESSION_CACHE_TIMEOUT\fR
The time, in seconds, that the SSL/TLS session cache will keep it's entry to
avoid a new negotiation between the client and a server. Negotiation are very
page.
.SH MAILING LISTS
Mailing lists are listed at the
-http://www.mono-project.com/Mailing_Lists
+http://www.mono-project.com/community/help/mailing-lists/
.SH WEB SITE
http://www.mono-project.com
.SH SEE ALSO
mono-config(5), mozroots(1), mprof-report(1), pdb2mdb(1), xsp(1), mod_mono(8).
.PP
For more information on AOT:
-http://www.mono-project.com/AOT
+http://www.mono-project.com/docs/advanced/aot/
.PP
For ASP.NET-related documentation, see the xsp(1) manual page