diff options
author | Mirco Bauer <meebey@meebey.net> | 2009-05-21 20:31:32 +0200 |
---|---|---|
committer | Mirco Bauer <meebey@meebey.net> | 2009-05-21 20:31:32 +0200 |
commit | 9b2da0eb623df784864c8c5de5ad08051fb7e9f3 (patch) | |
tree | cdc4167e8e2cc2a6042ecfb70a21b42d32c6b103 /docs | |
parent | e11d0f5ec38de57728d18bd063266f809c7b72ba (diff) | |
download | mono-9b2da0eb623df784864c8c5de5ad08051fb7e9f3.tar.gz |
Imported Upstream version 2.4+dfsgupstream/2.4+dfsg
Diffstat (limited to 'docs')
65 files changed, 10063 insertions, 27 deletions
diff --git a/docs/ChangeLog b/docs/ChangeLog new file mode 100644 index 0000000000..7241365952 --- /dev/null +++ b/docs/ChangeLog @@ -0,0 +1,95 @@ +2008-12-12 Mark Probst <mark.probst@gmail.com> + + * mini-porting.txt: Added some details about function descriptors + and emulated opcodes. + +2008-12-08 Jonathan Pryor <jpryor@novell.com> + + * mono-file-formats.source, mono-tools.source: Place these under the + new "Commands and Files" node, and remove nay intermediate nodes. + +2008-11-20 Jonathan Pryor <jpryor@novell.com> + + * Makefile.am (sources_DATA): Add mono-file-formats.source, + mono-tools.source. + +2008-11-20 Raja R Harinath <harinath@hurrynot.org> + + Remove unnecessary rebuilds of the html directory + * docs.make (monoapi.zip): Make slightly more unforgiving, by + using '&&' instead of ';' to sequence commands. + (mono-tools.zip, mono-file-formats.zip): Likewise. + * Makefile.am (monoapi.zip, mono-tools.zip, mono-fileformats.zip): + Likewise. + (convert.exe): Don't depend on Makefile.am or docs.make. + +2008-11-19 Raja R Harinath <harinath@hurrynot.org> + + Fix srcdir != builddir, and add idiom for multi-output commands + * docs.make (monoapi.zip): Handle the case where 'monoapi.tree' + exists but 'monoapi.zip' doesn't. IOW, we should rebuild + monoapi.zip with 'rm monoapi.zip; make'. + (mono-tools.zip, mono-file-formats.zip): Likewise. + * Makefile.am (monoapi.zip, mono-tools.zip, mono-fileformats.zip): + Likewise. + (monoapi.tree): Don't use $< in an explicit rule. + (mono-tools.tree, mono-file-formats.tree): Likewise. + +2008-11-18 Jonathan Pryor <jpryor@novell.com> + + * Makefile.am (EXTRA_DIST): Add mono-file-formats{.config,.source} and + mono-tools{.config,.source} (fixes the build). + +2008-11-18 Jonathan Pryor <jpryor@novell.com> + + * docs.make, Makefile.am: Build mono-file-formats{.tree,.zip}, + mono-tool{.tree,.zip} files. + * mono-file-formats.config, mono-tools.config: Alter paths to man + pages so that they're valid for building from mono/docs. + * monoapi.make: Rename to docs.make. + +2008-11-01 Raja R Harinath <harinath@hurrynot.org> + + * Makefile.am: Clean up for srcdir != builddir. + (deploy/.stamp): Compute location of 'mono-wrapper' and pass to exdoc. + * exdoc (mono-wrapper): Use $runtimedir to look for 'mono-wrapper'. + +2008-10-31 Jonathan Pryor <jpryor@novell.com> + + * check, Makefile.am (EXTRA_DIST): Rename to check-exports. This was + needed to fix `make distdir...`, because (1) with a file named + `check` which (2) was listed in $(EXTRA_DIST), while (3) `check` is + ALSO a .PHONY target, this caused make to look for the `check` file, + not find it due to (3), and then proceed to try to build convert.exe + from convert.cs...for reasons I don't care about. This obviously + can't work during `make distdir`, as mcs hasn't been built yet, thus + leading to pain, suffering, and a broken build. + +2008-10-30 Jonathan Pryor <jpryor@novell.com> + + * . (svn:ignore), deploy (svn:ignore): Ignore generated files. + * AgilityPack.dll, api-style.css, ChangeLog, check, check-coverage, + convert.cs, current-api, deploy, documented, exdoc, ignore, + mono-api-metadata.html, monoapi.source, produce-lists, public, + public-api, README, sources, toc.xml, TODO, wapi: Copy from + ../mono/docscripts. + * exdoc: Use the in-tree mono program to run convert.exe. + * Makefile.am: Mention files to clean/distribute; extract + documentation (with exdoc) and then assemble documentation (with + monoapi.make's assemble target) for use by monodoc. + * monoapi.make: Added; Makefile to use mcs' buid/rules.make to compile + convert.cs and assemble documentation. (This is a separate file so + that we can include mcs' build/rules.make, which needs topdir set to + behave properly BUT must be $(mcs_topdir) from Makefile.am's + perspective.) + * monoapi.source: Add a /monodoc/node element for use with monodoc 2.2. + +2006-11-19 Miguel de Icaza <miguel@novell.com> + + * exdoc: Move to use CSS instead of tables, this will break + GtkHTML rendering. + + * ignore: Updated with more hidden APIs. + + * Bunch of documentation work. + diff --git a/docs/Makefile.am b/docs/Makefile.am index c74733ebdd..41d1977cf3 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,14 +1,38 @@ +sourcesdir = $(prefix)/lib/monodoc/sources + +sources_DATA = \ + mono-file-formats.source \ + mono-tools.source \ + monoapi.source \ + $(ASSEMBLED_DOCS) + +ASSEMBLED_DOCS = \ + mono-file-formats.tree mono-file-formats.zip \ + mono-tools.tree mono-tools.zip \ + monoapi.tree monoapi.zip + EXTRA_DIST = \ abc-removal.txt \ + AgilityPack.dll \ aot-compiler.txt \ + api-style.css \ assembly-bundle \ + check-exports \ + check-coverage \ + convert.cs \ + current-api \ + deploy \ + docs.make \ + documented \ embedded-api \ exception-handling.txt \ exceptions \ + exdoc \ file-share-modes \ gc-issues \ gc-variables-in-c \ glossary.txt \ + ignore \ internal-calls \ ir-desc \ jit-imt \ @@ -19,17 +43,68 @@ EXTRA_DIST = \ magic.diff \ mini-doc.txt \ mini-porting.txt \ + mono-api-metadata.html \ + mono-file-formats.config\ + mono-file-formats.source\ mono_handle_d \ + mono-tools.config \ + mono-tools.source \ + monoapi.source \ new-regalloc \ object-layout \ opcode-decomp.txt \ precise-gc \ + produce-lists \ + public \ + public-api \ + README \ release-notes-1.0.html \ remoting \ ssapre.txt \ stack-alignment \ stack-overflow.txt \ - threading \ thread-safety.txt \ + threading \ + toc.xml \ + TODO \ tree-mover.txt \ unmanaged-calls + +dist-hook: + $(mkdir_p) $(distdir)/sources + $(mkdir_p) $(distdir)/svgs + cp sources/* $(distdir)/sources + cp svgs/* $(distdir)/svgs + +clean-local: + -rm -Rf $(srcdir)/html + -rm -f $(srcdir)/deploy/* $(srcdir)/convert.exe* + -cd $(srcdir) && rm -f $(ASSEMBLED_DOCS) + +monoapi.zip: monoapi.tree + @test -f $@ || { rm -f $(srcdir)/monoapi.tree && $(MAKE) monoapi.tree; } +monoapi.tree: docs.make Makefile.am toc.xml $(srcdir)/deploy/.stamp + cd $(srcdir) && cp api-style.css deploy + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +mono-tools.zip: mono-tools.tree + @test -f $@ || { rm -f $(srcdir)/mono-tools.tree && $(MAKE) mono-tools.tree; } +mono-tools.tree: docs.make Makefile.am $(srcdir)/deploy/.stamp + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +mono-file-formats.zip: mono-file-formats.tree + @test -f $@ || { rm -f $(srcdir)/mono-file-formats.tree && $(MAKE) mono-file-formats.tree; } +mono-file-formats.tree: docs.make Makefile.am $(srcdir)/deploy/.stamp + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +$(srcdir)/deploy/.stamp: convert.exe Makefile.am + $(mkdir_p) $(srcdir)/html + runtimedir=`cd ../runtime && pwd`; export runtimedir; \ + cd $(srcdir) && MONO_PATH=$(mcs_topdir_from_srcdir)/class/lib/net_2_0 perl ./exdoc -h . ../mono/*/*.c + touch $@ + +extract: $(srcdir)/deploy/.stamp + +convert.exe: convert.cs AgilityPack.dll + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) convert.exe + diff --git a/docs/Makefile.in b/docs/Makefile.in index 4a87eeead5..6a1a03d9d4 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -13,6 +13,7 @@ # PARTICULAR PURPOSE. @SET_MAKE@ + VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -33,17 +34,28 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = docs -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + ChangeLog TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/nls.m4 $(top_srcdir)/po.m4 \ + $(top_srcdir)/progtest.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(sourcesdir)" +sourcesDATA_INSTALL = $(INSTALL_DATA) +DATA = $(sources_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -91,12 +103,16 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GMODULE_CFLAGS = @GMODULE_CFLAGS@ GMODULE_LIBS = @GMODULE_LIBS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_BOEHM_GC = @HAVE_BOEHM_GC@ +HAVE_MSGFMT = @HAVE_MSGFMT@ HOST_CC = @HOST_CC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -120,6 +136,9 @@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ @@ -140,9 +159,13 @@ SHELL = @SHELL@ SQLITE = @SQLITE@ SQLITE3 = @SQLITE3@ STRIP = @STRIP@ +USE_NLS = @USE_NLS@ VERSION = @VERSION@ X11 = @X11@ XATTR_LIB = @XATTR_LIB@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -215,17 +238,40 @@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +sourcesdir = $(prefix)/lib/monodoc/sources +sources_DATA = \ + mono-file-formats.source \ + mono-tools.source \ + monoapi.source \ + $(ASSEMBLED_DOCS) + +ASSEMBLED_DOCS = \ + mono-file-formats.tree mono-file-formats.zip \ + mono-tools.tree mono-tools.zip \ + monoapi.tree monoapi.zip + EXTRA_DIST = \ abc-removal.txt \ + AgilityPack.dll \ aot-compiler.txt \ + api-style.css \ assembly-bundle \ + check-exports \ + check-coverage \ + convert.cs \ + current-api \ + deploy \ + docs.make \ + documented \ embedded-api \ exception-handling.txt \ exceptions \ + exdoc \ file-share-modes \ gc-issues \ gc-variables-in-c \ glossary.txt \ + ignore \ internal-calls \ ir-desc \ jit-imt \ @@ -236,18 +282,30 @@ EXTRA_DIST = \ magic.diff \ mini-doc.txt \ mini-porting.txt \ + mono-api-metadata.html \ + mono-file-formats.config\ + mono-file-formats.source\ mono_handle_d \ + mono-tools.config \ + mono-tools.source \ + monoapi.source \ new-regalloc \ object-layout \ opcode-decomp.txt \ precise-gc \ + produce-lists \ + public \ + public-api \ + README \ release-notes-1.0.html \ remoting \ ssapre.txt \ stack-alignment \ stack-overflow.txt \ - threading \ thread-safety.txt \ + threading \ + toc.xml \ + TODO \ tree-mover.txt \ unmanaged-calls @@ -289,6 +347,23 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs +install-sourcesDATA: $(sources_DATA) + @$(NORMAL_INSTALL) + test -z "$(sourcesdir)" || $(MKDIR_P) "$(DESTDIR)$(sourcesdir)" + @list='$(sources_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(sourcesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sourcesdir)/$$f'"; \ + $(sourcesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sourcesdir)/$$f"; \ + done + +uninstall-sourcesDATA: + @$(NORMAL_UNINSTALL) + @list='$(sources_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sourcesdir)/$$f'"; \ + rm -f "$(DESTDIR)$(sourcesdir)/$$f"; \ + done tags: TAGS TAGS: @@ -322,10 +397,16 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook check-am: all-am check: check-am -all-am: Makefile +all-am: Makefile $(DATA) installdirs: + for dir in "$(DESTDIR)$(sourcesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -352,7 +433,7 @@ maintainer-clean-generic: @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic clean-libtool mostlyclean-am +clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile @@ -368,7 +449,7 @@ info: info-am info-am: -install-data-am: +install-data-am: install-sourcesDATA install-dvi: install-dvi-am @@ -402,21 +483,60 @@ ps: ps-am ps-am: -uninstall-am: +uninstall-am: uninstall-sourcesDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - + clean-local dist-hook distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-sourcesDATA install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am uninstall uninstall-am uninstall-sourcesDATA + + +dist-hook: + $(mkdir_p) $(distdir)/sources + $(mkdir_p) $(distdir)/svgs + cp sources/* $(distdir)/sources + cp svgs/* $(distdir)/svgs + +clean-local: + -rm -Rf $(srcdir)/html + -rm -f $(srcdir)/deploy/* $(srcdir)/convert.exe* + -cd $(srcdir) && rm -f $(ASSEMBLED_DOCS) + +monoapi.zip: monoapi.tree + @test -f $@ || { rm -f $(srcdir)/monoapi.tree && $(MAKE) monoapi.tree; } +monoapi.tree: docs.make Makefile.am toc.xml $(srcdir)/deploy/.stamp + cd $(srcdir) && cp api-style.css deploy + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +mono-tools.zip: mono-tools.tree + @test -f $@ || { rm -f $(srcdir)/mono-tools.tree && $(MAKE) mono-tools.tree; } +mono-tools.tree: docs.make Makefile.am $(srcdir)/deploy/.stamp + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +mono-file-formats.zip: mono-file-formats.tree + @test -f $@ || { rm -f $(srcdir)/mono-file-formats.tree && $(MAKE) mono-file-formats.tree; } +mono-file-formats.tree: docs.make Makefile.am $(srcdir)/deploy/.stamp + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) $@ + +$(srcdir)/deploy/.stamp: convert.exe Makefile.am + $(mkdir_p) $(srcdir)/html + runtimedir=`cd ../runtime && pwd`; export runtimedir; \ + cd $(srcdir) && MONO_PATH=$(mcs_topdir_from_srcdir)/class/lib/net_2_0 perl ./exdoc -h . ../mono/*/*.c + touch $@ + +extract: $(srcdir)/deploy/.stamp + +convert.exe: convert.cs AgilityPack.dll + cd $(srcdir) && $(MAKE) -f docs.make topdir=$(mcs_topdir_from_srcdir) convert.exe # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/docs/README b/docs/README new file mode 100644 index 0000000000..b705b8f6ec --- /dev/null +++ b/docs/README @@ -0,0 +1,81 @@ +* Scripts to maintain the Mono VM internal API + +Layout +------ + + sources/ + mono-api-*.html + + Contains the various source files, each source file + contains HTML, and a line for each API call like this: + + <h4><a name="api:mono_something">mono_something</a></h4> + + The format is static, notice that the tools actually search + for the above format and process that (both the tools here, + as well as the upcoming Monodoc tools and index creation + tools). + + The files can contain any ammount of extra information. + + The documentation from the source code is then merged with + these files and the header/footer information to produce + the deploy directory. + + deploy/ + + Scripts produce a ready-to-use set of XHTML files that can + be either fed into a monodoc XHTML provider or can be published + directly on the web. + +PROGRAMS +-------- +* check-coverage + + Run this script every once in a while to make sure that a + public symbol that has been added to Mono has a corresponding + section on the mono-vm-api.html + + This works by looking for the <h4>APICALL</h4> pattern on the + HTML file. + +* produce-lists + + Produces the public-api and wapi files that contain the public + libmono API. + +* exdoc + + Extracts the embedded documentation from the sources. + +* check + + This script is used to verify which routines are missing inline + documentation, usage: + + check mono/metadata/*.c + +* convert.cs + + Converts an HTML file into a valid XML document, uses the + AgilityPack.dll. The sources to this DLL live in GNOME CVS + module beagle/Filters/AgilityPack. + + A binary is shipped for our convenience. + +DATAFILES: +--------- + + ignore + + Contains the list of public symbols that should be + ignored, they come from tests for example, or are known + to be exposed. + + This is consumed by produce-lists + + public-api + wapi + These two are produced by the produce-lists script + and it documents all the public methods. + diff --git a/docs/TODO b/docs/TODO new file mode 100644 index 0000000000..202887aeeb --- /dev/null +++ b/docs/TODO @@ -0,0 +1,37 @@ +* Methods that should be static, but I cant commit now because of other patches: + + mono_class_set_failure + mono_class_get_nullable_param + mono_assembly_loaded_full + +* Methods that might need to be static, but am not sure: + mono_assembly_loaded_full + mono_image_loaded_by_guid_full + mono_image_loaded_full + +* Namespacing + + Do we need to re-namespace the published helper_ routines to avoid + poluting the namespace? + + helper_compile_generic_method + helper_ldstr + helper_ldstr_mscorlib + helper_newobj_mscorlib + helper_stelem_ref + helper_stelem_ref_check + +* Need to make public: + + If the mono_mb_ interface is public, we need to make public: + + MonoWrapperType + MonoDefaults. + +* Generate a table of contents at the begining of each page for APIs. + +* Fill in with a concept guide + +* Install documentation into monodoc's standard location. + +* Add support for inserting "api:" nodes into the index in the Monodoc XHTML provider.
\ No newline at end of file diff --git a/docs/api-style.css b/docs/api-style.css new file mode 100644 index 0000000000..910ac49e55 --- /dev/null +++ b/docs/api-style.css @@ -0,0 +1,40 @@ + h3 { + font-size: 18px; + padding-bottom: 4pt; + border-bottom: 2px solid #dddddd; + } + + .api { + border: 1px solid; + padding: 10pt; + margin: 10pt; + } + + .api-entry { + border-bottom: none; + font-size: 18px; + } + + .prototype { + border: 1px solid; + background-color: #f2f2f2; + padding: 5pt; + margin-top: 5pt; + margin-bottom: 5pt; + } + + .header { + border: 1px solid; + padding: 0 0 5pt 5pt; + margin: 10pt; + white-space: pre; + font-family: monospace; + } + + .code { + border: 1px solid; + padding: 0 0 5pt 5pt; + margin: 10pt; + white-space: pre; + font-family: monospace; + } diff --git a/docs/check-coverage b/docs/check-coverage new file mode 100644 index 0000000000..b73ffa9c35 --- /dev/null +++ b/docs/check-coverage @@ -0,0 +1,16 @@ +#!/bin/sh +add_h4() +{ + sed -e 's,^\(.*\)$,<h4><a name="api:\1">\1</a></h4>,' +} + +dir=`dirname $0` +sh $dir/produce-lists || exit 1 +cat $dir/public-api $dir/wapi > $dir/current-api +for i in `cat $dir/current-api`; do + if grep "api:$i" $dir/sources/mono-api-*.html > /dev/null; then + true; + else + echo "Missing: $i from the template"; + fi +done diff --git a/docs/check-exports b/docs/check-exports new file mode 100644 index 0000000000..549a0d4ae5 --- /dev/null +++ b/docs/check-exports @@ -0,0 +1,15 @@ +#!/bin/sh +dir=`dirname $0` + +for file in $*; +do + perl $dir/exdoc $file | grep ^Function: | sed -e 's/Function: //' -e 's/://' > documented + nm `dirname $file`/.libs/`basename $file .c`.o | grep ' T ' | sed 's/.* T //' > public + for i in `cat public | grep -v $dir/ignore`; do + if grep $i documented > /dev/null; then + true + else + echo $i is not documented | grep -v ves_icall + fi + done +done diff --git a/docs/convert.cs b/docs/convert.cs new file mode 100644 index 0000000000..50680f6713 --- /dev/null +++ b/docs/convert.cs @@ -0,0 +1,12 @@ +using HtmlAgilityPack; + +class Convert { + + static void Main (string [] args) + { + HtmlDocument doc = new HtmlDocument(); + doc.Load(args [0]); + doc.OptionOutputAsXml = true; + doc.Save(args [1]); + } +} diff --git a/docs/current-api b/docs/current-api new file mode 100644 index 0000000000..1e12ae493a --- /dev/null +++ b/docs/current-api @@ -0,0 +1,1030 @@ +mono_check_corlib_version +mono_domain_has_type_resolve +mono_domain_is_unloading +mono_domain_owns_vtable_slot +mono_domain_set +mono_domain_try_type_resolve +mono_install_runtime_cleanup +mono_runtime_cleanup +mono_runtime_init +mono_runtime_is_shutting_down +mono_runtime_quit +mono_assemblies_cleanup +mono_assembly_addref +mono_assembly_close +mono_assembly_get_image +mono_assembly_get_main +mono_assembly_getrootdir +mono_assembly_load +mono_assembly_loaded +mono_assembly_loaded_full +mono_assembly_load_from +mono_assembly_load_full +mono_assembly_name_free +mono_assembly_name_parse +mono_assembly_names_equal +mono_assembly_open +mono_install_assembly_load_hook +mono_install_assembly_postload_refonly_search_hook +mono_install_assembly_postload_search_hook +mono_install_assembly_preload_hook +mono_install_assembly_refonly_preload_hook +mono_install_assembly_refonly_search_hook +mono_install_assembly_search_hook +mono_register_bundled_assemblies +mono_set_dirs +mono_stringify_assembly_name +mono_gc_alloc_fixed +mono_gc_base_init +mono_gc_collect +mono_gc_disable +mono_gc_enable +mono_gc_enable_events +mono_gc_free_fixed +mono_gc_get_heap_size +mono_gc_get_used_size +mono_gc_invoke_finalizers +mono_gc_is_gc_thread +mono_gc_make_descr_from_bitmap +mono_gc_max_generation +mono_gc_pending_finalizers +mono_gc_register_thread +mono_gc_wbarrier_arrayref_copy +mono_gc_wbarrier_generic_store +mono_gc_wbarrier_set_arrayref +mono_gc_wbarrier_set_field +mono_gc_wbarrier_value_copy +mono_gc_weak_link_add +mono_gc_weak_link_get +mono_gc_weak_link_remove +mono_object_is_alive +mono_array_class_get +mono_array_element_size +mono_bounded_array_class_get +mono_class_array_element_size +mono_class_data_size +mono_class_enum_basetype +mono_classes_cleanup +mono_class_from_generic_parameter +mono_class_from_mono_type +mono_class_from_name +mono_class_from_name_case +mono_class_from_typeref +mono_class_get +mono_class_get_byref_type +mono_class_get_cctor +mono_class_get_element_class +mono_class_get_events +mono_class_get_event_token +mono_class_get_exception_for_failure +mono_class_get_field +mono_class_get_field_from_name +mono_class_get_fields +mono_class_get_field_token +mono_class_get_finalizer +mono_class_get_flags +mono_class_get_full +mono_class_get_image +mono_class_get_implemented_interfaces +mono_class_get_interfaces +mono_class_get_method_from_name +mono_class_get_method_from_name_flags +mono_class_get_methods +mono_class_get_name +mono_class_get_namespace +mono_class_get_nested_types +mono_class_get_nesting_type +mono_class_get_nullable_param +mono_class_get_parent +mono_class_get_properties +mono_class_get_property_from_name +mono_class_get_property_token +mono_class_get_rank +mono_class_get_type +mono_class_get_type_token +mono_class_inflate_generic_method +mono_class_inflate_generic_type +mono_class_init +mono_class_instance_size +mono_class_is_assignable_from +mono_class_is_enum +mono_class_is_nullable +mono_class_is_open_constructed_type +mono_class_is_subclass_of +mono_class_is_valuetype +mono_class_layout_fields +mono_class_min_align +mono_class_name_from_token +mono_class_needs_cctor_run +mono_class_num_events +mono_class_num_fields +mono_class_num_methods +mono_class_num_properties +mono_class_set_failure +mono_class_setup_methods +mono_class_setup_mono_type +mono_class_setup_parent +mono_class_setup_supertypes +mono_class_setup_vtable +mono_class_setup_vtable_general +mono_class_value_size +mono_dup_array_type +mono_event_get_add_method +mono_event_get_flags +mono_event_get_name +mono_event_get_parent +mono_event_get_raise_method +mono_event_get_remove_method +mono_field_get_data +mono_field_get_flags +mono_field_get_name +mono_field_get_parent +mono_field_get_type +mono_get_inflated_generic_class +mono_get_shared_generic_inst +mono_image_add_to_name_cache +mono_install_get_class_from_name +mono_install_lookup_dynamic_token +mono_ldtoken +mono_lookup_dynamic_token +mono_lookup_dynamic_token_class +mono_property_get_flags +mono_property_get_get_method +mono_property_get_name +mono_property_get_parent +mono_property_get_set_method +mono_ptr_class_get +mono_type_get_full_name +mono_type_get_name +mono_type_get_name_full +mono_type_get_underlying_type +mono_class_describe_statics +mono_disasm_code +mono_disasm_code_one +mono_method_desc_free +mono_method_desc_from_method +mono_method_desc_full_match +mono_method_desc_match +mono_method_desc_new +mono_method_desc_search_in_class +mono_method_desc_search_in_image +mono_method_full_name +mono_object_describe +mono_object_describe_fields +mono_signature_get_desc +mono_type_full_name +mono_type_get_desc +mono_value_describe_fields +_mono_debug_address_from_il_offset +mono_debug_close_mono_symbol_file +mono_debug_open_mono_symbols +mono_debug_symfile_lookup_location +mono_debug_symfile_lookup_method +mono_decimal2double +mono_decimal2Int64 +mono_decimal2string +mono_decimal2UInt64 +mono_decimalCompare +mono_decimalDiv +mono_decimalFloorAndTrunc +mono_decimalIncr +mono_decimalIntDiv +mono_decimalMult +mono_decimalRound +mono_decimalSetExponent +mono_double2decimal +mono_string2decimal +mono_cleanup +mono_context_get +mono_context_set +mono_debugger_check_runtime_version +mono_domain_assembly_open +mono_domain_create +mono_domain_foreach +mono_domain_free +mono_domain_get +mono_domain_get_by_id +mono_domain_get_id +mono_domain_get_tls_key +mono_domain_set_internal +mono_get_array_class +mono_get_boolean_class +mono_get_byte_class +mono_get_char_class +mono_get_corlib +mono_get_double_class +mono_get_enum_class +mono_get_exception_class +mono_get_int16_class +mono_get_int32_class +mono_get_int64_class +mono_get_intptr_class +mono_get_object_class +mono_get_root_domain +mono_get_sbyte_class +mono_get_single_class +mono_get_string_class +mono_get_thread_class +mono_get_uint16_class +mono_get_uint32_class +mono_get_uint64_class +mono_get_uintptr_class +mono_get_void_class +mono_init +mono_init_from_assembly +mono_init_version +mono_jit_info_get_code_size +mono_jit_info_get_code_start +mono_jit_info_get_method +mono_jit_info_table_find +mono_string_equal +mono_string_hash +mono_environment_exitcode_get +mono_environment_exitcode_set +mono_exception_from_name +mono_exception_from_name_domain +mono_exception_from_name_msg +mono_exception_from_name_two_strings +mono_exception_from_token +mono_get_exception_appdomain_unloaded +mono_get_exception_argument +mono_get_exception_argument_null +mono_get_exception_argument_out_of_range +mono_get_exception_arithmetic +mono_get_exception_array_type_mismatch +mono_get_exception_bad_image_format +mono_get_exception_cannot_unload_appdomain +mono_get_exception_divide_by_zero +mono_get_exception_execution_engine +mono_get_exception_file_not_found +mono_get_exception_file_not_found2 +mono_get_exception_index_out_of_range +mono_get_exception_invalid_cast +mono_get_exception_invalid_operation +mono_get_exception_io +mono_get_exception_missing_field +mono_get_exception_missing_method +mono_get_exception_not_implemented +mono_get_exception_not_supported +mono_get_exception_null_reference +mono_get_exception_overflow +mono_get_exception_reflection_type_load +mono_get_exception_security +mono_get_exception_serialization +mono_get_exception_stack_overflow +mono_get_exception_synchronization_lock +mono_get_exception_thread_abort +mono_get_exception_thread_state +mono_get_exception_type_initialization +mono_get_exception_type_load +mono_domain_finalize +mono_gc_finalize_notify +mono_gchandle_free +mono_gchandle_free_domain +mono_gchandle_get_target +mono_gchandle_is_in_domain +mono_gchandle_new +mono_gchandle_new_weakref +mono_gc_is_finalizer_thread +mono_gc_out_of_memory +mono_object_register_finalizer +mono_add_internal_call +mono_create_icall_signature +mono_lookup_internal_call +mono_cli_rva_image_map +mono_image_addref +mono_image_close +mono_image_ensure_section +mono_image_ensure_section_idx +mono_image_get_assembly +mono_image_get_entry_point +mono_image_get_filename +mono_image_get_guid +mono_image_get_name +mono_image_get_public_key +mono_image_get_resource +mono_image_get_strong_name +mono_image_get_table_info +mono_image_get_table_rows +mono_image_has_authenticode_entry +mono_image_is_dynamic +mono_image_loaded +mono_image_loaded_by_guid +mono_image_loaded_by_guid_full +mono_image_loaded_full +mono_image_load_file_for_image +mono_image_lookup_resource +mono_image_open +mono_image_open_from_data +mono_image_open_from_data_full +mono_image_open_full +mono_image_rva_map +mono_images_cleanup +mono_image_strerror +mono_image_strong_name_position +mono_pe_file_open +mono_table_info_get_rows +mono_dllmap_insert +mono_field_from_token +mono_free_method +mono_get_method +mono_get_method_full +mono_get_shared_generic_method +mono_install_stack_walk +mono_loader_cleanup +mono_loader_clear_error +mono_loader_error_prepare_exception +mono_loader_get_last_error +mono_loader_lock +mono_loader_set_error_assembly_load +mono_loader_set_error_field_load +mono_loader_set_error_method_load +mono_loader_set_error_type_load +mono_loader_unlock +mono_lookup_pinvoke_call +mono_method_get_class +mono_method_get_flags +mono_method_get_header +mono_method_get_index +mono_method_get_last_managed +mono_method_get_marshal_info +mono_method_get_name +mono_method_get_param_names +mono_method_get_param_token +mono_method_get_signature +mono_method_get_signature_full +mono_method_get_token +mono_method_get_wrapper_data +mono_method_has_marshal_info +mono_method_signature +mono_stack_walk +mono_stack_walk_no_il +load_normalization_resource +mono_array_to_lparray +mono_array_to_savearray +mono_class_native_size +mono_delegate_free_ftnptr +mono_delegate_to_ftnptr +mono_ftnptr_to_delegate +mono_marshal_alloc +mono_marshal_asany +mono_marshal_cleanup +mono_marshal_free +mono_marshal_free_array +mono_marshal_free_asany +mono_marshal_get_castclass +mono_marshal_get_delegate_begin_invoke +mono_marshal_get_delegate_end_invoke +mono_marshal_get_delegate_invoke +mono_marshal_get_generic_array_helper +mono_marshal_get_icall_wrapper +mono_marshal_get_isinst +mono_marshal_get_ldfld_remote_wrapper +mono_marshal_get_ldfld_wrapper +mono_marshal_get_managed_wrapper +mono_marshal_get_native_func_wrapper +mono_marshal_get_native_wrapper +mono_marshal_get_proxy_cancast +mono_marshal_get_ptr_to_struct +mono_marshal_get_remoting_invoke +mono_marshal_get_remoting_invoke_for_target +mono_marshal_get_remoting_invoke_with_check +mono_marshal_get_runtime_invoke +mono_marshal_get_stelemref +mono_marshal_get_stfld_remote_wrapper +mono_marshal_get_stfld_wrapper +mono_marshal_get_struct_to_ptr +mono_marshal_get_synchronized_wrapper +mono_marshal_get_unbox_wrapper +mono_marshal_get_write_barrier +mono_marshal_get_xappdomain_invoke +mono_marshal_load_type_info +mono_marshal_method_from_wrapper +mono_marshal_realloc +mono_marshal_set_last_error +mono_marshal_string_to_utf16 +mono_marshal_type_size +mono_mb_add_data +mono_mb_add_local +mono_mb_create_method +mono_mb_emit_add_to_local +mono_mb_emit_branch +mono_mb_emit_byte +mono_mb_emit_exception +mono_mb_emit_i2 +mono_mb_emit_i4 +mono_mb_emit_icon +mono_mb_emit_ldarg +mono_mb_emit_ldarg_addr +mono_mb_emit_ldflda +mono_mb_emit_ldloc +mono_mb_emit_ldloc_addr +mono_mb_emit_ldstr +mono_mb_emit_managed_call +mono_mb_emit_native_call +mono_mb_emit_short_branch +mono_mb_emit_stloc +mono_mb_free +mono_mb_new +mono_mb_patch_addr +mono_mb_patch_addr_s +mono_string_builder_to_utf16 +mono_string_builder_to_utf8 +mono_string_to_ansibstr +mono_string_to_bstr +mono_string_to_byvalstr +mono_string_to_byvalwstr +mono_string_utf16_to_builder +mono_string_utf8_to_builder +mono_type_native_stack_size +mono_type_to_ldind +mono_type_to_stind +mono_upgrade_remote_class_wrapper +mono_mempool_alloc +mono_mempool_alloc0 +mono_mempool_contains_addr +mono_mempool_destroy +mono_mempool_empty +mono_mempool_get_allocated +mono_mempool_invalidate +mono_mempool_new +mono_mempool_stats +mono_mempool_strdup +mono_guid_to_string +mono_metadata_blob_heap +mono_metadata_cleanup +mono_metadata_compute_size +mono_metadata_custom_attrs_from_index +mono_metadata_declsec_from_index +mono_metadata_decode_blob_size +mono_metadata_decode_row +mono_metadata_decode_row_col +mono_metadata_decode_signed_value +mono_metadata_decode_table_row +mono_metadata_decode_table_row_col +mono_metadata_decode_value +mono_metadata_encode_value +mono_metadata_events_from_typedef +mono_metadata_field_info +mono_metadata_free_array +mono_metadata_free_marshal_spec +mono_metadata_free_method_signature +mono_metadata_free_mh +mono_metadata_free_type +mono_metadata_generic_class_is_valuetype +mono_metadata_generic_method_equal +mono_metadata_get_constant_index +mono_metadata_get_marshal_info +mono_metadata_guid_heap +mono_metadata_has_generic_params +mono_metadata_implmap_from_method +mono_metadata_inflate_generic_inst +mono_metadata_interfaces_from_typedef +mono_metadata_interfaces_from_typedef_full +mono_metadata_load_generic_params +mono_metadata_locate +mono_metadata_locate_token +mono_metadata_methods_from_event +mono_metadata_methods_from_property +mono_metadata_nested_in_typedef +mono_metadata_nesting_typedef +mono_metadata_packing_from_typedef +mono_metadata_parse_array +mono_metadata_parse_array_full +mono_metadata_parse_custom_mod +mono_metadata_parse_field_type +mono_metadata_parse_generic_inst +mono_metadata_parse_marshal_spec +mono_metadata_parse_method_signature +mono_metadata_parse_method_signature_full +mono_metadata_parse_mh +mono_metadata_parse_mh_full +mono_metadata_parse_param +mono_metadata_parse_signature +mono_metadata_parse_signature_full +mono_metadata_parse_type +mono_metadata_parse_typedef_or_ref +mono_metadata_parse_type_full +mono_metadata_properties_from_typedef +mono_metadata_signature_alloc +mono_metadata_signature_dup +mono_metadata_signature_equal +mono_metadata_string_heap +mono_metadata_token_from_dor +mono_metadata_translate_token_index +mono_metadata_typedef_from_field +mono_metadata_typedef_from_method +mono_metadata_type_equal +mono_metadata_type_hash +mono_metadata_user_string +mono_method_header_get_clauses +mono_method_header_get_code +mono_method_header_get_locals +mono_method_header_get_num_clauses +mono_signature_explicit_this +mono_signature_get_call_conv +mono_signature_get_param_count +mono_signature_get_params +mono_signature_get_return_type +mono_signature_hash +mono_signature_is_instance +mono_signature_vararg_start +mono_type_create_from_typespec +mono_type_generic_inst_is_valuetype +mono_type_get_array_type +mono_type_get_class +mono_type_get_modifiers +mono_type_get_ptr_type +mono_type_get_signature +mono_type_get_type +mono_type_is_byref +mono_type_size +mono_type_stack_size +mono_type_to_unmanaged +mono_monitor_cleanup +mono_monitor_enter +mono_monitor_exit +mono_monitor_try_enter +mono_config_for_assembly +mono_config_parse +mono_config_parse_memory +mono_get_config_dir +mono_debugger_add_symbol_file +mono_debugger_breakpoint_callback +mono_debugger_event +mono_debugger_handle_exception +mono_debugger_insert_breakpoint +mono_debugger_insert_breakpoint_full +mono_debugger_lock +mono_debugger_lookup_assembly +mono_debugger_lookup_type +mono_debugger_method_has_breakpoint +mono_debugger_remove_breakpoint +mono_debugger_runtime_invoke +mono_debugger_start_add_type +mono_debugger_throw_exception +mono_debugger_unhandled_exception +mono_debugger_unlock +mono_debug_add_method +mono_debug_find_method +mono_debug_free_source_location +mono_debug_lookup_method +mono_debug_lookup_source_location +mono_debug_print_stack_frame +mono_debug_using_mono_debugger +mono_array_clone +mono_array_clone_in_domain +mono_array_full_copy +mono_array_new +mono_array_new_full +mono_array_new_specific +mono_async_result_new +mono_class_get_allocation_ftn +mono_class_vtable +mono_compile_method +mono_delegate_ctor +mono_field_get_value +mono_field_get_value_object +mono_field_set_value +mono_field_static_get_value +mono_field_static_set_value +mono_get_addr_from_ftnptr +mono_get_constant_value_from_blob +mono_get_delegate_invoke +mono_install_compile_method +mono_install_delegate_trampoline +mono_install_free_method +mono_install_handler +mono_install_remoting_trampoline +mono_install_runtime_invoke +mono_install_trampoline +mono_ldstr +mono_load_remote_field +mono_load_remote_field_new +mono_message_init +mono_message_invoke +mono_method_call_message_new +mono_method_return_message_restore +mono_nullable_box +mono_nullable_init +mono_object_castclass_mbyref +mono_object_clone +mono_object_get_class +mono_object_get_domain +mono_object_get_size +mono_object_get_virtual_method +mono_object_isinst +mono_object_isinst_mbyref +mono_object_new +mono_object_new_alloc_specific +mono_object_new_fast +mono_object_new_from_token +mono_object_new_specific +mono_object_unbox +mono_print_unhandled_exception +mono_property_get_value +mono_property_set_value +mono_raise_exception +mono_release_type_locks +mono_remote_class +mono_remote_class_vtable +mono_remoting_invoke +mono_runtime_class_init +mono_runtime_delegate_invoke +mono_runtime_exec_main +mono_runtime_exec_managed_code +mono_runtime_free_method +mono_runtime_get_main_args +mono_runtime_invoke +mono_runtime_invoke_array +mono_runtime_object_init +mono_runtime_run_main +mono_store_remote_field +mono_store_remote_field_new +mono_string_from_utf16 +mono_string_intern +mono_string_is_interned +mono_string_new +mono_string_new_len +mono_string_new_size +mono_string_new_utf16 +mono_string_new_wrapper +mono_string_to_utf16 +mono_string_to_utf8 +mono_string_to_utf8_mp +mono_thread_get_main +mono_thread_set_main +mono_type_initialization_cleanup +mono_type_initialization_init +mono_unhandled_exception +mono_upgrade_remote_class +mono_value_box +mono_value_copy +mono_value_copy_array +mono_vtable_get_static_field_data +mono_wait_handle_new +mono_opcode_name +mono_opcode_value +mono_profiler_allocation +mono_profiler_appdomain_event +mono_profiler_appdomain_loaded +mono_profiler_assembly_event +mono_profiler_assembly_loaded +mono_profiler_class_event +mono_profiler_class_loaded +mono_profiler_code_transition +mono_profiler_coverage_get +mono_profiler_gc_event +mono_profiler_gc_heap_resize +mono_profiler_get_events +mono_profiler_install +mono_profiler_install_allocation +mono_profiler_install_appdomain +mono_profiler_install_assembly +mono_profiler_install_class +mono_profiler_install_coverage_filter +mono_profiler_install_enter_leave +mono_profiler_install_gc +mono_profiler_install_jit_compile +mono_profiler_install_jit_end +mono_profiler_install_module +mono_profiler_install_statistical +mono_profiler_install_thread +mono_profiler_install_transition +mono_profiler_load +mono_profiler_method_end_jit +mono_profiler_method_enter +mono_profiler_method_jit +mono_profiler_method_leave +mono_profiler_module_event +mono_profiler_module_loaded +mono_profiler_set_events +mono_profiler_shutdown +mono_profiler_stat_hit +mono_profiler_thread_end +mono_profiler_thread_start +mono_raw_buffer_cleanup +mono_raw_buffer_free +mono_raw_buffer_load +mono_raw_buffer_update +mono_assembly_get_object +mono_custom_attrs_construct +mono_custom_attrs_free +mono_custom_attrs_from_assembly +mono_custom_attrs_from_class +mono_custom_attrs_from_event +mono_custom_attrs_from_field +mono_custom_attrs_from_index +mono_custom_attrs_from_method +mono_custom_attrs_from_param +mono_custom_attrs_from_property +mono_custom_attrs_get_attr +mono_custom_attrs_has_attr +mono_declsec_flags_from_assembly +mono_declsec_flags_from_class +mono_declsec_flags_from_method +mono_declsec_get_assembly_action +mono_declsec_get_class_action +mono_declsec_get_demands +mono_declsec_get_inheritdemands_class +mono_declsec_get_inheritdemands_method +mono_declsec_get_linkdemands +mono_declsec_get_method_action +mono_event_get_object +mono_field_get_object +mono_get_dbnull_object +mono_image_basic_init +mono_image_build_metadata +mono_image_create_method_token +mono_image_create_pefile +mono_image_create_token +mono_image_insert_string +mono_image_load_module +mono_method_body_get_object +mono_method_get_object +mono_module_file_get_object +mono_module_get_object +mono_param_get_objects +mono_property_get_object +mono_reflection_bind_generic_method_parameters +mono_reflection_bind_generic_parameters +mono_reflection_call_is_assignable_to +mono_reflection_create_dynamic_method +mono_reflection_create_generic_class +mono_reflection_create_internal_class +mono_reflection_create_runtime_class +mono_reflection_event_builder_get_event_info +mono_reflection_generic_class_initialize +mono_reflection_get_custom_attrs +mono_reflection_get_custom_attrs_blob +mono_reflection_get_custom_attrs_by_type +mono_reflection_get_custom_attrs_data +mono_reflection_get_custom_attrs_info +mono_reflection_get_token +mono_reflection_get_type +mono_reflection_initialize_generic_parameter +mono_reflection_lookup_dynamic_token +mono_reflection_marshal_from_marshal_spec +mono_reflection_parse_type +mono_reflection_setup_generic_class +mono_reflection_setup_internal_class +mono_reflection_sighelper_get_signature_field +mono_reflection_sighelper_get_signature_local +mono_reflection_type_from_name +mono_type_get_object +mono_activate_security_manager +mono_get_context_capture_method +mono_is_ecma_key +mono_is_security_manager_active +mono_security_manager_get_methods +mono_thread_pool_add +mono_thread_pool_finish +mono_alloc_special_static_data +mono_get_special_static_data +mono_thread_abort_all_other_threads +mono_thread_attach +mono_thread_cleanup +mono_thread_create +mono_thread_current +mono_thread_detach +mono_thread_exit +mono_thread_force_interruption_checkpoint +mono_thread_get_abort_signal +mono_thread_get_pending_exception +mono_thread_get_tls_key +mono_thread_has_appdomain_ref +mono_thread_interruption_checkpoint +mono_thread_interruption_requested +mono_thread_interruption_request_flag +mono_thread_manage +mono_thread_new_init +mono_thread_pop_appdomain_ref +mono_thread_push_appdomain_ref +mono_thread_request_interruption +mono_threads_abort_appdomain_threads +mono_threads_clear_cached_culture +mono_threads_get_default_stacksize +mono_threads_install_cleanup +mono_threads_request_thread_dump +mono_threads_set_default_stacksize +mono_thread_stop +mono_thread_suspend_all_other_threads +mono_free_verify_list +mono_image_verify_tables +mono_method_verify +mono_verify_corlib +mono_perform_abc_removal +mono_debugger_main +mono_debug_add_aot_method +mono_debug_print_vars +mono_jit_cleanup +mono_jit_exec +mono_jit_init +mono_main +mono_parse_default_optimizations +mono_inst_name +mono_burg_emit +mono_burg_kids +mono_burg_label +mono_burg_rule +mono_debugger_run_finally +mono_handle_exception +mono_print_thread_dump +mono_walk_stack +mono_create_jump_trampoline +mono_pmip +mono_print_method_from_ip +mono_set_defaults +mono_trace_enter_method +mono_trace_leave_method +mono_debugger_create_notification_function +mono_profiler_startup +mono_profiler_startup +add_delegate +mono_invoke_delegate +mono_test_marshal_inout_byval_class_delegate +mono_test_marshal_lpstruct +mono_test_marshal_lpstruct_blittable +mono_test_marshal_pass_inout_custom +mono_test_marshal_pass_out_byval_custom +mono_test_marshal_return_fnptr +mono_bitset_alloc_size +mono_bitset_clear +mono_bitset_clear_all +mono_bitset_clone +mono_bitset_copyto +mono_bitset_count +mono_bitset_equal +mono_bitset_find_first +mono_bitset_find_first_unset +mono_bitset_find_last +mono_bitset_find_start +mono_bitset_foreach +mono_bitset_free +mono_bitset_intersection +mono_bitset_intersection_2 +mono_bitset_invert +mono_bitset_mem_new +mono_bitset_new +mono_bitset_set +mono_bitset_set_all +mono_bitset_size +mono_bitset_sub +mono_bitset_test +mono_bitset_test_bulk +mono_bitset_union +mono_code_manager_commit +mono_code_manager_destroy +mono_code_manager_foreach +mono_code_manager_invalidate +mono_code_manager_new +mono_code_manager_new_dynamic +mono_code_manager_reserve +mono_counters_dump +mono_counters_enable +mono_counters_register +mono_g_hash_table_destroy +mono_g_hash_table_foreach +mono_g_hash_table_foreach_remove +mono_g_hash_table_foreach_steal +mono_g_hash_table_insert +mono_g_hash_table_lookup +mono_g_hash_table_lookup_extended +mono_g_hash_table_new +mono_g_hash_table_new_full +mono_g_hash_table_new_type +mono_g_hash_table_remap +mono_g_hash_table_remove +mono_g_hash_table_replace +mono_g_hash_table_size +mono_g_hash_table_steal +mono_trace +mono_trace_cleanup +mono_trace_is_traced +mono_trace_pop +mono_trace_push +mono_trace_set_level +mono_trace_set_level_string +mono_trace_set_mask +mono_trace_set_mask_string +mono_tracev +mono_signbit_double +mono_signbit_float +mono_md5_final +mono_md5_get_digest +mono_md5_get_digest_from_file +mono_md5_init +mono_md5_update +mono_path_canonicalize +mono_path_resolve_symlinks +mono_digest_get_public_token +mono_sha1_final +mono_sha1_get_digest +mono_sha1_get_digest_from_file +mono_sha1_init +mono_sha1_update +mono_escape_uri_string +mono_unicode_from_external +mono_unicode_to_external +mono_utf8_from_external +GetThreadContext +DeleteCriticalSection +InitializeCriticalSection +InitializeCriticalSectionAndSpinCount +SetCriticalSectionSpinCount +TryEnterCriticalSection +errno_to_WSA +GetLastError +SetLastError +CreateEvent +OpenEvent +PulseEvent +ResetEvent +SetEvent +CloseHandle +DuplicateHandle +CopyFile +CreateDirectory +CreateFile +CreatePipe +DeleteFile +FileTimeToSystemTime +FindClose +FindFirstFile +FindNextFile +FlushFileBuffers +GetCurrentDirectory +GetFileAttributes +GetFileAttributesEx +GetFileSize +GetFileTime +GetFileType +GetLogicalDriveStrings +GetStdHandle +GetTempPath +LockFile +MoveFile +ReadFile +RemoveDirectory +SetCurrentDirectory +SetEndOfFile +SetFileAttributes +SetFilePointer +SetFileTime +UnlockFile +WriteFile +mono_once +CreateMutex +OpenMutex +ReleaseMutex +CreateProcess +EnumProcesses +EnumProcessModules +GetCurrentProcess +GetCurrentProcessId +GetExitCodeProcess +GetModuleBaseName +GetProcessId +GetProcessTimes +GetProcessWorkingSetSize +OpenProcess +SetProcessWorkingSetSize +ShellExecuteEx +TerminateProcess +ImpersonateLoggedOnUser +RevertToSelf +CreateSemaphore +OpenSemaphore +ReleaseSemaphore +closesocket +ioctlsocket +WSACleanup +WSAGetLastError +WSAIoctl +WSASetLastError +WSAStartup +GetSystemInfo +CreateThread +ExitThread +GetCurrentThread +GetCurrentThreadId +GetExitCodeThread +mono_pthread_key_for_tls +OpenThread +QueueUserAPC +ResumeThread +Sleep +SleepEx +SuspendThread +TlsAlloc +TlsFree +TlsGetValue +TlsSetValue +GetTickCount +QueryPerformanceCounter +QueryPerformanceFrequency +SignalObjectAndWait +WaitForMultipleObjects +WaitForMultipleObjectsEx +WaitForSingleObject +WaitForSingleObjectEx diff --git a/docs/deploy/.stamp b/docs/deploy/.stamp new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/docs/deploy/.stamp diff --git a/docs/docs.make b/docs/docs.make new file mode 100644 index 0000000000..50a001f5f2 --- /dev/null +++ b/docs/docs.make @@ -0,0 +1,29 @@ +thisdir = docs +SUBDIRS = +include $(topdir)/build/rules.make + +ASSEMBLED_DOCS = \ + mono-file-formats.tree mono-file-formats.zip \ + mono-tools.tree mono-tools.zip \ + monoapi.tree monoapi.zip + +convert.exe: convert.cs AgilityPack.dll + $(CSCOMPILE) -out:$@ $< -r:AgilityPack.dll + +monoapi.zip: monoapi.tree + @test -f $@ || { rm -f $< && $(MAKE) $<; } +monoapi.tree: toc.xml docs.make + $(MDOC) assemble -o monoapi -f hb $< + +mono-tools.zip: mono-tools.tree + @test -f $@ || { rm -f $< && $(MAKE) $<; } +mono-tools.tree: mono-tools.config docs.make + $(MDOC) assemble -o mono-tools -f man $< + +mono-file-formats.zip: mono-file-formats.tree + @test -f $@ || { rm -f $< && $(MAKE) $<; } +mono-file-formats.tree: mono-file-formats.config docs.make + $(MDOC) assemble -o mono-file-formats -f man $< + +.doc-stamp: + diff --git a/docs/documented b/docs/documented new file mode 100644 index 0000000000..6fa1b89777 --- /dev/null +++ b/docs/documented @@ -0,0 +1,1012 @@ +mono_assembly_open +mono_assembly_close +mono_assembly_load +mono_assembly_load_from +mono_assembly_load_full +mono_assembly_loaded +mono_assembly_get_image +mono_assembly_get_main +mono_assembly_getrootdir +mono_assembly_addref +mono_assembly_name_parse +mono_assembly_name_free +mono_stringify_assembly_name +mono_assembly_names_equal +mono_class_array_element_size +mono_class_create_generic_2 +mono_class_create_generic +mono_class_data_size +mono_class_enum_basetype +mono_class_from_generic_parameter +mono_class_from_mono_type +mono_class_from_name_case +mono_class_from_name +mono_class_from_typeref +mono_class_get_allocation_ftn +mono_class_get_byref_type +mono_class_get_element_class +mono_class_get_events +mono_class_get_event_token +mono_class_get_field_from_name +mono_class_get_field +mono_class_get_fields +mono_class_get_field_token +mono_class_get_flags +mono_class_get_full +mono_class_get_image +mono_class_get_implemented_interfaces +mono_class_get_interfaces +mono_class_get_method_from_name +mono_class_get_methods +mono_class_get +mono_class_get_name +mono_class_get_namespace +mono_class_get_nested_types +mono_class_get_nesting_type +mono_class_get_overrides +mono_class_get_parent +mono_class_get_properties +mono_class_get_property_from_name +mono_class_get_property_token +mono_class_get_rank +mono_class_get_type +mono_class_inflate_generic_method +mono_class_inflate_generic_type +mono_class_init +mono_class_instance_size +mono_class_is_assignable_from +mono_class_is_enum +mono_class_is_open_constructed_type +mono_class_is_subclass_of +mono_class_is_valuetype +mono_class_layout_fields +mono_class_min_align +mono_class_native_size +mono_class_needs_cctor_run +mono_class_num_events +mono_class_num_fields +mono_class_num_methods +mono_class_num_properties +mono_class_setup_mono_type +mono_class_setup_parent +mono_class_setup_supertypes +mono_class_setup_vtable +mono_class_value_size +mono_class_vtable +mono_class_get_cctor +mono_class_get_finalizer +mono_class_get_method_from_name_flags +mono_class_inflate_generic_signature +mono_class_name_from_token +mono_class_setup_methods +mono_class_setup_vtable_general +mono_class_get_exception_for_failure +mono_class_is_nullable +mono_code_manager_commit +mono_code_manager_destroy +mono_code_manager_foreach +mono_code_manager_invalidate +mono_code_manager_new_dynamic +mono_code_manager_new +mono_code_manager_reserve +mono_install_assembly_load_hook +mono_install_assembly_preload_hook +mono_install_assembly_search_hook +mono_install_compile_method +mono_install_free_method +mono_install_handler +mono_install_lookup_dynamic_token +mono_install_remoting_trampoline +mono_install_runtime_invoke +mono_install_stack_walk +mono_install_thread_callbacks +mono_install_trampoline +mono_install_runtime_cleanup +mono_install_assembly_postload_refonly_search_hook +mono_install_assembly_postload_search_hook +mono_install_assembly_refonly_preload_hook +mono_install_assembly_refonly_search_hook +mono_install_delegate_trampoline +mono_counters_dump +mono_counters_enable +mono_counters_register +mono_debug_il_offset_from_address +mono_debug_open_mono_symbol_file +mono_debug_source_location_from_address +mono_debug_source_location_from_il_offset +mono_debug_add_aot_method +mono_debug_add_method +_mono_debug_address_from_il_offset +mono_debug_address_from_il_offset +mono_debug_add_wrapper +mono_debug_close_mono_symbol_file +mono_debug_find_method +mono_debug_find_source_location +mono_debug_using_mono_debugger +mono_debugger_add_builtin_types +mono_debugger_add_method +mono_debugger_add_symbol_file +mono_debugger_add_type +mono_debugger_add_wrapper +mono_debugger_breakpoint_callback +mono_debugger_check_runtime_version +mono_debugger_create_notification_function +mono_debugger_event +_mono_debugger_get_symfile +mono_debugger_handle_exception +mono_debugger_insert_breakpoint_full +mono_debugger_insert_breakpoint +mono_debugger_lock +mono_debugger_lookup_assembly +mono_debugger_lookup_type +mono_debugger_method_has_breakpoint +mono_debugger_remove_breakpoint +mono_debugger_runtime_invoke +mono_debugger_start_add_type +mono_debugger_throw_exception +mono_debugger_unhandled_exception +mono_debugger_unlock +mono_debugger_finalize_threads +mono_debugger_main +mono_debugger_run_finally +mono_decimal2double +mono_decimal2Int64 +mono_decimal2string +mono_decimal2UInt64 +mono_decimalCompare +mono_decimalDiv +mono_decimalFloorAndTrunc +mono_decimalIncr +mono_decimalIntDiv +mono_decimalMult +mono_decimalRound +mono_decimalSetExponent +mono_double2decimal +mono_string2decimal +mono_domain_assembly_open +mono_domain_create +mono_domain_finalize +mono_domain_foreach +mono_domain_free +mono_domain_get_by_id +mono_domain_get_id +mono_domain_get +mono_domain_has_type_resolve +mono_domain_is_unloading +mono_domain_set_internal +mono_domain_set +mono_domain_try_type_resolve +mono_domain_get_tls_key +mono_domain_owns_vtable_slot +mono_context_get +mono_context_set +mono_create_jit_trampoline +mono_mb_new +mono_mb_add_data +mono_mb_add_local +mono_mb_create_method +mono_mb_emit_add_to_local +mono_mb_emit_branch +mono_mb_emit_byte +mono_mb_emit_exception +mono_mb_emit_i2 +mono_mb_emit_i4 +mono_mb_emit_icon +mono_mb_emit_ldarg_addr +mono_mb_emit_ldarg +mono_mb_emit_ldflda +mono_mb_emit_ldloc_addr +mono_mb_emit_ldloc +mono_mb_emit_ldstr +mono_mb_emit_managed_call +mono_mb_emit_native_call +mono_mb_emit_stloc +mono_mb_free +mono_mb_patch_addr +mono_mb_patch_addr_s +mono_metadata_signature_alloc +mono_metadata_signature_dup +mono_metadata_signature_equal +mono_jit_init +mono_set_dirs +mono_runtime_exec_main +mono_runtime_exec_managed_code +mono_jit_cleanup +mono_set_defaults +mono_add_internal_call +mono_config_parse +mono_config_parse_memory +mono_create_ftnptr +mono_raise_exception +mono_unhandled_exception +mono_print_unhandled_exception +mono_handle_exception +mono_exception_from_name_domain +mono_exception_from_name +mono_exception_from_name_msg +mono_exception_from_name_two_strings +mono_get_exception_appdomain_unloaded +mono_get_exception_argument +mono_get_exception_argument_null +mono_get_exception_argument_out_of_range +mono_get_exception_arithmetic +mono_get_exception_array_type_mismatch +mono_get_exception_bad_image_format +mono_get_exception_cannot_unload_appdomain +mono_get_exception_class +mono_get_exception_divide_by_zero +mono_get_exception_execution_engine +mono_get_exception_file_not_found2 +mono_get_exception_file_not_found +mono_get_exception_index_out_of_range +mono_get_exception_invalid_cast +mono_get_exception_io +mono_get_exception_missing_method +mono_get_exception_not_implemented +mono_get_exception_null_reference +mono_get_exception_overflow +mono_get_exception_security +mono_get_exception_serialization +mono_get_exception_stack_overflow +mono_get_exception_synchronization_lock +mono_get_exception_thread_abort +mono_get_exception_thread_state +mono_get_exception_type_initialization +mono_get_exception_type_load +mono_get_exception_invalid_operation +mono_get_exception_missing_field +mono_get_exception_not_supported +mono_get_exception_reflection_type_load +mono_gchandle_new +mono_gchandle_new_weakref +mono_gchandle_new +mono_gchandle_new_weakref +mono_gchandle_get_target +mono_gchandle_is_in_domain +mono_gchandle_free +mono_gc_collect +mono_gc_max_generation +mono_gc_get_heap_size +mono_gc_get_used_size +mono_gc_weak_link_add +mono_gc_weak_link_get +mono_gc_weak_link_remove +mono_gc_disable +mono_gc_enable +mono_gc_is_finalizer_thread +mono_gc_out_of_memory +mono_gc_start_world +mono_gc_stop_world +mono_gc_alloc_fixed +mono_gc_enable_events +mono_gc_free_fixed +mono_gc_make_descr_from_bitmap +mono_gc_base_init +mono_gc_invoke_finalizers +mono_gc_is_gc_thread +mono_gc_pending_finalizers +mono_gc_register_thread +mono_gc_finalize_notify +mono_image_addref +mono_image_add_to_name_cache +mono_image_close +mono_image_ensure_section_idx +mono_image_ensure_section +mono_image_get_assembly +mono_image_get_entry_point +mono_image_get_filename +mono_image_get_name +mono_image_get_public_key +mono_image_get_resource +mono_image_get_strong_name +mono_image_get_table_info +mono_image_get_table_rows +mono_image_has_authenticode_entry +mono_image_is_dynamic +mono_image_loaded_by_guid +mono_image_loaded +mono_image_load_file_for_image +mono_image_lookup_resource +mono_image_open_from_data +mono_image_open +mono_image_rva_map +mono_image_strerror +mono_image_strong_name_position +mono_image_verify_tables +mono_image_get_guid +mono_image_open_from_data_full +mono_image_open_full +mono_image_basic_init +mono_image_build_metadata +mono_image_create_method_token +mono_image_create_pefile +mono_image_create_token +mono_image_insert_string +mono_image_load_module +mono_burg_kids +mono_burg_label +mono_burg_rule +mono_interp_dis_mintop +mono_interp_exec +mono_interp_ftnptr_to_delegate +mono_interp_get_runtime_method +mono_interp_transform_init +mono_interp_transform_method +mono_pmip +mono_print_code +mono_print_method_from_ip +mono_print_thread_dump +mono_threads_request_thread_dump +mono_inst_name +mono_profiler_load +mono_profiler_allocation +mono_profiler_stat_hit +mono_profiler_thread_start +mono_profiler_thread_end +mono_profiler_appdomain_event +mono_profiler_appdomain_loaded +mono_profiler_assembly_event +mono_profiler_assembly_loaded +mono_profiler_class_event +mono_profiler_class_loaded +mono_profiler_code_transition +mono_profiler_method_end_jit +mono_profiler_method_enter +mono_profiler_method_jit +mono_profiler_method_leave +mono_profiler_module_event +mono_profiler_module_loaded +mono_profiler_shutdown +mono_profiler_startup +mono_profiler_gc_event +mono_profiler_gc_heap_resize +mono_profiler_gc_event +mono_profiler_gc_heap_resize +mono_profiler_stat_hit +mono_delegate_free_ftnptr +mono_delegate_to_ftnptr +mono_ftnptr_to_delegate +mono_marshal_alloc +mono_marshal_asany +mono_marshal_free_array +mono_marshal_free_asany +mono_marshal_free +mono_marshal_get_castclass +mono_marshal_get_delegate_begin_invoke +mono_marshal_get_delegate_end_invoke +mono_marshal_get_delegate_invoke +mono_marshal_get_icall_wrapper +mono_marshal_get_isinst +mono_marshal_get_ldfld_remote_wrapper +mono_marshal_get_ldfld_wrapper +mono_marshal_get_managed_wrapper +mono_marshal_get_native_wrapper +mono_marshal_get_proxy_cancast +mono_marshal_get_ptr_to_struct +mono_marshal_get_remoting_invoke_for_target +mono_marshal_get_remoting_invoke +mono_marshal_get_remoting_invoke_with_check +mono_marshal_get_runtime_invoke +mono_marshal_get_stelemref +mono_marshal_get_stfld_remote_wrapper +mono_marshal_get_stfld_wrapper +mono_marshal_get_struct_to_ptr +mono_marshal_get_synchronized_wrapper +mono_marshal_get_unbox_wrapper +mono_marshal_get_xappdomain_invoke +mono_marshal_load_type_info +mono_marshal_method_from_wrapper +mono_marshal_realloc +mono_marshal_set_last_error +mono_marshal_string_to_utf16 +mono_marshal_type_size +mono_loader_lock +mono_loader_unlock +mono_cli_rva_image_map +mono_pe_file_open +mono_meta_table_name +mono_metadata_blob_heap +mono_metadata_compute_size +mono_metadata_custom_attrs_from_index +mono_metadata_decode_blob_size +mono_metadata_decode_row_col +mono_metadata_decode_row +mono_metadata_decode_signed_value +mono_metadata_decode_value +mono_metadata_encode_value +mono_metadata_events_from_typedef +mono_metadata_field_info +mono_metadata_free_array +mono_metadata_free_marshal_spec +mono_metadata_free_mh +mono_metadata_free_type +mono_metadata_generic_inst_equal +mono_metadata_generic_inst_hash +mono_metadata_generic_inst_is_valuetype +mono_metadata_generic_method_equal +mono_metadata_get_constant_index +mono_metadata_get_marshal_info +mono_metadata_get_table +mono_metadata_guid_heap +mono_metadata_implmap_from_method +mono_metadata_interfaces_from_typedef_full +mono_metadata_interfaces_from_typedef +mono_metadata_load_generic_params +mono_metadata_locate +mono_metadata_locate_token +mono_metadata_methods_from_event +mono_metadata_methods_from_property +mono_metadata_nested_in_typedef +mono_metadata_nesting_typedef +mono_metadata_packing_from_typedef +mono_metadata_parse_array_full +mono_metadata_parse_array +mono_metadata_parse_custom_mod +mono_metadata_parse_field_type +mono_metadata_parse_marshal_spec +mono_metadata_parse_method_signature_full +mono_metadata_parse_method_signature +mono_metadata_parse_mh_full +mono_metadata_parse_mh +mono_metadata_parse_param +mono_metadata_parse_signature_full +mono_metadata_parse_signature +mono_metadata_parse_typedef_or_ref +mono_metadata_parse_type_full +mono_metadata_parse_type +mono_metadata_properties_from_typedef +mono_metadata_string_heap +mono_metadata_token_from_dor +mono_metadata_typedef_from_field +mono_metadata_typedef_from_method +mono_metadata_type_equal +mono_metadata_type_hash +mono_metadata_user_string +mono_metadata_declsec_from_index +mono_metadata_free_method_signature +mono_metadata_generic_class_is_valuetype +mono_metadata_has_generic_params +mono_metadata_inflate_generic_inst +mono_metadata_parse_generic_inst +mono_ldtoken +mono_lookup_dynamic_token +mono_ldstr +mono_exception_from_token +mono_create_jit_trampoline_from_token +mono_signature_explicit_this +mono_signature_get_call_conv +mono_signature_get_desc +mono_signature_get_param_count +mono_signature_get_params +mono_signature_get_return_type +mono_signature_hash +mono_signature_is_instance +mono_signature_vararg_start +mono_opcode_name +mono_opcode_value +mono_loader_set_error_field_load +mono_loader_set_error_method_load +mono_loader_set_error_type_load +mono_loader_get_last_error +mono_loader_clear_error +mono_loader_error_prepare_exception +mono_runtime_invoke_array +mono_runtime_invoke +mono_remoting_invoke +mono_runtime_delegate_invoke +mono_method_call_message_new +mono_method_desc_free +mono_method_desc_from_method +mono_method_desc_full_match +mono_method_desc_match +mono_method_desc_new +mono_method_desc_search_in_class +mono_method_desc_search_in_image +mono_method_full_name +mono_method_get_class +mono_method_get_flags +mono_method_get_last_managed +mono_method_get_marshal_info +mono_method_get_name +mono_method_get_object +mono_method_get_param_names +mono_method_get_param_token +mono_method_get_signature +mono_method_get_index +mono_method_get_signature_full +mono_method_get_token +mono_method_get_wrapper_data +mono_method_has_marshal_info +mono_method_return_message_restore +mono_method_same_domain +mono_method_signature +mono_method_verify +mono_method_get_header +mono_method_header_get_clauses +mono_method_header_get_code +mono_method_header_get_locals +mono_method_header_get_num_clauses +mono_object_new +mono_object_new_alloc_specific +mono_object_new_fast +mono_object_new_from_token +mono_object_new_specific +mono_object_clone +mono_object_get_class +mono_object_get_domain +mono_object_get_virtual_method +mono_object_isinst_mbyref +mono_object_isinst +mono_object_register_finalizer +mono_object_unbox +mono_object_castclass_mbyref +mono_object_is_alive +mono_object_get_size +mono_value_box +mono_value_copy +mono_value_copy_array +mono_array_class_get +mono_array_clone_in_domain +mono_array_clone +mono_array_element_size +mono_array_full_copy +mono_array_new_full +mono_array_new +mono_array_new_specific +mono_array_to_lparray +mono_array_to_savearray +mono_dup_array_type +mono_field_from_token +mono_field_get_flags +mono_field_get_name +mono_field_get_parent +mono_field_get_type +mono_field_get_value +mono_field_get_value_object +mono_field_set_value +mono_field_static_get_value +mono_field_static_set_value +mono_property_get_flags +mono_property_get_get_method +mono_property_get_name +mono_property_get_parent +mono_property_get_set_method +mono_property_get_value +mono_property_set_value +mono_event_get_add_method +mono_event_get_flags +mono_event_get_name +mono_event_get_parent +mono_event_get_raise_method +mono_event_get_remove_method +mono_delegate_ctor +mono_async_result_new +mono_load_remote_field +mono_load_remote_field_new +mono_store_remote_field +mono_store_remote_field_new +mono_nullable_box +mono_nullable_init +mono_profiler_install +mono_profiler_install_allocation +mono_profiler_install_appdomain +mono_profiler_install_assembly +mono_profiler_install_class +mono_profiler_install_coverage_filter +mono_profiler_install_enter_leave +mono_profiler_install_jit_compile +mono_profiler_install_module +mono_profiler_install_thread +mono_profiler_install_transition +mono_profiler_install_gc +mono_profiler_install_statistical +mono_profiler_set_events +mono_profiler_get_events +mono_profiler_coverage_get +mono_reflection_bind_generic_method_parameters +mono_reflection_bind_generic_parameters +mono_reflection_create_dynamic_method +mono_reflection_create_generic_class +mono_reflection_create_internal_class +mono_reflection_create_runtime_class +mono_reflection_event_builder_get_event_info +mono_reflection_generic_inst_initialize +mono_reflection_get_custom_attrs_blob +mono_reflection_get_custom_attrs +mono_custom_attrs_get_attr +mono_reflection_get_token +mono_reflection_get_type +mono_reflection_initialize_generic_parameter +mono_reflection_lookup_dynamic_token +mono_reflection_marshal_from_marshal_spec +mono_reflection_parse_type +mono_reflection_setup_generic_class +mono_reflection_setup_internal_class +mono_reflection_sighelper_get_signature_field +mono_reflection_sighelper_get_signature_local +mono_reflection_type_from_name +mono_reflection_generic_class_initialize +mono_reflection_get_custom_attrs_info +mono_custom_attrs_construct +mono_custom_attrs_free +mono_custom_attrs_from_assembly +mono_custom_attrs_from_class +mono_custom_attrs_from_event +mono_custom_attrs_from_field +mono_custom_attrs_from_index +mono_custom_attrs_from_method +mono_custom_attrs_from_param +mono_custom_attrs_from_property +mono_custom_attrs_has_attr +mono_module_file_get_object +mono_module_get_object +mono_method_body_get_object +mono_event_get_object +mono_assembly_get_object +mono_param_get_objects +mono_field_get_object +mono_property_get_object +mono_type_get_object +mono_is_security_manager_active +mono_security_manager_get_methods +mono_activate_security_manager +mono_is_ecma_key +mono_get_context_capture_method +mono_declsec_flags_from_assembly +mono_declsec_flags_from_class +mono_declsec_flags_from_method +mono_declsec_get_assembly_action +mono_declsec_get_class_action +mono_declsec_get_demands +mono_declsec_get_inheritdemands_class +mono_declsec_get_inheritdemands_method +mono_declsec_get_linkdemands +mono_declsec_get_method_action +mono_string_new +mono_string_new_len +mono_string_new_size +mono_string_new_utf16 +mono_string_from_utf16 +mono_string_intern +mono_string_is_interned +mono_string_new_wrapper +mono_string_to_ansibstr +mono_string_to_bstr +mono_string_to_byvalstr +mono_string_to_byvalwstr +mono_string_to_utf16 +mono_string_to_utf8 +mono_string_utf16_to_builder +mono_string_utf8_to_builder +mono_string_equal +mono_string_hash +mono_string_builder_to_utf16 +mono_string_builder_to_utf8 +mono_unicode_from_external +mono_unicode_to_external +mono_utf8_from_external +mono_thread_abort_all_other_threads +mono_thread_attach +mono_thread_create +mono_thread_current +mono_thread_detach +mono_thread_exit +mono_thread_force_interruption_checkpoint +mono_thread_get_abort_signal +mono_thread_get_pending_exception +mono_thread_interruption_checkpoint +mono_thread_interruption_requested +mono_thread_interruption_request_flag +mono_thread_manage +mono_thread_new_init +mono_thread_pop_appdomain_ref +mono_thread_push_appdomain_ref +mono_thread_request_interruption +mono_threads_abort_appdomain_threads +mono_threads_get_default_stacksize +mono_threads_install_cleanup +mono_threads_set_default_stacksize +mono_thread_stop +mono_thread_get_main +mono_thread_set_main +mono_thread_get_tls_key +mono_pthread_key_for_tls +mono_thread_pool_add +mono_thread_pool_finish +mono_monitor_enter +mono_monitor_exit +mono_monitor_try_enter +mono_threads_clear_cached_culture +mono_thread_suspend_all_other_threads +mono_thread_has_appdomain_ref +mono_trace_cleanup +mono_trace_enter_method +mono_trace_eval +mono_trace_leave_method +mono_trace +mono_trace_parse_options +mono_trace_pop +mono_trace_push +mono_trace_set_assembly +mono_trace_set_level +mono_trace_set_level_string +mono_trace_set_mask +mono_trace_set_mask_string +mono_tracev +mono_trace_is_traced +mono_trace_enable +mono_trace_is_enabled +mono_type_create_from_typespec_full +mono_type_create_from_typespec +mono_type_full_name +mono_type_get_array_type +mono_type_get_class +mono_type_get_desc +mono_type_get_full_name +mono_type_get_modifiers +mono_type_get_name +mono_type_get_signature +mono_type_get_type +mono_type_get_underlying_type +mono_type_initialization_init +mono_type_is_byref +mono_type_native_stack_size +mono_type_size +mono_type_stack_size +mono_type_to_ldind +mono_type_to_stind +mono_type_to_unmanaged +mono_type_get_name_full +mono_type_generic_inst_is_valuetype +mono_get_object_class +mono_get_int16_class +mono_get_int32_class +mono_get_int64_class +mono_get_double_class +mono_get_enum_class +mono_get_intptr_class +mono_get_sbyte_class +mono_get_single_class +mono_get_string_class +mono_get_thread_class +mono_get_uint16_class +mono_get_uint32_class +mono_get_uint64_class +mono_get_uintptr_class +mono_get_void_class +mono_get_array_class +mono_get_boolean_class +mono_get_byte_class +mono_get_char_class +mono_get_dbnull_object +mini_compile_generic_method +mono_alloc_special_static_data +mono_bounded_array_class_get +mono_check_corlib_version +mono_compile_method +mono_config_for_assembly +mono_create_icall_signature +mono_create_jit_trampoline +mono_create_jump_table +mono_create_jump_trampoline +mono_dllmap_insert +mono_environment_exitcode_get +mono_environment_exitcode_set +mono_find_method_by_name +mono_free_method +mono_free_verify_list +mono_get_config_dir +mono_get_constant_value_from_blob +mono_get_corlib +mono_get_delegate_invoke +mono_get_framework_version +mono_get_method_full +mono_get_method +mono_get_root_domain +mono_get_runtime_version +mono_get_special_static_data +mono_init_from_assembly +mono_init +mono_init_version +mono_invoke_delegate +mono_jit_exec +mono_lookup_internal_call +mono_lookup_pinvoke_call +mono_main +mono_message_init +mono_message_invoke +mono_parse_default_optimizations +mono_perform_abc_removal +mono_ptr_class_get +mono_register_bundled_assemblies +mono_release_type_locks +mono_remote_class +mono_remote_class_vtable +mono_runtime_class_init +mono_runtime_cleanup +mono_runtime_free_method +mono_runtime_get_main_args +mono_runtime_init +mono_runtime_is_shutting_down +mono_runtime_object_init +mono_runtime_quit +mono_runtime_run_main +mono_table_info_get_rows +mono_upgrade_remote_class +mono_upgrade_remote_class_wrapper +mono_verify_corlib +mono_vtable_get_static_field_data +mono_wait_handle_new +mono_bitset_alloc_size +mono_bitset_clear +mono_bitset_clear_all +mono_bitset_clone +mono_bitset_copyto +mono_bitset_count +mono_bitset_equal +mono_bitset_find_first +mono_bitset_find_last +mono_bitset_find_start +mono_bitset_foreach +mono_bitset_free +mono_bitset_intersection +mono_bitset_invert +mono_bitset_mem_new +mono_bitset_new +mono_bitset_set +mono_bitset_set_all +mono_bitset_size +mono_bitset_sub +mono_bitset_test +mono_bitset_test_bulk +mono_bitset_union +mono_bitset_find_first_unset +mono_bitset_intersection_2 +mono_g_hash_table_destroy +mono_g_hash_table_foreach +mono_g_hash_table_foreach_remove +mono_g_hash_table_foreach_steal +mono_g_hash_table_insert +mono_g_hash_table_lookup +mono_g_hash_table_lookup_extended +mono_g_hash_table_new +mono_g_hash_table_new_full +mono_g_hash_table_remap +mono_g_hash_table_remove +mono_g_hash_table_replace +mono_g_hash_table_size +mono_g_hash_table_steal +mono_raw_buffer_load +mono_raw_buffer_update +mono_raw_buffer_free +mono_sha1_init +mono_sha1_update +mono_sha1_get_digest_from_file +mono_sha1_get_digest +mono_sha1_final +mono_md5_init +mono_md5_update +mono_md5_get_digest_from_file +mono_md5_get_digest +mono_md5_final +mono_digest_get_public_token +mono_mempool_alloc0 +mono_mempool_alloc +mono_mempool_destroy +mono_mempool_empty +mono_mempool_invalidate +mono_mempool_new +mono_mempool_stats +mono_mempool_contains_addr +mono_is_power_of_two +mono_signbit_double +mono_signbit_float +mono_disasm_code +mono_disasm_code_one +mono_disassemble_code +mono_walk_stack +mono_stack_walk_no_il +mono_escape_uri_string +mono_guid_to_string +GetThreadContext +DeleteCriticalSection +EnterCriticalSection +InitializeCriticalSection +InitializeCriticalSectionAndSpinCount +LeaveCriticalSection +SetCriticalSectionSpinCount +TryEnterCriticalSection +errno_to_WSA +GetLastError +SetLastError +CreateEvent +PulseEvent +ResetEvent +SetEvent +CloseHandle +CopyFile +CreateDirectory +CreateFile +CreatePipe +DeleteFile +FileTimeToSystemTime +FindClose +FindFirstFile +FindNextFile +FlushFileBuffers +GetCurrentDirectory +GetFileAttributes +GetFileAttributesEx +GetFileSize +GetFileTime +GetFileType +GetLogicalDriveStrings +GetStdHandle +GetTempPath +LockFile +MoveFile +ReadFile +RemoveDirectory +SetCurrentDirectory +SetEndOfFile +SetFileAttributes +SetFilePointer +SetFileTime +UnlockFile +WriteFile +mono_once +CreateMutex +ReleaseMutex +CreateProcess +EnumProcesses +EnumProcessModules +GetCurrentProcess +GetCurrentProcessId +GetExitCodeProcess +GetModuleBaseName +GetProcessTimes +GetProcessWorkingSetSize +OpenProcess +SetProcessWorkingSetSize +TerminateProcess +ImpersonateLoggedOnUser +RevertToSelf +CreateSemaphore +ReleaseSemaphore +closesocket +ioctlsocket +WSACleanup +WSAGetLastError +WSAIoctl +WSASetLastError +WSAStartup +GetSystemInfo +BindIoCompletionCallback +CreateThread +ExitThread +GetCurrentThread +GetCurrentThreadId +GetExitCodeThread +OpenThread +QueueUserAPC +ResumeThread +Sleep +SleepEx +SuspendThread +TlsAlloc +TlsFree +TlsGetValue +TlsSetValue +GetTickCount +QueryPerformanceCounter +QueryPerformanceFrequency +SignalObjectAndWait +WaitForMultipleObjects +WaitForMultipleObjectsEx +WaitForSingleObject +WaitForSingleObjectEx +OpenEvent +OpenMutex +GetProcessId +ShellExecuteEx +OpenSemaphore diff --git a/docs/exdoc b/docs/exdoc new file mode 100644 index 0000000000..e161a0c3d4 --- /dev/null +++ b/docs/exdoc @@ -0,0 +1,293 @@ +#!/usr/bin/perl + +if ($ARGV[0] eq "-h"){ + $dir = $ARGV[1]; + $html = 1; + shift @ARGV; + shift @ARGV; +} + +if ($html){ + opendir (D, "$dir/sources/") || die "Can not open $dir"; + while ($n = readdir (D)){ + if ($n =~ /mono-api-.*\.html$/){ + open (IN, "$dir/sources/$n") || die "Can not open $n"; + $files[$filecount] = $n; + while (<IN>){ + @files_content[$filecount] .= $_; + if (/name="api:(.*?)"/){ + $_ =~ s/.*name="api:(\w+?)".*/\1/; + $apis[$filecount] .= "$_"; + } + } + $filecount++; + close IN; + } + } +} + +while (<ARGV>){ + if (/\/\*\* *\n/){ + &process_doc; + } else { + #print "IGNORING: $_"; + } +} + +if ($html){ + for ($f = 0; $f < $filecount; $f++){ + $name = $files[$f]; + open (OUT, "> $dir/html/$name") || die "Can not create $dir/html/$name"; + print "Merging: $name\n"; + print OUT<<EOF; +<?xml version="1.0" encoding="utf-8"?> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <title>$name</title> + <style type="text/css"> + h3 { + font-size: 18px; + padding-bottom: 4pt; + border-bottom: 2px solid #dddddd; + } + + .api { + border: 1px solid; + padding: 10pt; + margin: 10pt; + } + + .api-entry { + border-bottom: none; + font-size: 18px; + } + + .prototype { + border: 1px solid; + background-color: #f2f2f2; + padding: 5pt; + margin-top: 5pt; + margin-bottom: 5pt; + } + + .header { + border: 1px solid; + padding: 0 0 5pt 5pt; + margin: 10pt; + white-space: pre; + font-family: monospace; + } + + .code { + border: 1px solid; + padding: 0 0 5pt 5pt; + margin: 10pt; + white-space: pre; + font-family: monospace; + } + </style> +</head> +<body> +EOF + @a = split (/\n/, $files_content[$f]); + + for ($ai = 0; $ai < $#a; $ai++){ + $line = $a[$ai]; + + ($api,$caption) = $line =~ /<h4><a name=\"api:(\w+)\">(\w+)<\/a><\/h4>/; + if ($api ne ""){ + if ($api_shown == 1){ + print OUT "</div>"; + } + $api_shown = 1; + $proto = $prototype{$api}; + if ($proto eq ""){ + $proto = "Prototype: $api"; + } + +print OUT<<EOF; + <a name="api:$api"></a> + <div class="api"> + <div class="api-entry">$api</div> + + <div class="prototype">$proto</div> +<p> +EOF + &opt_print ("Parameters", $arguments{$api}, 1); + &opt_print ("Returns", $returns{$api}, 1); + &opt_print ("Remarks", $bodies{$api}, 0); + print OUT "\n"; + } else { + if ($line =~ /@API_IDX@/){ + $apis_toc = &create_toc ($apis[$f]); + $line =~ s/\@API_IDX\@/$apis_toc/; + } + if ($line =~ /^<h/){ + print OUT "</div>"; + $api_shown = 0; + } + + print OUT "$line\n"; + } + } + print OUT<<EOF; +</body> +</html> +EOF + close OUT; + system ("$ENV{runtimedir}/mono-wrapper convert.exe $dir/html/$name $dir/html/x-$name"); + + # clean up the mess that AgilityPack does, it CDATAs our CSS + open HACK, "$dir/html/x-$name" || die "Could not open $dir/html/x-$name"; + open HACKOUT, ">$dir/deploy/$name" || die "Could not open output"; + + while (<HACK>){ + s/^\/\/<!\[CDATA\[//; + s/^\/\/\]\]>\/\///; + print HACKOUT $_; + } + #system ("cp.exe $dir/html/$name $dir/deploy/$name"); + } +} + +sub process_doc { + $doc = ""; + $func = <>; + chop $func; + $func =~ s/^ \* //; + $func =~ s/:$//; + print "Function: $func\n" if (!$html); + $args = ""; + $inbody = 0; + $returns = ""; + $body = ""; + $functions[$fn++] = $func; + + # Process arguments + while (<>){ + if (/^ \*\*?\//){ + $body =~ s/[@#](\w+)/<i>\1<\/i>/g; + $returns =~ s/[@#](\w+)/<i>\1<\/i>/g; + + $args =~ s/@(\w+)/<i>\1<\/i>/g; + $body =~ s/\n/ /; + $bodies{$func} = $body; + $arguments{$func} = $args; + $returns{$func} = $returns; + $proto = ""; + while (<>){ + $proto .= $_; + last if (/\{/); + } + $proto =~ s/{//; + # clean it up a little, remove newlines, empty space at end + $proto =~ s/ +$//; + # Turn "Type * xxx" into "Type* xxx" + $proto =~ s/^(\w+)\W+\*/\1\*/; + $prototype{$func} = $proto; + return; + } + chop; + s/^\ \*//; + $_ = "\n<p>" if (/^\s+$/); + + if ($inbody == 0){ + if (/\s*(\w+):(.*)/){ + $args .= "<dt><i>$1:</i></dt><dd>$2</dd>"; + } else { + + $body = "\t$_\n"; + $inbody = 1; + } + } elsif ($inbody == 1) { + if (/Returns?:/){ + s/Returns?://; + $returns = "\t$_\n"; + $inbody = 2; + } else { + $body .= "\n\t$_"; + } + } else { + $returns .= "\n\t$_"; + } + + } +} + +sub create_toc { + my ($apis_listed) = @_; + my $type_size = 0; + my $name_size = 0; + my $ret, $xname, $args, $line; + $apis_toc = ""; + + + # Try to align things, so compute type size, method size, and arguments + foreach $line (split /\n/, $apis_listed){ + $p = $prototype{$line}; + ($ret, $xname, $args) = $p =~ /(.*)\n(\w+)[ \t](.*)/; + $tl = length ($ret); + $pl = length ($xname); + + $type_size = $tl if ($tl > $type_size); + $name_size = $pl if ($pl > $name_size); + } + + $type_size++; + $name_size++; + + foreach $line (split /\n/, $apis_listed){ + chop; + $p = $prototype{$line}; + ($ret, $xname, $args) = $p =~ /(.*)\n(\w+)[ \t](.*)/; + + $rspace = " " x ($type_size - length ($ret)); + $nspace = " " x ($name_size - length ($xname)); + $args = &format ($args, length ($ret . $rspace . $xname . $nspace), 60); + $apis_toc .= "$ret$rspace<a href=\"\#api:$line\">$xname</a>$nspace$args\n"; + } + return $apis_toc; +} + +# +# Formats the rest of the arguments in a way that will fit in N columns +# +sub format { + my ($args, $size, $limit) = @_; + my $sret = ""; + +# return $args if ((length (args) + size) < $limit); + + $remain = $limit - $size; + @sa = split /,/, $args; + $linelen = $size; + foreach $arg (@sa){ + if ($sret eq ""){ + $sret = $arg . ", "; + $linelen += length ($sret); + } else { + if ($linelen + length ($arg) < $limit){ + $sret .= "FITS" . $arg . ", "; + } else { + $newline = " " x ($size) . $arg . ", "; + $linelen = length ($newline); + $sret .= "\n" . $newline; + } + } + } + $sret =~ s/, $/;/; + return $sret; +} + +sub opt_print { + my ($caption, $opttext, $quote) = @_; + + if ($opttext ne "" && (!($opttext =~ /^[ \t]+$/))){ + print OUT "<b>$caption</b>\n"; + if ($quote == 1){ + print OUT "<blockquote>$opttext</blockquote>\n"; + } else { + print OUT "<p>$opttext\n"; + } + } +} diff --git a/docs/ignore b/docs/ignore new file mode 100644 index 0000000000..d48dbbd371 --- /dev/null +++ b/docs/ignore @@ -0,0 +1,477 @@ +stackval_to_data +stackval_from_data +ves_exec_method +string_marshal_test0 +string_marshal_test1 +string_marshal_test2 +string_marshal_test3 +test_lpwstr_marshal +return_self +BugGetVersionEx +callFunction +class_marshal_test0 +class_marshal_test1 +class_marshal_test2 +class_marshal_test4 +GetVersionEx +HexDump +HexDump1W +HexDumpA +marshal_test_bool_struct +marshal_test_ref_bool +TestVectorList +__bsd_dtoa +bsd_strtod +TestBlittableClass +# +# Produced by the tests +# +mono_test_asany +mono_test_byvalstr_check +mono_test_byvalstr_gen +mono_test_delegate_struct +mono_test_empty_pinvoke +mono_test_empty_struct +mono_test_last_error +mono_test_many_byte_arguments +mono_test_many_double_arguments +mono_test_many_float_arguments +mono_test_many_int_arguments +mono_test_many_short_arguments +mono_test_marshal_amd64_pass_return_struct1 +mono_test_marshal_amd64_pass_return_struct2 +mono_test_marshal_amd64_pass_return_struct3 +mono_test_marshal_amd64_pass_return_struct4 +mono_test_marshal_array +mono_test_marshal_bool_byref +mono_test_marshal_byref_class +mono_test_marshal_byref_string_array +mono_test_marshal_char +mono_test_marshal_char_array +mono_test_marshal_class +mono_test_marshal_delegate +mono_test_marshal_delegate10 +mono_test_marshal_delegate2 +mono_test_marshal_delegate4 +mono_test_marshal_delegate5 +mono_test_marshal_delegate6 +mono_test_marshal_delegate7 +mono_test_marshal_delegate8 +mono_test_marshal_delegate9 +mono_test_marshal_delegate_struct +mono_test_marshal_empty_string_array +mono_test_marshal_inout_array +mono_test_marshal_inout_nonblittable_array +mono_test_marshal_long_align_struct_array +mono_test_marshal_mixed_point +mono_test_marshal_mixed_point_2 +mono_test_marshal_out_struct +mono_test_marshal_pass_return_custom +mono_test_marshal_pass_return_custom_in_delegate +mono_test_marshal_point +mono_test_marshal_primitive_byref_delegate +mono_test_marshal_return_delegate +mono_test_marshal_return_delegate_delegate +mono_test_marshal_string_array +mono_test_marshal_stringbuilder +mono_test_marshal_stringbuilder_array +mono_test_marshal_stringbuilder_unicode +mono_test_marshal_struct +mono_test_marshal_struct2 +mono_test_marshal_struct2_2 +mono_test_marshal_struct_array +mono_test_marshal_unicode_string_array +mono_test_marshal_asany_inout +mono_test_marshal_byref_struct +mono_test_marshal_cdecl_delegate +mono_test_marshal_ia64_pass_return_struct5 +mono_test_marshal_ia64_pass_return_struct6 +mono_test_marshal_out_array +mono_test_marshal_out_array_delegate +mono_test_marshal_out_string_array_delegate +mono_test_marshal_pass_byref_custom +mono_test_marshal_pass_out_custom +mono_test_marshal_return_string_array_delegate +mono_test_marshal_small_struct_delegate1 +mono_test_marshal_small_struct_delegate10 +mono_test_marshal_small_struct_delegate11 +mono_test_marshal_small_struct_delegate2 +mono_test_marshal_small_struct_delegate3 +mono_test_marshal_small_struct_delegate4 +mono_test_marshal_small_struct_delegate5 +mono_test_marshal_small_struct_delegate6 +mono_test_marshal_small_struct_delegate7 +mono_test_marshal_small_struct_delegate8 +mono_test_marshal_small_struct_delegate9 +mono_test_puts_static +mono_test_ref_vtype +mono_test_return_string +mono_test_marshal_blittable_struct_delegate +mono_test_marshal_return_enum_delegate +mono_test_return_vtype +mono_test_split_double_arguments +mono_test_stdcall_name_mangling +mono_union_test_1 +NameManglingAnsi +NameManglingAnsi2A +NameManglingAnsi2W +NameManglingAnsiA +NameManglingAnsiW +NameManglingAuto +NameManglingAutoW +NameManglingUnicode +NameManglingUnicode2 +NameManglingUnicodeW +reliable_delegate +# +# Some internals +# +mini_emit_castclass_iface_class +mini_emit_castclass_iface +mini_emit_castclass +mini_emit_isninst_cast +mini_emit_isninst_iface_cast +mini_emit_isninst_iface_class_cast +mini_emit_memcpy +mini_emit_memset +mini_emit_virtual_call +ldind_to_load_membase +mono_return_int +mono_return_int_ss +mono_return_int_su +mono_return_sc1 +mono_return_sc3 +mono_return_sc5 +mono_return_ss +# +# The following are internal calls that are exposed because of cross +# library dependencies but could be private +# +mono_assembly_load_corlib +mono_assembly_load_from +mono_jit_walk_stack +mono_init_icall +mono_eval_cond_branch +mini_emit_aotconst +mono_add_ins_to_end +mono_type_from_stack_type +mono_perform_ssapre">mono_perform_ssapre +mono_get_shared_generic_class +mono_dynamic_stream_reset">mono_dynamic_stream_reset +mono_allocate_stack_slots +mono_get_inflated_method +mono_debug_read_method +mono_domain_get_tls_offset +mono_thread_get_tls_offset +mono_class_init_trampoline +mono_classes_init +mono_class_inflate_generic_method_full +mono_class_setup_interface_offsets +mono_class_get_overrides_full +mono_class_has_special_static_fields +mono_class_bind_generic_parameters +mono_config_parse_publisher_policy +mono_get_trampoline_code +mono_helper_compile_generic_method +mono_helper_ldstr +mono_helper_ldstr_mscorlib +mono_helper_newobj_mscorlib +mono_helper_stelem_ref +mono_helper_stelem_ref_check +mono_metadata_get_generic_param_row +mono_metadata_signature_deep_dup +mono_metadata_get_param_attrs +mono_metadata_load_generic_param_constraints +mono_find_jit_opcode_emulation +mono_marshal_get_ldflda_wrapper +mono_debug_free_method_jit_info +mono_jit_info_table_add +mono_jit_info_table_remove +mono_jit_info_add_aot_module +mono_install_jit_info_find_in_aot +mono_reflection_get_dynamic_overrides +mono_poll +mono_dynamic_stream_reset +mono_domain_get_tls_offset +mono_domain_add_class_static_data +mono_handle_native_sigsegv +mono_set_config_dir +mono_profiler_coverage_alloc +mono_profiler_coverage_free +mini_method_compile +mono_destroy_compile +mono_get_method_constrained +mono_constant_fold_inst +mono_is_power_of_two +mono_blockset_print +mono_print_tree +mono_print_tree_nl +mono_resolve_patch_target +mono_get_lmf_addr +mono_draw_graph +mono_icall_get_wrapper +mono_find_class_init_trampoline_by_addr +mono_class_init_trampoline +mono_regname_full +mono_codegen +mono_free_loop_info +mono_varlist_sort +mono_varlist_insert_sorted +mono_metadata_generic_method_hash +mono_metadata_lookup_generic_inst +mono_metadata_lookup_generic_class +mono_config_parse_publisher_policy +mono_unload_interface_ids +mono_metadata_type_dup_mp +mono_array_new_va +mono_ldtoken_wrapper +mono_jump_info_token_new +# +# declarative security +# +mono_method_has_declsec +mono_declsec_cache_stack_modifiers +mono_declsec_create_frame +mono_declsec_linkdemand +# +# Bundles, internal: +# +mono_register_config_for_assembly +# +# Optimizations methods, exposed because they are used across files +# +mono_analyze_liveness +mono_perform_ssapre +mono_local_cprop +mono_local_regalloc +mono_aliasing_deadce +mono_aliasing_get_affected_variables_for_inst +mono_aliasing_get_affected_variables_for_inst_in_bb +mono_aliasing_get_affected_variables_for_inst_traversing_code +mono_aliasing_initialize_code_traversal +mono_branch_optimize_exception_target +mono_destroy_aliasing_information +mono_build_aliasing_information +mono_unlink_bblock +mono_ssa_compute +mono_ssa_remove +mono_ssa_cprop +mono_ssa_deadce +mono_find_spvar_for_region +mono_add_varcopy_to_end +mono_image_build_metadata +# +# JIT code genreation internals +# +mono_bblock_add_inst +mono_constant_fold +mono_delegate_trampoline +mono_magic_trampoline +mono_call_inst_add_outarg_reg +mono_compile_create_var +mono_compile_make_var_load +mono_compile_create_var_load +mono_compile_create_var_store +mono_compile_assembly +mono_compile_dominator_info +mono_compute_natural_loops +mono_compile_iterated_dfrontier +mono_create_jump_table +mono_create_ftnptr +mono_create_class_init_trampoline +mono_class_init_trampoline +mono_create_jit_trampoline +mono_create_jit_trampoline_from_token +mono_find_jit_icall_by_name +mono_find_jit_icall_by_addr +mono_register_jit_icall +mono_running_on_valgrind +mono_global_codeman_reserve +mono_linear_scan +# +# Most init/cleanup routines are internally called, so they do not need to be +# documented +# +mono_thread_init +mono_assemblies_init +mono_assembly_load_corlib +mono_get_runtime_info +mono_aligned_addr_hash +mono_meta_table_name +mono_ldtoken_wrapper +mini_init +mini_cleanup +mono_metadata_compute_table_bases +mono_image_basic_init +mono_image_create_method_token +mono_image_create_pefile +mono_image_insert_strings +mono_image_load_module +mono_image_add_to_name_cache +mono_image_verify_tables +mono_debug_init_1 +mono_debug_init_2 +mono_debug_init +mono_aot_init +mono_init_debugger +mono_debugger_initialize +mono_debug_init_method +mono_image_init +mono_images_init +mono_burg_init +mono_burg_kids +mono_burg_label +mono_interp_cleanup +mono_marshal_init +mono_loader_init +mono_metadata_init +mono_thread_pool_init +mono_network_init +mono_network_cleanup +mono_raw_buffer_init +mono_debugger_cleanup +mono_thread_pool_cleanup +mono_gc_cleanup +mono_interp_init +mono_context_init +mono_gc_init +mono_debug_cleanup +mono_image_module_basic_init +mono_thread_pool_cleanup +mono_icall_cleanup +mono_icall_init +mono_monitor_init +mono_install_init_vtable +mono_x86_tramp_init +mono_install_get_cached_class_info +mono_debugger_init +# +# Internal JIT icalls +# +mono_lldiv +mono_lldiv_un +mono_llmult +mono_llmult_ovf +mono_llmult_ovf_un +mono_llrem +mono_llrem_un +mono_fconv_ovf_i8 +mono_fconv_ovf_u8 +mono_fconv_u4 +mono_fconv_u8 +mono_ldftn +mono_ldftn_nosync +mono_ldtoken_wrapper +mono_ldvirtfn +mono_class_static_field_address +ves_array_element_address +mono_runtime_set_shutting_down +mono_set_rootdir +mono_object_hash +mono_thread_pool_remove_socket +mono_thread_free_local_slot_values +mono_get_jit_tls_key +mono_get_lmf_tls_offset +mono_jit_thread_attach +# +# Internally used +# +mono_assembly_load_from_full +mono_assembly_load_module +mono_assembly_load_reference +mono_assembly_load_references +mono_assembly_load_with_partial_name +mono_assembly_fill_assembly_name +mono_assembly_foreach +mono_assembly_invoke_load_hook +mono_assembly_invoke_search_hook +mono_assembly_name_parse_full +mono_assembly_set_main +mono_assembly_get_assemblyref +mono_assembly_setrootdir +mono_trace_enable +mono_trace_is_enabled +mono_trace_set_assembly +mono_trace_eval +mono_patch_info_dup_mp +mono_patch_info_hash +mono_patch_info_equal +mono_remove_patch_info +mono_add_patch_info +mono_disassemble_code +mono_inst_foreach +mono_print_code +mono_method_same_domain +mono_register_opcode_emulation +# +# I believe these are internal, but I should check with the JIT guys +# +mono_assembly_open_full +# +# These are internal rawbuffer structures that we use to explore the +# access to the metadata. +# +mono_raw_buffer_get_n_pagefaults +mono_raw_buffer_handle_pagefault +mono_raw_buffer_is_pagefault +mono_raw_buffer_set_make_unreadable +# +# AOT: I believe that the AOT API is completely internal, so am listing it +# here for now, unless we decide there are pieces that should be documneted +# +mono_precompile_assemblies +mono_aot_get_class_from_name +mono_aot_find_jit_info +mono_aot_get_method_from_token +mono_aot_get_n_pagefaults +mono_aot_handle_pagefault +mono_aot_is_pagefault +mono_aot_set_make_unreadable +mono_aot_find_jit_info +mono_aot_get_method_from_token +mono_aot_get_n_pagefaults +mono_aot_get_plt_entry +mono_aot_handle_pagefault +mono_aot_is_pagefault +mono_aot_plt_resolve +mono_aot_set_make_unreadable +mono_aot_plt_trampoline +mono_aot_trampoline +mono_aot_get_cached_class_info +mono_aot_get_method +mono_aot_is_got_entry +mono_aot_get_class_from_name +# +# These should be static, but require some ugly changes +# +alu_reg_to_alu_imm +alu_reg_to_alu_membase_imm +# +# Internal security manager +# +mono_secman_inheritancedemand_method +mono_secman_inheritancedemand_class +# +# Produced by matching against the MONO_INTERNAL macro +# +mono_regstate_free +mono_regstate_free_float +mono_regstate_free_int +mono_regstate_alloc_float +mono_regstate_alloc_int +mono_regstate_assign +mono_regstate_new +mono_regstate_next_long +mono_regstate_reset +mono_debug_open_method +mono_debug_close_method +mono_debug_open_block +mono_debug_record_line_number +mono_debug_serialize_debug_info +mono_debug_add_icall_wrapper +__i686.get_pc_thunk +mono_trace_enable +mono_trace_is_enabled +mono_trace_eval +mono_trace_leave_method +mono_trace_enter_method
\ No newline at end of file diff --git a/docs/jit-trampolines b/docs/jit-trampolines index dba6a7062d..82eac67fe0 100644 --- a/docs/jit-trampolines +++ b/docs/jit-trampolines @@ -103,6 +103,30 @@ In the cases above, the number of generated trampolines goes from 5400 for the IronPython case and from 800 to 150 for the hello world case. +Kinds of Trampolines and Thunks +=============================== + +This is a list of the trampolines and thunks used in Mono: + +- create_fnptr +- load_aot_method +- imt thunk + + Interface Method Table, this is used to dispatch calls to + interface methods. + +- jump table +- debugger code +- exception call filter +- trampoline (various types) +- throw corlib exception +- restore context +- throw exception by name +- handle stack overflow +- throw exception +- delegate invoke implementation +- cpuid code + Implementation for x86/x86-64 ============================= diff --git a/docs/mini-porting.txt b/docs/mini-porting.txt index cdb967d3d9..e629aff8df 100644 --- a/docs/mini-porting.txt +++ b/docs/mini-porting.txt @@ -417,12 +417,19 @@ * Testing the port - The JIT has a set of regression tests in *.cs files inside the mini directory. - The usual method of testing a port is by compiling these tests on another machine - with a working runtime by typing 'make rcheck', then copying TestDriver.dll and - *.exe to the mini directory. The tests can be run by typing: + The JIT has a set of regression tests in *.cs files inside the + mini directory. + + The usual method of testing a port is by compiling these tests on + another machine with a working runtime by typing 'make rcheck', + then copying TestDriver.dll and *.exe to the mini directory. The + tests can be run by typing: + ./mono --regression <exe file name> - The suggested order for working through these tests is the following: + + The suggested order for working through these tests is the + following: + - basic.exe - basic-long.exe - basic-float.exe @@ -473,6 +480,52 @@ at this point, so the only parts which require changing are the arch dependent files. - - - +* Function descriptors + + Some ABIs, like those for IA64 and PPC64, don't use direct + function pointers, but so called function descriptors. A + function descriptor is a short data structure which contains + at least a pointer to the code of the function and a pointer + to a GOT/TOC, which needs to be loaded into a specific + register prior to jumping to the function. Global variables + and large constants are accessed through that register. + + Mono does not need function descriptors for the JITted code, + but we need to handle them when calling unmanaged code and we + need to create them when passing managed code to unmanaged + code. + + mono_create_ftnptr() creates a function descriptor for a piece + of generated code within a specific domain. + + mono_get_addr_from_ftnptr() returns the pointer to the native + code in a function descriptor. Never use this function to + generate a jump to a function without loading the GOT/TOC + register unless the function descriptor was created by + mono_create_ftnptr(). + + See the sources for IA64 and PPC64 on when to create and when + to dereference function descriptors. On PPC64 function + descriptors for various generated helper functions (in + exceptions-ppc.c and tramp-ppc.c) are generated in front of + the code they refer to (see ppc_create_pre_code_ftnptr()). On + IA64 they are created separately. + +* Emulated opcodes + + Mini has code for emulating quite a few opcodes, most notably + operations on longs, int/float conversions and atomic + operations. If an architecture wishes such an opcode to be + emulated, mini produces icalls instead of those opcodes. This + should only be considered when the operation cannot be + implemented efficiently and thus the overhead occured by the + icall is not relatively large. Emulation of operations is + controlled by #defines in the arch header, but the naming is + not consistent. They usually start with MONO_ARCH_EMULATE_, + MONO_ARCH_NO_EMULATE_ and MONO_ARCH_HAVE_. + +* Generic code sharing + + Generic code sharing is optional. See the file + "generic-sharing" for information on how to support it on an + architecture. diff --git a/docs/mono-api-metadata.html b/docs/mono-api-metadata.html new file mode 100644 index 0000000000..ff60ca2b6d --- /dev/null +++ b/docs/mono-api-metadata.html @@ -0,0 +1,103 @@ +<h3>Metadata Loader Locking</h3> + + <p>The locking functions here are used by code in class.c and + metadata.c to lock access to the shared hashtables inside the + MonoImage + +<h4><a name="api:mono_loader_lock">mono_loader_lock</a></h4> +<h4><a name="api:mono_loader_unlock">mono_loader_unlock</a></h4> + +<h3>Metadata access API</h3> + + <p>This is the low-level API for accessing the metadata + images. + +<h4><a name="api:mono_cli_rva_image_map">mono_cli_rva_image_map</a></h4> +<h4><a name="api:mono_meta_table_name">mono_meta_table_name</a></h4> +<h4><a name="api:mono_metadata_blob_heap">mono_metadata_blob_heap</a></h4> +<h4><a name="api:mono_metadata_compute_size">mono_metadata_compute_size</a></h4> +<h4><a name="api:mono_metadata_compute_table_bases">mono_metadata_compute_table_bases</a></h4> +<h4><a name="api:mono_metadata_custom_attrs_from_index">mono_metadata_custom_attrs_from_index</a></h4> +<h4><a name="api:mono_metadata_decode_blob_size">mono_metadata_decode_blob_size</a></h4> +<h4><a name="api:mono_metadata_decode_row_col">mono_metadata_decode_row_col</a></h4> +<h4><a name="api:mono_metadata_decode_row">mono_metadata_decode_row</a></h4> +<h4><a name="api:mono_metadata_decode_value">mono_metadata_decode_value</a></h4> +<h4><a name="api:mono_metadata_encode_value">mono_metadata_encode_value</a></h4> +<h4><a name="api:mono_metadata_events_from_typedef">mono_metadata_events_from_typedef</a></h4> +<h4><a name="api:mono_metadata_field_info">mono_metadata_field_info</a></h4> +<h4><a name="api:mono_metadata_free_array">mono_metadata_free_array</a></h4> +<h4><a name="api:mono_metadata_free_marshal_spec">mono_metadata_free_marshal_spec</a></h4> +<h4><a name="api:mono_metadata_free_method_signature">mono_metadata_free_method_signature</a></h4> +<h4><a name="api:mono_metadata_free_mh">mono_metadata_free_mh</a></h4> +<h4><a name="api:mono_metadata_free_type">mono_metadata_free_type</a></h4> +<h4><a name="api:mono_metadata_generic_inst_equal">mono_metadata_generic_inst_equal</a></h4> +<h4><a name="api:mono_metadata_generic_inst_hash">mono_metadata_generic_inst_hash</a></h4> +<h4><a name="api:mono_metadata_generic_inst_is_valuetype">mono_metadata_generic_inst_is_valuetype</a></h4> +<h4><a name="api:mono_metadata_generic_method_equal">mono_metadata_generic_method_equal</a></h4> +<h4><a name="api:mono_metadata_generic_method_hash">mono_metadata_generic_method_hash</a></h4> +<h4><a name="api:mono_metadata_get_constant_index">mono_metadata_get_constant_index</a></h4> +<h4><a name="api:mono_metadata_get_marshal_info">mono_metadata_get_marshal_info</a></h4> +<h4><a name="api:mono_metadata_get_table">mono_metadata_get_table</a></h4> +<h4><a name="api:mono_metadata_guid_heap">mono_metadata_guid_heap</a></h4> +<h4><a name="api:mono_metadata_implmap_from_method">mono_metadata_implmap_from_method</a></h4> +<h4><a name="api:mono_metadata_interfaces_from_typedef_full">mono_metadata_interfaces_from_typedef_full</a></h4> +<h4><a name="api:mono_metadata_interfaces_from_typedef">mono_metadata_interfaces_from_typedef</a></h4> +<h4><a name="api:mono_metadata_load_generic_params">mono_metadata_load_generic_params</a></h4> +<h4><a name="api:mono_metadata_locate">mono_metadata_locate</a></h4> +<h4><a name="api:mono_metadata_locate_token">mono_metadata_locate_token</a></h4> +<h4><a name="api:mono_metadata_methods_from_event">mono_metadata_methods_from_event</a></h4> +<h4><a name="api:mono_metadata_methods_from_property">mono_metadata_methods_from_property</a></h4> +<h4><a name="api:mono_metadata_nested_in_typedef">mono_metadata_nested_in_typedef</a></h4> +<h4><a name="api:mono_metadata_nesting_typedef">mono_metadata_nesting_typedef</a></h4> +<h4><a name="api:mono_metadata_packing_from_typedef">mono_metadata_packing_from_typedef</a></h4> +<h4><a name="api:mono_metadata_parse_array_full">mono_metadata_parse_array_full</a></h4> +<h4><a name="api:mono_metadata_parse_array">mono_metadata_parse_array</a></h4> +<h4><a name="api:mono_metadata_parse_custom_mod">mono_metadata_parse_custom_mod</a></h4> +<h4><a name="api:mono_metadata_parse_field_type">mono_metadata_parse_field_type</a></h4> +<h4><a name="api:mono_metadata_parse_marshal_spec">mono_metadata_parse_marshal_spec</a></h4> +<h4><a name="api:mono_metadata_parse_method_signature_full">mono_metadata_parse_method_signature_full</a></h4> +<h4><a name="api:mono_metadata_parse_method_signature">mono_metadata_parse_method_signature</a></h4> +<h4><a name="api:mono_metadata_parse_mh_full">mono_metadata_parse_mh_full</a></h4> +<h4><a name="api:mono_metadata_parse_mh">mono_metadata_parse_mh</a></h4> +<h4><a name="api:mono_metadata_parse_param">mono_metadata_parse_param</a></h4> +<h4><a name="api:mono_metadata_parse_signature_full">mono_metadata_parse_signature_full</a></h4> +<h4><a name="api:mono_metadata_parse_signature">mono_metadata_parse_signature</a></h4> +<h4><a name="api:mono_metadata_parse_typedef_or_ref">mono_metadata_parse_typedef_or_ref</a></h4> +<h4><a name="api:mono_metadata_parse_type_full">mono_metadata_parse_type_full</a></h4> +<h4><a name="api:mono_metadata_parse_type">mono_metadata_parse_type</a></h4> +<h4><a name="api:mono_metadata_properties_from_typedef">mono_metadata_properties_from_typedef</a></h4> +<h4><a name="api:mono_metadata_signature_alloc">mono_metadata_signature_alloc</a></h4> +<h4><a name="api:mono_metadata_signature_dup">mono_metadata_signature_dup</a></h4> +<h4><a name="api:mono_metadata_signature_equal">mono_metadata_signature_equal</a></h4> +<h4><a name="api:mono_metadata_string_heap">mono_metadata_string_heap</a></h4> +<h4><a name="api:mono_metadata_token_from_dor">mono_metadata_token_from_dor</a></h4> +<h4><a name="api:mono_metadata_typedef_from_field">mono_metadata_typedef_from_field</a></h4> +<h4><a name="api:mono_metadata_typedef_from_method">mono_metadata_typedef_from_method</a></h4> +<h4><a name="api:mono_metadata_type_equal">mono_metadata_type_equal</a></h4> +<h4><a name="api:mono_metadata_type_hash">mono_metadata_type_hash</a></h4> +<h4><a name="api:mono_metadata_user_string">mono_metadata_user_string</a></h4> + +<h3>Tokens</h3> + +<h4><a name="api:mono_ldtoken">mono_ldtoken</a></h4> +<h4><a name="api:mono_lookup_dynamic_token">mono_lookup_dynamic_token</a></h4> +<h4><a name="api:mono_ldstr">mono_ldstr</a></h4> + +<h3>Working with signatures</h3> + +<h4><a name="api:mono_signature_explicit_this">mono_signature_explicit_this</a></h4> +<h4><a name="api:mono_signature_get_call_conv">mono_signature_get_call_conv</a></h4> +<h4><a name="api:mono_signature_get_desc">mono_signature_get_desc</a></h4> +<h4><a name="api:mono_signature_get_param_count">mono_signature_get_param_count</a></h4> +<h4><a name="api:mono_signature_get_params">mono_signature_get_params</a></h4> +<h4><a name="api:mono_signature_get_return_type">mono_signature_get_return_type</a></h4> +<h4><a name="api:mono_signature_hash">mono_signature_hash</a></h4> +<h4><a name="api:mono_signature_is_instance">mono_signature_is_instance</a></h4> +<h4><a name="api:mono_signature_vararg_start">mono_signature_vararg_start</a></h4> + + +<h3>OpCodes</h3> + +<h4><a name="api:mono_opcode_name">mono_opcode_name</a></h4> +<h4><a name="api:mono_opcode_value">mono_opcode_value</a></h4> + diff --git a/docs/mono-file-formats.config b/docs/mono-file-formats.config new file mode 100644 index 0000000000..da74d04260 --- /dev/null +++ b/docs/mono-file-formats.config @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<manpages> + <manpage name="mdoc(5)" page="../man/mdoc.5" /> + <manpage name="mono-config(5)" page="../man/mono-config.5" /> +</manpages> diff --git a/docs/mono-file-formats.source b/docs/mono-file-formats.source new file mode 100644 index 0000000000..83b8cac08d --- /dev/null +++ b/docs/mono-file-formats.source @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<monodoc> + <source provider="man" basefile="mono-file-formats" path="man"/> +</monodoc> diff --git a/docs/mono-tools.config b/docs/mono-tools.config new file mode 100644 index 0000000000..a5d8863748 --- /dev/null +++ b/docs/mono-tools.config @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<manpages> + <manpage name="al(1)" page="../man/al.1" /> + <manpage name="caspol(1)" page="../man/caspol.1" /> + <manpage name="cert2spc(1)" page="../man/cert2spc.1" /> + <manpage name="certmgr(1)" page="../man/certmgr.1" /> + <manpage name="chktrust(1)" page="../man/chktrust.1" /> + <manpage name="cilc(1)" page="../man/cilc.1" /> + <manpage name="disco(1)" page="../man/disco.1" /> + <manpage name="dtd2xsd(1)" page="../man/dtd2xsd.1" /> + <manpage name="gacutil(1)" page="../man/gacutil.1" /> + <manpage name="genxs(1)" page="../man/genxs.1" /> + <manpage name="httpcfg(1)" page="../man/httpcfg.1" /> + <manpage name="ilasm(1)" page="../man/ilasm.1" /> + <manpage name="macpack(1)" page="../man/macpack.1" /> + <manpage name="makecert(1)" page="../man/makecert.1" /> + <manpage name="mconfig(1)" page="../man/mconfig.1" /> + <manpage name="mcs(1)" page="../man/mcs.1" /> + <manpage name="mdassembler(1)" page="../man/mdassembler.1" /> + <manpage name="mdcs2ecma(1)" page="../man/mdcs2ecma.1" /> + <manpage name="mdnormalizer(1)" page="../man/mdnormalizer.1" /> + <manpage name="mdoc(1)" page="../man/mdoc.1" /> + <manpage name="mdoc-assemble(1)" page="../man/mdoc-assemble.1" /> + <manpage name="mdoc-export-html(1)" page="../man/mdoc-export-html.1" /> + <manpage name="mdoc-export-msxdoc(1)" page="../man/mdoc-export-msxdoc.1" /> + <manpage name="mdoc-update(1)" page="../man/mdoc-update.1" /> + <manpage name="mdoc-validate(1)" page="../man/mdoc-validate.1" /> + <manpage name="mdvalidator(1)" page="../man/mdvalidator.1" /> + <manpage name="mkbundle(1)" page="../man/mkbundle.1" /> + <manpage name="mono(1)" page="../man/mono.1" /> + <manpage name="mono-service(1)" page="../man/mono-service.1" /> + <manpage name="mono-shlib-cop(1)" page="../man/mono-shlib-cop.1" /> + <manpage name="monodocer(1)" page="../man/monodocer.1" /> + <manpage name="monodocs2html(1)" page="../man/monodocs2html.1" /> + <manpage name="monolinker(1)" page="../man/monolinker.1" /> + <manpage name="monop(1)" page="../man/monop.1" /> + <manpage name="monostyle(1)" page="../man/monostyle.1" /> + <manpage name="mono-xmltool(1)" page="../man/mono-xmltool.1" /> + <manpage name="mozroots(1)" page="../man/mozroots.1" /> + <manpage name="oldmono(1)" page="../man/oldmono.1" /> + <manpage name="permview(1)" page="../man/permview.1" /> + <manpage name="prj2make(1)" page="../man/prj2make.1" /> + <manpage name="resgen(1)" page="../man/resgen.1" /> + <manpage name="secutil(1)" page="../man/secutil.1" /> + <manpage name="setreg(1)" page="../man/setreg.1" /> + <manpage name="sgen(1)" page="../man/sgen.1" /> + <manpage name="signcode(1)" page="../man/signcode.1" /> + <manpage name="sn(1)" page="../man/sn.1" /> + <manpage name="soapsuds(1)" page="../man/soapsuds.1" /> + <manpage name="sqlsharp(1)" page="../man/sqlsharp.1" /> + <manpage name="vbnc(1)" page="../man/vbnc.1" /> + <manpage name="wsdl(1)" page="../man/wsdl.1" /> + <manpage name="wsdl2(1)" page="../man/wsdl2.1" /> + <manpage name="xsd(1)" page="../man/xsd.1" /> +</manpages> diff --git a/docs/mono-tools.source b/docs/mono-tools.source new file mode 100644 index 0000000000..37f4b44ca4 --- /dev/null +++ b/docs/mono-tools.source @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<monodoc> + <source provider="man" basefile="mono-tools" path="man"/> +</monodoc> diff --git a/docs/monoapi.source b/docs/monoapi.source new file mode 100644 index 0000000000..3f25f3201a --- /dev/null +++ b/docs/monoapi.source @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<monodoc> + <node label="Mono Embedding" name="embed" parent="libraries"/> + <source provider="xhtml" basefile="monoapi" path="embed"/> +</monodoc> diff --git a/docs/produce-lists b/docs/produce-lists new file mode 100644 index 0000000000..43770131ac --- /dev/null +++ b/docs/produce-lists @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Produces two lists in docscripts: +# public-api with the public API except the Wapi +# wapi the public WAPI API +# + +dir=`dirname $0` +add_h4() +{ + sed -e 's/^\t<h4>//' -e 's/$/<\/h4>/' +} + +ignore_known() +{ + egrep -v -f $dir/ignore +} + +clean_nm () +{ + grep ' T ' | sed 's/.* T //' +} + +ignore_wapi () +{ + grep -v _wapi | fgrep -v -f $dir/wapi +} + +if grep ^$ ignore >/dev/null; then + echo The ignore file contains empty lines, which breaks this script, please remove + echo the empty lines. + exit 1 +fi + +nm $dir/../io-layer/.libs/*.o | clean_nm | grep -v _wapi | ignore_known > $dir/wapi +nm $dir/../*/.libs/*.o | clean_nm | ignore_known | ignore_wapi | grep -v ^ves_icall | grep -v ^mono_arch_ > $dir/public-api diff --git a/docs/public b/docs/public new file mode 100644 index 0000000000..1defaf0f68 --- /dev/null +++ b/docs/public @@ -0,0 +1,79 @@ +mono_array_clone +mono_array_clone_in_domain +mono_array_full_copy +mono_array_new +mono_array_new_full +mono_array_new_specific +mono_async_result_new +mono_class_get_allocation_ftn +mono_class_vtable +mono_compile_method +mono_delegate_ctor +mono_field_get_value +mono_field_get_value_object +mono_field_set_value +mono_field_static_get_value +mono_field_static_set_value +mono_get_constant_value_from_blob +mono_get_delegate_invoke +mono_install_compile_method +mono_install_free_method +mono_install_handler +mono_install_remoting_trampoline +mono_install_runtime_invoke +mono_install_trampoline +mono_ldstr +mono_load_remote_field +mono_load_remote_field_new +mono_message_init +mono_message_invoke +mono_method_call_message_new +mono_method_return_message_restore +mono_object_castclass_mbyref +mono_object_clone +mono_object_get_class +mono_object_get_domain +mono_object_get_virtual_method +mono_object_isinst +mono_object_isinst_mbyref +mono_object_new +mono_object_new_alloc_specific +mono_object_new_fast +mono_object_new_from_token +mono_object_new_specific +mono_object_unbox +mono_print_unhandled_exception +mono_property_get_value +mono_property_set_value +mono_raise_exception +mono_release_type_locks +mono_remote_class +mono_remote_class_vtable +mono_remoting_invoke +mono_runtime_class_init +mono_runtime_delegate_invoke +mono_runtime_exec_main +mono_runtime_exec_managed_code +mono_runtime_free_method +mono_runtime_get_main_args +mono_runtime_invoke +mono_runtime_invoke_array +mono_runtime_object_init +mono_runtime_run_main +mono_store_remote_field +mono_store_remote_field_new +mono_string_from_utf16 +mono_string_intern +mono_string_is_interned +mono_string_new +mono_string_new_len +mono_string_new_size +mono_string_new_utf16 +mono_string_new_wrapper +mono_string_to_utf16 +mono_string_to_utf8 +mono_type_initialization_init +mono_unhandled_exception +mono_upgrade_remote_class +mono_value_box +mono_wait_handle_new diff --git a/docs/public-api b/docs/public-api new file mode 100644 index 0000000000..3a56f5810c --- /dev/null +++ b/docs/public-api @@ -0,0 +1,929 @@ +mono_check_corlib_version +mono_domain_has_type_resolve +mono_domain_is_unloading +mono_domain_owns_vtable_slot +mono_domain_set +mono_domain_try_type_resolve +mono_install_runtime_cleanup +mono_runtime_cleanup +mono_runtime_init +mono_runtime_is_shutting_down +mono_runtime_quit +mono_assemblies_cleanup +mono_assembly_addref +mono_assembly_close +mono_assembly_get_image +mono_assembly_get_main +mono_assembly_getrootdir +mono_assembly_load +mono_assembly_loaded +mono_assembly_loaded_full +mono_assembly_load_from +mono_assembly_load_full +mono_assembly_name_free +mono_assembly_name_parse +mono_assembly_names_equal +mono_assembly_open +mono_install_assembly_load_hook +mono_install_assembly_postload_refonly_search_hook +mono_install_assembly_postload_search_hook +mono_install_assembly_preload_hook +mono_install_assembly_refonly_preload_hook +mono_install_assembly_refonly_search_hook +mono_install_assembly_search_hook +mono_register_bundled_assemblies +mono_set_dirs +mono_stringify_assembly_name +mono_gc_alloc_fixed +mono_gc_base_init +mono_gc_collect +mono_gc_disable +mono_gc_enable +mono_gc_enable_events +mono_gc_free_fixed +mono_gc_get_heap_size +mono_gc_get_used_size +mono_gc_invoke_finalizers +mono_gc_is_gc_thread +mono_gc_make_descr_from_bitmap +mono_gc_max_generation +mono_gc_pending_finalizers +mono_gc_register_thread +mono_gc_wbarrier_arrayref_copy +mono_gc_wbarrier_generic_store +mono_gc_wbarrier_set_arrayref +mono_gc_wbarrier_set_field +mono_gc_wbarrier_value_copy +mono_gc_weak_link_add +mono_gc_weak_link_get +mono_gc_weak_link_remove +mono_object_is_alive +mono_array_class_get +mono_array_element_size +mono_bounded_array_class_get +mono_class_array_element_size +mono_class_data_size +mono_class_enum_basetype +mono_classes_cleanup +mono_class_from_generic_parameter +mono_class_from_mono_type +mono_class_from_name +mono_class_from_name_case +mono_class_from_typeref +mono_class_get +mono_class_get_byref_type +mono_class_get_cctor +mono_class_get_element_class +mono_class_get_events +mono_class_get_event_token +mono_class_get_exception_for_failure +mono_class_get_field +mono_class_get_field_from_name +mono_class_get_fields +mono_class_get_field_token +mono_class_get_finalizer +mono_class_get_flags +mono_class_get_full +mono_class_get_image +mono_class_get_implemented_interfaces +mono_class_get_interfaces +mono_class_get_method_from_name +mono_class_get_method_from_name_flags +mono_class_get_methods +mono_class_get_name +mono_class_get_namespace +mono_class_get_nested_types +mono_class_get_nesting_type +mono_class_get_nullable_param +mono_class_get_parent +mono_class_get_properties +mono_class_get_property_from_name +mono_class_get_property_token +mono_class_get_rank +mono_class_get_type +mono_class_get_type_token +mono_class_inflate_generic_method +mono_class_inflate_generic_type +mono_class_init +mono_class_instance_size +mono_class_is_assignable_from +mono_class_is_enum +mono_class_is_nullable +mono_class_is_open_constructed_type +mono_class_is_subclass_of +mono_class_is_valuetype +mono_class_layout_fields +mono_class_min_align +mono_class_name_from_token +mono_class_needs_cctor_run +mono_class_num_events +mono_class_num_fields +mono_class_num_methods +mono_class_num_properties +mono_class_set_failure +mono_class_setup_methods +mono_class_setup_mono_type +mono_class_setup_parent +mono_class_setup_supertypes +mono_class_setup_vtable +mono_class_setup_vtable_general +mono_class_value_size +mono_dup_array_type +mono_event_get_add_method +mono_event_get_flags +mono_event_get_name +mono_event_get_parent +mono_event_get_raise_method +mono_event_get_remove_method +mono_field_get_data +mono_field_get_flags +mono_field_get_name +mono_field_get_parent +mono_field_get_type +mono_get_inflated_generic_class +mono_get_shared_generic_inst +mono_image_add_to_name_cache +mono_install_get_class_from_name +mono_install_lookup_dynamic_token +mono_ldtoken +mono_lookup_dynamic_token +mono_lookup_dynamic_token_class +mono_property_get_flags +mono_property_get_get_method +mono_property_get_name +mono_property_get_parent +mono_property_get_set_method +mono_ptr_class_get +mono_type_get_full_name +mono_type_get_name +mono_type_get_name_full +mono_type_get_underlying_type +mono_class_describe_statics +mono_disasm_code +mono_disasm_code_one +mono_method_desc_free +mono_method_desc_from_method +mono_method_desc_full_match +mono_method_desc_match +mono_method_desc_new +mono_method_desc_search_in_class +mono_method_desc_search_in_image +mono_method_full_name +mono_object_describe +mono_object_describe_fields +mono_signature_get_desc +mono_type_full_name +mono_type_get_desc +mono_value_describe_fields +_mono_debug_address_from_il_offset +mono_debug_close_mono_symbol_file +mono_debug_open_mono_symbols +mono_debug_symfile_lookup_location +mono_debug_symfile_lookup_method +mono_decimal2double +mono_decimal2Int64 +mono_decimal2string +mono_decimal2UInt64 +mono_decimalCompare +mono_decimalDiv +mono_decimalFloorAndTrunc +mono_decimalIncr +mono_decimalIntDiv +mono_decimalMult +mono_decimalRound +mono_decimalSetExponent +mono_double2decimal +mono_string2decimal +mono_cleanup +mono_context_get +mono_context_set +mono_debugger_check_runtime_version +mono_domain_assembly_open +mono_domain_create +mono_domain_foreach +mono_domain_free +mono_domain_get +mono_domain_get_by_id +mono_domain_get_id +mono_domain_get_tls_key +mono_domain_set_internal +mono_get_array_class +mono_get_boolean_class +mono_get_byte_class +mono_get_char_class +mono_get_corlib +mono_get_double_class +mono_get_enum_class +mono_get_exception_class +mono_get_int16_class +mono_get_int32_class +mono_get_int64_class +mono_get_intptr_class +mono_get_object_class +mono_get_root_domain +mono_get_sbyte_class +mono_get_single_class +mono_get_string_class +mono_get_thread_class +mono_get_uint16_class +mono_get_uint32_class +mono_get_uint64_class +mono_get_uintptr_class +mono_get_void_class +mono_init +mono_init_from_assembly +mono_init_version +mono_jit_info_get_code_size +mono_jit_info_get_code_start +mono_jit_info_get_method +mono_jit_info_table_find +mono_string_equal +mono_string_hash +mono_environment_exitcode_get +mono_environment_exitcode_set +mono_exception_from_name +mono_exception_from_name_domain +mono_exception_from_name_msg +mono_exception_from_name_two_strings +mono_exception_from_token +mono_get_exception_appdomain_unloaded +mono_get_exception_argument +mono_get_exception_argument_null +mono_get_exception_argument_out_of_range +mono_get_exception_arithmetic +mono_get_exception_array_type_mismatch +mono_get_exception_bad_image_format +mono_get_exception_cannot_unload_appdomain +mono_get_exception_divide_by_zero +mono_get_exception_execution_engine +mono_get_exception_file_not_found +mono_get_exception_file_not_found2 +mono_get_exception_index_out_of_range +mono_get_exception_invalid_cast +mono_get_exception_invalid_operation +mono_get_exception_io +mono_get_exception_missing_field +mono_get_exception_missing_method +mono_get_exception_not_implemented +mono_get_exception_not_supported +mono_get_exception_null_reference +mono_get_exception_overflow +mono_get_exception_reflection_type_load +mono_get_exception_security +mono_get_exception_serialization +mono_get_exception_stack_overflow +mono_get_exception_synchronization_lock +mono_get_exception_thread_abort +mono_get_exception_thread_state +mono_get_exception_type_initialization +mono_get_exception_type_load +mono_domain_finalize +mono_gc_finalize_notify +mono_gchandle_free +mono_gchandle_free_domain +mono_gchandle_get_target +mono_gchandle_is_in_domain +mono_gchandle_new +mono_gchandle_new_weakref +mono_gc_is_finalizer_thread +mono_gc_out_of_memory +mono_object_register_finalizer +mono_add_internal_call +mono_create_icall_signature +mono_lookup_internal_call +mono_cli_rva_image_map +mono_image_addref +mono_image_close +mono_image_ensure_section +mono_image_ensure_section_idx +mono_image_get_assembly +mono_image_get_entry_point +mono_image_get_filename +mono_image_get_guid +mono_image_get_name +mono_image_get_public_key +mono_image_get_resource +mono_image_get_strong_name +mono_image_get_table_info +mono_image_get_table_rows +mono_image_has_authenticode_entry +mono_image_is_dynamic +mono_image_loaded +mono_image_loaded_by_guid +mono_image_loaded_by_guid_full +mono_image_loaded_full +mono_image_load_file_for_image +mono_image_lookup_resource +mono_image_open +mono_image_open_from_data +mono_image_open_from_data_full +mono_image_open_full +mono_image_rva_map +mono_images_cleanup +mono_image_strerror +mono_image_strong_name_position +mono_pe_file_open +mono_table_info_get_rows +mono_dllmap_insert +mono_field_from_token +mono_free_method +mono_get_method +mono_get_method_full +mono_get_shared_generic_method +mono_install_stack_walk +mono_loader_cleanup +mono_loader_clear_error +mono_loader_error_prepare_exception +mono_loader_get_last_error +mono_loader_lock +mono_loader_set_error_assembly_load +mono_loader_set_error_field_load +mono_loader_set_error_method_load +mono_loader_set_error_type_load +mono_loader_unlock +mono_lookup_pinvoke_call +mono_method_get_class +mono_method_get_flags +mono_method_get_header +mono_method_get_index +mono_method_get_last_managed +mono_method_get_marshal_info +mono_method_get_name +mono_method_get_param_names +mono_method_get_param_token +mono_method_get_signature +mono_method_get_signature_full +mono_method_get_token +mono_method_get_wrapper_data +mono_method_has_marshal_info +mono_method_signature +mono_stack_walk +mono_stack_walk_no_il +load_normalization_resource +mono_array_to_lparray +mono_array_to_savearray +mono_class_native_size +mono_delegate_free_ftnptr +mono_delegate_to_ftnptr +mono_ftnptr_to_delegate +mono_marshal_alloc +mono_marshal_asany +mono_marshal_cleanup +mono_marshal_free +mono_marshal_free_array +mono_marshal_free_asany +mono_marshal_get_castclass +mono_marshal_get_delegate_begin_invoke +mono_marshal_get_delegate_end_invoke +mono_marshal_get_delegate_invoke +mono_marshal_get_generic_array_helper +mono_marshal_get_icall_wrapper +mono_marshal_get_isinst +mono_marshal_get_ldfld_remote_wrapper +mono_marshal_get_ldfld_wrapper +mono_marshal_get_managed_wrapper +mono_marshal_get_native_func_wrapper +mono_marshal_get_native_wrapper +mono_marshal_get_proxy_cancast +mono_marshal_get_ptr_to_struct +mono_marshal_get_remoting_invoke +mono_marshal_get_remoting_invoke_for_target +mono_marshal_get_remoting_invoke_with_check +mono_marshal_get_runtime_invoke +mono_marshal_get_stelemref +mono_marshal_get_stfld_remote_wrapper +mono_marshal_get_stfld_wrapper +mono_marshal_get_struct_to_ptr +mono_marshal_get_synchronized_wrapper +mono_marshal_get_unbox_wrapper +mono_marshal_get_write_barrier +mono_marshal_get_xappdomain_invoke +mono_marshal_load_type_info +mono_marshal_method_from_wrapper +mono_marshal_realloc +mono_marshal_set_last_error +mono_marshal_string_to_utf16 +mono_marshal_type_size +mono_mb_add_data +mono_mb_add_local +mono_mb_create_method +mono_mb_emit_add_to_local +mono_mb_emit_branch +mono_mb_emit_byte +mono_mb_emit_exception +mono_mb_emit_i2 +mono_mb_emit_i4 +mono_mb_emit_icon +mono_mb_emit_ldarg +mono_mb_emit_ldarg_addr +mono_mb_emit_ldflda +mono_mb_emit_ldloc +mono_mb_emit_ldloc_addr +mono_mb_emit_ldstr +mono_mb_emit_managed_call +mono_mb_emit_native_call +mono_mb_emit_short_branch +mono_mb_emit_stloc +mono_mb_free +mono_mb_new +mono_mb_patch_addr +mono_mb_patch_addr_s +mono_string_builder_to_utf16 +mono_string_builder_to_utf8 +mono_string_to_ansibstr +mono_string_to_bstr +mono_string_to_byvalstr +mono_string_to_byvalwstr +mono_string_utf16_to_builder +mono_string_utf8_to_builder +mono_type_native_stack_size +mono_type_to_ldind +mono_type_to_stind +mono_upgrade_remote_class_wrapper +mono_mempool_alloc +mono_mempool_alloc0 +mono_mempool_contains_addr +mono_mempool_destroy +mono_mempool_empty +mono_mempool_get_allocated +mono_mempool_invalidate +mono_mempool_new +mono_mempool_stats +mono_mempool_strdup +mono_guid_to_string +mono_metadata_blob_heap +mono_metadata_cleanup +mono_metadata_compute_size +mono_metadata_custom_attrs_from_index +mono_metadata_declsec_from_index +mono_metadata_decode_blob_size +mono_metadata_decode_row +mono_metadata_decode_row_col +mono_metadata_decode_signed_value +mono_metadata_decode_table_row +mono_metadata_decode_table_row_col +mono_metadata_decode_value +mono_metadata_encode_value +mono_metadata_events_from_typedef +mono_metadata_field_info +mono_metadata_free_array +mono_metadata_free_marshal_spec +mono_metadata_free_method_signature +mono_metadata_free_mh +mono_metadata_free_type +mono_metadata_generic_class_is_valuetype +mono_metadata_generic_method_equal +mono_metadata_get_constant_index +mono_metadata_get_marshal_info +mono_metadata_guid_heap +mono_metadata_has_generic_params +mono_metadata_implmap_from_method +mono_metadata_inflate_generic_inst +mono_metadata_interfaces_from_typedef +mono_metadata_interfaces_from_typedef_full +mono_metadata_load_generic_params +mono_metadata_locate +mono_metadata_locate_token +mono_metadata_methods_from_event +mono_metadata_methods_from_property +mono_metadata_nested_in_typedef +mono_metadata_nesting_typedef +mono_metadata_packing_from_typedef +mono_metadata_parse_array +mono_metadata_parse_array_full +mono_metadata_parse_custom_mod +mono_metadata_parse_field_type +mono_metadata_parse_generic_inst +mono_metadata_parse_marshal_spec +mono_metadata_parse_method_signature +mono_metadata_parse_method_signature_full +mono_metadata_parse_mh +mono_metadata_parse_mh_full +mono_metadata_parse_param +mono_metadata_parse_signature +mono_metadata_parse_signature_full +mono_metadata_parse_type +mono_metadata_parse_typedef_or_ref +mono_metadata_parse_type_full +mono_metadata_properties_from_typedef +mono_metadata_signature_alloc +mono_metadata_signature_dup +mono_metadata_signature_equal +mono_metadata_string_heap +mono_metadata_token_from_dor +mono_metadata_translate_token_index +mono_metadata_typedef_from_field +mono_metadata_typedef_from_method +mono_metadata_type_equal +mono_metadata_type_hash +mono_metadata_user_string +mono_method_header_get_clauses +mono_method_header_get_code +mono_method_header_get_locals +mono_method_header_get_num_clauses +mono_signature_explicit_this +mono_signature_get_call_conv +mono_signature_get_param_count +mono_signature_get_params +mono_signature_get_return_type +mono_signature_hash +mono_signature_is_instance +mono_signature_vararg_start +mono_type_create_from_typespec +mono_type_generic_inst_is_valuetype +mono_type_get_array_type +mono_type_get_class +mono_type_get_modifiers +mono_type_get_ptr_type +mono_type_get_signature +mono_type_get_type +mono_type_is_byref +mono_type_size +mono_type_stack_size +mono_type_to_unmanaged +mono_monitor_cleanup +mono_monitor_enter +mono_monitor_exit +mono_monitor_try_enter +mono_config_for_assembly +mono_config_parse +mono_config_parse_memory +mono_get_config_dir +mono_debugger_add_symbol_file +mono_debugger_breakpoint_callback +mono_debugger_event +mono_debugger_handle_exception +mono_debugger_insert_breakpoint +mono_debugger_insert_breakpoint_full +mono_debugger_lock +mono_debugger_lookup_assembly +mono_debugger_lookup_type +mono_debugger_method_has_breakpoint +mono_debugger_remove_breakpoint +mono_debugger_runtime_invoke +mono_debugger_start_add_type +mono_debugger_throw_exception +mono_debugger_unhandled_exception +mono_debugger_unlock +mono_debug_add_method +mono_debug_find_method +mono_debug_free_source_location +mono_debug_lookup_method +mono_debug_lookup_source_location +mono_debug_print_stack_frame +mono_debug_using_mono_debugger +mono_array_clone +mono_array_clone_in_domain +mono_array_full_copy +mono_array_new +mono_array_new_full +mono_array_new_specific +mono_async_result_new +mono_class_get_allocation_ftn +mono_class_vtable +mono_compile_method +mono_delegate_ctor +mono_field_get_value +mono_field_get_value_object +mono_field_set_value +mono_field_static_get_value +mono_field_static_set_value +mono_get_addr_from_ftnptr +mono_get_constant_value_from_blob +mono_get_delegate_invoke +mono_install_compile_method +mono_install_delegate_trampoline +mono_install_free_method +mono_install_handler +mono_install_remoting_trampoline +mono_install_runtime_invoke +mono_install_trampoline +mono_ldstr +mono_load_remote_field +mono_load_remote_field_new +mono_message_init +mono_message_invoke +mono_method_call_message_new +mono_method_return_message_restore +mono_nullable_box +mono_nullable_init +mono_object_castclass_mbyref +mono_object_clone +mono_object_get_class +mono_object_get_domain +mono_object_get_size +mono_object_get_virtual_method +mono_object_isinst +mono_object_isinst_mbyref +mono_object_new +mono_object_new_alloc_specific +mono_object_new_fast +mono_object_new_from_token +mono_object_new_specific +mono_object_unbox +mono_print_unhandled_exception +mono_property_get_value +mono_property_set_value +mono_raise_exception +mono_release_type_locks +mono_remote_class +mono_remote_class_vtable +mono_remoting_invoke +mono_runtime_class_init +mono_runtime_delegate_invoke +mono_runtime_exec_main +mono_runtime_exec_managed_code +mono_runtime_free_method +mono_runtime_get_main_args +mono_runtime_invoke +mono_runtime_invoke_array +mono_runtime_object_init +mono_runtime_run_main +mono_store_remote_field +mono_store_remote_field_new +mono_string_from_utf16 +mono_string_intern +mono_string_is_interned +mono_string_new +mono_string_new_len +mono_string_new_size +mono_string_new_utf16 +mono_string_new_wrapper +mono_string_to_utf16 +mono_string_to_utf8 +mono_string_to_utf8_mp +mono_thread_get_main +mono_thread_set_main +mono_type_initialization_cleanup +mono_type_initialization_init +mono_unhandled_exception +mono_upgrade_remote_class +mono_value_box +mono_value_copy +mono_value_copy_array +mono_vtable_get_static_field_data +mono_wait_handle_new +mono_opcode_name +mono_opcode_value +mono_profiler_allocation +mono_profiler_appdomain_event +mono_profiler_appdomain_loaded +mono_profiler_assembly_event +mono_profiler_assembly_loaded +mono_profiler_class_event +mono_profiler_class_loaded +mono_profiler_code_transition +mono_profiler_coverage_get +mono_profiler_gc_event +mono_profiler_gc_heap_resize +mono_profiler_get_events +mono_profiler_install +mono_profiler_install_allocation +mono_profiler_install_appdomain +mono_profiler_install_assembly +mono_profiler_install_class +mono_profiler_install_coverage_filter +mono_profiler_install_enter_leave +mono_profiler_install_gc +mono_profiler_install_jit_compile +mono_profiler_install_jit_end +mono_profiler_install_module +mono_profiler_install_statistical +mono_profiler_install_thread +mono_profiler_install_transition +mono_profiler_load +mono_profiler_method_end_jit +mono_profiler_method_enter +mono_profiler_method_jit +mono_profiler_method_leave +mono_profiler_module_event +mono_profiler_module_loaded +mono_profiler_set_events +mono_profiler_shutdown +mono_profiler_stat_hit +mono_profiler_thread_end +mono_profiler_thread_start +mono_raw_buffer_cleanup +mono_raw_buffer_free +mono_raw_buffer_load +mono_raw_buffer_update +mono_assembly_get_object +mono_custom_attrs_construct +mono_custom_attrs_free +mono_custom_attrs_from_assembly +mono_custom_attrs_from_class +mono_custom_attrs_from_event +mono_custom_attrs_from_field +mono_custom_attrs_from_index +mono_custom_attrs_from_method +mono_custom_attrs_from_param +mono_custom_attrs_from_property +mono_custom_attrs_get_attr +mono_custom_attrs_has_attr +mono_declsec_flags_from_assembly +mono_declsec_flags_from_class +mono_declsec_flags_from_method +mono_declsec_get_assembly_action +mono_declsec_get_class_action +mono_declsec_get_demands +mono_declsec_get_inheritdemands_class +mono_declsec_get_inheritdemands_method +mono_declsec_get_linkdemands +mono_declsec_get_method_action +mono_event_get_object +mono_field_get_object +mono_get_dbnull_object +mono_image_basic_init +mono_image_build_metadata +mono_image_create_method_token +mono_image_create_pefile +mono_image_create_token +mono_image_insert_string +mono_image_load_module +mono_method_body_get_object +mono_method_get_object +mono_module_file_get_object +mono_module_get_object +mono_param_get_objects +mono_property_get_object +mono_reflection_bind_generic_method_parameters +mono_reflection_bind_generic_parameters +mono_reflection_call_is_assignable_to +mono_reflection_create_dynamic_method +mono_reflection_create_generic_class +mono_reflection_create_internal_class +mono_reflection_create_runtime_class +mono_reflection_event_builder_get_event_info +mono_reflection_generic_class_initialize +mono_reflection_get_custom_attrs +mono_reflection_get_custom_attrs_blob +mono_reflection_get_custom_attrs_by_type +mono_reflection_get_custom_attrs_data +mono_reflection_get_custom_attrs_info +mono_reflection_get_token +mono_reflection_get_type +mono_reflection_initialize_generic_parameter +mono_reflection_lookup_dynamic_token +mono_reflection_marshal_from_marshal_spec +mono_reflection_parse_type +mono_reflection_setup_generic_class +mono_reflection_setup_internal_class +mono_reflection_sighelper_get_signature_field +mono_reflection_sighelper_get_signature_local +mono_reflection_type_from_name +mono_type_get_object +mono_activate_security_manager +mono_get_context_capture_method +mono_is_ecma_key +mono_is_security_manager_active +mono_security_manager_get_methods +mono_thread_pool_add +mono_thread_pool_finish +mono_alloc_special_static_data +mono_get_special_static_data +mono_thread_abort_all_other_threads +mono_thread_attach +mono_thread_cleanup +mono_thread_create +mono_thread_current +mono_thread_detach +mono_thread_exit +mono_thread_force_interruption_checkpoint +mono_thread_get_abort_signal +mono_thread_get_pending_exception +mono_thread_get_tls_key +mono_thread_has_appdomain_ref +mono_thread_interruption_checkpoint +mono_thread_interruption_requested +mono_thread_interruption_request_flag +mono_thread_manage +mono_thread_new_init +mono_thread_pop_appdomain_ref +mono_thread_push_appdomain_ref +mono_thread_request_interruption +mono_threads_abort_appdomain_threads +mono_threads_clear_cached_culture +mono_threads_get_default_stacksize +mono_threads_install_cleanup +mono_threads_request_thread_dump +mono_threads_set_default_stacksize +mono_thread_stop +mono_thread_suspend_all_other_threads +mono_free_verify_list +mono_image_verify_tables +mono_method_verify +mono_verify_corlib +mono_perform_abc_removal +mono_debugger_main +mono_debug_add_aot_method +mono_debug_print_vars +mono_jit_cleanup +mono_jit_exec +mono_jit_init +mono_main +mono_parse_default_optimizations +mono_inst_name +mono_burg_emit +mono_burg_kids +mono_burg_label +mono_burg_rule +mono_debugger_run_finally +mono_handle_exception +mono_print_thread_dump +mono_walk_stack +mono_create_jump_trampoline +mono_pmip +mono_print_method_from_ip +mono_set_defaults +mono_trace_enter_method +mono_trace_leave_method +mono_debugger_create_notification_function +mono_profiler_startup +mono_profiler_startup +add_delegate +mono_invoke_delegate +mono_test_marshal_inout_byval_class_delegate +mono_test_marshal_lpstruct +mono_test_marshal_lpstruct_blittable +mono_test_marshal_pass_inout_custom +mono_test_marshal_pass_out_byval_custom +mono_test_marshal_return_fnptr +mono_bitset_alloc_size +mono_bitset_clear +mono_bitset_clear_all +mono_bitset_clone +mono_bitset_copyto +mono_bitset_count +mono_bitset_equal +mono_bitset_find_first +mono_bitset_find_first_unset +mono_bitset_find_last +mono_bitset_find_start +mono_bitset_foreach +mono_bitset_free +mono_bitset_intersection +mono_bitset_intersection_2 +mono_bitset_invert +mono_bitset_mem_new +mono_bitset_new +mono_bitset_set +mono_bitset_set_all +mono_bitset_size +mono_bitset_sub +mono_bitset_test +mono_bitset_test_bulk +mono_bitset_union +mono_code_manager_commit +mono_code_manager_destroy +mono_code_manager_foreach +mono_code_manager_invalidate +mono_code_manager_new +mono_code_manager_new_dynamic +mono_code_manager_reserve +mono_counters_dump +mono_counters_enable +mono_counters_register +mono_g_hash_table_destroy +mono_g_hash_table_foreach +mono_g_hash_table_foreach_remove +mono_g_hash_table_foreach_steal +mono_g_hash_table_insert +mono_g_hash_table_lookup +mono_g_hash_table_lookup_extended +mono_g_hash_table_new +mono_g_hash_table_new_full +mono_g_hash_table_new_type +mono_g_hash_table_remap +mono_g_hash_table_remove +mono_g_hash_table_replace +mono_g_hash_table_size +mono_g_hash_table_steal +mono_trace +mono_trace_cleanup +mono_trace_is_traced +mono_trace_pop +mono_trace_push +mono_trace_set_level +mono_trace_set_level_string +mono_trace_set_mask +mono_trace_set_mask_string +mono_tracev +mono_signbit_double +mono_signbit_float +mono_md5_final +mono_md5_get_digest +mono_md5_get_digest_from_file +mono_md5_init +mono_md5_update +mono_path_canonicalize +mono_path_resolve_symlinks +mono_digest_get_public_token +mono_sha1_final +mono_sha1_get_digest +mono_sha1_get_digest_from_file +mono_sha1_init +mono_sha1_update +mono_escape_uri_string +mono_unicode_from_external +mono_unicode_to_external +mono_utf8_from_external diff --git a/docs/sources/mono-api-assembly.html b/docs/sources/mono-api-assembly.html new file mode 100644 index 0000000000..1403d3f6cc --- /dev/null +++ b/docs/sources/mono-api-assembly.html @@ -0,0 +1,56 @@ +<h2>Assemblies</h2> + +<h3>Synopsis</h3> + + <div class="header"> +#include <metadata/assembly.h> + +typedef struct _MonoImage MonoImage; +typedef struct _MonoAssembly MonoAssembly; + +typedef struct { + const char *name; + const char *culture; + const char *hash_value; + const guint8* public_key; + guchar public_key_token [MONO_PUBLIC_KEY_TOKEN_LENGTH]; + guint32 hash_alg; + guint32 hash_len; + guint32 flags; + guint16 major, minor, build, revision; +} MonoAssemblyName; + +@API_IDX@ + + </div> + +<a name="cil_assembly_load"/> +<h3>Assembly Loading</h3> + +<h4><a name="api:mono_assembly_open">mono_assembly_open</a></h4> +<h4><a name="api:mono_assembly_close">mono_assembly_close</a></h4> +<h4><a name="api:mono_assembly_load">mono_assembly_load</a></h4> +<h4><a name="api:mono_assembly_load_full">mono_assembly_load_full</a></h4> +<h4><a name="api:mono_assembly_loaded">mono_assembly_loaded</a></h4> + +<h3>Working with Assemblies</h3> + +<h4><a name="api:mono_assembly_get_image">mono_assembly_get_image</a></h4> +<h4><a name="api:mono_assembly_get_main">mono_assembly_get_main</a></h4> +<h4><a name="api:mono_assembly_getrootdir">mono_assembly_getrootdir</a></h4> +<h4><a name="api:mono_assembly_addref">mono_assembly_addref</a></h4> + +<h3>Assembly Names</h3> + + <p>The MonoAssemblyName contains the full identity of an + assembly (name, culture, public key, public key token, + version and any other flags). + + <p>These unmanaged objects represent the <a + href="http://www.mono-project.com/monodoc/T:System.Reflection.AssemblyName">System.Reflection.AssemblyName</a> + managed type. + +<h4><a name="api:mono_assembly_name_parse">mono_assembly_name_parse</a></h4> +<h4><a name="api:mono_assembly_name_free">mono_assembly_name_free</a></h4> +<h4><a name="api:mono_stringify_assembly_name">mono_stringify_assembly_name</a></h4> +<h4><a name="api:mono_assembly_names_equal">mono_assembly_names_equal</a></h4> diff --git a/docs/sources/mono-api-class.html b/docs/sources/mono-api-class.html new file mode 100644 index 0000000000..1e1bb68f5d --- /dev/null +++ b/docs/sources/mono-api-class.html @@ -0,0 +1,72 @@ +<h2>Class Operations</h2> + +<h4><a name="api:mono_class_array_element_size">mono_class_array_element_size</a></h4> +<h4><a name="api:mono_class_create_generic_2">mono_class_create_generic_2</a></h4> +<h4><a name="api:mono_class_create_generic">mono_class_create_generic</a></h4> +<h4><a name="api:mono_class_data_size">mono_class_data_size</a></h4> +<h4><a name="api:mono_class_enum_basetype">mono_class_enum_basetype</a></h4> +<h4><a name="api:mono_class_from_generic_parameter">mono_class_from_generic_parameter</a></h4> +<h4><a name="api:mono_class_from_mono_type">mono_class_from_mono_type</a></h4> +<h4><a name="api:mono_class_from_name_case">mono_class_from_name_case</a></h4> +<h4><a name="api:mono_class_from_name">mono_class_from_name</a></h4> +<h4><a name="api:mono_class_from_typeref">mono_class_from_typeref</a></h4> +<h4><a name="api:mono_class_get_allocation_ftn">mono_class_get_allocation_ftn</a></h4> +<h4><a name="api:mono_class_get_byref_type">mono_class_get_byref_type</a></h4> +<h4><a name="api:mono_class_get_element_class">mono_class_get_element_class</a></h4> +<h4><a name="api:mono_class_get_events">mono_class_get_events</a></h4> +<h4><a name="api:mono_class_get_event_token">mono_class_get_event_token</a></h4> +<h4><a name="api:mono_class_get_field_from_name">mono_class_get_field_from_name</a></h4> +<h4><a name="api:mono_class_get_field">mono_class_get_field</a></h4> +<h4><a name="api:mono_class_get_fields">mono_class_get_fields</a></h4> +<h4><a name="api:mono_class_get_field_token">mono_class_get_field_token</a></h4> +<h4><a name="api:mono_class_get_flags">mono_class_get_flags</a></h4> +<h4><a name="api:mono_class_get_full">mono_class_get_full</a></h4> +<h4><a name="api:mono_class_get_image">mono_class_get_image</a></h4> +<h4><a name="api:mono_class_get_implemented_interfaces">mono_class_get_implemented_interfaces</a></h4> +<h4><a name="api:mono_class_get_interfaces">mono_class_get_interfaces</a></h4> +<h4><a name="api:mono_class_get_method_from_name">mono_class_get_method_from_name</a></h4> +<h4><a name="api:mono_class_get_methods">mono_class_get_methods</a></h4> +<h4><a name="api:mono_class_get">mono_class_get</a></h4> +<h4><a name="api:mono_class_get_name">mono_class_get_name</a></h4> +<h4><a name="api:mono_class_get_namespace">mono_class_get_namespace</a></h4> +<h4><a name="api:mono_class_get_nested_types">mono_class_get_nested_types</a></h4> +<h4><a name="api:mono_class_get_nesting_type">mono_class_get_nesting_type</a></h4> +<h4><a name="api:mono_class_get_overrides">mono_class_get_overrides</a></h4> +<h4><a name="api:mono_class_get_parent">mono_class_get_parent</a></h4> +<h4><a name="api:mono_class_get_properties">mono_class_get_properties</a></h4> +<h4><a name="api:mono_class_get_property_from_name">mono_class_get_property_from_name</a></h4> +<h4><a name="api:mono_class_get_property_token">mono_class_get_property_token</a></h4> +<h4><a name="api:mono_class_get_rank">mono_class_get_rank</a></h4> +<h4><a name="api:mono_class_get_type">mono_class_get_type</a></h4> +<h4><a name="api:mono_class_inflate_generic_method">mono_class_inflate_generic_method</a></h4> +<h4><a name="api:mono_class_inflate_generic_type">mono_class_inflate_generic_type</a></h4> +<h4><a name="api:mono_class_init">mono_class_init</a></h4> +<h4><a name="api:mono_class_instance_size">mono_class_instance_size</a></h4> +<h4><a name="api:mono_class_is_assignable_from">mono_class_is_assignable_from</a></h4> +<h4><a name="api:mono_class_is_enum">mono_class_is_enum</a></h4> +<h4><a name="api:mono_class_is_open_constructed_type">mono_class_is_open_constructed_type</a></h4> +<h4><a name="api:mono_class_is_subclass_of">mono_class_is_subclass_of</a></h4> +<h4><a name="api:mono_class_is_valuetype">mono_class_is_valuetype</a></h4> +<h4><a name="api:mono_class_layout_fields">mono_class_layout_fields</a></h4> +<h4><a name="api:mono_class_min_align">mono_class_min_align</a></h4> +<h4><a name="api:mono_class_native_size">mono_class_native_size</a></h4> +<h4><a name="api:mono_class_needs_cctor_run">mono_class_needs_cctor_run</a></h4> +<h4><a name="api:mono_class_num_events">mono_class_num_events</a></h4> +<h4><a name="api:mono_class_num_fields">mono_class_num_fields</a></h4> +<h4><a name="api:mono_class_num_methods">mono_class_num_methods</a></h4> +<h4><a name="api:mono_class_num_properties">mono_class_num_properties</a></h4> +<h4><a name="api:mono_class_setup_mono_type">mono_class_setup_mono_type</a></h4> +<h4><a name="api:mono_class_setup_parent">mono_class_setup_parent</a></h4> +<h4><a name="api:mono_class_setup_supertypes">mono_class_setup_supertypes</a></h4> +<h4><a name="api:mono_class_setup_vtable">mono_class_setup_vtable</a></h4> +<h4><a name="api:mono_class_value_size">mono_class_value_size</a></h4> +<h4><a name="api:mono_class_vtable">mono_class_vtable</a></h4> +<h4><a name="api:mono_class_get_cctor">mono_class_get_cctor</a></h4> +<h4><a name="api:mono_class_get_finalizer">mono_class_get_finalizer</a></h4> +<h4><a name="api:mono_class_get_method_from_name_flags">mono_class_get_method_from_name_flags</a></h4> +<h4><a name="api:mono_class_inflate_generic_signature">mono_class_inflate_generic_signature</a></h4> +<h4><a name="api:mono_class_name_from_token">mono_class_name_from_token</a></h4> +<h4><a name="api:mono_class_setup_methods">mono_class_setup_methods</a></h4> +<h4><a name="api:mono_class_setup_vtable_general">mono_class_setup_vtable_general</a></h4> +<h4><a name="api:mono_class_get_exception_for_failure">mono_class_get_exception_for_failure</a></h4> +<h4><a name="api:mono_class_is_nullable">mono_class_is_nullable</a></h4> diff --git a/docs/sources/mono-api-codegen.html b/docs/sources/mono-api-codegen.html new file mode 100644 index 0000000000..36273fd5a3 --- /dev/null +++ b/docs/sources/mono-api-codegen.html @@ -0,0 +1,40 @@ +<h3>Code manager</h3> + +<h4><a name="api:mono_code_manager_commit">mono_code_manager_commit</a></h4> +<h4><a name="api:mono_code_manager_destroy">mono_code_manager_destroy</a></h4> +<h4><a name="api:mono_code_manager_foreach">mono_code_manager_foreach</a></h4> +<h4><a name="api:mono_code_manager_invalidate">mono_code_manager_invalidate</a></h4> +<h4><a name="api:mono_code_manager_new_dynamic">mono_code_manager_new_dynamic</a></h4> +<h4><a name="api:mono_code_manager_new">mono_code_manager_new</a></h4> +<h4><a name="api:mono_code_manager_reserve">mono_code_manager_reserve</a></h4> + +<h3>Registration services</h3> + + <p>The core services of Mono are independent of the execution + system. The interpreter and the native code generator both + use the functions in the following section to register + handlers to execute code with the execution system. + + <p>These APIs would allow a different execution engine (code + generator or interpreter) to be hooked to the rest of the Mono + VM. + +<h4><a name="api:mono_install_assembly_load_hook">mono_install_assembly_load_hook</a></h4> +<h4><a name="api:mono_install_assembly_preload_hook">mono_install_assembly_preload_hook</a></h4> +<h4><a name="api:mono_install_assembly_search_hook">mono_install_assembly_search_hook</a></h4> +<h4><a name="api:mono_install_compile_method">mono_install_compile_method</a></h4> +<h4><a name="api:mono_install_free_method">mono_install_free_method</a></h4> +<h4><a name="api:mono_install_handler">mono_install_handler</a></h4> +<h4><a name="api:mono_install_lookup_dynamic_token">mono_install_lookup_dynamic_token</a></h4> +<h4><a name="api:mono_install_remoting_trampoline">mono_install_remoting_trampoline</a></h4> +<h4><a name="api:mono_install_runtime_invoke">mono_install_runtime_invoke</a></h4> +<h4><a name="api:mono_install_stack_walk">mono_install_stack_walk</a></h4> +<h4><a name="api:mono_install_thread_callbacks">mono_install_thread_callbacks</a></h4> +<h4><a name="api:mono_install_trampoline">mono_install_trampoline</a></h4> +<h4><a name="api:mono_install_runtime_cleanup">mono_install_runtime_cleanup</a></h4> +<h4><a name="api:mono_install_assembly_postload_refonly_search_hook">mono_install_assembly_postload_refonly_search_hook</a></h4> +<h4><a name="api:mono_install_assembly_postload_search_hook">mono_install_assembly_postload_search_hook</a></h4> +<h4><a name="api:mono_install_assembly_refonly_preload_hook">mono_install_assembly_refonly_preload_hook</a></h4> +<h4><a name="api:mono_install_assembly_refonly_search_hook">mono_install_assembly_refonly_search_hook</a></h4> +<h4><a name="api:mono_install_delegate_trampoline">mono_install_delegate_trampoline</a></h4> + diff --git a/docs/sources/mono-api-counters.html b/docs/sources/mono-api-counters.html new file mode 100644 index 0000000000..b8ca9f4a0d --- /dev/null +++ b/docs/sources/mono-api-counters.html @@ -0,0 +1,44 @@ +<h2>Counters</h2> + + <p>Counters is a Mono API for flexible statistics collection + and is used to track different events inside the JIT. + + <p>You would typically register an address with the + <tt>mono_counters_register</tt> routine and increment the + counters from your application as you go. At the end of the + program you would call mono_counters_dump which will display + all the registered counters. + + <p>If you need more complicated counter computation, a + function can be provided instead of an address. In that case + the <tt>MONO_COUNTER_CALLBACK</tt> flag must be ored in the + type request. + + <p>The types that can be rendered are: + +<pre> + MONO_COUNTER_INT + MONO_COUNTER_UINT + MONO_COUNTER_WORD + MONO_COUNTER_LONG + MONO_COUNTER_ULONG + MONO_COUNTER_DOUBLE + MONO_COUNTER_STRING +</pre> + + <p>To organize the output, you register also a section where + the counter will be displayed, or one of the following values + when you register your counter: + +<pre> + + MONO_COUNTER_JIT + MONO_COUNTER_GC + MONO_COUNTER_METADATA + MONO_COUNTER_GENERICS + MONO_COUNTER_SECURITY +</pre> + +<h4><a name="api:mono_counters_dump">mono_counters_dump</a></h4> +<h4><a name="api:mono_counters_enable">mono_counters_enable</a></h4> +<h4><a name="api:mono_counters_register">mono_counters_register</a></h4> diff --git a/docs/sources/mono-api-debug.html b/docs/sources/mono-api-debug.html new file mode 100644 index 0000000000..3642e85245 --- /dev/null +++ b/docs/sources/mono-api-debug.html @@ -0,0 +1,45 @@ +<h4><a name="api:mono_debug_il_offset_from_address">mono_debug_il_offset_from_address</a></h4> +<h4><a name="api:mono_debug_open_mono_symbol_file">mono_debug_open_mono_symbol_file</a></h4> +<h4><a name="api:mono_debug_source_location_from_address">mono_debug_source_location_from_address</a></h4> +<h4><a name="api:mono_debug_source_location_from_il_offset">mono_debug_source_location_from_il_offset</a></h4> +<h4><a name="api:mono_debug_add_aot_method">mono_debug_add_aot_method</a></h4> +<h4><a name="api:mono_debug_add_method">mono_debug_add_method</a></h4> +<h4><a name="api:_mono_debug_address_from_il_offset">_mono_debug_address_from_il_offset</a></h4> +<h4><a name="api:mono_debug_address_from_il_offset">mono_debug_address_from_il_offset</a></h4> +<h4><a name="api:mono_debug_add_wrapper">mono_debug_add_wrapper</a></h4> +<h4><a name="api:mono_debug_close_mono_symbol_file">mono_debug_close_mono_symbol_file</a></h4> +<h4><a name="api:mono_debug_find_method">mono_debug_find_method</a></h4> +<h4><a name="api:mono_debug_find_source_location">mono_debug_find_source_location</a></h4> +<h4><a name="api:mono_debug_using_mono_debugger">mono_debug_using_mono_debugger</a></h4> + +<h3>Mono Debugger Interface</h3> + + <p>These are methods that are invoked by the debugger at + runtime. + +<h4><a name="api:mono_debugger_add_builtin_types">mono_debugger_add_builtin_types</a></h4> +<h4><a name="api:mono_debugger_add_method">mono_debugger_add_method</a></h4> +<h4><a name="api:mono_debugger_add_symbol_file">mono_debugger_add_symbol_file</a></h4> +<h4><a name="api:mono_debugger_add_type">mono_debugger_add_type</a></h4> +<h4><a name="api:mono_debugger_add_wrapper">mono_debugger_add_wrapper</a></h4> +<h4><a name="api:mono_debugger_breakpoint_callback">mono_debugger_breakpoint_callback</a></h4> +<h4><a name="api:mono_debugger_check_runtime_version">mono_debugger_check_runtime_version</a></h4> +<h4><a name="api:mono_debugger_create_notification_function">mono_debugger_create_notification_function</a></h4> +<h4><a name="api:mono_debugger_event">mono_debugger_event</a></h4> +<h4><a name="api:_mono_debugger_get_symfile">_mono_debugger_get_symfile</a></h4> +<h4><a name="api:mono_debugger_handle_exception">mono_debugger_handle_exception</a></h4> +<h4><a name="api:mono_debugger_insert_breakpoint_full">mono_debugger_insert_breakpoint_full</a></h4> +<h4><a name="api:mono_debugger_insert_breakpoint">mono_debugger_insert_breakpoint</a></h4> +<h4><a name="api:mono_debugger_lock">mono_debugger_lock</a></h4> +<h4><a name="api:mono_debugger_lookup_assembly">mono_debugger_lookup_assembly</a></h4> +<h4><a name="api:mono_debugger_lookup_type">mono_debugger_lookup_type</a></h4> +<h4><a name="api:mono_debugger_method_has_breakpoint">mono_debugger_method_has_breakpoint</a></h4> +<h4><a name="api:mono_debugger_remove_breakpoint">mono_debugger_remove_breakpoint</a></h4> +<h4><a name="api:mono_debugger_runtime_invoke">mono_debugger_runtime_invoke</a></h4> +<h4><a name="api:mono_debugger_start_add_type">mono_debugger_start_add_type</a></h4> +<h4><a name="api:mono_debugger_throw_exception">mono_debugger_throw_exception</a></h4> +<h4><a name="api:mono_debugger_unhandled_exception">mono_debugger_unhandled_exception</a></h4> +<h4><a name="api:mono_debugger_unlock">mono_debugger_unlock</a></h4> +<h4><a name="api:mono_debugger_finalize_threads">mono_debugger_finalize_threads</a></h4> +<h4><a name="api:mono_debugger_main">mono_debugger_main</a></h4> +<h4><a name="api:mono_debugger_run_finally">mono_debugger_run_finally</a></h4>
\ No newline at end of file diff --git a/docs/sources/mono-api-decimal.html b/docs/sources/mono-api-decimal.html new file mode 100644 index 0000000000..41c9347811 --- /dev/null +++ b/docs/sources/mono-api-decimal.html @@ -0,0 +1,19 @@ +<h1>Decimal Support</h1> + + <p>You can use the mono_decimal functions to access and + manipulate <tt>System.Decimal</tt> types from C. + +<h4><a name="api:mono_decimal2double">mono_decimal2double</a></h4> +<h4><a name="api:mono_decimal2Int64">mono_decimal2Int64</a></h4> +<h4><a name="api:mono_decimal2string">mono_decimal2string</a></h4> +<h4><a name="api:mono_decimal2UInt64">mono_decimal2UInt64</a></h4> +<h4><a name="api:mono_decimalCompare">mono_decimalCompare</a></h4> +<h4><a name="api:mono_decimalDiv">mono_decimalDiv</a></h4> +<h4><a name="api:mono_decimalFloorAndTrunc">mono_decimalFloorAndTrunc</a></h4> +<h4><a name="api:mono_decimalIncr">mono_decimalIncr</a></h4> +<h4><a name="api:mono_decimalIntDiv">mono_decimalIntDiv</a></h4> +<h4><a name="api:mono_decimalMult">mono_decimalMult</a></h4> +<h4><a name="api:mono_decimalRound">mono_decimalRound</a></h4> +<h4><a name="api:mono_decimalSetExponent">mono_decimalSetExponent</a></h4> +<h4><a name="api:mono_double2decimal">mono_double2decimal</a></h4> +<h4><a name="api:mono_string2decimal">mono_string2decimal</a></h4> diff --git a/docs/sources/mono-api-domains.html b/docs/sources/mono-api-domains.html new file mode 100644 index 0000000000..bbcfd57908 --- /dev/null +++ b/docs/sources/mono-api-domains.html @@ -0,0 +1,55 @@ +<h2>Application Domains</h2> + +<h3>Synopsis</h3> + +<div class="header"> +#include <metadata/appdomain.h> + +/* Managed AppDomain */ +typedef struct _MonoAppDomain MonoAppDomain; + +/* Unmanaged representation */ +typedef struct _MonoDomain MonoDomain; + +/* Represents System.Runtime.Remoting.Contexts.Context */ +typedef struct _MonoAppContext MonoAppContext +@API_IDX@ +</div> + + <p>Application domains are used to isolate multiple + applications on a single Mono virtual machine. They are + conceptually similiar to processes, the difference is that + processes are managed by the operating system, while + application domains are managed by the Mono virtual machine. + + <p>For more information on applications domains see the <a + href="http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx">AppDomain FAQ</a>. + + <p>The <tt>MonoDomain</tt> is the unmanaged representation of + the <a + href="http://www.mono-project.com/monodoc/T:System.AppDomain">System.AppDomain</a> + managed type, while the <tt>MonoAppDomain</tt> type represents + the managed version (<tt>MonoAppDomain</tt> has a pointer to + a <tt>MonoDomain</tt>). + +<h4><a name="api:mono_domain_assembly_open">mono_domain_assembly_open</a></h4> +<h4><a name="api:mono_domain_create">mono_domain_create</a></h4> +<h4><a name="api:mono_domain_finalize">mono_domain_finalize</a></h4> +<h4><a name="api:mono_domain_foreach">mono_domain_foreach</a></h4> +<h4><a name="api:mono_domain_free">mono_domain_free</a></h4> +<h4><a name="api:mono_domain_get_by_id">mono_domain_get_by_id</a></h4> +<h4><a name="api:mono_domain_get_id">mono_domain_get_id</a></h4> +<h4><a name="api:mono_domain_get">mono_domain_get</a></h4> +<h4><a name="api:mono_domain_has_type_resolve">mono_domain_has_type_resolve</a></h4> +<h4><a name="api:mono_domain_is_unloading">mono_domain_is_unloading</a></h4> +<h4><a name="api:mono_domain_set_internal">mono_domain_set_internal</a></h4> +<h4><a name="api:mono_domain_set">mono_domain_set</a></h4> +<h4><a name="api:mono_domain_try_type_resolve">mono_domain_try_type_resolve</a></h4> +<h4><a name="api:mono_domain_get_tls_key">mono_domain_get_tls_key</a></h4> +<h4><a name="api:mono_domain_owns_vtable_slot">mono_domain_owns_vtable_slot</a></h4> + +<h3>Contexts</h3> + +<h4><a name="api:mono_context_get">mono_context_get</a></h4> +<h4><a name="api:mono_context_set">mono_context_set</a></h4> + diff --git a/docs/sources/mono-api-dynamic-codegen.html b/docs/sources/mono-api-dynamic-codegen.html new file mode 100644 index 0000000000..eba41a13be --- /dev/null +++ b/docs/sources/mono-api-dynamic-codegen.html @@ -0,0 +1,141 @@ +<h2>Dynamic Code Generation</h2> + + <p>The dynamic code generation interface inside the Mono + runtime is similar to the API exposed by + System.Reflection.Emit. + + <p>This interface is used by Mono internally to generate code + on the flight in a cross-platform fashion. For example, + P/Invoke marshalling in Mono is implemented in terms of this + interface, but it is also used in various other parts of the + runtime. + + <p>Unlike Reflection.Emit, the dynamic code generation + interface does not start with an assembly builder. The code + generation interface starts directly at the method level, + which is represented by a pointer to the MonoMethodBuilder + structure. + + <p>To JIT this method, the process is this: + + <ul> + <li>Create a <tt>MonoMethodBuilder</tt> object using + the <tt>mono_mb_new</tt> method. The method's class + is specified as the first argument. + + <li>Create the method signature, using + <tt>mono_metadata_signature_alloc</tt>. The call + takes the number of arguments that the method takes. + Then you must initialize the types for each one of the + parameters. + + <li>Emit the CIL code, using one of the + <tt>mono_mb_emit_*</tt> functions. There are some + helper routines that you can use. + + <li>Create the <tt>MonoMethod</tt> from the + <tt>MethodBuilder</tt> using + <tt>mono_mb_create_method</tt>. + + <li>Release the <tt>MonoMethodBuilder</tt> resources + using mono_mb_free. + </ul> + + <p>The result of this process is a <tt>MonoMethod</tt> which + can be called using <tt><a + href="api:mono_create_jit_trampoline">mono_create_jit_trampoline</a></tt> + routine or can be passed to any other functions that require + the MonoMethod. + + <p>Example: + + <pre> +MonoMethod *adder () +{ + MonoMethodBuilder *mb; + MonoMethodSignature *sig; + MonoMethod *method; + + mb = mono_mb_new (mono_defaults.object_class, "adder", MONO_WRAPPER_NONE); + + /* Setup method signature */ + sig = mono_metadata_signature_alloc (2); + sig->ret = &mono_get_int32_class ()->byval_arg; + sig->params [0] = &mono_get_int32_class ()->byval_arg; + sig->params [1] = &mono_defaults.int32_class->byval_arg; + + /* Emit CIL code */ + mono_mb_emit_ldarg (mb, 0); + mono_mb_emit_ldarg (mb, 1); + mono_mb_emit_byte (mb, CEE_ADD); + mono_mb_emit_byte (mb, CEE_RET); + + /* Get the method */ + method = mono_mb_create_method (mb, sig, max_stack); + + /* Cleanup */ + mono_mb-free (mb); + return method; +} + </pre> + +<h4><a name="api:mono_mb_new">mono_mb_new</a></h4> + + <p>The possible values for the <i>type</i> argument are: + +<pre> + MONO_WRAPPER_NONE + MONO_WRAPPER_DELEGATE_INVOKE + MONO_WRAPPER_DELEGATE_BEGIN_INVOKE + MONO_WRAPPER_DELEGATE_END_INVOKE + MONO_WRAPPER_RUNTIME_INVOKE + MONO_WRAPPER_NATIVE_TO_MANAGED + MONO_WRAPPER_MANAGED_TO_NATIVE + MONO_WRAPPER_REMOTING_INVOKE + MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK + MONO_WRAPPER_XDOMAIN_INVOKE + MONO_WRAPPER_XDOMAIN_DISPATCH + MONO_WRAPPER_LDFLD + MONO_WRAPPER_STFLD + MONO_WRAPPER_LDFLD_REMOTE + MONO_WRAPPER_STFLD_REMOTE + MONO_WRAPPER_SYNCHRONIZED + MONO_WRAPPER_DYNAMIC_METHOD + MONO_WRAPPER_ISINST + MONO_WRAPPER_CASTCLASS + MONO_WRAPPER_PROXY_ISINST + MONO_WRAPPER_STELEMREF + MONO_WRAPPER_UNBOX + MONO_WRAPPER_LDFLDA + MONO_WRAPPER_UNKNOWN +</pre> + +<h4><a name="api:mono_mb_add_data">mono_mb_add_data</a></h4> +<h4><a name="api:mono_mb_add_local">mono_mb_add_local</a></h4> +<h4><a name="api:mono_mb_create_method">mono_mb_create_method</a></h4> +<h4><a name="api:mono_mb_emit_add_to_local">mono_mb_emit_add_to_local</a></h4> +<h4><a name="api:mono_mb_emit_branch">mono_mb_emit_branch</a></h4> +<h4><a name="api:mono_mb_emit_byte">mono_mb_emit_byte</a></h4> +<h4><a name="api:mono_mb_emit_exception">mono_mb_emit_exception</a></h4> +<h4><a name="api:mono_mb_emit_i2">mono_mb_emit_i2</a></h4> +<h4><a name="api:mono_mb_emit_i4">mono_mb_emit_i4</a></h4> +<h4><a name="api:mono_mb_emit_icon">mono_mb_emit_icon</a></h4> +<h4><a name="api:mono_mb_emit_ldarg_addr">mono_mb_emit_ldarg_addr</a></h4> +<h4><a name="api:mono_mb_emit_ldarg">mono_mb_emit_ldarg</a></h4> +<h4><a name="api:mono_mb_emit_ldflda">mono_mb_emit_ldflda</a></h4> +<h4><a name="api:mono_mb_emit_ldloc_addr">mono_mb_emit_ldloc_addr</a></h4> +<h4><a name="api:mono_mb_emit_ldloc">mono_mb_emit_ldloc</a></h4> +<h4><a name="api:mono_mb_emit_ldstr">mono_mb_emit_ldstr</a></h4> +<h4><a name="api:mono_mb_emit_managed_call">mono_mb_emit_managed_call</a></h4> +<h4><a name="api:mono_mb_emit_native_call">mono_mb_emit_native_call</a></h4> +<h4><a name="api:mono_mb_emit_stloc">mono_mb_emit_stloc</a></h4> +<h4><a name="api:mono_mb_free">mono_mb_free</a></h4> + +<h4><a name="api:mono_mb_patch_addr">mono_mb_patch_addr</a></h4> +<h4><a name="api:mono_mb_patch_addr_s">mono_mb_patch_addr_s</a></h4> + +<h4><a name="api:mono_metadata_signature_alloc">mono_metadata_signature_alloc</a></h4> +<h4><a name="api:mono_metadata_signature_dup">mono_metadata_signature_dup</a></h4> +<h4><a name="api:mono_metadata_signature_equal">mono_metadata_signature_equal</a></h4> + + diff --git a/docs/sources/mono-api-embedding.html b/docs/sources/mono-api-embedding.html new file mode 100644 index 0000000000..71038a5987 --- /dev/null +++ b/docs/sources/mono-api-embedding.html @@ -0,0 +1,78 @@ +<h2>Embedding Mono</h2> + +<h4><a name="api:mono_jit_init">mono_jit_init</a></h4> +<h4><a name="api:mono_set_dirs">mono_set_dirs</a></h4> +<h4><a name="api:mono_runtime_exec_main">mono_runtime_exec_main</a></h4> +<h4><a name="api:mono_runtime_exec_managed_code">mono_runtime_exec_managed_code</a></h4> + +<h4><a name="api:mono_jit_cleanup">mono_jit_cleanup</a></h4> +<h4><a name="api:mono_set_defaults">mono_set_defaults</a></h4> + +<h3>Internal Calls</h3> + + <p>The Mono runtime provides two mechanisms to expose C code + to the CIL universe: internal calls and native C + code. Internal calls are tightly integrated with the runtime, + and have the least overhead, as they use the same data types + that the runtime uses. + + <p>The other option is to use the Platform Invoke (P/Invoke) + to call C code from the CIL universe, using the standard + P/Invoke mechanisms. + + <p>To register an internal call, use this call you use the + <tt>mono_add_internal_call</tt> routine. + +<h4>Data Marshalling</h4> + + <p>Managed objects are represented as <tt>MonoObject*</tt> + types. Those objects that the runtime consumes directly have + more specific C definitions (for example strings are of type + <tt>MonoString *</tt>, delegates are of type + <tt>MonoDelegate*</tt> but they are still <tt>MonoObject + *</tt>s). + + <p>As of Mono 1.2.x types defined in mscorlib.dll do not have + their fields reordered in any way. But other libraries might + have their fields reordered. In these cases, Managed + structures and objects have the same layout in the C# code as + they do in the unmanaged world. + + <p>Structures defined outside corlib must have a specific + StructLayout definition, and have it set as sequential if you + plan on accessing these fields directly from C code. + + <p><b>Important</B> Internal calls do not provide support for + marshalling structures. This means that any API calls that + take a structure (excluding the system types like int32, + int64, etc) must be passed as a pointer, in C# this means + passing the value as a "ref" or "out" parameter. + +<h4><a name="api:mono_add_internal_call">mono_add_internal_call</a></h4> + +<h3>Mono Runtime Configuration</h3> + + <p>Certain features of the Mono runtime, like DLL mapping, are + available through a configuration file that is loaded at + runtime. The default Mono implementation loads the + configuration file from <tt>$sysconfig/mono/config</tt> + (typically this is <tt>/etc/mono/config</tt>). + + <p>See the <tt>mono-config(5)</tt> man page for more details + on what goes in this file. + + <p>The following APIs expose this functionality: + +<h4><a name="api:mono_config_parse">mono_config_parse</a></h4> +<h4><a name="api:mono_config_parse_memory">mono_config_parse_memory</a></h4> + +<h3>Function Pointers</h3> + + <p>To wrap a function pointer into something that the Mono + runtime can consume, you should use the mono_create_ftnptr. + This is only important if you plan on running on the IA64 + architecture. Otherwise you can just use the function + pointer address. + +<h4><a name="api:mono_create_ftnptr">mono_create_ftnptr</a></h4> + diff --git a/docs/sources/mono-api-exc.html b/docs/sources/mono-api-exc.html new file mode 100644 index 0000000000..13d97ca7a8 --- /dev/null +++ b/docs/sources/mono-api-exc.html @@ -0,0 +1,59 @@ +<h2>Exception Handling</h2> + +<div class="header"> +@API_IDX@ +</div> + +<h3>Raising and Catching exceptions</h3> + +<h4><a name="api:mono_raise_exception">mono_raise_exception</a></h4> +<h4><a name="api:mono_unhandled_exception">mono_unhandled_exception</a></h4> +<h4><a name="api:mono_print_unhandled_exception">mono_print_unhandled_exception</a></h4> +<h4><a name="api:mono_handle_exception">mono_handle_exception</a></h4> + + +<h3>Exception Types: General API</h3> + +<h4><a name="api:mono_exception_from_name_domain">mono_exception_from_name_domain</a></h4> +<h4><a name="api:mono_exception_from_name">mono_exception_from_name</a></h4> +<h4><a name="api:mono_exception_from_name_msg">mono_exception_from_name_msg</a></h4> +<h4><a name="api:mono_exception_from_name_two_strings">mono_exception_from_name_two_strings</a></h4> + +<h3>Obtaining Common Exceptions</h3> + + <p>There are a number of common exceptions that are used by + the runtime, use the routines in this section to get a copy of + those exceptions. + +<h4><a name="api:mono_get_exception_appdomain_unloaded">mono_get_exception_appdomain_unloaded</a></h4> +<h4><a name="api:mono_get_exception_argument">mono_get_exception_argument</a></h4> +<h4><a name="api:mono_get_exception_argument_null">mono_get_exception_argument_null</a></h4> +<h4><a name="api:mono_get_exception_argument_out_of_range">mono_get_exception_argument_out_of_range</a></h4> +<h4><a name="api:mono_get_exception_arithmetic">mono_get_exception_arithmetic</a></h4> +<h4><a name="api:mono_get_exception_array_type_mismatch">mono_get_exception_array_type_mismatch</a></h4> +<h4><a name="api:mono_get_exception_bad_image_format">mono_get_exception_bad_image_format</a></h4> +<h4><a name="api:mono_get_exception_cannot_unload_appdomain">mono_get_exception_cannot_unload_appdomain</a></h4> +<h4><a name="api:mono_get_exception_class">mono_get_exception_class</a></h4> +<h4><a name="api:mono_get_exception_divide_by_zero">mono_get_exception_divide_by_zero</a></h4> +<h4><a name="api:mono_get_exception_execution_engine">mono_get_exception_execution_engine</a></h4> +<h4><a name="api:mono_get_exception_file_not_found2">mono_get_exception_file_not_found2</a></h4> +<h4><a name="api:mono_get_exception_file_not_found">mono_get_exception_file_not_found</a></h4> +<h4><a name="api:mono_get_exception_index_out_of_range">mono_get_exception_index_out_of_range</a></h4> +<h4><a name="api:mono_get_exception_invalid_cast">mono_get_exception_invalid_cast</a></h4> +<h4><a name="api:mono_get_exception_io">mono_get_exception_io</a></h4> +<h4><a name="api:mono_get_exception_missing_method">mono_get_exception_missing_method</a></h4> +<h4><a name="api:mono_get_exception_not_implemented">mono_get_exception_not_implemented</a></h4> +<h4><a name="api:mono_get_exception_null_reference">mono_get_exception_null_reference</a></h4> +<h4><a name="api:mono_get_exception_overflow">mono_get_exception_overflow</a></h4> +<h4><a name="api:mono_get_exception_security">mono_get_exception_security</a></h4> +<h4><a name="api:mono_get_exception_serialization">mono_get_exception_serialization</a></h4> +<h4><a name="api:mono_get_exception_stack_overflow">mono_get_exception_stack_overflow</a></h4> +<h4><a name="api:mono_get_exception_synchronization_lock">mono_get_exception_synchronization_lock</a></h4> +<h4><a name="api:mono_get_exception_thread_abort">mono_get_exception_thread_abort</a></h4> +<h4><a name="api:mono_get_exception_thread_state">mono_get_exception_thread_state</a></h4> +<h4><a name="api:mono_get_exception_type_initialization">mono_get_exception_type_initialization</a></h4> +<h4><a name="api:mono_get_exception_type_load">mono_get_exception_type_load</a></h4> +<h4><a name="api:mono_get_exception_invalid_operation">mono_get_exception_invalid_operation</a></h4> +<h4><a name="api:mono_get_exception_missing_field">mono_get_exception_missing_field</a></h4> +<h4><a name="api:mono_get_exception_not_supported">mono_get_exception_not_supported</a></h4> +<h4><a name="api:mono_get_exception_reflection_type_load">mono_get_exception_reflection_type_load</a></h4> diff --git a/docs/sources/mono-api-gc.html b/docs/sources/mono-api-gc.html new file mode 100644 index 0000000000..7f73304c68 --- /dev/null +++ b/docs/sources/mono-api-gc.html @@ -0,0 +1,42 @@ +<h1>Garbage Collector Interface</h1> + +<h1>Public Interface</h1> + + <p>The public interface of the Mono GC is fairly limited, and + its the only one that embedders should be using: + +<h4><a name="api:mono_gc_collect">mono_gc_collect</a></h4> +<h4><a name="api:mono_gc_max_generation">mono_gc_max_generation</a></h4> +<h4><a name="api:mono_gc_get_heap_size">mono_gc_get_heap_size</a></h4> +<h4><a name="api:mono_gc_get_used_size">mono_gc_get_used_size</a></h4> + +<h3>Weak Links</h3> + +<h4><a name="api:mono_gc_weak_link_add">mono_gc_weak_link_add</a></h4> +<h4><a name="api:mono_gc_weak_link_get">mono_gc_weak_link_get</a></h4> +<h4><a name="api:mono_gc_weak_link_remove">mono_gc_weak_link_remove</a></h4> + +<h2>Internal Interface</h2> + + <p>The internal interface of the Mono GC is the interface used + between the runtime engine and the garbage collector. + +<h4><a name="api:mono_gc_disable">mono_gc_disable</a></h4> +<h4><a name="api:mono_gc_enable">mono_gc_enable</a></h4> +<h4><a name="api:mono_gc_is_finalizer_thread">mono_gc_is_finalizer_thread</a></h4> +<h4><a name="api:mono_gc_out_of_memory">mono_gc_out_of_memory</a></h4> +<h4><a name="api:mono_gc_start_world">mono_gc_start_world</a></h4> +<h4><a name="api:mono_gc_stop_world">mono_gc_stop_world</a></h4> +<h4><a name="api:mono_gc_alloc_fixed">mono_gc_alloc_fixed</a></h4> +<h4><a name="api:mono_gc_enable_events">mono_gc_enable_events</a></h4> +<h4><a name="api:mono_gc_free_fixed">mono_gc_free_fixed</a></h4> +<h4><a name="api:mono_gc_make_descr_from_bitmap">mono_gc_make_descr_from_bitmap</a></h4> + + +<h4><a name="api:mono_gc_base_init">mono_gc_base_init</a></h4> +<h4><a name="api:mono_gc_invoke_finalizers">mono_gc_invoke_finalizers</a></h4> +<h4><a name="api:mono_gc_is_gc_thread">mono_gc_is_gc_thread</a></h4> +<h4><a name="api:mono_gc_pending_finalizers">mono_gc_pending_finalizers</a></h4> +<h4><a name="api:mono_gc_register_thread">mono_gc_register_thread</a></h4> +<h4><a name="api:mono_gc_finalize_notify">mono_gc_finalize_notify</a></h4> + diff --git a/docs/sources/mono-api-gchandle.html b/docs/sources/mono-api-gchandle.html new file mode 100644 index 0000000000..2f090b7773 --- /dev/null +++ b/docs/sources/mono-api-gchandle.html @@ -0,0 +1,95 @@ +<h1>GC Handles</h1> + +<h3>Synopsys</h3> + + <div class="header"> +@API_IDX@ + </div> + + <p>GC handles are wrappers that are used to keep references to + managed objects in the unmanaged space and preventing the + object from being disposed. + + <p>These are the C equivalents of the <tt>System.GCHandle</tt> + structure. + + <p>There are two kinds of GCHandles that can be created: + + <ul> + <li>Handles to objects (use <tt><a + href="#api:mono_gchandle_new">mono_gchandle_new</a></tt>). + + <li>Weak handles to objects (use <tt><a + href="#api:mono_gchandle_new_weakref">mono_gchandle_new_weakref</a></tt>). + Weak handles can have the objects reclaimed by the + garbage collector. + + </ul> + + <p>To retrieve the target address of an object pointed to by a + <tt>GCHandle</tt> you should use + <tt>mono_gchandle_get_target</tt>. + + <p>For example, consider the following C code: +<div class="code"> +static MonoObject* o = NULL; +</div> + + <p>The object in `o' will *NOT* be scanned. + + <p>If you need to store an object in a C variable and prevent + it from being collected, you need to acquire a GC handle for + it. + +<div class="code"> + guint32 handle = mono_gchandle_new (my_object, TRUE); +</div> + + <p>TRUE means the object will be pinned, so it won't move in + memory when we'll use a moving GC. You can access the + MonoObject* referenced by a handle with: + +<div class="code"> + MonoObject* obj = mono_gchandle_get_target (handle); +</div> + + <p>When you don't need the handle anymore you need to call: + +<div class="code"> + mono_gchandle_free (handle); +</div> + + <p>Note that if you assign a new object to the C var, you need + to get a new handle, it's not enough to store a new object in + the C var. + + <p>So code that looked like this: + +<div class="code"> + static MonoObject* o = NULL; + ... + o = mono_object_new (...); + /* use o */ + ... + /* when done to allow the GC to collect o */ + o = NULL; +</div> + + <p>should now be changed to: + +<div class="code"> + static guint32 o_handle; + ... + MonoObject *o = mono_object_new (...); + o_handle = mono_gchandle_new (o, TRUE); + /* use o or mono_gchandle_get_target (o_handle) */ + ... + /* when done to allow the GC to collect o */ + mono_gchandle_free (o_handle); +</div> + +<h4><a name="api:mono_gchandle_new">mono_gchandle_new</a></h4> +<h4><a name="api:mono_gchandle_new_weakref">mono_gchandle_new_weakref</a></h4> +<h4><a name="api:mono_gchandle_get_target">mono_gchandle_get_target</a></h4> +<h4><a name="api:mono_gchandle_is_in_domain">mono_gchandle_is_in_domain</a></h4> +<h4><a name="api:mono_gchandle_free">mono_gchandle_free</a></h4> diff --git a/docs/sources/mono-api-image.html b/docs/sources/mono-api-image.html new file mode 100644 index 0000000000..93e6e6d014 --- /dev/null +++ b/docs/sources/mono-api-image.html @@ -0,0 +1,66 @@ +<h2>Image Manipulation</h2> + + <p>Images are the component of assemblies that actually hold + the CIL code and <a href="mono-api-metadata.html">metadata</a> + in the extended PE/COFF file. + +<h3>Synopsis</h3> + + <div class="header"> +#include <metadata/image.h> + +typedef struct _MonoImage MonoImage; +typedef enum { + MONO_IMAGE_OK, + MONO_IMAGE_ERROR_ERRNO, + MONO_IMAGE_MISSING_ASSEMBLYREF, + MONO_IMAGE_IMAGE_INVALID +} MonoImageOpenStatus; + +@API_IDX@ + </div> + +<h3>Image APIs</h3> + + <p>Images are the actual elements in the runtime that contain + the actual code being executed. + +<a name="cil_image_open"/> +<h3>Opening and closing MonoImages</h3> + +<h4><a name="api:mono_image_open">mono_image_open</a></h4> +<h4><a name="api:mono_image_open_full">mono_image_open_full</a></h4> +<h4><a name="api:mono_image_open_from_data">mono_image_open_from_data</a></h4> +<h4><a name="api:mono_image_open_from_data_full">mono_image_open_from_data_full</a></h4> +<h4><a name="api:mono_image_close">mono_image_close</a></h4> +<h4><a name="api:mono_image_addref">mono_image_addref</a></h4> +<h4><a name="api:mono_image_load_file_for_image">mono_image_load_file_for_image</a></h4> + +<h3>Image Information</h3> + +<h4><a name="api:mono_image_get_guid">mono_image_get_guid</a></h4> +<h4><a name="api:mono_image_get_assembly">mono_image_get_assembly</a></h4> +<h4><a name="api:mono_image_get_entry_point">mono_image_get_entry_point</a></h4> +<h4><a name="api:mono_image_get_filename">mono_image_get_filename</a></h4> +<h4><a name="api:mono_image_get_name">mono_image_get_name</a></h4> +<h4><a name="api:mono_image_get_resource">mono_image_get_resource</a></h4> +<h4><a name="api:mono_image_get_table_info">mono_image_get_table_info</a></h4> +<h4><a name="api:mono_image_get_table_rows">mono_image_get_table_rows</a></h4> +<h4><a name="api:mono_image_is_dynamic">mono_image_is_dynamic</a></h4> +<h4><a name="api:mono_image_loaded_by_guid">mono_image_loaded_by_guid</a></h4> +<h4><a name="api:mono_image_loaded">mono_image_loaded</a></h4> +<h4><a name="api:mono_image_lookup_resource">mono_image_lookup_resource</a></h4> +<h4><a name="api:mono_image_strerror">mono_image_strerror</a></h4> + +<h3>Public Keys, Strong Names and Certificates</h3> + +<h4><a name="api:mono_image_strong_name_position">mono_image_strong_name_position</a></h4> +<h4><a name="api:mono_image_get_public_key">mono_image_get_public_key</a></h4> +<h4><a name="api:mono_image_get_strong_name">mono_image_get_strong_name</a></h4> +<h4><a name="api:mono_image_has_authenticode_entry">mono_image_has_authenticode_entry</a></h4> + +<h3>Low-level features</h3> + +<h4><a name="api:mono_image_rva_map">mono_image_rva_map</a></h4> +<h4><a name="api:mono_image_ensure_section_idx">mono_image_ensure_section_idx</a></h4> +<h4><a name="api:mono_image_ensure_section">mono_image_ensure_section</a></h4> diff --git a/docs/sources/mono-api-internal.html b/docs/sources/mono-api-internal.html new file mode 100644 index 0000000000..1d292ce0de --- /dev/null +++ b/docs/sources/mono-api-internal.html @@ -0,0 +1,14 @@ +<h1>Code Generator Internals</h1> + + <p>The functions in this document are internal to the JIT, + they are here for completeness, but you should refer to the + source code for more details. + +<h3>BURG public API</h3> + +<h4><a name="api:mono_burg_kids">mono_burg_kids</a></h4> +<h4><a name="api:mono_burg_label">mono_burg_label</a></h4> +<h4><a name="api:mono_burg_rule">mono_burg_rule</a></h4> + + + diff --git a/docs/sources/mono-api-interpreter.html b/docs/sources/mono-api-interpreter.html new file mode 100644 index 0000000000..4a36104e7e --- /dev/null +++ b/docs/sources/mono-api-interpreter.html @@ -0,0 +1,11 @@ +<h3>Interpreter API</h3> + + <p>This describes the API exposed by the interpreter, but it + is for the most part an internal to the interpreter. + +<h4><a name="api:mono_interp_dis_mintop">mono_interp_dis_mintop</a></h4> +<h4><a name="api:mono_interp_exec">mono_interp_exec</a></h4> +<h4><a name="api:mono_interp_ftnptr_to_delegate">mono_interp_ftnptr_to_delegate</a></h4> +<h4><a name="api:mono_interp_get_runtime_method">mono_interp_get_runtime_method</a></h4> +<h4><a name="api:mono_interp_transform_init">mono_interp_transform_init</a></h4> +<h4><a name="api:mono_interp_transform_method">mono_interp_transform_method</a></h4> diff --git a/docs/sources/mono-api-jit.html b/docs/sources/mono-api-jit.html new file mode 100644 index 0000000000..0618d0c5a6 --- /dev/null +++ b/docs/sources/mono-api-jit.html @@ -0,0 +1,20 @@ +<h2>Synopsis</h2> + +<div class="header"> +@API_IDX@ +</div> + +<h3>Useful Debugging Functions</h3> + + <p>These functions are useful when running the Mono VM inside + a debugger. + +<h4><a name="api:mono_pmip">mono_pmip</a></h4> +<h4><a name="api:mono_print_method_from_ip">mono_print_method_from_ip</a></h4> +<h4><a name="api:mono_print_thread_dump">mono_print_thread_dump</a></h4> +<h4><a name="api:mono_threads_request_thread_dump">mono_threads_request_thread_dump</a></h4> + +<h3>Helper Tools For Native Ports</h3> + +<h4><a name="api:mono_inst_name">mono_inst_name</a></h4> + diff --git a/docs/sources/mono-api-jitinternal.html b/docs/sources/mono-api-jitinternal.html new file mode 100644 index 0000000000..25dd46cb5f --- /dev/null +++ b/docs/sources/mono-api-jitinternal.html @@ -0,0 +1,38 @@ +<h1>Notification Interface</h1> + + <p>Am not sure that we want to document this; This seems like + an internal interface that third parties would not likely + use, and if they do, they probably are reading the JIT's + source code. + + <p>These methods must be called to notify the profiler of an + event that must be recorded. Mono's JIT engine currently + calls these routines, but if you are extending Mono in some + way these are the methods that you might invoke to notify the + profiler of an event. + +<h4><a name="api:mono_profiler_load">mono_profiler_load</a></h4> +<h4><a name="api:mono_profiler_allocation">mono_profiler_allocation</a></h4> +<h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4> +<h4><a name="api:mono_profiler_thread_start">mono_profiler_thread_start</a></h4> +<h4><a name="api:mono_profiler_thread_end">mono_profiler_thread_end</a></h4> +<h4><a name="api:mono_profiler_appdomain_event">mono_profiler_appdomain_event</a></h4> +<h4><a name="api:mono_profiler_appdomain_loaded">mono_profiler_appdomain_loaded</a></h4> +<h4><a name="api:mono_profiler_assembly_event">mono_profiler_assembly_event</a></h4> +<h4><a name="api:mono_profiler_assembly_loaded">mono_profiler_assembly_loaded</a></h4> +<h4><a name="api:mono_profiler_class_event">mono_profiler_class_event</a></h4> +<h4><a name="api:mono_profiler_class_loaded">mono_profiler_class_loaded</a></h4> +<h4><a name="api:mono_profiler_code_transition">mono_profiler_code_transition</a></h4> +<h4><a name="api:mono_profiler_method_end_jit">mono_profiler_method_end_jit</a></h4> +<h4><a name="api:mono_profiler_method_enter">mono_profiler_method_enter</a></h4> +<h4><a name="api:mono_profiler_method_jit">mono_profiler_method_jit</a></h4> +<h4><a name="api:mono_profiler_method_leave">mono_profiler_method_leave</a></h4> +<h4><a name="api:mono_profiler_module_event">mono_profiler_module_event</a></h4> +<h4><a name="api:mono_profiler_module_loaded">mono_profiler_module_loaded</a></h4> +<h4><a name="api:mono_profiler_shutdown">mono_profiler_shutdown</a></h4> +<h4><a name="api:mono_profiler_startup">mono_profiler_startup</a></h4> +<h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4> +<h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4> +<h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4> +<h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4> +<h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4> diff --git a/docs/sources/mono-api-marshal.html b/docs/sources/mono-api-marshal.html new file mode 100644 index 0000000000..605896db85 --- /dev/null +++ b/docs/sources/mono-api-marshal.html @@ -0,0 +1,39 @@ + + +<h4><a name="api:mono_delegate_free_ftnptr">mono_delegate_free_ftnptr</a></h4> +<h4><a name="api:mono_delegate_to_ftnptr">mono_delegate_to_ftnptr</a></h4> +<h4><a name="api:mono_ftnptr_to_delegate">mono_ftnptr_to_delegate</a></h4> +<h4><a name="api:mono_marshal_alloc">mono_marshal_alloc</a></h4> +<h4><a name="api:mono_marshal_asany">mono_marshal_asany</a></h4> +<h4><a name="api:mono_marshal_free_array">mono_marshal_free_array</a></h4> +<h4><a name="api:mono_marshal_free_asany">mono_marshal_free_asany</a></h4> +<h4><a name="api:mono_marshal_free">mono_marshal_free</a></h4> +<h4><a name="api:mono_marshal_get_castclass">mono_marshal_get_castclass</a></h4> +<h4><a name="api:mono_marshal_get_delegate_begin_invoke">mono_marshal_get_delegate_begin_invoke</a></h4> +<h4><a name="api:mono_marshal_get_delegate_end_invoke">mono_marshal_get_delegate_end_invoke</a></h4> +<h4><a name="api:mono_marshal_get_delegate_invoke">mono_marshal_get_delegate_invoke</a></h4> +<h4><a name="api:mono_marshal_get_icall_wrapper">mono_marshal_get_icall_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_isinst">mono_marshal_get_isinst</a></h4> +<h4><a name="api:mono_marshal_get_ldfld_remote_wrapper">mono_marshal_get_ldfld_remote_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_ldfld_wrapper">mono_marshal_get_ldfld_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_managed_wrapper">mono_marshal_get_managed_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_native_wrapper">mono_marshal_get_native_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_proxy_cancast">mono_marshal_get_proxy_cancast</a></h4> +<h4><a name="api:mono_marshal_get_ptr_to_struct">mono_marshal_get_ptr_to_struct</a></h4> +<h4><a name="api:mono_marshal_get_remoting_invoke_for_target">mono_marshal_get_remoting_invoke_for_target</a></h4> +<h4><a name="api:mono_marshal_get_remoting_invoke">mono_marshal_get_remoting_invoke</a></h4> +<h4><a name="api:mono_marshal_get_remoting_invoke_with_check">mono_marshal_get_remoting_invoke_with_check</a></h4> +<h4><a name="api:mono_marshal_get_runtime_invoke">mono_marshal_get_runtime_invoke</a></h4> +<h4><a name="api:mono_marshal_get_stelemref">mono_marshal_get_stelemref</a></h4> +<h4><a name="api:mono_marshal_get_stfld_remote_wrapper">mono_marshal_get_stfld_remote_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_stfld_wrapper">mono_marshal_get_stfld_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_struct_to_ptr">mono_marshal_get_struct_to_ptr</a></h4> +<h4><a name="api:mono_marshal_get_synchronized_wrapper">mono_marshal_get_synchronized_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_unbox_wrapper">mono_marshal_get_unbox_wrapper</a></h4> +<h4><a name="api:mono_marshal_get_xappdomain_invoke">mono_marshal_get_xappdomain_invoke</a></h4> +<h4><a name="api:mono_marshal_load_type_info">mono_marshal_load_type_info</a></h4> +<h4><a name="api:mono_marshal_method_from_wrapper">mono_marshal_method_from_wrapper</a></h4> +<h4><a name="api:mono_marshal_realloc">mono_marshal_realloc</a></h4> +<h4><a name="api:mono_marshal_set_last_error">mono_marshal_set_last_error</a></h4> +<h4><a name="api:mono_marshal_string_to_utf16">mono_marshal_string_to_utf16</a></h4> +<h4><a name="api:mono_marshal_type_size">mono_marshal_type_size</a></h4> diff --git a/docs/sources/mono-api-metadata.html b/docs/sources/mono-api-metadata.html new file mode 100644 index 0000000000..299f4c7b59 --- /dev/null +++ b/docs/sources/mono-api-metadata.html @@ -0,0 +1,749 @@ +<h1>Metadata Reading</h1> + + <p>The Metadata API gives developers low-level access to the + information encoded in CLI modules: type and + methods definitions encoded in metadata as well as access to + the CIL code and embedded resources. + + <p>Managed developers access this information using either the + System.Reflection API or a library + like <a href="http://www.mono-project.com/Cecil">Cecil</a>. + + <p>To start using the Metadata API it is necessary + to <a href="mono-api-assembly.html#cil_assembly_load">open an + assembly</a> or a CIL image (a .dll or .exe file) using one of + the + <a href="mono-api-image.html#cil_image_open">CIL image + opening</a> API calls. + +<h2>Metadata Heaps</h2> + + <p>ECMA CLI images contain four heaps that store different + kinds of information, these are: + + <ul> + <li>GUID heap (called #GUID) contains 128-bit GUIDs, + you can get pointer to a GUID value by + calling <a href="#api:mono_metadata_guid_heap">mono_metadata_guid_heap</a>. + + <li>User string heap (called #US), it contains user + visible strings, you can fetch a string from this heap + by calling + <a href="#api:mono_metadata_user_string">mono_metadata_user_string</a>. + + <li>Blob heap (called #blob), it contains binary + blobs of data, you can get a blob + by <a href="#api:mono_metadata_blob_heap">mono_metadata_blob_heap</a>. + You can determine the size of the blob using + the <a href="#api:mono_metadata_decode_blob_size">mono_metadata_decode_blob_size</a>. + + </ul> + + <p>The ECMA file format also has an extra section called the + "#~" stream, this stream is the one that holds the metadata + tables. There is a high-level API to get access to the + contents of this API, described in the + section <a href="#metadata-tables">Metadata Tables</a>. + +<h4><a name="api:mono_metadata_guid_heap">mono_metadata_guid_heap</a></h4> +<h4><a name="api:mono_metadata_string_heap">mono_metadata_string_heap</a></h4> +<h4><a name="api:mono_metadata_blob_heap">mono_metadata_blob_heap</a></h4> +<h4><a name="api:mono_metadata_user_string">mono_metadata_user_string</a></h4> +<h4><a name="api:mono_metadata_decode_blob_size">mono_metadata_decode_blob_size</a></h4> + +<a name="metadata-tables"/> +<h2>Metadata Tables</h2> + + <p>Metadata is encoded in a number of tables included on every + CIL image. These tables contain type definitions, member + definitions and so on, these constants are defined in the ECMA 335 + specification Partition II section 22. The following table + shows the C constants defined in the Mono runtime and how they + map to the equivalent ECMA CLI metadata table: + + <center> + <table border=1> + <thead> + <td> + <b>ECMA CLI Table Name</b> + </td> + <td> + <b>C Constant Name</b> + </td> + <td> + <b>Table Schema (Array Size + Columns Constants)</b> + </td> + </thead> +<td>Assembly</td><td>MONO_TABLE_ASSEMBLY</td><td> +Array size: +MONO_ASSEMBLY_SIZE +<ul> + <li>MONO_ASSEMBLY_HASH_ALG + <li>MONO_ASSEMBLY_MAJOR_VERSION + <li>MONO_ASSEMBLY_MINOR_VERSION + <li>MONO_ASSEMBLY_BUILD_NUMBER + <li>MONO_ASSEMBLY_REV_NUMBER + <li>MONO_ASSEMBLY_FLAGS + <li>MONO_ASSEMBLY_PUBLIC_KEY + <li>MONO_ASSEMBLY_NAME + <li>MONO_ASSEMBLY_CULTURE +</ul> +</td> +</tr> + +<td>AssemblyOS</td><td>MONO_TABLE_ASSEMBLYOS</td><td> +Array size: +MONO_ASSEMBLYOS_SIZE +<ul> + <li>MONO_ASSEMBLYOS_PLATFORM + <li>MONO_ASSEMBLYOS_MAJOR_VERSION + <li>MONO_ASSEMBLYOS_MINOR_VERSION +</ul> +</td> +</tr> + +<td>AssemblyProcessor</td><td>MONO_TABLE_ASSEMBLYPROCESSOR</td><td>Array +size: MONO_ASSEMBLYPROCESSOR_SIZE +<ul> + <li>MONO_ASSEMBLY_PROCESSOR +</ul> +</td> +</tr> + +<td>AssemblyRef</td><td>MONO_TABLE_ASSEMBLYREF</td><td> +Array size: +MONO_ASSEMBLYREF_SIZE +<ul> + <li>MONO_ASSEMBLYREF_MAJOR_VERSION + <li>MONO_ASSEMBLYREF_MINOR_VERSION + <li>MONO_ASSEMBLYREF_BUILD_NUMBER + <li>MONO_ASSEMBLYREF_REV_NUMBER + <li>MONO_ASSEMBLYREF_FLAGS + <li>MONO_ASSEMBLYREF_PUBLIC_KEY + <li>MONO_ASSEMBLYREF_NAME + <li>MONO_ASSEMBLYREF_CULTURE + <li>MONO_ASSEMBLYREF_HASH_VALUE +</ul> +</td> +</tr> + +<td>AssemblyRefProcessor</td><td>MONO_TABLE_ASSEMBLYREFPROCESSOR</td><td>Array +size: MONO_ASSEMBLYREFPROC_SIZE +<ul> + <li>MONO_ASSEMBLYREFPROC_PROCESSOR + <li>MONO_ASSEMBLYREFPROC_ASSEMBLYREF +</ul> +</td> +</tr> + +<td>AssemblyRefOS</td><td>MONO_TABLE_ASSEMBLYREFOS</td><td> +Array size: + <li>MONO_ASSEMBLYREFOS_SIZE +<ul> + <li>MONO_ASSEMBLYREFOS_PLATFORM + <li>MONO_ASSEMBLYREFOS_MAJOR_VERSION + <li>MONO_ASSEMBLYREFOS_MINOR_VERSION + <li>MONO_ASSEMBLYREFOS_ASSEMBLYREF +</ul> +</td> +</tr> + +<td>ClassLayout</td><td>MONO_TABLE_CLASSLAYOUT</td><td> +Array size: +MONO_CLASSLAYOUT_SIZE +<ul> + <li>MONO_CLASS_LAYOUT_PACKING_SIZE + <li>MONO_CLASS_LAYOUT_CLASS_SIZE + <li>MONO_CLASS_LAYOUT_PARENT +</ul> +</td> +</tr> + +<td>Constant</td><td>MONO_TABLE_CONSTANT</td><td> +Array size: +MONO_CONSTANT_SIZE +<ul> + <li>MONO_CONSTANT_TYPE + <li>MONO_CONSTANT_PADDING + <li>MONO_CONSTANT_PARENT + <li>MONO_CONSTANT_VALUE +</ul> +</td> +</tr> + +<td>CustomAttribute</td><td>MONO_TABLE_CUSTOMATTRIBUTE</td><td> +Array size: +MONO_CUSTOM_ATTR_SIZE +<ul> + <li>MONO_CUSTOM_ATTR_PARENT + <li>MONO_CUSTOM_ATTR_TYPE + <li>MONO_CUSTOM_ATTR_VALUE +</ul> +</td> +</tr> + +<td>DeclSecurity</td><td>MONO_TABLE_DECLSECURITY</td><td> +Array size: +MONO_DECL_SECURITY_SIZE +<ul> + <li>MONO_DECL_SECURITY_ACTION + <li>MONO_DECL_SECURITY_PARENT + <li>MONO_DECL_SECURITY_PERMISSIONSET +</ul> +</td> +</tr> + +<td>EventMap</td><td>MONO_TABLE_EVENTMAP</td><td> +Array size: +MONO_EVENT_MAP_SIZE +<ul> + <li>MONO_EVENT_MAP_PARENT + <li>MONO_EVENT_MAP_EVENTLIST +</ul> +</td> +</tr> + +<td>EventPtr</td><td>MONO_TABLE_EVENT_POINTER</td><td> +Array size: +MONO_EVENT_POINTER_SIZE +<ul> + <li>MONO_EVENT_POINTER_EVENT +</ul> +</td> +</tr> + +<td>Event</td><td>MONO_TABLE_EVENT</td><td> +Array size: MONO_EVENT_SIZE +<ul> + <li>MONO_EVENT_FLAGS + <li>MONO_EVENT_NAME + <li>MONO_EVENT_TYPE +</ul> +</td> +</tr> + +<td>ExportedType</td><td>MONO_TABLE_EXPORTEDTYPE</td><td> +Array size: +MONO_EXPORTEDTYPE_SIZE +<ul> + <li>MONO_EXP_TYPE_FLAGS + <li>MONO_EXP_TYPE_TYPEDEF + <li>MONO_EXP_TYPE_NAME + <li>MONO_EXP_TYPE_NAMESPACE + <li>MONO_EXP_TYPE_IMPLEMENTATION +</ul> +</td> +</tr> + +<td>Field</td><td>MONO_TABLE_FIELD</td><td> +Array size: MONO_FIELD_SIZE +<ul> + <li>MONO_FIELD_FLAGS + <li>MONO_FIELD_NAME + <li>MONO_FIELD_SIGNATURE +</ul> +</td> +</tr> + +<td>FieldLayoutt</td><td>MONO_TABLE_FIELDLAYOUT</td><td> +Array size: +MONO_FIELDLAYOUT_SIZE +<ul> + <li>MONO_FIELD_LAYOUT_OFFSET + <li>MONO_FIELD_LAYOUT_FIELD +</ul> +</td> +</tr> + +<td>FieldMarshal</td><td>MONO_TABLE_FIELDMARSHAL</td><td> +Array size: +MONO_FIELD_MARSHAL_SIZE +<ul> + <li>MONO_FIELD_MARSHAL_PARENT + <li>MONO_FIELD_MARSHAL_NATIVE_TYPE +</ul> +</td> +</tr> + +<td>FieldPtr</td><td>MONO_TABLE_FIELD_POINTER</td><td> +Array size: +MONO_FIELD_POINTER_SIZE +<ul> + <li>MONO_FIELD_POINTER_FIELD +</ul> +</td> +</tr> + +<td>FieldRVA</td><td>MONO_TABLE_FIELDRVA</td><td> +Array size: +MONO_FIELDRVA_SIZE +<ul> + <li>MONO_FIELD_RVA_RVA + <li>MONO_FIELD_RVA_FIELD +</ul> +</td> +</tr> + +<td>File</td><td>MONO_TABLE_FILE</td><td> +Array size: MONO_FILE_SIZE +<ul> + <li>MONO_FILE_FLAGS + <li>MONO_FILE_NAME + <li>MONO_FILE_HASH_VALUE +</ul> +</td> +</tr> + +<td>GenericParam</td><td>MONO_TABLE_GENERICPARAM</td><td> +Array size: +MONO_GENERICPARAM_SIZE +<ul> + <li>MONO_GENERICPARAM_NUMBER + <li>MONO_GENERICPARAM_FLAGS + <li>MONO_GENERICPARAM_OWNER + <li>MONO_GENERICPARAM_NAME +</ul> +</td> +</tr> + +<td>GenericParamConstraint</td><td>MONO_TABLE_GENERICPARAMCONSTRAINT</td><td>Array +size: MONO_GENERICPARAMCONSTRAINT_SIZE +<ul> + <li>MONO_GENPARCONSTRAINT_GENERICPAR + <li>MONO_GENPARCONSTRAINT_CONSTRAINT +</ul> +</td> + +<tr> +<td>ImplMap</td><td>MONO_TABLE_IMPLMAP</td><td> +Array size: +MONO_IMPLMAP_SIZE +<ul> + <li>MONO_IMPLMAP_FLAGS + <li>MONO_IMPLMAP_MEMBER + <li>MONO_IMPLMAP_NAME + <li>MONO_IMPLMAP_SCOPE +</ul> +</td> +</tr> + + +<td>InterfaceImpl</td><td>MONO_TABLE_INTERFACEIMPL</td><td> +Array size: + <li>MONO_INTERFACEIMPL_SIZE +<ul> + <li>MONO_INTERFACEIMPL_CLASS + <li>MONO_INTERFACEIMPL_INTERFACE +</ul> +</td> +</tr> + + +<td>ManifestResource</td><td>MONO_TABLE_MANIFESTRESOURCE</td><td>Array +size: MONO_MANIFESTRESOURCE_SIZE +<ul> + <li>MONO_MANIFEST_OFFSET + <li>MONO_MANIFEST_FLAGS + <li>MONO_MANIFEST_NAME + <li>MONO_MANIFEST_IMPLEMENTATION +</ul> +</td> +</tr> + +<tr> +<td>MemberRef</td><td>MONO_TABLE_MEMBERREF</td><td> +Array size: +MONO_MEMBERREF_SIZE +<ul> + <li>MONO_MEMBERREF_CLASS + <li>MONO_MEMBERREF_NAME + <li>MONO_MEMBERREF_SIGNATURE +</ul> +</td> +</tr> + +<td>MethodImpl</td><td>MONO_TABLE_METHODIMPL</td><td> +Array size: +MONO_METHODIMPL_SIZE +<ul> + <li>MONO_METHODIMPL_CLASS + <li>MONO_METHODIMPL_BODY + <li>MONO_METHODIMPL_DECLARATION +</ul> +</td> +</tr> + + +<td>MethodSpec</td><td>MONO_TABLE_METHODSPEC</td><td> +Array size: +MONO_METHODSPEC_SIZE +<ul> + <li>MONO_METHODSPEC_METHOD + <li>MONO_METHODSPEC_SIGNATURE +</ul> +</td> +</tr> +<tr> +<td>MethodSemantics</td><td>MONO_TABLE_METHODSEMANTICS</td><td>Array +size: MONO_METHOD_SEMA_SIZE +<ul> + <li>MONO_METHOD_SEMA_SEMANTICS + <li>MONO_METHOD_SEMA_METHOD + <li>MONO_METHOD_SEMA_ASSOCIATION +</ul> +</td> +</tr> + +<td>Moduleref</td><td>MONO_TABLE_MODULEREF</td><td> +Array size: +MONO_MODULEREF_SIZE +<ul> + <li>MONO_MODULEREF_NAME +</ul> +</td> +</tr> + +<tr> +<td>Module</td><td>MONO_TABLE_MODULE</td><td> +Array size: +MONO_MODULE_SIZE +<br> +Columns: +<ul> + <li>MONO_MODULE_GENERATION + <li>MONO_MODULE_NAME + <li>MONO_MODULE_MVID + <li>MONO_MODULE_ENC + <li>MONO_MODULE_ENCBASE +</ul> +</td> +</tr> + +<td>TypeRef</td><td>MONO_TABLE_TYPEREF</td><td> +Array size: +MONO_TYPEREF_SIZE +<ul> + <li>MONO_TYPEREF_SCOPE + <li>MONO_TYPEREF_NAME + <li>MONO_TYPEREF_NAMESPACE +</ul> +</td> +</tr> + +<tr> +<td>MethodPtr</td><td>MONO_TABLE_METHOD_POINTER</td><td> +Array size: +MONO_METHOD_POINTER_SIZE +<ul> + <li>MONO_METHOD_POINTER_METHOD +</ul> +</td> +</tr> + +<td>Method</td><td>MONO_TABLE_METHOD</td><td> +Array size: +MONO_METHOD_SIZE +<ul> + <li>MONO_METHOD_RVA + <li>MONO_METHOD_IMPLFLAGS + <li>MONO_METHOD_FLAGS + <li>MONO_METHOD_NAME + <li>MONO_METHOD_SIGNATURE + <li>MONO_METHOD_PARAMLIST +</ul> +</td> +</tr> + +<tr> +<td>NestedClass</td><td>MONO_TABLE_NESTEDCLASS</td><td> +Array size: +MONO_NESTEDCLASS_SIZE +<ul> + <li>MONO_NESTED_CLASS_NESTED + <li>MONO_NESTED_CLASS_ENCLOSING +</ul> +</td> +</tr> + +<tr> +<td>ParamPtr</td><td>MONO_TABLE_PARAM_POINTER</td><td> +Array size: +MONO_PARAM_POINTER_SIZE +<ul> + <li>MONO_PARAM_POINTER_PARAM +</ul> +</td> +</tr> + +<td>Param</td><td>MONO_TABLE_PARAM</td><td> +Array size: MONO_PARAM_SIZE +<ul> + <li>MONO_PARAM_FLAGS + <li>MONO_PARAM_SEQUENCE + <li>MONO_PARAM_NAME +</ul> +</td> +</tr> + +<td>PropertyMap</td><td>MONO_TABLE_PROPERTYMAP</td><td> +Array size: +MONO_PROPERTY_MAP_SIZE +<ul> + <li>MONO_PROPERTY_MAP_PARENT + <li>MONO_PROPERTY_MAP_PROPERTY_LIST +</ul> +</td> +</tr> + +<td>PropertyPtr</td><td>MONO_TABLE_PROPERTY_POINTER</td><td>Array +size: MONO_PROPERTY_POINTER_SIZE +<ul> + <li>MONO_PROPERTY_POINTER_PROPERTY +</ul> +</td> +</tr> + +<td>Property</td><td>MONO_TABLE_PROPERTY</td><td> +Array size: +MONO_PROPERTY_SIZE +<ul> + <li>MONO_PROPERTY_FLAGS + <li>MONO_PROPERTY_NAME + <li>MONO_PROPERTY_TYPE +</ul> +</td> +</tr> +<tr> +<td>StandaloneSig</td><td>MONO_TABLE_STANDALONESIG</td><td> +Array size: + <li>MONO_STAND_ALONE_SIGNATURE_SIZE +<ul> + <li>MONO_STAND_ALONE_SIGNATURE +</ul> +</td> +</tr> + +<tr> +<td>TypeDef</td><td>MONO_TABLE_TYPEDEF</td><td> +Array size: +MONO_TYPEDEF_SIZE +<ul> + <li>MONO_TYPEDEF_FLAGS + <li>MONO_TYPEDEF_NAME + <li>MONO_TYPEDEF_NAMESPACE + <li>MONO_TYPEDEF_EXTENDS + <li>MONO_TYPEDEF_FIELD_LIST + <li>MONO_TYPEDEF_METHOD_LIST +</ul> +</td> +</tr> + +<tr> +<td>TypeSpec</td><td>MONO_TABLE_TYPESPEC</td><td> +Array size: +MONO_TYPESPEC_SIZE +<ul> + <li>MONO_TYPESPEC_SIGNATURE +</ul> +</td> +</tr> + + </table> + </center> + + <p>Each table can contain zero or more rows, you must call the + <a href="#api:mono_metadata_table_rows">mono_metadata_table_rows</a> + to obtain the number of rows in a table, and then you can + extract individual row values by using + the <a href="#api:mono_metadata_decode_row">mono_metadata_decode_row</a> + or + the <a href="#api:mono_metadata_decode_row_col">mono_metadata_decode_row_col</a>. + When decoding rows you must provide an guint32 array large + enough to hold as many columns as the table contains. + + <p>The metadata tables are stored in the MonoImage, you obtain + a pointer to the MonoTableInfo by calling + the <a href="#api:mono_image_get_table_info">mono_image_get_table_info</a> + and then you can scan those tables, for example: + + <pre class="prettyprint"> + /* + * Dumps a few fields from the AssemblyRef table + */ + void DumpAssemblyRefs (MonoImage *image) + { + /* Get a pointer to the AssemblyRef metadata table */ + MonoTableInfo *t = mono_image_get_table_info (image, MONO_TABLE_ASSEMBLYREF); + + /* Fetch the number of rows available in the table */ + int rows = mono_table_info_get_rows (t); + int i; + + /* For each row, print some of its values */ + for (i = 0; i < rows; i++){ + /* Space where we extract one row from the metadata table */ + guint32 cols [MONO_ASSEMBLYREF_SIZE]; + + /* Extract the row into the array cols */ + mono_metadata_decode_row (t, i, cols, MONO_ASSEMBLYREF_SIZE); + + fprintf (output, "%d: Version=%d.%d.%d.%d\n\tName=%s\n", i + 1, + cols [MONO_ASSEMBLYREF_MAJOR_VERSION], + cols [MONO_ASSEMBLYREF_MINOR_VERSION], + cols [MONO_ASSEMBLYREF_BUILD_NUMBER], + cols [MONO_ASSEMBLYREF_REV_NUMBER], + mono_metadata_string_heap (image, cols [MONO_ASSEMBLYREF_NAME])); + } + } + </pre> + + <p>The above program shows the following output when ran on + the C# compiler: + + <pre> + 1: Version=1.0.5000.0 + Name=mscorlib + 2: Version=1.0.5000.0 + Name=System + 3: Version=1.0.5000.0 + Name=System.Xml + </pre> + + <p> + +<h3>Metadata Tables API</h3> + + <p>These are the APIs for dealing with tables: + +<h4><a name="api:mono_image_get_table_info">mono_image_get_table_info</a></h4> +<h4><a name="api:mono_image_get_table_rows">mono_image_get_table_rows</a></h4> +<h4><a name="api:mono_metadata_get_table">mono_metadata_get_table</a></h4> +<h4><a name="api:mono_meta_table_name">mono_meta_table_name</a></h4> +<h4><a name="api:mono_metadata_decode_row_col">mono_metadata_decode_row_col</a></h4> +<h4><a name="api:mono_metadata_decode_row">mono_metadata_decode_row</a></h4> +<h4><a name="api:mono_metadata_compute_size">mono_metadata_compute_size</a></h4> +<h4><a name="api:mono_metadata_custom_attrs_from_index">mono_metadata_custom_attrs_from_index</a></h4> +<h4><a name="api:mono_metadata_decode_signed_value">mono_metadata_decode_signed_value</a></h4> +<h4><a name="api:mono_metadata_decode_value">mono_metadata_decode_value</a></h4> +<h4><a name="api:mono_metadata_encode_value">mono_metadata_encode_value</a></h4> + +<h2>Metadata access API</h2> + + <p>This is the low-level API for accessing the metadata + images. + +<h4><a name="api:mono_cli_rva_image_map">mono_cli_rva_image_map</a></h4> +<h4><a name="api:mono_pe_file_open">mono_pe_file_open</a></h4> +<h4><a name="api:mono_metadata_events_from_typedef">mono_metadata_events_from_typedef</a></h4> +<h4><a name="api:mono_metadata_field_info">mono_metadata_field_info</a></h4> +<h4><a name="api:mono_metadata_free_array">mono_metadata_free_array</a></h4> +<h4><a name="api:mono_metadata_free_marshal_spec">mono_metadata_free_marshal_spec</a></h4> +<h4><a name="api:mono_metadata_free_mh">mono_metadata_free_mh</a></h4> +<h4><a name="api:mono_metadata_free_type">mono_metadata_free_type</a></h4> +<h4><a name="api:mono_metadata_get_constant_index">mono_metadata_get_constant_index</a></h4> +<h4><a name="api:mono_metadata_get_marshal_info">mono_metadata_get_marshal_info</a></h4> +<h4><a name="api:mono_metadata_implmap_from_method">mono_metadata_implmap_from_method</a></h4> +<h4><a name="api:mono_metadata_interfaces_from_typedef_full">mono_metadata_interfaces_from_typedef_full</a></h4> +<h4><a name="api:mono_metadata_interfaces_from_typedef">mono_metadata_interfaces_from_typedef</a></h4> +<h4><a name="api:mono_metadata_locate">mono_metadata_locate</a></h4> +<h4><a name="api:mono_metadata_locate_token">mono_metadata_locate_token</a></h4> +<h4><a name="api:mono_metadata_methods_from_event">mono_metadata_methods_from_event</a></h4> +<h4><a name="api:mono_metadata_methods_from_property">mono_metadata_methods_from_property</a></h4> +<h4><a name="api:mono_metadata_nested_in_typedef">mono_metadata_nested_in_typedef</a></h4> +<h4><a name="api:mono_metadata_nesting_typedef">mono_metadata_nesting_typedef</a></h4> +<h4><a name="api:mono_metadata_packing_from_typedef">mono_metadata_packing_from_typedef</a></h4> +<h4><a name="api:mono_metadata_properties_from_typedef">mono_metadata_properties_from_typedef</a></h4> +<h4><a name="api:mono_metadata_token_from_dor">mono_metadata_token_from_dor</a></h4> +<h4><a name="api:mono_metadata_typedef_from_field">mono_metadata_typedef_from_field</a></h4> +<h4><a name="api:mono_metadata_typedef_from_method">mono_metadata_typedef_from_method</a></h4> +<h4><a name="api:mono_metadata_type_equal">mono_metadata_type_equal</a></h4> +<h4><a name="api:mono_metadata_type_hash">mono_metadata_type_hash</a></h4> +<h4><a name="api:mono_metadata_declsec_from_index">mono_metadata_declsec_from_index</a></h4> +<h4><a name="api:mono_metadata_free_method_signature">mono_metadata_free_method_signature</a></h4> + +<h3>Retrieving Objects from Tokens</h3> + +<h4><a name="api:mono_metadata_parse_custom_mod">mono_metadata_parse_custom_mod</a></h4> +<h4><a name="api:mono_metadata_parse_field_type">mono_metadata_parse_field_type</a></h4> +<h4><a name="api:mono_metadata_parse_marshal_spec">mono_metadata_parse_marshal_spec</a></h4> +<h4><a name="api:mono_metadata_parse_method_signature_full">mono_metadata_parse_method_signature_full</a></h4> +<h4><a name="api:mono_metadata_parse_method_signature">mono_metadata_parse_method_signature</a></h4> +<h4><a name="api:mono_metadata_parse_mh_full">mono_metadata_parse_mh_full</a></h4> +<h4><a name="api:mono_metadata_parse_mh">mono_metadata_parse_mh</a></h4> +<h4><a name="api:mono_metadata_parse_param">mono_metadata_parse_param</a></h4> +<h4><a name="api:mono_metadata_parse_signature_full">mono_metadata_parse_signature_full</a></h4> +<h4><a name="api:mono_metadata_parse_signature">mono_metadata_parse_signature</a></h4> +<h4><a name="api:mono_metadata_parse_typedef_or_ref">mono_metadata_parse_typedef_or_ref</a></h4> +<h4><a name="api:mono_metadata_parse_type_full">mono_metadata_parse_type_full</a></h4> +<h4><a name="api:mono_metadata_parse_type">mono_metadata_parse_type</a></h4> + +<h2>Metadata Loader Locking</h2> + + <p>The locking functions here are used by code in class.c and + metadata.c to lock access to the shared hashtables inside the + MonoImage. + +<h4><a name="api:mono_loader_lock">mono_loader_lock</a></h4> +<h4><a name="api:mono_loader_unlock">mono_loader_unlock</a></h4> + +<h2>Generics Support</h2> + +<h4><a name="api:mono_metadata_generic_class_is_valuetype">mono_metadata_generic_class_is_valuetype</a></h4> +<h4><a name="api:mono_metadata_has_generic_params">mono_metadata_has_generic_params</a></h4> +<h4><a name="api:mono_metadata_inflate_generic_inst">mono_metadata_inflate_generic_inst</a></h4> +<h4><a name="api:mono_metadata_parse_generic_inst">mono_metadata_parse_generic_inst</a></h4> +<h4><a name="api:mono_metadata_generic_inst_equal">mono_metadata_generic_inst_equal</a></h4> +<h4><a name="api:mono_metadata_generic_inst_hash">mono_metadata_generic_inst_hash</a></h4> +<h4><a name="api:mono_metadata_load_generic_params">mono_metadata_load_generic_params</a></h4> +<h4><a name="api:mono_metadata_generic_inst_is_valuetype">mono_metadata_generic_inst_is_valuetype</a></h4> +<h4><a name="api:mono_metadata_generic_method_equal">mono_metadata_generic_method_equal</a></h4> + +<h2>Tokens</h2> + +<h4><a name="api:mono_ldtoken">mono_ldtoken</a></h4> +<h4><a name="api:mono_lookup_dynamic_token">mono_lookup_dynamic_token</a></h4> +<h4><a name="api:mono_ldstr">mono_ldstr</a></h4> +<h4><a name="api:mono_exception_from_token">mono_exception_from_token</a></h4> +<h4><a name="api:mono_create_jit_trampoline_from_token">mono_create_jit_trampoline_from_token</a></h4> + +<h2>OpCodes</h2> + +<h4><a name="api:mono_opcode_name">mono_opcode_name</a></h4> +<h4><a name="api:mono_opcode_value">mono_opcode_value</a></h4> + +<h2>Metadata Loading Errors</h2> + + <p>The routines in this section are used to cope with errors + during metadata loading. Errors in metadata handling can + happen for many reason, and these include (this is not an + exhaustive list). + + <ul> + <li>An assembly referenced is missing. + <li>Fields referenced are missing. + <li>Methods referenced are missing. + </ul> + + <p>The <tt>mono_loader_set_*</tt> routines are invoked during + metadata loading to flag that an error has happened. The + class loading errros are flagged in a per-thread basis. + + <P>In various spots in the runtime the + <tt>mono_loader_get_last_error</tt> routine is called to check + if there was a problem, and then errors are propagated upwards + on the stack until we reach a point where an exception can be + raised and no runtime locks are held. + + <p>The <tt>mono_loader_error_prepare_exception</tt> takes a + <tt>MonoLoaderError</tt> structure (the value returned from + <tt>mono_loader_get_last_error</tt>), turns that into an + exception and clears the error condition from the current + thread. + +<h4><a name="api:mono_loader_set_error_field_load">mono_loader_set_error_field_load</a></h4> +<h4><a name="api:mono_loader_set_error_method_load">mono_loader_set_error_method_load</a></h4> +<h4><a name="api:mono_loader_set_error_type_load">mono_loader_set_error_type_load</a></h4> + +<h4><a name="api:mono_loader_get_last_error">mono_loader_get_last_error</a></h4> +<h4><a name="api:mono_loader_clear_error">mono_loader_clear_error</a></h4> +<h4><a name="api:mono_loader_error_prepare_exception">mono_loader_error_prepare_exception</a></h4> diff --git a/docs/sources/mono-api-methods.html b/docs/sources/mono-api-methods.html new file mode 100644 index 0000000000..4f34fcc7e8 --- /dev/null +++ b/docs/sources/mono-api-methods.html @@ -0,0 +1,78 @@ +<h3>Methods</h3> + +<h3>Invoking Methods</h3> + +<h4><a name="api:mono_runtime_invoke">mono_runtime_invoke</a></h4> + +If you want to invoke generic methods, you must call the method on the +"inflated" class, which you can obtain from the +<tt>mono_object_get_class()</tt> + +<div class="code"> +MonoClass *clazz; +MonoMethod *method; + +clazz = mono_object_get_class (obj); + +/* + * If there are more Add methods declared, you + * may use mono_method_desc_search_in_class (clazz, ":Add(T)"), + * you must substitute ":Add(T)" with the correct type, for example + * for List<int>, you would use ":Add(int)". + */ +method = mono_class_get_method_from_name (clazz, "Add", 1); +mono_runtime_invoke (method, obj, args, &exception); +</div> + + +<h4><a name="api:mono_runtime_invoke_array">mono_runtime_invoke_array</a></h4> +<h4><a name="api:mono_remoting_invoke">mono_remoting_invoke</a></h4> +<h4><a name="api:mono_runtime_delegate_invoke">mono_runtime_delegate_invoke</a></h4> + +<h4><a name="api:mono_method_call_message_new">mono_method_call_message_new</a></h4> +<h4><a name="api:mono_method_desc_free">mono_method_desc_free</a></h4> +<h4><a name="api:mono_method_desc_from_method">mono_method_desc_from_method</a></h4> +<h4><a name="api:mono_method_desc_full_match">mono_method_desc_full_match</a></h4> +<h4><a name="api:mono_method_desc_match">mono_method_desc_match</a></h4> +<h4><a name="api:mono_method_desc_new">mono_method_desc_new</a></h4> +<h4><a name="api:mono_method_desc_search_in_class">mono_method_desc_search_in_class</a></h4> +<h4><a name="api:mono_method_desc_search_in_image">mono_method_desc_search_in_image</a></h4> +<h4><a name="api:mono_method_full_name">mono_method_full_name</a></h4> +<h4><a name="api:mono_method_get_class">mono_method_get_class</a></h4> +<h4><a name="api:mono_method_get_flags">mono_method_get_flags</a></h4> +<h4><a name="api:mono_method_get_last_managed">mono_method_get_last_managed</a></h4> +<h4><a name="api:mono_method_get_marshal_info">mono_method_get_marshal_info</a></h4> +<h4><a name="api:mono_method_get_name">mono_method_get_name</a></h4> +<h4><a name="api:mono_method_get_object">mono_method_get_object</a></h4> +<h4><a name="api:mono_method_get_param_names">mono_method_get_param_names</a></h4> +<h4><a name="api:mono_method_get_param_token">mono_method_get_param_token</a></h4> +<h4><a name="api:mono_method_get_signature">mono_method_get_signature</a></h4> +<h4><a name="api:mono_method_get_index">mono_method_get_index</a></h4> +<h4><a name="api:mono_method_get_signature_full">mono_method_get_signature_full</a></h4> +<h4><a name="api:mono_method_get_token">mono_method_get_token</a></h4> +<h4><a name="api:mono_method_get_wrapper_data">mono_method_get_wrapper_data</a></h4> +<h4><a name="api:mono_method_has_marshal_info">mono_method_has_marshal_info</a></h4> +<h4><a name="api:mono_method_return_message_restore">mono_method_return_message_restore</a></h4> +<h4><a name="api:mono_method_same_domain">mono_method_same_domain</a></h4> +<h4><a name="api:mono_method_verify">mono_method_verify</a></h4> + +<h3>Method Signatures</h3> + +<h4><a name="api:mono_method_signature">mono_method_signature</a></h4> +<h4><a name="api:mono_signature_explicit_this">mono_signature_explicit_this</a></h4> +<h4><a name="api:mono_signature_get_call_conv">mono_signature_get_call_conv</a></h4> +<h4><a name="api:mono_signature_get_desc">mono_signature_get_desc</a></h4> +<h4><a name="api:mono_signature_get_param_count">mono_signature_get_param_count</a></h4> +<h4><a name="api:mono_signature_get_params">mono_signature_get_params</a></h4> +<h4><a name="api:mono_signature_get_return_type">mono_signature_get_return_type</a></h4> +<h4><a name="api:mono_signature_hash">mono_signature_hash</a></h4> +<h4><a name="api:mono_signature_is_instance">mono_signature_is_instance</a></h4> +<h4><a name="api:mono_signature_vararg_start">mono_signature_vararg_start</a></h4> + +<h3>Methods Header Operations</h3> + +<h4><a name="api:mono_method_get_header">mono_method_get_header</a></h4> +<h4><a name="api:mono_method_header_get_clauses">mono_method_header_get_clauses</a></h4> +<h4><a name="api:mono_method_header_get_code">mono_method_header_get_code</a></h4> +<h4><a name="api:mono_method_header_get_locals">mono_method_header_get_locals</a></h4> +<h4><a name="api:mono_method_header_get_num_clauses">mono_method_header_get_num_clauses</a></h4> diff --git a/docs/sources/mono-api-object.html b/docs/sources/mono-api-object.html new file mode 100644 index 0000000000..2878a5844b --- /dev/null +++ b/docs/sources/mono-api-object.html @@ -0,0 +1,214 @@ +<h1>Object API</h1> + + <p>The object API deals with all the operations shared by + <a href="#objects">objects</a>, <a href="#valuetypes">value + types</a>, <a href="#arrays">arrays</a> and <a + href="#nullable">nullable types</a>. + + <p>The object API has methods for accessing <a + href="#fields">fields</a>, <a + href="#properties">properties</a>, <a + href="#events">events</a>, <a href="#delegates">delegates</a>. + + <p>There are some advanced uses that are useful to document + here dealing with <a href="#async">AsyncResults</a> and <a + href="#remote">remote fields</a>. + +<h2>Synopsis</h2> + +<div class="header"> +#include <metadata/object.h> + +typedef struct MonoVTable MonoVTable; +typedef struct _MonoThreadsSync MonoThreadsSync; + +typedef struct { + MonoVTable *vtable; + MonoThreadsSync *synchronisation; +} MonoObject; + +typedef struct { + guint32 length; + guint32 lower_bound; +} MonoArrayBounds; + +typedef struct { + MonoObject obj; + /* bounds is NULL for szarrays */ + MonoArrayBounds *bounds; + /* total number of elements of the array */ + guint32 max_length; + /* we use double to ensure proper alignment on platforms that need it */ + double vector [MONO_ZERO_LEN_ARRAY]; +} MonoArray; + +@API_IDX@ +</div> + + <p>MonoObject is the base definition for all managed objects + in the Mono runtime, it represents the <a + href="http://www.mono-project.com/monodoc/T:System.Object">System.Object</a> + managed type. + + <p>All objects that derive from <a + href="http://www.mono-project.com/monodoc/T:System.Object">System.Object</a> + do have this base definition. Derived objects are declared + following the pattern where the parent class is the first + field of a structure definition, for example: + + <div class="code"> + typedef struct { + MonoObject parent; + int my_new_field; + } MyNewObject + </div> + +<a name="objects"></a> +<h2>Core Object Methods</h2> + +<h4><a name="api:mono_object_new">mono_object_new</a></h4> + + <p>For example, if you wanted to create an object of type + System.Version, you would use a piece of code like this: + + <div class="code"> +MonoClass *version_class; +MonoObject *result; + +/* Get the class from mscorlib */ +version_class = mono_class_from_name (mono_get_corlib (), + "System", "Version"); + +/* Create an object of that class */ +result = mono_object_new (mono_domain_get (), version_class); + </div> + +<h4><a name="api:mono_object_new_alloc_specific">mono_object_new_alloc_specific</a></h4> +<h4><a name="api:mono_object_new_fast">mono_object_new_fast</a></h4> +<h4><a name="api:mono_object_new_from_token">mono_object_new_from_token</a></h4> +<h4><a name="api:mono_object_new_specific">mono_object_new_specific</a></h4> +<h4><a name="api:mono_object_clone">mono_object_clone</a></h4> +<h4><a name="api:mono_object_get_class">mono_object_get_class</a></h4> +<h4><a name="api:mono_object_get_domain">mono_object_get_domain</a></h4> +<h4><a name="api:mono_object_get_virtual_method">mono_object_get_virtual_method</a></h4> +<h4><a name="api:mono_object_isinst_mbyref">mono_object_isinst_mbyref</a></h4> +<h4><a name="api:mono_object_isinst">mono_object_isinst</a></h4> +<h4><a name="api:mono_object_register_finalizer">mono_object_register_finalizer</a></h4> +<h4><a name="api:mono_object_unbox">mono_object_unbox</a></h4> +<h4><a name="api:mono_object_castclass_mbyref">mono_object_castclass_mbyref</a></h4> +<h4><a name="api:mono_object_is_alive">mono_object_is_alive</a></h4> +<h4><a name="api:mono_object_get_size">mono_object_get_size</a></h4> + +<a name="valuetypes"></a> +<h2>Value Types</h2> + +<h4><a name="api:mono_value_box">mono_value_box</a></h4> +<h4><a name="api:mono_value_copy">mono_value_copy</a></h4> +<h4><a name="api:mono_value_copy_array">mono_value_copy_array</a></h4> + +<a name="arrays"></a> +<h2>Array Methods</h2> + + <p>Use the <tt>mono_array_new_*</tt> methods to create arrays + of a given type. + + <p>For example, the following code creates an array with two + elements of type <tt>System.Byte</tt>, and sets the values + 0xca and 0xfe on it: + + <pre class="code"> + + MonoArray *CreateByteArray (MonoDomain *domain) + { + MonoArray *data; + + data = mono_array_new (domain, mono_get_byte_class (), 2); + mono_array_set (data, guint8, 0, 0xca); + mono_array_set (data, guint8, 0, 0xfe); + + return data; + } + + </pre> + +<h3>Creating Arrays</h3> + +<h4><a name="api:mono_array_new">mono_array_new</a></h4> +<h4><a name="api:mono_array_new_full">mono_array_new_full</a></h4> +<h4><a name="api:mono_array_new_specific">mono_array_new_specific</a></h4> +<h4><a name="api:mono_array_class_get">mono_array_class_get</a></h4> +<h4><a name="api:mono_array_clone_in_domain">mono_array_clone_in_domain</a></h4> +<h4><a name="api:mono_array_clone">mono_array_clone</a></h4> +<h4><a name="api:mono_array_full_copy">mono_array_full_copy</a></h4> +<h4><a name="api:mono_array_to_lparray">mono_array_to_lparray</a></h4> +<h4><a name="api:mono_array_to_savearray">mono_array_to_savearray</a></h4> +<h4><a name="api:mono_dup_array_type">mono_dup_array_type</a></h4> + +<h3>Using Arrays</h3> + +<h4><a name="api:mono_array_set">mono_array_set</a></h4> +<h4><a name="api:mono_array_setref">mono_array_setref</a></h4> +<h4><a name="api:mono_array_length">mono_array_length</a></h4> +<h4><a name="api:mono_array_addr">mono_array_addr</a></h4> +<h4><a name="api:mono_array_addr_with_size">mono_array_addr_with_size</a></h4> +<h4><a name="api:mono_array_get">mono_array_get</a></h4> +<h4><a name="api:mono_array_element_size">mono_array_element_size</a></h4> + +<a name="fields"></a> +<h2>Fields</h2> + +<h4><a name="api:mono_field_from_token">mono_field_from_token</a></h4> +<h4><a name="api:mono_field_get_flags">mono_field_get_flags</a></h4> +<h4><a name="api:mono_field_get_name">mono_field_get_name</a></h4> +<h4><a name="api:mono_field_get_parent">mono_field_get_parent</a></h4> +<h4><a name="api:mono_field_get_type">mono_field_get_type</a></h4> +<h4><a name="api:mono_field_get_value">mono_field_get_value</a></h4> +<h4><a name="api:mono_field_get_value_object">mono_field_get_value_object</a></h4> +<h4><a name="api:mono_field_set_value">mono_field_set_value</a></h4> +<h4><a name="api:mono_field_static_get_value">mono_field_static_get_value</a></h4> +<h4><a name="api:mono_field_static_set_value">mono_field_static_set_value</a></h4> + +<a name="properties"></a> +<h2>Properties</h2> + +<h4><a name="api:mono_property_get_flags">mono_property_get_flags</a></h4> +<h4><a name="api:mono_property_get_get_method">mono_property_get_get_method</a></h4> +<h4><a name="api:mono_property_get_name">mono_property_get_name</a></h4> +<h4><a name="api:mono_property_get_parent">mono_property_get_parent</a></h4> +<h4><a name="api:mono_property_get_set_method">mono_property_get_set_method</a></h4> +<h4><a name="api:mono_property_get_value">mono_property_get_value</a></h4> +<h4><a name="api:mono_property_set_value">mono_property_set_value</a></h4> + +<a name="events"></a> +<h2>Events</h2> + +<h4><a name="api:mono_event_get_add_method">mono_event_get_add_method</a></h4> +<h4><a name="api:mono_event_get_flags">mono_event_get_flags</a></h4> +<h4><a name="api:mono_event_get_name">mono_event_get_name</a></h4> +<h4><a name="api:mono_event_get_parent">mono_event_get_parent</a></h4> +<h4><a name="api:mono_event_get_raise_method">mono_event_get_raise_method</a></h4> +<h4><a name="api:mono_event_get_remove_method">mono_event_get_remove_method</a></h4> + +<a name="delegates"></a> +<h2>Delegates</h2> +<h4><a name="api:mono_delegate_ctor">mono_delegate_ctor</a></h4> + +<a name="async"></a> +<h2>AsyncResults</h2> +<h4><a name="api:mono_async_result_new">mono_async_result_new</a></h4> + +<a name="remote"></a> +<h2>Remote Fields</h2> +<h4><a name="api:mono_load_remote_field">mono_load_remote_field</a></h4> +<h4><a name="api:mono_load_remote_field_new">mono_load_remote_field_new</a></h4> +<h4><a name="api:mono_store_remote_field">mono_store_remote_field</a></h4> +<h4><a name="api:mono_store_remote_field_new">mono_store_remote_field_new</a></h4> + +<a name="nullable"></a> +<h2>Nullable Objects</h2> + + <p>These methods are used to manipulate objects of type + System.Nullable<T> + +<h4><a name="api:mono_nullable_box">mono_nullable_box</a></h4> +<h4><a name="api:mono_nullable_init">mono_nullable_init</a></h4> diff --git a/docs/sources/mono-api-profiler.html b/docs/sources/mono-api-profiler.html new file mode 100644 index 0000000000..fb51ef2e0f --- /dev/null +++ b/docs/sources/mono-api-profiler.html @@ -0,0 +1,73 @@ +<h1>Profiling Interface</h1> + +<h3>Profiler Operation</h3> + + <p>The following methods can be used by dynamic profiler + methods to monitor different aspects of the program. + + <p>A custom profiler will have one public method defined in + the shared library which is the entry point that Mono calls at + startup, it has the following signature: + + <pre> + void mono_profiler_startup (const char *desc) + </pre> + + <p>Where "desc" is the set of arguments that were passed from + the command line. This routine will call + <tt>mono_profiler_install</tt> to activate the profiler and + will install one or more filters (one of the various + <tt>mono_profiler_install_</tt> functions). + + <p>In addition, a profiler developer will typically call + <tt>mono_profiler_set_events</tt> to register which kinds of + traces should be enabled, these can be an OR-ed combination of + the following: + + <pre> + MONO_PROFILE_NONE + MONO_PROFILE_APPDOMAIN_EVENTS + MONO_PROFILE_ASSEMBLY_EVENTS + MONO_PROFILE_MODULE_EVENTS + MONO_PROFILE_CLASS_EVENTS + MONO_PROFILE_JIT_COMPILATION + MONO_PROFILE_INLINING + MONO_PROFILE_EXCEPTIONS + MONO_PROFILE_ALLOCATIONS + MONO_PROFILE_GC + MONO_PROFILE_THREADS + MONO_PROFILE_REMOTING + MONO_PROFILE_TRANSITIONS + MONO_PROFILE_ENTER_LEAVE + MONO_PROFILE_COVERAGE + MONO_PROFILE_INS_COVERAGE + MONO_PROFILE_STATISTICAL + </pre> + + <p>Developers can change the set of monitored events at + runtime by calling <tt>mono_profiler_set_events</tt>. + +<h4><a name="api:mono_profiler_install">mono_profiler_install</a></h4> +<h4><a name="api:mono_profiler_install_allocation">mono_profiler_install_allocation</a></h4> +<h4><a name="api:mono_profiler_install_appdomain">mono_profiler_install_appdomain</a></h4> +<h4><a name="api:mono_profiler_install_assembly">mono_profiler_install_assembly</a></h4> +<h4><a name="api:mono_profiler_install_class">mono_profiler_install_class</a></h4> +<h4><a name="api:mono_profiler_install_coverage_filter">mono_profiler_install_coverage_filter</a></h4> +<h4><a name="api:mono_profiler_install_enter_leave">mono_profiler_install_enter_leave</a></h4> +<h4><a name="api:mono_profiler_install_jit_compile">mono_profiler_install_jit_compile</a></h4> +<h4><a name="api:mono_profiler_install_module">mono_profiler_install_module</a></h4> +<h4><a name="api:mono_profiler_install_thread">mono_profiler_install_thread</a></h4> +<h4><a name="api:mono_profiler_install_transition">mono_profiler_install_transition</a></h4> +<h4><a name="api:mono_profiler_install_gc">mono_profiler_install_gc</a></h4> +<h4><a name="api:mono_profiler_install_statistical">mono_profiler_install_statistical</a></h4> +<h4><a name="api:mono_profiler_set_events">mono_profiler_set_events</a></h4> +<h4><a name="api:mono_profiler_get_events">mono_profiler_get_events</a></h4> + +<h3>Coverage</h3> + + <p>To support profiling modules that need to do code coverage + analysis, the following routines is provided: + +<h4><a name="api:mono_profiler_coverage_get">mono_profiler_coverage_get</a></h4> + + diff --git a/docs/sources/mono-api-reflection.html b/docs/sources/mono-api-reflection.html new file mode 100644 index 0000000000..896448e4d0 --- /dev/null +++ b/docs/sources/mono-api-reflection.html @@ -0,0 +1,46 @@ +<h4><a name="api:mono_reflection_bind_generic_method_parameters">mono_reflection_bind_generic_method_parameters</a></h4> +<h4><a name="api:mono_reflection_bind_generic_parameters">mono_reflection_bind_generic_parameters</a></h4> +<h4><a name="api:mono_reflection_create_dynamic_method">mono_reflection_create_dynamic_method</a></h4> +<h4><a name="api:mono_reflection_create_generic_class">mono_reflection_create_generic_class</a></h4> +<h4><a name="api:mono_reflection_create_internal_class">mono_reflection_create_internal_class</a></h4> +<h4><a name="api:mono_reflection_create_runtime_class">mono_reflection_create_runtime_class</a></h4> +<h4><a name="api:mono_reflection_event_builder_get_event_info">mono_reflection_event_builder_get_event_info</a></h4> +<h4><a name="api:mono_reflection_generic_inst_initialize">mono_reflection_generic_inst_initialize</a></h4> +<h4><a name="api:mono_reflection_get_custom_attrs_blob">mono_reflection_get_custom_attrs_blob</a></h4> +<h4><a name="api:mono_reflection_get_custom_attrs">mono_reflection_get_custom_attrs</a></h4> +<h4><a name="api:mono_custom_attrs_get_attr">mono_custom_attrs_get_attr</a></h4> +<h4><a name="api:mono_reflection_get_token">mono_reflection_get_token</a></h4> +<h4><a name="api:mono_reflection_get_type">mono_reflection_get_type</a></h4> +<h4><a name="api:mono_reflection_initialize_generic_parameter">mono_reflection_initialize_generic_parameter</a></h4> +<h4><a name="api:mono_reflection_lookup_dynamic_token">mono_reflection_lookup_dynamic_token</a></h4> +<h4><a name="api:mono_reflection_marshal_from_marshal_spec">mono_reflection_marshal_from_marshal_spec</a></h4> +<h4><a name="api:mono_reflection_parse_type">mono_reflection_parse_type</a></h4> +<h4><a name="api:mono_reflection_setup_generic_class">mono_reflection_setup_generic_class</a></h4> +<h4><a name="api:mono_reflection_setup_internal_class">mono_reflection_setup_internal_class</a></h4> +<h4><a name="api:mono_reflection_sighelper_get_signature_field">mono_reflection_sighelper_get_signature_field</a></h4> +<h4><a name="api:mono_reflection_sighelper_get_signature_local">mono_reflection_sighelper_get_signature_local</a></h4> +<h4><a name="api:mono_reflection_type_from_name">mono_reflection_type_from_name</a></h4> +<h4><a name="api:mono_reflection_generic_class_initialize">mono_reflection_generic_class_initialize</a></h4> +<h4><a name="api:mono_reflection_get_custom_attrs_info">mono_reflection_get_custom_attrs_info</a></h4> + +<h4><a name="api:mono_custom_attrs_construct">mono_custom_attrs_construct</a></h4> +<h4><a name="api:mono_custom_attrs_free">mono_custom_attrs_free</a></h4> +<h4><a name="api:mono_custom_attrs_from_assembly">mono_custom_attrs_from_assembly</a></h4> +<h4><a name="api:mono_custom_attrs_from_class">mono_custom_attrs_from_class</a></h4> +<h4><a name="api:mono_custom_attrs_from_event">mono_custom_attrs_from_event</a></h4> +<h4><a name="api:mono_custom_attrs_from_field">mono_custom_attrs_from_field</a></h4> +<h4><a name="api:mono_custom_attrs_from_index">mono_custom_attrs_from_index</a></h4> +<h4><a name="api:mono_custom_attrs_from_method">mono_custom_attrs_from_method</a></h4> +<h4><a name="api:mono_custom_attrs_from_param">mono_custom_attrs_from_param</a></h4> +<h4><a name="api:mono_custom_attrs_from_property">mono_custom_attrs_from_property</a></h4> +<h4><a name="api:mono_custom_attrs_has_attr">mono_custom_attrs_has_attr</a></h4> + +<h4><a name="api:mono_module_file_get_object">mono_module_file_get_object</a></h4> +<h4><a name="api:mono_module_get_object">mono_module_get_object</a></h4> +<h4><a name="api:mono_method_body_get_object">mono_method_body_get_object</a></h4> +<h4><a name="api:mono_event_get_object">mono_event_get_object</a></h4> +<h4><a name="api:mono_assembly_get_object">mono_assembly_get_object</a></h4> +<h4><a name="api:mono_param_get_objects">mono_param_get_objects</a></h4> +<h4><a name="api:mono_field_get_object">mono_field_get_object</a></h4> +<h4><a name="api:mono_property_get_object">mono_property_get_object</a></h4> +<h4><a name="api:mono_type_get_object">mono_type_get_object</a></h4> diff --git a/docs/sources/mono-api-security.html b/docs/sources/mono-api-security.html new file mode 100644 index 0000000000..b301dea713 --- /dev/null +++ b/docs/sources/mono-api-security.html @@ -0,0 +1,20 @@ +<h3>Security Manager</h3> + +<h4><a name="api:mono_is_security_manager_active">mono_is_security_manager_active</a></h4> +<h4><a name="api:mono_security_manager_get_methods">mono_security_manager_get_methods</a></h4> +<h4><a name="api:mono_activate_security_manager">mono_activate_security_manager</a></h4> +<h4><a name="api:mono_is_ecma_key">mono_is_ecma_key</a></h4> +<h4><a name="api:mono_get_context_capture_method">mono_get_context_capture_method</a></h4> + +<h3>Declarative Security</h3> + +<h4><a name="api:mono_declsec_flags_from_assembly">mono_declsec_flags_from_assembly</a></h4> +<h4><a name="api:mono_declsec_flags_from_class">mono_declsec_flags_from_class</a></h4> +<h4><a name="api:mono_declsec_flags_from_method">mono_declsec_flags_from_method</a></h4> +<h4><a name="api:mono_declsec_get_assembly_action">mono_declsec_get_assembly_action</a></h4> +<h4><a name="api:mono_declsec_get_class_action">mono_declsec_get_class_action</a></h4> +<h4><a name="api:mono_declsec_get_demands">mono_declsec_get_demands</a></h4> +<h4><a name="api:mono_declsec_get_inheritdemands_class">mono_declsec_get_inheritdemands_class</a></h4> +<h4><a name="api:mono_declsec_get_inheritdemands_method">mono_declsec_get_inheritdemands_method</a></h4> +<h4><a name="api:mono_declsec_get_linkdemands">mono_declsec_get_linkdemands</a></h4> +<h4><a name="api:mono_declsec_get_method_action">mono_declsec_get_method_action</a></h4> diff --git a/docs/sources/mono-api-string.html b/docs/sources/mono-api-string.html new file mode 100644 index 0000000000..ce1ff3d4f7 --- /dev/null +++ b/docs/sources/mono-api-string.html @@ -0,0 +1,89 @@ +<h2>Strings</h2> + + <p>Strings representation inside the Mono runtime. + +<h3>Synopsis</h3> + + <div class="header"> +#include <metadata/object.h> + +typedef struct { + MonoObject object; + gint32 length; + gunichar2 chars [0]; +} MonoString; + +@API_IDX@ + </div> + + <p>All of the operations on strings are done on pointers to + MonoString objects, like this: + + <div class="code"> + MonoString *hello = mono_string_new (mono_domain_get (), "hello, world"); + </div> + + <p>Strings are bound to a particular application domain, which + is why it is necessary to pass a MonoDomain argument as the + first parameter to all the constructor functions. + + <p>Typically, you want to create the strings on the current + application domain, so a call to <tt>mono_domain_get()</tt> is + sufficient. + +<h3>Constructors</h3> + +<h4><a name="api:mono_string_new">mono_string_new</a></h4> +<h4><a name="api:mono_string_new_len">mono_string_new_len</a></h4> +<h4><a name="api:mono_string_new_size">mono_string_new_size</a></h4> +<h4><a name="api:mono_string_new_utf16">mono_string_new_utf16</a></h4> +<h4><a name="api:mono_string_from_utf16">mono_string_from_utf16</a></h4> + +<h3>Conversions</h3> + +<h4><a name="api:mono_string_to_byvalstr">mono_string_to_byvalstr</a></h4> +<h4><a name="api:mono_string_to_byvalwstr">mono_string_to_byvalwstr</a></h4> +<h4><a name="api:mono_string_to_utf16">mono_string_to_utf16</a></h4> +<h4><a name="api:mono_string_to_utf8">mono_string_to_utf8</a></h4> +<h4><a name="api:mono_string_utf16_to_builder">mono_string_utf16_to_builder</a></h4> +<h4><a name="api:mono_string_utf8_to_builder">mono_string_utf8_to_builder</a></h4> + +<h3>Methods</h3> + +<h4><a name="api:mono_string_equal">mono_string_equal</a></h4> +<h4><a name="api:mono_string_hash">mono_string_hash</a></h4> +<h4><a name="api:mono_string_intern">mono_string_intern</a></h4> +<h4><a name="api:mono_string_is_interned">mono_string_is_interned</a></h4> +<h4><a name="api:mono_string_new_wrapper">mono_string_new_wrapper</a></h4> +<h4><a name="api:mono_string_chars">mono_string_chars</a></h4> +<h4><a name="api:mono_string_length">mono_string_length</a></h4> + + +<h3>String Builders</h3> + + <p>These routines are used to work with the managed types + <tt>System.Text.StringBuilder</tt>. + +<h4><a name="api:mono_string_builder_to_utf16">mono_string_builder_to_utf16</a></h4> +<h4><a name="api:mono_string_builder_to_utf8">mono_string_builder_to_utf8</a></h4> + +<h3>Other Encodings</h3> + + <p>These routines are used when coping with strings that come + from Mono's environment, and might be encoded in one or more + of the external encodings. + + <p>For example, some file systems might historically contain a + mix of file names with both old and new encodings, typically + UTF8 for new files, and the old files would be encoded in an 8 + bit character set (ISO-8859-1 for example). + + <p>These routines try a number of encodings, those specified + in the <tt>MONO_ENCODINGS</tt> environment variable and return + unicode strings that can be used internally. + + <p>See the mono(1) man page for more details. + +<h4><a name="api:mono_unicode_from_external">mono_unicode_from_external</a></h4> +<h4><a name="api:mono_unicode_to_external">mono_unicode_to_external</a></h4> +<h4><a name="api:mono_utf8_from_external">mono_utf8_from_external</a></h4> diff --git a/docs/sources/mono-api-threads.html b/docs/sources/mono-api-threads.html new file mode 100644 index 0000000000..3696f37885 --- /dev/null +++ b/docs/sources/mono-api-threads.html @@ -0,0 +1,46 @@ +<h2>Working with threads</h2> + +<h3>Thread API</h3> +<h4><a name="api:mono_thread_abort_all_other_threads">mono_thread_abort_all_other_threads</a></h4> +<h4><a name="api:mono_thread_attach">mono_thread_attach</a></h4> +<h4><a name="api:mono_thread_create">mono_thread_create</a></h4> +<h4><a name="api:mono_thread_current">mono_thread_current</a></h4> +<h4><a name="api:mono_thread_detach">mono_thread_detach</a></h4> +<h4><a name="api:mono_thread_exit">mono_thread_exit</a></h4> +<h4><a name="api:mono_thread_force_interruption_checkpoint">mono_thread_force_interruption_checkpoint</a></h4> +<h4><a name="api:mono_thread_get_abort_signal">mono_thread_get_abort_signal</a></h4> +<h4><a name="api:mono_thread_get_pending_exception">mono_thread_get_pending_exception</a></h4> +<h4><a name="api:mono_thread_interruption_checkpoint">mono_thread_interruption_checkpoint</a></h4> +<h4><a name="api:mono_thread_interruption_requested">mono_thread_interruption_requested</a></h4> +<h4><a name="api:mono_thread_interruption_request_flag">mono_thread_interruption_request_flag</a></h4> +<h4><a name="api:mono_thread_manage">mono_thread_manage</a></h4> +<h4><a name="api:mono_thread_new_init">mono_thread_new_init</a></h4> +<h4><a name="api:mono_thread_pop_appdomain_ref">mono_thread_pop_appdomain_ref</a></h4> +<h4><a name="api:mono_thread_push_appdomain_ref">mono_thread_push_appdomain_ref</a></h4> +<h4><a name="api:mono_thread_request_interruption">mono_thread_request_interruption</a></h4> +<h4><a name="api:mono_threads_abort_appdomain_threads">mono_threads_abort_appdomain_threads</a></h4> +<h4><a name="api:mono_threads_get_default_stacksize">mono_threads_get_default_stacksize</a></h4> +<h4><a name="api:mono_threads_install_cleanup">mono_threads_install_cleanup</a></h4> +<h4><a name="api:mono_threads_set_default_stacksize">mono_threads_set_default_stacksize</a></h4> +<h4><a name="api:mono_thread_stop">mono_thread_stop</a></h4> + +<h4><a name="api:mono_thread_get_main">mono_thread_get_main</a></h4> +<h4><a name="api:mono_thread_set_main">mono_thread_set_main</a></h4> +<h4><a name="api:mono_thread_get_tls_key">mono_thread_get_tls_key</a></h4> +<h4><a name="api:mono_pthread_key_for_tls">mono_pthread_key_for_tls</a></h4> + + +<h3>Thread Pool API</h3> +<h4><a name="api:mono_thread_pool_add">mono_thread_pool_add</a></h4> +<h4><a name="api:mono_thread_pool_finish">mono_thread_pool_finish</a></h4> + +<h3>Monitors</h3> + +<h4><a name="api:mono_monitor_enter">mono_monitor_enter</a></h4> +<h4><a name="api:mono_monitor_exit">mono_monitor_exit</a></h4> +<h4><a name="api:mono_monitor_try_enter">mono_monitor_try_enter</a></h4> + +<h3>Mono VM development</h3> +<h4><a name="api:mono_threads_clear_cached_culture">mono_threads_clear_cached_culture</a></h4> +<h4><a name="api:mono_thread_suspend_all_other_threads">mono_thread_suspend_all_other_threads</a></h4> +<h4><a name="api:mono_thread_has_appdomain_ref">mono_thread_has_appdomain_ref</a></h4> diff --git a/docs/sources/mono-api-trace.html b/docs/sources/mono-api-trace.html new file mode 100644 index 0000000000..2783263b83 --- /dev/null +++ b/docs/sources/mono-api-trace.html @@ -0,0 +1,14 @@ +<h2>Tracing</h2> + +<h4><a name="api:mono_trace_cleanup">mono_trace_cleanup</a></h4> +<h4><a name="api:mono_trace">mono_trace</a></h4> +<h4><a name="api:mono_trace_parse_options">mono_trace_parse_options</a></h4> +<h4><a name="api:mono_trace_pop">mono_trace_pop</a></h4> +<h4><a name="api:mono_trace_push">mono_trace_push</a></h4> +<h4><a name="api:mono_trace_set_assembly">mono_trace_set_assembly</a></h4> +<h4><a name="api:mono_trace_set_level">mono_trace_set_level</a></h4> +<h4><a name="api:mono_trace_set_level_string">mono_trace_set_level_string</a></h4> +<h4><a name="api:mono_trace_set_mask">mono_trace_set_mask</a></h4> +<h4><a name="api:mono_trace_set_mask_string">mono_trace_set_mask_string</a></h4> +<h4><a name="api:mono_tracev">mono_tracev</a></h4> +<h4><a name="api:mono_trace_is_traced">mono_trace_is_traced</a></h4> diff --git a/docs/sources/mono-api-type.html b/docs/sources/mono-api-type.html new file mode 100644 index 0000000000..91cb9cce86 --- /dev/null +++ b/docs/sources/mono-api-type.html @@ -0,0 +1,22 @@ +<h4><a name="api:mono_type_create_from_typespec_full">mono_type_create_from_typespec_full</a></h4> +<h4><a name="api:mono_type_create_from_typespec">mono_type_create_from_typespec</a></h4> +<h4><a name="api:mono_type_full_name">mono_type_full_name</a></h4> +<h4><a name="api:mono_type_get_array_type">mono_type_get_array_type</a></h4> +<h4><a name="api:mono_type_get_class">mono_type_get_class</a></h4> +<h4><a name="api:mono_type_get_desc">mono_type_get_desc</a></h4> +<h4><a name="api:mono_type_get_full_name">mono_type_get_full_name</a></h4> +<h4><a name="api:mono_type_get_modifiers">mono_type_get_modifiers</a></h4> +<h4><a name="api:mono_type_get_name">mono_type_get_name</a></h4> +<h4><a name="api:mono_type_get_signature">mono_type_get_signature</a></h4> +<h4><a name="api:mono_type_get_type">mono_type_get_type</a></h4> +<h4><a name="api:mono_type_get_underlying_type">mono_type_get_underlying_type</a></h4> +<h4><a name="api:mono_type_initialization_init">mono_type_initialization_init</a></h4> +<h4><a name="api:mono_type_is_byref">mono_type_is_byref</a></h4> +<h4><a name="api:mono_type_native_stack_size">mono_type_native_stack_size</a></h4> +<h4><a name="api:mono_type_size">mono_type_size</a></h4> +<h4><a name="api:mono_type_stack_size">mono_type_stack_size</a></h4> +<h4><a name="api:mono_type_to_ldind">mono_type_to_ldind</a></h4> +<h4><a name="api:mono_type_to_stind">mono_type_to_stind</a></h4> +<h4><a name="api:mono_type_to_unmanaged">mono_type_to_unmanaged</a></h4> +<h4><a name="api:mono_type_get_name_full">mono_type_get_name_full</a></h4> +<h4><a name="api:mono_type_generic_inst_is_valuetype">mono_type_generic_inst_is_valuetype</a></h4>
\ No newline at end of file diff --git a/docs/sources/mono-api-types.html b/docs/sources/mono-api-types.html new file mode 100644 index 0000000000..819f26ba28 --- /dev/null +++ b/docs/sources/mono-api-types.html @@ -0,0 +1,27 @@ +<h3>Common core types</h3> + + <p>These are accesor methods to retrieve the <tt>MonoClass + *</tt> handle for the various built-in CLI types. + +<h4><a name="api:mono_get_object_class">mono_get_object_class</a></h4> +<h4><a name="api:mono_get_int16_class">mono_get_int16_class</a></h4> +<h4><a name="api:mono_get_int32_class">mono_get_int32_class</a></h4> +<h4><a name="api:mono_get_int64_class">mono_get_int64_class</a></h4> +<h4><a name="api:mono_get_double_class">mono_get_double_class</a></h4> +<h4><a name="api:mono_get_enum_class">mono_get_enum_class</a></h4> +<h4><a name="api:mono_get_intptr_class">mono_get_intptr_class</a></h4> +<h4><a name="api:mono_get_sbyte_class">mono_get_sbyte_class</a></h4> +<h4><a name="api:mono_get_single_class">mono_get_single_class</a></h4> +<h4><a name="api:mono_get_string_class">mono_get_string_class</a></h4> +<h4><a name="api:mono_get_thread_class">mono_get_thread_class</a></h4> +<h4><a name="api:mono_get_uint16_class">mono_get_uint16_class</a></h4> +<h4><a name="api:mono_get_uint32_class">mono_get_uint32_class</a></h4> +<h4><a name="api:mono_get_uint64_class">mono_get_uint64_class</a></h4> +<h4><a name="api:mono_get_uintptr_class">mono_get_uintptr_class</a></h4> +<h4><a name="api:mono_get_void_class">mono_get_void_class</a></h4> +<h4><a name="api:mono_get_array_class">mono_get_array_class</a></h4> +<h4><a name="api:mono_get_boolean_class">mono_get_boolean_class</a></h4> +<h4><a name="api:mono_get_byte_class">mono_get_byte_class</a></h4> +<h4><a name="api:mono_get_char_class">mono_get_char_class</a></h4> + +<h4><a name="api:mono_get_dbnull_object">mono_get_dbnull_object</a></h4> diff --git a/docs/sources/mono-api-unsorted.html b/docs/sources/mono-api-unsorted.html new file mode 100644 index 0000000000..42e7fe0647 --- /dev/null +++ b/docs/sources/mono-api-unsorted.html @@ -0,0 +1,60 @@ + + +<h4><a name="api:mini_compile_generic_method">mini_compile_generic_method</a></h4> +<h4><a name="api:mono_alloc_special_static_data">mono_alloc_special_static_data</a></h4> +<h4><a name="api:mono_bounded_array_class_get">mono_bounded_array_class_get</a></h4> +<h4><a name="api:mono_check_corlib_version">mono_check_corlib_version</a></h4> +<h4><a name="api:mono_compile_method">mono_compile_method</a></h4> +<h4><a name="api:mono_config_for_assembly">mono_config_for_assembly</a></h4> +<h4><a name="api:mono_create_icall_signature">mono_create_icall_signature</a></h4> +<h4><a name="api:mono_create_jit_trampoline">mono_create_jit_trampoline</a></h4> +<h4><a name="api:mono_create_jump_table">mono_create_jump_table</a></h4> +<h4><a name="api:mono_create_jump_trampoline">mono_create_jump_trampoline</a></h4> +<h4><a name="api:mono_dllmap_insert">mono_dllmap_insert</a></h4> +<h4><a name="api:mono_environment_exitcode_get">mono_environment_exitcode_get</a></h4> +<h4><a name="api:mono_environment_exitcode_set">mono_environment_exitcode_set</a></h4> +<h4><a name="api:mono_find_method_by_name">mono_find_method_by_name</a></h4> +<h4><a name="api:mono_free_method">mono_free_method</a></h4> +<h4><a name="api:mono_free_verify_list">mono_free_verify_list</a></h4> +<h4><a name="api:mono_get_config_dir">mono_get_config_dir</a></h4> +<h4><a name="api:mono_get_constant_value_from_blob">mono_get_constant_value_from_blob</a></h4> +<h4><a name="api:mono_get_corlib">mono_get_corlib</a></h4> +<h4><a name="api:mono_get_delegate_invoke">mono_get_delegate_invoke</a></h4> +<h4><a name="api:mono_get_framework_version">mono_get_framework_version</a></h4> +<h4><a name="api:mono_get_method_full">mono_get_method_full</a></h4> +<h4><a name="api:mono_get_method">mono_get_method</a></h4> +<h4><a name="api:mono_get_root_domain">mono_get_root_domain</a></h4> +<h4><a name="api:mono_get_runtime_version">mono_get_runtime_version</a></h4> +<h4><a name="api:mono_get_special_static_data">mono_get_special_static_data</a></h4> +<h4><a name="api:mono_init_from_assembly">mono_init_from_assembly</a></h4> +<h4><a name="api:mono_init">mono_init</a></h4> +<h4><a name="api:mono_init_version">mono_init_version</a></h4> +<h4><a name="api:mono_invoke_delegate">mono_invoke_delegate</a></h4> +<h4><a name="api:mono_jit_exec">mono_jit_exec</a></h4> +<h4><a name="api:mono_lookup_internal_call">mono_lookup_internal_call</a></h4> +<h4><a name="api:mono_lookup_pinvoke_call">mono_lookup_pinvoke_call</a></h4> +<h4><a name="api:mono_main">mono_main</a></h4> +<h4><a name="api:mono_message_init">mono_message_init</a></h4> +<h4><a name="api:mono_message_invoke">mono_message_invoke</a></h4> +<h4><a name="api:mono_parse_default_optimizations">mono_parse_default_optimizations</a></h4> +<h4><a name="api:mono_perform_abc_removal">mono_perform_abc_removal</a></h4> +<h4><a name="api:mono_ptr_class_get">mono_ptr_class_get</a></h4> +<h4><a name="api:mono_register_bundled_assemblies">mono_register_bundled_assemblies</a></h4> +<h4><a name="api:mono_release_type_locks">mono_release_type_locks</a></h4> +<h4><a name="api:mono_remote_class">mono_remote_class</a></h4> +<h4><a name="api:mono_remote_class_vtable">mono_remote_class_vtable</a></h4> +<h4><a name="api:mono_runtime_class_init">mono_runtime_class_init</a></h4> +<h4><a name="api:mono_runtime_cleanup">mono_runtime_cleanup</a></h4> +<h4><a name="api:mono_runtime_free_method">mono_runtime_free_method</a></h4> +<h4><a name="api:mono_runtime_get_main_args">mono_runtime_get_main_args</a></h4> +<h4><a name="api:mono_runtime_init">mono_runtime_init</a></h4> +<h4><a name="api:mono_runtime_is_shutting_down">mono_runtime_is_shutting_down</a></h4> +<h4><a name="api:mono_runtime_object_init">mono_runtime_object_init</a></h4> +<h4><a name="api:mono_runtime_quit">mono_runtime_quit</a></h4> +<h4><a name="api:mono_runtime_run_main">mono_runtime_run_main</a></h4> +<h4><a name="api:mono_table_info_get_rows">mono_table_info_get_rows</a></h4> +<h4><a name="api:mono_upgrade_remote_class">mono_upgrade_remote_class</a></h4> +<h4><a name="api:mono_upgrade_remote_class_wrapper">mono_upgrade_remote_class_wrapper</a></h4> +<h4><a name="api:mono_verify_corlib">mono_verify_corlib</a></h4> +<h4><a name="api:mono_vtable_get_static_field_data">mono_vtable_get_static_field_data</a></h4> +<h4><a name="api:mono_wait_handle_new">mono_wait_handle_new</a></h4> diff --git a/docs/sources/mono-api-utils.html b/docs/sources/mono-api-utils.html new file mode 100644 index 0000000000..8b013eb0d5 --- /dev/null +++ b/docs/sources/mono-api-utils.html @@ -0,0 +1,140 @@ +<h2>Utility Methods</h2> + +<h3>Bitsets</h3> + + <p>MonoBitsets are a set of routines used to manipulate sets + of bits. + +<h4><a name="api:mono_bitset_alloc_size">mono_bitset_alloc_size</a></h4> +<h4><a name="api:mono_bitset_clear">mono_bitset_clear</a></h4> +<h4><a name="api:mono_bitset_clear_all">mono_bitset_clear_all</a></h4> +<h4><a name="api:mono_bitset_clone">mono_bitset_clone</a></h4> +<h4><a name="api:mono_bitset_copyto">mono_bitset_copyto</a></h4> +<h4><a name="api:mono_bitset_count">mono_bitset_count</a></h4> +<h4><a name="api:mono_bitset_equal">mono_bitset_equal</a></h4> +<h4><a name="api:mono_bitset_find_first">mono_bitset_find_first</a></h4> +<h4><a name="api:mono_bitset_find_last">mono_bitset_find_last</a></h4> +<h4><a name="api:mono_bitset_find_start">mono_bitset_find_start</a></h4> +<h4><a name="api:mono_bitset_foreach">mono_bitset_foreach</a></h4> +<h4><a name="api:mono_bitset_free">mono_bitset_free</a></h4> +<h4><a name="api:mono_bitset_intersection">mono_bitset_intersection</a></h4> +<h4><a name="api:mono_bitset_invert">mono_bitset_invert</a></h4> +<h4><a name="api:mono_bitset_mem_new">mono_bitset_mem_new</a></h4> +<h4><a name="api:mono_bitset_new">mono_bitset_new</a></h4> +<h4><a name="api:mono_bitset_set">mono_bitset_set</a></h4> +<h4><a name="api:mono_bitset_set_all">mono_bitset_set_all</a></h4> +<h4><a name="api:mono_bitset_size">mono_bitset_size</a></h4> +<h4><a name="api:mono_bitset_sub">mono_bitset_sub</a></h4> +<h4><a name="api:mono_bitset_test">mono_bitset_test</a></h4> +<h4><a name="api:mono_bitset_test_bulk">mono_bitset_test_bulk</a></h4> +<h4><a name="api:mono_bitset_union">mono_bitset_union</a></h4> +<h4><a name="api:mono_bitset_find_first_unset">mono_bitset_find_first_unset</a></h4> +<h4><a name="api:mono_bitset_intersection_2">mono_bitset_intersection_2</a></h4> + +<h3>Hashtables</h3> + + <p><tt>GHashTable</tt> is used when you need to store object + references into a hashtable, objects stored in a + <tt>MonoGHashTable</tt> are properly tracked by the garbage + collector. + + <p>The <tt>MonoGHashTable</tt> data type has the same API as + the GLIB. + +<h4><a name="api:mono_g_hash_table_destroy">mono_g_hash_table_destroy</a></h4> +<h4><a name="api:mono_g_hash_table_foreach">mono_g_hash_table_foreach</a></h4> +<h4><a name="api:mono_g_hash_table_foreach_remove">mono_g_hash_table_foreach_remove</a></h4> +<h4><a name="api:mono_g_hash_table_foreach_steal">mono_g_hash_table_foreach_steal</a></h4> +<h4><a name="api:mono_g_hash_table_insert">mono_g_hash_table_insert</a></h4> +<h4><a name="api:mono_g_hash_table_lookup">mono_g_hash_table_lookup</a></h4> +<h4><a name="api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended</a></h4> +<h4><a name="api:mono_g_hash_table_new">mono_g_hash_table_new</a></h4> +<h4><a name="api:mono_g_hash_table_new_full">mono_g_hash_table_new_full</a></h4> +<h4><a name="api:mono_g_hash_table_remap">mono_g_hash_table_remap</a></h4> +<h4><a name="api:mono_g_hash_table_remove">mono_g_hash_table_remove</a></h4> +<h4><a name="api:mono_g_hash_table_replace">mono_g_hash_table_replace</a></h4> +<h4><a name="api:mono_g_hash_table_size">mono_g_hash_table_size</a></h4> +<h4><a name="api:mono_g_hash_table_steal">mono_g_hash_table_steal</a></h4> + +<h3>Raw buffer</h3> + + <p>Raw buffers provide an abstraction to load segments of + files into memory. If the operating system supports it, the + files are not loaded, but are mapped into the address space of + the process (On Unix, this is done using the <tt>mmap(2)</tt> + system call). + +<h4><a name="api:mono_raw_buffer_load">mono_raw_buffer_load</a></h4> +<h4><a name="api:mono_raw_buffer_update">mono_raw_buffer_update</a></h4> +<h4><a name="api:mono_raw_buffer_free">mono_raw_buffer_free</a></h4> + +<h3>SHA1 Signatures</h3> + +<h4><a name="api:mono_sha1_init">mono_sha1_init</a></h4> +<h4><a name="api:mono_sha1_update">mono_sha1_update</a></h4> +<h4><a name="api:mono_sha1_get_digest_from_file">mono_sha1_get_digest_from_file</a></h4> +<h4><a name="api:mono_sha1_get_digest">mono_sha1_get_digest</a></h4> +<h4><a name="api:mono_sha1_final">mono_sha1_final</a></h4> + +<h3>MD5 Signatures</h3> + +<h4><a name="api:mono_md5_init">mono_md5_init</a></h4> +<h4><a name="api:mono_md5_update">mono_md5_update</a></h4> +<h4><a name="api:mono_md5_get_digest_from_file">mono_md5_get_digest_from_file</a></h4> +<h4><a name="api:mono_md5_get_digest">mono_md5_get_digest</a></h4> +<h4><a name="api:mono_md5_final">mono_md5_final</a></h4> + +<h4><a name="api:mono_digest_get_public_token">mono_digest_get_public_token</a></h4> + +<h3>Memory Pools</h3> + + <p>Memory pools are a convenient way of tracking memory + allocations that are used for one specific task, they are also + faster than using the standard memory allocation procedures, + as they are designed to be used only by a single thread at a + time. + + <p><tt>MonoMemPool</tt> objects are not thread safe, which + means that you should not share the objects across multiple + threads without providing proper locking around it (unlike + <tt>malloc</tt> and <tt>free</tt> which are thread safe). + + <p>When a <tt>MonoMemPool</tt> is released with + <tt>mono_mempool_destroy</tt> all of the of the memory + allocated from that memory pool with + <tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt> + is released. + +<h4><a name="api:mono_mempool_new">mono_mempool_new</a></h4> +<h4><a name="api:mono_mempool_destroy">mono_mempool_destroy</a></h4> +<h4><a name="api:mono_mempool_alloc">mono_mempool_alloc</a></h4> +<h4><a name="api:mono_mempool_alloc0">mono_mempool_alloc0</a></h4> +<h4><a name="api:mono_mempool_empty">mono_mempool_empty</a></h4> +<h4><a name="api:mono_mempool_invalidate">mono_mempool_invalidate</a></h4> +<h4><a name="api:mono_mempool_stats">mono_mempool_stats</a></h4> +<h4><a name="api:mono_mempool_contains_addr">mono_mempool_contains_addr</a></h4> + +<h3>JIT utilities</h3> + +<h4><a name="api:mono_is_power_of_two">mono_is_power_of_two</a></h4> +<h4><a name="api:mono_signbit_double">mono_signbit_double</a></h4> +<h4><a name="api:mono_signbit_float">mono_signbit_float</a></h4> + +<h3>Disassembling Generated Code</h3> + + <p>Routines used to debug the JIT-produced code. + +<h4><a name="api:mono_disasm_code">mono_disasm_code</a></h4> +<h4><a name="api:mono_disasm_code_one">mono_disasm_code_one</a></h4> +<h4><a name="api:mono_disassemble_code">mono_disassemble_code</a></h4> + +<h3>Walking the Stack</h3> + +<h4><a name="api:mono_walk_stack">mono_walk_stack</a></h4> +<h4><a name="api:mono_stack_walk_no_il">mono_stack_walk_no_il</a></h4> + +<h3>Others</h3> + +<h4><a name="api:mono_escape_uri_string">mono_escape_uri_string</a></h4> +<h4><a name="api:mono_guid_to_string">mono_guid_to_string</a></h4> + diff --git a/docs/sources/mono-api-vm.html b/docs/sources/mono-api-vm.html new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/docs/sources/mono-api-vm.html diff --git a/docs/sources/mono-api-wapi.html b/docs/sources/mono-api-wapi.html new file mode 100644 index 0000000000..3bb1d1110d --- /dev/null +++ b/docs/sources/mono-api-wapi.html @@ -0,0 +1,111 @@ +<h2>Windows Compatibility API</h2> + + <p>Mono implements a small subset of the Win32 API for some + file system interaction, I/O, thread and process operations. + + <p>On Windows, Mono uses directly the services provided by the + operating system. On other operating system it uses its own + implementation (referred to as the "io-layer" or "wapi"). + +<h4><a name="api:GetThreadContext">GetThreadContext</a></h4> +<h4><a name="api:DeleteCriticalSection">DeleteCriticalSection</a></h4> +<h4><a name="api:EnterCriticalSection">EnterCriticalSection</a></h4> +<h4><a name="api:InitializeCriticalSection">InitializeCriticalSection</a></h4> +<h4><a name="api:InitializeCriticalSectionAndSpinCount">InitializeCriticalSectionAndSpinCount</a></h4> +<h4><a name="api:LeaveCriticalSection">LeaveCriticalSection</a></h4> +<h4><a name="api:SetCriticalSectionSpinCount">SetCriticalSectionSpinCount</a></h4> +<h4><a name="api:TryEnterCriticalSection">TryEnterCriticalSection</a></h4> +<h4><a name="api:errno_to_WSA">errno_to_WSA</a></h4> +<h4><a name="api:GetLastError">GetLastError</a></h4> +<h4><a name="api:SetLastError">SetLastError</a></h4> +<h4><a name="api:CreateEvent">CreateEvent</a></h4> +<h4><a name="api:PulseEvent">PulseEvent</a></h4> +<h4><a name="api:ResetEvent">ResetEvent</a></h4> +<h4><a name="api:SetEvent">SetEvent</a></h4> +<h4><a name="api:CloseHandle">CloseHandle</a></h4> +<h4><a name="api:CopyFile">CopyFile</a></h4> +<h4><a name="api:CreateDirectory">CreateDirectory</a></h4> +<h4><a name="api:CreateFile">CreateFile</a></h4> +<h4><a name="api:CreatePipe">CreatePipe</a></h4> +<h4><a name="api:DeleteFile">DeleteFile</a></h4> +<h4><a name="api:FileTimeToSystemTime">FileTimeToSystemTime</a></h4> +<h4><a name="api:FindClose">FindClose</a></h4> +<h4><a name="api:FindFirstFile">FindFirstFile</a></h4> +<h4><a name="api:FindNextFile">FindNextFile</a></h4> +<h4><a name="api:FlushFileBuffers">FlushFileBuffers</a></h4> +<h4><a name="api:GetCurrentDirectory">GetCurrentDirectory</a></h4> +<h4><a name="api:GetFileAttributes">GetFileAttributes</a></h4> +<h4><a name="api:GetFileAttributesEx">GetFileAttributesEx</a></h4> +<h4><a name="api:GetFileSize">GetFileSize</a></h4> +<h4><a name="api:GetFileTime">GetFileTime</a></h4> +<h4><a name="api:GetFileType">GetFileType</a></h4> +<h4><a name="api:GetLogicalDriveStrings">GetLogicalDriveStrings</a></h4> +<h4><a name="api:GetStdHandle">GetStdHandle</a></h4> +<h4><a name="api:GetTempPath">GetTempPath</a></h4> +<h4><a name="api:LockFile">LockFile</a></h4> +<h4><a name="api:MoveFile">MoveFile</a></h4> +<h4><a name="api:ReadFile">ReadFile</a></h4> +<h4><a name="api:RemoveDirectory">RemoveDirectory</a></h4> +<h4><a name="api:SetCurrentDirectory">SetCurrentDirectory</a></h4> +<h4><a name="api:SetEndOfFile">SetEndOfFile</a></h4> +<h4><a name="api:SetFileAttributes">SetFileAttributes</a></h4> +<h4><a name="api:SetFilePointer">SetFilePointer</a></h4> +<h4><a name="api:SetFileTime">SetFileTime</a></h4> +<h4><a name="api:UnlockFile">UnlockFile</a></h4> +<h4><a name="api:WriteFile">WriteFile</a></h4> +<h4><a name="api:mono_once">mono_once</a></h4> +<h4><a name="api:CreateMutex">CreateMutex</a></h4> +<h4><a name="api:ReleaseMutex">ReleaseMutex</a></h4> +<h4><a name="api:CreateProcess">CreateProcess</a></h4> +<h4><a name="api:EnumProcesses">EnumProcesses</a></h4> +<h4><a name="api:EnumProcessModules">EnumProcessModules</a></h4> +<h4><a name="api:GetCurrentProcess">GetCurrentProcess</a></h4> +<h4><a name="api:GetCurrentProcessId">GetCurrentProcessId</a></h4> +<h4><a name="api:GetExitCodeProcess">GetExitCodeProcess</a></h4> +<h4><a name="api:GetModuleBaseName">GetModuleBaseName</a></h4> +<h4><a name="api:GetProcessTimes">GetProcessTimes</a></h4> +<h4><a name="api:GetProcessWorkingSetSize">GetProcessWorkingSetSize</a></h4> +<h4><a name="api:OpenProcess">OpenProcess</a></h4> +<h4><a name="api:SetProcessWorkingSetSize">SetProcessWorkingSetSize</a></h4> +<h4><a name="api:TerminateProcess">TerminateProcess</a></h4> +<h4><a name="api:ImpersonateLoggedOnUser">ImpersonateLoggedOnUser</a></h4> +<h4><a name="api:RevertToSelf">RevertToSelf</a></h4> +<h4><a name="api:CreateSemaphore">CreateSemaphore</a></h4> +<h4><a name="api:ReleaseSemaphore">ReleaseSemaphore</a></h4> +<h4><a name="api:closesocket">closesocket</a></h4> +<h4><a name="api:ioctlsocket">ioctlsocket</a></h4> +<h4><a name="api:WSACleanup">WSACleanup</a></h4> +<h4><a name="api:WSAGetLastError">WSAGetLastError</a></h4> +<h4><a name="api:WSAIoctl">WSAIoctl</a></h4> +<h4><a name="api:WSASetLastError">WSASetLastError</a></h4> +<h4><a name="api:WSAStartup">WSAStartup</a></h4> +<h4><a name="api:GetSystemInfo">GetSystemInfo</a></h4> +<h4><a name="api:BindIoCompletionCallback">BindIoCompletionCallback</a></h4> +<h4><a name="api:CreateThread">CreateThread</a></h4> +<h4><a name="api:ExitThread">ExitThread</a></h4> +<h4><a name="api:GetCurrentThread">GetCurrentThread</a></h4> +<h4><a name="api:GetCurrentThreadId">GetCurrentThreadId</a></h4> +<h4><a name="api:GetExitCodeThread">GetExitCodeThread</a></h4> +<h4><a name="api:OpenThread">OpenThread</a></h4> +<h4><a name="api:QueueUserAPC">QueueUserAPC</a></h4> +<h4><a name="api:ResumeThread">ResumeThread</a></h4> +<h4><a name="api:Sleep">Sleep</a></h4> +<h4><a name="api:SleepEx">SleepEx</a></h4> +<h4><a name="api:SuspendThread">SuspendThread</a></h4> +<h4><a name="api:TlsAlloc">TlsAlloc</a></h4> +<h4><a name="api:TlsFree">TlsFree</a></h4> +<h4><a name="api:TlsGetValue">TlsGetValue</a></h4> +<h4><a name="api:TlsSetValue">TlsSetValue</a></h4> +<h4><a name="api:GetTickCount">GetTickCount</a></h4> +<h4><a name="api:QueryPerformanceCounter">QueryPerformanceCounter</a></h4> +<h4><a name="api:QueryPerformanceFrequency">QueryPerformanceFrequency</a></h4> +<h4><a name="api:SignalObjectAndWait">SignalObjectAndWait</a></h4> +<h4><a name="api:WaitForMultipleObjects">WaitForMultipleObjects</a></h4> +<h4><a name="api:WaitForMultipleObjectsEx">WaitForMultipleObjectsEx</a></h4> +<h4><a name="api:WaitForSingleObject">WaitForSingleObject</a></h4> +<h4><a name="api:WaitForSingleObjectEx">WaitForSingleObjectEx</a></h4> +<h4><a name="api:OpenEvent">OpenEvent</a></h4> +<h4><a name="api:OpenMutex">OpenMutex</a></h4> +<h4><a name="api:GetProcessId">GetProcessId</a></h4> +<h4><a name="api:ShellExecuteEx">ShellExecuteEx</a></h4> +<h4><a name="api:OpenSemaphore">OpenSemaphore</a></h4> diff --git a/docs/svgs/fragmentation.svg b/docs/svgs/fragmentation.svg new file mode 100644 index 0000000000..62dc60bf54 --- /dev/null +++ b/docs/svgs/fragmentation.svg @@ -0,0 +1,425 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.42.2" + sodipodi:docbase="/home/miguel/mono/gc" + sodipodi:docname="fragmentation.svg" + inkscape:export-filename="/tmp/fragmentation.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.6081777" + inkscape:cx="225.44672" + inkscape:cy="575.14344" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1388" + inkscape:window-height="998" + inkscape:window-x="0" + inkscape:window-y="27" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2181" + transform="translate(0.000000,5.340576e-5)" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"> + <rect + y="336.88107" + x="40.380459" + height="33.335033" + width="150.56403" + id="rect1306" + style="opacity:1.0000000;fill:#bf0000;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#e97500;stroke-width:0.96217525;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text1308" + y="356.82397" + x="112.17029" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="356.82397" + x="112.17029" + id="tspan1310" + sodipodi:role="line">a</tspan></text> + <text + id="text1312" + y="357.98737" + x="210.86664" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="357.98737" + x="210.86664" + id="tspan1314" + sodipodi:role="line">b</tspan></text> + <rect + y="336.67050" + x="191.33643" + height="33.686447" + width="47.111221" + id="rect1320" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2066" + y="356.79828" + x="258.88504" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="356.79828" + x="258.88504" + id="tspan2068" + sodipodi:role="line">c</tspan></text> + <rect + y="332.71930" + x="36.785717" + height="42.142857" + width="252.85715" + id="rect2087" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#e93a3a;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="336.67966" + x="238.58723" + height="33.686447" + width="47.111221" + id="rect2070" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + </g> + <g + id="g2193" + transform="translate(0.000000,-1.451759)" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"> + <text + id="text2095" + y="407.98737" + x="210.86664" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="407.98737" + x="210.86664" + id="tspan2097" + sodipodi:role="line">b</tspan></text> + <rect + y="386.67050" + x="191.33643" + height="33.686447" + width="47.111221" + id="rect2099" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2101" + y="406.79828" + x="258.88504" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="406.79828" + x="258.88504" + id="tspan2103" + sodipodi:role="line">c</tspan></text> + <rect + y="386.67966" + x="238.58722" + height="33.686447" + width="47.111221" + id="rect2107" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="382.36215" + x="37.142860" + height="42.142857" + width="252.85715" + id="rect2105" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#e93a3a;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + </g> + <g + id="g2202" + transform="translate(0.000000,-1.117897)" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"> + <text + id="text2109" + y="455.84454" + x="210.86664" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="455.84454" + x="210.86664" + id="tspan2111" + sodipodi:role="line">b</tspan></text> + <rect + y="434.52768" + x="191.33643" + height="33.686447" + width="47.111221" + id="rect2113" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2115" + y="454.65546" + x="258.88504" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="454.65546" + x="258.88504" + id="tspan2117" + sodipodi:role="line">c</tspan></text> + <rect + y="434.53683" + x="238.58722" + height="33.686447" + width="47.111221" + id="rect2119" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="434.44754" + x="41.444386" + height="33.686447" + width="47.111221" + id="rect2127" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="430.21933" + x="37.142857" + height="42.142857" + width="252.85715" + id="rect2121" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#e93a3a;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2123" + y="455.7644" + x="60.974598" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="455.76440" + x="60.974598" + id="tspan2125" + sodipodi:role="line">d</tspan></text> + </g> + <g + id="g2214" + transform="translate(0.000000,0.287437)" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"> + <text + id="text2133" + y="502.63025" + x="211.58092" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="502.63025" + x="211.58092" + id="tspan2135" + sodipodi:role="line">b</tspan></text> + <rect + y="481.31339" + x="192.05070" + height="33.686447" + width="47.111221" + id="rect2137" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="477.00504" + x="37.857136" + height="42.142857" + width="252.85715" + id="rect2147" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#e93a3a;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="481.23325" + x="42.158665" + height="33.686447" + width="47.111221" + id="rect2145" + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2149" + y="502.55011" + x="61.688877" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="502.55011" + x="61.688877" + id="tspan2151" + sodipodi:role="line">d</tspan></text> + </g> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#e93a3a;stroke-width:0.99986458;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2163" + width="252.78864" + height="42.142857" + x="38.244465" + y="525.57648" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="109.33745" + y="551.20172" + id="text2153" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2155" + x="109.33745" + y="551.20172">b</tspan></text> + <rect + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2157" + width="47.111221" + height="33.686447" + x="89.807236" + y="529.88483" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000" /> + <rect + style="opacity:1.0000000;fill:#009f9d;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#3a57e9;stroke-width:0.54104435;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2165" + width="47.111221" + height="33.686447" + x="42.515812" + y="529.80469" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="62.046024" + y="551.12158" + id="text2167" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2169" + x="62.046024" + y="551.12158">d</tspan></text> + <rect + style="opacity:1.0000000;fill:#bf0000;fill-opacity:0.28961745;fill-rule:evenodd;stroke:#e97500;stroke-width:0.96217525;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2171" + width="150.56403" + height="33.335033" + x="137.73921" + y="529.98041" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="209.3181" + y="549.92334" + id="text2177" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2179" + x="209.31810" + y="549.92334">e</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="18.364119" + y="358.15894" + id="text2235" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2237" + x="18.364119" + y="358.15894">3</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="18.077009" + y="406.35583" + id="text2239" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2241" + x="18.077009" + y="406.35583">4</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="18.452009" + y="454.46191" + id="text2243" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2245" + x="18.452009" + y="454.46191">5</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="18.15904" + y="502.73206" + id="text2247" + inkscape:export-filename="/tmp/compacting.png" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000"><tspan + sodipodi:role="line" + id="tspan2249" + x="18.159040" + y="502.73206">6</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="18.428572" + y="551.02197" + id="text2251" + inkscape:export-xdpi="124.46000" + inkscape:export-ydpi="124.46000" + inkscape:export-filename="/tmp/compacting.png"><tspan + sodipodi:role="line" + id="tspan2253" + x="18.428572" + y="551.02197">7</tspan></text> + </g> +</svg> diff --git a/docs/svgs/gcmem.svg b/docs/svgs/gcmem.svg new file mode 100644 index 0000000000..d8e87de129 --- /dev/null +++ b/docs/svgs/gcmem.svg @@ -0,0 +1,857 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2324" + sodipodi:version="0.32" + inkscape:version="0.42.2" + sodipodi:docbase="/home/miguel/mono/gc" + sodipodi:docname="gcmem.svg"> + <defs + id="defs2326"> + <marker + inkscape:stockid="DistanceIn" + orient="auto" + refY="0.0" + refX="0.0" + id="DistanceIn" + style="overflow:visible"> + <g + transform="scale(0.6,0.6) translate(8,0)" + id="g987"> + <path + sodipodi:nodetypes="ccccc" + id="path974" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" /> + <path + id="path976" + d="M -14.759949,-7 L -14.759949,65" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2pt;marker-start:none" /> + </g> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2397" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.4)" /> + </marker> + <marker + inkscape:stockid="Dot_m" + orient="auto" + refY="0.0" + refX="0.0" + id="Dot_m" + style="overflow:visible"> + <path + id="path39" + d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none" + transform="scale(0.4) translate(7.125493, 1)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2389" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2392" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutL" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path2462" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2535" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.3000000" + inkscape:cx="345.54184" + inkscape:cy="316.03559" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1388" + inkscape:window-height="998" + inkscape:window-x="0" + inkscape:window-y="27" /> + <metadata + id="metadata2329"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g2356" + transform="translate(-637.4063,306.0762)"> + <rect + y="582.59204" + x="312.92154" + height="119.77635" + width="198.44141" + id="rect2342" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.56134999;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2344" + y="699.81897" + x="523.83838" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="699.81897" + x="523.83838" + id="tspan2346" + sodipodi:role="line">stack_start</tspan></text> + <text + id="text2348" + y="593.75293" + x="523.83838" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="593.75293" + x="523.83838" + id="tspan2350" + sodipodi:role="line">stack_end</tspan></text> + <text + id="text2352" + y="646.71393" + x="366.79654" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="646.71393" + x="366.79654" + id="tspan2354" + sodipodi:role="line">Thread N stack</tspan></text> + </g> + <rect + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.54655713;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2392" + width="198.44141" + height="113.54674" + x="-348.07538" + y="167.00903" /> + <rect + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.39553967;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2367" + width="198.44141" + height="59.468048" + x="-348.22467" + y="166.96149" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="-142.24655" + y="223.79724" + id="text2369"><tspan + sodipodi:role="line" + id="tspan2371" + x="-142.24655" + y="223.79724">info->stack_start</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="-142.24655" + y="179.88089" + id="text2373"><tspan + sodipodi:role="line" + id="tspan2375" + x="-142.24655" + y="179.88089">info->stack_end</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="-294.34967" + y="201.16916" + id="text2388"><tspan + sodipodi:role="line" + id="tspan2390" + x="-294.34967" + y="201.16916">Thread 1 stack</tspan></text> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.86822808;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#TriangleOutL);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M -249.00397,238.28619 C -249.00397,269.24665 -249.00397,269.24665 -249.00397,269.24665" + id="path2405" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="-142.24655" + y="276.65912" + id="text2553"><tspan + sodipodi:role="line" + id="tspan2555" + x="-142.24655" + y="276.65912">limit: stack bottom</tspan></text> + <g + id="g2664" + transform="translate(-393.8247,105.6316)"> + <rect + y="175.09026" + x="45.884109" + height="113.54674" + width="198.44141" + id="rect2666" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.54655713;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="175.04271" + x="45.734818" + height="59.468048" + width="198.44141" + id="rect2668" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.39553967;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2670" + y="231.87846" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="231.87846" + x="251.71294" + id="tspan2672" + sodipodi:role="line">info->stack_start</tspan></text> + <text + id="text2674" + y="187.96211" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="187.96211" + x="251.71294" + id="tspan2676" + sodipodi:role="line">info->stack_end</tspan></text> + <text + id="text2678" + y="209.25038" + x="99.609818" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="209.25038" + x="99.609818" + id="tspan2680" + sodipodi:role="line">Thread 2 stack</tspan></text> + <path + id="path2682" + d="M 144.95552,246.36741 C 144.95552,277.32787 144.95552,277.32787 144.95552,277.32787" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.86822808;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#TriangleOutL);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2684" + y="284.74033" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="284.74033" + x="251.71294" + id="tspan2686" + sodipodi:role="line">limit: stack bottom</tspan></text> + </g> + <rect + style="opacity:1.0000000;fill:#000000;fill-opacity:0.098360606;fill-rule:evenodd;stroke:#000000;stroke-width:0.57452667;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2699" + width="198.44141" + height="125.46541" + x="-347.82306" + y="449.85883" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="-312.09747" + y="515.71747" + id="text2701"><tspan + sodipodi:role="line" + id="tspan2703" + x="-312.09747" + y="515.71747">Program, Data, Heap</tspan></text> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect1477" + width="496.99463" + height="95.744583" + x="24.575632" + y="255.69751" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:none;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2462" + width="369.79077" + height="95.629486" + x="24.974619" + y="255.80048" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <g + id="g2549" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"> + <rect + y="435.98193" + x="27.815228" + height="104.85226" + width="188.03888" + id="rect2332" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2234" + y="457.2435" + x="78.252907" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="78.252907" + id="tspan2236" + sodipodi:role="line">next_data</tspan></text> + <path + id="path2223" + d="M 27.563951,470.57645 L 215.86873,470.57645 L 215.25735,470.57645" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <path + id="path2228" + d="M 71.898961,435.92093 L 71.891321,470.94626 L 71.891321,470.94626" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2230" + y="457.2435" + x="37.966347" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="37.966347" + id="tspan2232" + sodipodi:role="line">data</tspan></text> + <text + id="text2238" + y="457.2435" + x="151.77969" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="151.77969" + id="tspan2240" + sodipodi:role="line">end_data</tspan></text> + <path + id="path2244" + d="M 146.54159,435.92094 L 146.53395,470.94627 L 146.53395,470.94627" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2246" + y="530.07721" + x="180.5428" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="530.07721" + x="180.54280" + id="tspan2248" + sodipodi:role="line">next</tspan></text> + <text + id="text2250" + y="492.30292" + x="140.99677" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="492.30292" + x="140.99677" + id="tspan2252" + sodipodi:role="line">scan_starts</tspan></text> + <path + id="path2254" + d="M 27.385382,505.50503 L 215.69016,505.50503 L 215.07878,505.50503" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.3321546px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000" + d="M 49.940663,435.64439 C 39.609840,395.19706 25.024252,408.49467 24.510938,358.73205" + id="path2420" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2130281px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000" + d="M 110.07637,435.66483 C 100.30146,356.87037 395.42132,407.99704 394.99782,357.98613" + id="path2424" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2048768px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000" + d="M 178.51727,436.05781 C 177.24799,362.68132 519.42718,442.70358 521.51612,359.00377" + id="path2426" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2617185;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 395.11375,255.80101 L 395.10611,351.10915 L 395.10611,351.10915" + id="path2443" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2466" + width="22.752682" + height="24.214773" + x="305.75558" + y="473.20383" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2468" + width="22.752682" + height="24.214773" + x="331.87048" + y="473.20383" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2472" + width="22.752682" + height="24.214773" + x="357.98535" + y="473.20383" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2474" + width="22.752682" + height="24.214773" + x="416.10025" + y="473.20383" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 215.70091,485.66660 C 295.43628,485.16153 295.43628,485.16153 295.43628,485.16153" + id="path2478" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="392.02042" + y="492.73767" + id="text2484" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"><tspan + sodipodi:role="line" + id="tspan2486" + x="392.02042" + y="492.73767">...</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="384.86813" + y="529.10315" + id="text2488" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"><tspan + sodipodi:role="line" + id="tspan2490" + x="384.86813" + y="529.10315">num_scan_starts</tspan></text> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 215.38958,526.54626 C 280.82585,525.11455 240.57890,595.19583 307.86943,597.31997" + id="path2492" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <g + id="g2494" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" + transform="matrix(0.495700,0.000000,0.000000,0.495700,304.0104,357.2198)"> + <rect + y="435.98193" + x="27.815228" + height="104.85226" + width="188.03888" + id="rect2496" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2498" + y="457.2435" + x="78.252907" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="78.252907" + id="tspan2500" + sodipodi:role="line">next_data</tspan></text> + <path + id="path2502" + d="M 27.563951,470.57645 L 215.86873,470.57645 L 215.25735,470.57645" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <path + id="path2504" + d="M 71.898961,435.92093 L 71.891321,470.94626 L 71.891321,470.94626" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2506" + y="457.2435" + x="37.966347" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="37.966347" + id="tspan2508" + sodipodi:role="line">data</tspan></text> + <text + id="text2510" + y="457.2435" + x="151.77969" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="151.77969" + id="tspan2512" + sodipodi:role="line">end_data</tspan></text> + <path + id="path2514" + d="M 146.54159,435.92094 L 146.53395,470.94627 L 146.53395,470.94627" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2516" + y="530.07721" + x="180.5428" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="530.07721" + x="180.54280" + id="tspan2518" + sodipodi:role="line">next</tspan></text> + <text + id="text2520" + y="492.30292" + x="140.99677" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="492.30292" + x="140.99677" + id="tspan2522" + sodipodi:role="line">scan_starts</tspan></text> + <path + id="path2524" + d="M 27.385382,505.50503 L 215.69016,505.50503 L 215.07878,505.50503" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + </g> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="261.43036" + y="234.91617" + id="text2528" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"><tspan + sodipodi:role="line" + id="tspan2530" + x="261.43036" + y="234.91617">size</tspan></text> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.3180897;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 32.740631,230.44254 L 242.11872,230.44254 L 241.43892,230.44254" + id="path2547" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.3275317;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 515.53150,230.44254 L 303.14294,230.44254 L 303.83251,230.44254" + id="path2570" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2582" + width="496.99463" + height="95.744583" + x="96.555573" + y="672.34967" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:none;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2584" + width="369.79077" + height="95.629486" + x="96.954559" + y="672.45264" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <g + id="g2586" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" + transform="translate(77.11341,416.8409)"> + <rect + y="435.98193" + x="27.815228" + height="104.85226" + width="188.03888" + id="rect2588" + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2590" + y="457.2435" + x="78.252907" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="78.252907" + id="tspan2592" + sodipodi:role="line">next_data</tspan></text> + <path + id="path2594" + d="M 27.563951,470.57645 L 215.86873,470.57645 L 215.25735,470.57645" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <path + id="path2596" + d="M 71.898961,435.92093 L 71.891321,470.94626 L 71.891321,470.94626" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2598" + y="457.2435" + x="37.966347" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="37.966347" + id="tspan2600" + sodipodi:role="line">data</tspan></text> + <text + id="text2602" + y="457.2435" + x="151.77969" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="457.24350" + x="151.77969" + id="tspan2604" + sodipodi:role="line">end_data</tspan></text> + <path + id="path2606" + d="M 146.54159,435.92094 L 146.53395,470.94627 L 146.53395,470.94627" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2608" + y="530.07721" + x="180.5428" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="530.07721" + x="180.54280" + id="tspan2610" + sodipodi:role="line">next</tspan></text> + <text + id="text2612" + y="492.30292" + x="140.99677" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="492.30292" + x="140.99677" + id="tspan2614" + sodipodi:role="line">scan_starts</tspan></text> + <path + id="path2616" + d="M 27.385382,505.50503 L 215.69016,505.50503 L 215.07878,505.50503" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 390.69768,889.68866 C 331.80602,804.65889 96.803459,874.95173 98.410499,775.69915" + id="path2618" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 415.68564,889.74159 C 415.11366,821.91550 190.04004,833.26343 189.29125,775.92074" + id="path2620" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 441.13138,889.63261 C 442.23723,818.56405 333.26911,828.85620 330.24174,775.49808" + id="path2622" + sodipodi:nodetypes="cs" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2617185;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 467.09369,672.45314 L 467.08605,767.76128 L 467.08605,767.76128" + id="path2624" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2626" + width="22.752682" + height="24.214773" + x="377.73553" + y="889.85596" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2628" + width="22.752682" + height="24.214773" + x="403.85040" + y="889.85596" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2630" + width="22.752682" + height="24.214773" + x="429.96527" + y="889.85596" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2632" + width="22.752682" + height="24.214773" + x="488.08020" + y="889.85596" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 292.81436,902.50755 C 372.54973,902.00248 372.54973,902.00248 372.54973,902.00248" + id="path2634" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="464.00037" + y="903.38983" + id="text2636" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"><tspan + sodipodi:role="line" + id="tspan2638" + x="464.00037" + y="903.38983">...</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="456.84808" + y="945.75531" + id="text2640" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000"><tspan + sodipodi:role="line" + id="tspan2642" + x="456.84808" + y="945.75531">num_scan_starts</tspan></text> + </g> +</svg> diff --git a/docs/svgs/overview.svg b/docs/svgs/overview.svg new file mode 100644 index 0000000000..af7bba2082 --- /dev/null +++ b/docs/svgs/overview.svg @@ -0,0 +1,282 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="800px" + height="600px" + id="svg2772" + sodipodi:version="0.32" + inkscape:version="0.42.2" + sodipodi:docbase="/home/miguel/mono/gc" + sodipodi:docname="overview.svg"> + <defs + id="defs2774"> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2392" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2400" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2397" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.4)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.0000000" + inkscape:cx="408.00000" + inkscape:cy="412.00000" + inkscape:current-layer="layer1" + inkscape:document-units="px" + inkscape:window-width="1388" + inkscape:window-height="998" + inkscape:window-x="0" + inkscape:window-y="27" /> + <metadata + id="metadata2777"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:none;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2584" + width="369.79077" + height="95.629486" + x="-604.89539" + y="132.18524" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <text + xml:space="preserve" + style="font-size:15.094481px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="10.832281" + y="76.351082" + id="text2798"><tspan + sodipodi:role="line" + id="tspan2800" + x="10.832281" + y="76.351082">section_list</tspan></text> + <text + xml:space="preserve" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="98.57534" + y="38.764957" + id="text2804"><tspan + sodipodi:role="line" + id="tspan2806" + x="98.575340" + y="38.764957">Old Generations:</tspan></text> + <g + id="g2814" + transform="translate(2.000008,9.000000)"> + <rect + inkscape:export-ydpi="90.000000" + inkscape:export-xdpi="90.000000" + inkscape:export-filename="/tmp/gcmemsection.png" + y="205.35193" + x="85.104614" + height="85.296158" + width="191.79076" + id="rect2808" + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2810" + y="255.49602" + x="134.04068" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="255.49602" + x="134.04068" + id="tspan2812" + sodipodi:role="line">Section 0</tspan></text> + </g> + <g + id="g2830" + transform="translate(-11.00000,-92.00000)"> + <rect + inkscape:export-ydpi="90.000000" + inkscape:export-xdpi="90.000000" + inkscape:export-filename="/tmp/gcmemsection.png" + y="211.35191" + x="98.104622" + height="85.296158" + width="191.79076" + id="rect2821" + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2823" + y="261.496" + x="147.30086" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="261.49600" + x="147.30086" + id="tspan2825" + sodipodi:role="line">Section 1</tspan></text> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 48.000000,83.000000 C 43.000000,149.50000 75.000000,149.00000 75.000000,149.00000" + id="path2835" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="340.95966" + y="38.764957" + id="text2843"><tspan + sodipodi:role="line" + id="tspan2845" + x="340.95966" + y="38.764957">New generation:</tspan></text> + <g + id="g2858" + transform="translate(-9.000000,-111.0000)"> + <rect + inkscape:export-ydpi="90.000000" + inkscape:export-xdpi="90.000000" + inkscape:export-filename="/tmp/gcmemsection.png" + y="230.35193" + x="337.10461" + height="85.296158" + width="191.79076" + id="rect2849" + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2851" + y="278.23788" + x="392.74634" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="278.23788" + x="392.74634" + id="tspan2853" + sodipodi:role="line">Nursery</tspan></text> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 83.203163,178.60032 C 23.635378,197.57995 77.069200,218.39965 77.069200,218.39965" + id="path2863" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:20.107187px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="567.95966" + y="38.54715" + id="text2865"><tspan + sodipodi:role="line" + id="tspan2867" + x="567.95966" + y="38.547150">Large Objects</tspan></text> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2871" + width="32.620670" + height="29.945086" + x="606.68964" + y="122.02747" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <text + xml:space="preserve" + style="font-size:15.094481px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="555.71997" + y="76.351082" + id="text2881"><tspan + sodipodi:role="line" + id="tspan2883" + x="555.71997" + y="76.351082">los_object_list</tspan></text> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2885" + width="32.620670" + height="29.945086" + x="663.68964" + y="122.02747" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2887" + width="32.620670" + height="29.945086" + x="721.68964" + y="122.02747" + inkscape:export-filename="/tmp/gcmemsection.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.1409233;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 568.83205,82.879132 C 563.66843,136.52413 596.71567,136.12079 596.71567,136.12079" + id="path2889" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95145077;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 697.37385,136.93683 C 695.78127,137.13796 713.17398,137.03871 713.17398,137.03871" + id="path2891" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95145077;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 640.15146,136.93683 C 638.55888,137.13796 655.95159,137.03871 655.95159,137.03871" + id="path2893" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/docs/svgs/roots.svg b/docs/svgs/roots.svg new file mode 100644 index 0000000000..fb3bf3055e --- /dev/null +++ b/docs/svgs/roots.svg @@ -0,0 +1,761 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2895" + sodipodi:version="0.32" + inkscape:version="0.42.2" + sodipodi:docbase="/home/miguel/mono/gc" + sodipodi:docname="roots.svg"> + <defs + id="defs2897"> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2389" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2392" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35000000" + inkscape:cx="795.16964" + inkscape:cy="595.84469" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1388" + inkscape:window-height="998" + inkscape:window-x="0" + inkscape:window-y="27" /> + <metadata + id="metadata2900"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4505868;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2582" + width="669.29736" + height="95.744583" + x="46.683918" + y="777.24200" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2584" + width="27.900555" + height="95.629486" + x="46.834984" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + id="rect2908" + width="192.52747" + height="115.43071" + x="56.774403" + y="580.48413" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <g + id="g2963" + transform="translate(0.678249,-1.235298)" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <text + id="text2910" + y="604.86456" + x="72.848167" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="604.86456" + x="72.848167" + id="tspan2912" + sodipodi:role="line">CPU Register References</tspan></text> + <text + id="text2914" + y="631.28149" + x="73.557152" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + id="tspan2918" + y="631.28149" + x="73.557152" + sodipodi:role="line">Thread Local Variables</tspan></text> + <text + id="text2920" + y="656.53534" + x="72.73098" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + id="tspan2924" + y="656.53534" + x="72.730980" + sodipodi:role="line">Static fields</tspan></text> + <text + id="text2926" + y="680.6261" + x="72.344261" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="680.62610" + x="72.344261" + id="tspan2928" + sodipodi:role="line">Runtime object references</tspan></text> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0148686px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" + d="M 141.15688,696.28653 L 99.281852,736.43697 L 57.406801,776.58742" + id="path2939" + sodipodi:nodetypes="ccc" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0046772px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" + d="M 141.42136,696.03556 L 140.41120,776.58585 L 141.42136,696.03556 z " + id="path2943" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0069753px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" + d="M 141.67310,696.54376 L 297.99580,777.59288 L 141.67310,696.54376 z " + id="path2945" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" + d="M 141.42136,695.77833 L 577.80726,776.59054" + id="path2947" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2957" + width="18.257698" + height="95.629486" + x="130.87115" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2959" + width="50.757698" + height="95.629486" + x="274.94327" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2961" + width="29.686272" + height="95.629486" + x="563.54974" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2991" + width="27.900555" + height="95.629486" + x="182.01932" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3004" + width="27.900555" + height="95.629486" + x="378.19257" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3006" + width="27.900555" + height="95.629486" + x="482.47830" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21311475;fill-rule:evenodd;stroke:#000000;stroke-width:0.97463667;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3008" + width="16.962049" + height="95.629486" + x="638.66180" + y="777.29956" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <g + id="g3115" + transform="translate(202.3879,-322.8571)" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <g + transform="translate(-428.5714,398.5714)" + id="g3100"> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2985" + width="15.082790" + height="13.979280" + x="510.61618" + y="99.134712" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="534.28992" + y="110.82124" + id="text2987" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan2989" + x="534.28992" + y="110.82124">Live Objects</tspan></text> + </g> + <g + transform="translate(-282.8963,371.4286)" + id="g3105"> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3010" + width="15.082790" + height="13.979280" + x="510.61618" + y="127.17164" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="534.28992" + y="138.85815" + id="text3012" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3014" + x="534.28992" + y="138.85815">Pinned objects</tspan></text> + </g> + <g + transform="translate(-118.5714,344.2857)" + id="g3110"> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3016" + width="15.082790" + height="13.979280" + x="510.61618" + y="155.20856" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="534.9516" + y="166.89508" + id="text3018" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3020" + x="534.95160" + y="166.89508">Garbage</tspan></text> + </g> + </g> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 137.92030,871.86711 C 188.66513,922.95790 194.93685,877.96303 194.93685,877.96303" + id="path3022" + sodipodi:nodetypes="cc" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4878695;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 578.24777,873.42803 C 511.53352,930.94739 498.89508,879.52395 498.89508,879.52395" + id="path3030" + sodipodi:nodetypes="cc" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 579.45614,874.14232 C 638.45729,925.94739 644.82958,878.80967 644.82958,878.80967" + id="path3032" + sodipodi:nodetypes="cc" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 494.45285,873.73905 C 407.69664,931.25841 391.26142,879.83497 391.26142,879.83497" + id="path3034" + sodipodi:nodetypes="cc" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4505868;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3046" + width="669.29736" + height="95.744583" + x="22.945324" + y="209.49988" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3048" + width="27.900555" + height="95.629486" + x="23.096386" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3050" + width="18.257698" + height="95.629486" + x="107.13255" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3052" + width="50.757698" + height="95.629486" + x="251.20467" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3054" + width="29.686272" + height="95.629486" + x="539.81110" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3056" + width="27.900555" + height="95.629486" + x="158.28072" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3058" + width="27.900555" + height="95.629486" + x="354.45398" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3060" + width="27.900555" + height="95.629486" + x="458.73972" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3062" + width="67.113373" + height="95.629486" + x="616.36401" + y="209.55743" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3070" + width="664.46503" + height="95.744583" + x="26.226122" + y="376.36218" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:17.390287px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="27.714634" + y="188.57069" + id="text3072" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3074" + x="27.714634" + y="188.57069">Nursery</tspan></text> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 38.932235,305.42360 C 429.52601,373.97550 429.52601,373.97550 429.52601,373.97550" + id="path3080" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3082" + width="27.900555" + height="95.629486" + x="422.33337" + y="376.38739" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3084" + width="50.757698" + height="95.629486" + x="450.34406" + y="376.38739" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3086" + width="27.900555" + height="95.629486" + x="501.12524" + y="376.38739" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 278.36297,305.36424 C 467.63468,373.52980 467.63468,373.52980 467.63468,373.52980" + id="path3088" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 368.98559,305.36818 C 510.35219,374.03095 510.35219,374.03095 510.35219,374.03095" + id="path3090" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3092" + width="29.686272" + height="95.629486" + x="529.02173" + y="376.38739" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 556.19390,305.83615 C 543.35713,370.53254 543.35713,370.53254 543.35713,370.53254" + id="path3096" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 662.57239,304.85879 C 591.02693,373.02510 591.02693,373.02510 591.02693,373.02510" + id="path3098" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <g + id="g3135" + transform="translate(954.7939,-183.4489)" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <g + transform="translate(-460.0000,398.5714)" + id="g3137" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3139" + width="15.082790" + height="13.979280" + x="510.61618" + y="99.134712" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="534.28992" + y="110.82124" + id="text3141" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3143" + x="534.28992" + y="110.82124">Live Objects</tspan></text> + </g> + <g + transform="translate(-312.2437,371.4286)" + id="g3145" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3147" + width="15.082790" + height="13.979280" + x="510.61618" + y="127.17164" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="534.28992" + y="138.85815" + id="text3149" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3151" + x="534.28992" + y="138.85815">Pinned objects</tspan></text> + </g> + <g + id="g3186" + transform="translate(-31.42857,0.000000)" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"> + <rect + style="fill:#000000;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3155" + width="15.082790" + height="13.979280" + x="392.04477" + y="499.49426" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:15.756983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="416.38019" + y="511.18079" + id="text3157" + inkscape:export-filename="/tmp/roots.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3159" + x="416.38019" + y="511.18079">Free Memory</tspan></text> + </g> + </g> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4505868;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3161" + width="669.29736" + height="95.744583" + x="775.35132" + y="348.90802" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3165" + width="18.257698" + height="95.629486" + x="859.53857" + y="348.96558" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3171" + width="27.900555" + height="95.629486" + x="910.68671" + y="348.96558" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3175" + width="27.900555" + height="95.629486" + x="1211.1458" + y="348.96558" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:17.390287px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="776.12061" + y="327.97885" + id="text3179" + inkscape:export-filename="/tmp/nursery-pinned.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3181" + x="776.12061" + y="327.97885">Nursery</tspan></text> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3191" + width="67.113373" + height="95.629486" + x="558.71350" + y="376.38739" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <rect + style="fill:#000000;fill-opacity:0.21176471;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect3193" + width="396.27408" + height="95.629486" + x="26.046309" + y="376.15903" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998" /> + <text + xml:space="preserve" + style="font-size:17.390287px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans;stroke-miterlimit:4.0000000;stroke-dasharray:none" + x="28.444891" + y="361.90738" + id="text3204" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3206" + x="28.444891" + y="361.90738">Old generation</tspan></text> + <text + xml:space="preserve" + style="font-size:18.176956px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans;stroke-miterlimit:4.0000000;stroke-dasharray:none" + x="58.242008" + y="430.84366" + id="text3208" + inkscape:export-filename="/tmp/nursery.png" + inkscape:export-xdpi="91.239998" + inkscape:export-ydpi="91.239998"><tspan + sodipodi:role="line" + id="tspan3210" + x="58.242008" + y="430.84366">Objects from the previous generation</tspan></text> + </g> +</svg> diff --git a/docs/svgs/stacks.svg b/docs/svgs/stacks.svg new file mode 100644 index 0000000000..46b9785954 --- /dev/null +++ b/docs/svgs/stacks.svg @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2324" + sodipodi:version="0.32" + inkscape:version="0.42.2" + sodipodi:docbase="/home/miguel/mono/gc" + sodipodi:docname="stacks.svg"> + <defs + id="defs2326"> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutL" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path2462" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2535" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="247.73586" + inkscape:cy="588.43222" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1388" + inkscape:window-height="998" + inkscape:window-x="0" + inkscape:window-y="27" /> + <metadata + id="metadata2329"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="opacity:1.0000000;fill:#97ff9f;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0371026;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2332" + width="198.44141" + height="408.83401" + x="46.241261" + y="174.59003" /> + <g + id="g2356" + transform="translate(-27.27417,130.3097)"> + <rect + y="582.59204" + x="312.92154" + height="119.77635" + width="198.44141" + id="rect2342" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.56134999;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2344" + y="699.81897" + x="523.83838" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="699.81897" + x="523.83838" + id="tspan2346" + sodipodi:role="line">stack_start</tspan></text> + <text + id="text2348" + y="593.75293" + x="523.83838" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="593.75293" + x="523.83838" + id="tspan2350" + sodipodi:role="line">stack_end</tspan></text> + <text + id="text2352" + y="646.71393" + x="366.79654" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="646.71393" + x="366.79654" + id="tspan2354" + sodipodi:role="line">Thread N stack</tspan></text> + </g> + <rect + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.54655713;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2392" + width="198.44141" + height="113.54674" + x="45.884109" + y="175.09026" /> + <rect + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.39553967;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2367" + width="198.44141" + height="59.468048" + x="45.734818" + y="175.04271" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="251.71294" + y="231.87846" + id="text2369"><tspan + sodipodi:role="line" + id="tspan2371" + x="251.71294" + y="231.87846">info->stack_start</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="251.71294" + y="187.96211" + id="text2373"><tspan + sodipodi:role="line" + id="tspan2375" + x="251.71294" + y="187.96211">info->stack_end</tspan></text> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="99.609818" + y="209.25038" + id="text2388"><tspan + sodipodi:role="line" + id="tspan2390" + x="99.609818" + y="209.25038">Thread 1 stack</tspan></text> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.86822808;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#TriangleOutL);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + d="M 144.95552,246.36741 C 144.95552,277.32787 144.95552,277.32787 144.95552,277.32787" + id="path2405" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="251.71294" + y="284.74033" + id="text2553"><tspan + sodipodi:role="line" + id="tspan2555" + x="251.71294" + y="284.74033">limit: stack bottom</tspan></text> + <g + id="g2664" + transform="translate(0.134777,113.7128)"> + <rect + y="175.09026" + x="45.884109" + height="113.54674" + width="198.44141" + id="rect2666" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.54655713;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <rect + y="175.04271" + x="45.734818" + height="59.468048" + width="198.44141" + id="rect2668" + style="opacity:1.0000000;fill:#3a3a3a;fill-opacity:0.20765026;fill-rule:evenodd;stroke:#000000;stroke-width:0.39553967;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2670" + y="231.87846" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="231.87846" + x="251.71294" + id="tspan2672" + sodipodi:role="line">info->stack_start</tspan></text> + <text + id="text2674" + y="187.96211" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="187.96211" + x="251.71294" + id="tspan2676" + sodipodi:role="line">info->stack_end</tspan></text> + <text + id="text2678" + y="209.25038" + x="99.609818" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="209.25038" + x="99.609818" + id="tspan2680" + sodipodi:role="line">Thread 2 stack</tspan></text> + <path + id="path2682" + d="M 144.95552,246.36741 C 144.95552,277.32787 144.95552,277.32787 144.95552,277.32787" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.86822808;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#TriangleOutL);stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <text + id="text2684" + y="284.74033" + x="251.71294" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="284.74033" + x="251.71294" + id="tspan2686" + sodipodi:role="line">limit: stack bottom</tspan></text> + </g> + <rect + style="opacity:1.0000000;fill:#000000;fill-opacity:0.098360606;fill-rule:evenodd;stroke:#000000;stroke-width:0.57452667;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + id="rect2699" + width="198.44141" + height="125.46541" + x="46.136436" + y="457.94003" /> + <text + xml:space="preserve" + style="font-size:12.000000px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" + x="81.862022" + y="523.79871" + id="text2701"><tspan + sodipodi:role="line" + id="tspan2703" + x="81.862022" + y="523.79871">Program, Data, Heap</tspan></text> + </g> +</svg> diff --git a/docs/toc.xml b/docs/toc.xml new file mode 100644 index 0000000000..f131df4499 --- /dev/null +++ b/docs/toc.xml @@ -0,0 +1,193 @@ +<?xml version="1.0"?> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:monodoc="http://www.go-mono.org/xml/monodoc"> +<head/> +<body> + <object type="text/site properties"> + <param name="Auto Generated" value="No"/> + </object> + <ul> + <li> + <object type="text/sitemap"> + <param name="Name" value="Mono Runtime API"/> + <param name="Local" value="DoesNotExist"/> + </object> + </li> + <ul> + <li> + <object type="text/sitemap"> + <param name="Name" value="Assemblies"/> + <param name="Local" value="deploy/mono-api-assembly.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Images"/> + <param name="Local" value="deploy/mono-api-image.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Objects"/> + <param name="Local" value="deploy/mono-api-object.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Strings"/> + <param name="Local" value="deploy/mono-api-string.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Methods"/> + <param name="Local" value="deploy/mono-api-methods.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Classes"/> + <param name="Local" value="deploy/mono-api-class.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Code Generation"/> + <param name="Local" value="deploy/mono-api-codegen.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Decimal Representation"/> + <param name="Local" value="deploy/mono-api-decimal.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Application Domains"/> + <param name="Local" value="deploy/mono-api-domains.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Dynamic Code Generation"/> + <param name="Local" value="deploy/mono-api-dynamic-codegen.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Exceptions"/> + <param name="Local" value="deploy/mono-api-exc.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="GC Handles"/> + <param name="Local" value="deploy/mono-api-gchandle.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Garbage Collection"/> + <param name="Local" value="deploy/mono-api-gc.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Embedding Mono"/> + <param name="Local" value="deploy/mono-api-embedding.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Just in Time Compiler"/> + <param name="Local" value="deploy/mono-api-jit.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Marshalling"/> + <param name="Local" value="deploy/mono-api-marshal.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Metadata access"/> + <param name="Local" value="deploy/mono-api-metadata.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Profiler"/> + <param name="Local" value="deploy/mono-api-profiler.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Reflection"/> + <param name="Local" value="deploy/mono-api-reflection.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Threading API"/> + <param name="Local" value="deploy/mono-api-threads.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Tracing"/> + <param name="Local" value="deploy/mono-api-trace.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="JIT Counters"/> + <param name="Local" value="deploy/mono-api-counters.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Types"/> + <param name="Local" value="deploy/mono-api-type.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Common Types"/> + <param name="Local" value="deploy/mono-api-types.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Security API calls"/> + <param name="Local" value="deploy/mono-api-security.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Portable Windows Layer"/> + <param name="Local" value="deploy/mono-api-wapi.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Debugging API"/> + <param name="Local" value="deploy/mono-api-debug.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Utility Functions"/> + <param name="Local" value="deploy/mono-api-utils.html"/> + </object> + </li> + <li> + <object type="text/sitemap"> + <param name="Name" value="Unsorted"/> + <param name="Local" value="deploy/mono-api-unsorted.html"/> + </object> + </li> + </ul> + </ul> + </body> +</html> |